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, |   osConfig, | ||||||
|   lib, |   lib, | ||||||
|   ... |   ... | ||||||
|  | @ -10,9 +9,11 @@ | ||||||
|         colorScheme = "prefer-dark"; |         colorScheme = "prefer-dark"; | ||||||
|         accentColor = "slate"; |         accentColor = "slate"; | ||||||
|         extraWindowControls = true; |         extraWindowControls = true; | ||||||
|         extensions = [ |         extensions = { | ||||||
|           pkgs.gnomeExtensions.dash-to-panel |           dash-to-panel = { | ||||||
|         ]; |             enable = true; | ||||||
|  |           }; | ||||||
|  |         }; | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       (lib.mkIf (osConfig.networking.hostName == "horizon") { |       (lib.mkIf (osConfig.networking.hostName == "horizon") { | ||||||
|  |  | ||||||
|  | @ -1,31 +1,36 @@ | ||||||
| {pkgs, ...}: { | {...}: { | ||||||
|   config = { |   config = { | ||||||
|     gnome = { |     gnome = { | ||||||
|       extraWindowControls = true; |       extraWindowControls = true; | ||||||
|       colorScheme = "prefer-dark"; |       colorScheme = "prefer-dark"; | ||||||
|       clockFormat = "24h"; |       clockFormat = "24h"; | ||||||
|       extensions = [ |       extensions = { | ||||||
|         pkgs.gnomeExtensions.dash-to-dock |         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 = { |       hotkeys = { | ||||||
|         "Open Terminal" = { |         "Open Terminal" = { | ||||||
|           binding = "<Super>t"; |           binding = "<Super>t"; | ||||||
|           command = "kgx"; |           command = "kgx"; | ||||||
|         }; |         }; | ||||||
|  |         "Open Firefox" = { | ||||||
|  |           binding = "<Super>f"; | ||||||
|  |           command = "firefox"; | ||||||
|  |         }; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     dconf = { |     dconf = { | ||||||
|       enable = true; |       enable = true; | ||||||
|       settings = { |       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" = { |         "org/gnome/shell" = { | ||||||
|           favorite-apps = ["org.gnome.Nautilus.desktop" "firefox.desktop" "codium.desktop" "steam.desktop" "org.gnome.Console.desktop"]; |           favorite-apps = ["org.gnome.Nautilus.desktop" "firefox.desktop" "codium.desktop" "steam.desktop" "org.gnome.Console.desktop"]; | ||||||
|           # app-picker-layout = |           # app-picker-layout = | ||||||
|  |  | ||||||
|  | @ -1,8 +1,14 @@ | ||||||
| { | { | ||||||
|   lib, |   lib, | ||||||
|   config, |   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 = { |   options.gnome = { | ||||||
|     extraWindowControls = lib.mkEnableOption "Should we add back in the minimize and maximize window controls?"; |     extraWindowControls = lib.mkEnableOption "Should we add back in the minimize and maximize window controls?"; | ||||||
|     clockFormat = lib.mkOption { |     clockFormat = lib.mkOption { | ||||||
|  | @ -34,7 +40,7 @@ | ||||||
|       ]; |       ]; | ||||||
|       default = "blue"; |       default = "blue"; | ||||||
|     }; |     }; | ||||||
|     extensions = lib.mkOption { |     extraExtensions = lib.mkOption { | ||||||
|       type = lib.types.listOf lib.types.package; |       type = lib.types.listOf lib.types.package; | ||||||
|       default = []; |       default = []; | ||||||
|       description = "The set of extensions to install and enable in the user environment."; |       description = "The set of extensions to install and enable in the user environment."; | ||||||
|  | @ -74,16 +80,36 @@ | ||||||
|       default = {}; |       default = {}; | ||||||
|       description = "GNOME experimental features to enable"; |       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 = { |   config = { | ||||||
|     home.packages = config.gnome.extensions; |     home.packages = config.gnome.extraExtensions ++ enabledExtensions; | ||||||
|     dconf = { |     dconf = { | ||||||
|       settings = lib.mkMerge [ |       settings = lib.mkMerge [ | ||||||
|         { |         { | ||||||
|           "org/gnome/shell" = { |           "org/gnome/shell" = { | ||||||
|             disable-user-extensions = false; # enables user extensions |             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"; |           "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