From 2de0e1a2d68d0412d93db321a1bb237fbe1027e1 Mon Sep 17 00:00:00 2001
From: Oliver Davies <oliver@oliverdavies.dev>
Date: Wed, 5 Mar 2025 15:09:06 +0000
Subject: [PATCH] Use nixosModules and homeManagerModules for config

---
 nix/home/opdavies/hosts/PW05CH3L.nix          | 23 ++++----
 nix/home/opdavies/hosts/lemp11.nix            | 41 ++++++--------
 nix/home/opdavies/hosts/nixedo.nix            | 14 ++---
 nix/home/opdavies/hosts/t490.nix              | 56 ++++++++-----------
 nix/hosts/PW05CH3L/configuration.nix          |  6 +-
 nix/hosts/nixedo/configuration.nix            | 32 +++++------
 nix/hosts/t490/configuration.nix              | 16 ++----
 .../home-manager/features/cli/bluetuith.nix   |  4 +-
 .../home-manager/features/cli/direnv.nix      |  4 +-
 .../home-manager/features/cli/neovim.nix      |  4 +-
 .../home-manager/features/cli/notes.nix       |  4 +-
 .../home-manager/features/cli/syncthing.nix   |  4 +-
 .../features/cli/tmux-sessionizer.nix         |  4 +-
 .../home-manager/features/cli/tmux.nix        |  4 +-
 .../home-manager/features/desktop/copyq.nix   |  4 +-
 .../home-manager/features/desktop/discord.nix |  4 +-
 .../home-manager/features/desktop/dwm.nix     |  4 +-
 .../home-manager/features/desktop/espanso.nix |  4 +-
 .../features/desktop/flameshot.nix            |  4 +-
 .../home-manager/features/desktop/gtk.nix     |  4 +-
 .../features/desktop/media/gimp.nix           |  4 +-
 .../features/desktop/media/handbrake.nix      |  4 +-
 .../features/desktop/media/kdenlive.nix       |  4 +-
 .../features/desktop/media/mpv.nix            |  4 +-
 .../features/desktop/media/pocket-casts.nix   |  4 +-
 .../home-manager/features/desktop/slack.nix   |  4 +-
 .../home-manager/features/desktop/zoom.nix    |  4 +-
 nix/modules/nixos/features/cli/docker.nix     |  4 +-
 .../nixos/features/desktop/autorandr.nix      |  4 +-
 nix/modules/nixos/features/desktop/dwm.nix    |  4 +-
 nix/modules/nixos/features/desktop/peek.nix   |  4 +-
 .../nixos/features/desktop/screenkey.nix      |  4 +-
 nix/modules/nixos/features/desktop/thunar.nix |  4 +-
 nix/modules/nixos/features/gaming.nix         |  4 +-
 .../nixos/features/homelab/audiobookshelf.nix |  4 +-
 .../homelab/containers/beaverhabits.nix       |  4 +-
 .../features/homelab/containers/freshrss.nix  |  4 +-
 .../features/homelab/containers/pi-hole.nix   |  4 +-
 .../homelab/containers/tubearchivist.nix      |  4 +-
 .../nixos/features/homelab/forgejo.nix        |  4 +-
 nix/modules/nixos/features/homelab/gitea.nix  |  4 +-
 nix/modules/nixos/features/homelab/immich.nix |  4 +-
 .../nixos/features/homelab/jellyfin.nix       |  4 +-
 .../nixos/features/homelab/paperless.nix      |  4 +-
 .../nixos/features/homelab/vaultwarden.nix    |  4 +-
 todo.txt                                      |  1 +
 46 files changed, 151 insertions(+), 190 deletions(-)

