nix-config/home/wm/default.nix
Bruno BELANYI b587323095 home: migrate 'cursor' module to new option
Make it part of 'home.wm' now, since that makes more sense.

Not sure about making it related to 'i3' being activated though, will
need to think about this in the future.
2022-06-15 11:27:03 +02:00

93 lines
2.2 KiB
Nix

{ config, lib, pkgs, ... }:
let
mkRelatedOption = description: relatedWMs:
let
isActivatedWm = wm: config.my.home.wm.windowManager == wm;
in
(lib.mkEnableOption description) // {
default = builtins.any isActivatedWm relatedWMs;
};
in
{
imports = [
./cursor
./dunst
./i3
./i3bar
./rofi
./screen-lock
];
options.my.home.wm = with lib; {
windowManager = mkOption {
type = with types; nullOr (enum [ "i3" ]);
default = null;
example = "i3";
description = "Which window manager to use for home session";
};
cursor = {
enable = mkRelatedOption "dunst configuration" [ "i3" ];
};
dunst = {
enable = mkRelatedOption "dunst configuration" [ "i3" ];
};
i3bar = {
enable = mkRelatedOption "i3bar configuration" [ "i3" ];
};
rofi = {
enable = mkRelatedOption "rofi menu" [ "i3" ];
};
screen-lock = {
enable = mkRelatedOption "automatic X screen locker" [ "i3" ];
command = mkOption {
type = types.str;
default = "${pkgs.i3lock}/bin/i3lock -n -c 000000";
example = "\${pkgs.i3lock}/bin/i3lock -n -i lock.png";
description = "Locker command to run";
};
cornerLock = {
enable = my.mkDisableOption ''
Move mouse to upper-left corner to lock instantly, lower-right corner to
disable auto-lock.
'';
delay = mkOption {
type = types.int;
default = 5;
example = 15;
description = "How many seconds before locking this way";
};
};
notify = {
enable = my.mkDisableOption "Notify when about to lock the screen";
delay = mkOption {
type = types.int;
default = 5;
example = 15;
description = ''
How many seconds in advance should there be a notification.
This value must be at lesser than or equal to `cornerLock.delay`
when both options are enabled.
'';
};
};
timeout = mkOption {
type = types.ints.between 1 60;
default = 15;
example = 1;
description = "Inactive time interval to lock the screen automatically";
};
};
};
}