diff --git a/DESIGN.md b/DESIGN.md index ab3e764..895317e 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -99,7 +99,7 @@ non-Fedora host. │ │ cp ISO → /out/ │ │ │ │ │ sha256sum → /out/SHA256SUMS │ │ │ │ └───────────────────────────────────────────────────┘ │ │ -│ └──────────────────────────────────────────────────┘ │ │ +│ └───────────────────────────────────────────────────────┘ │ │ │ │ ├─[signing]─ si-sign-outputs.sh --no-smoke │ │ │ └── gpg --detach-sign ISO + SHA256SUMS │ @@ -157,7 +157,7 @@ flake.nix ├── modules/builder.nix podman + make + git so the live image can │ rebuild safe-image (self-hosting) ├── modules/sway.nix Sway WM, keybindings, fonts, dark mode - ├── modules/netmode.nix si-netmode, nftables, polkit, systemd + ├── modules/netmode.nix safe-netmode, nftables, polkit, systemd ├── modules/yubikey-gpg.nix GPG agent, YubiKey udev rules, scdaemon, │ pcscd, safe-yubikey-fetch-pubkey command └── modules/docs.nix safe-docs (glow TUI + ghostwriter), in-image docs @@ -183,7 +183,7 @@ BIOS/UEFI │ └── re-apply udev rules to USB devices │ (ensures MODE="0666" on YubiKey in QEMU) │ - ├── si-netmode-default-offline.service (oneshot) + ├── safe-netmode-default-offline.service (oneshot) │ runs before network-pre.target and NetworkManager │ ├── nftables lockdown table active │ ├── rfkill block all @@ -208,35 +208,36 @@ which is before NetworkManager, DHCP, or any network service can start. ## Network mode state machine ``` - ┌─────────────────────────┐ - │ BOOT (offline) │ - └────────────┬────────────┘ - │ si-netmode-default-offline.service + ┌──────────────────────────┐ + │ BOOT (offline) │ + └────────────┬─────────────┘ + │ safe-netmode-default-offline.service ▼ ┌──────────────────────────┐ - ┌──────▶│ OFFLINE |◀───────┐ - │ │ - nftables lockdown │ │ - │ │ - rfkill block all │ │ - │ │ - interfaces down │ │ - │ │ - routes flushed │ │ - │ │ - NetworkManager off │ │ - │ └────────────┬─────────────┘ │ - │ │ si-netmode online │ - │ │ (sudo / polkit) │ - │ ▼ │ - │ ┌──────────────────────────┐ │ - │ │ ONLINE │ │ - │ │ - nftables: outbound ok │ │ - │ │ - rfkill unblock all │ │ - │ │ - interfaces up │ │ - │ │ - NetworkManager on │ │ - │ └────────────┬─────────────┘ │ - │ │ si-netmode offline │ - └─────────────────────┘ (sudo / polkit) │ - │ - Sway keybindings: │ - Mod+Shift+i → si-netmode online ───┤ - Mod+Shift+o → si-netmode offline ──┘ + ┌───────▶│ OFFLINE │◀────────────┐ + │ │ - nftables lockdown │ │ + │ │ - rfkill block all │ │ + │ │ - interfaces down │ │ + │ │ - routes flushed │ │ + │ │ - NetworkManager off │ │ + │ └────────────┬─────────────┘ │ + │ │ safe-netmode online │ + │ │ (sudo / polkit) │ + │ ▼ │ + │ ┌──────────────────────────┐ │ + │ │ ONLINE │ │ + │ │ - nftables: outbound ok │ │ + │ │ - rfkill unblock all │ │ + │ │ - interfaces up │ │ + │ │ - NetworkManager on │ │ + │ └────────────┬─────────────┘ │ + │ │ safe-netmode offline │ + └─────────────────────┘ (sudo / polkit) │ + │ + Sway keybindings (wrappers add a desktop │ + notification, then call safe-netmode): │ + Mod+Shift+i → safe-network-on ────────┤ + Mod+Shift+o → safe-network-off ────────┘ ``` Mode transitions are atomic: the old nftables table is deleted before the new diff --git a/README.md b/README.md index c3e9867..83cb570 100644 --- a/README.md +++ b/README.md @@ -112,8 +112,8 @@ SPICE=1 make test-gui # use spice-app + remote-viewer (clipboard on Fedora out/ ├── safe-live-nixos-sway-