nix-config/pkgs/open-webui-desktop/default.nix
2026-02-23 20:50:47 +01:00

60 lines
1.3 KiB
Nix

{
lib,
buildNpmPackage,
fetchFromGitHub,
electron,
}:
buildNpmPackage rec {
pname = "open-webui-desktop";
version = "7e54042";
src = fetchFromGitHub {
owner = "open-webui";
repo = "desktop";
rev = "build-e${version}";
hash = "sha256-eW3B8CS2T46Z91JRAlZJ3rNxAru4p7eJwyxn6P20pnA=";
};
npmDepsHash = "sha256-HdkgbcLzY/9T26hpw6Jej8sUWlcIIn1FkJ7IVvG3P4o=";
makeCacheWritable = true;
# Create .npmrc to prevent scripts from running during install
postPatch = ''
cat >> .npmrc << 'EOF'
ignore-scripts=true
EOF
'';
preInstall = ''
sed -i '/postinstall/d' package.json
'';
npmRebuild = false;
buildPhase = ''
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
npm run build
'';
installPhase = ''
mkdir -p $out/opt/${pname}
cp -r out $out/opt/${pname}/
cp -r resources $out/opt/${pname}/
cp -r node_modules $out/opt/${pname}/
mkdir -p $out/bin
makeWrapper ${electron}/bin/electron $out/bin/${pname} \
--add-flags "$out/opt/${pname}/out/main/index.js" \
--run "cd $out/opt/${pname}"
'';
meta = {
description = "Open WebUI Desktop 🌐 (Alpha)";
homepage = "https://github.com/open-webui/desktop";
# license = lib.licenses.TODO;
mainProgram = "open-webui-desktop";
platforms = lib.platforms.linux;
};
}