{ config, lib, pkgs, ... }: with lib; let cfg = config.nixfiles.modules.dwm; in { options.nixfiles.modules.dwm.enable = mkEnableOption "dwm"; config = mkIf cfg.enable { nixfiles.modules.x11.enable = true; hm.xsession = { enable = true; windowManager.command = let pkg = pkgs.dwm.override { conf = let font = with config.stylix.fonts; "${monospace.name}:size=${toString sizes.terminal}"; in '' static const unsigned int borderpx = 1; static const unsigned int snap = 32; static const int showbar = 1; static const int topbar = 1; static const char *fonts[] = { "${font}" }; static const char *colors[][3] = { [SchemeNorm] = { "${config.color.base06}", "${config.color.base01}", "${config.color.base01}", }, [SchemeSel] = { "${config.color.base01}", "${config.color.base06}", "${config.color.base06}", }, }; static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; static const Rule rules[] = { { "Emacs", NULL, NULL, 1 << 0, 0, -1 }, }; static const float mfact = 0.666; static const int nmaster = 1; static const int resizehints = 0; static const int lockfullscreen = 1; static const Layout layouts[] = { { "[]=", tile }, { "><>", NULL }, { "[M]", monocle }, }; #define MODKEY Mod4Mask #define TAGKEYS(KEY,TAG) \ { MODKEY, KEY, view, { .ui = 1 << TAG } }, \ { MODKEY|ControlMask, KEY, toggleview, { .ui = 1 << TAG } }, \ { MODKEY|ShiftMask, KEY, tag, { .ui = 1 << TAG } }, \ { MODKEY|ControlMask|ShiftMask, KEY, toggletag, { .ui = 1 << TAG } }, static char dmenumon[2] = "0"; static const char *dmenucmd[] = { "${pkgs.dmenu}/bin/dmenu_run", "-m", dmenumon, "-fn", "${font}", "-nb", "${config.color.base01}", "-nf", "${config.color.base06}", "-sb", "${config.color.base06}", "-sf", "${config.color.base01}", NULL, }; static const char *termcmd[] = { "${getExe pkgs.alacritty}", NULL, }; static const Key keys[] = { { MODKEY, XK_x, spawn, {.v = dmenucmd} }, { MODKEY, XK_Return, spawn, {.v = termcmd} }, { MODKEY, XK_b, togglebar, {0} }, { MODKEY, XK_j, focusstack, {.i = +1} }, { MODKEY, XK_k, focusstack, {.i = -1} }, { MODKEY|ShiftMask, XK_k, incnmaster, {.i = +1} }, { MODKEY|ShiftMask, XK_j, incnmaster, {.i = -1} }, { MODKEY, XK_comma, setmfact, {.f = -0.05} }, { MODKEY, XK_period, setmfact, {.f = +0.05} }, { MODKEY, XK_p, zoom, {0} }, { MODKEY, XK_Tab, view, {0} }, { MODKEY, XK_d, killclient, {0} }, { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, { MODKEY, XK_m, setlayout, {.v = &layouts[1]} }, { MODKEY, XK_f, setlayout, {.v = &layouts[2]} }, { MODKEY, XK_o, togglefloating, {0} }, { MODKEY, XK_0, view, {.ui = ~0} }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0} }, { MODKEY, XK_h, focusmon, {.i = -1} }, { MODKEY, XK_l, focusmon, {.i = +1} }, { MODKEY|ShiftMask, XK_h, tagmon, {.i = -1} }, { MODKEY|ShiftMask, XK_l, tagmon, {.i = +1} }, TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) { MODKEY|ShiftMask, XK_q, quit, {0} }, }; static const Button buttons[] = { { ClkLtSymbol, 0, Button1, setlayout, {0} }, { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, { ClkWinTitle, 0, Button2, zoom, {0} }, { ClkStatusText, 0, Button2, spawn, {.v = termcmd} }, { ClkClientWin, MODKEY, Button1, movemouse, {0} }, { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, { ClkTagBar, 0, Button1, view, {0} }, { ClkTagBar, 0, Button3, toggleview, {0} }, { ClkTagBar, MODKEY, Button1, tag, {0} }, { ClkTagBar, MODKEY, Button3, toggletag, {0} }, }; ''; }; in getExe' pkg "dwm"; }; hm.services.dwm-status = { enable = true; # package = pkgs.dwm-status.override { # enableAlsaUtils = false; # }; order = [ "audio" "backlight" "battery" "cpu_load" "network" "time" ]; }; services.xserver.displayManager.startx.enable = true; }; }