summaryrefslogtreecommitdiff
path: root/dev/hydra-jobs.nix
diff options
context:
space:
mode:
Diffstat (limited to 'dev/hydra-jobs.nix')
-rw-r--r--dev/hydra-jobs.nix50
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;
+ };
+ }
+ );
+}