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}