diff --git a/flake.nix b/flake.nix index 3626be9a1..cbbc31568 100644 --- a/flake.nix +++ b/flake.nix @@ -15,25 +15,41 @@ }; outputs = inputs@{ self, nixpkgs, naersk, rust-overlay, flake-utils, ... }: - flake-utils.lib.eachDefaultSystem (system: - let - pkgs = import nixpkgs { inherit system; overlays = [ rust-overlay.overlay ]; }; - rust = (pkgs.rustChannelOf { - date = "2021-05-01"; - channel = "nightly"; + let + rust = pkgs: + (pkgs.rustChannelOf { + date = "2021-05-01"; + channel = "nightly"; }).minimal; # cargo, rustc and rust-std - naerskLib = naersk.lib."${system}".override { + + mkNaerskLib = system: pkgs: + naersk.lib."${system}".override { # naersk can't build with stable?! # inherit (pkgs.rust-bin.stable.latest) rustc cargo; - rustc = rust; - cargo = rust; + rustc = rust pkgs; + cargo = rust pkgs; }; - in rec { - packages.helix = naerskLib.buildPackage { + + pkg = naerskLib: + naerskLib.buildPackage { pname = "helix"; root = inputs.helix; }; + + in flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ rust-overlay.overlay ]; + }; + naerskLib = mkNaerskLib system pkgs; + in rec { + packages.helix = pkg naerskLib; defaultPackage = packages.helix; - devShell = pkgs.callPackage ./shell.nix {}; - }); + devShell = pkgs.callPackage ./shell.nix { }; + }) // { + overlay = final: prev: + let naerskLib = mkNaerskLib prev.system final; + in (rust-overlay.overlay final prev) // { helix = pkg naerskLib; }; + }; }