Add an overlay to the flake.
This commit is contained in:
130
flake.nix
130
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"; };
|
||||
}
|
||||
);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user