mirror of
				https://github.com/Jokiller230/puzzlevision.git
				synced 2025-10-31 13:50:04 +00:00 
			
		
		
		
	✨ Add tons of missing system, desktop and home modules
This commit is contained in:
		
							parent
							
								
									01367c4222
								
							
						
					
					
						commit
						fa3bbb2f6f
					
				
					 15 changed files with 453 additions and 7 deletions
				
			
		
							
								
								
									
										73
									
								
								modules/home/app/zed/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								modules/home/app/zed/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,73 @@ | ||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   self, | ||||||
|  |   config, | ||||||
|  |   osConfig, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib) mkEnableOption mkIf; | ||||||
|  |   inherit (self) namespace; | ||||||
|  | 
 | ||||||
|  |   cfg = config.${namespace}.apps.zed; | ||||||
|  | in { | ||||||
|  |   options.${namespace}.apps.zed = { | ||||||
|  |     enable = mkEnableOption "zed, the graphical editor from the future"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     sops.secrets.wakatime-cfg = { | ||||||
|  |       format = "binary"; | ||||||
|  |       sopsFile = "${self.outPath}/${osConfig.networking.hostname}/secrets/wakatime.cfg"; | ||||||
|  |       path = "/home/${config.home.homeDirectory}/.wakatime.cfg"; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     home.packages = with pkgs; [ | ||||||
|  |       alejandra | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     programs.zed-editor = { | ||||||
|  |       enable = true; | ||||||
|  |       extensions = ["nix" "catppuccin" "wakatime" "discord_presence" "deno"]; | ||||||
|  | 
 | ||||||
|  |       userSettings = { | ||||||
|  |         icon_theme = "Catppuccin Macchiato"; | ||||||
|  |         theme = { | ||||||
|  |           dark = "Catppuccin Macchiato (blue)"; | ||||||
|  |           light = "Catppuccin Macchiato (blue)"; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         ### Disable telemetry | ||||||
|  |         telemetry = { | ||||||
|  |           metrics = false; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         ### Disable certain AI features | ||||||
|  |         features = { | ||||||
|  |           copilot = false; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         ### Language specific configurations | ||||||
|  |         languages = { | ||||||
|  |           ### Nix language | ||||||
|  |           Nix = { | ||||||
|  |             language_servers = ["nixd" "!nil"]; | ||||||
|  |           }; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         ### LSP configurations | ||||||
|  |         lsp = { | ||||||
|  |           nixd = { | ||||||
|  |             initialization_options = { | ||||||
|  |               formatting = { | ||||||
|  |                 command = ["alejandra" "--quiet" "--"]; | ||||||
|  |               }; | ||||||
|  |             }; | ||||||
|  |           }; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       extraPackages = with pkgs; [nixd]; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | @ -1,2 +0,0 @@ | ||||||
| {...}: { |  | ||||||
| } |  | ||||||
							
								
								
									
										91
									
								
								modules/home/desktop/gnome/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								modules/home/desktop/gnome/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,91 @@ | ||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   self, | ||||||
|  |   config, | ||||||
|  |   osConfig, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib) mkIf mkOption; | ||||||
|  |   inherit (self) namespace; | ||||||
|  |   inherit (self.lib) mkOpt; | ||||||
|  | 
 | ||||||
|  |   cfg = config.${namespace}.desktop.gnome; | ||||||
|  | in { | ||||||
|  |   options.${namespace}.desktop.gnome = with lib.types; { | ||||||
|  |     enabled-extensions = mkOption { | ||||||
|  |       type = listOf package; | ||||||
|  |       default = with pkgs.gnomeExtensions; [user-themes blur-my-shell appindicator unite color-picker clipboard-history]; | ||||||
|  |       example = [dash-to-dock blur-my-shell]; | ||||||
|  |       description = "Specify gnome extensions to install."; | ||||||
|  |     }; | ||||||
|  |     favorite-apps = mkOption { | ||||||
|  |       type = listOf str; | ||||||
|  |       default = ["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)."; | ||||||
|  |     }; | ||||||
|  |     extensions = { | ||||||
|  |       unite = { | ||||||
|  |         show-window-buttons = mkOption { | ||||||
|  |           type = str; | ||||||
|  |           default = "never"; | ||||||
|  |           example = "never | maximized | tiled | both | always"; | ||||||
|  |           description = "Specify when Unite should display window buttons within the top panel."; | ||||||
|  |         }; | ||||||
|  |         hide-window-titlebars = mkOption { | ||||||
|  |           type = str; | ||||||
|  |           default = "maximized"; | ||||||
|  |           example = "never | maximized | tiled | both | always"; | ||||||
|  |           description = "Specify when Unite should hide window titlebars."; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  |       blur-my-shell = { | ||||||
|  |         enable-blur = mkOpt bool false "Whether to enable blur-my-shell application blur."; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |     wallpaper = mkOpt str (builtins.toString ../wallpapers/mountain_tower_sunset.jpg) "Specify the path of your prefered Gnome wallpaper."; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf osConfig.${namespace}.desktop.gnome.enable { | ||||||
|  |     home.packages = cfg.enabled-extensions; | ||||||
|  | 
 | ||||||
|  |     dconf.settings = { | ||||||
|  |       "org/gnome/shell" = { | ||||||
|  |         favorite-apps = cfg.favorite-apps; | ||||||
|  |         enabled-extensions = lib.forEach cfg.enabled-extensions (x: x.extensionUuid); | ||||||
|  |         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) { | ||||||
|  |         show-window-buttons = cfg.extensions.unite.show-window-buttons; | ||||||
|  |         hide-window-titlebars = cfg.extensions.unite.hide-window-titlebars; | ||||||
|  | 
 | ||||||
|  |         use-activities-text = false; | ||||||
|  |         extend-left-box = false; | ||||||
|  |         reduce-panel-spacing = false; | ||||||
|  |         show-legacy-tray = false; | ||||||
|  |         show-appmenu-button = false; | ||||||
|  |         show-desktop-name = false; | ||||||
|  |         enable-titlebar-actions = false; | ||||||
|  |         restrict-to-primary-screen = false; | ||||||
|  |         hide-activities-button = "never"; | ||||||
|  |         autofocus-windows = true; | ||||||
|  |         notifications-position = "right"; | ||||||
|  |       }; | ||||||
|  |       "org/gnome/shell/extensions/blur-my-shell/applications" = mkIf cfg.extensions.blur-my-shell.enable-blur { | ||||||
|  |         blur = true; | ||||||
|  |         sigma = 30; | ||||||
|  |         opacity = 230; | ||||||
|  |         enable-all = true; | ||||||
|  |         dynamic-opacity = false; | ||||||
|  |       }; | ||||||
|  |       "org/gnome/desktop/background" = { | ||||||
|  |         picture-uri = cfg.wallpaper; | ||||||
|  |         picture-uri-dark = cfg.wallpaper; | ||||||
|  |       }; | ||||||
|  |       "org/gnome/desktop/interface" = { | ||||||
|  |         color-scheme = "prefer-dark"; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 186 KiB | 
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.8 MiB | 
							
								
								
									
										24
									
								
								modules/nixos/archetypes/laptop/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								modules/nixos/archetypes/laptop/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | ||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   self, | ||||||
|  |   config, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib) mkEnableOption mkIf; | ||||||
|  |   inherit (self) namespace; | ||||||
|  | 
 | ||||||
|  |   cfg = config.${namespace}.archetypes.laptop; | ||||||
|  | in { | ||||||
|  |   options.${namespace}.archetypes.laptop = { | ||||||
|  |     enable = mkEnableOption "the laptop archetype."; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     ${namespace} = { | ||||||
|  |       # Inherit from workstation archetype | ||||||
|  |       archetypes.workstation.enable = true; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     hardware.sensor.iio.enable = true; # Enable iio-sensor for automatic screen rotation and similar features. | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | @ -16,9 +16,20 @@ in { | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     ${namespace} = { |     ${namespace} = { | ||||||
|       # Basic system functionality |       # Basic system functionality | ||||||
|       system.grub.enable = true; |       system = { | ||||||
|       system.networking.enable = true; |         networking.enable = true; | ||||||
|       system.kernel.enable = true; |         grub.enable = true; | ||||||
|  |         shell.enable = true; | ||||||
|  |         locale.enable = true; | ||||||
|  |         fonts.enable = true; | ||||||
|  |         bluetooth.enable = true; | ||||||
|  |         audio.enable = true; | ||||||
|  |         kernel.enable = true; | ||||||
|  |         nix = { | ||||||
|  |           enable = true; | ||||||
|  |           use-lix = true; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
| 
 | 
 | ||||||
|       # Services |       # Services | ||||||
|       services.docker.enable = true; |       services.docker.enable = true; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,8 @@ | ||||||
| { | { | ||||||
|   lib, |   lib, | ||||||
|   config, |   pkgs, | ||||||
|   self, |   self, | ||||||
|  |   config, | ||||||
|   ... |   ... | ||||||
| }: let | }: let | ||||||
|   inherit (lib) mkEnableOption mkIf; |   inherit (lib) mkEnableOption mkIf; | ||||||
|  | @ -17,5 +18,29 @@ in { | ||||||
|     services.xserver.enable = true; |     services.xserver.enable = true; | ||||||
|     services.xserver.displayManager.gdm.enable = true; |     services.xserver.displayManager.gdm.enable = true; | ||||||
|     services.xserver.desktopManager.gnome.enable = true; |     services.xserver.desktopManager.gnome.enable = true; | ||||||
|  | 
 | ||||||
|  |     environment.gnome.excludePackages = with pkgs; [ | ||||||
|  |       gnome-tour | ||||||
|  |       gedit | ||||||
|  |       cheese | ||||||
|  |       geary | ||||||
|  |       yelp # Help view | ||||||
|  |       epiphany # Gnome web | ||||||
|  |       gnome-console | ||||||
|  |       gnome-terminal | ||||||
|  |       gnome-music | ||||||
|  |       hitori # Sudoku game | ||||||
|  |       gnome-contacts | ||||||
|  |       gnome-initial-setup | ||||||
|  |       gnome-system-monitor | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     programs.dconf.enable = true; | ||||||
|  |     services.gnome.gnome-keyring.enable = true; | ||||||
|  | 
 | ||||||
|  |     environment.systemPackages = with pkgs; [ | ||||||
|  |       gnome-tweaks | ||||||
|  |       resources | ||||||
|  |     ]; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										27
									
								
								modules/nixos/system/audio/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								modules/nixos/system/audio/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | ||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   self, | ||||||
|  |   config, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib) mkEnableOption mkIf; | ||||||
|  |   inherit (self) namespace; | ||||||
|  | 
 | ||||||
|  |   cfg = config.${namespace}.system.audio; | ||||||
|  | in { | ||||||
|  |   options.${namespace}.system.audio = { | ||||||
|  |     enable = mkEnableOption "system audio support."; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     services.pulseaudio.enable = false; | ||||||
|  | 
 | ||||||
|  |     security.rtkit.enable = true; | ||||||
|  |     services.pipewire = { | ||||||
|  |       enable = true; | ||||||
|  |       alsa.enable = true; | ||||||
|  |       alsa.support32Bit = true; | ||||||
|  |       pulse.enable = true; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										36
									
								
								modules/nixos/system/bluetooth/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								modules/nixos/system/bluetooth/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,36 @@ | ||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   self, | ||||||
|  |   config, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib) mkEnableOption mkIf; | ||||||
|  |   inherit (self) namespace; | ||||||
|  | 
 | ||||||
|  |   cfg = config.${namespace}.system.bluetooth; | ||||||
|  | in { | ||||||
|  |   options.${namespace}.system.bluetooth = { | ||||||
|  |     enable = mkEnableOption "bluetooth support."; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     environment.systemPackages = with pkgs; [bluez]; | ||||||
|  | 
 | ||||||
|  |     hardware.bluetooth = { | ||||||
|  |       enable = true; | ||||||
|  |       powerOnBoot = true; | ||||||
|  |       package = pkgs.bluez; | ||||||
|  | 
 | ||||||
|  |       settings = { | ||||||
|  |         General = { | ||||||
|  |           ControllerMode = "dual"; | ||||||
|  |           FastConnectable = "true"; | ||||||
|  |           Experimental = "true"; | ||||||
|  |           KernelExperimental = "true"; | ||||||
|  |           Disable = "Handsfree"; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										28
									
								
								modules/nixos/system/fonts/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								modules/nixos/system/fonts/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | ||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   self, | ||||||
|  |   config, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib) mkEnableOption mkIf mkOption; | ||||||
|  |   inherit (self) namespace; | ||||||
|  | 
 | ||||||
|  |   cfg = config.${namespace}.system.fonts; | ||||||
|  | in { | ||||||
|  |   options.${namespace}.system.fonts = with lib.types; { | ||||||
|  |     enable = mkEnableOption "system font management"; | ||||||
|  |     fonts = mkOption { | ||||||
|  |       type = listOf package; | ||||||
|  |       default = with pkgs; [noto-fonts noto-fonts-cjk-sans noto-fonts-cjk-serif noto-fonts-emoji nerd-fonts.bigblue-terminal nerd-fonts.zed-mono monocraft]; | ||||||
|  |       example = [noto-fonts noto-fonts-emoji]; | ||||||
|  |       description = "Install additional font packages"; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     environment.systemPackages = with pkgs; [font-manager]; | ||||||
|  | 
 | ||||||
|  |     fonts.packages = cfg.fonts; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										58
									
								
								modules/nixos/system/locale/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								modules/nixos/system/locale/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,58 @@ | ||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   self, | ||||||
|  |   config, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib) mkEnableOption mkIf mkOption; | ||||||
|  |   inherit (self) namespace; | ||||||
|  | 
 | ||||||
|  |   cfg = config.${namespace}.system.locale; | ||||||
|  | in { | ||||||
|  |   options.${namespace}.system.locale = { | ||||||
|  |     enable = mkEnableOption "system locale tweaks."; | ||||||
|  | 
 | ||||||
|  |     language = mkOption { | ||||||
|  |       type = lib.types.str; | ||||||
|  |       default = "en_US"; | ||||||
|  |       example = "en_US"; | ||||||
|  |       description = "Sets the language for most text, doesn't include monetary or measurement settings"; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     country = mkOption { | ||||||
|  |       type = lib.types.str; | ||||||
|  |       default = "de_DE"; | ||||||
|  |       example = "de_DE"; | ||||||
|  |       description = "Sets the language used for monetary or measurement settings (USD vs Euro, etc...)"; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     keymap = mkOption { | ||||||
|  |       type = lib.types.str; | ||||||
|  |       default = "de"; | ||||||
|  |       example = "de"; | ||||||
|  |       description = "Sets the keymap to be used by the system"; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     # Internationalisation properties. | ||||||
|  |     i18n.defaultLocale = "${cfg.language}.UTF-8"; | ||||||
|  |     i18n.extraLocaleSettings = { | ||||||
|  |       LC_ADDRESS = "${cfg.country}.UTF-8"; | ||||||
|  |       LC_IDENTIFICATION = "${cfg.country}.UTF-8"; | ||||||
|  |       LC_MEASUREMENT = "${cfg.country}.UTF-8"; | ||||||
|  |       LC_MONETARY = "${cfg.country}.UTF-8"; | ||||||
|  |       LC_NAME = "${cfg.country}.UTF-8"; | ||||||
|  |       LC_NUMERIC = "${cfg.country}.UTF-8"; | ||||||
|  |       LC_PAPER = "${cfg.country}.UTF-8"; | ||||||
|  |       LC_TELEPHONE = "${cfg.country}.UTF-8"; | ||||||
|  |       LC_TIME = "${cfg.country}.UTF-8"; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     # Set console keymap. | ||||||
|  |     console.keyMap = cfg.keymap; | ||||||
|  |     services.xserver = { | ||||||
|  |       xkb.layout = cfg.keymap; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										50
									
								
								modules/nixos/system/nix/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								modules/nixos/system/nix/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,50 @@ | ||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   self, | ||||||
|  |   config, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib) mkEnableOption mkIf; | ||||||
|  |   inherit (self) namespace; | ||||||
|  | 
 | ||||||
|  |   cfg = config.${namespace}.system.nix; | ||||||
|  | in { | ||||||
|  |   options.${namespace}.system.nix = { | ||||||
|  |     enable = mkEnableOption "Nix configuration overrides."; | ||||||
|  |     use-lix = mkEnableOption "Lix as an alternative to CppNix."; | ||||||
|  |     use-nixld = mkEnableOption "the use of dynamically linked executables on nix based systems."; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     nix = { | ||||||
|  |       settings = { | ||||||
|  |         auto-optimise-store = true; | ||||||
|  |         builders-use-substitutes = true; | ||||||
|  |         experimental-features = ["nix-command" "flakes"]; | ||||||
|  |         keep-derivations = true; | ||||||
|  |         keep-outputs = true; | ||||||
|  |         max-jobs = "auto"; | ||||||
|  |         warn-dirty = false; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       # Garbage collection configuration. | ||||||
|  |       gc = { | ||||||
|  |         automatic = true; | ||||||
|  |         dates = "daily"; | ||||||
|  |         options = "--delete-older-than 3d"; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       package = mkIf cfg.use-lix pkgs.lix; # Enable LIX | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     # Dynamic libraries for unpackaged programs | ||||||
|  |     programs.nix-ld = mkIf cfg.use-nixld { | ||||||
|  |       enable = true; | ||||||
|  |       libraries = with pkgs; [ | ||||||
|  |         glibc | ||||||
|  |         libcxx | ||||||
|  |       ]; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										25
									
								
								modules/nixos/system/shell/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								modules/nixos/system/shell/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | ||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   self, | ||||||
|  |   config, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib) mkEnableOption mkIf types; | ||||||
|  |   inherit (self) namespace; | ||||||
|  |   inherit (self.lib) mkOpt; | ||||||
|  | 
 | ||||||
|  |   cfg = config.${namespace}.system.shell; | ||||||
|  | in { | ||||||
|  |   options.${namespace}.system.shell = { | ||||||
|  |     enable = mkEnableOption "custom user shells."; | ||||||
|  |     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."; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     environment.shells = cfg.installed; | ||||||
|  |     users.defaultUserShell = pkgs.${cfg.shell.type}; | ||||||
|  |     programs.${cfg.shell.type}.enable = true; | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | @ -16,7 +16,7 @@ | ||||||
|       extraGroups = ["wheel"]; |       extraGroups = ["wheel"]; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     archetypes.workstation.enable = true; |     archetypes.laptop.enable = true; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   # Configure 8GB SWAP partition |   # Configure 8GB SWAP partition | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue