Add an overlay to the flake.
This commit is contained in:
130
flake.nix
130
flake.nix
@@ -57,43 +57,10 @@
|
|||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
inherit system overlays;
|
inherit system overlays;
|
||||||
};
|
};
|
||||||
build_wasm =
|
appliedOverlay = self.overlays.default pkgs pkgs;
|
||||||
{
|
|
||||||
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}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
);
|
|
||||||
in
|
in
|
||||||
rec {
|
rec {
|
||||||
|
default = all;
|
||||||
all = pkgs.symlinkJoin {
|
all = pkgs.symlinkJoin {
|
||||||
name = "all";
|
name = "all";
|
||||||
paths = [
|
paths = [
|
||||||
@@ -103,37 +70,86 @@
|
|||||||
wasm_web
|
wasm_web
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
library = (pkgs.callPackage ./nix/package.nix { buildLib = true; }).overrideAttrs (
|
inherit (appliedOverlay.organic)
|
||||||
old:
|
library
|
||||||
let
|
devTools
|
||||||
in
|
wasm_bundler
|
||||||
{
|
wasm_web
|
||||||
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"; };
|
|
||||||
docker_env = pkgs.buildEnv {
|
docker_env = pkgs.buildEnv {
|
||||||
name = "organic";
|
name = "organic";
|
||||||
paths = with pkgs; [
|
paths = with pkgs; [
|
||||||
devTools
|
appliedOverlay.organic.devTools
|
||||||
bash
|
bash
|
||||||
uutils-coreutils-noprefix
|
uutils-coreutils-noprefix
|
||||||
# toybox # Smaller than uutils-coreutils?
|
# 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