{ inputs, self, ... }: { perSystem = { system, ... }: let pkgs = import inputs.nixpkgs { inherit system; overlays = [ (final: prev: { libdisplay-info = inputs.nixpkgs-26-05.legacyPackages.${system}.libdisplay-info; }) ]; config = { }; }; in { devShells.niri = with pkgs; mkShell { name = "niri-dev-shell"; strictDeps = true; buildInputs = with pkgs; [ llvmPackages_latest.llvm glib libsysprof-capture pcre2 libffi util-linux selinuxPackages.libselinux pipewire systemd seatd pango libdisplay-info libinput libxkbcommon libglvnd libgbm wayland dbus ]; nativeBuildInputs = [ rustc cargo pkg-config rustPlatform.bindgenHook ]; env = { # Force linking with libEGL and libwayland-client # so they can be discovered by `dlopen()` RUSTFLAGS = toString ( map (arg: "-C link-arg=" + arg) [ "-Wl,--push-state,--no-as-needed" "-lEGL" "-lwayland-client" "-Wl,--pop-state" ] ); # Upstream recommends setting the commit hash manually when in a # build environment where the Git repository is unavailable. # See https://github.com/niri-wm/niri/wiki/Packaging-niri#version-string NIRI_BUILD_COMMIT = "barrulus/biri"; }; RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}"; }; }; }