treefmt.nix
1 { 2 inputs, 3 pkgs, 4 writeTextFile, 5 ... 6 }: 7 let 8 styluaTOML = writeTextFile { 9 name = "stylua.toml"; 10 text = '' 11 indent_type = "Spaces" 12 indent_width = 2 13 ''; 14 }; 15 16 treefmt = inputs.treefmt-nix.lib.evalModule pkgs { 17 projectRootFile = "flake.nix"; 18 19 settings = { 20 allow-missing-formatter = true; 21 verbose = 0; 22 23 global.excludes = [ 24 "*.age" 25 "*.jpg" 26 "*.lock" 27 "*.png" 28 "*.svg" 29 "*-lock.*" 30 "*ignore" 31 "*.md" 32 ]; 33 34 formatter = { 35 nixfmt.options = [ "--strict" ]; 36 shfmt.options = [ 37 "--ln" 38 "bash" 39 ]; 40 stylua.options = [ 41 "--config-path" 42 styluaTOML.outPath 43 ]; 44 }; 45 }; 46 47 programs = { 48 clang-format.enable = true; 49 nixfmt.enable = true; 50 prettier.enable = true; 51 ruff.enable = true; 52 shfmt.enable = true; 53 stylua.enable = true; 54 taplo.enable = true; 55 56 rustfmt = { 57 enable = true; 58 59 package = pkgs.rust-bin.nightly.latest.default.overrideAttrs (oldAttrs: { 60 meta = oldAttrs.meta // { 61 mainProgram = "rustfmt"; 62 }; 63 }); 64 }; 65 }; 66 }; 67 in 68 treefmt.config.build.wrapper