My personal workstation config for Spectrum/Bluefin, NixOS, and macOS
Important
This repository is for my machines. It's public for reference, but it isn't a reusable installer or a supported project
The goal is to make every machine feel like mine without maintaining the same config four times
I keep the repo at ~/dotfiles:
git clone https://github.com/4evy/dotfiles.git ~/dotfiles
cd ~/dotfilesSpectrum / Bluefin
On a fresh Bluefin install, I switch to the Spectrum image:
sudo bootc switch ghcr.io/4evy/spectrum:latest
systemctl rebootAfter the reboot, I finish the setup:
cd ~/dotfiles
just setupNixOS
On an installed NixOS system, I apply the flake and finish the shared setup:
sudo nixos-rebuild \
--option extra-substituters https://install.determinate.systems \
--option extra-trusted-public-keys cache.flakehub.com-3:hJuILl5sVK4iKm86JzgdXW12Y2Hwd5G07qKtHTOcDCM= \
--flake .#nixos \
switch
just setupThe extra cache options are only needed for the first rebuild. Afterward, this shorter command is enough:
sudo nixos-rebuild switch --flake .#nixosmacOS
This path needs macOS 26 or newer. From the cloned repo, I run:
./ansible/bootstrap.sh --setupThe script bootstraps Homebrew and Ansible, installs the userland, applies the dotfiles, and configures the Mac. It asks for administrator and 1Password access when needed
just or just --list shows every recipe
Everyday commands
| Command | Aliases | Purpose |
|---|---|---|
just setup |
just s |
Bootstrap and apply everything |
just update |
just up |
Update userland, dotfiles, and host setup |
just dotfiles-diff |
just diff |
Preview pending chezmoi changes |
just apply [targets...] |
just a |
Apply all dotfiles or only the given targets |
just status |
- | Show Spectrum image status |
just doctor [profile] |
- | Check every workflow dependency or one profile |
just determinate-status |
- | Show the Determinate version, features, and daemon state |
just determinate-upgrade |
- | Upgrade installer-managed Determinate Nix |
just nix |
just nx |
Install Nix and ensure its profile tools are available |
just spectrum-validate |
just validate |
Validate the BlueBuild recipe and base digest |
just spectrum-build |
just build |
Build Spectrum locally |
just fmt |
just f |
Format the repository |
just check-format |
just cf |
Check repository formatting without retaining rewrites |
just lint |
just l |
Run static checks |
just check |
just c, just ck |
Run the full validation suite |
just python-typecheck [args...] |
just typecheck |
Type-check Python, forwarding optional arguments |
just watch [recipe] |
just w |
Rerun a recipe when files change |
just reboot |
just r |
Reboot the Linux host after confirmation |
just help [command] |
just h |
List recipes or show command usage |
Run just help <command> with either a command or alias for argument details.
I keep shared tool configuration at the root: .editorconfig for shell
formatting, .yamlfmt for YAML, and .luacheckrc for Lua globals. Direct tool
commands, editor integrations, and the Nix checks read the same settings.
go.work connects the records command and theme-run, so I can check both
modules from here with go vet ./... ./packages/theme-run/....
For direct Nix work, drop down a level:
nix develop
just nix-check