summaryrefslogtreecommitdiff
path: root/dev/hydra-jobs.nix
diff options
context:
space:
mode:
authorseth <[email protected]>2024-09-07 12:01:28 -0400
committerseth <[email protected]>2024-09-07 12:02:57 -0400
commit73b04cd8498fdf23d3c9e65602f1cb9b5d7733be (patch)
treecc4136b6a866de66c433c180081faa4128786d73 /dev/hydra-jobs.nix
parent8359c81d75b6febac7cfb8ffa22da937f1c5bdd2 (diff)
.envrc: watch dev/dev-shells.nix
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;
+ };
+ }
+ );
+}