From 3eb9b8e84bf05debf9843b80c468911fd095f4a0 Mon Sep 17 00:00:00 2001 From: Paul Makles Date: Mon, 29 Dec 2025 17:59:31 +0100 Subject: [PATCH] fix: add NixOS compatibility for electron startup (#23) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add start.sh script that auto-detects NixOS and configures electron path - Script dynamically finds the correct electron version from nix store - Keeps original electron-forge start available as start:forge - Fixes electron launch issues on NixOS systems 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude --- package.json | 3 ++- start.sh | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100755 start.sh diff --git a/package.json b/package.json index 649d1aa..f18daa0 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "main": ".vite/build/main.js", "repository": "stoatchat/desktop", "scripts": { - "start": "electron-forge start", + "start": "./start.sh", + "start:forge": "electron-forge start", "package": "electron-forge package", "make": "electron-forge make", "publish": "electron-forge publish", diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..ea47c14 --- /dev/null +++ b/start.sh @@ -0,0 +1,25 @@ +I d#!/usr/bin/env bash + +# Check if we're on NixOS and set up electron path if needed +if [ -f /etc/NIXOS ] || [ -n "$NIX_STORE" ]; then + # We're on NixOS, need to find the electron path + if command -v electron &> /dev/null; then + # Electron is in PATH, find its store path + ELECTRON_BIN=$(which electron) + ELECTRON_STORE_PATH=$(dirname "$ELECTRON_BIN") + export ELECTRON_OVERRIDE_DIST_PATH="$ELECTRON_STORE_PATH" + echo "NixOS detected: Using electron from $ELECTRON_STORE_PATH" + elif [ -d /nix/store ]; then + # Try to find electron in nix store matching our version requirement + REQUIRED_VERSION=$(grep '"electron"' package.json | sed -E 's/.*"([0-9]+)\..*/\1/') + ELECTRON_PATH=$(find /nix/store -maxdepth 1 -name "*electron-${REQUIRED_VERSION}*" -type d 2>/dev/null | grep -v unwrapped | head -1) + + if [ -n "$ELECTRON_PATH" ] && [ -d "$ELECTRON_PATH/bin" ]; then + export ELECTRON_OVERRIDE_DIST_PATH="$ELECTRON_PATH/bin" + echo "NixOS detected: Using electron from $ELECTRON_PATH/bin" + fi + fi +fi + +# Run electron-forge directly to avoid recursion +exec npx electron-forge start "$@" \ No newline at end of file