forked from jan-leila/nix-config
		
	feat: simplified gnome configurations with more options
This commit is contained in:
		
							parent
							
								
									32c7086394
								
							
						
					
					
						commit
						c81fa77a29
					
				
					 3 changed files with 61 additions and 20 deletions
				
			
		|  | @ -1,5 +1,4 @@ | |||
| { | ||||
|   pkgs, | ||||
|   osConfig, | ||||
|   lib, | ||||
|   ... | ||||
|  | @ -10,9 +9,11 @@ | |||
|         colorScheme = "prefer-dark"; | ||||
|         accentColor = "slate"; | ||||
|         extraWindowControls = true; | ||||
|         extensions = [ | ||||
|           pkgs.gnomeExtensions.dash-to-panel | ||||
|         ]; | ||||
|         extensions = { | ||||
|           dash-to-panel = { | ||||
|             enable = true; | ||||
|           }; | ||||
|         }; | ||||
|       } | ||||
| 
 | ||||
|       (lib.mkIf (osConfig.networking.hostName == "horizon") { | ||||
|  |  | |||
|  | @ -1,31 +1,36 @@ | |||
| {pkgs, ...}: { | ||||
| {...}: { | ||||
|   config = { | ||||
|     gnome = { | ||||
|       extraWindowControls = true; | ||||
|       colorScheme = "prefer-dark"; | ||||
|       clockFormat = "24h"; | ||||
|       extensions = [ | ||||
|         pkgs.gnomeExtensions.dash-to-dock | ||||
|       ]; | ||||
|       extensions = { | ||||
|         dash-to-dock = { | ||||
|           enable = true; | ||||
|           options = { | ||||
|             "dock-position" = "LEFT"; | ||||
|             "intellihide-mode" = "ALL_WINDOWS"; | ||||
|             "show-trash" = false; | ||||
|             "require-pressure-to-show" = false; | ||||
|             "show-mounts" = false; | ||||
|           }; | ||||
|         }; | ||||
|       }; | ||||
|       hotkeys = { | ||||
|         "Open Terminal" = { | ||||
|           binding = "<Super>t"; | ||||
|           command = "kgx"; | ||||
|         }; | ||||
|         "Open Firefox" = { | ||||
|           binding = "<Super>f"; | ||||
|           command = "firefox"; | ||||
|         }; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|     dconf = { | ||||
|       enable = true; | ||||
|       settings = { | ||||
|         "org/gnome/shell/extensions/dash-to-dock" = { | ||||
|           "dock-position" = "LEFT"; | ||||
|           "intellihide-mode" = "ALL_WINDOWS"; | ||||
|           "show-trash" = false; | ||||
|           "require-pressure-to-show" = false; | ||||
|           "show-mounts" = false; | ||||
|         }; | ||||
| 
 | ||||
|         "org/gnome/shell" = { | ||||
|           favorite-apps = ["org.gnome.Nautilus.desktop" "firefox.desktop" "codium.desktop" "steam.desktop" "org.gnome.Console.desktop"]; | ||||
|           # app-picker-layout = | ||||
|  |  | |||
|  | @ -1,8 +1,14 @@ | |||
| { | ||||
|   lib, | ||||
|   config, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: { | ||||
| }: let | ||||
|   enabledExtensions = | ||||
|     [] | ||||
|     ++ lib.optional config.gnome.extensions.dash-to-dock.enable pkgs.gnomeExtensions.dash-to-dock | ||||
|     ++ lib.optional config.gnome.extensions.dash-to-panel.enable pkgs.gnomeExtensions.dash-to-panel; | ||||
| in { | ||||
|   options.gnome = { | ||||
|     extraWindowControls = lib.mkEnableOption "Should we add back in the minimize and maximize window controls?"; | ||||
|     clockFormat = lib.mkOption { | ||||
|  | @ -34,7 +40,7 @@ | |||
|       ]; | ||||
|       default = "blue"; | ||||
|     }; | ||||
|     extensions = lib.mkOption { | ||||
|     extraExtensions = lib.mkOption { | ||||
|       type = lib.types.listOf lib.types.package; | ||||
|       default = []; | ||||
|       description = "The set of extensions to install and enable in the user environment."; | ||||
|  | @ -74,16 +80,36 @@ | |||
|       default = {}; | ||||
|       description = "GNOME experimental features to enable"; | ||||
|     }; | ||||
| 
 | ||||
|     extensions = { | ||||
|       dash-to-dock = { | ||||
|         enable = lib.mkEnableOption "Dash to Dock extension"; | ||||
|         options = lib.mkOption { | ||||
|           type = lib.types.nullOr lib.types.attrs; | ||||
|           default = null; | ||||
|           description = "Dash to Dock configuration options. If null, no custom configuration will be applied."; | ||||
|         }; | ||||
|       }; | ||||
| 
 | ||||
|       dash-to-panel = { | ||||
|         enable = lib.mkEnableOption "Dash to Panel extension"; | ||||
|         options = lib.mkOption { | ||||
|           type = lib.types.nullOr lib.types.attrs; | ||||
|           default = null; | ||||
|           description = "Dash to Panel configuration options. If null, no custom configuration will be applied."; | ||||
|         }; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   config = { | ||||
|     home.packages = config.gnome.extensions; | ||||
|     home.packages = config.gnome.extraExtensions ++ enabledExtensions; | ||||
|     dconf = { | ||||
|       settings = lib.mkMerge [ | ||||
|         { | ||||
|           "org/gnome/shell" = { | ||||
|             disable-user-extensions = false; # enables user extensions | ||||
|             enabled-extensions = builtins.map (extension: extension.extensionUuid) config.gnome.extensions; | ||||
|             enabled-extensions = builtins.map (extension: extension.extensionUuid) config.gnome.extraExtensions; | ||||
|           }; | ||||
| 
 | ||||
|           "org/gnome/desktop/wm/preferences".button-layout = lib.mkIf config.gnome.extraWindowControls ":minimize,maximize,close"; | ||||
|  | @ -119,6 +145,15 @@ | |||
|             ) | ||||
|           ) | ||||
|         ) | ||||
| 
 | ||||
|         # Extension configurations | ||||
|         (lib.mkIf (config.gnome.extensions.dash-to-dock.enable && config.gnome.extensions.dash-to-dock.options != null) { | ||||
|           "org/gnome/shell/extensions/dash-to-dock" = config.gnome.extensions.dash-to-dock.options; | ||||
|         }) | ||||
| 
 | ||||
|         (lib.mkIf (config.gnome.extensions.dash-to-panel.enable && config.gnome.extensions.dash-to-panel.options != null) { | ||||
|           "org/gnome/shell/extensions/dash-to-panel" = config.gnome.extensions.dash-to-panel.options; | ||||
|         }) | ||||
|       ]; | ||||
|     }; | ||||
|   }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue