diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..c39acba --- /dev/null +++ b/default.nix @@ -0,0 +1,36 @@ +{ + pkgs ? import { }, + rustPlatform ? pkgs.rustPlatform, +}: + +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 + ]; + + postInstall = '' + wrapProgram $out/bin/pile \ + --prefix LD_LIBRARY_PATH : ${pkgs.lib.makeLibraryPath [ pkgs.pdfium-binaries ]} + ''; + + meta = { + description = "pile - flexible file indexing"; + mainProgram = "pile"; + }; +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..0f43458 --- /dev/null +++ b/flake.nix @@ -0,0 +1,40 @@ +{ + 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.94.0".default; + + rustPlatform = pkgs.makeRustPlatform { + cargo = rustToolchain; + rustc = rustToolchain; + }; + + in { + packages.default = import ./default.nix { inherit pkgs rustPlatform; }; + + devShells.default = pkgs.mkShell { + buildInputs = [ + rustToolchain + pkgs.pdfium-binaries + pkgs.openssl + pkgs.pkg-config + ]; + + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ pkgs.pdfium-binaries ]; + }; + }); +}