diff --git a/pkgs/by-name/he/headlamp-frontend/package.nix b/pkgs/by-name/he/headlamp-frontend/package.nix new file mode 100644 index 000000000000..191a68b1547c --- /dev/null +++ b/pkgs/by-name/he/headlamp-frontend/package.nix @@ -0,0 +1,53 @@ +{ + buildNpmPackage, + headlamp-server, +}: + +buildNpmPackage { + pname = "headlamp-frontend"; + inherit (headlamp-server) version src; + + strictDeps = true; + __structuredAttrs = true; + + sourceRoot = "${headlamp-server.src.name}/frontend"; + + npmDepsHash = "sha256-cjar6j5Wzh5monp9YxrsrnGDxgjlT+YRFh5mgZcImKI="; + + postPatch = '' + chmod -R u+w ../app + cp ${headlamp-server.src}/app/package.json ../app/package.json + substituteInPlace package.json --replace-fail '"prebuild": "npm run make-version",' "" + ''; + + preBuild = '' + cat > .env < $out/lib/headlamp/app/main.js < resourcesPath, + configurable: false, + }); + app.setVersion('${headlamp-server.version}'); + app.setName('Headlamp'); + require('./build/main.js'); + ENTRY + + # Point package.json main at our wrapper + substituteInPlace $out/lib/headlamp/app/package.json \ + --replace-fail '"main": "build/main.js"' '"main": "main.js"' + + # Icons + for size in 16 32; do + mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps + cp ${headlamp-server.src}/frontend/public/favicon-''${size}x''${size}.png $out/share/icons/hicolor/''${size}x''${size}/apps/headlamp.png + done + mkdir -p $out/share/icons/hicolor/192x192/apps + cp ${headlamp-server.src}/frontend/public/android-chrome-192x192.png $out/share/icons/hicolor/192x192/apps/headlamp.png + mkdir -p $out/share/icons/hicolor/512x512/apps + cp ${headlamp-server.src}/frontend/public/android-chrome-512x512.png $out/share/icons/hicolor/512x512/apps/headlamp.png + + # Wrapper + mkdir -p $out/bin + makeWrapper ${electron}/bin/electron $out/bin/headlamp \ + --add-flags $out/lib/headlamp/app \ + --prefix PATH : ${headlamp-server}/bin + + runHook postInstall + ''; + + passthru = { + frontend = headlamp-frontend; + }; + + meta = headlamp-server.meta // { + mainProgram = "headlamp"; + }; +}