forked from fabian/nix
		
	templates: add 'system-flake' template
This commit is contained in:
		
							parent
							
								
									4b8609385a
								
							
						
					
					
						commit
						3a3d73d5b6
					
				
					 15 changed files with 212 additions and 0 deletions
				
			
		
							
								
								
									
										11
									
								
								flake.nix
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								flake.nix
									
										
									
									
									
								
							|  | @ -18,6 +18,17 @@ | |||
|       formatter = (import nixpkgs {inherit system;}).alejandra; | ||||
|     }) | ||||
|     // { | ||||
|       templates = let | ||||
|         system-flake = { | ||||
|           path = ./templates/system-flake; | ||||
|           description = "Opinionated flake for a NixOS system with Home Manager"; | ||||
|         }; | ||||
|       in { | ||||
|         inherit system-flake; | ||||
| 
 | ||||
|         default = system-flake; | ||||
|       }; | ||||
| 
 | ||||
|       overlays = let | ||||
|         overlay = mapOverlayOverride "trivium" (import ./pkgs); | ||||
|       in { | ||||
|  |  | |||
							
								
								
									
										3
									
								
								templates/system-flake/.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								templates/system-flake/.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| !**/.keep | ||||
| result | ||||
| flake.lock | ||||
							
								
								
									
										34
									
								
								templates/system-flake/flake.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								templates/system-flake/flake.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,34 @@ | |||
| { | ||||
|   inputs = { | ||||
|     nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; | ||||
|     unstable.url = "github:nixos/nixpkgs/nixos-unstable"; | ||||
| 
 | ||||
|     home-manager = { | ||||
|       url = "github:nix-community/home-manager/release-24.11"; | ||||
|       inputs.nixpkgs.follows = "nixpkgs"; | ||||
|     }; | ||||
| 
 | ||||
|     trivium = { | ||||
|       url = "git+https://git.posixlycorrect.com/deepState/trivionomicon.git"; | ||||
|       inputs.nixpkgs.follows = "nixpkgs"; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   outputs = flakes @ { | ||||
|     self, | ||||
|     nixpkgs, | ||||
|     unstable, | ||||
|     home-manager, | ||||
|     trivium, | ||||
|   }: | ||||
|     trivium.lib.mkSystemFlake { | ||||
|       system = "x86_64-linux"; | ||||
|       inherit flakes; | ||||
| 
 | ||||
|       localOverlayPath = ./pkgs; | ||||
|       nixpkgsConfigPath = ./pkgs/config; | ||||
| 
 | ||||
|       hmSourcePath = ./home; | ||||
|       nixosSourcePath = ./sys; | ||||
|     }; | ||||
| } | ||||
							
								
								
									
										73
									
								
								templates/system-flake/home/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								templates/system-flake/home/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,73 @@ | |||
| { | ||||
|   config, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: { | ||||
|   # This value determines the Home Manager release that your configuration is | ||||
|   # compatible with. This helps avoid breakage when a new Home Manager release | ||||
|   # introduces backwards incompatible changes. | ||||
|   # | ||||
|   # You should not change this value, even if you update Home Manager. If you do | ||||
|   # want to update the value, then make sure to first check the Home Manager | ||||
|   # release notes. | ||||
|   home.stateVersion = "24.11"; # Please read the comment before changing. | ||||
| 
 | ||||
|   # The home.packages option allows you to install Nix packages into your | ||||
|   # environment. | ||||
|   home.packages = [ | ||||
|     # # Adds the 'hello' command to your environment. It prints a friendly | ||||
|     # # "Hello, world!" when run. | ||||
|     # pkgs.hello | ||||
| 
 | ||||
|     # # It is sometimes useful to fine-tune packages, for example, by applying | ||||
|     # # overrides. You can do that directly here, just don't forget the | ||||
|     # # parentheses. Maybe you want to install Nerd Fonts with a limited number of | ||||
|     # # fonts? | ||||
|     # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) | ||||
| 
 | ||||
|     # # You can also create simple shell scripts directly inside your | ||||
|     # # configuration. For example, this adds a command 'my-hello' to your | ||||
|     # # environment: | ||||
|     # (pkgs.writeShellScriptBin "my-hello" '' | ||||
|     #   echo "Hello, ${config.home.username}!" | ||||
|     # '') | ||||
|   ]; | ||||
| 
 | ||||
|   # Home Manager is pretty good at managing dotfiles. The primary way to manage | ||||
|   # plain files is through 'home.file'. | ||||
|   home.file = { | ||||
|     # # Building this configuration will create a copy of 'dotfiles/screenrc' in | ||||
|     # # the Nix store. Activating the configuration will then make '~/.screenrc' a | ||||
|     # # symlink to the Nix store copy. | ||||
|     # ".screenrc".source = dotfiles/screenrc; | ||||
| 
 | ||||
|     # # You can also set the file content immediately. | ||||
|     # ".gradle/gradle.properties".text = '' | ||||
|     #   org.gradle.console=verbose | ||||
|     #   org.gradle.daemon.idletimeout=3600000 | ||||
|     # ''; | ||||
|   }; | ||||
| 
 | ||||
|   # Home Manager can also manage your environment variables through | ||||
|   # 'home.sessionVariables'. These will be explicitly sourced when using a | ||||
|   # shell provided by Home Manager. If you don't want to manage your shell | ||||
|   # through Home Manager then you have to manually source 'hm-session-vars.sh' | ||||
|   # located at either | ||||
|   # | ||||
|   #  ~/.nix-profile/etc/profile.d/hm-session-vars.sh | ||||
|   # | ||||
|   # or | ||||
|   # | ||||
|   #  ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh | ||||
|   # | ||||
|   # or | ||||
|   # | ||||
|   #  /etc/profiles/per-user/<user>/etc/profile.d/hm-session-vars.sh | ||||
|   # | ||||
|   home.sessionVariables = { | ||||
|     # EDITOR = "emacs"; | ||||
|   }; | ||||
| 
 | ||||
|   # Let Home Manager install and manage itself. | ||||
|   programs.home-manager.enable = true; | ||||
| } | ||||
							
								
								
									
										10
									
								
								templates/system-flake/home/platform/me@foo/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								templates/system-flake/home/platform/me@foo/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| { | ||||
|   config, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: { | ||||
|   # Home Manager needs a bit of information about you and the paths it should | ||||
|   # manage. | ||||
|   home.username = "ale"; | ||||
|   home.homeDirectory = "/home/ale"; | ||||
| } | ||||
							
								
								
									
										5
									
								
								templates/system-flake/pkgs/config/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								templates/system-flake/pkgs/config/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| lib: | ||||
| with lib; { | ||||
|   android_sdk.accept_license = true; | ||||
|   allowUnfreePredicate = pkg: import ./unfree.nix lib (getName pkg); | ||||
| } | ||||
							
								
								
									
										7
									
								
								templates/system-flake/pkgs/config/unfree.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								templates/system-flake/pkgs/config/unfree.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| lib: name: | ||||
| with lib; | ||||
|   elem name [ | ||||
|     "libproprietary-v3" | ||||
|     "closed-source-pkg" | ||||
|     "favorite-abandonware" | ||||
|   ] | ||||
							
								
								
									
										12
									
								
								templates/system-flake/pkgs/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								templates/system-flake/pkgs/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | |||
| final: prev: | ||||
| with prev.lib; let | ||||
|   inherit (final) callPackage fetchpatch; | ||||
| in { | ||||
|   lib = callPackage ./lib {}; | ||||
| 
 | ||||
|   hello-world = callPackage ./hello-world {}; | ||||
| 
 | ||||
|   override = { | ||||
|     sl = prev.sl.overrideAttrs {pname = "my-sl";}; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										6
									
								
								templates/system-flake/pkgs/hello-world/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								templates/system-flake/pkgs/hello-world/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| CFLAGS += -O3 -s | ||||
| 
 | ||||
| all: hello-world | ||||
| 
 | ||||
| %: %.c | ||||
| 	$(CC) $(CFLAGS) -o $@ $< | ||||
							
								
								
									
										14
									
								
								templates/system-flake/pkgs/hello-world/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								templates/system-flake/pkgs/hello-world/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| {stdenv, ...}: | ||||
| stdenv.mkDerivation { | ||||
|   name = "hello-world"; | ||||
|   version = "1.0.0"; | ||||
| 
 | ||||
|   src = ./.; | ||||
| 
 | ||||
|   installPhase = '' | ||||
|     mkdir -p $out/bin | ||||
|     cp hello-world $out/bin | ||||
|   ''; | ||||
| 
 | ||||
|   meta.mainProgram = "hello-world"; | ||||
| } | ||||
							
								
								
									
										7
									
								
								templates/system-flake/pkgs/hello-world/hello-world.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								templates/system-flake/pkgs/hello-world/hello-world.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| #include <stdio.h> | ||||
| 
 | ||||
| int main() | ||||
| { | ||||
| 	printf("Hello, world!\n"); | ||||
| 	return 0; | ||||
| } | ||||
							
								
								
									
										3
									
								
								templates/system-flake/pkgs/lib/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								templates/system-flake/pkgs/lib/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| {callPackage}: { | ||||
|   fibonacci = callPackage ./fibonacci.nix {}; | ||||
| } | ||||
							
								
								
									
										7
									
								
								templates/system-flake/pkgs/lib/fibonacci.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								templates/system-flake/pkgs/lib/fibonacci.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| let | ||||
|   fib = n: | ||||
|     if n > 1 | ||||
|     then fib (n - 1) + fib (n - 2) | ||||
|     else 1; | ||||
| in | ||||
|   fib | ||||
							
								
								
									
										14
									
								
								templates/system-flake/sys/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								templates/system-flake/sys/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| {pkgs, ...}: { | ||||
|   # Let 'nixos-version --json' know about the Git revision | ||||
|   # of this flake. | ||||
|   system.configurationRevision = nixpkgs.lib.mkIf (self ? rev) self.rev; | ||||
| 
 | ||||
|   # Network configuration. | ||||
|   networking.firewall.allowedTCPPorts = [80]; | ||||
| 
 | ||||
|   # Enable a web server. | ||||
|   services.httpd = { | ||||
|     enable = true; | ||||
|     adminAddr = "morty@example.org"; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										6
									
								
								templates/system-flake/sys/platform/foo/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								templates/system-flake/sys/platform/foo/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| {pkgs, ...}: { | ||||
|   boot.isContainer = true; | ||||
| 
 | ||||
|   # Network configuration. | ||||
|   networking.useDHCP = false; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Alejandro Soto
						Alejandro Soto