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; |       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 |       overlays = let | ||||||
|         overlay = mapOverlayOverride "trivium" (import ./pkgs); |         overlay = mapOverlayOverride "trivium" (import ./pkgs); | ||||||
|       in { |       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