88 lines
2.1 KiB
Nix
88 lines
2.1 KiB
Nix
{
|
|
description = "Electron Development Environment";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
};
|
|
|
|
outputs = {nixpkgs, flake-utils, ...}:
|
|
flake-utils.lib.eachDefaultSystem (system: let
|
|
pkgs = import nixpkgs {inherit system; config.allowUnfree = true;};
|
|
electronRuntimeLibs = with pkgs; [
|
|
alsa-lib
|
|
at-spi2-atk
|
|
at-spi2-core
|
|
atk
|
|
cairo
|
|
cups
|
|
dbus
|
|
expat
|
|
fontconfig
|
|
freetype
|
|
gdk-pixbuf
|
|
glib
|
|
gtk3
|
|
libdrm
|
|
libgbm
|
|
libglvnd
|
|
libnotify
|
|
libpulseaudio
|
|
libuuid
|
|
libxkbcommon
|
|
mesa
|
|
nspr
|
|
nss
|
|
pango
|
|
pipewire
|
|
systemd
|
|
wayland
|
|
# xorg
|
|
libX11
|
|
libXScrnSaver
|
|
libXcomposite
|
|
libXcursor
|
|
libXdamage
|
|
libXext
|
|
libXfixes
|
|
libXi
|
|
libXrandr
|
|
libXtst
|
|
libxcb
|
|
];
|
|
in {
|
|
devShells.default = pkgs.mkShell {
|
|
packages = with pkgs; [
|
|
nodejs_22
|
|
corepack_22
|
|
bun
|
|
electron
|
|
pkg-config
|
|
python3
|
|
gcc
|
|
gnumake
|
|
git
|
|
jq
|
|
patchelf
|
|
dpkg
|
|
rpm
|
|
fpm
|
|
] ++ electronRuntimeLibs;
|
|
|
|
shellHook = ''
|
|
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath electronRuntimeLibs}:$LD_LIBRARY_PATH"
|
|
export ELECTRON_ENABLE_LOGGING=1
|
|
export ELECTRON_OZONE_PLATFORM_HINT="''${ELECTRON_OZONE_PLATFORM_HINT:-auto}"
|
|
export NPM_CONFIG_TARGET_ARCH="''${NPM_CONFIG_TARGET_ARCH:-x64}"
|
|
export npm_config_build_from_source=true
|
|
export USE_SYSTEM_FPM=true
|
|
|
|
alias electron-install='cd ../.. && bun install'
|
|
alias electron-build-web='cd ../.. && bun run build:web'
|
|
alias electron-dev='bun run dev'
|
|
alias electron-package='bun run package:linux'
|
|
alias electron-validate='bun run validate'
|
|
'';
|
|
};
|
|
});
|
|
}
|