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