1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7 8with lib; 9 10let 11 12 cfg = config.services.xserver.windowManager.dwm; 13 14in 15{ 16 17 ###### interface 18 19 options = { 20 services.xserver.windowManager.dwm = { 21 enable = mkEnableOption "dwm"; 22 extraSessionCommands = mkOption { 23 default = ""; 24 type = types.lines; 25 description = '' 26 Shell commands executed just before dwm is started. 27 ''; 28 }; 29 package = mkPackageOption pkgs "dwm" { 30 example = '' 31 pkgs.dwm.overrideAttrs (oldAttrs: rec { 32 patches = [ 33 (super.fetchpatch { 34 url = "https://dwm.suckless.org/patches/steam/dwm-steam-6.2.diff"; 35 sha256 = "sha256-f3lffBjz7+0Khyn9c9orzReoLTqBb/9gVGshYARGdVc="; 36 }) 37 ]; 38 }) 39 ''; 40 }; 41 }; 42 }; 43 44 ###### implementation 45 46 config = mkIf cfg.enable { 47 48 services.xserver.windowManager.session = singleton { 49 name = "dwm"; 50 start = '' 51 ${cfg.extraSessionCommands} 52 53 export _JAVA_AWT_WM_NONREPARENTING=1 54 dwm & 55 waitPID=$! 56 ''; 57 }; 58 59 environment.systemPackages = [ cfg.package ]; 60 61 }; 62 63}