snix/ops/nixos.nix
Florian Klink 0beb9f6d5c refactor(ops/nixos): rename nixosSnixCacheSystem to snixCacheSystem
This is defined at the `ops.machines.snix-cache`, let's keep the naming
consistent and short.

Change-Id: Ifb6f0779ee098b7a5c65d3e3989cbf98323e16d0
Reviewed-on: https://cl.snix.dev/c/snix/+/30678
Autosubmit: Florian Klink <flokli@flokli.de>
Reviewed-by: Ilan Joselevich <personal@ilanjoselevich.com>
Tested-by: besadii
2025-08-11 19:23:55 +00:00

71 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;
build01System = (nixosFor depot.ops.machines.build01).system;
gerrit01System = (nixosFor depot.ops.machines.gerrit01).system;
meta01System = (nixosFor depot.ops.machines.meta01).system;
public01System = (nixosFor depot.ops.machines.public01).system;
snixCacheSystem = (nixosFor depot.ops.machines.snix-cache).system;
meta.ci.targets = [
"archivistEC2System"
"build01System"
"gerrit01System"
"meta01System"
"public01System"
"snixCacheSystem"
];
}