diff options
author | Qyriad <qyriad@qyriad.me> | 2024-05-07 22:14:22 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@lix-systems> | 2024-05-07 22:14:22 +0000 |
commit | 8715a0ac4e5621fe48ddf6d3712c35cc08e347b2 (patch) | |
tree | 69704b09ebabba9f83dd89b7f5b6e0b784876196 /misc | |
parent | e8a603fb2f6418307c3521785b3c8d73396792d8 (diff) | |
parent | 7e940cc1706397787c66aa8a52b3b8f96cfc2b5a (diff) |
Merge changes If1077a7b,I62da3161,Iebb4667b into main
* changes:
flake: fix devShell on i686-linux by disabling ClangBuildAnalyzer on it
flake: fix eval of checks & devshell on i686-linux
flake: move the pre-commit definition to its own file
Diffstat (limited to 'misc')
-rw-r--r-- | misc/clangbuildanalyzer.nix | 3 | ||||
-rw-r--r-- | misc/pre-commit.nix | 99 |
2 files changed, 102 insertions, 0 deletions
diff --git a/misc/clangbuildanalyzer.nix b/misc/clangbuildanalyzer.nix index cee8a0d77..d73fa8bbb 100644 --- a/misc/clangbuildanalyzer.nix +++ b/misc/clangbuildanalyzer.nix @@ -25,6 +25,9 @@ stdenv.mkDerivation (finalAttrs: { maintainers = with lib.maintainers; [ lf- ]; license = lib.licenses.unlicense; platforms = lib.platforms.unix; + # `long long int` != `size_t` + # There's no convenient lib.platforms.32bit or anything, but it's easy enough to do ourselves. + badPlatforms = lib.filter (plat: (lib.systems.elaborate plat).is32bit) lib.platforms.all; mainProgram = "ClangBuildAnalyzer"; }; }) diff --git a/misc/pre-commit.nix b/misc/pre-commit.nix new file mode 100644 index 000000000..b287f3cec --- /dev/null +++ b/misc/pre-commit.nix @@ -0,0 +1,99 @@ +{ + /** + Path to Lix's source, normally the flake's "self" argument + */ + self ? pkgs.lib.cleanSource ./., + /** + Already instantiated Nixpkgs + */ + pkgs, + /** + pre-commit-hooks source path, normally from the flake input + */ + pre-commit-hooks, +}: +let + inherit (pkgs) lib; + # Import pre-commit bypassing the flake because flakes don't let + # you have overlays. Also their implementation forces an + # unnecessary reimport of nixpkgs for our use cases. + tools = import (pre-commit-hooks + "/nix/call-tools.nix") pkgs; + pre-commit-run = pkgs.callPackage (pre-commit-hooks + "/nix/run.nix") { + inherit tools; + isFlakes = true; + # unused! + gitignore-nix-src = builtins.throw "gitignore-nix-src is unused"; + }; +in +pre-commit-run { + src = self; + hooks = { + no-commit-to-branch = { + enable = true; + settings.branch = [ "main" ]; + }; + check-case-conflicts.enable = true; + check-executables-have-shebangs = { + enable = true; + stages = [ "commit" ]; + }; + check-shebang-scripts-are-executable = { + enable = true; + stages = [ "commit" ]; + }; + check-symlinks = { + enable = true; + excludes = [ "^tests/functional/lang/symlink-resolution/broken$" ]; + }; + check-merge-conflicts.enable = true; + end-of-file-fixer = { + enable = true; + excludes = [ + "\\.drv$" + "^tests/functional/lang/" + ]; + }; + mixed-line-endings = { + enable = true; + excludes = [ "^tests/functional/lang/" ]; + }; + release-notes = { + enable = true; + package = pkgs.build-release-notes; + files = "^doc/manual/rl-next(-dev)?"; + pass_filenames = false; + entry = '' + ${lib.getExe pkgs.build-release-notes} doc/manual/rl-next doc/manual/rl-next-dev + ''; + }; + check-headers = { + enable = true; + package = pkgs.check-headers; + files = "^src/"; + types = [ + "c++" + "file" + "header" + ]; + # generated files; these will never actually be seen by this + # check, and are left here as documentation + excludes = [ + "(parser|lexer)-tab\\.hh$" + "\\.gen\\.hh$" + ]; + entry = lib.getExe pkgs.check-headers; + }; + # TODO: Once the test suite is nicer, clean up and start + # enforcing trailing whitespace on tests that don't explicitly + # check for it. + trim-trailing-whitespace = { + enable = true; + stages = [ "commit" ]; + excludes = [ "^tests/functional/lang/" ]; + }; + treefmt = { + enable = true; + settings.formatters = [ pkgs.nixfmt ]; + }; + }; +} |