gonix

module
v0.5.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2026 License: MIT

README

GoNIX - a UNIX-like Operating System with a mostly Go Userspace

GoNix Logo

gonix is a UNIX-like Operating System (based on the Linux Kernel) with a Userland mostly written in Go including Networking, Services, Device Management and an integrated SSH service.

Quick Start

Building GoNIX requires Docker (the build runs in an Alpine toolchain container). The ergonomic entrypoint is:

make image              # your machine's arch (arm64 on Apple Silicon, else amd64)
make image ARCH=amd64   # amd64: builds artefacts/boot.iso
make image ARCH=arm64   # arm64: builds artefacts-arm64/{boot.iso,Image,rootfs.gz}

Run it under QEMU:

./test.sh               # boot your machine's arch (SSH forwarded to :2222)
ARCH=amd64 ./test.sh    # boot the amd64 ISO
ARCH=arm64 ./test.sh    # boot arm64 (native under hvf on Apple Silicon)

Then SSH in with ssh -p 2222 root@localhost.

GoNIX authenticates SSH by public key only, and an image authorises no key of its own — so ./test.sh injects yours (~/.ssh/id_ed25519.pub, or whatever SSHKEY= names) at boot. On an image you did not boot yourself, authorise a key one of three ways:

Boot method How the key gets in
Direct kernel (qemu -kernel) -append "gonix.sshkey=$(base64 < ~/.ssh/id_ed25519.pub | tr -d '\n')"
ISO, local VM a cloud-init seed: tools/mkseed.sh ~/.ssh/id_ed25519.pub
ISO, cloud instance nothing — cloud-init reads the key from instance metadata

The console is a separate matter: root has the password gonix there, which is only reachable from the VM's own screen or serial line, never over the network. Change it with passwd; add accounts with adduser and addgroup. What you add persists on an installed system alongside the image's own accounts (see Users and SSH access).

Supported Platforms

GoNIX targets virtual machines and cloud instances rather than bare-metal hardware: the kernel is built with just the device drivers needed by common hypervisors (with virtio as the preferred, fastest path) plus loadable modules disabled (everything is built in for the initramfs boot). Two architectures are supported:

Architecture Boot method Runs on
amd64 (x86-64) BIOS-booted ISO (artefacts/boot.iso) QEMU/KVM, VirtualBox, VMware, and most cloud providers
arm64 (aarch64) Direct kernel + initramfs (-kernel) QEMU virt machine — native under hvf on Apple Silicon
amd64 (x86-64)

A BIOS-booted ISO that runs on essentially any x86-64 hypervisor or cloud instance. Device support:

  • Network: virtio-net (preferred), and Intel e100 / e1000 / e1000e (the default emulated NIC on QEMU, VirtualBox and VMware).
  • Storage: virtio-blk (preferred), SATA (AHCI) and IDE (PIIX) disks, and ATAPI CD-ROM (ISO9660) — so it boots from a CD/ISO and can use a virtio, SATA or IDE data disk.
  • Console: VGA text console (tty0) and serial (ttyS0), so both graphical and headless/serial setups get kernel output and a login.
  • Guest extras: KVM paravirt guest support and a hardware RTC.

An optional persistent root and the baseline firewall can be baked into the ISO at build time, e.g. make image PERSIST=/dev/vda FIREWALL=1. A persistent root makes the system an installed one, whose changes (installed packages included) survive reboots. Add SEAL=1 to seal it read-only instead, so only the allow-listed paths persist. See Configuration → Persistent root.

arm64 (aarch64)

Targets the QEMU virt board, booted directly via -kernel/-initrd (no BIOS/ISO). On an Apple Silicon host this runs natively under the hvf accelerator, so boots take seconds. Device support is deliberately minimal — virtio only:

  • Network/Storage/Console: virtio-net, virtio-blk, virtio-console, virtio-rng, with the PL011 UART as the serial console.
  • Platform: generic PCIe host bridge and GICv3 interrupt controller (the virt board); no SoC-vendor or physical-hardware drivers are included.

Enable the persistent root and/or firewall on the kernel cmdline with PERSIST=1 (which needs a root disk — make disks creates one) and/or FIREWALL=1:

