mirror of
https://github.com/NixOS/nix
synced 2025-06-25 02:21:16 +02:00
dev: Configure nixfmt (rfc style)
This commit is contained in:
parent
99dbcca5f1
commit
ba6425a7d0
5 changed files with 114 additions and 3 deletions
|
@ -278,6 +278,8 @@ You may run the formatters as a one-off using:
|
||||||
./maintainers/format.sh
|
./maintainers/format.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Pre-commit hooks
|
||||||
|
|
||||||
If you'd like to run the formatters before every commit, install the hooks:
|
If you'd like to run the formatters before every commit, install the hooks:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -292,3 +294,30 @@ If it fails, run `git add --patch` to approve the suggestions _and commit again_
|
||||||
To refresh pre-commit hook's config file, do the following:
|
To refresh pre-commit hook's config file, do the following:
|
||||||
1. Exit the development shell and start it again by running `nix develop`.
|
1. Exit the development shell and start it again by running `nix develop`.
|
||||||
2. If you also use the pre-commit hook, also run `pre-commit-hooks-install` again.
|
2. If you also use the pre-commit hook, also run `pre-commit-hooks-install` again.
|
||||||
|
|
||||||
|
### VSCode
|
||||||
|
|
||||||
|
Insert the following json into your `.vscode/settings.json` file to configure `nixfmt`.
|
||||||
|
This will be picked up by the _Format Document_ command, `"editor.formatOnSave"`, etc.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"nix.formatterPath": "nixfmt",
|
||||||
|
"nix.serverSettings": {
|
||||||
|
"nixd": {
|
||||||
|
"formatting": {
|
||||||
|
"command": [
|
||||||
|
"nixfmt"
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"nil": {
|
||||||
|
"formatting": {
|
||||||
|
"command": [
|
||||||
|
"nixfmt"
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
52
flake.lock
generated
52
flake.lock
generated
|
@ -36,6 +36,24 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"git-hooks-nix": {
|
"git-hooks-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [],
|
"flake-compat": [],
|
||||||
|
@ -61,6 +79,24 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixfmt": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736283758,
|
||||||
|
"narHash": "sha256-hrKhUp2V2fk/dvzTTHFqvtOg000G1e+jyIam+D4XqhA=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixfmt",
|
||||||
|
"rev": "8d4bd690c247004d90d8554f0b746b1231fe2436",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixfmt",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1734359947,
|
"lastModified": 1734359947,
|
||||||
|
@ -114,10 +150,26 @@
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"git-hooks-nix": "git-hooks-nix",
|
"git-hooks-nix": "git-hooks-nix",
|
||||||
|
"nixfmt": "nixfmt",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-23-11": "nixpkgs-23-11",
|
"nixpkgs-23-11": "nixpkgs-23-11",
|
||||||
"nixpkgs-regression": "nixpkgs-regression"
|
"nixpkgs-regression": "nixpkgs-regression"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
# work around 7730 and https://github.com/NixOS/nix/issues/7807
|
# work around 7730 and https://github.com/NixOS/nix/issues/7807
|
||||||
inputs.git-hooks-nix.inputs.flake-compat.follows = "";
|
inputs.git-hooks-nix.inputs.flake-compat.follows = "";
|
||||||
inputs.git-hooks-nix.inputs.gitignore.follows = "";
|
inputs.git-hooks-nix.inputs.gitignore.follows = "";
|
||||||
|
inputs.nixfmt.url = "github:NixOS/nixfmt";
|
||||||
|
|
||||||
outputs = inputs@{ self, nixpkgs, nixpkgs-regression, ... }:
|
outputs = inputs@{ self, nixpkgs, nixpkgs-regression, ... }:
|
||||||
|
|
||||||
|
@ -301,7 +302,7 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
devShells = let
|
devShells = let
|
||||||
makeShell = import ./packaging/dev-shell.nix { inherit lib devFlake; };
|
makeShell = import ./packaging/dev-shell.nix { inherit inputs lib devFlake; };
|
||||||
prefixAttrs = prefix: lib.concatMapAttrs (k: v: { "${prefix}-${k}" = v; });
|
prefixAttrs = prefix: lib.concatMapAttrs (k: v: { "${prefix}-${k}" = v; });
|
||||||
in
|
in
|
||||||
forAllSystems (system:
|
forAllSystems (system:
|
||||||
|
|
|
@ -31,6 +31,35 @@
|
||||||
touch $out
|
touch $out
|
||||||
''}";
|
''}";
|
||||||
};
|
};
|
||||||
|
nixfmt-rfc-style = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.nixfmt.packages.${pkgs.hostPlatform.system}.default;
|
||||||
|
excludes = [
|
||||||
|
# Invalid
|
||||||
|
''^tests/functional/lang/parse-.*\.nix$''
|
||||||
|
|
||||||
|
# Formatting-sensitive
|
||||||
|
''^tests/functional/lang/eval-okay-curpos\.nix$''
|
||||||
|
''^tests/functional/lang/.*comment.*\.nix$''
|
||||||
|
''^tests/functional/lang/.*newline.*\.nix$''
|
||||||
|
''^tests/functional/lang/.*eol.*\.nix$''
|
||||||
|
|
||||||
|
# Syntax tests
|
||||||
|
''^tests/functional/shell.shebang\.nix$''
|
||||||
|
''^tests/functional/lang/eval-okay-ind-string\.nix$''
|
||||||
|
|
||||||
|
# Not supported by nixfmt
|
||||||
|
''^tests/functional/lang/eval-okay-deprecate-cursed-or\.nix$''
|
||||||
|
''^tests/functional/lang/eval-okay-attrs5\.nix$''
|
||||||
|
|
||||||
|
# More syntax tests
|
||||||
|
# These tests, or parts of them, should have been parse-* test cases.
|
||||||
|
''^tests/functional/lang/eval-fail-eol-2\.nix$''
|
||||||
|
''^tests/functional/lang/eval-fail-path-slash\.nix$''
|
||||||
|
''^tests/functional/lang/eval-fail-toJSON-non-utf-8\.nix$''
|
||||||
|
''^tests/functional/lang/eval-fail-set\.nix$''
|
||||||
|
];
|
||||||
|
};
|
||||||
clang-format = {
|
clang-format = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# https://github.com/cachix/git-hooks.nix/pull/532
|
# https://github.com/cachix/git-hooks.nix/pull/532
|
||||||
|
@ -660,7 +689,6 @@
|
||||||
''^src/libutil-tests/data/git/check-data\.sh$''
|
''^src/libutil-tests/data/git/check-data\.sh$''
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
# TODO: nixfmt, https://github.com/NixOS/nixfmt/issues/153
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ lib, devFlake }:
|
{ lib, inputs, devFlake }:
|
||||||
|
|
||||||
{ pkgs }:
|
{ pkgs }:
|
||||||
|
|
||||||
|
@ -108,6 +108,7 @@ in {
|
||||||
modular.pre-commit.settings.package
|
modular.pre-commit.settings.package
|
||||||
(pkgs.writeScriptBin "pre-commit-hooks-install"
|
(pkgs.writeScriptBin "pre-commit-hooks-install"
|
||||||
modular.pre-commit.settings.installationScript)
|
modular.pre-commit.settings.installationScript)
|
||||||
|
inputs.nixfmt.packages.${pkgs.hostPlatform.system}.default
|
||||||
]
|
]
|
||||||
# TODO: Remove the darwin check once
|
# TODO: Remove the darwin check once
|
||||||
# https://github.com/NixOS/nixpkgs/pull/291814 is available
|
# https://github.com/NixOS/nixpkgs/pull/291814 is available
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue