diff --git a/default.nix b/default.nix index db54ef1..f287c93 100644 --- a/default.nix +++ b/default.nix @@ -24,69 +24,70 @@ let value = import inputs.nixpkgs { system = plat; }; }) machines_plats ); -in -rec { + self = rec { - nixosModules = builtins.listToAttrs ( - map (x: { - name = x; - value = import (./modules + "/${x}"); - }) (builtins.attrNames (builtins.readDir ./modules)) - ); + nixosModules = builtins.listToAttrs ( + map (x: { + name = x; + value = import (./modules + "/${x}"); + }) (builtins.attrNames (builtins.readDir ./modules)) + ); - nixosConfigurations = builtins.mapAttrs ( - name: value: - (mkMachine { - inherit name; - host-config = value; - modules = nixosModules; - nixpkgs = lib.snowfield.${name}.nixpkgs_version; - system = lib.snowfield.${name}.arch; - home-manager = lib.snowfield.${name}.hm_version; - }) - ) (lib.importConfig ./machines); + nixosConfigurations = builtins.mapAttrs ( + name: value: + (mkMachine { + inherit name self; + host-config = value; + modules = nixosModules; + nixpkgs = lib.snowfield.${name}.nixpkgs_version; + system = lib.snowfield.${name}.arch; + home-manager = lib.snowfield.${name}.hm_version; + }) + ) (lib.importConfig ./machines); - colmena = { - meta = { - nodeNixpkgs = builtins.mapAttrs ( - n: _: import lib.luj.machines.${n}.nixpkgs_version - ) nixosConfigurations; - nodeSpecialArgs = builtins.mapAttrs ( - n: v: v._module.specialArgs // { lib = mkLibForMachine n; } - ) nixosConfigurations; - }; - } // builtins.mapAttrs (_: v: { imports = v._module.args.modules; }) nixosConfigurations; + colmena = { + meta = { + nodeNixpkgs = builtins.mapAttrs ( + n: _: import lib.luj.machines.${n}.nixpkgs_version + ) nixosConfigurations; + nodeSpecialArgs = builtins.mapAttrs ( + n: v: v._module.specialArgs // { lib = mkLibForMachine n; } + ) nixosConfigurations; + }; + } // builtins.mapAttrs (_: v: { imports = v._module.args.modules; }) nixosConfigurations; - packages = builtins.listToAttrs ( - builtins.map (plat: { - name = plat; - value = - lib.filterAttrs - ( - _name: value: + packages = builtins.listToAttrs ( + builtins.map (plat: { + name = plat; + value = + lib.filterAttrs ( - !lib.hasAttrByPath [ - "meta" - "platforms" - ] value + _name: value: + ( + !lib.hasAttrByPath [ + "meta" + "platforms" + ] value + ) + || builtins.elem plat value.meta.platforms ) - || builtins.elem plat value.meta.platforms - ) - ( - builtins.listToAttrs ( - builtins.map (e: { - name = e; - value = nixpkgs_plats.${plat}.callPackage (./packages + "/${e}") { }; - }) (builtins.attrNames (builtins.readDir ./packages)) - ) - ); - }) machines_plats - ); + ( + builtins.listToAttrs ( + builtins.map (e: { + name = e; + value = nixpkgs_plats.${plat}.callPackage (./packages + "/${e}") { }; + }) (builtins.attrNames (builtins.readDir ./packages)) + ) + ); + }) machines_plats + ); - inherit (lib.luj) machines; + inherit (lib.luj) machines; - checks = { - inherit packages; - machines = lib.mapAttrs (_: v: v.config.system.build.toplevel) nixosConfigurations; + checks = { + inherit packages; + machines = lib.mapAttrs (_: v: v.config.system.build.toplevel) nixosConfigurations; + }; }; -} +in +self diff --git a/lib/mkmachine.nix b/lib/mkmachine.nix index 8a01cbe..63f9952 100644 --- a/lib/mkmachine.nix +++ b/lib/mkmachine.nix @@ -14,6 +14,7 @@ in nixpkgs ? inputs.nixpkgs, system ? "x86_64-linux", home-manager ? inputs.home-manager, + self, }: let pkgs = import nixpkgs { inherit system; }; @@ -23,6 +24,7 @@ import "${nixpkgs}/nixos/lib/eval-config.nix" { lib = pkgs.lib.extend (import ./default.nix inputs); specialArgs = { inherit inputs; + inherit (self) nixosConfigurations; }; modules = builtins.attrValues modules ++ [ ../machines/base.nix