No description
- C++ 65.9%
- Go 13.5%
- Python 9%
- Nix 5.1%
- Shell 3.4%
- Other 3%
|
Profpatsch
1cae9d64c4
feat(gonix): ✨ implement seccomp BPF syscall filtering
Replaces the deferred seccomp stub with a real pure-Go compiler that reproduces lix's syscall allowlist (libstore/platform/linux.cc compileSyscallFilter). Lix delegates filter generation to libseccomp, which gonix cannot link under CGO_ENABLED=0, so we generate the classic-BPF program ourselves. The new builder/bpf package is layered: a label-based cBPF assembler, a minimal cBPF interpreter used as a test oracle, and a rule compiler that emits a multi-arch program (arch dispatch, a binary-search tree over sorted syscall numbers, and fully self-contained leaf groups whose RETs are inlined locally). Inlining keeps every conditional jump within the 8-bit offset limit, so no trampolining is needed and the assembler statically rejects any overflowing jump. Per-arch syscall tables are generated via go:generate using go/packages to resolve each ABI's SYS_* constants, giving full multi-arch parity without hand transcription. Correctness is verified by the interpreter against a reference evaluator: structural routing tests, exhaustive per-syscall checks, and a differential fuzz target (millions of executions, zero divergence). An in-sandbox test confirms a setuid chmod is denied (EPERM) while a benign chmod succeeds on a live kernel. Wired into BuildSpec.ToRequest with a NoSeccomp escape hatch. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> Change-Id: I690245ae6b6f0513a488f6a2fac2e945e3e6a850 |
||
|---|---|---|
| .github | fix: docs issue template was busted | |
| bench | bench: add memory benchmark | |
| contrib | meson: merge libs | |
| doc | libutil: fix nar parser buffer overflow | |
| gonix | feat(gonix): ✨ implement seccomp BPF syscall filtering | |
| lix | feat(gonix): ✨ Go evaluator with WASM C++ parser backend | |
| maintainers | maintainers: unify issue references | |
| meson | treefmt/ruff: extract ruff config from f2 to global state | |
| misc | upgrade-nix: use --store local, so we don't kill our own access to the daemon | |
| nix-support | codeowners: add some missing directories | |
| perl | libutil/hash: Add default values for Hash::to_string | |
| releng | releng/keys: update the way to receive the ephemeral key | |
| scripts | Fix broken user override of NIX_SSL_CERT_FILE in fish shell | |
| subprojects | nix-eval-jobs: Remove Value default construction from releaseExprTopLevelValue | |
| tests | libutil: fix nar parser buffer overflow | |
| .clang-format | clang-format: Raise column limit to 110 | |
| .clang-tidy | clang-tidy: enable bugprone-multi-level-implicit-pointer-conversion | |
| .dir-locals.el | .dir-locals.el: Set c-block-comment-prefix | |
| .editorconfig | .editorconfig: json: init with 4 space indent | |
| .envrc | .envrc: remove MAKEFLAGS and use clang environment by default | |
| .gitignore | gitignore: ignore top-level build and outputs directories | |
| .mailmap | chore: reflect account migration | |
| .this-is-lix | devShell: guard against running from another directory | |
| Cargo.lock | rust support in libutil via rust-monocrate | |
| Cargo.toml | rust support in libutil via rust-monocrate | |
| CONTRIBUTING.md | chore: re-work the contribution guide | |
| COPYING |
Add pre-commit checks
|
|
| CPP_EXCEPTION_TEST_PLAN.md | feat(gonix): ✨ Go evaluator with WASM C++ parser backend | |
| default.nix |
chore: replace edolstra/flake-compat with lix-project/flake-compat
|
|
| docker.nix | nixpkgs: bump to 25.11 | |
| flake.lock | Update nixpkgs and nix2container | |
| flake.nix | flake: static build in CI | |
| justfile | gonix: WASM evaluator — compile libnixexpr.wasm and host it in Go with wazero | |
| meson.build | gonix: WASM evaluator — compile libnixexpr.wasm and host it in Go with wazero | |
| meson.options | gonix: WASM evaluator — compile libnixexpr.wasm and host it in Go with wazero | |
| OWNERS | codeowners: add some missing directories | |
| package.nix | gonix: WASM evaluator — compile libnixexpr.wasm and host it in Go with wazero | |
| pyproject.toml | tests/functional2: Fix Python LSP by adjusting imports | |
| README.md | Fix typos in documentation | |
| shell.nix |
chore: replace edolstra/flake-compat with lix-project/flake-compat
|
|
| treefmt.toml | code-generation: run ruff | |
| version.json | version.json: begin the 2.96 series | |
| wasm-cross.ini | gonix: WASM evaluator — compile libnixexpr.wasm and host it in Go with wazero | |
| WASM_PLAN.md | feat(gonix): ✨ Go evaluator with WASM C++ parser backend | |
Lix
Lix is an implementation of Nix, a powerful package management system for Linux and other Unix systems that makes package management reliable and reproducible.
Read more about us at https://lix.systems.
Installation
On Linux and macOS the easiest way to install Lix is to run the following shell command (as a user other than root):
$ curl -sSf -L https://install.lix.systems/lix | sh -s -- install
For systems that already have a Nix implementation installed, such as NixOS systems, read our install page
Building And Developing
See our Hacking guide in our manual for instruction on how to set up a development environment and build Lix from source.
Additional Resources
- The Lix reference manual:
- Our wiki
- Matrix - #space:lix.systems
License
Lix is released under LGPL-2.1-or-later.