No description
  • Nix 63.9%
  • Shell 34.8%
  • Just 1.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Kwila Dev Bot 5af60fbf78 fix: include Wi-Fi firmware and document Android (#5)
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
2026-08-25 08:51:57 -04:00
.agents fix: load nix environment in user shells 2026-08-15 20:14:44 +00:00
.amp feat: run kiosk with Sway and Waydroid (#3) 2026-08-20 08:17:20 -04:00
design fix: include Wi-Fi firmware and document Android (#5) 2026-08-25 08:51:57 -04:00
hosts/kwilabook fix: include Wi-Fi firmware and document Android (#5) 2026-08-25 08:51:57 -04:00
install fix: include Wi-Fi firmware and document Android (#5) 2026-08-25 08:51:57 -04:00
modules fix: include Wi-Fi firmware and document Android (#5) 2026-08-25 08:51:57 -04:00
scripts feat: run kiosk with Sway and Waydroid (#3) 2026-08-20 08:17:20 -04:00
.gitignore feat: run kiosk with Sway and Waydroid (#3) 2026-08-20 08:17:20 -04:00
AGENTS.md docs: update nix setup guidance 2026-08-15 20:15:03 +00:00
flake.lock feat: add USB kiosk proof of concept (#2) 2026-08-15 21:34:46 -04:00
flake.nix fix: include Wi-Fi firmware and document Android (#5) 2026-08-25 08:51:57 -04:00
justfile feat: add automated persistent-storage installer 2026-08-24 19:44:57 -04:00
LICENSE Initial commit 2026-08-15 16:02:04 -04:00
README.md fix: include Wi-Fi firmware and document Android (#5) 2026-08-25 08:51:57 -04:00

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.