mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-30 22:57:55 +00:00
54 lines
1.5 KiB
Nix
54 lines
1.5 KiB
Nix
# A custom flake-parts module to configure my NixOS images generated with
|
|
# nixos-generators. For more details, see the "Declarative hosts management"
|
|
# section from the documentation.
|
|
{ config, lib, flake-parts-lib, ... }:
|
|
|
|
let
|
|
inherit (flake-parts-lib) mkSubmoduleOptions mkPerSystemOption;
|
|
in
|
|
{
|
|
options = {
|
|
flake = mkSubmoduleOptions {
|
|
images = lib.mkOption {
|
|
type = with lib.types; lazyAttrsOf (attrsOf package);
|
|
default = { };
|
|
description = ''
|
|
An attribute set of per-system NixOS configurations built as an image
|
|
output supported by
|
|
[nixos-generators](https://github.com/nix-community/nixos-generators).
|
|
This is exclusively used for foodogsquared's NixOS setup.
|
|
'';
|
|
};
|
|
};
|
|
|
|
perSystem = mkPerSystemOption {
|
|
options = {
|
|
images = lib.mkOption {
|
|
type = with lib.types; attrsOf package;
|
|
default = { };
|
|
description = ''
|
|
An attribute set of NixOS configurations built as an image output
|
|
supported by
|
|
[nixos-generators](https://github.com/nix-community/nixos-generators).
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
config = {
|
|
flake.images =
|
|
lib.mapAttrs
|
|
(k: v: v.images)
|
|
(lib.filterAttrs
|
|
(k: v: v.images != { })
|
|
config.allSystems
|
|
);
|
|
|
|
perInput = system: flake:
|
|
lib.optionalAttrs (flake ? images.${system}) {
|
|
images = flake.images.${system};
|
|
};
|
|
};
|
|
}
|