From a0d1b09b1da1f5a2165b9e4ee9c5c6e05925c615 Mon Sep 17 00:00:00 2001 From: DavHau Date: Sat, 2 Sep 2023 18:28:31 +0200 Subject: [PATCH] clanCore module: add clanSchema top level option --- checks/impure/flake-module.nix | 7 +++++++ nixosModules/clanCore/flake-module.nix | 19 ++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/checks/impure/flake-module.nix b/checks/impure/flake-module.nix index 9add525bf..d8018061b 100644 --- a/checks/impure/flake-module.nix +++ b/checks/impure/flake-module.nix @@ -5,9 +5,13 @@ check-clan-template = pkgs.writeShellScriptBin "check-clan-template" '' #!${pkgs.bash}/bin/bash set -euo pipefail + export TMPDIR=$(${pkgs.coreutils}/bin/mktemp -d) trap "${pkgs.coreutils}/bin/chmod -R +w '$TMPDIR'; ${pkgs.coreutils}/bin/rm -rf '$TMPDIR'" EXIT + export PATH="${lib.makeBinPath [ + pkgs.coreutils + pkgs.curl pkgs.gitMinimal pkgs.gnugrep pkgs.jq @@ -35,6 +39,9 @@ echo check machine1 appears in nixosConfigurations nix flake show --json | jq '.nixosConfigurations' | grep -q machine1 + + echo check machine1 jsonschema can be evaluated + nix eval .#nixosConfigurations.machine1.config.clanSchema ''; }; in diff --git a/nixosModules/clanCore/flake-module.nix b/nixosModules/clanCore/flake-module.nix index da8fa0e63..437f54874 100644 --- a/nixosModules/clanCore/flake-module.nix +++ b/nixosModules/clanCore/flake-module.nix @@ -1,8 +1,18 @@ { self, inputs, lib, ... }: { - flake.nixosModules.clanCore = { pkgs, ... }: { + flake.nixosModules.clanCore = { pkgs, options, ... }: { + imports = [ + ./secrets + ./zerotier.nix + inputs.sops-nix.nixosModules.sops + ]; + options.clanSchema = lib.mkOption { + type = lib.types.attrs; + description = "The json schema for the .clan options namespace"; + default = self.lib.jsonschema.parseOptions options.clan; + }; options.clanCore = { clanDir = lib.mkOption { - type = lib.types.str; + type = lib.types.either lib.types.path lib.types.str; description = '' the location of the flake repo, used to calculate the location of facts and secrets ''; @@ -23,10 +33,5 @@ utility outputs for clan management of this machine ''; }; - imports = [ - ./secrets - ./zerotier.nix - inputs.sops-nix.nixosModules.sops - ]; }; }