From 5753eb1e113908e03bafe0e97bdc2782b80265d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20Schwarz=C3=A4ugl?= Date: Tue, 7 Jan 2025 16:41:06 +0100 Subject: [PATCH] refactor: dynamic module generation --- SwarselSystems.org | 61 +++++----------------------------- lib/default.nix | 3 +- modules/home/default.nix | 14 +------- modules/nixos/default.nix | 8 +---- modules/nixos/filesystem.nix | 5 --- modules/nixos/impermanence.nix | 5 --- pkgs/default.nix | 28 +--------------- 7 files changed, 14 insertions(+), 110 deletions(-) delete mode 100644 modules/nixos/filesystem.nix delete mode 100644 modules/nixos/impermanence.nix diff --git a/SwarselSystems.org b/SwarselSystems.org index a8be804..1b22c93 100644 --- a/SwarselSystems.org +++ b/SwarselSystems.org @@ -2070,33 +2070,7 @@ Note: The structure of generating the packages was changed in commit =2cf03a3 re #+begin_src nix :tangle pkgs/default.nix { lib, pkgs, ... }: let - packageNames = [ - "pass-fuzzel" - "cura5" - "hm-specialisation" - "cdw" - "cdb" - "bak" - "timer" - "e" - "swarselcheck" - "waybarupdate" - "opacitytoggle" - "fs-diff" - "update-checker" - "github-notifications" - "screenshare" - "swarsel-bootstrap" - "swarsel-rebuild" - "swarsel-install" - "swarsel-postinstall" - "t2ts" - "ts2t" - "vershell" - "eontimer" - "project" - "fhs" - ]; + packageNames = lib.swarselsystems.readNix "pkgs"; in lib.swarselsystems.mkPackages packageNames pkgs @@ -3738,17 +3712,11 @@ Note: The structure of generating the packages was changed in commit =2cf03a3 re Modules that need to be loaded on the NixOS level. Note that these will not be available on systems that are not running NixOS. #+begin_src nix :tangle modules/nixos/default.nix - { lib, ... }: - let - moduleNames = [ - "wallpaper" - "hardware" - "setup" - "server" - "input" - ]; - in - lib.swarselsystems.mkModules moduleNames "nixos" +{ lib, ... }: +let + moduleNames = lib.swarselsystems.readNix "modules/nixos"; +in +lib.swarselsystems.mkModules moduleNames "nixos" #+end_src @@ -3895,19 +3863,7 @@ This holds modules that are to be used on most hosts. These are also the most im #+BEGIN_src nix :tangle modules/home/default.nix { lib, ... }: let - moduleNames = [ - "laptop" - "hardware" - "monitors" - "input" - "nixos" - "setup" - "waybar" - "startup" - "wallpaper" - "filesystem" - "firefox" - ]; + moduleNames = lib.swarselsystems.readNix "modules/home"; in lib.swarselsystems.mkModules moduleNames "home" #+end_src @@ -4451,6 +4407,7 @@ A breakdown of each function: mkHalfHostConfigs = hosts: type: pkgs: lib.foldl (acc: set: acc // set) { } (lib.map (host: lib.swarselsystems.mkHalfHost host type pkgs) hosts); readHosts = type: lib.attrNames (builtins.readDir "${self}/hosts/${type}"); + readNix = type: lib.filter (name: name != "default.nix") (lib.attrNames (builtins.readDir "${self}/${type}")); mkApps = system: names: self: builtins.listToAttrs (map (name: { @@ -4473,7 +4430,7 @@ A breakdown of each function: mkModules = names: type: builtins.listToAttrs (map (name: { inherit name; - value = import "${self}/modules/${type}/${name}.nix"; + value = import "${self}/modules/${type}/${name}"; }) names); diff --git a/lib/default.nix b/lib/default.nix index 80f6739..e57592e 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -52,6 +52,7 @@ mkHalfHostConfigs = hosts: type: pkgs: lib.foldl (acc: set: acc // set) { } (lib.map (host: lib.swarselsystems.mkHalfHost host type pkgs) hosts); readHosts = type: lib.attrNames (builtins.readDir "${self}/hosts/${type}"); + readNix = type: lib.filter (name: name != "default.nix") (lib.attrNames (builtins.readDir "${self}/${type}")); mkApps = system: names: self: builtins.listToAttrs (map (name: { @@ -74,7 +75,7 @@ mkModules = names: type: builtins.listToAttrs (map (name: { inherit name; - value = import "${self}/modules/${type}/${name}.nix"; + value = import "${self}/modules/${type}/${name}"; }) names); diff --git a/modules/home/default.nix b/modules/home/default.nix index 1e1869c..65c4bb6 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -1,17 +1,5 @@ { lib, ... }: let - moduleNames = [ - "laptop" - "hardware" - "monitors" - "input" - "nixos" - "setup" - "waybar" - "startup" - "wallpaper" - "filesystem" - "firefox" - ]; + moduleNames = lib.swarselsystems.readNix "modules/home"; in lib.swarselsystems.mkModules moduleNames "home" diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index d0a2249..12606ea 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -1,11 +1,5 @@ { lib, ... }: let - moduleNames = [ - "wallpaper" - "hardware" - "setup" - "server" - "input" - ]; + moduleNames = lib.swarselsystems.readNix "modules/nixos"; in lib.swarselsystems.mkModules moduleNames "nixos" diff --git a/modules/nixos/filesystem.nix b/modules/nixos/filesystem.nix deleted file mode 100644 index 4fedd44..0000000 --- a/modules/nixos/filesystem.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ lib, ... }: - -{ - options.swarselsystems.isBtrfs = lib.mkEnableOption "use btrfs filesystem"; -} diff --git a/modules/nixos/impermanence.nix b/modules/nixos/impermanence.nix deleted file mode 100644 index d6c14d5..0000000 --- a/modules/nixos/impermanence.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ lib, ... }: - -{ - options.swarselsystems.impermanence = lib.mkEnableOption "use impermanence on this system"; -} diff --git a/pkgs/default.nix b/pkgs/default.nix index d450e7e..5cbc29b 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,31 +1,5 @@ { lib, pkgs, ... }: let - packageNames = [ - "pass-fuzzel" - "cura5" - "hm-specialisation" - "cdw" - "cdb" - "bak" - "timer" - "e" - "swarselcheck" - "waybarupdate" - "opacitytoggle" - "fs-diff" - "update-checker" - "github-notifications" - "screenshare" - "swarsel-bootstrap" - "swarsel-rebuild" - "swarsel-install" - "swarsel-postinstall" - "t2ts" - "ts2t" - "vershell" - "eontimer" - "project" - "fhs" - ]; + packageNames = lib.swarselsystems.readNix "pkgs"; in lib.swarselsystems.mkPackages packageNames pkgs