about summary refs log tree commit diff
path: root/modules/nixos/dwm.nix
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2024-03-31 21:29:27 +0300
committerAzat Bahawi <azat@bahawi.net>2024-03-31 21:29:27 +0300
commit9a5427e3a0c0ccf2a82dc503149a26b23fbd6004 (patch)
treef28beec29deeea36038615a8fb98a810891940b5 /modules/nixos/dwm.nix
parent2024-03-19 (diff)
2024-03-31
Diffstat (limited to '')
-rw-r--r--modules/nixos/dwm.nix254
1 files changed, 133 insertions, 121 deletions
diff --git a/modules/nixos/dwm.nix b/modules/nixos/dwm.nix
index a32ed29..912be0c 100644
--- a/modules/nixos/dwm.nix
+++ b/modules/nixos/dwm.nix
@@ -4,9 +4,11 @@
   pkgs,
   ...
 }:
-with lib; let
+with lib;
+let
   cfg = config.nixfiles.modules.dwm;
-in {
+in
+{
   options.nixfiles.modules.dwm.enable = mkEnableOption "dwm";
 
   config = mkIf cfg.enable {
@@ -15,134 +17,137 @@ in {
     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;
+      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 *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 *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 char *tags[] = {
+                  "1",
+                  "2",
+                  "3",
+                  "4",
+                  "5",
+                  "6",
+                  "7",
+                  "8",
+                  "9"
+                };
 
-            static const Rule rules[] = {
-              { "Emacs", NULL, NULL, 1 << 0, 0, -1 },
-            };
+                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 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 },
-            };
+                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 } },
+                #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 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 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
+                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";
     };
 
@@ -151,7 +156,14 @@ in {
       # package = pkgs.dwm-status.override {
       #   enableAlsaUtils = false;
       # };
-      order = ["audio" "backlight" "battery" "cpu_load" "network" "time"];
+      order = [
+        "audio"
+        "backlight"
+        "battery"
+        "cpu_load"
+        "network"
+        "time"
+      ];
     };
 
     services.xserver.displayManager.startx.enable = true;

Consider giving Nix/NixOS a try! <3