nixos/modules/DE/dwm.nix
2024-08-03 21:00:07 -04:00

145 lines
3.8 KiB
Nix

{
pkgs,
config,
lib,
suckless,
self',
}:
{
options.local.DE.dwm.enable = lib.mkEnableOption "";
config = lib.mkIf config.local.DE.dwm.enable {
systemd.user.services = {
sxhkd = {
serviceConfig = {
ExecStart = "${lib.getExe pkgs.sxhkd} -c /etc/sxhkd/sxhkdrc";
Restart = "always";
RestartSec = 2;
ExecReload = "pkill -usr1 -x $MAINPID";
};
};
picom = {
serviceConfig = {
ExecStart = "${lib.getExe pkgs.picom} --backend glx";
Restart = "always";
RestartSec = 2;
ExecReload = "pkill -usr1 -x $MAINPID";
};
};
};
services.gvfs.enable = true;
services.displayManager.defaultSession = "none+dwm";
services.xserver = {
enable = true;
displayManager = {
sessionCommands = ''
feh --bg-center "${self'.packages.images}/recursion.png"
numlockx
systemctl --user start sxhkd
systemctl --user start picom
'';
};
windowManager.session = [
{
name = "dwm";
start = ''
update_time () {
while :
do
sleep 1
xsetroot -name "$(date +"%I:%M %p")"
done
}
dont_stop() {
while type dwm >/dev/null ; do dwm && continue || break ; done
}
update_time &
dont_stop &
waitPID=$!
'';
}
];
};
environment = {
systemPackages = builtins.attrValues {
inherit (suckless.packages) dmenu dwm;
st =
let
st = pkgs.writeShellScript "st" ''
ARGS="''${@:1}"
exec ${lib.getExe suckless.packages.st} "''${ARGS:-tmux}"
'';
in
pkgs.symlinkJoin {
name = "st";
paths = [ suckless.packages.st ];
nativeBuildInputs = [ pkgs.makeBinaryWrapper ];
postBuild = ''
unlink "$out/bin/st"
ln -s "${st}" "$out/bin/st"
'';
};
inherit (pkgs)
maim
playerctl
xclip
feh
numlockx
picom
sxhkd
xscreensaver
;
xsecurelock = pkgs.writeShellScriptBin "xsecurelock" ''
export XSECURELOCK_BLANK_TIMEOUT="30"
export XSECURELOCK_AUTH_TIMEOUT="30"
export XSECURELOCK_BLANK_DPMS_STATE="off"
export XSECURELOCK_BACKGROUND_COLOR="#000000"
export XSECURELOCK_AUTH_BACKGROUND_COLOR="#080808"
export XSECURELOCK_AUTH_FOREGROUND_COLOR="#bdbdbd"
export XSECURELOCK_FONT="Overpass"
export XSECURELOCK_SHOW_DATETIME="1"
${lib.getExe pkgs.xsecurelock}
'';
};
etc = {
"sxhkd/sxhkdrc".text = ''
XF86AudioPlay
playerctl play-pause
XF86AudioPause
playerctl play-pause
XF86AudioStop
playerctl stop
XF86AudioNext
playerctl next
XF86AudioPrev
playerctl previous
XF86AudioRaiseVolume
wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+
XF86AudioLowerVolume
wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-
XF86AudioMute
wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
Print
maim $HOME/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
Print + shift
maim | xclip -selection clipboard -t image/png
super + Print
maim -s $HOME/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
super + Print + shift
maim -s | xclip -selection clipboard -t image/png
super + ctrl + r
pkill -usr1 -x sxhkd
super + ctrl + l
xsecurelock
'';
};
};
};
}