diff --git a/flake.nix b/flake.nix index cce024b..c6c5c83 100644 --- a/flake.nix +++ b/flake.nix @@ -57,43 +57,10 @@ pkgs = import nixpkgs { inherit system overlays; }; - build_wasm = - { - bindgenTarget ? null, - }: - (pkgs.callPackage ./nix/package.nix { - targetBins = [ - "wasm" - ]; - features = [ "wasm" ]; - cargoBuildTarget = "wasm32-unknown-unknown"; - buildType = "wasm"; - }).overrideAttrs - ( - old: - let - bindgen_command = [ - "${pkgs.wasm-bindgen-cli}/bin/wasm-bindgen" - "--target" - bindgenTarget - "--out-dir" - "target/wasm32-unknown-unknown/${bindgenTarget}" - "target/wasm32-unknown-unknown/wasm/wasm.wasm" - ]; - in - { - postBuild = '' - ${pkgs.lib.escapeShellArgs bindgen_command} - ''; - - installPhase = '' - mkdir -p $out/share/${bindgenTarget} - cp target/wasm32-unknown-unknown/${bindgenTarget}/* $out/share/${bindgenTarget} - ''; - } - ); + appliedOverlay = self.overlays.default pkgs pkgs; in rec { + default = all; all = pkgs.symlinkJoin { name = "all"; paths = [ @@ -103,37 +70,86 @@ wasm_web ]; }; - library = (pkgs.callPackage ./nix/package.nix { buildLib = true; }).overrideAttrs ( - old: - let - in - { - installPhase = '' - mkdir -p $out/lib - cp target/*/release/liborganic.rlib $out/lib/ - ''; - } - ); - devTools = pkgs.callPackage ./nix/package.nix { - targetBins = [ - "parse" - "compare" - ]; - features = [ "compare" ]; - }; - wasm_bundler = build_wasm { bindgenTarget = "bundler"; }; - wasm_web = build_wasm { bindgenTarget = "web"; }; + inherit (appliedOverlay.organic) + library + devTools + wasm_bundler + wasm_web + ; docker_env = pkgs.buildEnv { name = "organic"; paths = with pkgs; [ - devTools + appliedOverlay.organic.devTools bash uutils-coreutils-noprefix # toybox # Smaller than uutils-coreutils? ]; }; - default = all; } ); + overlays.default = final: prev: { + organic = final.lib.makeScope final.newScope ( + organicScope: + let + build_wasm = + { + bindgenTarget ? null, + }: + (organicScope.callPackage ./nix/package.nix { + targetBins = [ + "wasm" + ]; + features = [ "wasm" ]; + cargoBuildTarget = "wasm32-unknown-unknown"; + buildType = "wasm"; + }).overrideAttrs + ( + old: + let + bindgen_command = [ + "${final.wasm-bindgen-cli}/bin/wasm-bindgen" + "--target" + bindgenTarget + "--out-dir" + "target/wasm32-unknown-unknown/${bindgenTarget}" + "target/wasm32-unknown-unknown/wasm/wasm.wasm" + ]; + in + { + postBuild = '' + ${final.lib.escapeShellArgs bindgen_command} + ''; + + installPhase = '' + mkdir -p $out/share/${bindgenTarget} + cp target/wasm32-unknown-unknown/${bindgenTarget}/* $out/share/${bindgenTarget} + ''; + } + ); + in + { + library = (organicScope.callPackage ./nix/package.nix { buildLib = true; }).overrideAttrs ( + old: + let + in + { + installPhase = '' + mkdir -p $out/lib + cp target/*/release/liborganic.rlib $out/lib/ + ''; + } + ); + devTools = organicScope.callPackage ./nix/package.nix { + targetBins = [ + "parse" + "compare" + ]; + features = [ "compare" ]; + }; + wasm_bundler = build_wasm { bindgenTarget = "bundler"; }; + wasm_web = build_wasm { bindgenTarget = "web"; }; + } + ); + }; }; }