Files
Matt SturgeonandGitHub 0858f1bc43 treefmt: refactor withConfig and buildConfig to use evalConfig (#406685)
Introduces a new modules-based implementation that is used by both
`withConfig` and `buildConfig`. 

Previously we used a module eval for `settings`. This PR makes it so
that all args passed to `withConfig` are now module options. `settings`
is now a submodule of the wider `evalConfig` configuration.

As well as being a better overall design (IMO), using a module eval
enables adding additional options in the future. E.g. we could add
`programs` options similar to those maintained by treefmt-nix.
2025-05-19 17:22:32 +02:00

41 lines
1.0 KiB
Nix

{ lib, config, ... }:
{
options = {
name = lib.mkOption {
type = lib.types.str;
default = lib.getName config.package + "-with-config";
defaultText = lib.literalExpression "\"\${getName package}-with-config\"";
description = ''
Name to use for the wrapped treefmt package.
'';
};
runtimeInputs = lib.mkOption {
type = with lib.types; listOf package;
default = [ ];
description = ''
Packages to include on treefmt's PATH.
'';
};
configFile = lib.mkOption {
type = lib.types.path;
# Ensure file is copied to the store
apply = file: if lib.isDerivation file then file else "${file}";
defaultText = lib.literalMD "generated from [](#opt-treefmt-settings)";
description = ''
The treefmt config file.
'';
};
package = lib.mkOption {
type = lib.types.package;
defaultText = lib.literalExpression "pkgs.treefmt";
description = ''
The treefmt package to wrap.
'';
internal = true;
};
};
}