From ec23fb1431c6efd37050830528e9b56849416447 Mon Sep 17 00:00:00 2001
From: Oliver Davies <oliver@oliverdavies.uk>
Date: Tue, 7 Nov 2023 06:39:10 +0000
Subject: [PATCH] refactor(nixos): extract Home Manager modules

---
 system/nixos/default.nix                      |   2 +-
 .../default.nix}                              |   8 +-
 system/nixos/home-manager/desktop.nix         |  13 ++
 .../nixos/home-manager/modules/alacritty.nix  |  28 +++
 .../modules/sway.nix}                         | 160 +++++++-----------
 5 files changed, 110 insertions(+), 101 deletions(-)
 rename system/nixos/{home-manager.nix => home-manager/default.nix} (73%)
 create mode 100644 system/nixos/home-manager/desktop.nix
 create mode 100644 system/nixos/home-manager/modules/alacritty.nix
 rename system/nixos/{home-manager-desktop.nix => home-manager/modules/sway.nix} (88%)

diff --git a/system/nixos/default.nix b/system/nixos/default.nix
index 394ab8f0..a7790070 100644
--- a/system/nixos/default.nix
+++ b/system/nixos/default.nix
@@ -14,7 +14,7 @@ inputs.nixpkgs.lib.nixosSystem {
         extraSpecialArgs = { inherit inputs desktop self username; };
         useGlobalPkgs = true;
         useUserPackages = true;
-        users."${username}" = import ./home-manager.nix;
+        users."${username}" = import ./home-manager;
       };
     }
 
diff --git a/system/nixos/home-manager.nix b/system/nixos/home-manager/default.nix
similarity index 73%
rename from system/nixos/home-manager.nix
rename to system/nixos/home-manager/default.nix
index 3d75629d..b334ec2e 100644
--- a/system/nixos/home-manager.nix
+++ b/system/nixos/home-manager/default.nix
@@ -1,9 +1,9 @@
-{ inputs, config, desktop, pkgs, self, username, ... }:
+{ config, desktop, inputs, pkgs, self, username, ... }:
 
 let
