mirror of
				https://github.com/Jokiller230/puzzlevision.git
				synced 2025-10-31 13:50:04 +00:00 
			
		
		
		
	✨ Run nixfmt-rfc-style on repository and add it to Zed config
This commit is contained in:
		
							parent
							
								
									f5e5adb2fd
								
							
						
					
					
						commit
						45494079c5
					
				
					 41 changed files with 441 additions and 240 deletions
				
			
		
							
								
								
									
										24
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							|  | @ -7,11 +7,11 @@ | ||||||
|         ] |         ] | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1747519437, |         "lastModified": 1748080874, | ||||||
|         "narHash": "sha256-uv9Wv59d+mckS2CkorOF484wp2G5TNGijdoBZ5RkAk0=", |         "narHash": "sha256-sUebEzAkrY8Aq5G0GHFyRddmRNGP/a2iTtV7ISNvi/c=", | ||||||
|         "owner": "catppuccin", |         "owner": "catppuccin", | ||||||
|         "repo": "nix", |         "repo": "nix", | ||||||
|         "rev": "3ba714046ee32373e88166e6e9474d6ae6a5b734", |         "rev": "0ba11b12be81f0849a89ed17ab635164ea8f0112", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -76,11 +76,11 @@ | ||||||
|         ] |         ] | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1747955385, |         "lastModified": 1748182899, | ||||||
|         "narHash": "sha256-AKoBFaEGN02tGvBlkwVIDOGXouHvrTTfOUcvBDGxkxQ=", |         "narHash": "sha256-r6MHSalDFydlUmjorVTSsyhLjIt8VWNtGc5+mffXvFQ=", | ||||||
|         "owner": "nix-community", |         "owner": "nix-community", | ||||||
|         "repo": "home-manager", |         "repo": "home-manager", | ||||||
|         "rev": "a868570581f0dbdef7e33c8c9bb34b735dfcbacf", |         "rev": "901f8fef7f349cf8a8e97b3230b22fd592df9160", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -118,11 +118,11 @@ | ||||||
|         "treefmt-nix": "treefmt-nix" |         "treefmt-nix": "treefmt-nix" | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1747878048, |         "lastModified": 1748137719, | ||||||
|         "narHash": "sha256-kAR4Ox+vShPzsUar/1rHarRgUBPpm7hxwi7sIffNYa4=", |         "narHash": "sha256-yBiIy+eb0QxYoIOzOY7QyjqXY5PiLgIoNbFtg4SbUH8=", | ||||||
|         "owner": "kaylorben", |         "owner": "kaylorben", | ||||||
|         "repo": "nixcord", |         "repo": "nixcord", | ||||||
|         "rev": "5f737debf65b8409392604098a7489d997746450", |         "rev": "c4d7ccc9ae9fc1c46820bdc5b800b4f66e972ccc", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -149,11 +149,11 @@ | ||||||
|     }, |     }, | ||||||
|     "nixpkgs_2": { |     "nixpkgs_2": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1747744144, |         "lastModified": 1748026106, | ||||||
|         "narHash": "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q=", |         "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", | ||||||
|         "owner": "NixOS", |         "owner": "NixOS", | ||||||
|         "repo": "nixpkgs", |         "repo": "nixpkgs", | ||||||
|         "rev": "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f", |         "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  |  | ||||||
|  | @ -48,13 +48,14 @@ | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   outputs = {flake-parts, ...} @ inputs: |   outputs = | ||||||
|     flake-parts.lib.mkFlake {inherit inputs;} { |     { flake-parts, ... }@inputs: | ||||||
|  |     flake-parts.lib.mkFlake { inherit inputs; } { | ||||||
|       imports = [ |       imports = [ | ||||||
|         ./modules/flake |         ./modules/flake | ||||||
|       ]; |       ]; | ||||||
| 
 | 
 | ||||||
|       systems = ["x86_64-linux"]; |       systems = [ "x86_64-linux" ]; | ||||||
|       flake = { |       flake = { | ||||||
|         # Exposing the flake namespace |         # Exposing the flake namespace | ||||||
|         namespace = "puzzlevision"; |         namespace = "puzzlevision"; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| {pkgs, ...}: { | { pkgs, ... }: | ||||||
|  | { | ||||||
|   home.packages = with pkgs; [ |   home.packages = with pkgs; [ | ||||||
|     ### Tools |     ### Tools | ||||||
|     git |     git | ||||||
|  |  | ||||||
|  | @ -2,9 +2,11 @@ | ||||||
|   lib, |   lib, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkIf; |   inherit (lib) mkIf; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   # Enable arRPC for discord Rich Presence stuffs |   # Enable arRPC for discord Rich Presence stuffs | ||||||
|   services.arrpc.enable = true; |   services.arrpc.enable = true; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,9 +4,11 @@ | ||||||
|   osConfig, |   osConfig, | ||||||
|   namespace, |   namespace, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkIf; |   inherit (lib) mkIf; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   programs.youtube-music = { |   programs.youtube-music = { | ||||||
|     enable = true; |     enable = true; | ||||||
|     options = { |     options = { | ||||||
|  |  | ||||||
|  | @ -2,7 +2,8 @@ | ||||||
|   pkgs, |   pkgs, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: { | }: | ||||||
|  | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     ./apps/discord |     ./apps/discord | ||||||
|     ./apps/youtube-music |     ./apps/youtube-music | ||||||
|  |  | ||||||
|  | @ -2,24 +2,29 @@ | ||||||
|   lib, |   lib, | ||||||
|   self, |   self, | ||||||
|   ... |   ... | ||||||
| }: { | }: | ||||||
|  | { | ||||||
|   # Create a NixOS module option on a single line. |   # Create a NixOS module option on a single line. | ||||||
|   mkOpt = type: default: description: |   mkOpt = | ||||||
|     lib.mkOption {inherit type default description;}; |     type: default: description: | ||||||
|  |     lib.mkOption { inherit type default description; }; | ||||||
| 
 | 
 | ||||||
|   # Create a simple bool options |   # Create a simple bool options | ||||||
|   mkBool = default: description: |   mkBool = | ||||||
|  |     default: description: | ||||||
|     lib.mkOption { |     lib.mkOption { | ||||||
|       inherit default description; |       inherit default description; | ||||||
|       type = lib.types.bool; |       type = lib.types.bool; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|   # Create a module compliant with the NixOS module system. |   # Create a module compliant with the NixOS module system. | ||||||
|   mkModule = { |   mkModule = | ||||||
|  |     { | ||||||
|       name ? "puzzlevision", |       name ? "puzzlevision", | ||||||
|       class, |       class, | ||||||
|       modules, |       modules, | ||||||
|   }: { |     }: | ||||||
|  |     { | ||||||
|       _class = class; |       _class = class; | ||||||
|       # Template: "[path-to-flake]/flake.nix#[class-name]Modules.[module-name]" |       # Template: "[path-to-flake]/flake.nix#[class-name]Modules.[module-name]" | ||||||
|       # Example: "[path-to-flake]/flake.nix#nixosModules.system.audio" |       # Example: "[path-to-flake]/flake.nix#nixosModules.system.audio" | ||||||
|  |  | ||||||
|  | @ -2,35 +2,43 @@ | ||||||
|   lib, |   lib, | ||||||
|   self, |   self, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   # Utility function to read a directory and return its contents. |   # Utility function to read a directory and return its contents. | ||||||
|   readDirectory = directory: builtins.readDir directory; |   readDirectory = directory: builtins.readDir directory; | ||||||
| 
 | 
 | ||||||
|   # Utility function to handle each filesystem entity (file or directory). |   # Utility function to handle each filesystem entity (file or directory). | ||||||
|   filesystemEntityToAttrSet = directory: importArgs: name: type: |   filesystemEntityToAttrSet = | ||||||
|     if type == "directory" |     directory: importArgs: name: type: | ||||||
|     then dirToAttrSet "${directory}/${name}" importArgs |     if type == "directory" then | ||||||
|     else if name == "default.nix" |       dirToAttrSet "${directory}/${name}" importArgs | ||||||
|     then import "${directory}/${name}" importArgs |     else if name == "default.nix" then | ||||||
|     else {}; |       import "${directory}/${name}" importArgs | ||||||
|  |     else | ||||||
|  |       { }; | ||||||
| 
 | 
 | ||||||
|   filesystemEntityToList = directory: name: type: |   filesystemEntityToList = | ||||||
|     if type == "directory" |     directory: name: type: | ||||||
|     then dirToModuleList "${directory}/${name}" |     if type == "directory" then | ||||||
|     else if name == "default.nix" |       dirToModuleList "${directory}/${name}" | ||||||
|     then ["${directory}/${name}"] |     else if name == "default.nix" then | ||||||
|     else []; |       [ "${directory}/${name}" ] | ||||||
|  |     else | ||||||
|  |       [ ]; | ||||||
| 
 | 
 | ||||||
|   dirToModuleList = directory: let |   dirToModuleList = | ||||||
|  |     directory: | ||||||
|  |     let | ||||||
|       readDir = readDirectory directory; |       readDir = readDirectory directory; | ||||||
|     in |     in | ||||||
|     builtins.foldl' ( |     builtins.foldl' ( | ||||||
|       acc: name: |       acc: name: acc ++ (filesystemEntityToList directory name (builtins.getAttr name readDir)) | ||||||
|         acc ++ (filesystemEntityToList directory name (builtins.getAttr name readDir)) |     ) [ ] (builtins.attrNames readDir); | ||||||
|     ) [] (builtins.attrNames readDir); |  | ||||||
| 
 | 
 | ||||||
|   # Utility function to recursively load modules from a directory. |   # Utility function to recursively load modules from a directory. | ||||||
|   dirToAttrSet = directory: importArgs: let |   dirToAttrSet = | ||||||
|  |     directory: importArgs: | ||||||
|  |     let | ||||||
|       # Read provided directory only once at the very start and save the result. |       # Read provided directory only once at the very start and save the result. | ||||||
|       readDir = readDirectory directory; |       readDir = readDirectory directory; | ||||||
|     in |     in | ||||||
|  | @ -40,10 +48,18 @@ | ||||||
|       # Merge outputs of handling a filesystem entity (file or directory) into accumulator. |       # Merge outputs of handling a filesystem entity (file or directory) into accumulator. | ||||||
|       # Files return attribute sets with their resulting expressions, directories return the result of multiple file handling operations. |       # Files return attribute sets with their resulting expressions, directories return the result of multiple file handling operations. | ||||||
|       acc // (filesystemEntityToAttrSet directory importArgs name (builtins.getAttr name readDir)) |       acc // (filesystemEntityToAttrSet directory importArgs name (builtins.getAttr name readDir)) | ||||||
|     ) {} (builtins.attrNames readDir); |     ) { } (builtins.attrNames readDir); | ||||||
| 
 | 
 | ||||||
|   puzzlelib = dirToAttrSet ../../lib {inherit lib self;} // {inherit dirToAttrSet dirToModuleList filesystemEntityToList filesystemEntityToAttrSet;}; |   puzzlelib = dirToAttrSet ../../lib { inherit lib self; } // { | ||||||
| in { |     inherit | ||||||
|  |       dirToAttrSet | ||||||
|  |       dirToModuleList | ||||||
|  |       filesystemEntityToList | ||||||
|  |       filesystemEntityToAttrSet | ||||||
|  |       ; | ||||||
|  |   }; | ||||||
|  | in | ||||||
|  | { | ||||||
|   # Expose custom library on flake "lib" output |   # Expose custom library on flake "lib" output | ||||||
|   flake.lib = puzzlelib; |   flake.lib = puzzlelib; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| {self, ...}: { | { self, ... }: | ||||||
|  | { | ||||||
|   flake = { |   flake = { | ||||||
|     # TODO: figure out why this isn't working correctly |     # TODO: figure out why this isn't working correctly | ||||||
|     nixosModules.puzzlevision = self.lib.mkModule { |     nixosModules.puzzlevision = self.lib.mkModule { | ||||||
|  |  | ||||||
|  | @ -3,7 +3,8 @@ | ||||||
|   self, |   self, | ||||||
|   inputs, |   inputs, | ||||||
|   ... |   ... | ||||||
| }: { | }: | ||||||
|  | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     inputs.easy-hosts.flakeModule |     inputs.easy-hosts.flakeModule | ||||||
|   ]; |   ]; | ||||||
|  |  | ||||||
|  | @ -4,12 +4,14 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf mkForce; |   inherit (lib) mkEnableOption mkIf mkForce; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.apps.zed; |   cfg = config.${namespace}.apps.zed; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.apps.zed = { |   options.${namespace}.apps.zed = { | ||||||
|     enable = mkEnableOption "zed, the graphical editor from the future"; |     enable = mkEnableOption "zed, the graphical editor from the future"; | ||||||
|   }; |   }; | ||||||
|  | @ -67,11 +69,14 @@ in { | ||||||
|         ### Language specific configurations |         ### Language specific configurations | ||||||
|         languages = { |         languages = { | ||||||
|           Nix = { |           Nix = { | ||||||
|             language_servers = ["nixd" "!nil"]; |             language_servers = [ | ||||||
|  |               "nixd" | ||||||
|  |               "!nil" | ||||||
|  |             ]; | ||||||
|             formatter = { |             formatter = { | ||||||
|               external = { |               external = { | ||||||
|                 command = "alejandra"; |                 command = "nixfmt"; | ||||||
|                 arguments = ["--quiet"]; |                 arguments = [ "--quiet" ]; | ||||||
|               }; |               }; | ||||||
|             }; |             }; | ||||||
|           }; |           }; | ||||||
|  | @ -123,6 +128,7 @@ in { | ||||||
|         ### Nix |         ### Nix | ||||||
|         nixd |         nixd | ||||||
|         alejandra |         alejandra | ||||||
|  |         nixfmt-rfc-style | ||||||
| 
 | 
 | ||||||
|         ### Python |         ### Python | ||||||
|         python3Packages.python-lsp-server |         python3Packages.python-lsp-server | ||||||
|  |  | ||||||
|  | @ -5,24 +5,44 @@ | ||||||
|   config, |   config, | ||||||
|   osConfig, |   osConfig, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkIf mkOption; |   inherit (lib) mkIf mkOption; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
|   inherit (self.lib) mkOpt; |   inherit (self.lib) mkOpt; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.desktop.gnome; |   cfg = config.${namespace}.desktop.gnome; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.desktop.gnome = with lib.types; { |   options.${namespace}.desktop.gnome = with lib.types; { | ||||||
|     enabled-extensions = mkOption { |     enabled-extensions = mkOption { | ||||||
|       type = listOf package; |       type = listOf package; | ||||||
|       default = with pkgs.gnomeExtensions; [user-themes blur-my-shell appindicator unite color-picker clipboard-history]; |       default = with pkgs.gnomeExtensions; [ | ||||||
|       example = [dash-to-dock blur-my-shell]; |         user-themes | ||||||
|  |         blur-my-shell | ||||||
|  |         appindicator | ||||||
|  |         unite | ||||||
|  |         color-picker | ||||||
|  |         clipboard-history | ||||||
|  |       ]; | ||||||
|  |       example = [ | ||||||
|  |         dash-to-dock | ||||||
|  |         blur-my-shell | ||||||
|  |       ]; | ||||||
|       description = "Specify gnome extensions to install."; |       description = "Specify gnome extensions to install."; | ||||||
|     }; |     }; | ||||||
|     favorite-apps = mkOption { |     favorite-apps = mkOption { | ||||||
|       type = listOf str; |       type = listOf str; | ||||||
|       default = ["org.gnome.Nautilus.desktop" "obsidian.desktop" "firefox.desktop" "dev.zed.Zed.desktop"]; |       default = [ | ||||||
|       example = ["org.gnome.Nautilus.desktop" "obsidian.desktop"]; |         "org.gnome.Nautilus.desktop" | ||||||
|  |         "obsidian.desktop" | ||||||
|  |         "firefox.desktop" | ||||||
|  |         "dev.zed.Zed.desktop" | ||||||
|  |       ]; | ||||||
|  |       example = [ | ||||||
|  |         "org.gnome.Nautilus.desktop" | ||||||
|  |         "obsidian.desktop" | ||||||
|  |       ]; | ||||||
|       description = "Specify your favorite apps (sorted left to right)."; |       description = "Specify your favorite apps (sorted left to right)."; | ||||||
|     }; |     }; | ||||||
|     extensions = { |     extensions = { | ||||||
|  | @ -44,7 +64,9 @@ in { | ||||||
|         enable-blur = mkOpt bool false "Whether to enable blur-my-shell application blur."; |         enable-blur = mkOpt bool false "Whether to enable blur-my-shell application blur."; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|     wallpaper = mkOpt str (builtins.toString ../wallpapers/catppuccin/howard-chen-mao-mao-forest-campsite.jpg) "Specify the path of your prefered Gnome wallpaper."; |     wallpaper = | ||||||
|  |       mkOpt str (builtins.toString ../wallpapers/catppuccin/howard-chen-mao-mao-forest-campsite.jpg) | ||||||
|  |         "Specify the path of your prefered Gnome wallpaper."; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf osConfig.${namespace}.desktop.gnome.enable { |   config = mkIf osConfig.${namespace}.desktop.gnome.enable { | ||||||
|  | @ -54,9 +76,11 @@ in { | ||||||
|       "org/gnome/shell" = { |       "org/gnome/shell" = { | ||||||
|         favorite-apps = cfg.favorite-apps; |         favorite-apps = cfg.favorite-apps; | ||||||
|         enabled-extensions = lib.forEach cfg.enabled-extensions (x: x.extensionUuid); |         enabled-extensions = lib.forEach cfg.enabled-extensions (x: x.extensionUuid); | ||||||
|         disabled-extensions = []; # Make sure none of our extensions are disabled on system rebuild |         disabled-extensions = [ ]; # Make sure none of our extensions are disabled on system rebuild | ||||||
|       }; |       }; | ||||||
|       "org/gnome/shell/extensions/unite" = mkIf (builtins.elem pkgs.gnomeExtensions.unite cfg.enabled-extensions) { |       "org/gnome/shell/extensions/unite" = | ||||||
|  |         mkIf (builtins.elem pkgs.gnomeExtensions.unite cfg.enabled-extensions) | ||||||
|  |           { | ||||||
|             show-window-buttons = cfg.extensions.unite.show-window-buttons; |             show-window-buttons = cfg.extensions.unite.show-window-buttons; | ||||||
|             hide-window-titlebars = cfg.extensions.unite.hide-window-titlebars; |             hide-window-titlebars = cfg.extensions.unite.hide-window-titlebars; | ||||||
| 
 | 
 | ||||||
|  | @ -72,7 +96,9 @@ in { | ||||||
|             autofocus-windows = true; |             autofocus-windows = true; | ||||||
|             notifications-position = "right"; |             notifications-position = "right"; | ||||||
|           }; |           }; | ||||||
|       "org/gnome/shell/extensions/blur-my-shell/applications" = mkIf cfg.extensions.blur-my-shell.enable-blur { |       "org/gnome/shell/extensions/blur-my-shell/applications" = | ||||||
|  |         mkIf cfg.extensions.blur-my-shell.enable-blur | ||||||
|  |           { | ||||||
|             blur = true; |             blur = true; | ||||||
|             sigma = 30; |             sigma = 30; | ||||||
|             opacity = 230; |             opacity = 230; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| {config, ...}: { | { config, ... }: | ||||||
|  | { | ||||||
|   sops = { |   sops = { | ||||||
|     age.keyFile = "/home/${config.home.username}/sops-nix/key.txt"; |     age.keyFile = "/home/${config.home.username}/sops-nix/key.txt"; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -6,19 +6,25 @@ | ||||||
|   osConfig, |   osConfig, | ||||||
|   namespace, |   namespace, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption types mkIf; |   inherit (lib) mkEnableOption types mkIf; | ||||||
|   inherit (self.lib) mkOpt; |   inherit (self.lib) mkOpt; | ||||||
| 
 | 
 | ||||||
|   palette = (pkgs.lib.importJSON (config.catppuccin.sources.palette + "/palette.json")).${config.catppuccin.flavor}.colors; |   palette = | ||||||
|  |     (pkgs.lib.importJSON (config.catppuccin.sources.palette + "/palette.json")) | ||||||
|  |     .${config.catppuccin.flavor}.colors; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.themes.catppuccin; |   cfg = config.${namespace}.themes.catppuccin; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.themes.catppuccin = { |   options.${namespace}.themes.catppuccin = { | ||||||
|     enable = mkEnableOption "the Catppuccin theme, globally."; |     enable = mkEnableOption "the Catppuccin theme, globally."; | ||||||
|     accent = mkOpt types.str "blue" "The accent colour to use."; |     accent = mkOpt types.str "blue" "The accent colour to use."; | ||||||
|     flavor = mkOpt types.str "macchiato" "The flavor to use."; |     flavor = mkOpt types.str "macchiato" "The flavor to use."; | ||||||
|     palette = mkOpt (lib.types.attrsOf lib.types.raw) palette "a reference to the current active Catppuccin palette."; |     palette = | ||||||
|  |       mkOpt (lib.types.attrsOf lib.types.raw) palette | ||||||
|  |         "a reference to the current active Catppuccin palette."; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|  |  | ||||||
|  | @ -4,7 +4,8 @@ | ||||||
|   config, |   config, | ||||||
|   namespace, |   namespace, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf; |   inherit (lib) mkEnableOption mkIf; | ||||||
| 
 | 
 | ||||||
|   catppuccinCfg = config.${namespace}.themes.catppuccin; |   catppuccinCfg = config.${namespace}.themes.catppuccin; | ||||||
|  | @ -104,16 +105,19 @@ | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.themes.catppuccin.gtk; |   cfg = config.${namespace}.themes.catppuccin.gtk; | ||||||
| in { | in | ||||||
|   options.${namespace}.themes.catppuccin.gtk = {enable = mkEnableOption "Enable the Catppuccin theme for GTK";}; | { | ||||||
|  |   options.${namespace}.themes.catppuccin.gtk = { | ||||||
|  |     enable = mkEnableOption "Enable the Catppuccin theme for GTK"; | ||||||
|  |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     home.packages = with pkgs; [ |     home.packages = with pkgs; [ | ||||||
|       (colloid-gtk-theme.override { |       (colloid-gtk-theme.override { | ||||||
|         themeVariants = ["default"]; |         themeVariants = [ "default" ]; | ||||||
|         colorVariants = ["dark"]; |         colorVariants = [ "dark" ]; | ||||||
|         sizeVariants = ["standard"]; |         sizeVariants = [ "standard" ]; | ||||||
|         tweaks = ["catppuccin"]; |         tweaks = [ "catppuccin" ]; | ||||||
|       }) |       }) | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,12 +3,14 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf; |   inherit (lib) mkEnableOption mkIf; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.archetypes.laptop; |   cfg = config.${namespace}.archetypes.laptop; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.archetypes.laptop = { |   options.${namespace}.archetypes.laptop = { | ||||||
|     enable = mkEnableOption "the laptop archetype."; |     enable = mkEnableOption "the laptop archetype."; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -3,12 +3,14 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf; |   inherit (lib) mkEnableOption mkIf; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.archetypes.server; |   cfg = config.${namespace}.archetypes.server; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.archetypes.server = { |   options.${namespace}.archetypes.server = { | ||||||
|     enable = mkEnableOption "the server archetype for your current system"; |     enable = mkEnableOption "the server archetype for your current system"; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -4,12 +4,14 @@ | ||||||
|   pkgs, |   pkgs, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf mkDefault; |   inherit (lib) mkEnableOption mkIf mkDefault; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.archetypes.workstation; |   cfg = config.${namespace}.archetypes.workstation; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.archetypes.workstation = { |   options.${namespace}.archetypes.workstation = { | ||||||
|     enable = mkEnableOption "the workstation archetype."; |     enable = mkEnableOption "the workstation archetype."; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -4,12 +4,14 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf; |   inherit (lib) mkEnableOption mkIf; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.desktop.gnome; |   cfg = config.${namespace}.desktop.gnome; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.desktop.gnome = { |   options.${namespace}.desktop.gnome = { | ||||||
|     enable = mkEnableOption "the gnome desktop environment"; |     enable = mkEnableOption "the gnome desktop environment"; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -3,18 +3,22 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf types; |   inherit (lib) mkEnableOption mkIf types; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
|   inherit (self.lib) mkOpt; |   inherit (self.lib) mkOpt; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.services.atticd; |   cfg = config.${namespace}.services.atticd; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.services.atticd = { |   options.${namespace}.services.atticd = { | ||||||
|     enable = mkEnableOption "the attic service, a multi-tenant nix binary cache."; |     enable = mkEnableOption "the attic service, a multi-tenant nix binary cache."; | ||||||
|     sopsFile = mkOpt types.path null "The location of the sops secret file for the Atticd service."; |     sopsFile = mkOpt types.path null "The location of the sops secret file for the Atticd service."; | ||||||
|     sopsFormat = mkOpt types.str null "The format of the sops secret file for the Atticd service."; |     sopsFormat = mkOpt types.str null "The format of the sops secret file for the Atticd service."; | ||||||
|     subdomain = mkOpt types.str "cache" "The subdomain, of the system domain, the service should be exposed on."; |     subdomain = | ||||||
|  |       mkOpt types.str "cache" | ||||||
|  |         "The subdomain, of the system domain, the service should be exposed on."; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|  | @ -30,7 +34,7 @@ in { | ||||||
| 
 | 
 | ||||||
|       settings = { |       settings = { | ||||||
|         listen = "[::]:3900"; |         listen = "[::]:3900"; | ||||||
|         jwt = {}; |         jwt = { }; | ||||||
| 
 | 
 | ||||||
|         chunking = { |         chunking = { | ||||||
|           nar-size-threshold = 64 * 1024; # 64 KiB |           nar-size-threshold = 64 * 1024; # 64 KiB | ||||||
|  | @ -50,9 +54,9 @@ in { | ||||||
| 
 | 
 | ||||||
|     services.traefik.dynamicConfigOptions = { |     services.traefik.dynamicConfigOptions = { | ||||||
|       http = { |       http = { | ||||||
|         services.atticd.loadBalancer.servers = [{url = "http://localhost:3900";}]; |         services.atticd.loadBalancer.servers = [ { url = "http://localhost:3900"; } ]; | ||||||
|         routers.atticd = { |         routers.atticd = { | ||||||
|           entryPoints = ["websecure"]; |           entryPoints = [ "websecure" ]; | ||||||
|           service = "atticd"; |           service = "atticd"; | ||||||
|           rule = "Host(`${cfg.subdomain}.${config.${namespace}.services.domain}`)"; |           rule = "Host(`${cfg.subdomain}.${config.${namespace}.services.domain}`)"; | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|  | @ -2,13 +2,17 @@ | ||||||
|   lib, |   lib, | ||||||
|   self, |   self, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) types; |   inherit (lib) types; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
|   inherit (self.lib) mkOpt; |   inherit (self.lib) mkOpt; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.services = { |   options.${namespace}.services = { | ||||||
|     domain = mkOpt types.str "thevoid.cafe" "The main system domain, used for exposing services."; |     domain = mkOpt types.str "thevoid.cafe" "The main system domain, used for exposing services."; | ||||||
|     mail = mkOpt types.str "system@thevoid.cafe" "The main system administration E-Mail, used for logs and services."; |     mail = | ||||||
|  |       mkOpt types.str "system@thevoid.cafe" | ||||||
|  |         "The main system administration E-Mail, used for logs and services."; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -3,12 +3,14 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkIf mkEnableOption; |   inherit (lib) mkIf mkEnableOption; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.services.docker; |   cfg = config.${namespace}.services.docker; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.services.docker = { |   options.${namespace}.services.docker = { | ||||||
|     enable = mkEnableOption "the docker service."; |     enable = mkEnableOption "the docker service."; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -3,13 +3,15 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf types; |   inherit (lib) mkEnableOption mkIf types; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
|   inherit (self.lib) mkOpt; |   inherit (self.lib) mkOpt; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.services.duckdns; |   cfg = config.${namespace}.services.duckdns; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.services.duckdns = { |   options.${namespace}.services.duckdns = { | ||||||
|     enable = mkEnableOption "DuckDNS, the dynamic dns service. Will periodically refresh your IP."; |     enable = mkEnableOption "DuckDNS, the dynamic dns service. Will periodically refresh your IP."; | ||||||
|     sopsFile = mkOpt types.path null "The location of the sops secret file for the DuckDNS service."; |     sopsFile = mkOpt types.path null "The location of the sops secret file for the DuckDNS service."; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| {...}: { | { ... }: | ||||||
|  | { | ||||||
|   # Todo: rewrite as recursive operation, based on ${namespace}.users |   # Todo: rewrite as recursive operation, based on ${namespace}.users | ||||||
|   system.userActivationScripts = { |   system.userActivationScripts = { | ||||||
|     removeConflictingHomeManagerBackups = { |     removeConflictingHomeManagerBackups = { | ||||||
|  |  | ||||||
|  | @ -3,17 +3,23 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf types; |   inherit (lib) mkEnableOption mkIf types; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
|   inherit (self.lib) mkOpt; |   inherit (self.lib) mkOpt; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.services.homepage; |   cfg = config.${namespace}.services.homepage; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.services.homepage = { |   options.${namespace}.services.homepage = { | ||||||
|     enable = mkEnableOption "Homepage, an intuitive dashboard for your services."; |     enable = mkEnableOption "Homepage, an intuitive dashboard for your services."; | ||||||
|     subdomain = mkOpt types.str "home" "The subdomain, of the system domain, the service should be exposed on."; |     subdomain = | ||||||
|     configDir = mkOpt types.path null "The config directory, which will be copied to the Homepage directory during compilation."; |       mkOpt types.str "home" | ||||||
|  |         "The subdomain, of the system domain, the service should be exposed on."; | ||||||
|  |     configDir = | ||||||
|  |       mkOpt types.path null | ||||||
|  |         "The config directory, which will be copied to the Homepage directory during compilation."; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|  | @ -35,7 +41,9 @@ in { | ||||||
|       labels = { |       labels = { | ||||||
|         "traefik.enable" = "true"; |         "traefik.enable" = "true"; | ||||||
|         "traefik.http.routers.homepage.entrypoints" = "websecure"; |         "traefik.http.routers.homepage.entrypoints" = "websecure"; | ||||||
|         "traefik.http.routers.homepage.rule" = "Host(`${cfg.subdomain}.${config.${namespace}.services.domain}`)"; |         "traefik.http.routers.homepage.rule" = "Host(`${cfg.subdomain}.${ | ||||||
|  |           config.${namespace}.services.domain | ||||||
|  |         }`)"; | ||||||
|         "traefik.http.services.homepage.loadbalancer.server.port" = "3000"; |         "traefik.http.services.homepage.loadbalancer.server.port" = "3000"; | ||||||
|       }; |       }; | ||||||
|       volumes = [ |       volumes = [ | ||||||
|  | @ -48,7 +56,7 @@ in { | ||||||
|       environment = { |       environment = { | ||||||
|         "HOMEPAGE_ALLOWED_HOSTS" = "${cfg.subdomain}.${config.${namespace}.services.domain}"; |         "HOMEPAGE_ALLOWED_HOSTS" = "${cfg.subdomain}.${config.${namespace}.services.domain}"; | ||||||
|       }; |       }; | ||||||
|       extraOptions = ["--network=proxy"]; |       extraOptions = [ "--network=proxy" ]; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -3,13 +3,15 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf types; |   inherit (lib) mkEnableOption mkIf types; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
|   inherit (self.lib) mkOpt; |   inherit (self.lib) mkOpt; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.services.traefik; |   cfg = config.${namespace}.services.traefik; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.services.traefik = { |   options.${namespace}.services.traefik = { | ||||||
|     enable = mkEnableOption "the Traefik service."; |     enable = mkEnableOption "the Traefik service."; | ||||||
|     sopsFile = mkOpt types.path null "The location of the sops secret file for the Traefik service."; |     sopsFile = mkOpt types.path null "The location of the sops secret file for the Traefik service."; | ||||||
|  | @ -17,7 +19,11 @@ in { | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     networking.firewall.allowedTCPPorts = [80 8080 443]; # http, dashboard, https |     networking.firewall.allowedTCPPorts = [ | ||||||
|  |       80 | ||||||
|  |       8080 | ||||||
|  |       443 | ||||||
|  |     ]; # http, dashboard, https | ||||||
| 
 | 
 | ||||||
|     sops.secrets."services/traefik" = { |     sops.secrets."services/traefik" = { | ||||||
|       sopsFile = cfg.sopsFile; |       sopsFile = cfg.sopsFile; | ||||||
|  | @ -26,7 +32,7 @@ in { | ||||||
| 
 | 
 | ||||||
|     systemd.services.traefik = { |     systemd.services.traefik = { | ||||||
|       serviceConfig = { |       serviceConfig = { | ||||||
|         EnvironmentFile = [config.sops.secrets."services/traefik".path]; |         EnvironmentFile = [ config.sops.secrets."services/traefik".path ]; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | @ -84,11 +90,11 @@ in { | ||||||
|             domains = [ |             domains = [ | ||||||
|               { |               { | ||||||
|                 main = "thevoid.cafe"; |                 main = "thevoid.cafe"; | ||||||
|                 sans = ["*.thevoid.cafe"]; |                 sans = [ "*.thevoid.cafe" ]; | ||||||
|               } |               } | ||||||
|               { |               { | ||||||
|                 main = "rhysbot.co.uk"; |                 main = "rhysbot.co.uk"; | ||||||
|                 sans = ["*.rhysbot.co.uk"]; |                 sans = [ "*.rhysbot.co.uk" ]; | ||||||
|               } |               } | ||||||
|             ]; |             ]; | ||||||
|           }; |           }; | ||||||
|  |  | ||||||
|  | @ -3,18 +3,24 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf types; |   inherit (lib) mkEnableOption mkIf types; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
|   inherit (self.lib) mkOpt; |   inherit (self.lib) mkOpt; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.services.vaultwarden; |   cfg = config.${namespace}.services.vaultwarden; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.services.vaultwarden = { |   options.${namespace}.services.vaultwarden = { | ||||||
|     enable = mkEnableOption "Vaultwarden, a self-hostable password manager."; |     enable = mkEnableOption "Vaultwarden, a self-hostable password manager."; | ||||||
|     sopsFile = mkOpt types.path null "The location of the sops secret file for the Vaultwarden service."; |     sopsFile = | ||||||
|  |       mkOpt types.path null | ||||||
|  |         "The location of the sops secret file for the Vaultwarden service."; | ||||||
|     sopsFormat = mkOpt types.str null "The format of the sops secret file for the Vaultwarden service."; |     sopsFormat = mkOpt types.str null "The format of the sops secret file for the Vaultwarden service."; | ||||||
|     subdomain = mkOpt types.str "vault" "The subdomain, of the system domain, the service should be exposed on."; |     subdomain = | ||||||
|  |       mkOpt types.str "vault" | ||||||
|  |         "The subdomain, of the system domain, the service should be exposed on."; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|  | @ -35,7 +41,9 @@ in { | ||||||
|       labels = { |       labels = { | ||||||
|         "traefik.enable" = "true"; |         "traefik.enable" = "true"; | ||||||
|         "traefik.http.routers.vaultwarden.entrypoints" = "websecure"; |         "traefik.http.routers.vaultwarden.entrypoints" = "websecure"; | ||||||
|         "traefik.http.routers.vaultwarden.rule" = "Host(`${cfg.subdomain}.${config.${namespace}.services.domain}`)"; |         "traefik.http.routers.vaultwarden.rule" = "Host(`${cfg.subdomain}.${ | ||||||
|  |           config.${namespace}.services.domain | ||||||
|  |         }`)"; | ||||||
|       }; |       }; | ||||||
|       volumes = [ |       volumes = [ | ||||||
|         "/var/lib/containers/vaultwarden/data:/data:rw" |         "/var/lib/containers/vaultwarden/data:/data:rw" | ||||||
|  | @ -43,7 +51,7 @@ in { | ||||||
|       environmentFiles = [ |       environmentFiles = [ | ||||||
|         config.sops.secrets."services/vaultwarden".path |         config.sops.secrets."services/vaultwarden".path | ||||||
|       ]; |       ]; | ||||||
|       extraOptions = ["--network=proxy"]; |       extraOptions = [ "--network=proxy" ]; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -3,12 +3,14 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf; |   inherit (lib) mkEnableOption mkIf; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.system.audio; |   cfg = config.${namespace}.system.audio; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.system.audio = { |   options.${namespace}.system.audio = { | ||||||
|     enable = mkEnableOption "system audio support."; |     enable = mkEnableOption "system audio support."; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -4,18 +4,20 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf; |   inherit (lib) mkEnableOption mkIf; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.system.bluetooth; |   cfg = config.${namespace}.system.bluetooth; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.system.bluetooth = { |   options.${namespace}.system.bluetooth = { | ||||||
|     enable = mkEnableOption "bluetooth support."; |     enable = mkEnableOption "bluetooth support."; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     environment.systemPackages = with pkgs; [bluez]; |     environment.systemPackages = with pkgs; [ bluez ]; | ||||||
| 
 | 
 | ||||||
|     hardware.bluetooth = { |     hardware.bluetooth = { | ||||||
|       enable = true; |       enable = true; | ||||||
|  |  | ||||||
|  | @ -4,12 +4,14 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf mkOption; |   inherit (lib) mkEnableOption mkIf mkOption; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.system.fonts; |   cfg = config.${namespace}.system.fonts; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.system.fonts = with lib.types; { |   options.${namespace}.system.fonts = with lib.types; { | ||||||
|     enable = mkEnableOption "system font management"; |     enable = mkEnableOption "system font management"; | ||||||
|     fonts = mkOption { |     fonts = mkOption { | ||||||
|  | @ -30,13 +32,16 @@ in { | ||||||
|         material-icons |         material-icons | ||||||
|         material-design-icons |         material-design-icons | ||||||
|       ]; |       ]; | ||||||
|       example = [noto-fonts noto-fonts-emoji]; |       example = [ | ||||||
|  |         noto-fonts | ||||||
|  |         noto-fonts-emoji | ||||||
|  |       ]; | ||||||
|       description = "Install additional font packages"; |       description = "Install additional font packages"; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     environment.systemPackages = with pkgs; [font-manager]; |     environment.systemPackages = with pkgs; [ font-manager ]; | ||||||
| 
 | 
 | ||||||
|     fonts.packages = cfg.fonts; |     fonts.packages = cfg.fonts; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -3,12 +3,14 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf; |   inherit (lib) mkEnableOption mkIf; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.system.grub; |   cfg = config.${namespace}.system.grub; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.system.grub = { |   options.${namespace}.system.grub = { | ||||||
|     enable = mkEnableOption "the grub bootloader."; |     enable = mkEnableOption "the grub bootloader."; | ||||||
|   }; |   }; | ||||||
|  | @ -18,7 +20,7 @@ in { | ||||||
| 
 | 
 | ||||||
|     boot.loader.grub = { |     boot.loader.grub = { | ||||||
|       enable = true; |       enable = true; | ||||||
|       devices = ["nodev"]; |       devices = [ "nodev" ]; | ||||||
|       efiInstallAsRemovable = true; |       efiInstallAsRemovable = true; | ||||||
|       efiSupport = true; |       efiSupport = true; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,16 +4,20 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf; |   inherit (lib) mkEnableOption mkIf; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
|   inherit (self.lib) mkOpt; |   inherit (self.lib) mkOpt; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.system.kernel; |   cfg = config.${namespace}.system.kernel; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.system.kernel = { |   options.${namespace}.system.kernel = { | ||||||
|     enable = mkEnableOption "Modify the standard kernel settings"; |     enable = mkEnableOption "Modify the standard kernel settings"; | ||||||
|     version = mkOpt lib.types.str "linuxPackages_latest" "Set the kernel version to be used by your system"; |     version = | ||||||
|  |       mkOpt lib.types.str "linuxPackages_latest" | ||||||
|  |         "Set the kernel version to be used by your system"; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|  |  | ||||||
|  | @ -3,12 +3,14 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf mkOption; |   inherit (lib) mkEnableOption mkIf mkOption; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.system.locale; |   cfg = config.${namespace}.system.locale; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.system.locale = { |   options.${namespace}.system.locale = { | ||||||
|     enable = mkEnableOption "system locale tweaks."; |     enable = mkEnableOption "system locale tweaks."; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,12 +3,14 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf; |   inherit (lib) mkEnableOption mkIf; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.system.networking; |   cfg = config.${namespace}.system.networking; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.system.networking = { |   options.${namespace}.system.networking = { | ||||||
|     enable = mkEnableOption "networking."; |     enable = mkEnableOption "networking."; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -4,18 +4,22 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf types; |   inherit (lib) mkEnableOption mkIf types; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
|   inherit (self.lib) mkOpt; |   inherit (self.lib) mkOpt; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.system.nix; |   cfg = config.${namespace}.system.nix; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.system.nix = { |   options.${namespace}.system.nix = { | ||||||
|     enable = mkEnableOption "Nix configuration overrides."; |     enable = mkEnableOption "Nix configuration overrides."; | ||||||
|     use-lix = mkEnableOption "Lix as an alternative to CppNix."; |     use-lix = mkEnableOption "Lix as an alternative to CppNix."; | ||||||
|     use-nixld = mkEnableOption "the use of dynamically linked executables on nix based systems."; |     use-nixld = mkEnableOption "the use of dynamically linked executables on nix based systems."; | ||||||
|     trusted-users = mkOpt (types.listOf types.str) ["@wheel"] "List of trusted users for this NixOS system."; |     trusted-users = mkOpt (types.listOf types.str) [ | ||||||
|  |       "@wheel" | ||||||
|  |     ] "List of trusted users for this NixOS system."; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|  | @ -23,7 +27,10 @@ in { | ||||||
|       settings = { |       settings = { | ||||||
|         auto-optimise-store = true; |         auto-optimise-store = true; | ||||||
|         builders-use-substitutes = true; |         builders-use-substitutes = true; | ||||||
|         experimental-features = ["nix-command" "flakes"]; |         experimental-features = [ | ||||||
|  |           "nix-command" | ||||||
|  |           "flakes" | ||||||
|  |         ]; | ||||||
|         keep-derivations = true; |         keep-derivations = true; | ||||||
|         keep-outputs = true; |         keep-outputs = true; | ||||||
|         max-jobs = "auto"; |         max-jobs = "auto"; | ||||||
|  |  | ||||||
|  | @ -4,16 +4,18 @@ | ||||||
|   self, |   self, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|  | let | ||||||
|   inherit (lib) mkEnableOption mkIf types; |   inherit (lib) mkEnableOption mkIf types; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
|   inherit (self.lib) mkOpt; |   inherit (self.lib) mkOpt; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.system.shell; |   cfg = config.${namespace}.system.shell; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.system.shell = { |   options.${namespace}.system.shell = { | ||||||
|     enable = mkEnableOption "custom user shells."; |     enable = mkEnableOption "custom user shells."; | ||||||
|     installed = mkOpt (types.listOf types.package) [pkgs.fish] "List of shell packages to install"; |     installed = mkOpt (types.listOf types.package) [ pkgs.fish ] "List of shell packages to install"; | ||||||
|     default = mkOpt types.str "fish" "Set a custom shell as the default for all users."; |     default = mkOpt types.str "fish" "Set a custom shell as the default for all users."; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,8 +5,14 @@ | ||||||
|   config, |   config, | ||||||
|   inputs, |   inputs, | ||||||
|   ... |   ... | ||||||
| }: let | }: | ||||||
|   inherit (lib) types mkEnableOption mkOption mkIf; | let | ||||||
|  |   inherit (lib) | ||||||
|  |     types | ||||||
|  |     mkEnableOption | ||||||
|  |     mkOption | ||||||
|  |     mkIf | ||||||
|  |     ; | ||||||
|   inherit (self) namespace; |   inherit (self) namespace; | ||||||
|   inherit (self.lib) dirToModuleList; |   inherit (self.lib) dirToModuleList; | ||||||
| 
 | 
 | ||||||
|  | @ -19,25 +25,38 @@ | ||||||
|       enable = mkEnableOption "this user."; |       enable = mkEnableOption "this user."; | ||||||
|       isNormalUser = self.lib.mkBool true "Whether this user is considered a normal user."; |       isNormalUser = self.lib.mkBool true "Whether this user is considered a normal user."; | ||||||
|       isSystemUser = self.lib.mkBool false "Whether this user is considered a system user."; |       isSystemUser = self.lib.mkBool false "Whether this user is considered a system user."; | ||||||
|       initialPassword = self.lib.mkOpt (types.nullOr types.str) null "Plaintext insecure initial user password, only recommended for testing."; |       initialPassword = | ||||||
|       password = self.lib.mkOpt (types.nullOr types.str) null "Plaintext insecure user password, only recommended for testing."; |         self.lib.mkOpt (types.nullOr types.str) null | ||||||
|       hashedPasswordFile = self.lib.mkOpt (types.nullOr types.str) null "Secure, hashed user password stored in a separate file, recommended for production."; |           "Plaintext insecure initial user password, only recommended for testing."; | ||||||
|       hashedPassword = self.lib.mkOpt (types.nullOr types.str) null "Secure, hashed password, stored in plaintext, fine to use."; |       password = | ||||||
|       extraGroups = self.lib.mkOpt (types.listOf types.str) [] "List of additional groups this user belongs to."; |         self.lib.mkOpt (types.nullOr types.str) null | ||||||
|  |           "Plaintext insecure user password, only recommended for testing."; | ||||||
|  |       hashedPasswordFile = | ||||||
|  |         self.lib.mkOpt (types.nullOr types.str) null | ||||||
|  |           "Secure, hashed user password stored in a separate file, recommended for production."; | ||||||
|  |       hashedPassword = | ||||||
|  |         self.lib.mkOpt (types.nullOr types.str) null | ||||||
|  |           "Secure, hashed password, stored in plaintext, fine to use."; | ||||||
|  |       extraGroups = | ||||||
|  |         self.lib.mkOpt (types.listOf types.str) [ ] | ||||||
|  |           "List of additional groups this user belongs to."; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   getHomeConfigPath = username: "${self.outPath}/homes/${system}/${username}"; |   getHomeConfigPath = username: "${self.outPath}/homes/${system}/${username}"; | ||||||
|   homeConfigExists = username: let |   homeConfigExists = | ||||||
|  |     username: | ||||||
|  |     let | ||||||
|       path = getHomeConfigPath username; |       path = getHomeConfigPath username; | ||||||
|     in |     in | ||||||
|     builtins.pathExists "${path}/default.nix"; |     builtins.pathExists "${path}/default.nix"; | ||||||
| 
 | 
 | ||||||
|   homeModules = dirToModuleList "${self.outPath}/modules/home"; |   homeModules = dirToModuleList "${self.outPath}/modules/home"; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   options.${namespace}.users = mkOption { |   options.${namespace}.users = mkOption { | ||||||
|     type = types.attrsOf userSubmodule; |     type = types.attrsOf userSubmodule; | ||||||
|     default = {}; |     default = { }; | ||||||
|     description = "List of users to create. Also handles home configurations, placed in self.outPath/homes/[x86_64-linux, aarch64-linux, etc...], through home-manager."; |     description = "List of users to create. Also handles home configurations, placed in self.outPath/homes/[x86_64-linux, aarch64-linux, etc...], through home-manager."; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  | @ -47,12 +66,21 @@ in { | ||||||
| 
 | 
 | ||||||
|     # Manage users declaratively and map userConfig to users.users by name; |     # Manage users declaratively and map userConfig to users.users by name; | ||||||
|     users.mutableUsers = false; |     users.mutableUsers = false; | ||||||
|     users.users = lib.mapAttrs (username: userConfig: |     users.users = lib.mapAttrs ( | ||||||
|  |       username: userConfig: | ||||||
|       mkIf userConfig.enable { |       mkIf userConfig.enable { | ||||||
|         name = username; |         name = username; | ||||||
|         inherit (userConfig) isNormalUser isSystemUser initialPassword hashedPasswordFile hashedPassword password extraGroups; |         inherit (userConfig) | ||||||
|       }) |           isNormalUser | ||||||
|     cfg; |           isSystemUser | ||||||
|  |           initialPassword | ||||||
|  |           hashedPasswordFile | ||||||
|  |           hashedPassword | ||||||
|  |           password | ||||||
|  |           extraGroups | ||||||
|  |           ; | ||||||
|  |       } | ||||||
|  |     ) cfg; | ||||||
| 
 | 
 | ||||||
|     home-manager = { |     home-manager = { | ||||||
|       useGlobalPkgs = true; |       useGlobalPkgs = true; | ||||||
|  | @ -63,11 +91,11 @@ in { | ||||||
|         namespace = self.namespace; |         namespace = self.namespace; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       users = |       users = lib.mapAttrs ( | ||||||
|         lib.mapAttrs ( |  | ||||||
|         username: userConfig: |         username: userConfig: | ||||||
|         mkIf (userConfig.enable && homeConfigExists username) ( |         mkIf (userConfig.enable && homeConfigExists username) ( | ||||||
|               {osConfig, ...}: { |           { osConfig, ... }: | ||||||
|  |           { | ||||||
|             # Import user home configuration and general home modules |             # Import user home configuration and general home modules | ||||||
|             imports = [ |             imports = [ | ||||||
|               (getHomeConfigPath username) |               (getHomeConfigPath username) | ||||||
|  | @ -80,8 +108,7 @@ in { | ||||||
|             home.stateVersion = lib.mkDefault osConfig.system.stateVersion; |             home.stateVersion = lib.mkDefault osConfig.system.stateVersion; | ||||||
|           } |           } | ||||||
|         ) |         ) | ||||||
|         ) |       ) cfg; | ||||||
|         cfg; |  | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,10 +1,11 @@ | ||||||
| {pkgs, ...}: { | { pkgs, ... }: | ||||||
|  | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     ./hardware.nix |     ./hardware.nix | ||||||
|   ]; |   ]; | ||||||
| 
 | 
 | ||||||
|   # Setup Sops |   # Setup Sops | ||||||
|   sops.age.sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"]; |   sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; | ||||||
|   sops.age.keyFile = "/var/lib/sops-nix/key.txt"; |   sops.age.keyFile = "/var/lib/sops-nix/key.txt"; | ||||||
|   sops.age.generateKey = true; |   sops.age.generateKey = true; | ||||||
| 
 | 
 | ||||||
|  | @ -12,7 +13,10 @@ | ||||||
|     users.cyn = { |     users.cyn = { | ||||||
|       enable = true; |       enable = true; | ||||||
|       hashedPassword = "$6$mvK9bT756Aok54Vt$vBRnT66Vb3HL0Y5rEMJlHvKkvzVQ.KUciInTmW3FCBFT00IuFMpz3q9RhXPLTLMRPho65bTg9hMnFPb84I774."; |       hashedPassword = "$6$mvK9bT756Aok54Vt$vBRnT66Vb3HL0Y5rEMJlHvKkvzVQ.KUciInTmW3FCBFT00IuFMpz3q9RhXPLTLMRPho65bTg9hMnFPb84I774."; | ||||||
|       extraGroups = ["wheel" "docker"]; |       extraGroups = [ | ||||||
|  |         "wheel" | ||||||
|  |         "docker" | ||||||
|  |       ]; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     archetypes.server.enable = true; |     archetypes.server.enable = true; | ||||||
|  |  | ||||||
|  | @ -6,26 +6,36 @@ | ||||||
|   lib, |   lib, | ||||||
|   modulesPath, |   modulesPath, | ||||||
|   ... |   ... | ||||||
| }: { | }: | ||||||
|  | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     (modulesPath + "/installer/scan/not-detected.nix") |     (modulesPath + "/installer/scan/not-detected.nix") | ||||||
|   ]; |   ]; | ||||||
| 
 | 
 | ||||||
|   boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "uas" "sd_mod"]; |   boot.initrd.availableKernelModules = [ | ||||||
|   boot.initrd.kernelModules = []; |     "xhci_pci" | ||||||
|   boot.kernelModules = ["kvm-intel"]; |     "ahci" | ||||||
|   boot.extraModulePackages = []; |     "usbhid" | ||||||
|  |     "uas" | ||||||
|  |     "sd_mod" | ||||||
|  |   ]; | ||||||
|  |   boot.initrd.kernelModules = [ ]; | ||||||
|  |   boot.kernelModules = [ "kvm-intel" ]; | ||||||
|  |   boot.extraModulePackages = [ ]; | ||||||
| 
 | 
 | ||||||
|   fileSystems."/" = { |   fileSystems."/" = { | ||||||
|     device = "/dev/disk/by-uuid/5d4f9f57-085f-44a0-b987-bad24ff58769"; |     device = "/dev/disk/by-uuid/5d4f9f57-085f-44a0-b987-bad24ff58769"; | ||||||
|     fsType = "btrfs"; |     fsType = "btrfs"; | ||||||
|     options = ["subvol=@"]; |     options = [ "subvol=@" ]; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   fileSystems."/boot" = { |   fileSystems."/boot" = { | ||||||
|     device = "/dev/disk/by-uuid/8D0F-2821"; |     device = "/dev/disk/by-uuid/8D0F-2821"; | ||||||
|     fsType = "vfat"; |     fsType = "vfat"; | ||||||
|     options = ["fmask=0077" "dmask=0077"]; |     options = [ | ||||||
|  |       "fmask=0077" | ||||||
|  |       "dmask=0077" | ||||||
|  |     ]; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   fileSystems."/mnt/storage" = { |   fileSystems."/mnt/storage" = { | ||||||
|  | @ -34,7 +44,7 @@ | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   swapDevices = [ |   swapDevices = [ | ||||||
|     {device = "/dev/disk/by-uuid/42fc926f-f066-48e8-8c07-3627b2ba3cd4";} |     { device = "/dev/disk/by-uuid/42fc926f-f066-48e8-8c07-3627b2ba3cd4"; } | ||||||
|   ]; |   ]; | ||||||
| 
 | 
 | ||||||
|   # Enables DHCP on each ethernet and wireless interface. In case of scripted networking |   # Enables DHCP on each ethernet and wireless interface. In case of scripted networking | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| {pkgs, ...}: { | { pkgs, ... }: | ||||||
|  | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     ./hardware.nix |     ./hardware.nix | ||||||
|   ]; |   ]; | ||||||
|  | @ -12,7 +13,7 @@ | ||||||
|     users.jo = { |     users.jo = { | ||||||
|       enable = true; |       enable = true; | ||||||
|       hashedPassword = "$6$mvK9bT756Aok54Vt$vBRnT66Vb3HL0Y5rEMJlHvKkvzVQ.KUciInTmW3FCBFT00IuFMpz3q9RhXPLTLMRPho65bTg9hMnFPb84I774."; |       hashedPassword = "$6$mvK9bT756Aok54Vt$vBRnT66Vb3HL0Y5rEMJlHvKkvzVQ.KUciInTmW3FCBFT00IuFMpz3q9RhXPLTLMRPho65bTg9hMnFPb84I774."; | ||||||
|       extraGroups = ["wheel"]; |       extraGroups = [ "wheel" ]; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     archetypes.laptop.enable = true; |     archetypes.laptop.enable = true; | ||||||
|  |  | ||||||
|  | @ -1,30 +1,45 @@ | ||||||
| # Do not modify this file!  It was generated by ‘nixos-generate-config’ | # Do not modify this file!  It was generated by ‘nixos-generate-config’ | ||||||
| # and may be overwritten by future invocations.  Please make changes | # and may be overwritten by future invocations.  Please make changes | ||||||
| # to /etc/nixos/configuration.nix instead. | # to /etc/nixos/configuration.nix instead. | ||||||
| { config, lib, modulesPath, ... }: | { | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   modulesPath, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   imports = |   imports = [ | ||||||
|     [ (modulesPath + "/installer/scan/not-detected.nix") |     (modulesPath + "/installer/scan/not-detected.nix") | ||||||
|   ]; |   ]; | ||||||
| 
 | 
 | ||||||
|   boot.initrd.availableKernelModules = [ "xhci_pci" "vmd" "nvme" "usbhid" "rtsx_pci_sdmmc" ]; |   boot.initrd.availableKernelModules = [ | ||||||
|  |     "xhci_pci" | ||||||
|  |     "vmd" | ||||||
|  |     "nvme" | ||||||
|  |     "usbhid" | ||||||
|  |     "rtsx_pci_sdmmc" | ||||||
|  |   ]; | ||||||
|   boot.initrd.kernelModules = [ ]; |   boot.initrd.kernelModules = [ ]; | ||||||
|   boot.kernelModules = [ "kvm-intel" ]; |   boot.kernelModules = [ "kvm-intel" ]; | ||||||
|   boot.extraModulePackages = [ ]; |   boot.extraModulePackages = [ ]; | ||||||
| 
 | 
 | ||||||
|   fileSystems."/" = |   fileSystems."/" = { | ||||||
|     { device = "/dev/disk/by-uuid/864b1287-89fd-4cc0-98a5-40a3caf804c6"; |     device = "/dev/disk/by-uuid/864b1287-89fd-4cc0-98a5-40a3caf804c6"; | ||||||
|     fsType = "btrfs"; |     fsType = "btrfs"; | ||||||
|     options = [ "subvol=@" ]; |     options = [ "subvol=@" ]; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   boot.initrd.luks.devices."luks-5fd4fc76-d5c5-46c3-b952-1a7a7ff3a1fc".device = "/dev/disk/by-uuid/5fd4fc76-d5c5-46c3-b952-1a7a7ff3a1fc"; |   boot.initrd.luks.devices."luks-5fd4fc76-d5c5-46c3-b952-1a7a7ff3a1fc".device = | ||||||
|  |     "/dev/disk/by-uuid/5fd4fc76-d5c5-46c3-b952-1a7a7ff3a1fc"; | ||||||
| 
 | 
 | ||||||
|   fileSystems."/boot" = |   fileSystems."/boot" = { | ||||||
|     { device = "/dev/disk/by-uuid/2429-4141"; |     device = "/dev/disk/by-uuid/2429-4141"; | ||||||
|     fsType = "vfat"; |     fsType = "vfat"; | ||||||
|       options = [ "fmask=0022" "dmask=0022" ]; |     options = [ | ||||||
|  |       "fmask=0022" | ||||||
|  |       "dmask=0022" | ||||||
|  |     ]; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   swapDevices = [ ]; |   swapDevices = [ ]; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue