1{
2 pkgs,
3 excludes ? [ ],
4 ...
5}:
6{
7 projectRootFile = "flake.nix";
8
9 programs = {
10 gofmt = {
11 enable = true;
12 };
13
14 mdformat = {
15 enable = true;
16
17 package = pkgs.mdformat.withPlugins (
18 p: with p; [
19 # add support for github flavored markdown
20 mdformat-gfm
21 mdformat-gfm-alerts
22
23 # add support for markdown tables
24 mdformat-tables
25
26 # add the following comment before running `nix fmt` to generate a
27 # table of contents in markdown files:
28 # <!-- mdformat-toc start -->
29 mdformat-toc
30 ]
31 );
32
33 settings = {
34 end-of-line = "lf";
35 number = true;
36 wrap = 80;
37 };
38 };
39
40 nixfmt = {
41 enable = true;
42 strict = true;
43 };
44
45 prettier = {
46 enable = true;
47
48 settings = {
49 singleQuote = true;
50 trailingComma = "es5";
51 };
52 };
53
54 shfmt = {
55 enable = true;
56 };
57
58 yamlfmt = {
59 enable = true;
60
61 settings.formatter = {
62 eof_newline = true;
63 include_document_start = true;
64 retain_line_breaks_single = true;
65 trim_trailing_whitespace = true;
66 };
67 };
68 };
69
70 settings.global.excludes =
71 pkgs.lib.lists.unique [
72 "*.graphql"
73 "*.png"
74 "*.svg"
75 "*.txt"
76 "doc/man/*.1" # generated via //doc:generate.go
77 "doc/md/*" # generated via //doc:generate.go
78 "misc/completion/*/*"
79 "Makefile"
80 ]
81 ++ excludes;
82
83 settings.formatter = {
84 prettier = {
85 excludes = [
86 "*.md"
87 "*.yaml"
88 "*.yml"
89 ];
90 };
91 };
92}