-  desktop-config = import ./home-manager-desktop.nix { inherit config inputs pkgs; };
-  shared-config = import ../shared/home-manager.nix { inherit inputs pkgs self username; };
-  shared-packages = import ../shared/home-manager-packages.nix { inherit inputs pkgs; };
+  desktop-config = import ./desktop.nix { inherit config inputs pkgs; };
+  shared-config = import ../../shared/home-manager.nix { inherit inputs pkgs self username; };
+  shared-packages = import ../../shared/home-manager-packages.nix { inherit inputs pkgs; };
 in
 {
   imports = if desktop then [ desktop-config shared-config ] else [ shared-config ];
diff --git a/system/nixos/home-manager/desktop.nix b/system/nixos/home-manager/desktop.nix
new file mode 100644
index 00000000..633b1d61
--- /dev/null
+++ b/system/nixos/home-manager/desktop.nix
@@ -0,0 +1,13 @@
+{ config, inputs, pkgs }:
+
+{
+  imports = [
+    ./modules/alacritty.nix
+    ./modules/sway.nix
+  ];
+
+  xdg.configFile.wallpaper = {
+    source = ../../../config/wallpaper;
+    recursive = true;
+  };
+}
diff --git a/system/nixos/home-manager/modules/alacritty.nix b/system/nixos/home-manager/modules/alacritty.nix
new file mode 100644
index 00000000..784431f5
--- /dev/null
+++ b/system/nixos/home-manager/modules/alacritty.nix
@@ -0,0 +1,28 @@
+{
+  programs.alacritty = {
+    enable = true;
+
+    settings = {
+      window.opacity = 0.9;
+
+      window.padding = {
+        x = 15;
+        y = 15;
+      };
+
+      font = {
+        size = 16.0;
+
+        bold.style = "Regular";
+        bolditalic.style = "Regular";
+        italic.style = "Regular";
+        normal.family = "AnonymicePro Nerd Font Mono";
+
+        offset.y = 12;
+        glyph_offset.y = 6;
+      };
+
+      shell = { program = "zsh"; };
+    };
+  };
+}
diff --git a/system/nixos/home-manager-desktop.nix b/system/nixos/home-manager/modules/sway.nix
similarity index 88%
rename from system/nixos/home-manager-desktop.nix
rename to system/nixos/home-manager/modules/sway.nix
index c089defc..19909ef2 100644
--- a/system/nixos/home-manager-desktop.nix
+++ b/system/nixos/home-manager/modules/sway.nix
@@ -1,4 +1,4 @@
-{ config, inputs, pkgs }:
+{ config, inputs, pkgs, ... }:
 
 {
   services.swayidle = {
@@ -34,6 +34,66 @@
     };
   };
 
+  programs.i3status-rust = {
+    enable = true;
+
+    bars = {
+      default = {
+        blocks = [
+          {
+            block = "net";
+            format = " $ip ";
+          }
+          {
+            block = "battery";
+            format = " $icon $percentage $time ";
+          }
+          {
+            block = "cpu";
+          }
+          {
+            block = "memory";
+            format = " $icon $mem_total_used_percents.eng(w:2) ";
+            format_alt = " $icon_swap $swap_used_percents.eng(w:2) ";
+          }
+          {
+            block = "disk_space";
+            path = "/";
+            info_type = "available";
+            alert_unit = "GB";
+            interval = 20;
+            warning = 20.0;
+            alert = 10.0;
+            format = " $icon $available.eng(w:2) ";
+          }
+          {
+            block = "time";
+            interval = 1;
+            format = " $timestamp.datetime(f:'%F %T') ";
+          }
+        ];
+
+        settings = {
+          theme = {
+            theme = "plain";
+            overrides = {
+              critical_bg = "#222222";
+              good_bg = "#222222";
+              good_fg = "#ffffff";
+              idle_bg = "#222222";
+              idle_fg = "#ffffff";
+              info_bg = "#222222";
+              info_fg = "#ffffff";
+              separator_bg = "#222222";
+              warning_bg = "#222222";
+              warning_fg = "#ffffff";
+            };
+          };
+        };
+      };
+    };
+  };
+
   wayland.windowManager.sway = {
     enable = true;
 
@@ -55,7 +115,7 @@
 
           fonts = {
             names = [ "JetBrainsMono Nerd Font Mono" ];
-            size = 16.0;
+            size = 12.0;
           };
 
           statusCommand = "i3status-rs ~/.config/i3status-rust/config-default.toml";
@@ -64,9 +124,9 @@
       ];
 
       gaps = {
-        inner = 10;
+        inner = 0;
         smartBorders = "on";
-        smartGaps = true;
+        # smartGaps = true;
       };
 
       input = {
@@ -134,96 +194,4 @@
       for_window [app_id="zoom" title="Zoom - Free Account"] floating disable
     '';
   };
-
-  programs.i3status-rust = {
-    enable = true;
-
-    bars = {
-      default = {
-        blocks = [
-          {
-            block = "net";
-            format = " $ip ";
-          }
-          {
-            block = "battery";
-            format = " $icon $percentage $time ";
-          }
-          {
-            block = "cpu";
-          }
-          {
-            block = "memory";
-            format = " $icon $mem_total_used_percents.eng(w:2) ";
-            format_alt = " $icon_swap $swap_used_percents.eng(w:2) ";
-          }
-          {
-            block = "disk_space";
-            path = "/";
-            info_type = "available";
-            alert_unit = "GB";
-            interval = 20;
-            warning = 20.0;
-            alert = 10.0;
-            format = " $icon $available.eng(w:2) ";
-          }
-          {
-            block = "time";
-            interval = 1;
-            format = " $timestamp.datetime(f:'%F %T') ";
-          }
-        ];
-
-        settings = {
-          theme = {
-            theme = "plain";
-            overrides = {
-              critical_bg = "#222222";
-              good_bg = "#222222";
-              good_fg = "#ffffff";
-              idle_bg = "#222222";
-              idle_fg = "#ffffff";
-              info_bg = "#222222";
-              info_fg = "#ffffff";
-              separator_bg = "#222222";
-              warning_bg = "#222222";
-              warning_fg = "#ffffff";
-            };
-          };
-        };
-      };
-    };
-  };
-
-  xdg.configFile.wallpaper = {
-    source = ../../config/wallpaper;
-    recursive = true;
-  };
-
-  programs.alacritty = {
-    enable = true;
-
-    settings = {
-      window.opacity = 0.9;
-
-      window.padding = {
-        x = 15;
-        y = 15;
-      };
-
-      font = {
-        size = 16.0;
-
-        bold.style = "Regular";
-        bolditalic.style = "Regular";
-        italic.style = "Regular";
-        normal.family = "IntoneMono Nerd Font Mono";
-
-        offset.y = 12;
-        glyph_offset.y = 6;
-      };
-
-      shell = { program = "zsh"; };
-    };
-  };
 }