{ description = "Asepharyana LLM API — Rust llama.cpp model serving (OpenAI-compatible)"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachSystem [ "x86_64-linux" ] (system: let pkgs = import nixpkgs { inherit system; config.allowUnfree = true; }; llm-api = pkgs.stdenv.mkDerivation { name = "llm-api-0.1.0"; src = ./.; nativeBuildInputs = with pkgs; [ cacert curl gcc gnumake openssl pkg-config python3 libclang rustc cargo clang cmake zlib ]; buildInputs = with pkgs; [ openssl stdenv.cc.cc.lib ]; LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; LD_LIBRARY_PATH = "${pkgs.libclang.lib}/lib:${pkgs.stdenv.cc.cc.lib}/lib"; NIX_ENFORCE_PURITY = "0"; SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; phases = [ "unpackPhase" "buildPhase" "installPhase" ]; buildPhase = '' export HOME="$TMPDIR" CARGO_HOME="$TMPDIR/.cargo-llm-api" echo "=== Building llm-api ===" cargo build --release 2>&1 ''; installPhase = '' mkdir -p $out/bin cp target/release/llm-api $out/bin/llm-api ''; }; in { packages = { inherit llm-api; default = llm-api; }; apps.llm-api = { type = "app"; program = "${llm-api}/bin/llm-api"; }; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ rustc cargo clang cmake openssl pkg-config ]; }; }); }