{ description = "Komp AC - Kompress Accounting"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; portableServer = import ./packaging/musl { inherit pkgs; source = self; version = "0.8.41"; }; in { packages = pkgs.lib.optionalAttrs (system == "x86_64-linux") { portable-server = portableServer; }; devShells.default = pkgs.mkShell { # Runtime libraries needed by the Slint/Winit desktop client. LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ pkgs.openssl pkgs.fontconfig pkgs.libx11 pkgs.libxcursor pkgs.libxi pkgs.libxrandr pkgs.libxext pkgs.libxkbcommon ]; # Keep font discovery deterministic when running the prebuilt GUI. FONTCONFIG_FILE = "${pkgs.fontconfig}/etc/fonts/fonts.conf"; FONTCONFIG_PATH = "${pkgs.fontconfig}/etc/fonts"; buildInputs = with pkgs; [ mermaid-cli # Rust toolchain rustc cargo rustfmt clippy cargo-watch rust-analyzer cargo-tarpaulin cargo-flamegraph rust-code-analysis # Load testing and system monitoring ghz k6 sysstat # C build tools (for your linker issue) gcc binutils # Fast linker (lld) for quicker dev rebuilds lld pkg-config # OpenSSL for crypto dependencies openssl openssl.dev # PostgreSQL for sqlx postgresql sqlx-cli # Protocol Buffers compiler for gRPC protobuf protoc-gen-doc buf ]; shellHook = '' export PKG_CONFIG_PATH="${pkgs.openssl.dev}/lib/pkgconfig:$PKG_CONFIG_PATH" export OPENSSL_DIR="${pkgs.openssl.dev}" export OPENSSL_LIB_DIR="${pkgs.openssl.out}/lib" export OPENSSL_INCLUDE_DIR="${pkgs.openssl.dev}/include" echo "🦀 Rust development environment loaded" echo "OpenSSL and PostgreSQL available" ''; }; } ); }