1
0
Fork
You've already forked gonix
0
No description
  • C++ 65.9%
  • Go 13.5%
  • Python 9%
  • Nix 5.1%
  • Shell 3.4%
  • Other 3%
Find a file
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
2026年05月31日 18:29:32 +02:00
.github fix: docs issue template was busted 2024年09月14日 19:28:46 +00:00
bench bench: add memory benchmark 2025年09月29日 15:22:41 +02:00
contrib meson: merge libs 2026年01月30日 17:29:51 +00:00
doc libutil: fix nar parser buffer overflow 2026年05月04日 19:00:19 +02:00
gonix feat(gonix): implement seccomp BPF syscall filtering 2026年05月31日 18:29:32 +02:00
lix feat(gonix): Go evaluator with WASM C++ parser backend 2026年05月16日 17:14:30 +02:00
maintainers maintainers: unify issue references 2026年03月09日 22:16:50 +00:00
meson treefmt/ruff: extract ruff config from f2 to global state 2025年12月05日 13:45:47 +00:00
misc upgrade-nix: use --store local, so we don't kill our own access to the daemon 2026年04月24日 15:56:19 +00:00
nix-support codeowners: add some missing directories 2025年09月17日 16:26:49 +00:00
perl libutil/hash: Add default values for Hash::to_string 2026年01月10日 18:26:15 +00:00
releng releng/keys: update the way to receive the ephemeral key 2026年05月04日 18:57:20 +02:00
scripts Fix broken user override of NIX_SSL_CERT_FILE in fish shell 2026年04月20日 13:02:17 +00:00
subprojects nix-eval-jobs: Remove Value default construction from releaseExprTopLevelValue 2026年04月22日 08:37:17 -04:00
tests libutil: fix nar parser buffer overflow 2026年05月04日 19:00:19 +02:00
.clang-format clang-format: Raise column limit to 110 2026年01月02日 17:51:33 +00:00
.clang-tidy clang-tidy: enable bugprone-multi-level-implicit-pointer-conversion 2025年12月09日 14:51:43 +00:00
.dir-locals.el .dir-locals.el: Set c-block-comment-prefix 2020年07月10日 11:21:06 +02:00
.editorconfig .editorconfig: json: init with 4 space indent 2025年05月15日 15:11:57 -07:00
.envrc .envrc: remove MAKEFLAGS and use clang environment by default 2024年06月25日 12:36:18 -06:00
.gitignore gitignore: ignore top-level build and outputs directories 2026年04月22日 11:47:09 +00:00
.mailmap chore: reflect account migration 2026年01月31日 20:59:02 +00:00
.this-is-lix devShell: guard against running from another directory 2024年06月24日 13:41:38 -07:00
Cargo.lock rust support in libutil via rust-monocrate 2026年01月06日 16:35:49 +01:00
Cargo.toml rust support in libutil via rust-monocrate 2026年01月06日 16:35:49 +01:00
CONTRIBUTING.md chore: re-work the contribution guide 2024年05月07日 01:28:35 +00:00
COPYING Add pre-commit checks 2024年03月29日 22:57:40 -07:00
CPP_EXCEPTION_TEST_PLAN.md feat(gonix): Go evaluator with WASM C++ parser backend 2026年05月16日 17:14:30 +02:00
default.nix chore: replace edolstra/flake-compat with lix-project/flake-compat 2026年01月20日 12:31:41 +00:00
docker.nix nixpkgs: bump to 25.11 2025年12月17日 20:59:59 +01:00
flake.lock Update nixpkgs and nix2container 2026年03月11日 11:21:11 +00:00
flake.nix flake: static build in CI 2026年04月13日 22:46:30 +01:00
justfile gonix: WASM evaluator — compile libnixexpr.wasm and host it in Go with wazero 2026年05月12日 15:02:42 +02:00
meson.build gonix: WASM evaluator — compile libnixexpr.wasm and host it in Go with wazero 2026年05月12日 15:02:42 +02:00
meson.options gonix: WASM evaluator — compile libnixexpr.wasm and host it in Go with wazero 2026年05月12日 15:02:42 +02:00
OWNERS codeowners: add some missing directories 2025年09月17日 16:26:49 +00:00
package.nix gonix: WASM evaluator — compile libnixexpr.wasm and host it in Go with wazero 2026年05月12日 15:02:42 +02:00
pyproject.toml tests/functional2: Fix Python LSP by adjusting imports 2026年01月23日 15:06:51 +01:00
README.md Fix typos in documentation 2025年03月18日 04:20:00 +00:00
shell.nix chore: replace edolstra/flake-compat with lix-project/flake-compat 2026年01月20日 12:31:41 +00:00
treefmt.toml code-generation: run ruff 2026年01月10日 00:07:33 +00:00
version.json version.json: begin the 2.96 series 2026年03月13日 22:59:53 +01:00
wasm-cross.ini gonix: WASM evaluator — compile libnixexpr.wasm and host it in Go with wazero 2026年05月12日 15:02:42 +02:00
WASM_PLAN.md feat(gonix): Go evaluator with WASM C++ parser backend 2026年05月16日 17:14:30 +02:00

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

License

Lix is released under LGPL-2.1-or-later.