From a73714a93c2d5e1ce2f9e52f23eaf3019a5d46ed Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Fri, 3 Jul 2020 00:26:33 -0400 Subject: feat(ops/nixos): Add generic rebuild-system script This adds a first crack at one idea for a generic, non-user-specific rebuild-system script to ops.nixos.rebuild-system. The idea here is that we enumerate all the nixos systems stored in the monorepo (similarly to what we do for ci-builds right now) then search through them by hostname to find the one matching the hostname of the current system, which is an attempt at a more generic version of tazjin's rebuilder script which does the same thing but with an explicit case block. As a caveat, it feels like there's a slight possibility that this way of finding systems is going to get slow to evaluate - on my system it feels fine but if it grows out of hand it's probably feasible to just bake this into the built script as a dynamically generated case statement. Change-Id: I2e4c5401913b6f4d936ab48ba2f95f96e0e78eb4 Reviewed-on: https://cl.tvl.fyi/c/depot/+/894 Tested-by: BuildkiteCI Reviewed-by: lukegb --- ci-builds.nix | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'ci-builds.nix') diff --git a/ci-builds.nix b/ci-builds.nix index 26f7e105d9..437804eef9 100644 --- a/ci-builds.nix +++ b/ci-builds.nix @@ -16,6 +16,10 @@ let owo = lib.generators.toPretty {} exp; }; + systemFor = configuration: (depot.third_party.nixos { + inherit configuration; + }).system; + in lib.fix (self: { __apprehendEvaluators = throw '' Do not evaluate this attribute set directly. It exists only to group builds @@ -28,18 +32,10 @@ in lib.fix (self: { # used to trigger builds for each key. __evaluatable = filter (key: (substring 0 2 key) != "__") (attrNames self); - # List of non-public targets, these are only used in local builds - # and not in CI. - __nonpublic = with depot; [ - users.tazjin.nixos.camdenSystem - users.tazjin.nixos.frogSystem - ]; - # Combined list of all the targets, used for building everything locally. __allTargets = (with depot.nix.yants; list drv) - (foldl' (x: y: x ++ y) self.__nonpublic - (map (k: getAttr k self) self.__evaluatable)); + (foldl' (x: y: x ++ y) [] (map (k: getAttr k self) self.__evaluatable)); fun = with depot.fun; [ amsterdump @@ -57,7 +53,7 @@ in lib.fix (self: { journaldriver kontemplate mq_cli - nixos.whitby + (systemFor nixos.whitby) ]; third_party = with depot.third_party; [ @@ -98,10 +94,12 @@ in lib.fix (self: { emacs finito homepage + (systemFor nixos.camden) + (systemFor nixos.frog) ]; glittershark = with depot.users.glittershark; [ - system.system.chupacabra + (systemFor system.system.chupacabra) xanthous ]; }) -- cgit 1.4.1