64 lines
2.2 KiB
Nix
64 lines
2.2 KiB
Nix
{ inputs, ... }:
|
|
{
|
|
imports = [
|
|
inputs.treefmt-nix.flakeModule
|
|
];
|
|
|
|
perSystem =
|
|
{ pkgs, ... }:
|
|
{
|
|
treefmt = {
|
|
projectRootFile = "flake.nix";
|
|
programs.nixfmt.enable = pkgs.lib.meta.availableOn pkgs.stdenv.buildPlatform pkgs.nixfmt-rfc-style.compiler;
|
|
programs.nixfmt.package = pkgs.nixfmt-rfc-style;
|
|
|
|
# NOTE: Make sure the prettier version in package.json and the one used by treefmt are the same for consistent results
|
|
programs.prettier.enable = true;
|
|
programs.shellcheck.enable = true;
|
|
programs.yamlfmt.enable = true;
|
|
programs.dockerfmt.enable = true;
|
|
|
|
settings.formatter.prettier.excludes = [ "pnpm-lock.yaml" ];
|
|
settings.formatter.shellcheck.excludes = [ ".envrc" ];
|
|
settings.formatter.yamlfmt.excludes = [ "pnpm-lock.yaml" ];
|
|
};
|
|
|
|
checks = {
|
|
prettier-version-match =
|
|
pkgs.runCommand "check-prettier-version"
|
|
{
|
|
buildInputs = [ pkgs.jq ];
|
|
}
|
|
''
|
|
# Extract prettier version from package.json
|
|
packageJsonVersion=$(jq -r '.devDependencies.prettier // empty' ${../package.json})
|
|
|
|
if [ -z "$packageJsonVersion" ]; then
|
|
echo "Error: prettier not found in package.json devDependencies"
|
|
exit 1
|
|
fi
|
|
|
|
# Remove any semver prefix characters (^, ~, etc...)
|
|
packageJsonVersion=$(echo "$packageJsonVersion" | sed 's/^[\^~>=<]*//')
|
|
|
|
# Get prettier version from nixpkgs
|
|
nixVersion="${pkgs.nodePackages.prettier.version}"
|
|
|
|
if [ "$packageJsonVersion" != "$nixVersion" ]; then
|
|
echo ""
|
|
echo "ERROR: Prettier version mismatch!"
|
|
echo " package.json: $packageJsonVersion"
|
|
echo " nixpkgs: $nixVersion"
|
|
echo ""
|
|
echo "Please update one of the following:"
|
|
echo " - Update prettier in package.json to match nixpkgs: $nixVersion"
|
|
echo " - Override prettier in your flake to match package.json"
|
|
exit 1
|
|
fi
|
|
|
|
touch $out
|
|
'';
|
|
};
|
|
};
|
|
}
|