aboutsummaryrefslogtreecommitdiffstats
path: root/treefmt.nix
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--treefmt.nix86
1 files changed, 86 insertions, 0 deletions
diff --git a/treefmt.nix b/treefmt.nix
new file mode 100644
index 0000000..e2c6aea
--- /dev/null
+++ b/treefmt.nix
@@ -0,0 +1,86 @@
+{
+ treefmt-nix,
+ pkgs,
+}:
+treefmt-nix.lib.evalModule pkgs (
+ {pkgs, ...}: {
+ # Used to find the project root
+ projectRootFile = "flake.nix";
+
+ programs = {
+ alejandra.enable = true;
+ rustfmt.enable = true;
+ clang-format.enable = true;
+ mdformat.enable = true;
+ shfmt = {
+ enable = true;
+ indent_size = 4;
+ };
+ shellcheck.enable = true;
+ prettier = {
+ settings = {
+ arrowParens = "always";
+ bracketSameLine = false;
+ bracketSpacing = true;
+ editorconfig = true;
+ embeddedLanguageFormatting = "auto";
+ endOfLine = "lf";
+ # experimentalTernaries = false;
+ htmlWhitespaceSensitivity = "css";
+ insertPragma = false;
+ jsxSingleQuote = true;
+ printWidth = 80;
+ proseWrap = "always";
+ quoteProps = "consistent";
+ requirePragma = false;
+ semi = true;
+ singleAttributePerLine = true;
+ singleQuote = true;
+ trailingComma = "all";
+ useTabs = false;
+ vueIndentScriptAndStyle = false;
+
+ tabWidth = 4;
+ overrides = {
+ files = ["*.js"];
+ options.tabwidth = 2;
+ };
+ };
+ };
+ stylua = {
+ enable = true;
+ settings = {
+ sort_requires.enabled = true;
+ column_width = 120;
+ line_endings = "Unix";
+ indent_type = "Spaces";
+ indent_width = 2;
+ quote_style = "ForceDouble";
+ call_parentheses = "Always";
+ # space_after_function_names = "Never";
+ collapse_simple_statement = "Always";
+ };
+ };
+ ruff = {
+ enable = true;
+ format = true;
+ };
+ taplo.enable = true;
+ };
+
+ settings = {
+ global.excludes = [
+ "CHANGELOG.md"
+ "NEWS.md"
+ ];
+ formatter = {
+ clang-format = {
+ options = ["--style" "GNU"];
+ };
+ shfmt = {
+ includes = ["*.bash"];
+ };
+ };
+ };
+ }
+)