49 lines
1.8 KiB
Nix
49 lines
1.8 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
let
|
|
cfg = config.gnome.extensions;
|
|
in
|
|
{
|
|
options.gnome.extensions = with lib.types; {
|
|
paperwm = {
|
|
enable = lib.mkEnableOption { };
|
|
package = lib.mkOption {
|
|
type = package;
|
|
default = pkgs.gnomeExtensions.paperwm;
|
|
};
|
|
cycle-height-steps = lib.mkOption { type = listOf numbers.nonnegative; default = [ 0.33 0.5 0.67 1.0 ]; };
|
|
cycle-width-steps = lib.mkOption { type = listOf numbers.nonnegative; default = [ 0.33 0.5 0.67 1.0 ]; };
|
|
horizontal-margin = lib.mkOption { type = ints.unsigned; default = 5; };
|
|
vertical-margin = lib.mkOption { type = ints.unsigned; default = 5; };
|
|
window-gap = lib.mkOption { type = ints.unsigned; default = 5; };
|
|
winprops = lib.mkOption {
|
|
type = listOf (submodule {
|
|
options = {
|
|
wm_class = lib.mkOption { type = str; default = ""; };
|
|
title = lib.mkOption { type = str; default = ""; };
|
|
scratch_layer = lib.mkEnableOption { };
|
|
preferredWidth = lib.mkOption { type = nullOr str; default = null; };
|
|
};
|
|
});
|
|
default = [ ];
|
|
};
|
|
keybindings = lib.mkOption {
|
|
type = attrsOf (listOf str);
|
|
default = { };
|
|
};
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.paperwm.enable {
|
|
home.packages = [ cfg.paperwm.package ];
|
|
dconf.settings = {
|
|
"org/gnome/shell".enabled-extensions =
|
|
lib.mkIf cfg.paperwm.enable [ cfg.paperwm.package.extensionUuid ];
|
|
"org/gnome/shell/extensions/paperwm" = with cfg.paperwm; lib.mkIf cfg.paperwm.enable {
|
|
inherit cycle-height-steps cycle-width-steps horizontal-margin vertical-margin window-gap;
|
|
winprops = map (props: builtins.toJSON props) winprops;
|
|
};
|
|
"org/gnome/shell/extensions/paperwm/keybindings" = lib.mkIf cfg.paperwm.enable cfg.paperwm.keybindings;
|
|
};
|
|
};
|
|
}
|