53 lines
1.5 KiB
Nix
53 lines
1.5 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
...
|
|
}: {
|
|
options.gnome = {
|
|
extensions = lib.mkOption {
|
|
type = lib.types.listOf lib.types.package;
|
|
default = [];
|
|
description = "The set of extensions to install and enable in the user environment.";
|
|
};
|
|
hotkeys = lib.mkOption {
|
|
type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
|
|
options = {
|
|
binding = lib.mkOption {
|
|
type = lib.types.str;
|
|
};
|
|
command = lib.mkOption {
|
|
type = lib.types.str;
|
|
};
|
|
};
|
|
}));
|
|
default = {};
|
|
};
|
|
};
|
|
|
|
config = {
|
|
home.packages = config.gnome.extensions;
|
|
dconf = {
|
|
settings = lib.mkMerge [
|
|
{
|
|
"org/gnome/shell" = {
|
|
disable-user-extensions = false; # enables user extensions
|
|
enabled-extensions = builtins.map (extension: extension.extensionUuid) config.gnome.extensions;
|
|
};
|
|
}
|
|
(
|
|
builtins.listToAttrs (
|
|
lib.lists.imap0 (
|
|
i: value: lib.attrsets.nameValuePair "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${toString i}" value
|
|
)
|
|
(lib.attrsets.mapAttrsToList (_: value: value) config.gnome.hotkeys)
|
|
)
|
|
)
|
|
# "org/gnome/settings-daemon/plugins/media-keys" = {
|
|
# custom-keybindings = [
|
|
# "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
|
|
# ];
|
|
# };
|
|
];
|
|
};
|
|
};
|
|
}
|