You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
| /*
 | |
|    * This file allows you to run `nix develop` to get a shell with all external dependencies (`make` plus the tools it calls) of this repo (and maybe some beyond).
 | |
|    * The only thing required is an installation of the "Nix" package manager for Linux (/WSL) or MacOS: https://nixos.org/download/
 | |
| */
 | |
| {
 | |
|   description = ''
 | |
|     The educational operating system StuBS.
 | |
|   '';
 | |
|   inputs = {
 | |
| 
 | |
|     # The rolling-release of the Nix(OS) package definitions. Use `nix flake lock` to update
 | |
|     nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
 | |
| 
 | |
|     # Some boilerplate:
 | |
|     systems.url = "github:nix-systems/x86_64-linux"; # no cross compiling and only x86(_64) for now (darwin (MacOS) might work)
 | |
|   };
 | |
|   outputs =
 | |
|     inputs:
 | |
|     let
 | |
|       lib = inputs.nixpkgs.lib;
 | |
|       eachSystem =
 | |
|         f:
 | |
|         lib.foldAttrs lib.mergeAttrs { } (
 | |
|           map (s: lib.mapAttrs (_: v: { ${s} = v; }) (f s)) (import inputs.systems)
 | |
|         );
 | |
|     in
 | |
|     { }
 | |
|     // (eachSystem (
 | |
|       localSystem:
 | |
|       let
 | |
|         pkgs = import inputs.nixpkgs { system = localSystem; };
 | |
|       in
 | |
|       {
 | |
| 
 | |
|         # The shell environment definition used by `nix develop`:
 | |
|         devShells.default = pkgs.mkShell.override { stdenv = pkgs.clangStdenv; } {
 | |
|           nativeBuildInputs =
 | |
|             with pkgs;
 | |
|             [
 | |
|               # for all tasks and maintenance
 | |
|               gdb
 | |
|               qemu_kvm
 | |
|               nasm
 | |
|               ccache
 | |
|               util-linux # mkfs.minix
 | |
|               git
 | |
|               python3
 | |
|               bear # make compile_commands.json
 | |
|               clang-tools # for clangd and clang-format
 | |
|             ]
 | |
|             ++ (lib.filter (
 | |
|               pkg: lib.isDerivation pkg && pkg.pname or "" != "glibc"
 | |
|             ) pkgs.stdenv.allowedRequisites); # basic tools + compilers (gcc/g++)
 | |
|         };
 | |
| 
 | |
|       }
 | |
|     ));
 | |
| }
 |