git.delta.rocks / jrsonnet / refs/commits / d9fb30d36ead

difftreelog

source

modules/fleet/meta.nix2.3 KiBsourcehistory
1{2  lib,3  fleetLib,4  config,5  nixpkgs,6  ...7}: let8  inherit (fleetLib) hostsToAttrs mkFleetGeneratorDefault;9  inherit (fleetLib.types) listOfAnyModule;10  inherit (lib) mkOption mkOptionType;11  inherit (lib.types) str unspecified attrsOf listOf submodule;12  hostModule = {...} @ hostConfig: let13    hostName = hostConfig.config._module.args.name;14  in {15    options = {16      nixosModules = mkOption {17        # Not too strict, but nixos module system will fix everything.18        type =19          listOfAnyModule;2021        description = "List of nixos modules";22        default = [];23      };24      system = mkOption {25        type = str;26        description = "Type of system";27      };28      encryptionKey = mkOption {29        type = str;30        description = "Encryption key";31      };32      nixosSystem = mkOption {33        type = unspecified;34        description = "Nixos configuration";35      };36      nixpkgs = mkOption {37        type = unspecified;38        description = "Nixpkgs override";39        default = nixpkgs;40      };41    };42    config = {43      nixosSystem = hostConfig.config.nixpkgs.lib.nixosSystem {44        inherit (hostConfig.config) system;45        modules = hostConfig.config.nixosModules;46        specialArgs = {47          inherit fleetLib;48          fleet = hostsToAttrs (host: config.hosts.${host}.nixosSystem.config);49        };50      };51      nixosModules.networking.hostName = mkFleetGeneratorDefault hostName;52    };53  };54  overlayType = mkOptionType {55    name = "nixpkgs-overlay";56    description = "nixpkgs overlay";57    check = lib.isFunction;58    merge = lib.mergeOneOption;59  };60in {61  options = {62    hosts = mkOption {63      type = attrsOf (submodule hostModule);64      default = {};65      description = "Configurations of individual hosts";66    };67    nixosModules = mkOption {68      type = listOfAnyModule;69      description = "Modules, which should be added to every system";70      default = [];71    };72    overlays = mkOption {73      default = [];74      type = listOf overlayType;75    };76  };77  config = {78    hosts = hostsToAttrs (host: {79      nixosModules =80        config.nixosModules81        ++ [82          {83            nixpkgs.overlays = config.overlays;84          }85        ];86    });87    nixosModules = import ../../nixos/modules/module-list.nix;88  };89}