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,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