Use makeWrapper

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2025-07-29 10:45:08 +01:00
parent 7f9a1dcb66
commit bff2fca2eb
7 changed files with 41 additions and 64 deletions

View File

@@ -1,5 +1,5 @@
{ pkgs, ... }:
# AUTO-UPDATE: nix-update --flake --version=branch=master littlelink-server --subpackage yarnSrc
# AUTO-UPDATE: nix-update --flake --version=branch=master littlelink-server
pkgs.stdenv.mkDerivation (finalAttrs: {
pname = "littlelink-server";
version = "0-unstable-2025-06-16";
@@ -11,41 +11,28 @@ pkgs.stdenv.mkDerivation (finalAttrs: {
hash = "sha256-BUPqXpiofHlLKgbOYkZr+QEoRIdRgr8alrUzcGS9edc=";
};
yarnSrc = pkgs.stdenv.mkDerivation {
inherit (finalAttrs) src pname version;
offlineCache = pkgs.fetchYarnDeps {
yarnLock = finalAttrs.src + "/yarn.lock";
hash = "sha256-nv1NgMm56wWlAYqqdH9UKTnWNhjxWBs1lmG+UCCQAzk=";
};
nativeBuildInputs = with pkgs; [
nodejs
yarnConfigHook
yarnBuildHook
npmHooks.npmInstallHook
];
yarnBuildFlags = [ "--noninteractive" ];
installPhase = ''
mkdir -p $out/lib/${finalAttrs.pname}
cp -r build node_modules $out/lib/${finalAttrs.pname}
'';
offlineCache = pkgs.fetchYarnDeps {
yarnLock = finalAttrs.src + "/yarn.lock";
hash = "sha256-nv1NgMm56wWlAYqqdH9UKTnWNhjxWBs1lmG+UCCQAzk=";
};
wrapper = pkgs.writeShellApplication {
name = finalAttrs.pname;
runtimeInputs = with pkgs; [ nodejs_20 ];
text = ''
cd ${finalAttrs.yarnSrc}/lib/${finalAttrs.pname}
exec node build/server.js "$@"
'';
};
nativeBuildInputs = with pkgs; [
nodejs_20
yarnConfigHook
yarnBuildHook
npmHooks.npmInstallHook
makeWrapper
];
yarnBuildFlags = [ "--noninteractive" ];
installPhase = ''
mkdir -p $out/bin
cp ${finalAttrs.wrapper}/bin/${finalAttrs.pname} $out/bin/
mkdir -p $out/lib/${finalAttrs.pname}
cp -r build node_modules $out/lib/${finalAttrs.pname}
makeWrapper ${pkgs.nodejs_20}/bin/node $out/bin/${finalAttrs.pname} \
--run "cd $out/lib/${finalAttrs.pname}" \
--add-flag "build/server.js"
'';
meta.mainProgram = finalAttrs.pname;