diff options
Diffstat (limited to 'dev/hydra-jobs.nix')
| -rw-r--r-- | dev/hydra-jobs.nix | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/dev/hydra-jobs.nix b/dev/hydra-jobs.nix new file mode 100644 index 0000000..7b55f57 --- /dev/null +++ b/dev/hydra-jobs.nix @@ -0,0 +1,50 @@ +{ + lib, + self, + withSystem, + ... +}: +let + # architecture of "main" CI machine + ciSystem = "x86_64-linux"; + + /** + Map a NixOS, nix-darwin, or home-manager configuration to a final derivation + + # Type + + ``` + derivFromCfg :: AttrSet -> Attrset + ``` + */ + derivFromCfg = deriv: deriv.config.system.build.toplevel or deriv.activationPackage; + + /** + Map an attribute set of NixOS, nix-darwin, or home-manager configurations to their final derivation + + # Type + + ``` + mapCfgsToDerivs :: AttrSet -> Attrset + ``` + */ + mapCfgsToDerivs = lib.mapAttrs (lib.const derivFromCfg); +in +{ + flake.hydraJobs = withSystem ciSystem ( + { pkgs, self', ... }: + { + # i don't care to run these for each system, as they should be the same + # and don't need to be cached + inherit (self') checks; + inherit (self') devShells; + + darwinConfigurations = mapCfgsToDerivs self.darwinConfigurations; + homeConfigurations = mapCfgsToDerivs self.homeConfigurations; + nixosConfigurations = mapCfgsToDerivs self.nixosConfigurations // { + # please add aarch64 runners github...please... + atlas = lib.deepSeq (derivFromCfg self.nixosConfigurations.atlas).drvPath pkgs.emptyFile; + }; + } + ); +} |
