{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/release-24.05"; flake-utils.url = "github:numtide/flake-utils"; fenix.url = "github:nix-community/fenix"; fenix.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { self, ... }@inputs: inputs.flake-utils.lib.eachSystem (with inputs.flake-utils.lib.system; [ x86_64-linux ]) (system: let pkgs = inputs.nixpkgs.legacyPackages.${system}.extend inputs.fenix.overlays.default; inherit (pkgs) lib; in { devShell = pkgs.mkShell rec { packages = with pkgs; [ (fenix.complete.withComponents [ "cargo" "clippy" "rust-src" "rustc" "rustfmt" ]) rust-analyzer-nightly ruff imagemagick fontconfig freetype clang llvmPackages.clang pkg-config leptonica tesseract openssl sqlite ]; LD_LIBRARY_PATH = lib.makeLibraryPath packages; # compilation of -sys packages requires manually setting LIBCLANG_PATH LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; }; }); # {{{ Caching and whatnot # TODO: persist trusted substituters file nixConfig = { extra-substituters = [ "https://nix-community.cachix.org" ]; extra-trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; }; # }}} }