diff --git a/CODEOWNERS b/CODEOWNERS index 7499bc22d..53cdf51c9 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,8 +1,10 @@ clanServices/.* @pinpox @kenji lib/test/container-test-driver/.* @DavHau @mic92 -lib/modules/inventory/.* @hsjobeki -lib/modules/inventoryClass/.* @hsjobeki +lib/inventory/.* @hsjobeki +lib/inventoryClass/.* @hsjobeki + +modules/.* @hsjobeki pkgs/clan-app/ui/.* @hsjobeki @brianmcgee pkgs/clan-app/clan_app/.* @qubasa @hsjobeki diff --git a/devFlake/flake.lock b/devFlake/flake.lock index ec25ff35c..f416477aa 100644 --- a/devFlake/flake.lock +++ b/devFlake/flake.lock @@ -105,11 +105,11 @@ }, "nixpkgs-dev": { "locked": { - "lastModified": 1761034965, - "narHash": "sha256-FbNXKhDJ2PrH2c7luOrlKy8QcGjNs+n5feKNaFJcCh4=", + "lastModified": 1761077392, + "narHash": "sha256-CvXrgrSqL4FSRBpnw2jYJgSDd+cQU2xv08i9jId5REo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dacb1090113e1443c941a5c5908c414b73c7f466", + "rev": "78e184ebc71ffe05ce6ebf4175bc462c7ee42a8e", "type": "github" }, "original": { diff --git a/flake.lock b/flake.lock index 1a9aa5e39..56e4e9040 100644 --- a/flake.lock +++ b/flake.lock @@ -99,11 +99,11 @@ }, "nixos-facter-modules": { "locked": { - "lastModified": 1756491981, - "narHash": "sha256-lXyDAWPw/UngVtQfgQ8/nrubs2r+waGEYIba5UX62+k=", + "lastModified": 1761056547, + "narHash": "sha256-j3T1QDLK/VPUFLyFHDjhCKrEUVIKOrTYKm2mkempK8M=", "owner": "nix-community", "repo": "nixos-facter-modules", - "rev": "c1b29520945d3e148cd96618c8a0d1f850965d8c", + "rev": "98434bad207101657df2491af88f625d2e82b7d7", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index ee4859ac1..8b049a7db 100644 --- a/flake.nix +++ b/flake.nix @@ -68,6 +68,7 @@ ( { ... }: { + debug = true; clan = { meta.name = "clan-core"; inventory = { @@ -98,6 +99,7 @@ ./lib/filter-clan-core/flake-module.nix ./lib/flake-module.nix ./lib/flake-parts/clan-nixos-test.nix + ./modules/flake-module.nix ./nixosModules/clanCore/vars/flake-module.nix ./nixosModules/flake-module.nix ./pkgs/clan-cli/clan_cli/tests/flake-module.nix diff --git a/lib/default.nix b/lib/default.nix index 48f3aaebd..d84860a1f 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -16,10 +16,10 @@ lib.fix ( */ callLib = file: args: import file ({ inherit lib clanLib; } // args); - evalService = clanLib.callLib ./modules/inventory/distributed-service/evalService.nix { }; + evalService = clanLib.callLib ./evalService.nix { }; # ------------------------------------ # ClanLib functions - inventory = clanLib.callLib ./modules/inventory { }; + inventory = clanLib.callLib ./inventory { }; test = clanLib.callLib ./test { }; flake-inputs = clanLib.callLib ./flake-inputs.nix { }; # Custom types diff --git a/lib/modules/dir_test.nix b/lib/dir_test.nix similarity index 90% rename from lib/modules/dir_test.nix rename to lib/dir_test.nix index 26ac302f1..1c35a8989 100644 --- a/lib/modules/dir_test.nix +++ b/lib/dir_test.nix @@ -2,7 +2,7 @@ lib ? import , }: let - clanLibOrig = (import ./.. { inherit lib; }).__unfix__; + clanLibOrig = (import ./. { inherit lib; }).__unfix__; clanLibWithFs = { virtual_fs }: lib.fix ( @@ -11,19 +11,19 @@ let let clan-core = { clanLib = final; - modules.clan.default = lib.modules.importApply ./clan { inherit clan-core; }; + modules.clan.default = lib.modules.importApply ../modules/clan { inherit clan-core; }; # Note: Can add other things to "clan-core" # ... Not needed for this test }; in { - clan = import ../clan { + clan = import ./clan { inherit lib clan-core; }; # Override clanLib.fs for unit-testing against a virtual filesystem - fs = import ../clanTest/virtual-fs.nix { inherit lib; } { + fs = import ./clanTest/virtual-fs.nix { inherit lib; } { inherit rootPath virtual_fs; # Example of a passthru # passthru = [ diff --git a/lib/modules/inventory/distributed-service/evalService.nix b/lib/evalService.nix similarity index 77% rename from lib/modules/inventory/distributed-service/evalService.nix rename to lib/evalService.nix index 74a5584a9..7b0fbb7ce 100644 --- a/lib/modules/inventory/distributed-service/evalService.nix +++ b/lib/evalService.nix @@ -17,9 +17,9 @@ lib.evalModules { specialArgs._ctx = prefix; modules = [ # Base module - ./service-module.nix + ./inventory/distributed-service/service-module.nix # Feature modules - (lib.modules.importApply ./api-feature.nix { + (lib.modules.importApply ./inventory/distributed-service/api-feature.nix { inherit clanLib prefix; }) ] diff --git a/lib/flake-module.nix b/lib/flake-module.nix index 6a0de7a12..b5468a883 100644 --- a/lib/flake-module.nix +++ b/lib/flake-module.nix @@ -10,12 +10,11 @@ in rec { # TODO: automatically generate this from the directory conventions imports = [ - ./modules/flake-module.nix ./clanTest/flake-module.nix ./introspection/flake-module.nix - ./modules/inventory/flake-module.nix ./jsonschema/flake-module.nix ./types/flake-module.nix + ./inventory/flake-module.nix ]; flake.clanLib = let @@ -78,9 +77,6 @@ rec { ../lib (lib.fileset.fileFilter (file: file.name == "flake-module.nix") ../.) ../flakeModules - # ../../nixosModules/clanCore - # ../../machines - # ../../inventory.json ]; }; in @@ -101,6 +97,36 @@ rec { touch $out ''; }; + + # Run: nix-unit --extra-experimental-features flakes --flake .#legacyPackages.x86_64-linux.evalTests-build-clan + legacyPackages.evalTests-build-clan = import ./tests.nix { + inherit lib; + clan-core = self; + }; + checks = { + eval-lib-build-clan = pkgs.runCommand "tests" { nativeBuildInputs = [ pkgs.nix-unit ]; } '' + export HOME="$(realpath .)" + + nix-unit --eval-store "$HOME" \ + --extra-experimental-features flakes \ + --show-trace \ + ${inputOverrides} \ + --flake ${ + self.filter { + include = [ + "flakeModules" + "inventory.json" + "lib" + "machines" + "nixosModules" + "modules" + ]; + } + }#legacyPackages.${system}.evalTests-build-clan + + touch $out + ''; + }; }; } diff --git a/lib/modules/inventory/default.nix b/lib/inventory/default.nix similarity index 96% rename from lib/modules/inventory/default.nix rename to lib/inventory/default.nix index 88fd45506..90f25ea44 100644 --- a/lib/modules/inventory/default.nix +++ b/lib/inventory/default.nix @@ -10,7 +10,7 @@ in inventoryModule = { _file = "clanLib.inventory.module"; imports = [ - ../inventoryClass/inventory.nix + ../../modules/inventoryClass/inventory.nix ]; _module.args = { inherit clanLib; }; }; diff --git a/lib/modules/inventory/distributed-service/all-services-wrapper.nix b/lib/inventory/distributed-service/all-services-wrapper.nix similarity index 100% rename from lib/modules/inventory/distributed-service/all-services-wrapper.nix rename to lib/inventory/distributed-service/all-services-wrapper.nix diff --git a/lib/modules/inventory/distributed-service/api-feature.nix b/lib/inventory/distributed-service/api-feature.nix similarity index 100% rename from lib/modules/inventory/distributed-service/api-feature.nix rename to lib/inventory/distributed-service/api-feature.nix diff --git a/lib/modules/inventory/distributed-service/flake-module.nix b/lib/inventory/distributed-service/flake-module.nix similarity index 79% rename from lib/modules/inventory/distributed-service/flake-module.nix rename to lib/inventory/distributed-service/flake-module.nix index 2d313d7a1..621e069f7 100644 --- a/lib/modules/inventory/distributed-service/flake-module.nix +++ b/lib/inventory/distributed-service/flake-module.nix @@ -13,16 +13,17 @@ in let # Common filtered source for inventory tests inventoryTestsSrc = lib.fileset.toSource { - root = ../../../..; + root = ../../..; fileset = lib.fileset.unions [ - ../../../../flake.nix - ../../../../flake.lock - (lib.fileset.fileFilter (file: file.name == "flake-module.nix") ../../../..) - ../../../../flakeModules - ../../../../lib - ../../../../nixosModules/clanCore - ../../../../machines - ../../../../inventory.json + ../../../flake.nix + ../../../flake.lock + (lib.fileset.fileFilter (file: file.name == "flake-module.nix") ../../..) + ../../../flakeModules + ../../../lib + ../../../nixosModules/clanCore + ../../../machines + ../../../inventory.json + ../../../modules ]; }; in diff --git a/lib/modules/inventory/distributed-service/inventory-adapter.nix b/lib/inventory/distributed-service/inventory-adapter.nix similarity index 100% rename from lib/modules/inventory/distributed-service/inventory-adapter.nix rename to lib/inventory/distributed-service/inventory-adapter.nix diff --git a/lib/modules/inventory/distributed-service/service-module.nix b/lib/inventory/distributed-service/service-module.nix similarity index 100% rename from lib/modules/inventory/distributed-service/service-module.nix rename to lib/inventory/distributed-service/service-module.nix diff --git a/lib/modules/inventory/distributed-service/tests/default.nix b/lib/inventory/distributed-service/tests/default.nix similarity index 100% rename from lib/modules/inventory/distributed-service/tests/default.nix rename to lib/inventory/distributed-service/tests/default.nix diff --git a/lib/modules/inventory/distributed-service/tests/exports.nix b/lib/inventory/distributed-service/tests/exports.nix similarity index 100% rename from lib/modules/inventory/distributed-service/tests/exports.nix rename to lib/inventory/distributed-service/tests/exports.nix diff --git a/lib/modules/inventory/distributed-service/tests/extraModules.nix b/lib/inventory/distributed-service/tests/extraModules.nix similarity index 100% rename from lib/modules/inventory/distributed-service/tests/extraModules.nix rename to lib/inventory/distributed-service/tests/extraModules.nix diff --git a/lib/modules/inventory/distributed-service/tests/import_module_spec.nix b/lib/inventory/distributed-service/tests/import_module_spec.nix similarity index 100% rename from lib/modules/inventory/distributed-service/tests/import_module_spec.nix rename to lib/inventory/distributed-service/tests/import_module_spec.nix diff --git a/lib/modules/inventory/distributed-service/tests/machine_imports.nix b/lib/inventory/distributed-service/tests/machine_imports.nix similarity index 100% rename from lib/modules/inventory/distributed-service/tests/machine_imports.nix rename to lib/inventory/distributed-service/tests/machine_imports.nix diff --git a/lib/modules/inventory/distributed-service/tests/oneOption.nix b/lib/inventory/distributed-service/tests/oneOption.nix similarity index 100% rename from lib/modules/inventory/distributed-service/tests/oneOption.nix rename to lib/inventory/distributed-service/tests/oneOption.nix diff --git a/lib/modules/inventory/distributed-service/tests/per_instance_args.nix b/lib/inventory/distributed-service/tests/per_instance_args.nix similarity index 100% rename from lib/modules/inventory/distributed-service/tests/per_instance_args.nix rename to lib/inventory/distributed-service/tests/per_instance_args.nix diff --git a/lib/modules/inventory/distributed-service/tests/per_machine_args.nix b/lib/inventory/distributed-service/tests/per_machine_args.nix similarity index 100% rename from lib/modules/inventory/distributed-service/tests/per_machine_args.nix rename to lib/inventory/distributed-service/tests/per_machine_args.nix diff --git a/lib/modules/inventory/distributed-service/tests/settings.nix b/lib/inventory/distributed-service/tests/settings.nix similarity index 100% rename from lib/modules/inventory/distributed-service/tests/settings.nix rename to lib/inventory/distributed-service/tests/settings.nix diff --git a/lib/modules/inventory/distributed-service/tests/specialArgs.nix b/lib/inventory/distributed-service/tests/specialArgs.nix similarity index 100% rename from lib/modules/inventory/distributed-service/tests/specialArgs.nix rename to lib/inventory/distributed-service/tests/specialArgs.nix diff --git a/lib/modules/inventory/flake-module.nix b/lib/inventory/flake-module.nix similarity index 100% rename from lib/modules/inventory/flake-module.nix rename to lib/inventory/flake-module.nix diff --git a/lib/modules/inventory/schemas/default.nix b/lib/inventory/schemas/default.nix similarity index 100% rename from lib/modules/inventory/schemas/default.nix rename to lib/inventory/schemas/default.nix diff --git a/lib/modules/flake-module.nix b/lib/modules/flake-module.nix deleted file mode 100644 index e02bf62d6..000000000 --- a/lib/modules/flake-module.nix +++ /dev/null @@ -1,58 +0,0 @@ -{ - self, - inputs, - ... -}: -let - inputOverrides = self.clanLib.flake-inputs.getOverrides inputs; -in -{ - imports = [ - ./clan/flake-module.nix - ]; - perSystem = - { - pkgs, - lib, - system, - ... - }: - let - jsonDocs = import ./eval-docs.nix { - inherit pkgs lib; - clan-core = self; - }; - in - { - legacyPackages.clan-options = jsonDocs.optionsJSON; - - # Run: nix-unit --extra-experimental-features flakes --flake .#legacyPackages.x86_64-linux.evalTests-build-clan - legacyPackages.evalTests-build-clan = import ./tests.nix { - inherit lib; - clan-core = self; - }; - checks = { - eval-lib-build-clan = pkgs.runCommand "tests" { nativeBuildInputs = [ pkgs.nix-unit ]; } '' - export HOME="$(realpath .)" - - nix-unit --eval-store "$HOME" \ - --extra-experimental-features flakes \ - --show-trace \ - ${inputOverrides} \ - --flake ${ - self.filter { - include = [ - "flakeModules" - "inventory.json" - "lib" - "machines" - "nixosModules" - ]; - } - }#legacyPackages.${system}.evalTests-build-clan - - touch $out - ''; - }; - }; -} diff --git a/lib/test/flakeModules.nix b/lib/test/flakeModules.nix index bfea2d535..e86627b24 100644 --- a/lib/test/flakeModules.nix +++ b/lib/test/flakeModules.nix @@ -62,6 +62,9 @@ # Core libraries (root + "/lib") + # modules directory + (root + "/modules") + # User-provided fileset fileset ]; diff --git a/lib/modules/tests.nix b/lib/tests.nix similarity index 98% rename from lib/modules/tests.nix rename to lib/tests.nix index 56ed2edbf..fb13d3912 100644 --- a/lib/modules/tests.nix +++ b/lib/tests.nix @@ -105,7 +105,7 @@ in self = { inputs = { }; }; - directory = ../../.; + directory = ../.; meta.name = "test-clan-core"; }; in @@ -123,7 +123,7 @@ in self = { inputs = { }; }; - directory = ../../.; + directory = ../.; meta.name = "test-clan-core"; }; in diff --git a/lib/modules/clan/computed-tags.nix b/modules/clan/computed-tags.nix similarity index 100% rename from lib/modules/clan/computed-tags.nix rename to modules/clan/computed-tags.nix diff --git a/lib/modules/clan/default.nix b/modules/clan/default.nix similarity index 100% rename from lib/modules/clan/default.nix rename to modules/clan/default.nix diff --git a/lib/modules/clan/flake-module.nix b/modules/clan/flake-module.nix similarity index 100% rename from lib/modules/clan/flake-module.nix rename to modules/clan/flake-module.nix diff --git a/lib/modules/clan/interface.nix b/modules/clan/interface.nix similarity index 100% rename from lib/modules/clan/interface.nix rename to modules/clan/interface.nix diff --git a/lib/modules/clan/module.nix b/modules/clan/module.nix similarity index 100% rename from lib/modules/clan/module.nix rename to modules/clan/module.nix diff --git a/lib/modules/clan/secrets.nix b/modules/clan/secrets.nix similarity index 100% rename from lib/modules/clan/secrets.nix rename to modules/clan/secrets.nix diff --git a/lib/modules/clan/templates.nix b/modules/clan/templates.nix similarity index 100% rename from lib/modules/clan/templates.nix rename to modules/clan/templates.nix diff --git a/lib/modules/eval-docs.nix b/modules/eval-docs.nix similarity index 100% rename from lib/modules/eval-docs.nix rename to modules/eval-docs.nix diff --git a/modules/flake-module.nix b/modules/flake-module.nix new file mode 100644 index 000000000..2911f3c27 --- /dev/null +++ b/modules/flake-module.nix @@ -0,0 +1,24 @@ +{ + self, + ... +}: +{ + imports = [ + ./clan/flake-module.nix + ]; + perSystem = + { + pkgs, + lib, + ... + }: + let + jsonDocs = import ./eval-docs.nix { + inherit pkgs lib; + clan-core = self; + }; + in + { + legacyPackages.clan-options = jsonDocs.optionsJSON; + }; +} diff --git a/lib/modules/inventoryClass/builder/default.nix b/modules/inventoryClass/builder/default.nix similarity index 100% rename from lib/modules/inventoryClass/builder/default.nix rename to modules/inventoryClass/builder/default.nix diff --git a/lib/modules/inventoryClass/builder/interface.nix b/modules/inventoryClass/builder/interface.nix similarity index 100% rename from lib/modules/inventoryClass/builder/interface.nix rename to modules/inventoryClass/builder/interface.nix diff --git a/lib/modules/inventoryClass/inventory-introspection.nix b/modules/inventoryClass/inventory-introspection.nix similarity index 100% rename from lib/modules/inventoryClass/inventory-introspection.nix rename to modules/inventoryClass/inventory-introspection.nix diff --git a/lib/modules/inventoryClass/inventory.nix b/modules/inventoryClass/inventory.nix similarity index 100% rename from lib/modules/inventoryClass/inventory.nix rename to modules/inventoryClass/inventory.nix diff --git a/lib/modules/inventoryClass/meta-interface.nix b/modules/inventoryClass/meta-interface.nix similarity index 100% rename from lib/modules/inventoryClass/meta-interface.nix rename to modules/inventoryClass/meta-interface.nix diff --git a/lib/modules/inventoryClass/roles-interface.nix b/modules/inventoryClass/roles-interface.nix similarity index 100% rename from lib/modules/inventoryClass/roles-interface.nix rename to modules/inventoryClass/roles-interface.nix diff --git a/lib/modules/inventoryClass/service-list-from-inputs.nix b/modules/inventoryClass/service-list-from-inputs.nix similarity index 100% rename from lib/modules/inventoryClass/service-list-from-inputs.nix rename to modules/inventoryClass/service-list-from-inputs.nix diff --git a/lib/modules/machineModules/forName.nix b/modules/machineModules/forName.nix similarity index 100% rename from lib/modules/machineModules/forName.nix rename to modules/machineModules/forName.nix diff --git a/lib/modules/machineModules/overridePkgs.nix b/modules/machineModules/overridePkgs.nix similarity index 100% rename from lib/modules/machineModules/overridePkgs.nix rename to modules/machineModules/overridePkgs.nix diff --git a/pkgs/clan-cli/flake-module.nix b/pkgs/clan-cli/flake-module.nix index 0a836cf6c..f2b1bf545 100644 --- a/pkgs/clan-cli/flake-module.nix +++ b/pkgs/clan-cli/flake-module.nix @@ -21,6 +21,7 @@ "clanModules" "flakeModules" "lib" + "modules" "nixosModules" "flake.lock" "templates" diff --git a/pkgs/option-search/flake-module.nix b/pkgs/option-search/flake-module.nix index b74b2b4a4..284e92dff 100644 --- a/pkgs/option-search/flake-module.nix +++ b/pkgs/option-search/flake-module.nix @@ -118,7 +118,7 @@ _file = "docs flake-module"; imports = [ { _module.args = { inherit clanLib; }; } - (import ../../lib/modules/inventoryClass/roles-interface.nix { + (import ../../modules/inventoryClass/roles-interface.nix { nestedSettingsOption = mkOption { type = types.raw; description = ''