Fil-C on Nix

Filnix wiki

mbrock/filnix

lib/native-exceptions.nix

The packages a Fil-C system always takes from native Nixpkgs, with the operating systems that need each one and why. A process is either all Fil-C or all native, so each exception is a whole package.

lib/filc-system.nix asserts that every name exists in the native package set, so a rename in Nixpkgs fails evaluation. The table in docs/nixos.md is generated from this file (tests/native-exceptions-table.nix).

let
in
17linuxKernel=
19why=
"Fil-C cannot build the kernel."
uses both
21linuxPackages=
23why=
"The kernel and its modules."
uses both
25linuxPackages_latest=
27why=
"The kernel and its modules."
uses both
29pkgsStatic=
31why=
"The setuid wrappers are small static programs. Fil-C does not link statically, and a static set derived from the Fil-C one recurses."
uses both
33glibc=
35why=
"Only the setuid wrappers use it, for a header from its source. Fil-C programs get their libc from the Fil-C sysroot."
uses both
37nix=
39why=
"Unless `filc.nativeNix = false`. The Fil-C Nix works but cannot sandbox builds: Fil-C has no namespaces or seccomp."
uses both
42grub2=
44why=
"The bootloader runs before any userland, and its package holds the boot images as well as the tools that install them."
uses nixos
46kexec-tools=
48why=
"kexec loads a kernel together with its purgatory, freestanding code that runs between the two kernels."
uses nixos
50fish=
52why=
"Rust (fish 4). users-groups.nix compares every user's shell with `pkgs.fish`, so it must evaluate; a user who picks fish gets the native one."
uses nixos
54nixos-init=
56why=
"Rust: the initrd's initrd-find-nixos-closure and, with `system.nixos-init`, stage 2's init and activation."
uses nixos
58makeInitrdNGTool=
60why=
"Rust: builds the initrd, and generate-shutdown-ramfs runs it on the machine."
uses nixos
62switch-to-configuration-ng=
64why=
"Rust: switch-to-configuration, which talks to systemd over D-Bus."
uses nixos
67limine=
69why=
"The bootloader runs before any userland."
uses finix
71sbctl=
73why=
"Go; limine's install hook uses it for secure boot."
uses finix
75efibootmgr=
77why=
"limine's install hook uses it to manage EFI boot entries."
uses finix
79userborn=
81why=
"Rust; finix creates users and groups with it during activation."
uses finix