diff --git a/flake.nix b/flake.nix index c28dfba..af1c00d 100644 --- a/flake.nix +++ b/flake.nix @@ -25,30 +25,38 @@ outputs = { self, nixpkgs, terranix, colmena, ... } @ inputs: let - system = "x86_64-linux"; - pkgs = import nixpkgs { - localSystem = system; - overlays = [ - inputs.hydra.overlays.default - inputs.lix.overlays.default - inputs.nix-gerrit.overlays.default - ]; - }; - lib = pkgs.lib; - terraform = pkgs.opentofu; - terraformCfg = terranix.lib.terranixConfiguration { + supportedSystems = [ "x86_64-linux" "aarch64-linux" ]; + forEachSystem = f: builtins.listToAttrs (map (system: { + name = system; + value = f system; + }) supportedSystems); + systemBits = forEachSystem (system: rec { inherit system; - modules = [ - ./terraform - { - bagel.gandi.enable = true; - bagel.hydra.enable = true; - } - ]; - }; + pkgs = import nixpkgs { + localSystem = system; + overlays = [ + inputs.hydra.overlays.default + inputs.lix.overlays.default + inputs.nix-gerrit.overlays.default + ]; + }; + terraform = pkgs.opentofu; + terraformCfg = terranix.lib.terranixConfiguration { + inherit system; + modules = [ + ./terraform + { + bagel.gandi.enable = true; + bagel.hydra.enable = true; + } + ]; + }; + }); + forEachSystem' = f: forEachSystem (system: (f systemBits.${system})); + inherit (nixpkgs) lib; in { - apps.${system} = { + apps = forEachSystem' ({ system, pkgs, terraformCfg, terraform, ... }: { tf = { type = "app"; program = toString (pkgs.writers.writeBash "tf" '' @@ -59,17 +67,19 @@ }; default = self.apps.${system}.tf; - }; + }); - devShells.${system}.default = pkgs.mkShell { - packages = [ - inputs.agenix.packages.${system}.agenix + devShells = forEachSystem' ({ system, pkgs, ... }: { + default = pkgs.mkShell { + packages = [ + inputs.agenix.packages.${system}.agenix - pkgs.opentofu + pkgs.opentofu - (pkgs.callPackage ./lib/colmena-wrapper.nix { }) - ]; - }; + (pkgs.callPackage ./lib/colmena-wrapper.nix { }) + ]; + }; + }); nixosConfigurations = (colmena.lib.makeHive self.outputs.colmena).nodes; @@ -91,14 +101,7 @@ builders = lib.listToAttrs (lib.genList makeBuilder 12); in { - meta.nixpkgs = import nixpkgs { - localSystem = system; - overlays = [ - inputs.hydra.overlays.default - inputs.lix.overlays.default - inputs.nix-gerrit.overlays.default - ]; - }; + meta.nixpkgs = systemBits.x86_64-linux.pkgs; meta.specialArgs.inputs = inputs; bagel-box.imports = commonModules ++ [ ./hosts/bagel-box ];