- Nix 63.9%
- Shell 34.8%
- Just 1.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Includes the installed-system Wi-Fi firmware fix and documents Waydroid initialization, persistence, diagnostics, and manual Teaching Textbooks installation. Co-authored-by: Amp <[email protected]> Reviewed-on: #5 |
||
| .agents | ||
| .amp | ||
| design | ||
| hosts/kwilabook | ||
| install | ||
| modules | ||
| scripts | ||
| .gitignore | ||
| AGENTS.md | ||
| flake.lock | ||
| flake.nix | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
Kwilabook
Kwilabook is a simple, safe computer experience designed for children.
It is intended for families who want their children to use online schooling, educational tools, and other approved websites without giving them unrestricted access to the internet.
Parents control which websites are available. The computer itself is intentionally limited so children can focus on the sites and tools they are allowed to use.
Goals
- Simple browser-only experience
- Parent-controlled access to websites
- Strong protections against bypassing restrictions
- Minimal distractions
- Easy to reproduce and manage across multiple laptops
- Periodic screenshots for parental review
- Reliable operation even when network services are temporarily unavailable
Initial Version
The first version of Kwilabook will focus on a very small experience:
Turn on laptop
↓
Automatically sign in
↓
Open Chromium
↓
Use approved websites
There will be no normal desktop, terminal, file manager, or unnecessary applications available to the student.
How It Works
Kwilabook is built on NixOS and configured through a Nix flake.
The operating system is responsible for:
- starting the browser automatically
- keeping the student account locked down
- applying browser restrictions
- enforcing required network configuration
- preventing easy access to other applications
- running screen-auditing and maintenance services
Website permissions will eventually be managed separately so parents can change which sites are allowed without updating the operating system.
Installing to an Internal Disk
The flake provides an installer image that provisions persistent storage:
just install
This builds the installer ISO and interactively selects a removable USB disk
to flash. To build or flash separately, use just build-iso or
just flash-iso.
Boot the installer ISO, then type ERASE only after checking the displayed
disk path, model, and capacity. The installer refuses to continue when it
cannot identify exactly one non-removable internal disk, excludes USB disks,
and does not rediscover the target after confirmation. It creates an EFI
system partition, a system root, and a separate /var/lib/kwilabook data
partition before installing nixosConfigurations.kwilabook and rebooting.
The installer is intentionally separate from the installed student system and does not start Sway, Chromium, or Waydroid.
Screen Auditing
Kwilabook periodically captures screenshots while the student is using the computer.
Screenshots are:
- taken approximately every five minutes with randomized timing
- stored locally first
- uploaded to a configured SMB/CIFS network share
- retained locally if the network share is temporarily unavailable
This provides parents with a simple way to review how the device is being used.