push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
{
_class = "treefmtConfig";
imports = [
./options.nix
./settings.nix
./wrapper.nix
];
}

View File

@@ -0,0 +1,40 @@
{ 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;
};
};
}

View File

@@ -0,0 +1,26 @@
{
lib,
pkgs,
config,
modulesPath,
...
}:
let
settingsFormat = pkgs.formats.toml { };
in
{
options.settings = lib.mkOption {
type = lib.types.submoduleWith {
specialArgs = { inherit modulesPath; };
modules = [
{ freeformType = settingsFormat.type; }
];
};
default = { };
description = ''
Settings used to build a treefmt config file.
'';
};
config.configFile = lib.mkOptionDefault (settingsFormat.generate "treefmt.toml" config.settings);
}

View File

@@ -0,0 +1,40 @@
{
lib,
pkgs,
config,
options,
...
}:
{
options.result = lib.mkOption {
type = lib.types.package;
description = ''
The wrapped treefmt package.
'';
readOnly = true;
internal = true;
};
config.result =
pkgs.runCommand config.name
{
nativeBuildInputs = [ pkgs.makeBinaryWrapper ];
env = {
inherit (config) configFile;
binPath = lib.makeBinPath config.runtimeInputs;
};
passthru = {
inherit (config) runtimeInputs;
inherit config options;
};
inherit (config.package) meta version;
}
''
mkdir -p $out/bin
makeWrapper \
${lib.getExe config.package} \
$out/bin/treefmt \
--prefix PATH : "$binPath" \
--add-flags "--config-file $configFile"
'';
}