nixos/modules/DE/dwm.nix

100 lines
2.4 KiB
Nix

{ suckless, self, ... }:
{
pkgs,
config,
lib,
...
}:
{
options.local.DE.dwm.enable = lib.mkEnableOption "";
config = lib.mkIf config.local.DE.dwm.enable {
services.gvfs.enable = true;
services.xserver = {
enable = true;
displayManager = {
sessionCommands = ''
feh --bg-center "${self.packages.images}/recursion.png"
numlockx
picom &
sxhkd &
'';
defaultSession = "none+dwm";
};
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;
inherit (pkgs)
maim
playerctl
xclip
alsa-utils
feh
numlockx
picom
;
sxhkd = pkgs.symlinkJoin {
name = "sxhkd";
nativeBuildInputs = [ pkgs.makeBinaryWrapper ];
paths = [ pkgs.sxhkd ];
postBuild = ''
wrapProgram $out/bin/sxhkd \
--add-flags "-c /etc/sxhkd/sxhkdrc"
'';
};
};
etc."sxhkd/sxhkdrc".text = ''
XF86AudioPlay
playerctl play-pause
XF86AudioPause
playerctl play-pause
XF86AudioStop
playerctl stop
XF86AudioNext
playerctl next
XF86AudioPrev
playerctl previous
XF86AudioRaiseVolume
amixer sset Master 1%+
XF86AudioLowerVolume
amixer sset Master 1%-
XF86AudioMute
amixer sset Master 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
'';
};
};
_file = ./dwm.nix;
}