git.delta.rocks / jrsonnet / refs/commits / 4e7930a0a457

difftreelog

source

lib/default.nix3.0 KiBsourcehistory
1{ flake-utils }: {2  fleetConfiguration = { data, nixpkgs, hosts, ... }@allConfig:3    let4      hostNames = nixpkgs.lib.attrNames hosts;5      config = builtins.removeAttrs allConfig [ "nixpkgs" "data" ];6      fleetLib = import ./fleetLib.nix {7        inherit nixpkgs hostNames;8      };9    in10    nixpkgs.lib.genAttrs flake-utils.lib.defaultSystems (system:11      let12        root = nixpkgs.lib.evalModules {13          modules = (import ../modules/fleet/_modules.nix) ++ [ config data ];14          specialArgs = {15            inherit nixpkgs fleetLib;16          };17        };18        failedAssertions = map (x: x.message) (nixpkgs.lib.filter (x: !x.assertion) root.config.assertions);19        rootAssertWarn =20          if failedAssertions != [ ]21          then throw "Failed assertions:\n${nixpkgs.lib.concatStringsSep "\n" (map (x: "- ${x}") failedAssertions)}"22          else nixpkgs.lib.showWarnings root.config.warnings root;23        configuredHosts = rootAssertWarn.config.hosts;24        configuredSecrets = rootAssertWarn.config.secrets;25        configuredSystems = configuredSystemsWithExtraModules [ ];26        configuredSystemsWithExtraModules = extraModules: nixpkgs.lib.listToAttrs (27          map28            (29              name: {30                inherit name;31                value = nixpkgs.lib.nixosSystem {32                  system = configuredHosts.${name}.system;33                  modules = configuredHosts.${name}.modules ++ extraModules ++ [34                    ({ ... }: {35                      nixpkgs.system = system;36                      nixpkgs.localSystem.system = system;37                      nixpkgs.crossSystem = if system == configuredHosts.${name}.system then null else {38                        system = configuredHosts.${name}.system;39                      };40                    })41                  ];42                  specialArgs = {43                    inherit fleetLib;44                    fleet = fleetLib.hostsToAttrs (host: configuredSystems.${host}.config);45                  };46                };47              }48            )49            (builtins.attrNames rootAssertWarn.config.hosts)50        );51      in52      rec {53        inherit configuredHosts configuredSecrets configuredSystems;54        buildSystems = {55          toplevel = builtins.mapAttrs (_name: value: value.config.system.build.toplevel) (configuredSystemsWithExtraModules [ ]);56          sdImage = builtins.mapAttrs (_name: value: value.config.system.build.sdImage) (configuredSystemsWithExtraModules [57            (nixpkgs + "/nixos/modules/installer/sd-card/sd-image-aarch64-installer.nix")58          ]);59          installationCd = builtins.mapAttrs (_name: value: value.config.system.build.isoImage) (configuredSystemsWithExtraModules [60            (nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix")61            ({ lib, ... }: {62              # Needed for https://github.com/NixOS/nixpkgs/issues/5895963              boot.supportedFilesystems = lib.mkForce [ "btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs" ];64            })65          ]);66        };67      });68}