From 761e8b0ec5ecd12d507ea44f09ad0e4c330a2732 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Thu, 26 Jun 2025 15:20:05 +0200 Subject: [PATCH] refactor: clanLib buildClan --- flakeModules/clan.nix | 4 +- lib/clanTest/flake-module.nix | 2 +- lib/default.nix | 84 +++++++++++++++++++++-------------- lib/modules/default.nix | 22 ++++----- lib/modules/eval-docs.nix | 2 +- 5 files changed, 66 insertions(+), 48 deletions(-) diff --git a/flakeModules/clan.nix b/flakeModules/clan.nix index f198e5bdc..fd9d59d98 100644 --- a/flakeModules/clan.nix +++ b/flakeModules/clan.nix @@ -9,7 +9,7 @@ clan-core: let inherit (lib) types; - buildClanModule = clan-core.clanLib.buildClanModule; + clanLib = clan-core.clanLib; in { @@ -40,7 +40,7 @@ in # inventoryInterface = {}; }; modules = [ - buildClanModule.flakePartsModule + clanLib.module ]; }; }; diff --git a/lib/clanTest/flake-module.nix b/lib/clanTest/flake-module.nix index 5912d9300..213cda01f 100644 --- a/lib/clanTest/flake-module.nix +++ b/lib/clanTest/flake-module.nix @@ -197,7 +197,7 @@ in self = throw "set clan.directory in the test"; }; modules = [ - clanLib.buildClanModule.flakePartsModule + clanLib.module { _prefix = [ "checks" diff --git a/lib/default.nix b/lib/default.nix index 36cd614ef..7a7ff026e 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -8,40 +8,58 @@ # Produces the # 'clanLib' attribute set # Wrapped with fix, so we can depend on other clanLib functions without passing the whole flake -lib.fix (clanLib: { - /** - Like callPackage, but doesn't try to automatically detect arguments - 'lib' and 'clanLib' are always passed, plus the additional arguments - */ - callLib = file: args: import file ({ inherit lib clanLib; } // args); +lib.fix ( + clanLib: + let + buildClanLib = ( + clanLib.callLib ./modules { + clan-core = self; + inherit nixpkgs nix-darwin; + } + ); + in + { + module = { + _class = "clan"; + _module.args = { + inherit clanLib; + }; + imports = [ + ./modules/clan/default.nix + ]; + }; - # ------------------------------------ - buildClan = clanLib.buildClanModule.buildClanWith { - clan-core = self; - inherit nixpkgs nix-darwin; - }; - evalService = clanLib.callLib ./modules/inventory/distributed-service/evalService.nix { }; - # ------------------------------------ - # ClanLib functions - evalClan = clanLib.callLib ./modules/inventory/eval-clan-modules { }; - buildClanModule = clanLib.callLib ./modules { }; - inventory = clanLib.callLib ./modules/inventory { }; - modules = clanLib.callLib ./modules/inventory/frontmatter { }; - test = clanLib.callLib ./test { }; - # Custom types - types = clanLib.callLib ./types { }; + inherit (buildClanLib) + buildClan + ; + /** + Like callPackage, but doesn't try to automatically detect arguments + 'lib' and 'clanLib' are always passed, plus the additional arguments + */ + callLib = file: args: import file ({ inherit lib clanLib; } // args); - # Plain imports. - introspection = import ./introspection { inherit lib; }; - jsonschema = import ./jsonschema { inherit lib; }; - facts = import ./facts.nix { inherit lib; }; + evalService = clanLib.callLib ./modules/inventory/distributed-service/evalService.nix { }; + # ------------------------------------ + # ClanLib functions + evalClan = clanLib.callLib ./modules/inventory/eval-clan-modules { }; + inventory = clanLib.callLib ./modules/inventory { }; + modules = clanLib.callLib ./modules/inventory/frontmatter { }; + test = clanLib.callLib ./test { }; + # Custom types + types = clanLib.callLib ./types { }; - # flakes - flakes = clanLib.callLib ./flakes.nix { - clan-core = self; - }; + # Plain imports. + introspection = import ./introspection { inherit lib; }; + jsonschema = import ./jsonschema { inherit lib; }; + facts = import ./facts.nix { inherit lib; }; - # deprecated - # remove when https://git.clan.lol/clan/clan-core/pulls/3212 is implemented - inherit (self.inputs.nix-select.lib) select; -}) + # flakes + flakes = clanLib.callLib ./flakes.nix { + clan-core = self; + }; + + # deprecated + # remove when https://git.clan.lol/clan/clan-core/pulls/3212 is implemented + inherit (self.inputs.nix-select.lib) select; + } +) diff --git a/lib/modules/default.nix b/lib/modules/default.nix index f8dbfa9fd..89aec96f2 100644 --- a/lib/modules/default.nix +++ b/lib/modules/default.nix @@ -4,19 +4,19 @@ { lib, clanLib, - ... + clan-core, + nixpkgs, + nix-darwin, }: rec { - # TODO: rename to clanModule - flakePartsModule = { - _module.args = { - inherit clanLib; - }; - imports = [ - ./clan/default.nix - ]; + # ------------------------------------ + buildClan = buildClanWith { + inherit + clan-core + nixpkgs + nix-darwin + ; }; - /** A function that takes some arguments such as 'clan-core' and returns the 'buildClan' function. @@ -61,7 +61,7 @@ rec { modules = [ # buildClan arguments are equivalent to specifying a module m - flakePartsModule + clanLib.module ]; }; in diff --git a/lib/modules/eval-docs.nix b/lib/modules/eval-docs.nix index 5fed5e09c..e6853badc 100644 --- a/lib/modules/eval-docs.nix +++ b/lib/modules/eval-docs.nix @@ -9,7 +9,7 @@ let # @enzime why do we need this here? class = "nixos"; modules = [ - clanLib.buildClanModule.flakePartsModule + clanLib.module ]; }; evalDocs = pkgs.nixosOptionsDoc {