Machines created with third_party.nixos would not be added to the buildkite pipeline because they are not derivations. Closes: https://git.snix.dev/snix/snix/issues/80 Change-Id: I1e107b83e352244b229e498adc00df373742fb1a Reviewed-on: https://cl.snix.dev/c/snix/+/30666 Reviewed-by: Florian Klink <flokli@flokli.de> Reviewed-by: Ilan Joselevich <personal@ilanjoselevich.com> Tested-by: besadii Autosubmit: Ilan Joselevich <personal@ilanjoselevich.com>
70 lines
1.8 KiB
Nix
70 lines
1.8 KiB
Nix
# Helper functions for instantiating depot-compatible NixOS machines.
|
|
{
|
|
depot,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}@args:
|
|
|
|
let
|
|
inherit (lib) findFirst;
|
|
in
|
|
rec {
|
|
# This provides our standard set of arguments to all NixOS modules.
|
|
baseModule =
|
|
{ ... }:
|
|
{
|
|
nix.nixPath =
|
|
let
|
|
# Due to nixpkgsBisectPath, pkgs.path is not always in the nix store
|
|
nixpkgsStorePath =
|
|
if lib.hasPrefix builtins.storeDir (toString pkgs.path) then
|
|
builtins.storePath pkgs.path # nixpkgs is already in the store
|
|
else
|
|
pkgs.path; # we need to dump nixpkgs to the store either way
|
|
in
|
|
[
|
|
("nixos=" + nixpkgsStorePath)
|
|
("nixpkgs=" + nixpkgsStorePath)
|
|
];
|
|
};
|
|
|
|
nixosFor =
|
|
configuration:
|
|
(depot.third_party.nixos {
|
|
configuration =
|
|
{ ... }:
|
|
{
|
|
imports = [
|
|
baseModule
|
|
configuration
|
|
];
|
|
};
|
|
|
|
specialArgs = {
|
|
inherit (args) depot;
|
|
};
|
|
});
|
|
|
|
findSystem =
|
|
hostname:
|
|
(findFirst (
|
|
system: system.config.networking.hostName == hostname
|
|
) (throw "${hostname} is not a known NixOS host") (map nixosFor depot.ops.machines.all-systems));
|
|
|
|
# Systems that should be built in CI
|
|
archivistEC2System = (nixosFor depot.ops.machines.archivist-ec2).system;
|
|
gerrit01System = (nixosFor depot.ops.machines.gerrit01).system;
|
|
public01System = (nixosFor depot.ops.machines.public01).system;
|
|
build01System = (nixosFor depot.ops.machines.build01).system;
|
|
meta01System = (nixosFor depot.ops.machines.meta01).system;
|
|
nixosSnixCacheSystem = (nixosFor depot.ops.machines.snix-cache).system;
|
|
|
|
meta.ci.targets = [
|
|
"archivistEC2System"
|
|
"gerrit01System"
|
|
"public01System"
|
|
"build01System"
|
|
"meta01System"
|
|
];
|
|
}
|