feat: add Nix flake dev shell for local development#205
Merged
jfernandez merged 1 commit intomainfrom Mar 28, 2026
Merged
Conversation
Building bpftop requires system libraries (libelf, zlib, libbpf) and a clang that can target BPF. Rather than relying on cross/Docker or manually installing deps, this adds a Nix flake devShell that provides everything needed. It activates automatically via direnv. Nix's cc-wrapper injects hardening flags that break BPF compilation, so we selectively disable the incompatible ones (zerocallusedregs, shadowstack, pacret) — the same approach systemd uses in nixpkgs.
bd24dc4 to
7de45d6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Provides a reproducible development environment with all system dependencies (clang, elfutils, zlib, libbpf) needed to build bpftop without cross or Docker. Uses selective hardeningDisable for BPF-incompatible flags (the same pattern used by systemd in nixpkgs). Activates automatically via direnv with
use flake.