diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..de5c1ff --- /dev/null +++ b/default.nix @@ -0,0 +1,42 @@ +{ + lib, + stdenv, + rust-bin, # From overlay + makeRustPlatform, + packageToml, + rust, + libiconv, + darwin, + python3, +}: let + testDeps = [ + python3 + ]; + + buildDeps = rust: + [ + rust + ] + ++ (lib.optionals stdenv.isDarwin [ + libiconv + darwin.apple_sdk.frameworks.Foundation + ]) + ++ testDeps; + + mkPackage = rust: + (makeRustPlatform { + cargo = rust; + rustc = rust; + }) + .buildRustPackage { + pname = packageToml.name; + inherit (packageToml) version; + src = builtins.path { + path = ./.; + inherit (packageToml) name; + }; + cargoLock.lockFile = ./Cargo.lock; + buildInputs = buildDeps rust; + dontUseCargoParallelTests = true; + }; +in (mkPackage rust-bin.stable.latest.minimal) diff --git a/flake.nix b/flake.nix index b2e610c..8f94b12 100644 --- a/flake.nix +++ b/flake.nix @@ -25,46 +25,18 @@ packageToml = (builtins.fromTOML (builtins.readFile ./Cargo.toml)).package; msrv = packageToml.rust-version; - buildDeps = rust: - with pkgs; - [ - rust - ] - ++ (lib.optionals stdenv.isDarwin [ - libiconv - darwin.apple_sdk.frameworks.Foundation - ]) - ++ testDeps; - - testDeps = with pkgs; [ - python3 - ]; - mkDevShell = rust: pkgs.mkShell { - packages = buildDeps (rust.override { - extensions = ["rust-src"]; - }); + inputsFrom = [ + (config.packages.default.override { + rust = rust.override { + extensions = ["rust-src"]; + }; + }) + ]; env.RUST_BACKTRACE = 1; }; - - mkPackage = rust: - (pkgs.makeRustPlatform { - cargo = rust; - rustc = rust; - }) - .buildRustPackage { - pname = packageToml.name; - inherit (packageToml) version; - src = builtins.path { - path = ./.; - inherit (packageToml) name; - }; - cargoLock.lockFile = ./Cargo.lock; - buildInputs = buildDeps rust; - dontUseCargoParallelTests = true; - }; in { _module.args = { pkgs = import inputs.nixpkgs { @@ -79,7 +51,8 @@ default = mkDevShell pkgs.rust-bin.stable.latest.default; msrv = mkDevShell pkgs.rust-bin.stable.${msrv}.default; }; - packages.default = mkPackage pkgs.rust-bin.stable.latest.minimal; + + packages.default = pkgs.callPackage ./default.nix {inherit packageToml;}; }; }; }