Files
net-deertopia/doerg-parser/package.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
'';
})