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