{ inputs = { fenix = { url = "github:nix-community/fenix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, flake-utils, fenix }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ fenix.overlays.default ]; }; rustc = pkgs.fenix.default.rustc; cargo = pkgs.fenix.default.cargo; neededLibs = with pkgs; (with xorg; [ libX11 libXcursor libXrandr libXi ]) ++ [ vulkan-loader wayland wayland-protocols libxkbcommon ]; flakePkgs = { wedge = pkgs.callPackage ./. { inherit rustc cargo; }; }; in rec { packages = flake-utils.lib.flattenTree flakePkgs; defaultPackage = packages.wedge; devShell = pkgs.mkShell { inputsFrom = with packages; [ wedge ]; shellHook = '' export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${ pkgs.lib.makeLibraryPath neededLibs }" ''; packages = (with pkgs; [ cargo-watch cargo-deny cargo-edit sqlx-cli sqlite wasm-pack (with pkgs.fenix; combine [ rustc cargo targets.wasm32-unknown-unknown.latest.rust-std ]) ]); PKG_CONFIG_PATH = with pkgs; lib.concatStringsSep ":" [ "${fontconfig.dev}/lib/pkgconfig" "${xorg.libX11.dev}/lib/pkgconfig" "${xorg.libXcursor.dev}/lib/pkgconfig" "${xorg.libXi.dev}/lib/pkgconfig" "${xorg.libXrandr.dev}/lib/pkgconfig" ]; }; }); }