diff --git a/examples b/examples index 366b4af..1b187f1 160000 --- a/examples +++ b/examples @@ -1 +1 @@ -Subproject commit 366b4af9ec67a90c061096760fae96b4bd681d76 +Subproject commit 1b187f137a08070e1be9aa52386d1a8d0f1ccbff diff --git a/flake.lock b/flake.lock index 7335336..0e8cdef 100644 --- a/flake.lock +++ b/flake.lock @@ -29,11 +29,11 @@ }, "call-flake": { "locked": { - "lastModified": 1712131910, + "lastModified": 1712452916, "narHash": "sha256-B9uOqvhDhHnK+kwW/mfI/rAtlXuYlipdOss/L7gBOjs=", "owner": "divnix", "repo": "call-flake", - "rev": "169b5b0aaa3faeac1f851b7cc4bbd60d9163dc56", + "rev": "9da1222f5227ff549642c159096c3dc9bbc73dcb", "type": "github" }, "original": { @@ -81,11 +81,11 @@ "yants": "yants" }, "locked": { - "lastModified": 1712302776, - "narHash": "sha256-d26wSTUxEfJi4JYfcCkixDNP61X7pPz9YG6Piu9xTbg=", + "lastModified": 1713476208, + "narHash": "sha256-SVLE0MbIEz61IAYt4xTMQaD01b4a+TEDlgNFyw4KNHo=", "owner": "gtrunsec", "repo": "flops", - "rev": "277617cc14f0683264e24b301ccc48c3d3faebaf", + "rev": "3bbb51be3bb2fbf27b2cd7f8261974881725a60b", "type": "github" }, "original": { @@ -117,11 +117,11 @@ }, "nixlib": { "locked": { - "lastModified": 1711846064, - "narHash": "sha256-cqfX0QJNEnge3a77VnytM0Q6QZZ0DziFXt6tSCV8ZSc=", + "lastModified": 1712450863, + "narHash": "sha256-K6IkdtMtq9xktmYPj0uaYc8NsIqHuaAoRBaMgu9Fvrw=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "90b1a963ff84dc532db92f678296ff2499a60a87", + "rev": "3c62b6a12571c9a7f65ab037173ee153d539905f", "type": "github" }, "original": { diff --git a/local/lock/flake.lock b/local/lock/flake.lock index be09147..a802821 100644 --- a/local/lock/flake.lock +++ b/local/lock/flake.lock @@ -1035,11 +1035,11 @@ ] }, "locked": { - "lastModified": 1711620290, - "narHash": "sha256-RyPqtIpddElcfcGIcIoQVx1xcc4icXvfZEREwTGaWD0=", + "lastModified": 1712767958, + "narHash": "sha256-1vsBKZ2oNgbOGAE+0FCvrj3Dmat1cbgJQ9oOzaHjiXk=", "owner": "tweag", "repo": "nickel", - "rev": "4dc7696a294e4f9bc5e20668d4693ebdb2dc3b7d", + "rev": "98f05f90ff82bc29f5b37974a78d6cab0e63b509", "type": "github" }, "original": { diff --git a/src/pops/hive.nix b/src/pops/hive.nix index 8eb4727..d8fa605 100644 --- a/src/pops/hive.nix +++ b/src/pops/hive.nix @@ -7,55 +7,76 @@ lib, flops, super, + root, + projectRoot, }: let inherit (POP) pop; - - genColmenaFromHosts = hosts: { - meta = { - nodes = lib.mapAttrs (hostName: hostConfig: { - inherit (hostConfig.meta.colmena) imports deployment; - }) hosts; - nodeNixpkgs = lib.mapAttrs ( - hostName: hostConfig: (super.types.hive.colmena hostConfig.meta.colmena).nixpkgs - ) hosts; - }; - }; + hosts = root.load { src = projectRoot + "/templates/nixos/units/nixos/hosts"; }; in -setHosts: -pop { - defaults = { - hosts = lib.mapAttrs ( - hostName: hostConfig: - (hostConfig) - // { - meta = (hostConfig.meta or { }) // (removeAttrs hostConfig [ "meta" ]); - } - ) setHosts; - pops = { - omnibus = { }; - nixosProfiles = { }; - nixosModules = { }; - }; - exports = { - hosts = { }; +/* + bee = { + home = {}; + nixpkgs = {}; + nixos = {}; + } +*/ +( + setHosts: + pop { + defaults = { + hosts = lib.mapAttrs ( + hostName: hostConfig: + (hostConfig) + // { + bee = (hostConfig.bee or { }) // (removeAttrs hostConfig [ "bee" ]); + } + ) setHosts; + pops = { + omnibus = { }; + nixosProfiles = { }; + nixosModules = { }; + }; + exports = { + hosts = { }; + }; }; - }; - extension = final: prev: { - colmena = genColmenaFromHosts ( - lib.filterAttrs (n: v: v.meta ? "colmena") prev.hosts - ); - addMapLoadToPops = load: { }; - pops = { }; - exports = { - hosts = lib.omnibus.mkHosts { - # hostsDir = projectRoot + "/units/nixos/hosts"; - hostsDir = ./.; - pops = super.hostsInterface; - addLoadExtender = { - load = { }; + extension = final: prev: { + colmena = final.genColmenaFromHosts ( + lib.filterAttrs (n: v: v.bee ? "colmena") prev.hosts + ); + genColmenaFromHosts = hosts: { + meta = { + nodes = lib.mapAttrs (hostName: hostConfig: { + inherit (hostConfig.bee.colmena) imports deployment; + }) hosts; + nodeNixpkgs = lib.mapAttrs ( + hostName: hostConfig: (super.types.bee.colmena hostConfig.bee.colmena).nixpkgs + ) hosts; }; }; + addMapLoadToPops = load: { }; + + nixosConfigurations = lib.mapAttrs ( + hostName: hostConfig: + let + nixosConfiguration = hostConfig.bee.nixosConfiguration or { }; + in + nixosConfiguration + ) hosts; + + pops = { }; + exports = { + # hosts = lib.omnibus.mkHosts { + # # hostsDir = projectRoot + "/units/nixos/hosts"; + # hostsDir = ./.; + # pops = super.hostsInterface; + # addLoadExtender = { + # load = { }; + # }; + # }; + }; }; - }; -} + } +) + hosts diff --git a/templates/nixos/units/nixos/hosts/darwin/bee.nix b/templates/nixos/units/nixos/hosts/darwin/bee.nix new file mode 100644 index 0000000..628817e --- /dev/null +++ b/templates/nixos/units/nixos/hosts/darwin/bee.nix @@ -0,0 +1,5 @@ +{ + colmena = { + nixpkgs = { }; + }; +} diff --git a/templates/nixos/units/nixos/hosts/nixos/bee.nix b/templates/nixos/units/nixos/hosts/nixos/bee.nix new file mode 100644 index 0000000..628817e --- /dev/null +++ b/templates/nixos/units/nixos/hosts/nixos/bee.nix @@ -0,0 +1,5 @@ +{ + colmena = { + nixpkgs = { }; + }; +}