diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore index 869df07..1edb211 100755 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ /target -Cargo.lock \ No newline at end of file +/.direnv \ No newline at end of file diff --git a/flake.lock b/flake.lock index e0e49f0..426d108 100644 --- a/flake.lock +++ b/flake.lock @@ -1,8 +1,31 @@ { "nodes": { + "fenix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1662533965, + "narHash": "sha256-56td0N02VeIOuzyesNWLCwTcoVwP0wuQauUbzh6RpMg=", + "owner": "nix-community", + "repo": "fenix", + "rev": "b5b70debeb3c2f93186eaed7de13674b9783b9d2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1662220400, @@ -19,20 +42,6 @@ } }, "nixpkgs": { - "locked": { - "lastModified": 1662096612, - "narHash": "sha256-R+Q8l5JuyJryRPdiIaYpO5O3A55rT+/pItBrKcy7LM4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "21de2b973f9fee595a7a1ac4693efff791245c34", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_2": { "locked": { "lastModified": 1662410893, "narHash": "sha256-jmZjdA/n92OpUdaEjU7QJNsa1np+u+JWDj300x3K3XY=", @@ -49,11 +58,29 @@ }, "root": { "inputs": { + "fenix": "fenix", "naersk": "naersk", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "utils": "utils" } }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1662377094, + "narHash": "sha256-0bvOQxEe8nzk/VlhHBrUn/Mz3DlE92Us7JqveVjTe0A=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "6dfd8aebdfa1ee1824446f01daf5bdb229b32f92", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, "utils": { "locked": { "lastModified": 1659877975, diff --git a/flake.nix b/flake.nix index b0a4131..f332f15 100644 --- a/flake.nix +++ b/flake.nix @@ -2,38 +2,66 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs"; utils.url = "github:numtide/flake-utils"; - naersk.url = "github:nix-community/naersk"; + naersk = { + url = "github:nix-community/naersk"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + fenix = { + url = "github:nix-community/fenix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = { self, nixpkgs, utils, naersk }: - utils.lib.eachDefaultSystem (system: - let - pkgs = nixpkgs.legacyPackages."${system}"; - naersk-lib = naersk.lib."${system}"; - in rec - { - packages.jade = naersk-lib.buildPackage { - pname = "jade"; - root = ./.; - }; - - packages.default = packages.jade; + outputs = { + self, + nixpkgs, + utils, + naersk, + fenix, + ... + }: + utils.lib.eachDefaultSystem (system: let + pkgs = nixpkgs.legacyPackages."${system}"; + toolchain = with fenix.packages."${system}"; + combine [ + latest.rustc + latest.cargo + latest.clippy + latest.rustfmt + latest.rust-analyzer + latest.rust-src + ]; + naersk-lib = naersk.lib."${system}".override { + cargo = toolchain; + rustc = toolchain; + clippy = toolchain; + rustfmt = toolchain; + rust-analyzer = toolchain; + rust-src = toolchain; + }; + in rec + { + packages.jade = naersk-lib.buildPackage { + pname = "Jade"; + root = ./.; + }; - apps.jade = utils.lib.mkApp { - drv = packages.jade; - }; - - apps.default = apps.jade; + packages.default = packages.jade; - devShells.default = pkgs.mkShell { - nativeBuildInputs = with pkgs; [ - rustc - cargo - rustfmt - cargo-audit - clippy - ]; - }; - }); -} + apps.jade = utils.lib.mkApp { + drv = packages.jade; + }; + + apps.default = apps.jade; + devShells.default = pkgs.mkShell { + nativeBuildInputs = [ + toolchain + ]; + # For rust-analyzer + RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; + }; + + formatter = pkgs.alejandra; + }); +}