filnix, read as Nix
Every Nix file of filnix, drawn by what it is rather than how it was typed: attribute sets as tables of bindings, let as bindings over a body, function arguments as signatures, if and mkIf as tables of conditions, ports as tables of their steps, options with their descriptions as prose. Each name links to where it is bound, and each let binding lists what uses it. Drawn by dterm-nix, after nanofil's dterm.
Evaluated
| Options | Every option the exported NixOS and finix modules declare or set: type, default, description, where it is declared and defined, its value and the port that builds it, and which modules read it. |
top level
| build-filc.nix | Build the complete Fil-C compiler with all dependencies | 102 lines |
| demo.nix | 139 lines | |
| flake.nix | 887 lines | |
| ports.nix | Fil-C package ports - list-based structure | 3976 lines |
| pyports.nix | Python package ports using the same DSL as ports2.nix | 418 lines |
| rubyports.nix | See docs/ruby-filc-porting-patterns.txt for common porting patterns. | 261 lines |
| toolchain.nix | 50 lines | |
| virt.nix | 49 lines |
bench/
| php/default.nix | PHP 8.5 application benchmark: native Nixpkgs PHP against pkgsFilc.php85 (release Fil-C), pkgsFilcStaging.php85 (the staging toolchain) and pkgsFilcStaging.p… | 63 lines |
compiler/
| filc.nix | 138 lines | |
| filc0.nix | 217 lines | |
| libcxx.nix | 62 lines |
demo/
| default.nix | 46 lines | |
| libei/cnode.nix | 52 lines | |
| libei/default.nix | 84 lines | |
| perl/default.nix | Perl + C Integration Demos with Fil-C Memory Safety | 74 lines |
deploy/
| analytics/default.nix | 34 lines | |
| cache/default.nix | 21 lines |
dterm-nix/
| options.nix | The options of filnix's modules as evaluation knows them, as JSON for dterm-nix's option index (dterm_nix.pl --options). | 311 lines |
emacs/
| emacs.nix | 108 lines |
experiment/
| default.nix | 33 lines | |
| planner.nix | 37 lines | |
| python.nix | 42 lines |
finix/
| default.nix | finix module: a finix system whose pkgs is the Fil-C package set (lib/filc-system.nix), so finit, PAM, OpenSSH and every service are Fil-C. | 23 lines |
| demo.nix | A small finix machine whose whole userland is Fil-C: finit as PID 1, mdevd, sysklogd, dhcpcd, OpenSSH, the shell and the tools are Fil-C builds; only the ker… | 93 lines |
| test.nix | Boot the example finix machine (finix/demo.nix) with finix's own VM test driver and check that its userland is Fil-C: PID 1, the shells and sshd map the Fil-… | 125 lines |
httpd/
| config/lighttpd.nix | 60 lines | |
| default.nix | 82 lines | |
| demo-runner.nix | 134 lines | |
| lib/builders.nix | 101 lines |
lib/
| block-rust-go.nix | A stdenv adapter that marks Rust and Go derivations broken. | 69 lines |
| default.nix | 216 lines | |
| filc-system.nix | The Fil-C system: a NixOS or finix machine whose pkgs is filnix's Fil-C package set. | 169 lines |
| native-exceptions.nix | The packages a Fil-C system always takes from native Nixpkgs, with the operating systems that need each one and why. | 84 lines |
| sources.nix | 86 lines |
nanofil/
| bench/default.nix | The runtime benchmark's binaries and inputs (docs/perf.md). | 121 lines |
| bench/profile/checks.nix | The benchmark's programs built for counting executed access checks (checks.py, docs/perf.md item 16): filcc -O2 with its check scheduler in each configuratio… | 139 lines |
| bench/profile/default.nix | The benchmark's programs built by a marked nanofil for instruction attribution (docs/perf.md): marks.patch puts a local label before each IR instruction, ABI… | 80 lines |
| bench/programs.nix | The benchmark's programs: for a C compiler cc (a path), a derivation per program with its executable at the top of $out. | 71 lines |
| bench/swipl.nix | SWI-Prolog 9.2.9's core (no packages) for the profile in docs/perf.md: built by plain clang (native), by filcc (ref) and by nanofil -O (O), from the sa… | 91 lines |
| nix/bash.nix | GNU bash 5.3 (patch level 9, as nixpkgs pins it) built entirely by nanofil, with nixpkgs' patches and filnix's bash port patch (the unwind_prot buffer that s… | 84 lines |
| nix/bzip2.nix | bzip2 1.0.8 built entirely by nanofil. | 80 lines |
| nix/check.nix | nanofil: unit tests, then the IR fixtures, the backend regressions and a seeded random corpus run through the interpreter and nanofil's own backend, which mu… | 449 lines |
| nix/configurations.nix | A program check split into one derivation per nanofil configuration, so the configurations build in parallel instead of one after another. | 22 lines |
| nix/coreutils.nix | GNU coreutils 9.11 built entirely by nanofil, with nixpkgs' source patches and filnix's coreutils port patch (without its tests/local.mk hunk, which would ne… | 128 lines |
| nix/corpus.nix | Source licenses remain in each fetched tree (cproc: ISC, test/*: Unlicense; c-testsuite: per-test .otag provenance, not the runner's MIT). | 16 lines |
| nix/dash.nix | dash 0.5.13.3 built entirely by nanofil, with filnix's dash port patch (fork for vfork: a vforked child would share the collector's heap). | 46 lines |
| nix/hello.nix | GNU hello built entirely by nanofil, then its own test suite. | 79 lines |
| nix/jq.nix | jq 1.8.2 built entirely by nanofil, with its bundled oniguruma (regular expressions) and decNumber (number literals). | 70 lines |
| nix/lua.nix | Lua 5.4 built entirely through the shared nanofil-cc wrapper. | 75 lines |
| nix/lz4.nix | lz4 1.10.0 built entirely by nanofil. | 79 lines |
| nix/make.nix | GNU make 4.4.1 built entirely by nanofil, with filnix's make port patch and nixpkgs' source patches (those that need no autoreconf). | 97 lines |
| nix/nanofil-cc.nix | nanofil-cc: a CC for building C packages with nanofil. | 85 lines |
| nix/python.nix | CPython 3.12.5 built entirely by nanofil, with filnix's port of it (ports.nix's python312: the Fil-C patch, pymalloc and freelists off, no x87 or x64 inline … | 191 lines |
| nix/rocq.nix | The Rocq model of the checked IR (rocq/, docs/formal.md Campaign 1): default: model + parse.sh + a small outcome/base-verdict smoke corpus. | 210 lines |
| nix/sed.nix | GNU sed 4.10 built entirely by nanofil, with filnix's sed port patch. | 69 lines |
| nix/sqlite.nix | SQLite 3.51.2 (the amalgamation and its shell) built entirely by nanofil, single-threaded, with FTS5 and the math functions as nixpkgs enables them. | 101 lines |
| nix/swipl.nix | SWI-Prolog 9.2.9 built entirely by nanofil, with filnix's port of it (ports.nix's swi-prolog: patches/swi-prolog-9.2.9-filc.patch) and the port's packages: t… | 213 lines |
| nix/trealla.nix | Native Trealla at the revision filnix builds under Fil-C (ports.nix), for fast development runs. | 29 lines |
| nix/xz.nix | xz-utils 5.8.4 built entirely by nanofil, with filnix's xz port patch (its C changes; the Makefile.am one only matters for shared liblzma). | 73 lines |
| nix/zlib.nix | zlib built entirely by nanofil. | 73 lines |
| survey/default.nix | The nanofil package survey (docs/survey.md). | 148 lines |
| web/play/default.nix | The nanofil playground: nanofil on SWI-Prolog 10.1.19 in WebAssembly, drawing what it makes of a C file with dterm (README.md). | 86 lines |
| web/play/swipl.nix | Native SWI-Prolog at the revision swipl-wasm is built from, so the playground's build (the frozen profile, the page's Prolog) and the browser run one SWI. | 26 lines |
| web/play/trealla-wasm.nix | Trealla as a WASI command (tpl.wasm), at the revision and with the patches nanofil runs on natively (../../nix/trealla.nix), for the playground. | 40 lines |
| web/rocq/capture.nix | Cache prover execution independently of the presentation assets. | 38 lines |
nixos/
| amazon.nix | The base Fil-C NixOS (nixos/base.nix) as an Amazon EC2 machine, for the public AMI that .github/workflows/ami.yml registers. | 119 lines |
| base.nix | The base Fil-C NixOS machine that filnix ships as a disk image: a whole Fil-C system (nixos/default.nix) set up to try. | 179 lines |
| default.nix | NixOS module: a NixOS whose pkgs is the Fil-C package set (lib/filc-system.nix), so systemd, PAM, D-Bus and every service are Fil-C. | 69 lines |
| demo-wiki.nix | https://filc.less.rest: a public Fil-C server on EC2, booted from the filnix AMI (nixos/amazon.nix). | 226 lines |
| image.nix | The base Fil-C NixOS image (nixos/base.nix) and what runs it: | 59 lines |
packages/
| bind-dist/default.nix | A relocatable BIND 9 distribution for ordinary x86-64 Linux systems, built like php-dist: the tarball carries the Fil-C runtime, glibc and every library the … | 57 lines |
| bind-dist/docker.nix | An OCI image of the bind-dist tree, laid out like ISC's official internetsystemsconsortium/bind9 images: programs in /usr/bin and /usr/sbin, the configuratio… | 100 lines |
| filroot/default.nix | A relocatable Fil-C root: the same toolchain and programs as optfil, in a directory that works wherever it is unpacked, also read-only. | 77 lines |
| kitty-doom.nix | 64 lines | |
| libei.nix | 98 lines | |
| libmicrohttpd.nix | 14 lines | |
| minilute.nix | 38 lines | |
| optfil/default.nix | Fil-C at /opt/fil for ordinary x86-64 Linux systems, in the layout of upstream's optfil distribution: the filcc and fil++ compiler with its runtime, glibc, l… | 182 lines |
| php-dist/default.nix | A relocatable PHP distribution for ordinary x86-64 Linux systems. | 153 lines |
| php-dist/docker.nix | An OCI image of the php-dist tree, laid out like the official php images: PHP in /usr/local/bin, the document root in /var/www/html, and php − a by default. | 66 lines |
| projeny.nix | 85 lines | |
| qnode/default.nix | qnode: the node-compat shim in qnode.js, run by QuickJS. | 27 lines |
| qnode/npm-cli.nix | Rehost a pure-JS npm CLI on qnode. | 42 lines |
| sarcasm-prolog.nix | 31 lines | |
| sarcasm.nix | 36 lines | |
| site/default.nix | The GitHub Pages site: pages/ as is, docs/ rendered with pandoc into docs/*.html, nanofil's Prolog drawn as terms into nanofil/*.html by nanofil/web/dterm.pl… | 89 lines |
| wasm3-cves.nix | CVE test payloads for wasm3 | 34 lines |
| wasm3.nix | 36 lines |
ports/
| boehmgc/default.nix | The Boehm GC API on Fil-C's own collector (docs/boehm-on-fugc.md). | 111 lines |
| build-tools.nix | Build-platform code generators whose output targets Fil-C. | 284 lines |
| default.nix | Fil-C Ports DSL and Overlay Infrastructure | 435 lines |
| determinate-nix.nix | Determinate Systems' Nix fork (github.com/DeterminateSystems/nix-src), built with Fil-C. | 130 lines |
| expected.nix | Compatibility expectations, not the inventory of port recipes. | 110 lines |
| jemalloc/default.nix | jemalloc's API on Fil-C's allocator (docs/jemalloc-on-fugc.md). | 72 lines |
| lua.nix | 54 lines | |
| media.nix | Focused repairs for shared graphics and codec dependencies. | 107 lines |
| openssl-sarcasm.nix | 26 lines | |
| openssl.nix | 102 lines | |
| overlay.nix | Overlay for Fil-C ported packages | 1152 lines |
| patches.nix | Historical import inventory; not consumed by the active overlay. | 427 lines |
| perl-modules.nix | Fixes for CPAN modules in the Fil-C Perl package set (an overrideScope overlay, see perl5 in ../ports.nix). | 110 lines |
| perlPorts-as-overlay.nix | Perl package overrides | 7 lines |
| pipewire-consumers.nix | PipeWire consumers ported against the full PipeWire package. | 138 lines |
| pythonPorts-as-overlay.nix | Convert pythonPorts.nix list to packageOverrides function | 131 lines |
| qt5.nix | Qt 5.15 for Fil-C, as an override of the qt5 scope (libsForQt5 is built from final.qt5, so its packages see these modules too). | 248 lines |
| qt6.nix | Qt 6 for Fil-C. Check with: | 82 lines |
| ruby.nix | 26 lines | |
| rubyPorts-as-gemConfig.nix | 61 lines | |
| tpm2.nix | TPM2's mocks must retain pointers, including Fil-C capabilities. | 62 lines |
| tree-sitter.nix | tree-sitter's CLI is Rust, which has no Fil-C target. | 32 lines |
| zstd-sarcasm.nix | 32 lines |
runtime/
| compiler-rt.nix | Build compiler-rt for CRT files and builtins | 80 lines |
| filc-glibc.nix | 110 lines | |
| libpizlo.nix | 112 lines | |
| llvmjit.nix | libfilcllvmjit.so, the native shim behind Fil-C's LLVM JIT API, built the way upstream's libpas/build_llvmjit.sh builds it. | 58 lines |
| yolo-glibc.nix | 118 lines | |
| yolounwind.nix | Build yolounwind stub library | 50 lines |
scripts/
| audit-port-versions.nix | Evaluate the active declarations, rather than the historical patches.nix table. | 70 lines |
| package-inventory.nix | Native package metadata only: no derivation paths, source realization, or builds. | 95 lines |
| query-package.nix | Query comprehensive package information from nixpkgs | 209 lines |
shells/
| baseline.nix | 141 lines | |
| filc-llvm.nix | Shell for hacking on the Fil-C LLVM/Clang (FilPizlonator, clang CodeGen) outside Nix with incremental ninja builds. | 78 lines |
| wasm3-cve-test.nix | 39 lines | |
| world-packages.nix | Ordered roots for the bounded Fil-C world package cohort. | 96 lines |
| world.nix | 84 lines |
tests/
| boost-context.nix | 14 lines | |
| cmocka-pointer-mocks.nix | 26 lines | |
| cxx-coroutines.nix | C++20 coroutines (lowered before FilPizlonator) and musttail calls. | 33 lines |
| dbus-glib.nix | dbus-glib consumer check: a Fil-C service and client exchange scalars, containers, a struct, a variant dictionary and a signal through dbus-binding-tool glue… | 46 lines |
| determinate-nix/drvs-chunk.nix | drvs.nix, restricted to names whose index is k modulo n (to bound memory). | 33 lines |
| determinate-nix/drvs.nix | Every top-level derivation's drvPath (null when it fails to evaluate). | 34 lines |
| determinate-nix/nixos.nix | Several NixOS systems' toplevel drvPaths, forced in parallel by nixeval − −json. | 38 lines |
| determinate-nix/par.nix | builtins.parallel: start every top-level drvPath in the background, then collect them on the main thread. | 40 lines |
| determinate-nix/pollute.nix | 6 lines | |
| determinate-nix/race.nix | Many attributes share one failing thunk. | 20 lines |
| determinate-nix/race3.nix | Force one failing thunk from many threads (builtins.parallel + tryEval), then report it once more. | 13 lines |
| emacs-treesit.nix | 13 lines | |
| experiment-calibration.nix | 34 lines | |
| fenv.nix | 13 lines | |
| fltk.nix | Exercise installed CMake targets, including their transitive link dependencies. | 47 lines |
| fork-regressions.nix | Compiler and runtime fixes in the mbrock/fil-c fork, each found by a port: __sync pointer atomics (cffi), unions inside by-value records (fmt), function desc… | 92 lines |
| gc-local-arrays.nix | 13 lines | |
| generator-precedence.nix | Native build tools propagate the ordinary GLib and GI into Fil-C builds (gdk-pixbuf, PyGObject). | 28 lines |
| gi-link-environment.nix | 46 lines | |
| glib-atomic.nix | 13 lines | |
| glib-enums.nix | 19 lines | |
| glib-gtype.nix | 22 lines | |
| glib-networking.nix | 14 lines | |
| glibc-dirwalk.nix | nftw, ftw, scandirat and fts walk subdirectories (patches/filc-glibc-openat-nocancel.patch). | 15 lines |
| glibc-settimezone.nix | settimeofday(NULL, tz) reaches the kernel instead of stopping the program (patches/filc-glibc-settimezone.patch). | 15 lines |
| glibc-syscall-fallbacks.nix | sbrk(0) reports the break; moving it, sched_setattr and pidfd_spawn fail instead of stopping the program (patches/filc-glibc-unsupported-syscalls.patch). | 15 lines |
| glibmm.nix | glibmm runtime check for both API series (2.4 and 2.68): a derived object type with a property and signal, GValue boxing, variants, wrap() and a Gio list mod… | 25 lines |
| gnutls-tls.nix | Run GnuTLS's TLS, certificate and slow suites separately from gnulib's allocator/stack/inline-assembly portability probes. | 36 lines |
| graphite2.nix | Exercise the installed shaper with upstream goldens, not the build-tree DLL. | 50 lines |
| gtk-ports.nix | Evaluate with --option allow-import-from-derivation false; builds nothing. | 118 lines |
| gtk-runtime.nix | 43 lines | |
| gtk2-runtime.nix | 43 lines | |
| gtkmm.nix | gtkmm runtime checks on a Broadway display; see gtkmm/gtkmm*-runtime.cc. | 44 lines |
| icu.nix | 15 lines | |
| libaom.nix | Exercise the installed allocator and encoder, including the capability-bearing allocation header shared by lookahead, partitioning and coefficient buffers. | 18 lines |
| libffi.nix | 17 lines | |
| libsoup.nix | 28 lines | |
| libtool-symbols.nix | Exercise the installed compiler setup hook and real libtool probes, including configure generated in preConfigure rather than shipped in a source archive. | 93 lines |
| link-hygiene.nix | Wrapper behaviour every Fil-C link relies on: ld − r works (the runtime's shared libraries are not added to relocatable links), and code inlined from a depe… | 48 lines |
| link-wrap.nix | 40 lines | |
| llvm-jit.nix | Fil-C's LLVM JIT API: build LLVM IR in a Fil-C program, compile it through the Fil-C passes in-process, and call it. | 39 lines |
| locale.nix | 13 lines | |
| media-foundations.nix | 19 lines | |
| media.nix | Installed API checks, without a display server or target encoder dependency. | 37 lines |
| native-exceptions-table.nix | docs/nixos.md's table of built-in native exceptions is generated from lib/native-exceptions.nix; this fails when the two differ. | 53 lines |
| nix-eval.nix | Run the Fil-C Nix: evaluate expressions and add a file to a local store. | 19 lines |
| nixos/apache.nix | Fil-C Apache under load, prefork and event: the scoreboard (mod_status), the shmcb TLS session cache, mod_cache_socache, mod_auth_digest's client table, NixO… | 203 lines |
| nixos/default.nix | NixOS VM tests of Fil-C systems: Nixpkgs' own tests of each service, run with nixosModules.default on every node, plus tests of our own. | 257 lines |
| nixos/demo-wiki.nix | nixosConfigurations.demo-wiki (nixos/demo-wiki.nix) in a VM: without the EC2 metadata service and Let's Encrypt, which the VM has neither of, so lighttpd ser… | 92 lines |
| nixos/first-switch.nix | The AMI's first boot (nixos/amazon.nix) with #filnix user data: the filnix-first-switch unit switches to the named system while boot goes on. | 72 lines |
| nixos/php-lighttpd.nix | PHP-FPM behind lighttpd over FastCGI, both Fil-C builds: the web stack the module offers, since it has no nginx switch. | 62 lines |
| nixos/redis.nix | Nixpkgs' redis test (nixos/tests/redis.nix) builds with the old make-test-python and can't be imported as a module; this is its machine and script, with the … | 46 lines |
| nixos/userland.nix | A NixOS VM whose whole userland is Fil-C (nixosModules.default): it boots, a user logs in on the console, PID 1 and the main services map the Fil-C runtime, … | 112 lines |
| openssl-sarcasm.nix | 20 lines | |
| pch-union.nix | Records that contain a union keep Fil-C's union handling when they come from a precompiled header. | 26 lines |
| perl-xs-pointers.nix | Perl XS modules that pass pointers to each other or back to Perl code: Encode's table encodings live in Encode::Byte and friends, which hand their encode_t p… | 30 lines |
| php-stealmybitcoin.nix | Differential verification of the StealMyBitcoin exploit against the two PHP 8.4.25 builds filnix pins: Nixpkgs' unstripped PHP 8.4.25, on which the adapted P… | 52 lines |
| pipewire-consumers.nix | 44 lines | |
| pipewire.nix | 18 lines | |
| pointer-tagging.nix | Which pointer-tagging patterns keep their capabilities (docs/filc-findings.md). | 14 lines |
| port-names.nix | A bare port, (for pkgs.X [ … ]), is keyed by the pname of pkgs.X (ports/default.nix, makeOverlay), so it lands on pkgsFilc.<pname>. | 84 lines |
| port-version-refresh.nix | 63 lines | |
| protobuf.nix | Generate C++ with the Fil-C protoc and round-trip messages through the Fil-C runtime: binary, text and JSON formats, a JSON error (a heap-backed absl::Status… | 28 lines |
| pthread-pi.nix | 13 lines | |
| pthread-spin.nix | 13 lines | |
| pygobject.nix | 9 lines | |
| python-decimal.nix | CPython's decimal module uses the system libmpdec. | 15 lines |
| python-protobuf.nix | Fil-C Python's protobuf uses the pure-Python backend (the upb extension is not ported); round-trip protoc-generated messages through it. | 14 lines |
| qnode.nix | The qnode-hosted CLIs must match their Node.js builds byte for byte. | 26 lines |
| qt5.nix | Build small Qt 5 programs with the Fil-C qmake and run them on the offscreen platform and on X11 (a native Xvfb). | 125 lines |
| qt6.nix | QtBase/Svg and QML/Quick/Controls 2 runtime coverage, with native host tools. | 86 lines |
| quadprogpp.nix | Exercise the installed CMake target, including its transitive math dependency. | 35 lines |
| re2.nix | Match, replace and run the DFA of re2 (and its abseil headers) under Fil-C. | 17 lines |
| runtime-prctl-caps.nix | prctl's capability options reach the kernel (patches/filc-runtime-prctl-caps.patch). | 15 lines |
| sarcasm-fixes.nix | Regression tests for our SaRCAsm .rept and call-argument carrier fixes, merged in release 0.687 (pizlonator/fil-c#336, #337). | 32 lines |
| sarcasm-prolog.nix | 196 lines | |
| sarcasm.nix | 22 lines | |
| sealed-closures.nix | Sealed closures (zclosure_new_sealed, staging only): the body reads its data, and every other way through the closure to that data is a safety error. | 35 lines |
| tpm2-tools.nix | Exercise the installed Fil-C tools and broker against an isolated software TPM. | 26 lines |
| trealla.nix | 45 lines | |
| unsafe-call-boundary.nix | 35 lines | |
| wrapper-roles.nix | The Fil-C compiler and bintools wrappers must not share a role salt with the native ones. | 47 lines |
| zmark-shared.nix | zmark_shared regressions (docs/zmark-shared.md): pointers stored in a marked shared mapping after fork are usable by every process; foreign pointers are refu… | 32 lines |
| zstd-sarcasm.nix | 44 lines |
toolchain/
| binutils.nix | 59 lines | |
| broadway-check.nix | Run GTK3 package tests against the backend enabled by the Fil-C GTK port. | 45 lines |
| meson-check-cores.nix | Meson concurrency alone does not bound tests that size their own thread pools from sched_getaffinity(). | 17 lines |
| sysroot.nix | 35 lines | |
| test-wrap.nix | A package-local compiler adapter; the shared compiler derivation is unchanged. | 11 lines |
| wrappers.nix | 204 lines |
tools/
| runfilc.nix | 32 lines | |
| uacme.nix | 119 lines |
ttyd-demo/
| default.nix | 141 lines |
virt/
| common.nix | 31 lines | |
| core.nix | 324 lines | |
| docker.nix | 50 lines | |
| filc-world-docker.nix | 46 lines | |
| nspawn.nix | 33 lines | |
| qemu.nix | 164 lines | |
| vm-config.nix | 37 lines |