{ lib, stdenv, fetchFromGitHub, fetchYarnDeps, nodejs, prefetch-yarn-deps, yarn, gnused, rsync, }: stdenv.mkDerivation (finalAttrs: { pname = "incus-ui"; version = "0.6"; src = fetchFromGitHub { owner = "canonical"; repo = "lxd-ui"; rev = finalAttrs.version; # hash = "sha256-52MRf7bk8Un9wqz00+JjDmuJgPKYhgAhIbMbcAuf8W8="; hash = "sha256-3Ts6lKyzpMDVATCKD1fFIGTskWzWpQUT9S8cPFnlEOs="; }; offlineCache = fetchYarnDeps { yarnLock = "${finalAttrs.src}/yarn.lock"; hash = "sha256-0pyxwMGGqogEe1w3sail8NUDHtxLQZU9Wg8E6rQNy4o="; }; patches = [ ./ui-canonical-0001-Branding.patch ./ui-canonical-0002-Update-navigation.patch ./ui-canonical-0003-Update-certificate-generation.patch ./ui-canonical-0004-Remove-external-links.patch ./ui-canonical-0005-Remove-Canonical-image-servers.patch ./ui-canonical-0006-Remove-version-check.patch ]; nativeBuildInputs = [ nodejs prefetch-yarn-deps yarn ]; configurePhase = '' runHook preConfigure ${gnused}/bin/sed -i "s/LXD/Incus/g" src/*/*.ts* src/*/*/*.ts* src/*/*/*/*.ts* ${gnused}/bin/sed -i "s/devlxd/guestapi/g" src/*/*.ts* src/*/*/*.ts* src/*/*/*/*.ts* ${gnused}/bin/sed -i "s/dev\/lxd/dev\/incus/g" src/*/*.ts* src/*/*/*.ts* src/*/*/*/*.ts* ${gnused}/bin/sed -i "s/lxd_/incus_/g" src/*/*.ts* src/*/*/*.ts* src/*/*/*/*.ts* ${gnused}/bin/sed -i "s/\"lxd\"/\"incus\"/g" src/*/*.ts* src/*/*/*.ts* src/*/*/*/*.ts* export HOME=$(mktemp -d) yarn config --offline set yarn-offline-mirror "$offlineCache" fixup-yarn-lock yarn.lock yarn --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive install patchShebangs node_modules cp ${./favicon-32x32.png} public/assets/img/favicon-32x32.png runHook postConfigure ''; buildPhase = '' runHook preBuild yarn --offline build runHook postBuild ''; installPhase = '' runHook preInstall mkdir -p $out ${rsync}/bin/rsync -a build/ui/ $out/ runHook postInstall ''; meta = with lib; { description = "Easy and accessible container and virtual machine management. A browser interface for LXD"; homepage = "https://github.com/canonical/lxd-ui"; license = licenses.gpl3; maintainers = with maintainers; [ ]; platforms = platforms.linux; }; })