{ config, pkgs, lib, ... }: { nixpkgs.overlays = [ (final: prev: { st = prev.st.override { conf = pkgs.substituteAll { src = ./dwm/; env = { }; }; }; }) ]; services.xserver.windowManager.dwm = { enable = true; package = let launch_emacs = pkgs.writeScript "emacsclient-or-start" '' #!${pkgs.bash}/bin/bash emacsclient --create-frame --alternate-editor="" ''; in pkgs.dwm.override { conf = pkgs.substituteAll { src = ./dwm/config.h; env = { dmenucmd="${pkgs.dmenu}/bin/dmenu_run"; termcmd="${pkgs.st}/bin/st"; editcmd="${launch_emacs}"; playcmd=pkgs.writeScript "playerctl-play-pause" '' #!${pkgs.bash}/bin/bash ${pkgs.playerctl}/bin/playerctl play-pause ''; scrncmd=pkgs.writeScript "screenshot-region" '' #!${pkgs.bash}/bin/bash ${pkgs.slurp}/bin/slurp | ${pkgs.grim}/bin/grim -g - - | ${pkgs.wl-clipboard}/bin/wl-copy ''; }; }; patches = [ ./dwm/fullscreen.patch ]; }; }; services.xserver.enable = true; services.xserver.displayManager.lightdm = { enable = true; }; environment.sessionVariables = { GTK_THEME="Adwaita-dark"; }; environment.systemPackages = with pkgs; [ dmenu xclip pwvucontrol ]; }