forked from clan/clan-core
49 lines
991 B
Nix
49 lines
991 B
Nix
{
|
|
self,
|
|
runCommand,
|
|
check-jsonschema,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
clanModules.clanCore = self.nixosModules.clanCore;
|
|
|
|
baseModule = {
|
|
imports = (import (pkgs.path + "/nixos/modules/module-list.nix")) ++ [
|
|
{
|
|
nixpkgs.hostPlatform = "x86_64-linux";
|
|
clanCore.clanName = "dummy";
|
|
}
|
|
];
|
|
};
|
|
|
|
optionsFromModule =
|
|
module:
|
|
let
|
|
evaled = lib.evalModules {
|
|
modules = [
|
|
module
|
|
baseModule
|
|
];
|
|
};
|
|
in
|
|
evaled.options.clan;
|
|
|
|
clanModuleSchemas = lib.mapAttrs (
|
|
_: module: self.lib.jsonschema.parseOptions (optionsFromModule module)
|
|
) clanModules;
|
|
|
|
mkTest =
|
|
name: schema:
|
|
runCommand "schema-${name}" { } ''
|
|
${check-jsonschema}/bin/check-jsonschema \
|
|
--check-metaschema ${builtins.toFile "schema-${name}" (builtins.toJSON schema)}
|
|
touch $out
|
|
'';
|
|
in
|
|
lib.mapAttrs' (name: schema: {
|
|
name = "schema-${name}";
|
|
value = mkTest name schema;
|
|
}) clanModuleSchemas
|