hsjobeki
7b4b700c33
Merge pull request 'Refactor(inventory): move prio 'introspection' into inventoryClass to minimize the 'clanInternals' api' ( #3440 ) from hsjobeki/clan-core:ui-fixups into main
...
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/3440
2025-04-30 10:24:34 +00:00
Johannes Kirschbauer
e07551cecf
Refactor(inventory): move prio 'introspection' into inventoryClass to minimize the 'clanInternals' api
2025-04-30 11:02:58 +02:00
Johannes Kirschbauer
3d09c98ed3
Checks: add json-compat check wrapper to ensure all clan.modules stay json-compatible
2025-04-29 15:31:02 +02:00
Johannes Kirschbauer
a4a1363195
refactor(clan.service): make evalClanService a standalone function to interact with standalone modules
2025-04-29 15:12:44 +02:00
Johannes Kirschbauer
9b5f100ac6
Feat(clan.service): require roles.interface to be json serializable
2025-04-29 14:42:47 +02:00
Brian McGee
a438fe77a7
feat: configure age plugins for SOPS in buildClan
2025-04-29 16:02:32 +10:00
Michael Hoang
5879c48616
container-test-driver: fix SSH not working inside container tests
2025-04-29 15:10:09 +10:00
Michael Hoang
7d46237b67
container-test-driver: add Machine.fail
2025-04-29 14:57:58 +10:00
DavHau
ebada396dd
build-clan: Throw better error when _class is not provided by nixpkgs
2025-04-28 15:49:14 +00:00
Michael Hoang
6c8ef6e9be
cli: don't use select from clanLib
2025-04-28 12:52:00 +10:00
hsjobeki
5fc1f2cdbb
Merge pull request 'Chore: remove unused legacy endpoints' ( #3418 ) from hsjobeki/clan-core:chores-remove-unused into main
...
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/3418
2025-04-27 11:25:00 +00:00
Johannes Kirschbauer
b87d5a238c
chore: remove unused moduleSchemas and related API endpoint for legacy modules
...
We didn't reach the state where we would display these schemas in the
UI.
We might need to wire this up in a similar way for the newer
clan.services
2025-04-27 13:14:09 +02:00
Johannes Kirschbauer
7007b7d62e
refactor: rename clanLib.values to introspection
2025-04-27 13:10:42 +02:00
Johannes Kirschbauer
6dfc324661
Feat(clan.service): init automatic assertions for api schema checks
2025-04-27 11:49:56 +02:00
Johannes Kirschbauer
8495106ec4
feat(services): init feature flags in the module manifest: 'manifest.features.API'
2025-04-27 11:07:45 +02:00
Michael Hoang
cc4b009f06
lib: move select.select -> select for backwards compat with old CLIs
2025-04-25 17:30:06 +10:00
lassulus
5feccf4e57
Refactor select with new maybe selector
...
This is a great refactor of the select functionality in the flake class.
This now uses the same parser as the nix code, but runs it in python for
nice stacktraces.
Also we now have a maybe selector which can be used by prepending the
selector with a ?
Tests have been expanded to make sure the code is more stable and easier
to understand
2025-04-25 16:26:45 +10:00
Johannes Kirschbauer
a589736f9b
lib/tests: fix container driver module path
2025-04-23 16:23:09 +02:00
Johannes Kirschbauer
f6e514ec6f
Refactor: move checks/lib into lib/ to avoid duplicate lib
...
Lets avoid the mistake of nixpkgs having multiple
libs
2025-04-23 16:19:16 +02:00
DavHau
e2fb237c33
inventory tests: use containers by default
2025-04-23 19:49:02 +07:00
Michael Hoang
5cadb0cfbc
Merge pull request 'nixosModules/clanCore: support nix-darwin' ( #3287 ) from nix-darwin into main
...
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/3287
2025-04-22 13:50:38 +00:00
Michael Hoang
f40ab5c379
docs: always evaluate with class of nixos
2025-04-22 23:39:47 +10:00
Michael Hoang
a575894a83
nixosModules/clanCore: support nix-darwin
2025-04-22 23:14:03 +10:00
Johannes Kirschbauer
999c47dbed
Checks: add nixosIntegration test example to hello-service
2025-04-22 06:32:32 +00:00
hsjobeki
5908aed2c7
Merge pull request 'Inventory/tags: init {nixos,darwin} tags' ( #3370 ) from hsjobeki/clan-core:tags-2 into main
...
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/3370
2025-04-21 15:27:13 +00:00
Johannes Kirschbauer
cd0e8eafce
Fix: manually define empty tags for testing
2025-04-21 17:17:56 +02:00
Johannes Kirschbauer
9d413a7682
Inventory/tags: init {nixos,darwin} tags
2025-04-21 16:43:15 +02:00
Johannes Kirschbauer
b791656694
clanLib: init flakeModules for better testing
2025-04-21 16:10:05 +02:00
Michael Hoang
41ff4a4247
build-clan: fix constructing nix-darwin machines
2025-04-17 20:23:54 +02:00
Valentin Gagarin
ebd5afe8f5
fixup(jsonschema): test attrsOf submodules with valid value
2025-04-16 16:55:50 +02:00
Valentin Gagarin
6a2e81373c
lib/jsonschema: render defaults for submodule options
...
this relaxes the constraint that options of type `submodule` are always
required, and will render benign default values.
2025-04-16 16:55:46 +02:00
Johannes Kirschbauer
9f7e9ca9df
feat(jsonschema): add test for attrsof submodule
2025-04-16 14:48:49 +02:00
Valentin Gagarin
e28681c4f2
lib/jsonschema: make attrs required
...
Before the change, modules of the form
```nix
{ lib, ... }: {
foo.bar = lib.mkOption {
# ...
};
}
```
or
```nix
{ lib, ... }: {
foo = lib.mkOption {
type = lib.types.subModule {
bar = lib.mkOption {
# ...
};
};
};
}
```
would not render with `foo` as required, which is not faithful to the
module system's semantics.
This change also tests that fields with defaults are not marked required.
Note that submodule options cannot have their defaults rendered to JSON
schema, and are therefore always marked required.
Architecturally this change is rather unfortunate: So far the checks for
defaults happen in the rendering (using `isDefault`) and not in the parsing,
but here we're adding a field to `$exportedModuleInfo`. While strictly
speaking we probably don't want to consider requiredness as module-level
information, it seems more reasonable to me to do it that way since at
the JSON schema level we have lost the distinction between `attrs`,
`attrsOf`, `submodule`.
2025-04-16 13:20:00 +02:00
Johannes Kirschbauer
2796038254
chore(test/makeTestClan): document all options, remove magic specialArgs
2025-04-16 10:33:32 +02:00
Johannes Kirschbauer
7bdb2cabf9
fix: rename folder lib/tests -> lib/test to be consistent with the attribute name
2025-04-16 10:04:31 +02:00
Johannes Kirschbauer
8ae0f5ddcb
tests(clan): move test-inventory.nix to clanLib. And name it 'makeTestClan'
...
Exposing the function via clanLib makes it more accessible to clan modules
This allows each module to define its own test without needing to depend on any fileSystem path assumptions in the clan-core repo
2025-04-15 18:17:40 +02:00
Johannes Kirschbauer
f331295dd5
feat(buildClan): expose {nixosModules,darwinModules} from clanInternals
...
These are the exact same modules that where used internally to construct the corresponding
'nixosConfiguration', 'darwinConfiguration'
They can be externally used, and would yield the same result
Given that you pass the same 'specialArgs'
2025-04-15 17:25:57 +02:00
Johannes Kirschbauer
9800255a2c
refactor(buildClan): simplify pkgs overriding logic
2025-04-15 16:05:57 +02:00
Johannes Kirschbauer
e68ab67112
refactor(buildClan): move modules into 'forName' and import the correct core module depending on class
2025-04-15 15:29:01 +02:00
Johannes Kirschbauer
d264e262bd
fixup(buildClan): use clan.inventory instead of refering to the clanInternals dumping ground within the module
2025-04-15 15:10:08 +02:00
Johannes Kirschbauer
af04bf547f
fixup(buildClan): split up the inner-module into: {forSystem, forName}
...
I am preparing this such that we can move the forName modules into the
defaults for the deferred module outputs and the forSystem modules are
added later and only for the 'configsPerSystem' where we actually need
the system modules
2025-04-15 15:02:37 +02:00
Johannes Kirschbauer
14ace40820
refactor: buildClan output; output deferred modules instead of nixosConfig
2025-04-15 14:25:02 +02:00
Michael Hoang
5cc1d823aa
build-clan: drop unused machinesFunc
2025-04-15 13:30:28 +02:00
Michael Hoang
95fd1ec7eb
build-clan: expose Clan configuration as a module
2025-04-14 16:04:06 +02:00
Johannes Kirschbauer
35379d3b86
Reapply "Merge pull request 'chore(buildClan): move machineClass option into inventory.machines submodule' ( #3259 ) from hsjobeki/clan-core:buildclan-cleanup into main"
...
This reverts commit 62dfb23e41 .
2025-04-09 18:16:35 +02:00
Johannes Kirschbauer
c344d57298
fix(checks/data-mesher): format, dont pass a duplicate data-mesher module
2025-04-09 18:03:04 +02:00
Johannes Kirschbauer
ec2aee3013
fix(eval/inventory): fix some test arguments to buildInventory
2025-04-09 17:38:06 +02:00
Johannes Kirschbauer
05c45371af
feat(buildInventory): move instance resolution into buildInventory
...
Such that buildClan doesn't have to compose the results
buildInventory should be more self contained. But it is NOT meant a
public API! use buildClan argument 'inventory' instead
2025-04-09 17:31:35 +02:00
Johannes Kirschbauer
a6a79e83a0
treewide(clanLib): rename all occurences of {clan-core,self}.lib to 'clanLib'
2025-04-09 11:32:46 +02:00
Johannes Kirschbauer
c357cfa29f
chore(lib/buildClan): remove dependencies {nixpkgs,nix-darwin} from the clanLib file
2025-04-08 22:13:46 +02:00