| Commit message (Collapse) | Author | Age | Files |
| |
|
|
|
|
|
|
|
| |
Enables programs.nh so the nh CLI helper is available cross-platform
alongside the rest of modules/home/dev-tools.nix, without wiring
NH_FLAKE/etc (those wouldn't reliably reach the shell, since the
dotfiles repo owns bash config, not home-manager).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
| |
uv fetches prebuilt CPython interpreters and native wheel extensions
that expect a standard glibc loader path, which doesn't exist on
NixOS without nix-ld. Enables it unconditionally on every NixOS host
and extends its library set with common CPython native-extension
dependencies not already covered by nix-ld's own defaults.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
| |
Enables services.automatic-timezoned so every host's clock/calendar
reflects its actual location with no manual timedatectl step or auth
prompt, since GNOME's own automatic-timezone toggle isn't wired to a
passwordless polkit rule on NixOS the way KDE's is.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
| |
|
|
|
|
|
| |
Tom wants the Helm CLI available alongside kubectl for managing charts
against whatever cluster kubectl is already pointed at.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
| |
Ghostty and Neovim both render glyphs (statusline icons, file-tree
icons) that need a Nerd Font, and no font was previously provisioned
at all.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rootless Docker's per-user systemd unit didn't start in a session
that was already logged in before a switch, and DOCKER_HOST only
reaches freshly-started shells -- both bit Tom immediately (docker
run failed against the default rootful socket path, which never
existed under rootless). virtualisation.docker.enable = true now
runs dockerd as a standard root system service, started at boot;
tom joins the docker group for sudo-less access. Trades rootless's
isolation guarantee for reliability on a long-lived desktop session.
Archives switch-docker-rootful and syncs the container-runtime
capability's requirements and Purpose text to match.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HngxrvqEzq8oBEBDtrYJyB
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
uv joins the CLI package list. Docker's daemon is now actually managed
on NixOS hosts too, in rootless mode (per-user systemd service, no
docker-group root-equivalent access), rather than leaving the runtime
entirely externally-managed as before -- the already-installed docker
CLI picks it up automatically via DOCKER_HOST. This is a documented,
narrow exception to developer-environment's client-only tools policy;
kubectl and awscli2 remain unaffected.
Archives add-uv-and-docker-runtime and syncs the new container-runtime
capability plus the narrowed developer-environment requirement into
the main specs.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HngxrvqEzq8oBEBDtrYJyB
|
| | |
|
| |
|
|
|
| |
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HngxrvqEzq8oBEBDtrYJyB
|
| |
|
|
|
|
|
|
|
| |
pkgs.gnome-extension-manager joins gnome-tweaks in the osConfig-gated
list added in the prior change, so it's provisioned only where GNOME
is actually enabled rather than on any Linux system.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HngxrvqEzq8oBEBDtrYJyB
|
| |
|
|
|
|
|
|
|
|
| |
Ghostty, the GNOME Tweaks gating requirement, and the GNOME dark-mode
default were already implemented and committed; this syncs the
delta specs into openspec/specs/desktop-applications and
openspec/specs/gnome-desktop and moves the change to archive/.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HngxrvqEzq8oBEBDtrYJyB
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Ghostty joins the cross-platform desktop app list (Linux-only in nixpkgs
today, filtered out on darwin by the existing availableOn check).
GNOME Tweaks is gated on osConfig.services.desktopManager.gnome.enable
rather than plain isLinux, since modules/home/desktop-apps.nix is also
consumed by the standalone, non-NixOS tom@linux home-manager profile,
which has no GNOME involved. Every NixOS host now also gets a dconf
default of org/gnome/desktop/interface color-scheme=prefer-dark, left
unlocked so GNOME Settings can still switch back to light mode.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HngxrvqEzq8oBEBDtrYJyB
|
| |
|
|
| |
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
| |
nixpkgs checks the unfree license against the inner discord-unwrapped
derivation, not the top-level discord wrapper, so the existing
"discord" allowlist entry never matched and any real build including
Discord failed with an unfree-license error. Add "discord-unwrapped"
alongside it.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
| |
Tom wanted a browser and password manager provisioned declaratively:
Firefox and the Bitwarden desktop client join the existing GUI app
list, and bitwarden-cli joins the developer CLI tools. All three are
free-licensed in current nixpkgs, so no unfree-allowlist change is
needed.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
| |
|
|
|
|
| |
desktop-applications spec
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
| |
Provisions these via home-manager, scoping unfree-package access to
exactly these packages and skipping any that aren't available for the
current system/architecture (e.g. aarch64-linux lacks Discord/Spotify
builds) instead of failing evaluation.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
|
| |
|
|
|
|
|
|
|
|
|
|
| |
specs
fix-deprecation-warnings, fix-neovim-plugin-loading, and
add-bash-profile-bootstrap all had every task complete; archived all
three. Synced the editor-environment and shell-login-bootstrap delta
specs into main specs (fix-deprecation-warnings had no delta specs).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
|
| |
|
|
|
|
|
|
|
| |
Manual verification (nix flake check, home-manager switch, Mason
reinstall) confirmed on a Nix-capable host. Synced the new
editor-toolchain capability into main specs and archived the change.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
|
| |
|
|
|
|
|
|
|
| |
mason.nvim (externally-managed Neovim dotfiles config) was failing to
install several LSP servers and tools because npm, python3, and unzip
weren't on PATH in the Home Manager profile.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
|
| |
|
|
|
|
|
|
|
|
|
| |
Replace deprecated pkgs.stdenv.isDarwin/isLinux with
pkgs.stdenv.hostPlatform.isDarwin/.isLinux, and explicitly pin
programs.neovim.withRuby/withPython3 = true so the legacy default
doesn't silently change if home.stateVersion is ever bumped. Pure
deprecation fixes, no behavior change.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
home-manager's programs.neovim module always writes a non-empty
~/.config/nvim/init.lua, which permanently conflicts with Stow linking
the dotfiles-owned lazy.nvim config to that same path - Stow skips the
package and plugins never load. Setting sideloadInitLua = true frees
that path for the dotfiles config to own exclusively. Also provisions
a C compiler and tree-sitter (moved from dev-tools.nix) so natively-
built plugins can compile on every platform.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
|
| |
|
|
|
|
|
|
|
|
| |
NixOS and most other Linux distros don't ship a ~/.bash_profile that
sources ~/.bashrc, so login shells miss the user's bash config. Adds a
home-manager activation script that creates one only when absent, on
every platform, without ever touching a pre-existing .bash_profile.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
|
| |
|
|
|
|
|
|
|
| |
Sync main specs with both completed changes: dotfiles-management
gains the platform-exclude requirement, and gnome-desktop becomes
a new main spec.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
|
| |
|
|
|
|
|
|
|
|
| |
Verified on a real NixOS VM after pushing: nix flake check passes,
confirming the services.displayManager.*/services.desktopManager.*
option paths and the dotfiles.nix platform-exclude changes both
evaluate correctly.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
|
| |
|
|
|
|
|
|
|
|
|
| |
Add GDM+GNOME, NetworkManager, PipeWire audio, and CUPS+Avahi
printing to modules/nixos/common.nix, applied unconditionally to
every NixOS host built from this flake, per add-gnome-desktop.
nix flake check remains unverified: Nix isn't installed on this
machine and no live NixOS host exists yet to boot-test against.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
|
| |
|
|
|
|
|
|
|
|
| |
iterm2 was being stowed on Linux and herbstluftwm/xorg on Darwin.
Add a built-in Darwin/Linux exclude default plus an excludePackages
override option in modules/home/dotfiles.nix, superseding the earlier
"accept harmless unused symlinks" decision.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
|
| |
|
|
|
|
|
|
| |
Closes the spec/implementation drift: the SSH requirement now states
that an authorized key must be provisioned, matching the live fix
already running on floep. Archived despite design.md never being
created -- deliberately skipped per its own conditional trigger rules,
confirmed before proceeding.
|
| |
|
|
|
| |
Archiving is inherent to the OpenSpec process, always available once
tasks are complete -- it should never appear as a checkbox task item.
|
| |
|
|
|
|
|
|
|
| |
Planning artifacts only. The developer-environment capability's SSH
requirement never stated that an authorized key must be provisioned --
the real gap that locked out the floep host after its first rebuild.
The code fix already shipped; this change brings the spec in line
with it. design.md skipped (none of its trigger conditions apply to a
documentation-only correction).
|
| |
|
|
|
|
|
|
|
|
|
| |
add-nix-flake-bootstrap, add-host-bootstrap-script,
add-dotfiles-stow-bootstrap, and add-developer-environment all had
every task complete (verified via a real nix flake check and a real
NixOS host build). Archived in dependency order so the two changes
sharing the nix-flake-bootstrap capability merged additively. Main
specs now exist for the first time: nix-flake-bootstrap (10
requirements), dotfiles-management (4), developer-environment (4).
add-gnome-desktop remains active (not yet implemented).
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
services.openssh.settings.PasswordAuthentication = false was enabled
with no authorized key ever provisioned for the tom user, locking out
all SSH access on the first real host (floep). Adds the public keys
from https://github.com/tomvanderlee.keys as static literals -- a
one-time fetch, not a build-time network dependency, to stay pure.
|
| |
|
|
|
|
|
|
| |
home-manager.useUserHomeDirectory was never a real option -- a mistake
that slipped through because this file was never actually evaluated
until a live nixos-rebuild switch surfaced it today. Corrected to
useUserPackages, the standard option that pairs with useGlobalPkgs for
NixOS+home-manager integration (also what Nix's own error suggested).
|
| |
|
|
|
|
|
|
| |
Pins nixpkgs (nixos-unstable) and home-manager to the revisions
resolved by the first successful nix flake check, run on a Linux
machine since Nix still isn't installed on this Mac. Without this
committed, every future check/build would silently re-resolve input
versions instead of using pinned ones.
|
| |
|
|
|
|
|
|
| |
Rename nixfmt-rfc-style to its current canonical name nixfmt, and add
meta.description to the bootstrap-host app to clear its warning.
Records the first successful `nix flake check` run (on a Linux machine
with Nix, since this Mac still doesn't have it) across all four
implemented changes so far — no errors, only these now-fixed warnings.
|
| |
|
|
|
|
|
| |
Planning artifacts only (proposal, spec, design, tasks) — GDM+GNOME,
NetworkManager, PipeWire, and CUPS+Avahi printing, applied
unconditionally to every NixOS host via modules/nixos/common.nix. Not
yet implemented.
|
| |
|
|
|
|
|
|
|
|
| |
modules/home/dev-tools.nix provisions the developer's evidenced most-
used CLI/client tooling (gh, tmux, htop, yq-go, tree-sitter, docker,
docker-compose, kubectl, awscli2). modules/home/shell.nix drops zsh/
starship/direnv in favor of bash + liquidprompt, both left entirely to
the user's own dotfiles for config since home-manager can't own
~/.bashrc without conflicting with it. modules/nixos/common.nix adds
sshd (key-only auth) and a firewall baseline for future NixOS hosts.
|
| |
|
|
|
|
|
|
|
|
| |
modules/home/dotfiles.nix clones ~/dotfiles on activation (only if not
already present) and stows every top-level package directory into
$HOME, independently per package so one conflict doesn't block the
rest. Removes home-manager's own git config management in favor of
letting the stowed ~/dotfiles/git/.gitconfig own it, and adds
homeConfigurations."tom@darwin" so the feature is usable on this Mac.
users/tom.nix now points home.dotfiles.repoUrl at the real repo.
|
| |
|
|
|
|
|
|
|
|
| |
nixosConfigurations now auto-discovers hosts/<name>/ directories instead
of a hand-maintained attrset, and scripts/bootstrap-host.sh (exposed as
`nix run .#bootstrap-host`) scaffolds a new host from the template. The
script always requires an explicit --root for hardware-configuration.nix
so a live-installer run can never read the live ISO's own /etc/nixos by
accident. Also records the belated task-11.1 checkbox update for the
prior change's already-committed state.
|
|
|
Adds a flake providing shared modules for NixOS and standalone
home-manager, a copyable NixOS host template, and the OpenSpec
tooling/change scaffolding used to plan this work.
|