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

difftreelog

source

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