clan services: use service modules from clan-core by default

Users will use clan-core services first before making their own. Therefore this is a better default. Also it allow us to simplify rendering of our docs
This commit is contained in:
DavHau
2025-06-30 16:03:48 +07:00
parent 76ca59e9d3
commit f966f5b745
6 changed files with 43 additions and 37 deletions

View File

@@ -205,9 +205,6 @@ in
nixpkgs
nix-darwin
;
# By default clan.directory defaults to self, but we don't
# have a sensible default for self here
self = throw "set clan.directory in the test";
};
modules = [
clan-core.modules.clan.default

View File

@@ -31,7 +31,7 @@ lib.fix (
# ------------------------------------
# ClanLib functions
evalClan = clanLib.callLib ./modules/inventory/eval-clan-modules { };
inventory = clanLib.callLib ./modules/inventory { };
inventory = clanLib.callLib ./modules/inventory { clan-core = self; };
modules = clanLib.callLib ./modules/inventory/frontmatter { };
test = clanLib.callLib ./test { };
# Custom types

View File

@@ -238,7 +238,7 @@ in
imports = [
../inventoryClass/builder/default.nix
(lib.modules.importApply ../inventoryClass/service-list-from-inputs.nix {
inherit localModuleSet flakeInputs clanLib;
inherit flakeInputs clanLib localModuleSet;
})
{
inherit inventory directory;

View File

@@ -1,6 +1,12 @@
{ lib, clanLib }:
{
lib,
clanLib,
clan-core,
}:
let
services = clanLib.callLib ./distributed-service/inventory-adapter.nix { };
services = clanLib.callLib ./distributed-service/inventory-adapter.nix {
inherit clan-core;
};
in
{
inherit (services) mapInstances;

View File

@@ -12,10 +12,11 @@
{
lib,
clanLib,
clan-core,
...
}:
let
resolveModule = import ./resolveModule.nix { inherit lib; };
resolveModule = import ./resolveModule.nix { inherit lib clan-core; };
in
{
mapInstances =

View File

@@ -1,19 +1,12 @@
{ lib }:
{ lib, clan-core }:
{
moduleSpec,
flakeInputs,
localModuleSet,
}:
let
resolvedModuleSet =
# If the module.name is self then take the modules defined in the flake
# Otherwise its an external input which provides the modules via 'clan.modules' attribute
if moduleSpec.input == null then
localModuleSet
else
let
input =
flakeInputs.${moduleSpec.input} or (throw ''
inputName = if moduleSpec.input == null then "<clan>" else moduleSpec.input;
inputError = throw ''
Flake doesn't provide input with name '${moduleSpec.input}'
Choose one of the following inputs:
@@ -29,15 +22,24 @@ let
...
- module.input = "${moduleSpec.input}"
'');
clanAttrs =
input.clan
or (throw "It seems the flake input ${moduleSpec.input} doesn't export any clan resources");
'';
resolvedModuleSet =
# If the module.name is self then take the modules defined in the flake
# Otherwise its an external input which provides the modules via 'clan.modules' attribute
let
input =
if moduleSpec.input == null then
clan-core
else if moduleSpec.input == "self" then
{ clan.modules = localModuleSet; }
else
flakeInputs.${moduleSpec.input} or inputError;
in
clanAttrs.modules;
input.clan.modules
or (throw "flake input ${moduleSpec.input} doesn't export any clan services via the `clan.modules` output attribute");
resolvedModule =
resolvedModuleSet.${moduleSpec.name}
or (throw "flake doesn't provide clan-module with name ${moduleSpec.name}");
or (throw "flake input '${inputName}' doesn't provide clan-module with name ${moduleSpec.name}");
in
resolvedModule