diff --git a/flake.nix b/flake.nix index 0ab785f..fcd6054 100644 --- a/flake.nix +++ b/flake.nix @@ -17,10 +17,6 @@ supportedSystems = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; colmenaOptions = import ./src/nix/hive/options.nix; colmenaModules = import ./src/nix/hive/modules.nix; - evalNix = import ./src/nix/hive/eval.nix { - hermetic = true; - inherit colmenaOptions colmenaModules; - }; in utils.lib.eachSystem supportedSystems (system: let pkgs = import nixpkgs { inherit system; @@ -33,12 +29,24 @@ # Full user manual manual = let + suppressModuleArgsDocs = { lib, ... }: { + options = { + _module.args = lib.mkOption { + internal = true; + }; + }; + }; colmena = self.packages.${system}.colmena; deploymentOptionsMd = (pkgs.nixosOptionsDoc { - options = evalNix.docs.deploymentOptions pkgs; + inherit (pkgs.lib.evalModules { + modules = [ colmenaOptions.deploymentOptions suppressModuleArgsDocs]; + specialArgs = { name = "nixos"; nodes = {}; }; + }) options; }).optionsCommonMark; metaOptionsMd = (pkgs.nixosOptionsDoc { - options = evalNix.docs.metaOptions pkgs; + inherit (pkgs.lib.evalModules { + modules = [ colmenaOptions.metaOptions suppressModuleArgsDocs]; + }) options; }).optionsCommonMark; in pkgs.callPackage ./manual { inherit colmena deploymentOptionsMd metaOptionsMd; @@ -74,7 +82,10 @@ overlay = final: prev: { colmena = final.callPackage ./package.nix { }; }; - inherit (evalNix) nixosModules; + nixosModules = { + inherit (colmenaOptions) deploymentOptions metaOptions; + inherit (colmenaModules) keyChownModule keyServiceModule; + }; }; nixConfig = { diff --git a/src/nix/hive/eval.nix b/src/nix/hive/eval.nix index a0e489f..408b5c9 100644 --- a/src/nix/hive/eval.nix +++ b/src/nix/hive/eval.nix @@ -167,42 +167,6 @@ let value = evalNode name configs; }) nodeNames); - # Exported attributes - # - # Functions are intended to be called with `nix-instantiate --eval --json` - - nodes = listToAttrs (map (name: { - inherit name; - value = evalNode name (configsFor name); - }) nodeNames); - - toplevel = lib.mapAttrs (name: eval: eval.config.system.build.toplevel) nodes; - - deploymentConfig = lib.mapAttrs (name: eval: eval.config.deployment) nodes; - - deploymentConfigSelected = names: - listToAttrs (map (name: { inherit name; value = nodes.${name}.config.deployment; }) names); - - evalAll = evalSelected nodeNames; - evalSelected = names: let - selected = lib.filterAttrs (name: _: elem name names) toplevel; - in selected; - evalSelectedDrvPaths = names: lib.mapAttrs (k: v: v.drvPath) (evalSelected names); - - introspect = function: function { - inherit lib; - pkgs = nixpkgs; - nodes = uncheckedNodes; - }; - - suppressModuleArgsDocs = { lib, ... }: { - options = { - _module.args = lib.mkOption { - internal = true; - }; - }; - }; - # Add required config Key here since we don't want to eval nixpkgs metaConfigKeys = [ "name" "description" @@ -210,33 +174,16 @@ let "allowApplyAll" ]; +in rec { + # Exported attributes + # + # Functions are intended to be called with `nix-instantiate --eval --json` + nodes = listToAttrs (map (name: { inherit name; value = evalNode name (configsFor name); }) nodeNames); + toplevel = lib.mapAttrs (_: v: v.config.system.build.toplevel) nodes; + deploymentConfig = lib.mapAttrs (_: v: v.config.deployment) nodes; + deploymentConfigSelected = names: lib.filterAttrs (name: _: elem name names) deploymentConfig; + evalSelected = names: lib.filterAttrs (name: _: elem name names) toplevel; + evalSelectedDrvPaths = names: lib.mapAttrs (_: v: v.drvPath) (evalSelected names); metaConfig = lib.filterAttrs (n: v: elem n metaConfigKeys) hive.meta; -in { - inherit - nodes toplevel - deploymentConfig deploymentConfigSelected - evalAll evalSelected evalSelectedDrvPaths introspect - metaConfig; - - meta = hive.meta; - - nixosModules = { inherit (colmenaOptions) deploymentOptions; }; - - docs = { - deploymentOptions = pkgs: let - eval = pkgs.lib.evalModules { - modules = [ colmenaOptions.deploymentOptions suppressModuleArgsDocs ]; - specialArgs = { - name = "nixos"; - nodes = {}; - }; - }; - in eval.options; - - metaOptions = pkgs: let - eval = pkgs.lib.evalModules { - modules = [ colmenaOptions.metaOptions suppressModuleArgsDocs ]; - }; - in eval.options; - }; + introspect = f: f { inherit lib; pkgs = nixpkgs; nodes = uncheckedNodes; }; }