make nix things fast. a lot of magic involved

This commit is contained in:
Markus Schmidl 2023-11-26 01:22:19 +01:00
parent 38185e5ac1
commit 4f916eba66
2 changed files with 41 additions and 41 deletions

View File

@ -174,8 +174,7 @@
myRegistry = registry.traffic-stop-box."${toString id}";
in
{
"${myRegistry.hostName}" = nixpkgs.lib.nixosSystem
{
"${myRegistry.hostName}" = {
system = myRegistry.arch;
specialArgs = { inherit self inputs; registry = myRegistry; };
modules =
@ -189,7 +188,6 @@
./modules/TLMS
{
deployment-TLMS.monitoring.enable = myRegistry.monitoring;
_module.check = false;
}
] ++ stop-box-modules;
};
@ -200,24 +198,10 @@
stop_box_ids = [ 0 1 4 8 9 ];
# attribute set of all traffic stop boxes
stop_boxes = nixpkgs.lib.foldl (x: id: nixpkgs.lib.mergeAttrs x (generate_system id)) { } stop_box_ids;
r09_receivers = nixpkgs.lib.foldl (x: id: nixpkgs.lib.mergeAttrs x (generate_system id)) { } stop_box_ids;
packages = {
staging-microvm = self.nixosConfigurations.staging-data-hoarder.config.microvm.declaredRunner;
data-hoarder-microvm = self.nixosConfigurations.data-hoarder.config.microvm.declaredRunner;
}
// (import ./pkgs/deployment.nix { inherit self pkgs lib; })
// (lib.foldl (x: y: lib.mergeAttrs x { "${y.config.system.name}-vm" = y.config.system.build.vm; }) { } (lib.attrValues self.nixosConfigurations));
in
{
packages."aarch64-linux".box8 = self.nixosConfigurations.traffic-stop-box-8.config.system.build.sdImage;
packages."aarch64-linux".box9 = self.nixosConfigurations.traffic-stop-box-9.config.system.build.sdImage;
packages."x86_64-linux" = packages;
nixosConfigurations = stop_boxes // {
data-hoarder = nixpkgs.lib.nixosSystem {
unevaluatedNixosConfigurations = r09_receivers // {
data-hoarder = {
system = "x86_64-linux";
specialArgs = { inherit inputs self; registry = registry.data-hoarder; };
modules = [
@ -226,7 +210,7 @@
] ++ data-hoarder-modules;
};
staging-data-hoarder = nixpkgs.lib.nixosSystem {
staging-data-hoarder = {
system = "x86_64-linux";
specialArgs = { inherit inputs self; registry = registry.data-hoarder; };
modules = [
@ -235,7 +219,7 @@
] ++ data-hoarder-modules;
};
notice-me-senpai = nixpkgs.lib.nixosSystem {
notice-me-senpai = {
system = "x86_64-linux";
specialArgs = { inherit inputs self; };
modules = [
@ -245,7 +229,7 @@
];
};
tram-borzoi = nixpkgs.lib.nixosSystem {
tram-borzoi = {
system = "x86_64-linux";
specialArgs = { inherit inputs self; };
modules = [
@ -260,7 +244,7 @@
];
};
uranus = nixpkgs.lib.nixosSystem {
uranus = {
system = "x86_64-linux";
specialArgs = { inherit inputs self; };
modules = [
@ -272,8 +256,24 @@
{ deployment-TLMS.monitoring.enable = true; }
];
};
};
in
{
inherit unevaluatedNixosConfigurations;
packages."aarch64-linux".box8 = self.nixosConfigurations.traffic-stop-box-8.config.system.build.sdImage;
packages."aarch64-linux".box9 = self.nixosConfigurations.traffic-stop-box-9.config.system.build.sdImage;
packages."x86_64-linux" = {
staging-microvm = self.nixosConfigurations.staging-data-hoarder.config.microvm.declaredRunner;
data-hoarder-microvm = self.nixosConfigurations.data-hoarder.config.microvm.declaredRunner;
};
# these are in the app declaration as nix before 2.19 tries to find attrPaths in packages first.
# here we evaluate over all nixos configurations making this extremely slow
apps."x86_64-linux" = (import ./pkgs/deployment.nix { inherit self pkgs lib; });
nixosConfigurations = lib.attrsets.mapAttrs (name: value: nixpkgs.lib.nixosSystem value) unevaluatedNixosConfigurations;
hydraJobs =
let

View File

@ -13,8 +13,8 @@ let
let
ip = system.config.deployment-TLMS.net.wg.addr4;
host = system.config.networking.hostName;
in
in
(pkgs.writeScriptBin "deploy" ''
#!${pkgs.runtimeShell}
set -e
@ -77,11 +77,7 @@ let
''));
# individual script generation
deployScriptWriter = (command:
lib.mapAttrs'
(name: system:
lib.nameValuePair ("rebuild-" + command + "-" + name) (deployScriptTemplate system command))
nonVmHosts);
deployScriptWriter = (command: lib.mapAttrs' (name: system: lib.nameValuePair ("rebuild-" + command + "-" + name) (deployScriptTemplate system command)) nonVmHosts);
switchInstallScripts = deployScriptWriter "switch";
bootInstallScripts = deployScriptWriter "boot";
@ -98,21 +94,25 @@ let
garbageAll = lib.strings.concatMapStringsSep "\n" (path: "${path}/bin/deploy") (builtins.attrValues garbageCollectScripts);
nukeAll = lib.mapAttrs'
(name: scripts: lib.nameValuePair (name) (pkgs.writeScriptBin "${name}" ''
#!${pkgs.runtimeShell}
set -x
(name: scripts:
lib.nameValuePair (name) (pkgs.writeScriptBin "${name}" ''
#!${pkgs.runtimeShell}
set -x
${scripts}
''))
${scripts}
''))
{
rebuild-boot-all = bootAll;
rebuild-switch-all = switchAll;
reboot-all = rebootAll;
garbage-collect-all = garbageAll;
};
allPackages = installScripts // garbageCollectScripts // rebootScripts // nukeAll;
# rewrite to app definitions
in
installScripts //
garbageCollectScripts //
rebootScripts //
nukeAll
builtins.mapAttrs
(name: value: {
type = "app";
program = "${value}/bin/deploy";
})
allPackages