# Vigil TODO list ## Reminders - Never panic from non-critical failures (e.g. non-root filesystem mount failure). - All errors should be logged. - Configuration via TOML. ## Roadmap ### System init - [x] Mount filesystems (`/proc`, `/sys`, `/dev`). - [x] Spawn `udev` (or compatible device manager) as child process. - [x] Mount user-defined filesystems from `/etc/fstab` - [x] Activate `swap` - [x] Set hostname, timezone, and locale from config. - [x] Load kernel modules (via `modprobe` or direct `init_module` syscall). ### Core runtime features - [ ] **Service management** - [ ] Parse TOML unit files (`/etc/vigil/units/*.toml`) - [ ] Start/stop/restart/status via `vigilctl` - [ ] Handle `Wants=`, `After=`, `Before=` dependencies - [ ] Auto-restart failed services (configurable via option `restart = always|on-failure|never`) - [x] **Child process reaping** - [x] Install `SIGCHLD` handler - [x] Call `waitpid(-1, ...)` in loop to reap zombies - [ ] Log exit status, signal, and runtime duration per service - [ ] **TTY & login** - [ ] Launch `getty` on configured TTYs (e.g. `tty1`–`tty6`) - [ ] Support custom `getty` paths/args per TTY in config ### System lifecycle control - [ ] Handle `reboot`, `halt`, `poweroff` via `vigilctl` - [ ] Properly terminate all services in reverse dependency order - [ ] Sync filesystems and unmount (best-effort) - [ ] Invoke `reboot(2)` / `halt(2)` syscalls directly ### Signal handling - [ ] `SIGINT` / `SIGTERM` = graceful shutdown - [ ] `SIGUSR1` / `SIGUSR2` = reload config or trigger debug dump - [ ] Block all non-fatal signals during critical sections (e.g. mount) ### Logging Logging should not stop on printing colored messages to stdout in addition, we __should__ send logs to /var/log/vigil.log or smth simmilar.