PERSIST=1 FIREWALL=1 ARCH=arm64 ./test.sh

Services

Background services (the SSH server, DHCP client, web server, …) run under a supervisor in init and are managed at runtime with the sv command:

sv status            # list services and their state
sv restart sshd      # start / stop / restart a service

Services are defined by simple unit files in /etc/rc.d/. See docs/services.md for the sv commands and the unit format.

Packages

Software is managed with pkg, a CRUX-style package manager. Install binary packages (with automatic dependency resolution) from a repository, or build from source with a Pkgfile:

pkg update           # refresh the repository index
pkg install <name>   # install a package and its dependencies
pkg upgrade          # upgrade installed packages

See docs/packages.md for the full guide, including building packages and publishing a repository.

Configuration

System configuration lives in /etc/rc.conf (hostname, firewall), the kernel command line (persistence, firewall), and /etc/rc.local (boot script). See docs/configuration.md for the full guide, including networking, users/SSH, and what persists with a persistent root.

Library images

gonix packs a Go program into a bootable micro-VM with no userland: the GoNIX kernel, a slim init and your program, as a single hybrid ISO. Any program that builds with CGO_ENABLED=0 works unmodified.

go install git.mills.io/prologic/gonix/cmd/gonix@latest
cd ~/src/myserver
gonix pack .                  # writes myserver.iso, bootable on a cloud or a disk
gonix run -p 8080:8080 myserver.iso

See docs/library-images.md.

License

GoNix is licensed under the terms of the MIT License

Directories

