From 7c8a5a19bd2840f64563a27b1ec75908da1b7509 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 23 Apr 2025 16:25:03 +0200 Subject: [PATCH 1/6] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'flake-compat': 'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33' (2023-10-04) → 'github:edolstra/flake-compat/ff81ac966bb2cae68946d5ed5fc4994f96d0ffec' (2024-12-04) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/23e89b7da85c3640bbc2173fe04f4bd114342367' (2024-11-19) → 'github:NixOS/nixpkgs/c11863f1e964833214b767f4a369c6e6a7aba141' (2025-04-21) • Updated input 'nixpkgs-24_11': 'github:NixOS/nixpkgs/314e12ba369ccdb9b352a4db26ff419f7c49fa84' (2024-12-13) → 'github:NixOS/nixpkgs/9684b53175fc6c09581e94cc85f05ab77464c7e3' (2025-04-21) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index c6ec247..151853d 100644 --- a/flake.lock +++ b/flake.lock @@ -19,11 +19,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -34,11 +34,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732014248, - "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", + "lastModified": 1745234285, + "narHash": "sha256-GfpyMzxwkfgRVN0cTGQSkTC0OHhEkv3Jf6Tcjm//qZ0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", + "rev": "c11863f1e964833214b767f4a369c6e6a7aba141", "type": "github" }, "original": { @@ -49,11 +49,11 @@ }, "nixpkgs-24_11": { "locked": { - "lastModified": 1734083684, - "narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=", + "lastModified": 1745279238, + "narHash": "sha256-AQ7M9wTa/Pa/kK5pcGTgX/DGqMHyzsyINfN7ktsI7Fo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84", + "rev": "9684b53175fc6c09581e94cc85f05ab77464c7e3", "type": "github" }, "original": { From 9a5838f5755c6070be3fd816f2e3620955a56bb6 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 23 Apr 2025 16:20:26 +0200 Subject: [PATCH 2/6] Format with nixfmt-rfc-style Uses the treefmt wrapper for nixfmt-rfc-style. --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index 6fb5637..75bd6b3 100644 --- a/flake.nix +++ b/flake.nix @@ -123,5 +123,6 @@ ]; }; devShell.${system} = self.devShells.${system}.default; # compatibility + formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-tree; # TODO: migrate to stable with 25.05 }; } From 72a1dcb35568a138ab645e7c68d1942a076218e8 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 23 Apr 2025 16:51:22 +0200 Subject: [PATCH 3/6] flake.nix: configure pre-commit --- .gitignore | 1 + flake.lock | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 31 +++++++++++++++++++++++++--- 3 files changed, 89 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index b2be92b..58399cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ result +.pre-commit-config.yaml diff --git a/flake.lock b/flake.lock index 151853d..f0c554c 100644 --- a/flake.lock +++ b/flake.lock @@ -32,6 +32,65 @@ "type": "github" } }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "gitignore": "gitignore", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1742649964, + "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1745234285, @@ -66,6 +125,7 @@ "inputs": { "blobs": "blobs", "flake-compat": "flake-compat", + "git-hooks": "git-hooks", "nixpkgs": "nixpkgs", "nixpkgs-24_11": "nixpkgs-24_11" } diff --git a/flake.nix b/flake.nix index 75bd6b3..ef79ae9 100644 --- a/flake.nix +++ b/flake.nix @@ -6,6 +6,10 @@ url = "github:edolstra/flake-compat"; flake = false; }; + git-hooks = { + url = "github:cachix/git-hooks.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; nixpkgs.url = "flake:nixpkgs/nixos-unstable"; nixpkgs-24_11.url = "flake:nixpkgs/nixos-24.11"; blobs = { @@ -14,7 +18,7 @@ }; }; - outputs = { self, blobs, nixpkgs, nixpkgs-24_11, ... }: let + outputs = { self, blobs, git-hooks, nixpkgs, nixpkgs-24_11, ... }: let lib = nixpkgs.lib; system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; @@ -112,7 +116,27 @@ hydraJobs.${system} = allTests // { inherit documentation; }; - checks.${system} = allTests; + checks.${system} = allTests // { + pre-commit = git-hooks.lib.${system}.run { + src = ./.; + hooks = { + # docs + markdownlint.enable = true; + + # nix + nixfmt-rfc-style.enable = true; + statix.enable = true; + + # python + pyright.enable = true; + ruff.enable = true; + ruff-format.enable = true; + + # scripts + shellcheck.enable = true; + }; + }; + }; packages.${system} = { inherit optionsDoc documentation; }; @@ -120,7 +144,8 @@ inputsFrom = [ documentation ]; packages = with pkgs; [ clamav - ]; + ] ++ self.checks.${system}.pre-commit.enabledPackages; + shellHook = self.checks.${system}.pre-commit.shellHook; }; devShell.${system} = self.devShells.${system}.default; # compatibility formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-tree; # TODO: migrate to stable with 25.05 From 9ed6f92a6d249cdcdf06d0b6fdc95c3f6e033833 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 23 Apr 2025 17:12:12 +0200 Subject: [PATCH 4/6] Provide direnv integration for flake devshell --- .envrc | 3 +++ .gitignore | 1 + 2 files changed, 4 insertions(+) create mode 100644 .envrc diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..069abc3 --- /dev/null +++ b/.envrc @@ -0,0 +1,3 @@ +# shellcheck shell=bash + +use flake diff --git a/.gitignore b/.gitignore index 58399cb..0d3fe25 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ result +.direnv .pre-commit-config.yaml From 5c40128a3d39da5d8734c35be0c2a0034a741418 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 23 Apr 2025 17:39:44 +0200 Subject: [PATCH 5/6] flake.nix: annotate flake-compat usage It is not used within flake.nix, so add a note that it is used elsewhere. --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index ef79ae9..44090b2 100644 --- a/flake.nix +++ b/flake.nix @@ -3,6 +3,7 @@ inputs = { flake-compat = { + # for shell.nix compat url = "github:edolstra/flake-compat"; flake = false; }; From 3d7210d8880fba2e2b1e8bc6fa109e9f3f5f67e2 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Thu, 24 Apr 2025 01:48:36 +0200 Subject: [PATCH 6/6] flake.nix: drop CC from devshell We absolutely do not need a C compiler in here. --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 44090b2..c98da1e 100644 --- a/flake.nix +++ b/flake.nix @@ -141,7 +141,7 @@ packages.${system} = { inherit optionsDoc documentation; }; - devShells.${system}.default = pkgs.mkShell { + devShells.${system}.default = pkgs.mkShellNoCC { inputsFrom = [ documentation ]; packages = with pkgs; [ clamav