setup treefmt
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +1,6 @@
|
|||||||
result
|
result
|
||||||
|
result-*
|
||||||
|
.direnv/
|
||||||
|
|
||||||
# Created by the NixOS interactive test driver
|
# Created by the NixOS interactive test driver
|
||||||
.nixos-test-history
|
.nixos-test-history
|
||||||
|
84
flake.nix
84
flake.nix
@@ -61,18 +61,17 @@
|
|||||||
diskoVersion = version;
|
diskoVersion = version;
|
||||||
};
|
};
|
||||||
|
|
||||||
shellcheck = pkgs.runCommand "shellcheck" { nativeBuildInputs = [ pkgs.shellcheck ]; } ''
|
jsonTypes = pkgs.writeTextFile { name = "jsonTypes"; text = (builtins.toJSON diskoLib.jsonTypes); };
|
||||||
cd ${./.}
|
|
||||||
shellcheck disk-deactivate/disk-deactivate disko
|
treefmt = pkgs.runCommand "treefmt" { } ''
|
||||||
|
${self.formatter.${system}}/bin/treefmt --ci --working-dir ${self}
|
||||||
touch $out
|
touch $out
|
||||||
'';
|
'';
|
||||||
|
|
||||||
jsonTypes = pkgs.writeTextFile { name = "jsonTypes"; text = (builtins.toJSON diskoLib.jsonTypes); };
|
|
||||||
in
|
in
|
||||||
# FIXME: aarch64-linux seems to hang on boot
|
# FIXME: aarch64-linux seems to hang on boot
|
||||||
lib.optionalAttrs pkgs.stdenv.hostPlatform.isx86_64 (nixosTests // { inherit disko-install; }) //
|
lib.optionalAttrs pkgs.stdenv.hostPlatform.isx86_64 (nixosTests // { inherit disko-install; }) //
|
||||||
pkgs.lib.optionalAttrs (!pkgs.stdenv.buildPlatform.isRiscV64 && !pkgs.stdenv.hostPlatform.isx86_32) {
|
pkgs.lib.optionalAttrs (!pkgs.stdenv.buildPlatform.isRiscV64 && !pkgs.stdenv.hostPlatform.isx86_32) {
|
||||||
inherit shellcheck jsonTypes;
|
inherit jsonTypes treefmt;
|
||||||
inherit (self.packages.${system}) disko-doc;
|
inherit (self.packages.${system}) disko-doc;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -89,67 +88,22 @@
|
|||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
in
|
in
|
||||||
pkgs.writeShellApplication {
|
pkgs.writeShellApplication {
|
||||||
name = "format";
|
name = "treefmt";
|
||||||
runtimeInputs = with pkgs; [
|
text = ''treefmt "$@"'';
|
||||||
nixpkgs-fmt
|
runtimeInputs = [
|
||||||
deno
|
pkgs.deadnix
|
||||||
deadnix
|
pkgs.nixfmt-rfc-style
|
||||||
|
pkgs.shellcheck
|
||||||
|
pkgs.treefmt
|
||||||
];
|
];
|
||||||
text = ''
|
|
||||||
showUsage() {
|
|
||||||
cat <<EOF
|
|
||||||
Usage: $0 [OPTIONS] FILES...
|
|
||||||
-c, --check Only check formatting, do not modify files.
|
|
||||||
-h, --help Show this help message.
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
check=
|
|
||||||
files=()
|
|
||||||
|
|
||||||
parseArgs() {
|
|
||||||
while [[ $# -gt 0 ]]; do
|
|
||||||
case "$1" in
|
|
||||||
-h | --help)
|
|
||||||
showUsage
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-c | --check)
|
|
||||||
check=1
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
files+=("$1")
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ ''${#files[@]} -eq 0 ]]; then
|
|
||||||
files=(.)
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
parseArgs "$@"
|
|
||||||
|
|
||||||
if [[ -z "$check" ]]; then
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
nixpkgs-fmt -- "''${files[@]}"
|
|
||||||
deno fmt -- "''${files[@]}"
|
|
||||||
deadnix --edit -- "''${files[@]}"
|
|
||||||
else
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
nixpkgs-fmt --check -- "''${files[@]}"
|
|
||||||
deno fmt --check -- "''${files[@]}"
|
|
||||||
deadnix -- "''${files[@]}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
devShells = forAllSystems (system: {
|
||||||
|
default = nixpkgs.legacyPackages.${system}.mkShell {
|
||||||
|
packages = [
|
||||||
|
self.formatter.${system}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
11
treefmt.toml
Normal file
11
treefmt.toml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[formatter.nix]
|
||||||
|
command = "nixfmt"
|
||||||
|
includes = ["*.nix"]
|
||||||
|
|
||||||
|
[formatter.deadnix]
|
||||||
|
command = "deadnix"
|
||||||
|
includes = ["*.nix"]
|
||||||
|
|
||||||
|
[formatter.shellcheck]
|
||||||
|
command = "shellcheck"
|
||||||
|
includes = ["*.sh"]
|
Reference in New Issue
Block a user