Files
komp_ac/flake.nix
2026-08-30 20:29:19 +02:00

92 lines
2.5 KiB
Nix

{
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.out}/etc/fonts/fonts.conf";
FONTCONFIG_PATH = "${pkgs.fontconfig.out}/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"
'';
};
}
);
}