1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 06:29:35 +01:00
effigenix/flake.nix
Sebastian Frick bf09e3b747 feat(scanner): Mobile Scanner App mit echten Produktionsaufträgen
Scanner-App  Tauri v2 Android App mit
Login, Barcode-Scanner, Consume/Move/Book-Flows und Aufgabenliste.

TasksPage lädt echte RELEASED/IN_PROGRESS Produktionsaufträge via API,
Consume-Flow nutzt den konkreten Auftrag für korrekte Rezept-Skalierung
statt blind den ersten IN_PROGRESS-Auftrag zu nehmen.

Backend: FindStockByBatchId Use Case + REST-Endpoint für Stock-Lookup
per Chargennummer.
2026-03-27 15:25:17 +01:00

134 lines
4.6 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
description = "Effigenix ERP Dev Environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { nixpkgs, flake-utils, rust-overlay, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
overlays = [ (import rust-overlay) ];
pkgs = import nixpkgs {
inherit system overlays;
config = {
allowUnfree = true;
android_sdk.accept_license = true;
};
};
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"
];
};
# ─── Android SDK ──────────────────────────
androidComposition = pkgs.androidenv.composeAndroidPackages {
cmdLineToolsVersion = "8.0";
platformToolsVersion = "35.0.1";
buildToolsVersions = [ "34.0.0" "35.0.0" ];
platformVersions = [ "34" "36" ];
abiVersions = [ "x86_64" ];
includeNDK = true;
ndkVersions = [ "27.0.12077973" ];
includeSystemImages = true;
systemImageTypes = [ "google_apis_playstore" ];
includeEmulator = true;
useGoogleAPIs = true;
};
androidSdk = androidComposition.androidsdk;
androidHome = "${androidSdk}/libexec/android-sdk";
in
{
devShells.default = pkgs.mkShell {
name = "effigenix";
buildInputs = with pkgs; [
# ─── Frontend ───────────────────────────
nodejs_22
nodePackages.pnpm
# ─── Rust / Tauri ───────────────────────
rustToolchain
cargo-tauri
# Tauri v2 system deps (Linux/GTK)
pkg-config
openssl
gtk3
webkitgtk_4_1
libsoup_3
glib
gdk-pixbuf
cairo
pango
harfbuzz
atk
# ─── Backend ─────────────────────────
jdk21
# ─── Android ───────────────────────────
androidSdk
jdk17
# ─── Tools ─────────────────────────────
just
jq
curl
postgresql
rainfrog
];
# Tauri braucht diese zur Laufzeit
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (with pkgs; [
gtk3
webkitgtk_4_1
libsoup_3
openssl
]);
ANDROID_HOME = androidHome;
ANDROID_SDK_ROOT = androidHome;
ANDROID_NDK_ROOT = "${androidHome}/ndk/27.0.12077973";
JAVA_HOME = "${pkgs.jdk21}";
# NixOS: Gradle's aapt2 von Maven ist dynamisch gelinkt und läuft nicht.
# Wir zeigen auf das aapt2 aus den Nix-bereitgestellten build-tools.
GRADLE_OPTS = "-Dandroid.aapt2FromMavenOverride=${androidHome}/build-tools/35.0.0/aapt2";
shellHook = ''
echo "Node $(node --version)"
echo "pnpm $(pnpm --version)"
echo "rustc $(rustc --version)"
echo "cargo $(cargo --version)"
echo "Java $(java --version 2>&1 | head -1)"
echo ""
echo "ANDROID_HOME=$ANDROID_HOME"
echo ""
echo "just --list für alle Befehle"
# Tauri mobile dev: Ports 1420 (Vite) + 1421 (HMR) in der NixOS-Firewall öffnen
if [[ "''${EFFIGENIX_OPEN_FW:-}" == "1" ]]; then
echo ""
echo "Opening firewall ports 1420/1421 for Tauri mobile dev..."
sudo iptables -C nixos-fw -p tcp --dport 1420 -j ACCEPT 2>/dev/null \
|| sudo iptables -I nixos-fw 3 -p tcp --dport 1420 -j ACCEPT
sudo iptables -C nixos-fw -p tcp --dport 1421 -j ACCEPT 2>/dev/null \
|| sudo iptables -I nixos-fw 3 -p tcp --dport 1421 -j ACCEPT
echo "Done."
fi
'';
};
});
}