Commit Graph

61 Commits

Author SHA1 Message Date
Emma Thorpe 85139ddfb1 refactor(nixos): extract shared modules, enable firewall, pin nixpkgs url
- Add common-nixos.nix (timezone, locale, git/fastfetch) imported by every
  NixOS host, and laptop.nix (systemd-boot, sway, dvorak, iwd, firewall)
  imported by X1 and MBP. Strip the nixos-generate-config boilerplate from
  both machine configs and reduce them to host-specific settings.
- Enable the firewall on the laptops (was disabled); X1 opens 22 next to
  its sshd.
- Pin nixpkgs input to github:nixos/nixpkgs/nixos-26.05 for consistency;
  lock rev unchanged (still b51242d).
- Drop unused module arguments.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 13:34:44 +00:00
Emma Thorpe f42b134ab1 docs: add README with hosts, apply steps, and firmware caveat
Document the host table, rebuild commands, and that the MBP Asahi firmware
dir is gitignored and must be populated out-of-band before that host builds.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 13:34:44 +00:00
Emma Thorpe de702d5ceb ci: evaluate the darwin host configuration
The eval loop covered only the NixOS hosts, so the nix-darwin host could
break unnoticed. Add an eval step for darwinConfigurations.lyrathorpe-mac.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 13:34:44 +00:00
Emma Thorpe 9a17994c30 fix(sway): use wayland WINIT backend in session env
WINIT_UNIX_BACKEND was set to x11, forcing winit apps onto XWayland in a
Wayland session, contradicting the rest of the block. Set it to wayland,
normalise the heredoc indentation, and drop the unused `options` arg.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 13:34:44 +00:00
Emma Thorpe 1d79ba175a fix(zsh): drop duplicate history-substring-search plugin
historySubstringSearch.enable already wires the home-manager module and
keybindings; the oh-my-zsh plugin of the same name was redundant.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 13:34:44 +00:00
Emma Thorpe 11cac1aeac fix(vim): replace unavailable peaksea colorscheme with catppuccin-mocha
peaksea is neither in the plugin list nor packaged in nixpkgs vimPlugins,
so `colorscheme peaksea` errored on startup and vim fell back to the
default scheme. Add catppuccin-vim and select catppuccin_mocha (matching
the swaylock/dunst palette); drop the dead peaksea packadd guard.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 13:34:44 +00:00
lyrathorpe 94fc253f68 Merge pull request 'fix(wsl): disable systemd-ssh-proxy ssh_config include' (#13) from fix/wsl-ssh-systemd-proxy-include into main
CI / flake (push) Successful in 1m58s
Reviewed-on: #13
2026-06-04 13:26:19 +01:00
Emma Thorpe dddf97f3ad fix(wsl): disable systemd-ssh-proxy ssh_config include
CI / flake (pull_request) Successful in 2m7s
The NixOS-WSL store is a read-only VHD whose files are owned by nobody
(65534), not root. programs.ssh.systemd-ssh-proxy.enable (default true)
adds `Include <systemd>/lib/systemd/ssh_config.d/20-systemd-ssh-proxy.conf`
to /etc/ssh/ssh_config. OpenSSH permission-checks Include'd config files
and rejects any not owned by root or the caller, so the nobody-owned
include fails with "Bad owner or permissions" and breaks ssh/git for
every command.

Disable it on the WSL host: the proxy plugin only serves `ssh unix/…` /
`vsock` connections to local machined VMs, which WSL does not use. Other
hosts keep the default (root-owned store, include works).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 12:20:01 +00:00
renovate-bot 1701e6e90a Merge pull request 'chore(deps): update gitea actions to df4cb1c' (#12) from renovate/gitea-actions into main
CI / flake (push) Successful in 1m42s
2026-06-04 01:00:58 +01:00
Renovate Bot f84bcdb339 chore(deps): update gitea actions to df4cb1c
CI / flake (pull_request) Successful in 1m45s
2026-06-04 00:00:50 +00:00
renovate-bot d72aa2080e Merge pull request 'chore(deps): update gitea actions to de0fac2' (#5) from renovate/gitea-actions into main
CI / flake (push) Successful in 1m55s
2026-06-03 01:08:08 +01:00
Renovate Bot eb54088230 chore(deps): update gitea actions to de0fac2
CI / flake (pull_request) Successful in 2m3s
2026-06-03 00:01:01 +00:00
lyrathorpe 775fdba160 Merge pull request 'feat(darwin): declare Mac App Store apps' (#11) from feat/darwin-mas-apps into main
CI / flake (push) Successful in 1m45s
Reviewed-on: #11
2026-06-02 17:36:10 +01:00
lyrathorpe 110890508f feat: also include hass and infuse
CI / flake (pull_request) Successful in 1m46s
2026-06-02 17:34:46 +01:00
lyrathorpe 27e12990f4 feat: add mas
CI / flake (push) Successful in 1m58s
2026-06-02 17:33:06 +01:00
Emma Thorpe b47610a2bc feat(darwin): declare Mac App Store apps
CI / flake (pull_request) Successful in 1m58s
Add the installed App Store apps to homebrew.masApps so mas manages them declaratively: Amphetamine, Apple Configurator, Game Controller Tester, Keynote, Numbers, Pages, PDFgear, PL2303Serial, WireGuard.
2026-06-02 16:31:02 +00:00
lyrathorpe eeb1c72d7f Merge pull request 'fix(home-manager): back up clobbered dotfiles on activation' (#10) from fix/hm-dotfile-backup into main
CI / flake (push) Successful in 1m52s
Reviewed-on: #10
2026-06-02 17:30:29 +01:00
Emma Thorpe 27e91508cc fix(home-manager): back up clobbered dotfiles on activation
CI / flake (pull_request) Successful in 1m52s
Set home-manager.backupFileExtension = "backup" on the NixOS and Darwin base modules. Existing machines carry hand-written ~/.zshrc and ~/.zshenv that home-manager would refuse to overwrite, aborting activation. With a backup extension, the originals are saved as .backup and activation proceeds. The oh-my-zsh setup is already declared in lyrathorpe/home/shell.nix, so the generated files supersede the old ones.
2026-06-02 16:28:28 +00:00
lyrathorpe c339b42b45 fix: enable homebrew auto-migrate
CI / flake (push) Successful in 1m50s
2026-06-02 17:21:48 +01:00
lyrathorpe 0360442d44 Merge pull request 'Feat/nix darwin' (#9) from feat/nix-darwin into main
CI / flake (push) Successful in 1m46s
Reviewed-on: #9
2026-06-02 17:15:08 +01:00
Emma Thorpe ba2cb13563 feat(darwin): declare brew/nixpkgs packages for macOS continuity
CI / flake (pull_request) Successful in 2m7s
Migrate the prior Homebrew package set onto the nix-darwin host. Leaf CLI formulae move to nixpkgs (environment.systemPackages); pure library deps are dropped since nix resolves them transitively. firefoxpwa and version-pinned llvm@21/lld@21/python@3.14 stay on brew. All GUI apps remain brew casks, since nixpkgs darwin GUI support is unreliable.
2026-06-02 16:12:42 +00:00
lyrathorpe a81064f086 Merge pull request 'chore(deps): update gitea actions (major)' (#6) from renovate/major-gitea-actions into main
CI / flake (push) Successful in 1m57s
Reviewed-on: #6
2026-06-02 17:11:50 +01:00
Emma Thorpe e67bc0f4d5 feat(darwin): wire nix-homebrew and make Homebrew authoritative
Add the nix-homebrew input and darwin module so the Homebrew prefix is installed and owned declaratively (no manual bootstrap), with enableRosetta for x86_64 formulae on Apple Silicon and user = host username.

Set homebrew.onActivation.cleanup = zap so the taps/brews/casks/masApps lists are authoritative: anything not declared is removed on activation.
2026-06-02 16:10:16 +00:00
Emma Thorpe 532e581696 feat(darwin): enable declarative Homebrew on the macOS host
Turn on nix-darwin's homebrew module with empty taps/brews/casks/masApps lists to fill in, onActivation autoUpdate+upgrade, and cleanup=none (manual formulae left intact; flip to zap for fully authoritative lists). Set system.primaryUser so brew activation runs as the host user.
2026-06-02 16:10:16 +00:00
Emma Thorpe 16cbbdf5e5 feat(darwin): add nix-darwin support with a default macOS host
Add the nix-darwin input (nix-darwin-26.05, follows nixpkgs) and a mkDarwinHost mirroring mkHost: shared commonModule (nixpkgs/nix settings) is factored out and reused, home-manager is wired via darwinModules, and identity is threaded through specialArgs.

New darwinConfigurations.lyrathorpe-mac (aarch64-darwin) reuses the cross-platform ./lyrathorpe/home modules (shell, git, editor); Linux-only sway/desktop modules are excluded. Build with: darwin-rebuild switch --flake .#lyrathorpe-mac.
2026-06-02 16:10:16 +00:00
lyrathorpe 03101eb666 Merge pull request 'ci: only run on nix-related changes' (#8) from ci/nix-path-filter into main
CI / flake (push) Successful in 1m56s
Reviewed-on: #8
2026-06-02 17:09:51 +01:00
Emma Thorpe 0346095822 ci: only run on nix-related changes
CI / flake (pull_request) Successful in 1m53s
Add path filters so the workflow triggers only when *.nix files, flake.lock, or the workflow itself change, skipping CI for docs/markdown/unrelated edits.
2026-06-02 15:58:34 +00:00
Renovate Bot c01bb46393 chore(deps): update gitea actions
CI / flake (pull_request) Successful in 1m49s
2026-06-02 15:49:36 +00:00
lyrathorpe a7e4b8f093 Merge pull request 'fix(renovate): fix auto-discover' (#4) from fix/renovate into main
CI / flake (push) Successful in 2m3s
Reviewed-on: #4
2026-06-02 16:43:00 +01:00
lyrathorpe d1d0052c02 fix(renovate): fix auto-discover
CI / flake (pull_request) Successful in 1m51s
2026-06-02 16:42:47 +01:00
lyrathorpe 66555c0416 Merge pull request 'Ci/gitea actions and renovate' (#3) from ci/gitea-actions-and-renovate into main
CI / flake (push) Successful in 2m3s
Reviewed-on: #3
2026-06-02 16:34:44 +01:00
Emma Thorpe 0f235b016e ci: drop self-hosted Renovate workflow
CI / flake (pull_request) Successful in 2m2s
Central Renovate with autodiscovery already covers this repo; renovate.json alone configures it.
2026-06-02 15:31:01 +00:00
Emma Thorpe 659912e0af ci: add Gitea Actions CI and Renovate coverage
CI workflow gates on nixfmt formatting and evaluates all three host toplevels (aarch64 evaluates without emulation; no full builds in CI).

renovate.json enables the nix manager and weekly lockFileMaintenance for flake.lock, plus grouped github-actions updates (Renovate matches .gitea/workflows). A self-hosted Renovate workflow runs it on Gitea, since Gitea has no built-in Renovate; it needs a RENOVATE_TOKEN secret.
2026-06-02 15:29:59 +00:00
lyrathorpe 826ef58a9d Merge pull request 'fix(edaas): allow edaas to load ssh-agent' (#2) from fix/WSL-ssh-agent into main
Reviewed-on: #2
2026-06-02 16:23:16 +01:00
Emma Thorpe 4fede03e21 fix(edaas): allow edaas to load ssh-agent 2026-06-02 15:22:58 +00:00
lyrathorpe b9f06a732f Merge pull request 'Refactor/rename config dir to lyrathorpe' (#1) from refactor/rename-config-dir-to-lyrathorpe into main
Reviewed-on: #1
2026-06-02 16:10:50 +01:00
Emma Thorpe 6ac2a80c8d refactor: rename config dir to lyrathorpe and host labels
Move ./emmathorpe -> ./lyrathorpe (git mv preserves history) and rename the MBP/X1 nixosConfiguration names to lyrathorpe-mbp / lyrathorpe-x1c. The EDaaS host keeps its emmathorpe-edaas name and Emma Thorpe identity; it still imports the shared (renamed) config dir.

Derivation outputs are byte-identical to before; pure relabel.
2026-06-02 15:06:10 +00:00
Emma Thorpe 5b6fae13fb feat(user): switch primary identity to lyrathorpe / Lyra Thorpe
Thread username and fullName per host through the flake host table and specialArgs / home-manager.extraSpecialArgs, so user.nix and git.nix derive identity instead of hardcoding it.

MBP and X1 now provision user lyrathorpe (Lyra Thorpe). EDaaS retains emmathorpe (Emma Thorpe) and its wsl.defaultUser; work commit email is unchanged.
2026-06-02 14:58:26 +00:00
Emma Thorpe 74792f9e5b Refactor/flake dedup and wsl input (#3)
* fix: configure docker for EDaaS WSL VDI

Enable rootful docker with the Docker Desktop proxy patch, add emmathorpe to the docker group, disable resolvconf and enable nix-ld.

* feat: flesh out work module and pin claude-code to nixpkgs unstable

Migrate git config to the settings option, fix the signing key path and email, add argo-rollouts/google-cloud-sdk and other tooling, and enable go. claude-code is sourced from the nixpkgs-unstable overlay.

* chore: update personal git, delta and editor config

Move git config to the settings option, switch to the standalone programs.delta module with git integration, add commitizen, and treat Jenkinsfiles as groovy.

* refactor: dedupe flake with mkHost and add nixos-wsl flake input

Extract a shared mkHost helper to remove duplicated home-manager scaffolding, add nixos-wsl as a flake input so the EDaaS host builds without --impure, source claude-code via a nixpkgs-unstable overlay, and expose a nixfmt formatter output.

* style: format nix files with nixfmt

* refactor: migrate to stable nixpkgs 26.05 and track upstream asahi flake

Pin nixpkgs to nixos-26.05 and home-manager to release-26.05; claude-code stays bleeding-edge via the nixpkgs-unstable overlay.

Centralize allowUnfree and experimental-features in mkHost and pin nix.registry/nixPath to the flake nixpkgs.

Replace the vendored apple-silicon-support module with the nixos-apple-silicon flake input, dropping ~8.8k lines of vendored code.

Fix stable-induced package renames: neofetch -> fastfetch, noto-fonts-emoji -> noto-fonts-color-emoji.

* refactor: adopt flake-parts with host table and scoped unfree

Wrap outputs in flake-parts.lib.mkFlake, replacing forAllSystems boilerplate with systems + perSystem. Drop the unused self argument.

Collapse the three mkHost calls into a hosts attrset mapped with lib.mapAttrs; adding a machine is now a single table entry.

Replace blanket allowUnfree with an allowUnfreePredicate allowlist (claude-code, lens). Add devShells.default (nixfmt, nil, git) and a checks.formatting nixfmt --check gate.

* docs(flake): annotate inputs, mkHost, host table and perSystem

Explanatory comments only; no eval change (drvPath identical).

* refactor(home): split home-manager into focused modules; clarify desktop scope

Break the home.nix monolith into emmathorpe/home/{default,shell,git,editor,desktop}.nix. The host table now composes desktop.nix onto graphical hosts only, so element-desktop, the Sway session vars and cursor theme are no longer installed on the headless WSL host.

Consolidate chat apps: legcord moves from user.nix (system) into the home desktop module alongside element-desktop. The tty1 'exec sway' autostart moves into desktop.nix so it never runs on headless hosts.

Desktop functionality: add xdg.portal (wlr + gtk) in swaywm.nix to enable screen sharing and native file pickers for Element and Firefox under wlroots.

* feat(desktop): declarative Sway config with idle-lock, notifications and bar

Add emmathorpe/home/sway.nix managing wayland.windowManager.sway (package = null, reusing the system Sway wrapper) plus swaylock, swayidle, dunst and an i3status-rust bar. home-manager's systemd integration wires sway-session.target so the swayidle/dunst user services start with the session.

swayidle locks after 5 min, powers outputs off after 10, and locks before sleep. Media/brightness keys use wpctl (pipewire) and brightnessctl; the launcher is sway-launcher-desktop in a floating foot window; keyboard is set to dvorak to match the console.

Move swaylock/swayidle/dunst/i3status-rust out of the system programs.sway extraPackages (now home-managed). Add security.pam.services.swaylock on the MBP host so the lock screen can authenticate (X1 already had it with fingerprint auth).

---------

Co-authored-by: Emma Thorpe <emma.thorpe@citrix.com>
2026-06-02 15:40:25 +01:00
Emma Thorpe 9d6eb1237d chore: update personal git, delta and editor config
Move git config to the settings option, switch to the standalone programs.delta module with git integration, add commitizen, and treat Jenkinsfiles as groovy.
2026-06-02 05:51:32 -07:00
Emma Thorpe d6146cede6 feat: flesh out work module and pin claude-code to nixpkgs unstable
Migrate git config to the settings option, fix the signing key path and email, add argo-rollouts/google-cloud-sdk and other tooling, enable go, and wire a dedicated nixpkgs-unstable input so claude-code tracks unstable independently of the pinned nixpkgs.
2026-06-02 05:51:32 -07:00
Emma Thorpe ea7503c694 fix: configure docker for EDaaS WSL VDI
Enable rootful docker with Docker Desktop proxy patch, add emmathorpe to the docker group, disable resolvconf and enable nix-ld so the WSL distro behaves.
2026-06-02 05:51:32 -07:00
lyrathorpe 57a5fd3b45 fix: make vim colours sane and correct 2025-06-20 07:19:01 -07:00
lyrathorpe 5ed5363fe1 feat: add tmux and git work config 2025-06-20 07:19:01 -07:00
lyrathorpe 3a9407fc9d feat: make multi-file work, though not pretty 2025-06-20 07:19:01 -07:00
lyrathorpe bed08ad165 fix: try breaking it out different 2025-06-20 07:19:01 -07:00
lyrathorpe c1b3d78213 feat: split out configuration 2025-06-20 07:19:01 -07:00
lyrathorpe 934769ba71 feat: move work stuff to module 2025-06-20 07:19:01 -07:00
lyrathorpe 1cc633bb67 feat: add initial suport for EDaaS setup at work 2025-06-20 07:19:01 -07:00
Emma Thorpe dd33501382 fix: somehow my swap partition on the X1 got sad 2025-05-29 22:07:20 +01:00