Merge
This commit is contained in:
commit
f41cf7cfa4
1 changed files with 348 additions and 312 deletions
686
flake.nix
686
flake.nix
|
|
@ -6,340 +6,376 @@
|
||||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs =
|
||||||
self,
|
{
|
||||||
nixpkgs,
|
self,
|
||||||
rust-overlay,
|
nixpkgs,
|
||||||
...
|
rust-overlay,
|
||||||
}: let
|
...
|
||||||
systems = ["x86_64-linux"];
|
}:
|
||||||
forAllSystems = nixpkgs.lib.genAttrs systems;
|
let
|
||||||
version = "0.0.10";
|
systems = [ "x86_64-linux" ];
|
||||||
x86_64DebHash = "sha256-9s47HyPJf/6yA6XGgKBJ+60gTXLTV/jvE2tS/Fth8zA=";
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
||||||
forgejoBaseUrl = "https://git.methanium.net/tensamin/client/releases/download/${version}";
|
version = "0.0.10";
|
||||||
in {
|
x86_64DebHash = "sha256-VVKkZ9yQ7BoLnYnCf5OSHcrakoBNfUx/uWxBmm3gBZE=";
|
||||||
packages = forAllSystems (system: let
|
forgejoBaseUrl = "https://git.methanium.net/tensamin/client/releases/download/${version}";
|
||||||
pkgs = import nixpkgs {
|
in
|
||||||
inherit system;
|
{
|
||||||
overlays = [(import rust-overlay)];
|
packages = forAllSystems (
|
||||||
config = {
|
system:
|
||||||
allowUnfree = true;
|
let
|
||||||
android_sdk.accept_license = true;
|
pkgs = import nixpkgs {
|
||||||
};
|
inherit system;
|
||||||
};
|
overlays = [ (import rust-overlay) ];
|
||||||
debArtifact = "Tensamin-${version}-linux-amd64.deb";
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
android_sdk.accept_license = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
debArtifact = "Tensamin-${version}-linux-amd64.deb";
|
||||||
|
|
||||||
electronRuntimeLibs = with pkgs; [
|
electronRuntimeLibs = with pkgs; [
|
||||||
alsa-lib
|
alsa-lib
|
||||||
at-spi2-atk
|
at-spi2-atk
|
||||||
at-spi2-core
|
at-spi2-core
|
||||||
atk
|
atk
|
||||||
cairo
|
cairo
|
||||||
cups
|
cups
|
||||||
dbus
|
dbus
|
||||||
expat
|
expat
|
||||||
fontconfig
|
fontconfig
|
||||||
freetype
|
freetype
|
||||||
gdk-pixbuf
|
gdk-pixbuf
|
||||||
glib
|
glib
|
||||||
gtk3
|
gtk3
|
||||||
libdrm
|
libdrm
|
||||||
libgbm
|
libgbm
|
||||||
libglvnd
|
libglvnd
|
||||||
libnotify
|
libnotify
|
||||||
libpulseaudio
|
libpulseaudio
|
||||||
libuuid
|
libuuid
|
||||||
libxkbcommon
|
libxkbcommon
|
||||||
mesa
|
mesa
|
||||||
nspr
|
nspr
|
||||||
nss
|
nss
|
||||||
pango
|
pango
|
||||||
pipewire
|
pipewire
|
||||||
systemd
|
systemd
|
||||||
wayland
|
wayland
|
||||||
libX11
|
libX11
|
||||||
libXScrnSaver
|
libXScrnSaver
|
||||||
libXcomposite
|
libXcomposite
|
||||||
libXcursor
|
libXcursor
|
||||||
libXdamage
|
libXdamage
|
||||||
libXext
|
libXext
|
||||||
libXfixes
|
libXfixes
|
||||||
libXi
|
libXi
|
||||||
libXrandr
|
libXrandr
|
||||||
libXtst
|
libXtst
|
||||||
libxcb
|
libxcb
|
||||||
];
|
|
||||||
packageDeb = src:
|
|
||||||
pkgs.stdenv.mkDerivation {
|
|
||||||
pname = "tensamin";
|
|
||||||
inherit version src;
|
|
||||||
|
|
||||||
nativeBuildInputs = with pkgs; [
|
|
||||||
autoPatchelfHook
|
|
||||||
dpkg
|
|
||||||
makeWrapper
|
|
||||||
];
|
];
|
||||||
buildInputs = electronRuntimeLibs;
|
packageDeb =
|
||||||
|
src:
|
||||||
|
pkgs.stdenv.mkDerivation {
|
||||||
|
pname = "tensamin";
|
||||||
|
inherit version src;
|
||||||
|
|
||||||
dontConfigure = true;
|
nativeBuildInputs = with pkgs; [
|
||||||
dontBuild = true;
|
autoPatchelfHook
|
||||||
|
dpkg
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
buildInputs = electronRuntimeLibs;
|
||||||
|
|
||||||
unpackPhase = ''
|
dontConfigure = true;
|
||||||
runHook preUnpack
|
dontBuild = true;
|
||||||
dpkg-deb -x "$src" .
|
|
||||||
runHook postUnpack
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
unpackPhase = ''
|
||||||
runHook preInstall
|
runHook preUnpack
|
||||||
|
dpkg-deb -x "$src" .
|
||||||
|
runHook postUnpack
|
||||||
|
'';
|
||||||
|
|
||||||
mkdir -p "$out"
|
installPhase = ''
|
||||||
cp -r opt "$out/"
|
runHook preInstall
|
||||||
cp -r usr/* "$out/"
|
|
||||||
|
|
||||||
mkdir -p "$out/bin"
|
mkdir -p "$out"
|
||||||
makeWrapper "$out/opt/Tensamin/tensamin" "$out/bin/tensamin"
|
cp -r opt "$out/"
|
||||||
|
cp -r usr/* "$out/"
|
||||||
|
|
||||||
substituteInPlace "$out/share/applications/tensamin.desktop" \
|
mkdir -p "$out/bin"
|
||||||
--replace-fail "Exec=/opt/Tensamin/tensamin" "Exec=tensamin"
|
makeWrapper "$out/opt/Tensamin/tensamin" "$out/bin/tensamin"
|
||||||
|
|
||||||
runHook postInstall
|
substituteInPlace "$out/share/applications/Tensamin.desktop" \
|
||||||
'';
|
--replace-fail "Exec=/opt/Tensamin/tensamin" "Exec=tensamin"
|
||||||
};
|
|
||||||
defaultPackage = packageDeb (pkgs.fetchurl {
|
|
||||||
url = "${forgejoBaseUrl}/${debArtifact}";
|
|
||||||
hash = x86_64DebHash;
|
|
||||||
});
|
|
||||||
localDebPath = builtins.getEnv "TENSAMIN_DEB";
|
|
||||||
localPathPackage =
|
|
||||||
if localDebPath == ""
|
|
||||||
then
|
|
||||||
pkgs.writeShellScriptBin "tensamin" ''
|
|
||||||
echo "Set TENSAMIN_DEB to a local .deb path and run with --impure." >&2
|
|
||||||
exit 1
|
|
||||||
''
|
|
||||||
else
|
|
||||||
packageDeb (builtins.path {
|
|
||||||
path = localDebPath;
|
|
||||||
name = debArtifact;
|
|
||||||
});
|
|
||||||
in {
|
|
||||||
default = defaultPackage;
|
|
||||||
tensamin = defaultPackage;
|
|
||||||
electron = defaultPackage;
|
|
||||||
localPathForDev = localPathPackage;
|
|
||||||
});
|
|
||||||
|
|
||||||
devShells = forAllSystems (system: let
|
runHook postInstall
|
||||||
pkgs = import nixpkgs {
|
'';
|
||||||
inherit system;
|
};
|
||||||
overlays = [(import rust-overlay)];
|
defaultPackage = packageDeb (
|
||||||
config = {
|
pkgs.fetchurl {
|
||||||
allowUnfree = true;
|
url = "${forgejoBaseUrl}/${debArtifact}";
|
||||||
android_sdk.accept_license = true;
|
hash = x86_64DebHash;
|
||||||
};
|
}
|
||||||
};
|
);
|
||||||
|
localDebPath = builtins.getEnv "TENSAMIN_DEB";
|
||||||
electronRuntimeLibs = with pkgs; [
|
localPathPackage =
|
||||||
alsa-lib
|
if localDebPath == "" then
|
||||||
at-spi2-atk
|
pkgs.writeShellScriptBin "tensamin" ''
|
||||||
at-spi2-core
|
echo "Set TENSAMIN_DEB to a local .deb path and run with --impure." >&2
|
||||||
atk
|
exit 1
|
||||||
cairo
|
''
|
||||||
cups
|
|
||||||
dbus
|
|
||||||
expat
|
|
||||||
fontconfig
|
|
||||||
freetype
|
|
||||||
gdk-pixbuf
|
|
||||||
glib
|
|
||||||
gtk3
|
|
||||||
libdrm
|
|
||||||
libgbm
|
|
||||||
libglvnd
|
|
||||||
libnotify
|
|
||||||
libpulseaudio
|
|
||||||
libuuid
|
|
||||||
libxkbcommon
|
|
||||||
mesa
|
|
||||||
nspr
|
|
||||||
nss
|
|
||||||
pango
|
|
||||||
pipewire
|
|
||||||
systemd
|
|
||||||
wayland
|
|
||||||
libX11
|
|
||||||
libXScrnSaver
|
|
||||||
libXcomposite
|
|
||||||
libXcursor
|
|
||||||
libXdamage
|
|
||||||
libXext
|
|
||||||
libXfixes
|
|
||||||
libXi
|
|
||||||
libXrandr
|
|
||||||
libXtst
|
|
||||||
libxcb
|
|
||||||
];
|
|
||||||
|
|
||||||
buildToolsVersion = "35.0.0";
|
|
||||||
ndkVersion = "29.0.14206865";
|
|
||||||
android = pkgs.androidenv.composeAndroidPackages {
|
|
||||||
cmdLineToolsVersion = "8.0";
|
|
||||||
toolsVersion = "26.1.1";
|
|
||||||
platformToolsVersion = "35.0.2";
|
|
||||||
buildToolsVersions = [buildToolsVersion];
|
|
||||||
platformVersions = ["35" "36"];
|
|
||||||
includeSources = false;
|
|
||||||
includeSystemImages = false;
|
|
||||||
includeNDK = true;
|
|
||||||
ndkVersions = [ndkVersion];
|
|
||||||
useGoogleAPIs = false;
|
|
||||||
};
|
|
||||||
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
|
|
||||||
extensions = ["rust-src" "rust-analyzer"];
|
|
||||||
targets = [
|
|
||||||
"aarch64-linux-android"
|
|
||||||
"armv7-linux-androideabi"
|
|
||||||
"i686-linux-android"
|
|
||||||
"x86_64-linux-android"
|
|
||||||
"wasm32-unknown-unknown"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
commonDeps = [rustToolchain pkgs.wasm-pack pkgs.lld];
|
|
||||||
appImageToolsArchive = pkgs.fetchurl {
|
|
||||||
url = "https://github.com/electron-userland/electron-builder-binaries/releases/download/appimage@1.0.3/appimage-tools-runtime-20251108.tar.gz";
|
|
||||||
hash = "sha256-hAIaeO4hSub9M6LWKpK6JVQt0QvIa/EXqbLQu6ROdmU=";
|
|
||||||
};
|
|
||||||
appImageTools = pkgs.runCommand "electron-builder-appimage-tools-nix" {nativeBuildInputs = [pkgs.gnutar pkgs.gzip];} ''
|
|
||||||
mkdir -p "$out"
|
|
||||||
tar -xzf ${appImageToolsArchive} --strip-components=1 -C "$out"
|
|
||||||
rm -f "$out/mksquashfs" "$out/desktop-file-validate"
|
|
||||||
ln -s ${pkgs.squashfsTools}/bin/mksquashfs "$out/mksquashfs"
|
|
||||||
ln -s ${pkgs.desktop-file-utils}/bin/desktop-file-validate "$out/desktop-file-validate"
|
|
||||||
'';
|
|
||||||
in rec {
|
|
||||||
default = electron;
|
|
||||||
|
|
||||||
electron = pkgs.mkShell {
|
|
||||||
packages = with pkgs;
|
|
||||||
[
|
|
||||||
nodejs_22
|
|
||||||
corepack_22
|
|
||||||
coreutils
|
|
||||||
pnpm
|
|
||||||
pkgs.electron
|
|
||||||
pkg-config
|
|
||||||
python3
|
|
||||||
gcc
|
|
||||||
gnumake
|
|
||||||
git
|
|
||||||
jq
|
|
||||||
patchelf
|
|
||||||
dpkg
|
|
||||||
rpm
|
|
||||||
fpm
|
|
||||||
curl
|
|
||||||
fakeroot
|
|
||||||
rsync
|
|
||||||
xz
|
|
||||||
p7zip
|
|
||||||
]
|
|
||||||
++ electronRuntimeLibs ++ commonDeps;
|
|
||||||
|
|
||||||
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
|
|
||||||
export ELECTRON_BUILDER_7ZIP_PATH="${pkgs.p7zip}/bin/7za"
|
|
||||||
export APPIMAGE_TOOLS_PATH="${appImageTools}"
|
|
||||||
|
|
||||||
alias electron-install='cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" && pnpm install'
|
|
||||||
alias electron-build-web='cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" && pnpm run build:web'
|
|
||||||
alias electron-dev='pnpm run dev'
|
|
||||||
alias electron-package='pnpm run package:linux'
|
|
||||||
alias electron-validate='pnpm run validate'
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
tauri = pkgs.mkShell {
|
|
||||||
buildInputs = with pkgs;
|
|
||||||
[
|
|
||||||
jdk17
|
|
||||||
gradle
|
|
||||||
pnpm
|
|
||||||
bun
|
|
||||||
nodejs
|
|
||||||
corepack_22
|
|
||||||
coreutils
|
|
||||||
pkg-config
|
|
||||||
git
|
|
||||||
jq
|
|
||||||
curl
|
|
||||||
]
|
|
||||||
++ [
|
|
||||||
android.androidsdk
|
|
||||||
android-studio-tools
|
|
||||||
]
|
|
||||||
++ commonDeps;
|
|
||||||
|
|
||||||
shellHook = ''
|
|
||||||
sdkSource="${android.androidsdk}/libexec/android-sdk"
|
|
||||||
if [ -d apps/tauri/src-tauri ]; then
|
|
||||||
projectRoot="$PWD/apps/tauri"
|
|
||||||
else
|
|
||||||
projectRoot="$PWD"
|
|
||||||
fi
|
|
||||||
androidHome="$projectRoot/.android"
|
|
||||||
sdkRoot="$androidHome/sdk"
|
|
||||||
|
|
||||||
mkdir -p "$androidHome"
|
|
||||||
if [ -L "$sdkRoot" ]; then
|
|
||||||
rm -f "$sdkRoot"
|
|
||||||
fi
|
|
||||||
mkdir -p "$sdkRoot"
|
|
||||||
|
|
||||||
ln -sfn "$sdkSource/build-tools" "$sdkRoot/build-tools"
|
|
||||||
ln -sfn "$sdkSource/cmake" "$sdkRoot/cmake"
|
|
||||||
ln -sfn "$sdkSource/licenses" "$sdkRoot/licenses"
|
|
||||||
ln -sfn "$sdkSource/ndk" "$sdkRoot/ndk"
|
|
||||||
ln -sfn "$sdkSource/ndk-bundle" "$sdkRoot/ndk-bundle"
|
|
||||||
ln -sfn "$sdkSource/platforms" "$sdkRoot/platforms"
|
|
||||||
ln -sfn "$sdkSource/platform-tools" "$sdkRoot/platform-tools"
|
|
||||||
ln -sfn "$sdkSource/tools" "$sdkRoot/tools"
|
|
||||||
|
|
||||||
mkdir -p "$sdkRoot/cmdline-tools"
|
|
||||||
ln -sfn "$sdkSource/cmdline-tools/8.0" "$sdkRoot/cmdline-tools/8.0"
|
|
||||||
ln -sfn "8.0" "$sdkRoot/cmdline-tools/latest"
|
|
||||||
|
|
||||||
sdkRootAbs="$(realpath "$sdkRoot")"
|
|
||||||
ndkRootAbs="''${sdkRootAbs}/ndk/${ndkVersion}"
|
|
||||||
|
|
||||||
export PATH="''${sdkRootAbs}/cmdline-tools/latest/bin:''${sdkRootAbs}/platform-tools:''${ndkRootAbs}:${pkgs.android-studio-tools}/bin:$PATH"
|
|
||||||
export ANDROID_HOME="''${sdkRootAbs}"
|
|
||||||
export ANDROID_SDK_ROOT="''${sdkRootAbs}"
|
|
||||||
export ANDROID_NDK_ROOT="''${ndkRootAbs}"
|
|
||||||
export ANDROID_NDK_HOME="$ANDROID_NDK_ROOT"
|
|
||||||
export NDK_HOME="$ANDROID_NDK_ROOT"
|
|
||||||
export NDK_PATH="$ANDROID_NDK_ROOT"
|
|
||||||
export JAVA_HOME="${pkgs.jdk17}"
|
|
||||||
|
|
||||||
aapt2Path="''${sdkRootAbs}/build-tools/${buildToolsVersion}/aapt2"
|
|
||||||
if [ -x "$aapt2Path" ]; then
|
|
||||||
mkdir -p "$HOME/.gradle"
|
|
||||||
gradleProperties="$HOME/.gradle/gradle.properties"
|
|
||||||
touch "$gradleProperties"
|
|
||||||
if grep -q '^android\.aapt2FromMavenOverride=' "$gradleProperties"; then
|
|
||||||
sed -i "s|^android\.aapt2FromMavenOverride=.*|android.aapt2FromMavenOverride=$aapt2Path|" "$gradleProperties"
|
|
||||||
else
|
else
|
||||||
printf '\nandroid.aapt2FromMavenOverride=%s\n' "$aapt2Path" >> "$gradleProperties"
|
packageDeb (
|
||||||
fi
|
builtins.path {
|
||||||
fi
|
path = localDebPath;
|
||||||
'';
|
name = debArtifact;
|
||||||
};
|
}
|
||||||
});
|
);
|
||||||
};
|
in
|
||||||
|
{
|
||||||
|
default = defaultPackage;
|
||||||
|
tensamin = defaultPackage;
|
||||||
|
electron = defaultPackage;
|
||||||
|
localPathForDev = localPathPackage;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
devShells = forAllSystems (
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = [ (import rust-overlay) ];
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
android_sdk.accept_license = 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
|
||||||
|
libX11
|
||||||
|
libXScrnSaver
|
||||||
|
libXcomposite
|
||||||
|
libXcursor
|
||||||
|
libXdamage
|
||||||
|
libXext
|
||||||
|
libXfixes
|
||||||
|
libXi
|
||||||
|
libXrandr
|
||||||
|
libXtst
|
||||||
|
libxcb
|
||||||
|
];
|
||||||
|
|
||||||
|
buildToolsVersion = "35.0.0";
|
||||||
|
ndkVersion = "29.0.14206865";
|
||||||
|
android = pkgs.androidenv.composeAndroidPackages {
|
||||||
|
cmdLineToolsVersion = "8.0";
|
||||||
|
toolsVersion = "26.1.1";
|
||||||
|
platformToolsVersion = "35.0.2";
|
||||||
|
buildToolsVersions = [ buildToolsVersion ];
|
||||||
|
platformVersions = [
|
||||||
|
"35"
|
||||||
|
"36"
|
||||||
|
];
|
||||||
|
includeSources = false;
|
||||||
|
includeSystemImages = false;
|
||||||
|
includeNDK = true;
|
||||||
|
ndkVersions = [ ndkVersion ];
|
||||||
|
useGoogleAPIs = false;
|
||||||
|
};
|
||||||
|
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
|
||||||
|
extensions = [
|
||||||
|
"rust-src"
|
||||||
|
"rust-analyzer"
|
||||||
|
];
|
||||||
|
targets = [
|
||||||
|
"aarch64-linux-android"
|
||||||
|
"armv7-linux-androideabi"
|
||||||
|
"i686-linux-android"
|
||||||
|
"x86_64-linux-android"
|
||||||
|
"wasm32-unknown-unknown"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
commonDeps = [
|
||||||
|
rustToolchain
|
||||||
|
pkgs.wasm-pack
|
||||||
|
pkgs.lld
|
||||||
|
];
|
||||||
|
appImageToolsArchive = pkgs.fetchurl {
|
||||||
|
url = "https://github.com/electron-userland/electron-builder-binaries/releases/download/appimage@1.0.3/appimage-tools-runtime-20251108.tar.gz";
|
||||||
|
hash = "sha256-hAIaeO4hSub9M6LWKpK6JVQt0QvIa/EXqbLQu6ROdmU=";
|
||||||
|
};
|
||||||
|
appImageTools =
|
||||||
|
pkgs.runCommand "electron-builder-appimage-tools-nix"
|
||||||
|
{
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgs.gnutar
|
||||||
|
pkgs.gzip
|
||||||
|
];
|
||||||
|
}
|
||||||
|
''
|
||||||
|
mkdir -p "$out"
|
||||||
|
tar -xzf ${appImageToolsArchive} --strip-components=1 -C "$out"
|
||||||
|
rm -f "$out/mksquashfs" "$out/desktop-file-validate"
|
||||||
|
ln -s ${pkgs.squashfsTools}/bin/mksquashfs "$out/mksquashfs"
|
||||||
|
ln -s ${pkgs.desktop-file-utils}/bin/desktop-file-validate "$out/desktop-file-validate"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
rec {
|
||||||
|
default = electron;
|
||||||
|
|
||||||
|
electron = pkgs.mkShell {
|
||||||
|
packages =
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
nodejs_22
|
||||||
|
corepack_22
|
||||||
|
coreutils
|
||||||
|
pnpm
|
||||||
|
pkgs.electron
|
||||||
|
pkg-config
|
||||||
|
python3
|
||||||
|
gcc
|
||||||
|
gnumake
|
||||||
|
git
|
||||||
|
jq
|
||||||
|
patchelf
|
||||||
|
dpkg
|
||||||
|
rpm
|
||||||
|
fpm
|
||||||
|
curl
|
||||||
|
fakeroot
|
||||||
|
rsync
|
||||||
|
xz
|
||||||
|
p7zip
|
||||||
|
]
|
||||||
|
++ electronRuntimeLibs
|
||||||
|
++ commonDeps;
|
||||||
|
|
||||||
|
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
|
||||||
|
export ELECTRON_BUILDER_7ZIP_PATH="${pkgs.p7zip}/bin/7za"
|
||||||
|
export APPIMAGE_TOOLS_PATH="${appImageTools}"
|
||||||
|
|
||||||
|
alias electron-install='cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" && pnpm install'
|
||||||
|
alias electron-build-web='cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" && pnpm run build:web'
|
||||||
|
alias electron-dev='pnpm run dev'
|
||||||
|
alias electron-package='pnpm run package:linux'
|
||||||
|
alias electron-validate='pnpm run validate'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
tauri = pkgs.mkShell {
|
||||||
|
buildInputs =
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
jdk17
|
||||||
|
gradle
|
||||||
|
pnpm
|
||||||
|
bun
|
||||||
|
nodejs
|
||||||
|
corepack_22
|
||||||
|
coreutils
|
||||||
|
pkg-config
|
||||||
|
git
|
||||||
|
jq
|
||||||
|
curl
|
||||||
|
]
|
||||||
|
++ [
|
||||||
|
android.androidsdk
|
||||||
|
android-studio-tools
|
||||||
|
]
|
||||||
|
++ commonDeps;
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
sdkSource="${android.androidsdk}/libexec/android-sdk"
|
||||||
|
if [ -d apps/tauri/src-tauri ]; then
|
||||||
|
projectRoot="$PWD/apps/tauri"
|
||||||
|
else
|
||||||
|
projectRoot="$PWD"
|
||||||
|
fi
|
||||||
|
androidHome="$projectRoot/.android"
|
||||||
|
sdkRoot="$androidHome/sdk"
|
||||||
|
|
||||||
|
mkdir -p "$androidHome"
|
||||||
|
if [ -L "$sdkRoot" ]; then
|
||||||
|
rm -f "$sdkRoot"
|
||||||
|
fi
|
||||||
|
mkdir -p "$sdkRoot"
|
||||||
|
|
||||||
|
ln -sfn "$sdkSource/build-tools" "$sdkRoot/build-tools"
|
||||||
|
ln -sfn "$sdkSource/cmake" "$sdkRoot/cmake"
|
||||||
|
ln -sfn "$sdkSource/licenses" "$sdkRoot/licenses"
|
||||||
|
ln -sfn "$sdkSource/ndk" "$sdkRoot/ndk"
|
||||||
|
ln -sfn "$sdkSource/ndk-bundle" "$sdkRoot/ndk-bundle"
|
||||||
|
ln -sfn "$sdkSource/platforms" "$sdkRoot/platforms"
|
||||||
|
ln -sfn "$sdkSource/platform-tools" "$sdkRoot/platform-tools"
|
||||||
|
ln -sfn "$sdkSource/tools" "$sdkRoot/tools"
|
||||||
|
|
||||||
|
mkdir -p "$sdkRoot/cmdline-tools"
|
||||||
|
ln -sfn "$sdkSource/cmdline-tools/8.0" "$sdkRoot/cmdline-tools/8.0"
|
||||||
|
ln -sfn "8.0" "$sdkRoot/cmdline-tools/latest"
|
||||||
|
|
||||||
|
sdkRootAbs="$(realpath "$sdkRoot")"
|
||||||
|
ndkRootAbs="''${sdkRootAbs}/ndk/${ndkVersion}"
|
||||||
|
|
||||||
|
export PATH="''${sdkRootAbs}/cmdline-tools/latest/bin:''${sdkRootAbs}/platform-tools:''${ndkRootAbs}:${pkgs.android-studio-tools}/bin:$PATH"
|
||||||
|
export ANDROID_HOME="''${sdkRootAbs}"
|
||||||
|
export ANDROID_SDK_ROOT="''${sdkRootAbs}"
|
||||||
|
export ANDROID_NDK_ROOT="''${ndkRootAbs}"
|
||||||
|
export ANDROID_NDK_HOME="$ANDROID_NDK_ROOT"
|
||||||
|
export NDK_HOME="$ANDROID_NDK_ROOT"
|
||||||
|
export NDK_PATH="$ANDROID_NDK_ROOT"
|
||||||
|
export JAVA_HOME="${pkgs.jdk17}"
|
||||||
|
|
||||||
|
aapt2Path="''${sdkRootAbs}/build-tools/${buildToolsVersion}/aapt2"
|
||||||
|
if [ -x "$aapt2Path" ]; then
|
||||||
|
mkdir -p "$HOME/.gradle"
|
||||||
|
gradleProperties="$HOME/.gradle/gradle.properties"
|
||||||
|
touch "$gradleProperties"
|
||||||
|
if grep -q '^android\.aapt2FromMavenOverride=' "$gradleProperties"; then
|
||||||
|
sed -i "s|^android\.aapt2FromMavenOverride=.*|android.aapt2FromMavenOverride=$aapt2Path|" "$gradleProperties"
|
||||||
|
else
|
||||||
|
printf '\nandroid.aapt2FromMavenOverride=%s\n' "$aapt2Path" >> "$gradleProperties"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue