68 lines
1.5 KiB
Nix
68 lines
1.5 KiB
Nix
{ buildNpmPackage
|
|
, mkCljBin
|
|
, nodejs
|
|
, importNpmLock
|
|
, stdenv
|
|
, clojure
|
|
, clj-builder
|
|
, mk-deps-cache
|
|
, breakpointHook
|
|
, makeWrapper
|
|
, lib
|
|
}:
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
name = "net.deertopia/doerg";
|
|
version = "0.1.0";
|
|
src = ./.;
|
|
nativeBuildInputs = [
|
|
# importNpmLock.npmConfigHook
|
|
clojure
|
|
clj-builder
|
|
breakpointHook
|
|
makeWrapper
|
|
];
|
|
buildInputs = [
|
|
nodejs
|
|
];
|
|
npmDeps = importNpmLock.buildNodeModules {
|
|
npmRoot = finalAttrs.src;
|
|
inherit nodejs;
|
|
};
|
|
depsCache = mk-deps-cache {
|
|
lockfile = finalAttrs.src + "/deps-lock.json";
|
|
};
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
# Node dependencies.
|
|
ln -s $npmDeps/node_modules ./node_modules
|
|
mv package.json package.json.orig
|
|
mv package-lock.json package-lock.json.orig
|
|
cp $npmDeps/{package,package-lock}.json .
|
|
|
|
# Clojure dependencies.
|
|
export HOME="$depsCache"
|
|
export JAVA_TOOL_OPTIONS="-Duser.home=$depsCache"
|
|
export CLJ_CONFIG="$HOME/.clojure"
|
|
export CLJ_CACHE="$TMP/cp_cache"
|
|
export GITLIBS="$HOME/.gitlibs"
|
|
|
|
clj-builder --patch-git-sha $PWD
|
|
|
|
./node_modules/.bin/shadow-cljs release app
|
|
|
|
runHook postBuild
|
|
'';
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mkdir -p $out/bin $out/var
|
|
cp -r build/* $out/var
|
|
# chmod +x $out/bin/doerg
|
|
makeWrapper ${lib.getExe nodejs} $out/bin/doerg \
|
|
--add-flags $out/var/doerg/main.js \
|
|
--prefix NODE_PATH : $npmDeps/node_modules
|
|
runHook postInstall
|
|
'';
|
|
})
|