{ description = "Rust development environment"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; fenix = { url = "github:nix-community/fenix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, flake-utils, fenix }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; toolchain = fenix.packages.${system}.fromToolchainFile { file = ./rust-toolchain.toml; sha256 = sha256-gh/xTkxKHL4eiRXzWv8KP7vfjSk61Iq48x47BEDFgfk=; }; in { devShells.default = pkgs.mkShell rec { nativeBuildInputs = [ pkgs.pkg-config ]; buildInputs = with pkgs; [ toolchain clang llvmPackages.bintools typst ]; LIBCLANG_PATH = pkgs.lib.makeLibraryPath [ pkgs.llvmPackages_latest.libclang.lib ]; RUSTFLAGS = (builtins.map (a: ''-L ${a}/lib'') []); LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (buildInputs ++ nativeBuildInputs); BINDGEN_EXTRA_CLANG_ARGS = (builtins.map (a: ''-I"${a}/include"'') [ pkgs.glibc.dev ]) ++ [ ''-I"${pkgs.llvmPackages_latest.libclang.lib}/lib/clang/${pkgs.llvmPackages_latest.libclang.version}/include"'' ''-I"${pkgs.glib.dev}/include/glib-2.0"'' ''-I${pkgs.glib.out}/lib/glib-2.0/include/'' ]; }; } ); }