Conversation
There was a problem hiding this comment.
Pull request overview
This PR migrates the classroom laptop setup from macOS bootstrap scripts to a declarative NixOS flake that can be built into both an installable system configuration and a bootable installer ISO for Intel MacBooks.
Changes:
- Introduces a NixOS flake with modular system configuration (XFCE desktop, VS Code, Python, networking, Broadcom WiFi).
- Adds a GitHub Actions workflow to build and publish a bootable installer ISO plus a Python-based install/update flow.
- Adds Renovate + dev tooling (direnv + treefmt/pre-commit), and removes the legacy macOS provisioning artifacts.
Reviewed changes
Copilot reviewed 23 out of 26 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| settings.json | Removes legacy macOS VS Code settings bootstrap file. |
| org.weallcode.logon.plist | Removes legacy macOS LaunchAgent. |
| logon.script.sh | Removes legacy macOS logon script. |
| install.sh | Removes legacy macOS installation script. |
| .zshrc | Removes legacy macOS zsh customization. |
| flake.nix | Defines flake inputs, dev tooling (treefmt/pre-commit), and NixOS/ISO outputs. |
| flake.lock | Pins flake inputs for reproducible builds. |
| modules/base.nix | Main classroom NixOS configuration, packages, Home Manager wiring, update shortcut. |
| modules/disk.nix | Disk partitioning layout for disko-based installs. |
| modules/hardware-configuration.nix | Hardware/boot settings targeting Intel MacBooks (incl. Broadcom import). |
| modules/broadcom.nix | Enables Broadcom STA driver and related kernel module settings. |
| modules/networkmanager.nix | Enables NetworkManager and configures system-wide WiFi connection storage. |
| modules/nix-settings.nix | Sets Nix daemon settings, substituters, and GC defaults. |
| modules/python.nix | Provides Python environment (tkinter/rich/pip) for classroom usage and scripts. |
| modules/vscode.nix | Home Manager VS Code config: extensions, interpreter path, AI feature disabling, editor defaults. |
| modules/xfce.nix | XFCE desktop setup: autologin, wallpaper, panel/launcher config. |
| modules/iso.nix | Installer ISO configuration and desktop “Classroom Setup” shortcut. |
| scripts/machine-setup.py | Installer-side script that partitions, installs NixOS from the flake, and reboots. |
| scripts/update.py | Classroom update script that rebuilds from GitHub flake and upgrades weallcode-robot via pip. |
| README.md | Documents new NixOS-based install/update process and repo structure. |
| .envrc | Enables direnv flake-based dev shell. |
| .gitignore | Updates ignored files for direnv/pre-commit/ruff cache. |
| renovate.json | Adds Renovate configuration for monthly dependency updates (incl. Nix). |
| .github/workflows/build-iso.yml | Builds the installer ISO in CI and uploads it as an artifact. |
| .github/workflows/renovate.yml | Runs Renovate on a schedule / manually. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@bottd can you look at the reviews from Copilot? |
|
@karbassi I pushed changes to address the comments |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 23 out of 26 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Summary
Replaces the previous scripts for macOS config with a NixOS flake configuration for the classroom laptops (Intel MacBooks).
We ran into issues getting programs to run consistently across these machines, especially because modern versions of MacOS do not support these MacBooks. With Linux we can run an up-to-date system on legacy hardware. NixOS lets us declare the entire system config in code so every laptop is identical.
Omar and I have successfully installed this configuration on the laptops that have USB-A ports. During setup we verified that Python with
tkinterruns successfully in VS Code, all VS Code extensions are installed, and AI features are turned off.Included in this PR:
NixOS system config
XFCE desktop
WeAllCode wallpaper
auto-login
Python 3
tkinterweallcode_robotrich(used in scripts)VS Code
Firefox
Broadcom WiFi driver
Bootable installer ISO
.isoClassroom Update script
weallcode-robotvia pipRenovate
Dev environment