Path Synopsis
cmd
cefbrowser command
The default browser frontend: the pure-Go Wayland backend (wlui).
The default browser frontend: the pure-Go Wayland backend (wlui).
cefhost command
Without -tags cef there is no CEF to host; this stub keeps the package buildable (so `go build ./...` works without the CEF toolchain/libs).
Without -tags cef there is no CEF to host; this stub keeps the package buildable (so `go build ./...` works without the CEF toolchain/libs).
coreutils command
crond command
Command crond is GoNIX's cron daemon: a minimal, dependency-free scheduler.
Command crond is GoNIX's cron daemon: a minimal, dependency-free scheduler.
edit command
Command edit is a pure-Go, software-rendered Wayland text editor for the GoNIX desktop, built on internal/wlui, its text layer and the shared ui theme.
Command edit is a pure-Go, software-rendered Wayland text editor for the GoNIX desktop, built on internal/wlui, its text layer and the shared ui theme.
gonix command
Command gonix builds and runs GoNIX Library images: a Go program packaged with a kernel and a slim init as a bootable micro-VM, with no userland.
Command gonix builds and runs GoNIX Library images: a Go program packaged with a kernel and a slim init as a bootable micro-VM, with no userland.
imgview command
Command imgview is a pure-Go, software-rendered Wayland image viewer for the GoNIX desktop.
Command imgview is a pure-Go, software-rendered Wayland image viewer for the GoNIX desktop.
init command
libinit command
Command libinit is PID 1 of a GoNIX Library image: a kernel, this init and one or more Go programs, with no userland (see docs/library-images.md).
Command libinit is PID 1 of a GoNIX Library image: a kernel, this init and one or more Go programs, with no userland (see docs/library-images.md).
measuretool command
measuretool exercises internal/measure on a real box (DESIGN §4.7):
measuretool exercises internal/measure on a real box (DESIGN §4.7):
pkg command
Command pkg is GoNIX's package manager: a Go reimplementation of the CRUX- style `pkg` (and the ports/repogen/prtcreate helpers), kept compatible with the existing Pkgfile format, binary package layout (name#version-release.tar.gz) and database (/var/db/pkg/<name>/{manifest,version,depends}).
Command pkg is GoNIX's package manager: a Go reimplementation of the CRUX- style `pkg` (and the ports/repogen/prtcreate helpers), kept compatible with the existing Pkgfile format, binary package layout (name#version-release.tar.gz) and database (/var/db/pkg/<name>/{manifest,version,depends}).
sendmail command
Command sendmail is GoNIX's send-only SMTP relay: an ssmtp/msmtp-style sendmail replacement.
Command sendmail is GoNIX's send-only SMTP relay: an ssmtp/msmtp-style sendmail replacement.
sntpd command
Command sntpd is GoNIX's time synchroniser: a minimal, dependency-free SNTP (RFC 4330) client that steps the system clock.
Command sntpd is GoNIX's time synchroniser: a minimal, dependency-free SNTP (RFC 4330) client that steps the system clock.
startgui command
Command startgui launches the GoNIX desktop: the labwc compositor with a wallpaper (wbg), a panel (yambar) and a foot terminal.
Command startgui launches the GoNIX desktop: the labwc compositor with a wallpaper (wbg), a panel (yambar) and a foot terminal.
syslogd command
Command syslogd is GoNIX's syslog daemon: a minimal, dependency-free log collector.
Command syslogd is GoNIX's syslog daemon: a minimal, dependency-free log collector.
txtview command
Command txtview is a pure-Go, software-rendered Wayland text-file viewer for the GoNIX desktop — a graphical pager.
Command txtview is a pure-Go, software-rendered Wayland text-file viewer for the GoNIX desktop — a graphical pager.
verify command
verify is the measured-boot verifier (Home Cloud DESIGN §4.7): the only program in the tiny initramfs built into the kernel.
verify is the measured-boot verifier (Home Cloud DESIGN §4.7): the only program in the tiny initramfs built into the kernel.
examples
library/hello command
Command hello is the smallest useful Library image: an HTTP server that says hello.
Command hello is the smallest useful Library image: an HTTP server that says hello.
accounts
Package accounts is the system's account database — /etc/passwd, /etc/group and /etc/shadow — under the read-only root's rule that the image is the OS and what an operator adds is state (internal/persist).
Package accounts is the system's account database — /etc/passwd, /etc/group and /etc/shadow — under the read-only root's rule that the image is the OS and what an operator adds is state (internal/persist).
applets/addgroup
Package addgroup creates a group, or adds a user to one, BusyBox-style.
Package addgroup creates a group, or adds a user to one, BusyBox-style.
applets/adduser
Package adduser creates a user account, BusyBox-style.
Package adduser creates a user account, BusyBox-style.
applets/arch
Package arch implements arch as GNU coreutils does: print the machine hardware name, as uname -m does.
Package arch implements arch as GNU coreutils does: print the machine hardware name, as uname -m does.
applets/arp
Package arp is GoNIX's arp(8) for reading the neighbour table: the default listing, -a (BSD style), -n, -i IFACE and a host to look up, in net-tools' layout.
Package arp is GoNIX's arp(8) for reading the neighbour table: the default listing, -a (BSD style), -n, -i IFACE and a host to look up, in net-tools' layout.
applets/bc
Package bc is an arbitrary-precision calculator: POSIX bc with the GNU extensions scripts use (&&, ||, !, print, # comments, multi-letter names, relational operators anywhere), and the -l math library.
Package bc is an arbitrary-precision calculator: POSIX bc with the GNU extensions scripts use (&&, ||, !, print, # comments, multi-letter names, relational operators anywhere), and the -l math library.
applets/bootslot
Package bootslot is the `bootslot` applet: the command-line face of the A/B boot-slot state (internal/bootslot) for operators and the control plane.
Package bootslot is the `bootslot` applet: the command-line face of the A/B boot-slot state (internal/bootslot) for operators and the control plane.
applets/cal
Package cal is the cal applet, laid out as util-linux 2.41's cal: a month (or three, or a year) with Sunday or Monday first, Julian day numbers with -j, and the British calendar's switch from Julian to Gregorian in September 1752 (2 September is followed by 14 September).
Package cal is the cal applet, laid out as util-linux 2.41's cal: a month (or three, or a year) with Sunday or Monday first, Julian day numbers with -j, and the British calendar's switch from Julian to Gregorian in September 1752 (2 September is followed by 14 September).
applets/chown
Package chown implements chown, and chgrp through Run.
Package chown implements chown, and chgrp through Run.
applets/chroot
Package chroot implements chroot as GNU coreutils does: run a command with another root directory.
Package chroot implements chroot as GNU coreutils does: run a command with another root directory.
applets/cloudinit
Package cloudinit is a minimal cloud-init for GoNIX: at boot it discovers the instance's SSH keys, hostname and user-data from the platform and applies them, so a fresh image becomes a configured server with no baked-in secrets.
Package cloudinit is a minimal cloud-init for GoNIX: at boot it discovers the instance's SSH keys, hostname and user-data from the platform and applies them, so a fresh image becomes a configured server with no baked-in secrets.
applets/datadisk
Package datadisk mounts the optional persistent data disk as a supervised one-shot service (started from /etc/rc.d/datadisk, Provides: data).
Package datadisk mounts the optional persistent data disk as a supervised one-shot service (started from /etc/rc.d/datadisk, Provides: data).
applets/dd
Package dd implements dd: copy a file block by block, converting as it goes.
Package dd implements dd: copy a file block by block, converting as it goes.
applets/delgroup
Package delgroup removes a group the operator added, or a user from a group.
Package delgroup removes a group the operator added, or a user from a group.
applets/deluser
Package deluser removes a user account the operator added.
Package deluser removes a user account the operator added.
applets/dmesg
Package dmesg implements dmesg as util-linux does for the kernel ring buffer read through syslog(2): print it, filter it, clear it.
Package dmesg implements dmesg as util-linux does for the kernel ring buffer read through syslog(2): print it, filter it, clear it.
applets/dos2unix
Package dos2unix is the dos2unix applet, and the shared conversion behind unix2dos.
Package dos2unix is the dos2unix applet, and the shared conversion behind unix2dos.
applets/factor
Package factor is the factor applet: GNU factor's output, options and exit statuses, for numbers of any size (math/big; Pollard's rho with Miller-Rabin above trial division).
Package factor is the factor applet: GNU factor's output, options and exit statuses, for numbers of any size (math/big; Pollard's rho with Miller-Rabin above trial division).
applets/file
Package file implements file: say what kind of data a file holds.
Package file implements file: say what kind of data a file holds.
applets/find
Package find is the find applet: walk directory trees and evaluate an expression on every file.
Package find is the find applet: walk directory trees and evaluate an expression on every file.
applets/free
Package free implements free as procps-ng 4 does: show the system's memory and swap use.
Package free implements free as procps-ng 4 does: show the system's memory and swap use.
applets/gnutest
Package gnutest finds a GNU tool for the applet tests that compare their output with it.
Package gnutest finds a GNU tool for the applet tests that compare their output with it.
applets/gonixinstall
Package gonixinstall is the `gonix-install` applet: it installs the running (live/ISO) GoNIX onto an internal disk in the A/B layout that internal/bootslot describes, so the machine then boots from the disk without the installation medium and can be updated slot-by-slot.
Package gonixinstall is the `gonix-install` applet: it installs the running (live/ISO) GoNIX onto an internal disk in the A/B layout that internal/bootslot describes, so the machine then boots from the disk without the installation medium and can be updated slot-by-slot.
applets/groups
Package groups implements groups as GNU coreutils does: print the groups a user, or this process, is in.
Package groups implements groups as GNU coreutils does: print the groups a user, or this process, is in.
applets/gunzip
Package gunzip is gzip -d, as GNU's gunzip is (see the gzip applet).
Package gunzip is gzip -d, as GNU's gunzip is (see the gzip applet).
applets/gzip
Package gzip is the gzip applet, and the shared implementation behind gunzip (gzip -d) and zcat (gzip -dc), as GNU's gunzip and zcat are thin wrappers around gzip.
Package gzip is the gzip applet, and the shared implementation behind gunzip (gzip -d) and zcat (gzip -dc), as GNU's gunzip and zcat are thin wrappers around gzip.
applets/halt
Package halt is halt, and the shared implementation of reboot and poweroff: by default each asks init to shut the system down (init's signals: SIGINT reboots, SIGUSR1 halts, SIGUSR2 powers off), with busybox's options.
Package halt is halt, and the shared implementation of reboot and poweroff: by default each asks init to shut the system down (init's signals: SIGINT reboots, SIGUSR1 halts, SIGUSR2 powers off), with busybox's options.
applets/hostname
Package hostname implements hostname as the Linux hostname tool does: print or set the system's host name.
Package hostname implements hostname as the Linux hostname tool does: print or set the system's host name.
applets/ip
Package ip is GoNIX's ip(8): show and change network interfaces, addresses, routes and neighbours, printing what iproute2 prints for the commands scripts use (ip addr / link / route / neigh, -4 -6, -o, -br, -j).
Package ip is GoNIX's ip(8): show and change network interfaces, addresses, routes and neighbours, printing what iproute2 prints for the commands scripts use (ip addr / link / route / neigh, -4 -6, -o, -br, -j).
applets/kill
Package kill implements kill as procps-ng's /bin/kill does: send a signal to processes, or list and convert signal names.
Package kill implements kill as procps-ng's /bin/kill does: send a signal to processes, or list and convert signal names.
applets/killall
Package killall implements killall as psmisc does: signal every process running a command by name.
Package killall implements killall as psmisc does: signal every process running a command by name.
applets/link
Package link implements link as GNU coreutils does: make a hard link with link(2), nothing more.
Package link implements link as GNU coreutils does: make a hard link with link(2), nothing more.
applets/logname
Package logname implements logname as GNU coreutils does: print the name the session logged in as, which is not necessarily the current user.
Package logname implements logname as GNU coreutils does: print the name the session logged in as, which is not necessarily the current user.
applets/mknod
Package mknod implements mknod as GNU coreutils does: make block or character special files, or FIFOs.
Package mknod implements mknod as GNU coreutils does: make block or character special files, or FIFOs.
applets/netstat
Package netstat is GoNIX's netstat(8): sockets (-t -u -w, -l -a, -n, -p), the routing table (-r) and interface counters (-i), printed in net-tools' layout, read straight from /proc.
Package netstat is GoNIX's netstat(8): sockets (-t -u -w, -l -a, -n, -p), the routing table (-r) and interface counters (-i), printed in net-tools' layout, read straight from /proc.
applets/network
Package network configures eth0 as a supervised service (started from /etc/rc.d/network): a static address when /etc/rc.conf sets IP, otherwise a DHCP client.
Package network configures eth0 as a supervised service (started from /etc/rc.d/network): a static address when /etc/rc.conf sets IP, otherwise a DHCP client.
applets/nohup
Package nohup implements nohup as GNU coreutils does: run a command that ignores hangups, with terminal input and output redirected, by replacing this process with it.
Package nohup implements nohup as GNU coreutils does: run a command that ignores hangups, with terminal input and output redirected, by replacing this process with it.
applets/od
Package od implements od: dump files in octal, hexadecimal, decimal, floating point or character form.
Package od implements od: dump files in octal, hexadecimal, decimal, floating point or character form.
applets/passwd
Package passwd changes, locks, unlocks or deletes a user's password, BusyBox-style.
Package passwd changes, locks, unlocks or deletes a user's password, BusyBox-style.
applets/patch
Package patch is GNU patch's subset that scripts use: unified diffs (git's included) and context diffs, with offsets, fuzz, reversed-patch detection, rejects and backups, and GNU patch's messages and exit status.
Package patch is GNU patch's subset that scripts use: unified diffs (git's included) and context diffs, with offsets, fuzz, reversed-patch detection, rejects and backups, and GNU patch's messages and exit status.
applets/pgrep
Package pgrep implements pgrep and pkill as procps-ng does: select processes by an extended regular expression and other criteria, then list (pgrep) or signal (pkill) them.
Package pgrep implements pgrep and pkill as procps-ng does: select processes by an extended regular expression and other criteria, then list (pgrep) or signal (pkill) them.
applets/ping
Package ping is GoNIX's ping(8): ICMP echo, printing what iputils ping prints -- the PING header, one line per reply, and the statistics -- with its exit status (0 a reply came back, 1 none did, 2 an error).
Package ping is GoNIX's ping(8): ICMP echo, printing what iputils ping prints -- the PING header, one line per reply, and the statistics -- with its exit status (0 a reply came back, 1 none did, 2 an error).
applets/poweroff
Package poweroff asks init to power off the system; see package halt for the options it shares with halt and the others.
Package poweroff asks init to power off the system; see package halt for the options it shares with halt and the others.
applets/ps
Package ps implements ps as procps-ng does, for the options scripts use: UNIX (-e -f -o), BSD (aux) and GNU long (--pid --sort --no-headers) forms.
Package ps implements ps as procps-ng does, for the options scripts use: UNIX (-e -f -o), BSD (aux) and GNU long (--pid --sort --no-headers) forms.
applets/pwd
Package pwd implements pwd as GNU coreutils does: print the working directory, physically (-P, the default) or as $PWD names it (-L).
Package pwd implements pwd as GNU coreutils does: print the working directory, physically (-P, the default) or as $PWD names it (-L).
applets/reboot
Package reboot asks init to reboot the system; see package halt for the options it shares with halt and the others.
Package reboot asks init to reboot the system; see package halt for the options it shares with halt and the others.
applets/scp
Package scp is the remote end of OpenSSH's legacy SCP protocol: what an `scp -O` client runs on GoNIX as `scp -t TARGET` (receive) or `scp -f PATH...` (send).
Package scp is the remote end of OpenSSH's legacy SCP protocol: what an `scp -O` client runs on GoNIX as `scp -t TARGET` (receive) or `scp -f PATH...` (send).
applets/sealctl
Package sealctl manages the disk key's seal (Home Cloud DESIGN §4.7):
Package sealctl manages the disk key's seal (Home Cloud DESIGN §4.7):
applets/setsid
Package setsid implements setsid as util-linux does: run a program in a new session.
Package setsid implements setsid as util-linux does: run a program in a new session.
applets/sftpserver
Package sftpserver is the SFTP server a non-root SSH user's session runs: sshd starts it as `coreutils sftp-server` with the user's uid, gid and groups, in their home directory, and joins its stdin and stdout to the session channel.
Package sftpserver is the SFTP server a non-root SSH user's session runs: sshd starts it as `coreutils sftp-server` with the user's uid, gid and groups, in their home directory, and joins its stdin and stdout to the session channel.
applets/shuf
Package shuf is the shuf applet: GNU shuf's options, messages and exit statuses.
Package shuf is the shuf applet: GNU shuf's options, messages and exit statuses.
applets/sshd
Package sshd runs the GoNIX SSH server as a standalone, supervised service (started from /etc/rc.d/sshd), rather than a goroutine inside init.
Package sshd runs the GoNIX SSH server as a standalone, supervised service (started from /etc/rc.d/sshd), rather than a goroutine inside init.
applets/strace
go-strace only implements its syscall arg/ret decoding for amd64, so the real strace applet is amd64-only; strace_unsupported.go provides a stub elsewhere.
go-strace only implements its syscall arg/ret decoding for amd64, so the real strace applet is amd64-only; strace_unsupported.go provides a stub elsewhere.
applets/sv
Package sv implements the `sv` service-control client: a thin front-end to the supervisor PID 1 runs, reached over the /run/sv.sock control socket.
Package sv implements the `sv` service-control client: a thin front-end to the supervisor PID 1 runs, reached over the /run/sv.sock control socket.
applets/sync
Package sync is the sync applet, as GNU's: with no operand it flushes every filesystem; with files it syncs each one (-d: data only, -f: the filesystem holding it), reporting a file it cannot open and exiting 1.
Package sync is the sync applet, as GNU's: with no operand it flushes every filesystem; with files it syncs each one (-d: data only, -f: the filesystem holding it), reporting a file it cannot open and exiting 1.
applets/tar
Package tar is the tar applet: GNU tar's options, messages, listing format and exit statuses (0, or 2 after any error) for creating, listing and extracting archives, plain or compressed with gzip, bzip2, xz or zstd.
Package tar is the tar applet: GNU tar's options, messages, listing format and exit statuses (0, or 2 after any error) for creating, listing and extracting archives, plain or compressed with gzip, bzip2, xz or zstd.
applets/tty
Package tty implements tty as GNU coreutils does: print the name of the terminal on standard input.
Package tty implements tty as GNU coreutils does: print the name of the terminal on standard input.
applets/unix2dos
Package unix2dos is the unix2dos applet: the dos2unix conversion run the other way (see the dos2unix applet).
Package unix2dos is the unix2dos applet: the dos2unix conversion run the other way (see the dos2unix applet).
applets/unlink
Package unlink implements unlink as GNU coreutils does: remove one file with unlink(2), nothing more.
Package unlink implements unlink as GNU coreutils does: remove one file with unlink(2), nothing more.
applets/unshare
Package unshare implements unshare as util-linux does: run a program in new namespaces.
Package unshare implements unshare as util-linux does: run a program in new namespaces.
applets/wg
Package wg is GoNIX's WireGuard control applet.
Package wg is GoNIX's WireGuard control applet.
applets/wget
Package wget is the wget applet: GNU wget's options, file naming and exit statuses for fetching over HTTP and HTTPS.
Package wget is the wget applet: GNU wget's options, file naming and exit statuses for fetching over HTTP and HTTPS.
applets/whoami
Package whoami implements whoami as GNU coreutils does: print the name of the effective user.
Package whoami implements whoami as GNU coreutils does: print the name of the effective user.
applets/wol
Package wol is the `wol` applet: it arms (or disarms) Wake-on-LAN on a network interface, the same ETHTOOL_SWOL ioctl `ethtool -s IF wol g` performs.
Package wol is the `wol` applet: it arms (or disarms) Wake-on-LAN on a network interface, the same ETHTOOL_SWOL ioctl `ethtool -s IF wol g` performs.
applets/zcat
Package zcat is gzip -dc, as GNU's zcat is (see the gzip applet).
Package zcat is gzip -dc, as GNU's zcat is (see the gzip applet).
bootconfig
Package bootconfig parses the configuration a Library image takes at boot (docs/library-images.md, decisions 11–13): an env file of KEY=value lines.
Package bootconfig parses the configuration a Library image takes at boot (docs/library-images.md, decisions 11–13): an env file of KEY=value lines.
bootslot
Package bootslot is the A/B boot-slot model for installed (on-disk) GoNIX: two OS slots, an EFI System Partition holding the loader and a GRUB environment block, and a small state machine over that block.
Package bootslot is the A/B boot-slot model for installed (on-disk) GoNIX: two OS slots, an EFI System Partition holding the loader and a GRUB environment block, and a small state machine over that block.
cefhost
Package cefhost is the shared CEF (Chromium) offscreen-rendering host used by both browser host roles:
Package cefhost is the shared CEF (Chromium) offscreen-rendering host used by both browser host roles:
cefipc
Package cefipc is the shared transport contract between the GoNIX/macOS browser shell and its CEF rendering host: a memory-mapped frame buffer plus the constants both sides agree on.
Package cefipc is the shared transport contract between the GoNIX/macOS browser shell and its CEF rendering host: a memory-mapped frame buffer plus the constants both sides agree on.
disksig
Package disksig recognises what a disk already holds, so that nothing in GoNIX formats a disk that is not blank.
Package disksig recognises what a disk already holds, so that nothing in GoNIX formats a disk that is not blank.
factoryreset
Package factoryreset carries out a household's request to erase its Home Cloud (DESIGN §4.4.1).
Package factoryreset carries out a household's request to erase its Home Cloud (DESIGN §4.4.1).
gui
Package gui is a tiny, backend-agnostic windowing contract: a resizable software framebuffer (an *image.RGBA painted by the application) plus pointer, keyboard and scroll input and a run loop.
Package gui is a tiny, backend-agnostic windowing contract: a resizable software framebuffer (an *image.RGBA painted by the application) plus pointer, keyboard and scroll input and a run loop.
library
Package library builds and runs GoNIX Library images: a kernel, a slim init (cmd/libinit) and one or more Go programs, with no userland.
Package library builds and runs GoNIX Library images: a kernel, a slim init (cmd/libinit) and one or more Go programs, with no userland.
library/manifest
Package manifest is the contract between the two halves of a Library image (docs/library-images.md): `gonix pack` writes it into the initramfs, and cmd/libinit reads it at boot to learn what to run.
Package manifest is the contract between the two halves of a Library image (docs/library-images.md): `gonix pack` writes it into the initramfs, and cmd/libinit reads it at boot to learn what to run.
luks
Package luks formats and opens LUKS2 volumes in pure Go (Home Cloud DESIGN §4.7: DATA and PERSIST are LUKS2, unlocked by init with a TPM-sealed key, recoverable with the household key).
Package luks formats and opens LUKS2 volumes in pure Go (Home Cloud DESIGN §4.7: DATA and PERSIST are LUKS2, unlocked by init with a TPM-sealed key, recoverable with the household key).
measure
Package measure is the box's view of its own measured boot (Home Cloud DESIGN §4.7): it reads the TCG event log the firmware and the kernel's EFI stub leave behind, replays it into PCR values, predicts what those values will be after a staged update (the next kernel, the next command line) and turns expected PCR sets into the TPM policy digests the disk key is sealed under.
Package measure is the box's view of its own measured boot (Home Cloud DESIGN §4.7): it reads the TCG event log the firmware and the kernel's EFI stub leave behind, replays it into PCR values, predicts what those values will be after a staged update (the next kernel, the next command line) and turns expected PCR sets into the TPM policy digests the disk key is sealed under.
netconf
Package netconf brings network interfaces up: link state, DHCP and static addresses.
Package netconf brings network interfaces up: link state, DHCP and static addresses.
persist
Package persist is the layout of an installed system's persist partition, and the rule that makes the OS read-only (Home Cloud DESIGN §4.2.1).
Package persist is the layout of an installed system's persist partition, and the rule that makes the OS read-only (Home Cloud DESIGN §4.2.1).
powerbutton
Package powerbutton reports presses of the machine's power button: the ACPI button on amd64, the GPIO power key on arm64.
Package powerbutton reports presses of the machine's power button: the ACPI button on amd64, the GPIO power key on arm64.
reaper
Package reaper makes PID 1 the single owner of child reaping.
Package reaper makes PID 1 the single owner of child reaping.
sealstate
Package sealstate is the disk key's home on the ESP (Home Cloud DESIGN §4.7): the TPM-sealed passphrase that opens the LUKS2 keyslot init uses, and the boot policy it is sealed under.
Package sealstate is the disk key's home on the ESP (Home Cloud DESIGN §4.7): the TPM-sealed passphrase that opens the LUKS2 keyslot init uses, and the boot policy it is sealed under.
sshkeys
Package sshkeys manages root's authorized SSH keys and the gonix.sshkey= kernel command line option that supplies them.
Package sshkeys manages root's authorized SSH keys and the gonix.sshkey= kernel command line option that supplies them.
ui
unlock
Package unlock opens the box's LUKS2 volumes at boot (Home Cloud DESIGN §4.7): the keyslot passphrase lives sealed on the ESP (sealstate); the TPM gives it back only to the measured boot it was sealed for, and dm-crypt mappings appear as /dev/mapper/<name>.
Package unlock opens the box's LUKS2 volumes at boot (Home Cloud DESIGN §4.7): the keyslot passphrase lives sealed on the ESP (sealstate); the TPM gives it back only to the measured boot it was sealed for, and dm-crypt mappings appear as /dev/mapper/<name>.
wlui
Package wlui is a minimal, pure-Go, software-rendered Wayland window toolkit.
Package wlui is a minimal, pure-Go, software-rendered Wayland window toolkit.
wlui/swizzle
Package swizzle provides functions for converting between RGBA pixel formats.
Package swizzle provides functions for converting between RGBA pixel formats.
wlui/text
Package text is a minimal pure-Go text-rendering layer for wlui apps.
Package text is a minimal pure-Go text-rendering layer for wlui apps.
wlui/ui
Package ui provides shared theming and drawing helpers for GoNIX GUI apps built on wlui — the small, home-grown beginnings of a widget layer.
Package ui provides shared theming and drawing helpers for GoNIX GUI apps built on wlui — the small, home-grown beginnings of a widget layer.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL