From e4c678833b77b7b23654a77befd7a9a28618ef7e Mon Sep 17 00:00:00 2001 From: Greg Hellings Date: Sun, 20 Oct 2024 20:50:49 -0500 Subject: [PATCH] Move away from numtide Get rid of the numtide shell, as it doesn't have any good support for shellHook. Also, directly create the pre-commit check so that we can leverage its resulting bits in the packages. We now will have acces to things like pre-commit-config.yaml in the folder structure --- .gitignore | 1 + .vscode/launch.json | 2 +- Cargo.toml | 2 +- flake.lock | 49 +++----------------- flake.nix | 108 +++++++++++++++++--------------------------- 5 files changed, 52 insertions(+), 110 deletions(-) diff --git a/.gitignore b/.gitignore index 9624092..6647507 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /target .direnv result +.pre-commit-config.yaml diff --git a/.vscode/launch.json b/.vscode/launch.json index dcf443f..82b9bb1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -24,4 +24,4 @@ "cwd": "${workspaceFolder}" } ] -} \ No newline at end of file +} diff --git a/Cargo.toml b/Cargo.toml index 09997d4..1081d19 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,4 +7,4 @@ edition = "2021" assertables = "8.18.0" ndarray = "0.16.1" num-traits = "0.2.19" -iced = "0.13.1" \ No newline at end of file +iced = "0.13.1" diff --git a/flake.lock b/flake.lock index 5a74e0e..7f947a2 100644 --- a/flake.lock +++ b/flake.lock @@ -1,23 +1,5 @@ { "nodes": { - "devshell": { - "inputs": { - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1728330715, - "narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=", - "owner": "numtide", - "repo": "devshell", - "rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, "flake-compat": { "flake": false, "locked": { @@ -92,7 +74,7 @@ "inputs": { "flake-compat": "flake-compat", "gitignore": "gitignore", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { @@ -111,7 +93,7 @@ }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1721727458, @@ -129,11 +111,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1722073938, - "narHash": "sha256-OpX0StkL8vpXyWOGUD6G+MA26wAXK6SpT94kLJXo6B4=", + "lastModified": 1719082008, + "narHash": "sha256-jHJSUH619zBQ6WdC21fFAlDxHErKVDJ5fpN0Hgx4sjs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e36e9f57337d0ff0cf77aceb58af4c805472bfae", + "rev": "9693852a2070b398ee123a329e68f0dab5526681", "type": "github" }, "original": { @@ -172,22 +154,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1719082008, - "narHash": "sha256-jHJSUH619zBQ6WdC21fFAlDxHErKVDJ5fpN0Hgx4sjs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9693852a2070b398ee123a329e68f0dab5526681", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 0, "narHash": "sha256-HP89HZOT0ReIbI7IJZJQoJgxvB2Tn28V6XS3MNKnfLs=", @@ -199,7 +165,7 @@ "type": "indirect" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { "lastModified": 1728538411, "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", @@ -217,12 +183,11 @@ }, "root": { "inputs": { - "devshell": "devshell", "flake-parts": "flake-parts", "flake-root": "flake-root", "hooks": "hooks", "naersk": "naersk", - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_3" } } }, diff --git a/flake.nix b/flake.nix index f71b6df..da77b84 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,6 @@ description = "Greg's homepage"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - devshell.url = "github:numtide/devshell"; flake-parts.url = "github:hercules-ci/flake-parts"; flake-root.url = "github:srid/flake-root"; hooks.url = "github:cachix/git-hooks.nix"; @@ -13,15 +12,11 @@ outputs = { flake-parts, ... }@inputs: flake-parts.lib.mkFlake { inherit inputs; } { - imports = [ - inputs.devshell.flakeModule - inputs.flake-root.flakeModule - inputs.hooks.flakeModule - ]; + imports = [ inputs.flake-root.flakeModule ]; flake = { # Universal things # final: prev: - overlays.default = _: _: { }; + overlays.default = _final: _prev: { }; }; systems = [ "x86_64-linux" @@ -29,7 +24,7 @@ "aarch64-darwin" ]; perSystem = - { pkgs, ... }@inputs': + { pkgs, self', ... }@inputs': let naersk-lib = pkgs.callPackage inputs.naersk { }; in @@ -38,11 +33,10 @@ inherit (inputs') system; overlays = [ ]; }; - # https://numtide.github.io/devshell/intro.html - devshells.default = rec { + devShells.default = pkgs.mkShell rec { # These commands will be shown in the motd that users read # upon entering the shell - packages = with pkgs; [ + inputsFrom = with pkgs; [ expat fontconfig freetype @@ -57,64 +51,46 @@ libxkbcommon ]; - env = [ - { - name = "LD_LIBRARY_PATH"; - value = builtins.foldl' (a: b: "${a}:${b}/lib") "${pkgs.vulkan-loader}/lib" packages; - } - ]; - commands = [ - { - package = pkgs.cargo; - category = "tools"; - help = "Rust build and package tool"; - } - { - package = pkgs.rustc; - category = "languages"; - help = "Rust compiler"; - } - { - package = pkgs.rustfmt; - category = "tools"; - help = "Standard Rust formatting tool"; - } - { - package = pkgs.clippy; - category = "tools"; - help = "Rust linter"; - } - { - package = pkgs.stdenv.cc; - category = "languages"; - help = "C compiler to help with building native code"; - } - { - package = pkgs.pre-commit; - category = "tools"; - help = "Tool to help enforce commits make sense"; - } + packages = with pkgs; [ + cargo + clippy + pre-commit + rustc + rustfmt + stdenv.cc ]; + + buildInputs = self'.checks.pre-commit.enabledPackages; + + shellHook = + let + lib_path = builtins.foldl' (a: b: "${a}:${b}/lib") "${pkgs.vulkan-loader}/lib" packages; + in + '' + export LD_LIBRARY_PATH="${lib_path}" + '' + + self'.checks.pre-commit.shellHook; }; - pre-commit = { - check.enable = true; - settings.src = ./.; - settings.hooks = { - check-added-large-files.enable = true; - check-case-conflicts.enable = true; - check-merge-conflicts.enable = true; - check-symlinks.enable = true; - deadnix.enable = true; - end-of-file-fixer.enable = true; - fix-byte-order-marker.enable = true; - mixed-line-endings.enable = true; - nixfmt-rfc-style.enable = true; - trim-trailing-whitespace.enable = true; - # Rust hooks - cargo-check.enable = true; - clippy.enable = true; - rustfmt.enable = true; + checks = { + pre-commit = inputs.hooks.lib.${inputs'.system}.run { + src = ./.; + hooks = { + check-added-large-files.enable = true; + check-case-conflicts.enable = true; + check-merge-conflicts.enable = true; + check-symlinks.enable = true; + deadnix.enable = true; + end-of-file-fixer.enable = true; + fix-byte-order-marker.enable = true; + mixed-line-endings.enable = true; + nixfmt-rfc-style.enable = true; + trim-trailing-whitespace.enable = true; + # Rust hooks + cargo-check.enable = true; + clippy.enable = true; + rustfmt.enable = true; + }; }; };