build(nix): add a devShell so pixelpass builds on NixOS
The repo assumed a distro with a system-wide Rust and system-wide GStreamer, which is exactly what NixOS does not provide. This adds a flake devShell carrying the whole dependency surface: - Build: rustc/cargo/clippy/rustfmt, pkg-config, and clang — pipewire-sys, libspa-sys and libpulse-sys all generate bindings with bindgen, which needs a real libclang via LIBCLANG_PATH rather than just clang on PATH. - Link: pipewire, libpulseaudio, and libxcb. The libxcb one is not obvious: x11rb is declared `default-features = false` here, but Cargo unifies features across the graph and arboard pulls x11rb with `libxcb` on, so the final link really does need -lxcb. - Runtime: GStreamer is driven as a SUBPROCESS, not linked, so the tools and their plugin search path are provided here too. NixOS keeps every plugin in its own store path, so gst-launch-1.0 finds them only through GST_PLUGIN_SYSTEM_PATH_1_0 — without it the `gst-inspect-1.0 --exists pipewiresrc` preflight fails even with the plugins installed. nixpkgs is pinned to nixos-26.05, the same channel the hosts run, so the client libraries match the PipeWire daemon and PulseAudio server they talk to. Verified: 256 tests pass, clippy clean, and `--doctor` reports all checks passing (capture, encode, mux/audio, viewer, relay).
This commit is contained in:
@@ -1 +1,7 @@
|
||||
/target
|
||||
|
||||
# Nix: the symlink `nix build` drops, and direnv's local cache. flake.nix and
|
||||
# flake.lock ARE tracked — the lock is what pins the toolchain.
|
||||
/result
|
||||
/result-*
|
||||
/.direnv/
|
||||
|
||||
Reference in New Issue
Block a user