{ description = "pile - personal data indexer"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, rust-overlay, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let overlays = [ (import rust-overlay) ]; pkgs = import nixpkgs { inherit system overlays; }; rustToolchain = pkgs.rust-bin.stable."1.85.0".default; rustPlatform = pkgs.makeRustPlatform { cargo = rustToolchain; rustc = rustToolchain; }; in { packages.default = rustPlatform.buildRustPackage { pname = "pile"; version = "0.0.1"; src = ./.; cargoLock.lockFile = ./Cargo.lock; buildInputs = [ pkgs.pdfium-binaries pkgs.openssl ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ pkgs.darwin.apple_sdk.frameworks.Security pkgs.darwin.apple_sdk.frameworks.SystemConfiguration ]; nativeBuildInputs = [ pkgs.pkg-config pkgs.makeWrapper ]; # pdfium-render loads libpdfium dynamically at runtime postInstall = '' wrapProgram $out/bin/pile \ --prefix LD_LIBRARY_PATH : ${pkgs.lib.makeLibraryPath [ pkgs.pdfium-binaries ]} ''; meta = { description = "pile - personal data indexer and search tool"; homepage = "https://github.com/markus/pile"; license = pkgs.lib.licenses.mit; mainProgram = "pile"; }; }; devShells.default = pkgs.mkShell { buildInputs = [ rustToolchain pkgs.pdfium-binaries pkgs.openssl pkgs.pkg-config ]; LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ pkgs.pdfium-binaries ]; }; }); }