The workaround is no longer needed since Nixpkgs 22.05 (https://github.com/NixOS/nixpkgs/pull/156533). Declaring options directly in a submodule now works, e.g. `options.flake.foo`. The function is kept for backwards compatibility but documented as deprecated. The minimum supported Nixpkgs lib version is already 22.05, so this change does not drop support for any previously supported version.
52 lines
1.2 KiB
Nix
52 lines
1.2 KiB
Nix
{ config, lib, flake-parts-lib, ... }:
|
|
let
|
|
inherit (lib)
|
|
filterAttrs
|
|
mapAttrs
|
|
mkOption
|
|
optionalAttrs
|
|
types
|
|
;
|
|
inherit (flake-parts-lib)
|
|
mkPerSystemOption
|
|
;
|
|
in
|
|
{
|
|
options = {
|
|
flake.formatter = mkOption {
|
|
type = types.lazyAttrsOf types.package;
|
|
default = { };
|
|
description = ''
|
|
An attribute set of per system a package used by [`nix fmt`](https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-fmt.html).
|
|
'';
|
|
};
|
|
|
|
perSystem = mkPerSystemOption {
|
|
_file = ./formatter.nix;
|
|
options = {
|
|
formatter = mkOption {
|
|
type = types.nullOr types.package;
|
|
default = null;
|
|
description = ''
|
|
A package used by [`nix fmt`](https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-fmt.html).
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
};
|
|
config = {
|
|
flake.formatter =
|
|
mapAttrs
|
|
(k: v: v.formatter)
|
|
(filterAttrs
|
|
(k: v: v.formatter != null)
|
|
config.allSystems
|
|
);
|
|
|
|
perInput = system: flake:
|
|
optionalAttrs (flake?formatter.${system}) {
|
|
formatter = flake.formatter.${system};
|
|
};
|
|
|
|
};
|
|
}
|