diff --git a/nix/home/opdavies/hosts/PW05CH3L.nix b/nix/home/opdavies/hosts/PW05CH3L.nix
index 50b9dac1..7650c35c 100644
--- a/nix/home/opdavies/hosts/PW05CH3L.nix
+++ b/nix/home/opdavies/hosts/PW05CH3L.nix
@@ -1,18 +1,15 @@
 {
-  features = {
-    cli = {
-      direnv.enable = true;
-      neovim.enable = true;
-      tmux.enable = true;
+  homeManagerModules = {
+    direnv.enable = true;
+    neovim.enable = true;
 
-      notes = {
-        enable = true;
-
-        directory = "$HOME/Documents/wiki/tfw-notes";
-      };
-
-      syncthing.enable = true;
-      tmux-sessionizer.enable = true;
+    notes = {
+      enable = true;
+      directory = "$HOME/Documents/wiki/tfw-notes";
     };
+
+    syncthing.enable = true;
+    tmux.enable = true;
+    tmux-sessionizer.enable = true;
   };
 }
diff --git a/nix/home/opdavies/hosts/lemp11.nix b/nix/home/opdavies/hosts/lemp11.nix
index 1a472922..d8d1a1e0 100644
--- a/nix/home/opdavies/hosts/lemp11.nix
+++ b/nix/home/opdavies/hosts/lemp11.nix
@@ -1,30 +1,21 @@
 { ... }:
 
 {
-  features = {
-    cli = {
-      direnv.enable = true;
-      syncthing.enable = true;
-      tmux-sessionizer.enable = true;
-    };
-
-    desktop = {
-      copyq.enable = true;
-      discord.enable = true;
-      espanso.enable = true;
-      flameshot.enable = true;
-      gtk.enable = true;
-      slack.enable = true;
-
-      media = {
-        gimp.enable = true;
-        handbrake.enable = true;
-        kdenlive.enable = true;
-        pocket-casts.enable = true;
-        mpv.enable = true;
-      };
-
-      zoom.enable = true;
-    };
+  homeManagerModules = {
+    copyq.enable = true;
+    direnv.enable = true;
+    discord.enable = true;
+    espanso.enable = true;
+    flameshot.enable = true;
+    gimp.enable = true;
+    gtk.enable = true;
+    handbrake.enable = true;
+    kdenlive.enable = true;
+    mpv.enable = true;
+    pocket-casts.enable = true;
+    slack.enable = true;
+    syncthing.enable = true;
+    tmux-sessionizer.enable = true;
+    zoom.enable = true;
   };
 }
diff --git a/nix/home/opdavies/hosts/nixedo.nix b/nix/home/opdavies/hosts/nixedo.nix
index d4175c9e..ce6ee60e 100644
--- a/nix/home/opdavies/hosts/nixedo.nix
+++ b/nix/home/opdavies/hosts/nixedo.nix
@@ -1,15 +1,9 @@
 { ... }:
 
 {
-  features = {
-    cli = {
-      direnv.enable = true;
-      syncthing.enable = true;
-    };
-
-    desktop = {
-      dwm.enable = true;
-      # gtk.enable = true;
-    };
+  homeManagerModules = {
+    direnv.enable = true;
+    dwm.enable = true;
+    syncthing.enable = true;
   };
 }
diff --git a/nix/home/opdavies/hosts/t490.nix b/nix/home/opdavies/hosts/t490.nix
index f9125ce5..66ab7932 100644
--- a/nix/home/opdavies/hosts/t490.nix
+++ b/nix/home/opdavies/hosts/t490.nix
@@ -1,42 +1,32 @@
 { pkgs, ... }:
 
 {
-  features = {
-    cli = {
-      bluetuith.enable = true;
-      direnv.enable = true;
-      neovim.enable = true;
+  homeManagerModules = {
+    bluetuith.enable = true;
+    copyq.enable = true;
+    direnv.enable = true;
+    discord.enable = true;
+    dwm.enable = true;
+    espanso.enable = true;
+    flameshot.enable = true;
+    gimp.enable = true;
+    gtk.enable = true;
+    handbrake.enable = true;
+    kdenlive.enable = true;
+    mpv.enable = true;
+    neovim.enable = true;
 
-      notes = {
-        enable = true;
-
-        directory = "$HOME/Documents/wiki/notes";
-      };
-
-      syncthing.enable = true;
-      tmux.enable = true;
-      tmux-sessionizer.enable = true;
+    notes = {
+      enable = true;
+      directory = "$HOME/Documents/wiki/notes";
     };
 
-    desktop = {
-      copyq.enable = true;
-      discord.enable = true;
-      dwm.enable = true;
-      espanso.enable = true;
-      flameshot.enable = true;
-      gtk.enable = true;
-      slack.enable = true;
-
-      media = {
-        gimp.enable = true;
-        handbrake.enable = true;
-        kdenlive.enable = true;
-        pocket-casts.enable = true;
-        mpv.enable = true;
-      };
-
-      zoom.enable = true;
-    };
+    pocket-casts.enable = true;
+    slack.enable = true;
+    syncthing.enable = true;
+    tmux.enable = true;
+    tmux-sessionizer.enable = true;
+    zoom.enable = true;
   };
 
   home.packages = with pkgs; [
diff --git a/nix/hosts/PW05CH3L/configuration.nix b/nix/hosts/PW05CH3L/configuration.nix
index ef6e969c..48ed8a4e 100644
--- a/nix/hosts/PW05CH3L/configuration.nix
+++ b/nix/hosts/PW05CH3L/configuration.nix
@@ -15,10 +15,8 @@
     wl-clipboard
   ];
 
-  features = {
-    cli = {
-      docker.enable = true;
-    };
+  nixosModules = {
+    docker.enable = true;
   };
 
   wsl = {
diff --git a/nix/hosts/nixedo/configuration.nix b/nix/hosts/nixedo/configuration.nix
index 2554134f..014cfb61 100644
--- a/nix/hosts/nixedo/configuration.nix
+++ b/nix/hosts/nixedo/configuration.nix
@@ -15,25 +15,19 @@
     ../../users/opdavies
   ];
 
-  features = {
-    cli = {
-      docker.enable = true;
-    };
-
-    desktop.dwm.enable = true;
-
-    homelab = {
-      audiobookshelf.enable = true;
-      beaverhabits.enable = true;
-      freshrss.enable = true;
-      gitea.enable = true;
-      immich.enable = true;
-      jellyfin.enable = true;
-      paperless.enable = true;
-      pihole.enable = true;
-      tubearchivist-container.enable = true;
-      vaultwarden.enable = true;
-    };
+  nixosModules = {
+    audiobookshelf.enable = true;
+    beaverhabits.enable = true;
+    docker.enable = true;
+    dwm.enable = true;
+    freshrss.enable = true;
+    gitea.enable = true;
+    immich.enable = true;
+    jellyfin.enable = true;
+    paperless.enable = true;
+    pihole.enable = true;
+    tubearchivist-container.enable = true;
+    vaultwarden.enable = true;
   };
 
   programs.dconf.enable = true;
diff --git a/nix/hosts/t490/configuration.nix b/nix/hosts/t490/configuration.nix
index 2245d5d6..88a55c5e 100644
--- a/nix/hosts/t490/configuration.nix
+++ b/nix/hosts/t490/configuration.nix
@@ -16,17 +16,12 @@
   ];
 
   nixosModules = {
+    autorandr.enable = true;
+    dwm.enable = true;
+    gaming.enable = true;
     st.enable = true;
-  };
-
-  features = {
-    desktop = {
-      autorandr.enable = true;
-      dwm.enable = true;
-      gaming.enable = true;
-      thunar.enable = true;
-      peek.enable = true;
-    };
+    thunar.enable = true;
+    peek.enable = true;
   };
 
   nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
@@ -58,6 +53,7 @@
   environment.systemPackages = with pkgs; [
     gtypist
     newsboat
+    pam_gnupg
     rclone
     rclone-browser
     sxiv
diff --git a/nix/modules/home-manager/features/cli/bluetuith.nix b/nix/modules/home-manager/features/cli/bluetuith.nix
index e52812e6..fbb35852 100644
--- a/nix/modules/home-manager/features/cli/bluetuith.nix
+++ b/nix/modules/home-manager/features/cli/bluetuith.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.cli.bluetuith.enable = mkEnableOption "Enable bluetuith";
+  options.homeManagerModules.bluetuith.enable = mkEnableOption "Enable bluetuith";
 
-  config = mkIf config.features.cli.bluetuith.enable {
+  config = mkIf config.homeManagerModules.bluetuith.enable {
     home.packages = with pkgs; [
       bluetuith
     ];
diff --git a/nix/modules/home-manager/features/cli/direnv.nix b/nix/modules/home-manager/features/cli/direnv.nix
index 5f39dd50..e733a501 100644
--- a/nix/modules/home-manager/features/cli/direnv.nix
+++ b/nix/modules/home-manager/features/cli/direnv.nix
@@ -3,9 +3,9 @@
 with lib;
 
 {
-  options.features.cli.direnv.enable = mkEnableOption "Enable direnv";
+  options.homeManagerModules.direnv.enable = mkEnableOption "Enable direnv";
 
-  config = mkIf config.features.cli.direnv.enable {
+  config = mkIf config.homeManagerModules.direnv.enable {
     programs.direnv = {
       enable = true;
       enableZshIntegration = true;
diff --git a/nix/modules/home-manager/features/cli/neovim.nix b/nix/modules/home-manager/features/cli/neovim.nix
index ccade431..d2bc2daa 100644
--- a/nix/modules/home-manager/features/cli/neovim.nix
+++ b/nix/modules/home-manager/features/cli/neovim.nix
@@ -13,9 +13,9 @@ let
   phpPackages = pkgs.php82Packages;
 in
 {
-  options.features.cli.neovim.enable = mkEnableOption "Enable neovim";
+  options.homeManagerModules.neovim.enable = mkEnableOption "Enable neovim";
 
-  config = mkIf config.features.cli.neovim.enable {
+  config = mkIf config.homeManagerModules.neovim.enable {
     programs.neovim = {
       enable = true;
 
diff --git a/nix/modules/home-manager/features/cli/notes.nix b/nix/modules/home-manager/features/cli/notes.nix
index 4edbda40..a8be8ce9 100644
--- a/nix/modules/home-manager/features/cli/notes.nix
+++ b/nix/modules/home-manager/features/cli/notes.nix
@@ -8,10 +8,10 @@
 with lib;
 
 let
-  cfg = config.features.cli.notes;
+  cfg = config.homeManagerModules.notes;
 in
 {
-  options.features.cli.notes = {
+  options.homeManagerModules.notes = {
     enable = mkEnableOption "Enable notes";
 
     directory = mkOption {
diff --git a/nix/modules/home-manager/features/cli/syncthing.nix b/nix/modules/home-manager/features/cli/syncthing.nix
index 094ff2c2..0f14482e 100644
--- a/nix/modules/home-manager/features/cli/syncthing.nix
+++ b/nix/modules/home-manager/features/cli/syncthing.nix
@@ -3,10 +3,10 @@
 with lib;
 
 let
-  cfg = config.features.cli.syncthing;
+  cfg = config.homeManagerModules.syncthing;
 in
 {
-  options.features.cli.syncthing.enable = mkEnableOption "Enable syncthing";
+  options.homeManagerModules.syncthing.enable = mkEnableOption "Enable syncthing";
 
   config = mkIf cfg.enable {
     services.syncthing.enable = true;
diff --git a/nix/modules/home-manager/features/cli/tmux-sessionizer.nix b/nix/modules/home-manager/features/cli/tmux-sessionizer.nix
index fed891de..058c29cc 100644
--- a/nix/modules/home-manager/features/cli/tmux-sessionizer.nix
+++ b/nix/modules/home-manager/features/cli/tmux-sessionizer.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.cli.tmux-sessionizer.enable = mkEnableOption "Enable tmux-sessionizer";
+  options.homeManagerModules.tmux-sessionizer.enable = mkEnableOption "Enable tmux-sessionizer";
 
-  config = mkIf config.features.cli.tmux-sessionizer.enable {
+  config = mkIf config.homeManagerModules.tmux-sessionizer.enable {
     home.packages = with pkgs; [ tmux-sessionizer ];
 
     home.file.".tmux-sessionizer".source = "${
diff --git a/nix/modules/home-manager/features/cli/tmux.nix b/nix/modules/home-manager/features/cli/tmux.nix
index be60161f..87700f59 100644
--- a/nix/modules/home-manager/features/cli/tmux.nix
+++ b/nix/modules/home-manager/features/cli/tmux.nix
@@ -11,9 +11,9 @@ let
   inherit (pkgs) tmuxPlugins;
 in
 {
-  options.features.cli.tmux.enable = mkEnableOption "Enable tmux";
+  options.homeManagerModules.tmux.enable = mkEnableOption "Enable tmux";
 
-  config = mkIf config.features.cli.tmux.enable {
+  config = mkIf config.homeManagerModules.tmux.enable {
     programs.tmux = {
       enable = true;
 
diff --git a/nix/modules/home-manager/features/desktop/copyq.nix b/nix/modules/home-manager/features/desktop/copyq.nix
index 7a4ca6a7..a173cd8b 100644
--- a/nix/modules/home-manager/features/desktop/copyq.nix
+++ b/nix/modules/home-manager/features/desktop/copyq.nix
@@ -3,9 +3,9 @@
 with lib;
 
 {
-  options.features.desktop.copyq.enable = mkEnableOption "Enable copyq";
+  options.homeManagerModules.copyq.enable = mkEnableOption "Enable copyq";
 
-  config = mkIf config.features.desktop.copyq.enable {
+  config = mkIf config.homeManagerModules.copyq.enable {
     services.copyq.enable = true;
   };
 }
diff --git a/nix/modules/home-manager/features/desktop/discord.nix b/nix/modules/home-manager/features/desktop/discord.nix
index abf8cd8f..579ea624 100644
--- a/nix/modules/home-manager/features/desktop/discord.nix
+++ b/nix/modules/home-manager/features/desktop/discord.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.discord.enable = mkEnableOption "Enable Discord";
+  options.homeManagerModules.discord.enable = mkEnableOption "Enable Discord";
 
-  config = mkIf config.features.desktop.discord.enable {
+  config = mkIf config.homeManagerModules.discord.enable {
     home.packages = with pkgs; [ discord ];
   };
 }
diff --git a/nix/modules/home-manager/features/desktop/dwm.nix b/nix/modules/home-manager/features/desktop/dwm.nix
index 6fa0b8ff..0006aee1 100644
--- a/nix/modules/home-manager/features/desktop/dwm.nix
+++ b/nix/modules/home-manager/features/desktop/dwm.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.dwm.enable = mkEnableOption "Enable dwm";
+  options.homeManagerModules.dwm.enable = mkEnableOption "Enable dwm";
 
-  config = mkIf config.features.desktop.dwm.enable {
+  config = mkIf config.homeManagerModules.dwm.enable {
     home = {
       file.".xinitrc".text = ''
         systemctl --user import-environment DISPLAY
diff --git a/nix/modules/home-manager/features/desktop/espanso.nix b/nix/modules/home-manager/features/desktop/espanso.nix
index 9f3d0be0..0ba03f95 100644
--- a/nix/modules/home-manager/features/desktop/espanso.nix
+++ b/nix/modules/home-manager/features/desktop/espanso.nix
@@ -3,9 +3,9 @@
 with lib;
 
 {
-  options.features.desktop.espanso.enable = mkEnableOption "Enable espanso";
+  options.homeManagerModules.espanso.enable = mkEnableOption "Enable espanso";
 
-  config = mkIf config.features.desktop.espanso.enable {
+  config = mkIf config.homeManagerModules.espanso.enable {
     services.espanso = {
       enable = true;
 
diff --git a/nix/modules/home-manager/features/desktop/flameshot.nix b/nix/modules/home-manager/features/desktop/flameshot.nix
index d9a77d8c..c9126c2f 100644
--- a/nix/modules/home-manager/features/desktop/flameshot.nix
+++ b/nix/modules/home-manager/features/desktop/flameshot.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.flameshot.enable = mkEnableOption "Enable flameshot";
+  options.homeManagerModules.flameshot.enable = mkEnableOption "Enable flameshot";
 
-  config = mkIf config.features.desktop.flameshot.enable {
+  config = mkIf config.homeManagerModules.flameshot.enable {
     services.flameshot = {
       enable = true;
 
diff --git a/nix/modules/home-manager/features/desktop/gtk.nix b/nix/modules/home-manager/features/desktop/gtk.nix
index f68563b3..2419d956 100644
--- a/nix/modules/home-manager/features/desktop/gtk.nix
+++ b/nix/modules/home-manager/features/desktop/gtk.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.gtk.enable = mkEnableOption "Enable gtk";
+  options.homeManagerModules.gtk.enable = mkEnableOption "Enable gtk";
 
-  config = mkIf config.features.desktop.gtk.enable {
+  config = mkIf config.homeManagerModules.gtk.enable {
     gtk = {
       enable = true;
 
diff --git a/nix/modules/home-manager/features/desktop/media/gimp.nix b/nix/modules/home-manager/features/desktop/media/gimp.nix
index db012675..e0a006d5 100644
--- a/nix/modules/home-manager/features/desktop/media/gimp.nix
+++ b/nix/modules/home-manager/features/desktop/media/gimp.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.media.gimp.enable = mkEnableOption "Enable gimp";
+  options.homeManagerModules.gimp.enable = mkEnableOption "Enable gimp";
 
-  config = mkIf config.features.desktop.media.gimp.enable {
+  config = mkIf config.homeManagerModules.gimp.enable {
     home.packages = with pkgs; [ gimp ];
   };
 }
diff --git a/nix/modules/home-manager/features/desktop/media/handbrake.nix b/nix/modules/home-manager/features/desktop/media/handbrake.nix
index e27a215a..9cbf4e84 100644
--- a/nix/modules/home-manager/features/desktop/media/handbrake.nix
+++ b/nix/modules/home-manager/features/desktop/media/handbrake.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.media.handbrake.enable = mkEnableOption "Enable handbrake";
+  options.homeManagerModules.handbrake.enable = mkEnableOption "Enable handbrake";
 
-  config = mkIf config.features.desktop.media.handbrake.enable {
+  config = mkIf config.homeManagerModules.handbrake.enable {
     home.packages = with pkgs; [ handbrake ];
   };
 }
diff --git a/nix/modules/home-manager/features/desktop/media/kdenlive.nix b/nix/modules/home-manager/features/desktop/media/kdenlive.nix
index 77743e68..039bb93c 100644
--- a/nix/modules/home-manager/features/desktop/media/kdenlive.nix
+++ b/nix/modules/home-manager/features/desktop/media/kdenlive.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.media.kdenlive.enable = mkEnableOption "Enable kdenlive";
+  options.homeManagerModules.kdenlive.enable = mkEnableOption "Enable kdenlive";
 
-  config = mkIf config.features.desktop.media.kdenlive.enable {
+  config = mkIf config.homeManagerModules.kdenlive.enable {
     home.packages = with pkgs; [ kdePackages.kdenlive ];
   };
 }
diff --git a/nix/modules/home-manager/features/desktop/media/mpv.nix b/nix/modules/home-manager/features/desktop/media/mpv.nix
index 2704dad0..cfbf4a97 100644
--- a/nix/modules/home-manager/features/desktop/media/mpv.nix
+++ b/nix/modules/home-manager/features/desktop/media/mpv.nix
@@ -3,9 +3,9 @@
 with lib;
 
 {
-  options.features.desktop.media.mpv.enable = mkEnableOption "Enable mpv media player";
+  options.homeManagerModules.mpv.enable = mkEnableOption "Enable mpv media player";
 
-  config = mkIf config.features.desktop.media.mpv.enable {
+  config = mkIf config.homeManagerModules.mpv.enable {
     programs.mpv = {
       enable = true;
 
diff --git a/nix/modules/home-manager/features/desktop/media/pocket-casts.nix b/nix/modules/home-manager/features/desktop/media/pocket-casts.nix
index d71183b9..5387c0f7 100644
--- a/nix/modules/home-manager/features/desktop/media/pocket-casts.nix
+++ b/nix/modules/home-manager/features/desktop/media/pocket-casts.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.media.pocket-casts.enable = mkEnableOption "Enable Pocket Casts";
+  options.homeManagerModules.pocket-casts.enable = mkEnableOption "Enable Pocket Casts";
 
-  config = mkIf config.features.desktop.media.pocket-casts.enable {
+  config = mkIf config.homeManagerModules.pocket-casts.enable {
     home.packages = with pkgs; [ pocket-casts ];
   };
 }
diff --git a/nix/modules/home-manager/features/desktop/slack.nix b/nix/modules/home-manager/features/desktop/slack.nix
index 344cf861..1007150d 100644
--- a/nix/modules/home-manager/features/desktop/slack.nix
+++ b/nix/modules/home-manager/features/desktop/slack.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.slack.enable = mkEnableOption "Enable Slack";
+  options.homeManagerModules.slack.enable = mkEnableOption "Enable Slack";
 
-  config = mkIf config.features.desktop.slack.enable {
+  config = mkIf config.homeManagerModules.slack.enable {
     home.packages = with pkgs; [ slack ];
   };
 }
diff --git a/nix/modules/home-manager/features/desktop/zoom.nix b/nix/modules/home-manager/features/desktop/zoom.nix
index 59925874..e76e9ed4 100644
--- a/nix/modules/home-manager/features/desktop/zoom.nix
+++ b/nix/modules/home-manager/features/desktop/zoom.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.zoom.enable = mkEnableOption "Enable zoom";
+  options.homeManagerModules.zoom.enable = mkEnableOption "Enable zoom";
 
-  config = mkIf config.features.desktop.zoom.enable {
+  config = mkIf config.homeManagerModules.zoom.enable {
     home.packages = with pkgs; [ zoom-us ];
   };
 }
diff --git a/nix/modules/nixos/features/cli/docker.nix b/nix/modules/nixos/features/cli/docker.nix
index 10e42634..66c9ddd4 100644
--- a/nix/modules/nixos/features/cli/docker.nix
+++ b/nix/modules/nixos/features/cli/docker.nix
@@ -3,9 +3,9 @@
 with lib;
 
 {
-  options.features.cli.docker.enable = mkEnableOption "Enable Docker";
+  options.nixosModules.docker.enable = mkEnableOption "Enable Docker";
 
-  config = mkIf config.features.cli.docker.enable {
+  config = mkIf config.nixosModules.docker.enable {
     virtualisation.docker = {
       enable = true;
 
diff --git a/nix/modules/nixos/features/desktop/autorandr.nix b/nix/modules/nixos/features/desktop/autorandr.nix
index 385e9b3a..e9d1afb9 100644
--- a/nix/modules/nixos/features/desktop/autorandr.nix
+++ b/nix/modules/nixos/features/desktop/autorandr.nix
@@ -3,9 +3,9 @@
 with lib;
 
 {
-  options.features.desktop.autorandr.enable = mkEnableOption "Enable autorandr";
+  options.nixosModules.autorandr.enable = mkEnableOption "Enable autorandr";
 
-  config = mkIf config.features.desktop.autorandr.enable {
+  config = mkIf config.nixosModules.autorandr.enable {
     services.autorandr = {
       enable = true;
 
diff --git a/nix/modules/nixos/features/desktop/dwm.nix b/nix/modules/nixos/features/desktop/dwm.nix
index 678310c8..d17f4d4a 100644
--- a/nix/modules/nixos/features/desktop/dwm.nix
+++ b/nix/modules/nixos/features/desktop/dwm.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.dwm.enable = mkEnableOption "Enable dwm";
+  options.nixosModules.dwm.enable = mkEnableOption "Enable dwm";
 
-  config = mkIf config.features.desktop.dwm.enable {
+  config = mkIf config.nixosModules.dwm.enable {
     services = {
       dwm-status = {
         enable = true;
diff --git a/nix/modules/nixos/features/desktop/peek.nix b/nix/modules/nixos/features/desktop/peek.nix
index 85137d9f..f6c810af 100644
--- a/nix/modules/nixos/features/desktop/peek.nix
+++ b/nix/modules/nixos/features/desktop/peek.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.peek.enable = mkEnableOption "Enable peek";
+  options.nixosModules.peek.enable = mkEnableOption "Enable peek";
 
-  config = mkIf config.features.desktop.peek.enable {
+  config = mkIf config.nixosModules.peek.enable {
     environment.systemPackages = with pkgs; [ peek ];
   };
 }
diff --git a/nix/modules/nixos/features/desktop/screenkey.nix b/nix/modules/nixos/features/desktop/screenkey.nix
index 9bebebfe..1c667b41 100644
--- a/nix/modules/nixos/features/desktop/screenkey.nix
+++ b/nix/modules/nixos/features/desktop/screenkey.nix
@@ -9,9 +9,9 @@
 with lib;
 
 {
-  options.features.desktop.screenkey.enable = mkEnableOption "Enable screenkey";
+  options.nixosModules.screenkey.enable = mkEnableOption "Enable screenkey";
 
-  config = mkIf config.features.desktop.screenkey.enable {
+  config = mkIf config.nixosModules.screenkey.enable {
     environment.systemPackages = with pkgs; [ screenkey ];
 
     home-manager.users.${username}.xdg.configFile."screenkey.json".text = builtins.toJSON {
diff --git a/nix/modules/nixos/features/desktop/thunar.nix b/nix/modules/nixos/features/desktop/thunar.nix
index 96e8086f..e4f0eb58 100644
--- a/nix/modules/nixos/features/desktop/thunar.nix
+++ b/nix/modules/nixos/features/desktop/thunar.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.thunar.enable = mkEnableOption "Enable thunar";
+  options.nixosModules.thunar.enable = mkEnableOption "Enable thunar";
 
-  config = mkIf config.features.desktop.thunar.enable {
+  config = mkIf config.nixosModules.thunar.enable {
     programs.thunar = {
       enable = true;
 
diff --git a/nix/modules/nixos/features/gaming.nix b/nix/modules/nixos/features/gaming.nix
index c8f4d40b..e0266aa7 100644
--- a/nix/modules/nixos/features/gaming.nix
+++ b/nix/modules/nixos/features/gaming.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.desktop.gaming.enable = mkEnableOption "Enable games";
+  options.nixosModules.gaming.enable = mkEnableOption "Enable games";
 
-  config = mkIf config.features.desktop.gaming.enable {
+  config = mkIf config.nixosModules.gaming.enable {
     programs.steam.enable = true;
 
     environment.systemPackages = with pkgs; [ zeroad ];
diff --git a/nix/modules/nixos/features/homelab/audiobookshelf.nix b/nix/modules/nixos/features/homelab/audiobookshelf.nix
index a357270d..2701379f 100644
--- a/nix/modules/nixos/features/homelab/audiobookshelf.nix
+++ b/nix/modules/nixos/features/homelab/audiobookshelf.nix
@@ -3,10 +3,10 @@
 with lib;
 
 let
-  cfg = config.features.homelab.audiobookshelf;
+  cfg = config.nixosModules.audiobookshelf;
 in
 {
-  options.features.homelab.audiobookshelf.enable = mkEnableOption "Enable audiobookshelf";
+  options.nixosModules.audiobookshelf.enable = mkEnableOption "Enable audiobookshelf";
 
   config = mkIf cfg.enable {
     services = {
diff --git a/nix/modules/nixos/features/homelab/containers/beaverhabits.nix b/nix/modules/nixos/features/homelab/containers/beaverhabits.nix
index 434f748e..d329c96d 100644
--- a/nix/modules/nixos/features/homelab/containers/beaverhabits.nix
+++ b/nix/modules/nixos/features/homelab/containers/beaverhabits.nix
@@ -9,12 +9,12 @@
 with lib;
 
 let
-  cfg = config.features.homelab.beaverhabits;
+  cfg = config.nixosModules.beaverhabits;
 
   port = 8084;
 in
 {
-  options.features.homelab.beaverhabits.enable = mkEnableOption "Enable beaverhabits";
+  options.nixosModules.beaverhabits.enable = mkEnableOption "Enable beaverhabits";
 
   config = mkIf cfg.enable {
     virtualisation = {
diff --git a/nix/modules/nixos/features/homelab/containers/freshrss.nix b/nix/modules/nixos/features/homelab/containers/freshrss.nix
index b383f718..cb6514e7 100644
--- a/nix/modules/nixos/features/homelab/containers/freshrss.nix
+++ b/nix/modules/nixos/features/homelab/containers/freshrss.nix
@@ -8,11 +8,11 @@
 with lib;
 
 let
-  cfg = config.features.homelab.freshrss;
+  cfg = config.nixosModules.freshrss;
   port = 4003;
 in
 {
-  options.features.homelab.freshrss.enable = mkEnableOption "Enable freshrss";
+  options.nixosModules.freshrss.enable = mkEnableOption "Enable freshrss";
 
   config = mkIf cfg.enable {
     # Auto-generated using compose2nix v0.3.2-pre.
diff --git a/nix/modules/nixos/features/homelab/containers/pi-hole.nix b/nix/modules/nixos/features/homelab/containers/pi-hole.nix
index 2a3bf836..1e4ad2c7 100644
--- a/nix/modules/nixos/features/homelab/containers/pi-hole.nix
+++ b/nix/modules/nixos/features/homelab/containers/pi-hole.nix
@@ -11,9 +11,9 @@ let
   port = 8082;
 in
 {
-  options.features.homelab.pihole.enable = mkEnableOption "Enable pihole";
+  options.nixosModules.pihole.enable = mkEnableOption "Enable pihole";
 
-  config = mkIf config.features.homelab.pihole.enable {
+  config = mkIf config.nixosModules.pihole.enable {
     virtualisation = {
       docker = {
         enable = true;
diff --git a/nix/modules/nixos/features/homelab/containers/tubearchivist.nix b/nix/modules/nixos/features/homelab/containers/tubearchivist.nix
index c1a38209..5abf4944 100644
--- a/nix/modules/nixos/features/homelab/containers/tubearchivist.nix
+++ b/nix/modules/nixos/features/homelab/containers/tubearchivist.nix
@@ -8,13 +8,13 @@
 with lib;
 
 let
-  cfg = config.features.homelab.tubearchivist-container;
+  cfg = config.nixosModules.tubearchivist-container;
 
   port = 8085;
   url = "tubearchivist.oliverdavies.uk";
 in
 {
-  options.features.homelab.tubearchivist-container = {
+  options.nixosModules.tubearchivist-container = {
     enable = mkEnableOption "Enable the tubearchivist-container service.";
   };
 
diff --git a/nix/modules/nixos/features/homelab/forgejo.nix b/nix/modules/nixos/features/homelab/forgejo.nix
index d23ba475..cb9dc933 100644
--- a/nix/modules/nixos/features/homelab/forgejo.nix
+++ b/nix/modules/nixos/features/homelab/forgejo.nix
@@ -3,9 +3,9 @@
 with lib;
 
 {
-  options.features.homelab.forgejo.enable = mkEnableOption "Enable forgejo";
+  options.nixosModules.forgejo.enable = mkEnableOption "Enable forgejo";
 
-  config = mkIf config.features.homelab.forgejo.enable {
+  config = mkIf config.nixosModules.forgejo.enable {
     services = {
       forgejo = {
         enable = true;
diff --git a/nix/modules/nixos/features/homelab/gitea.nix b/nix/modules/nixos/features/homelab/gitea.nix
index d75221dc..811146c1 100644
--- a/nix/modules/nixos/features/homelab/gitea.nix
+++ b/nix/modules/nixos/features/homelab/gitea.nix
@@ -6,9 +6,9 @@ let
   port = 2222;
 in
 {
-  options.features.homelab.gitea.enable = mkEnableOption "Enable gitea";
+  options.nixosModules.gitea.enable = mkEnableOption "Enable gitea";
 
-  config = mkIf config.features.homelab.gitea.enable {
+  config = mkIf config.nixosModules.gitea.enable {
     services = {
       gitea = {
         enable = true;
diff --git a/nix/modules/nixos/features/homelab/immich.nix b/nix/modules/nixos/features/homelab/immich.nix
index 627a8586..c015020d 100644
--- a/nix/modules/nixos/features/homelab/immich.nix
+++ b/nix/modules/nixos/features/homelab/immich.nix
@@ -8,9 +8,9 @@
 with lib;
 
 {
-  options.features.homelab.immich.enable = mkEnableOption "Enable immich";
+  options.nixosModules.immich.enable = mkEnableOption "Enable immich";
 
-  config = mkIf config.features.homelab.immich.enable {
+  config = mkIf config.nixosModules.immich.enable {
     services.immich = {
       enable = true;
       group = "media";
diff --git a/nix/modules/nixos/features/homelab/jellyfin.nix b/nix/modules/nixos/features/homelab/jellyfin.nix
index 89bc38bf..ea8e21e3 100644
--- a/nix/modules/nixos/features/homelab/jellyfin.nix
+++ b/nix/modules/nixos/features/homelab/jellyfin.nix
@@ -3,9 +3,9 @@
 with lib;
 
 {
-  options.features.homelab.jellyfin.enable = mkEnableOption "Enable jellyfin";
+  options.nixosModules.jellyfin.enable = mkEnableOption "Enable jellyfin";
 
-  config = mkIf config.features.homelab.jellyfin.enable {
+  config = mkIf config.nixosModules.jellyfin.enable {
     services.jellyfin = {
       enable = true;
       openFirewall = true;
diff --git a/nix/modules/nixos/features/homelab/paperless.nix b/nix/modules/nixos/features/homelab/paperless.nix
index 4184ea92..907731bf 100644
--- a/nix/modules/nixos/features/homelab/paperless.nix
+++ b/nix/modules/nixos/features/homelab/paperless.nix
@@ -6,9 +6,9 @@ let
   url = "paperless.oliverdavies.uk";
 in
 {
-  options.features.homelab.paperless.enable = mkEnableOption "Enable paperless";
+  options.nixosModules.paperless.enable = mkEnableOption "Enable paperless";
 
-  config = mkIf config.features.homelab.paperless.enable {
+  config = mkIf config.nixosModules.paperless.enable {
     services = {
       paperless = {
         enable = true;
diff --git a/nix/modules/nixos/features/homelab/vaultwarden.nix b/nix/modules/nixos/features/homelab/vaultwarden.nix
index 2871d473..17ef88b6 100644
--- a/nix/modules/nixos/features/homelab/vaultwarden.nix
+++ b/nix/modules/nixos/features/homelab/vaultwarden.nix
@@ -3,9 +3,9 @@
 with lib;
 
 {
-  options.features.homelab.vaultwarden.enable = mkEnableOption "Enable vaultwarden";
+  options.nixosModules.vaultwarden.enable = mkEnableOption "Enable vaultwarden";
 
-  config = mkIf config.features.homelab.vaultwarden.enable {
+  config = mkIf config.nixosModules.vaultwarden.enable {
     services = {
       vaultwarden = {
         enable = true;
diff --git a/todo.txt b/todo.txt
index 5c3275df..46e3fa63 100644
--- a/todo.txt
+++ b/todo.txt
@@ -4,3 +4,4 @@ Replace doppler with agenix
 Evaluate services.languagetool as a replacement for Grammarly
 Make git email address configurable
 Finish configuring syncthing with nix - https://github.com/neeasade/dotfiles/blob/694c2a11107c10947af956befe16cbe5cee0abda/os/nixos/config/shared.nix#L62
+