mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 12:29:19 -08:00
70 lines
2 KiB
Nix
70 lines
2 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
inherit (lib.options) mkOption;
|
|
inherit (lib.types) attrsOf package;
|
|
inherit (lib.meta) getExe;
|
|
inherit (lib.strings) concatStringsSep concatMapStringsSep;
|
|
cfg = config.outputs.packages;
|
|
fmt = import ../../ci/fmt.nix;
|
|
in {
|
|
options.outputs.packages = mkOption {
|
|
type = attrsOf package;
|
|
default = { };
|
|
};
|
|
|
|
config.outputs.packages = {
|
|
inherit (pkgs.buildPackages)
|
|
terraform tflint
|
|
alejandra deadnix statix
|
|
;
|
|
nf-deploy = pkgs.writeShellScriptBin "nf-deploy" ''
|
|
exec ${pkgs.runtimeShell} ${../../ci/deploy.sh} "$@"
|
|
'';
|
|
nf-statix = pkgs.writeShellScriptBin "nf-statix" ''
|
|
if [[ $# -eq 0 ]]; then
|
|
set -- check
|
|
fi
|
|
|
|
if [[ ''${1-} = check ]]; then
|
|
shift
|
|
set -- check --config ${../../ci/statix.toml} "$@"
|
|
fi
|
|
|
|
exec ${getExe cfg.statix} "$@"
|
|
'';
|
|
nf-deadnix = let
|
|
inherit (fmt.nix) blacklistDirs;
|
|
excludes = "${getExe pkgs.buildPackages.findutils} ${concatStringsSep " " blacklistDirs} -type f";
|
|
in pkgs.writeShellScriptBin "nf-deadnix" ''
|
|
exec ${getExe cfg.deadnix} "$@" \
|
|
--no-lambda-arg \
|
|
--exclude $(${excludes})
|
|
'';
|
|
nf-alejandra = let
|
|
inherit (fmt.nix) blacklistDirs;
|
|
excludes = concatMapStringsSep " " (dir: "--exclude ${dir}") blacklistDirs;
|
|
in pkgs.writeShellScriptBin "nf-alejandra" ''
|
|
exec ${getExe cfg.alejandra} \
|
|
${excludes} \
|
|
"$@"
|
|
'';
|
|
nf-lint-tf = pkgs.writeShellScriptBin "nf-lint-tf" ''
|
|
${getExe cfg.terraform} fmt "$@" &&
|
|
${cfg.tflint}/bin/tflint
|
|
'';
|
|
nf-lint-nix = pkgs.writeShellScriptBin "nf-lint-nix" ''
|
|
${getExe cfg.nf-statix} check "$@" &&
|
|
${getExe cfg.nf-deadnix} -f "$@"
|
|
'';
|
|
nf-fmt-nix = let
|
|
inherit (fmt.nix) whitelist;
|
|
includes = concatStringsSep " " whitelist;
|
|
in pkgs.writeShellScriptBin "nf-fmt-nix" ''
|
|
exec ${getExe cfg.nf-alejandra} ${includes} "$@"
|
|
'';
|
|
};
|
|
}
|