diff --git a/.claude/settings.local.json b/.claude/settings.local.json deleted file mode 100644 index 24a0f9e..0000000 --- a/.claude/settings.local.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "permissions": { - "allow": [ - "Bash(xargs ls -la)", - "Bash(command -v pacman)", - "Bash(command -v paclist)", - "Bash(command -v pacinfo)", - "Bash(git -C /home/fscotto/AnsiblePlaybook add ansible/inventory/group_vars/arch.yml ansible/roles/services_systemd/tasks/main.yml)", - "Bash(git -C /home/fscotto/AnsiblePlaybook commit -m ' *)", - "Bash(git -C /home/fscotto/AnsiblePlaybook diff --stat)", - "Bash(git -C /home/fscotto/AnsiblePlaybook status --short)", - "Bash(git -C /home/fscotto/AnsiblePlaybook log --oneline --all -- ansible/inventory/host_vars/nymph.yml ansible/roles/profile_desktop_host/tasks/nymph.yml 'dotfiles/nymph/*')", - "Bash(git *)", - "Bash(wlogout --help)", - "Bash(xbps-query *)", - "Bash(xbps-install --dry-run gtklock)" - ] - } -} diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 3e92daf..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,70 +0,0 @@ -# CLAUDE.md - -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. - -## What this repo is - -Ansible-driven personal infrastructure as code for Fedora desktops (`ikaros`, `nymph`), WSL development (`deadalus-wsl`), and an Ubuntu server (`prometheus`). See `AGENTS.md` for topology and `README.md` for full profile descriptions. - -## Validation commands - -```bash -# Minimum before any change -ansible-playbook ansible/site.yml --syntax-check - -# Dry-run per host -ansible-playbook ansible/site.yml --limit ikaros --check --diff -ansible-playbook ansible/site.yml --limit nymph --check --diff -ansible-playbook ansible/site.yml --limit deadalus-wsl --check --diff -ansible-playbook ansible/site.yml --limit prometheus --check --diff - -# Linting -ansible-lint ansible/site.yml -ansible-lint ansible/roles -yamllint ansible/ - -# Tag-scoped dry-run -ansible-playbook ansible/site.yml --limit ikaros --tags --check --diff - -# Shell scripts -sh -n scripts/bootstrap_mail.sh && shellcheck scripts/bootstrap_mail.sh -``` - -## Architecture - -Configuration is composed in layers: `all → OS → profile → host`. All hosts use `ansible_connection: local`. - -`ansible/site.yml` is the sole orchestration entry point — keep it thin. Implementation belongs in roles under `ansible/roles/`. - -Variable layering: -- `ansible/inventory/group_vars/` — OS and profile defaults -- `ansible/inventory/host_vars/` — host-specific overrides (never put host overrides in group_vars) - -Dotfiles under `dotfiles/` mirror the same layer split: `common/`, `desktop/`, `server/`, `workstation/`, then per-host directories (`ikaros/`, `nymph/`). - -## Key conventions - -- FQCN for all Ansible modules. -- Prefer declarative modules over `command`/`shell`; when shell is unavoidable, make idempotency explicit. -- YAML: start with `---`, 2-space indent, file modes quoted as `"0644"`, booleans as booleans. -- `no_log: true` on any task that handles secrets. -- Do not restart `emptty` in playbook tasks on active desktop hosts — do it manually via SSH/TTY. - -## Void desktop package buckets (keep disjoint) - -- `void_packages_base` — system runtime (init, kernel, audio core, networking, firewall, hw daemons) -- `desktop_common_packages` — WM-agnostic GUI infra (GTK theme, polkit, keyring, portals, flatpak, printing) -- `desktop_sway_packages` — Sway-specific binaries -- `profile_packages` — cross-distro; do not move desktop-only Void entries into it - -Dotfile var split follows the same logic: `desktop_common_dotfiles` (WM-agnostic), `desktop_void_dotfiles` (Void runtime — turnstile services, bash fragments). - -## Secrets - -- `secrets/vault.yml` and `secrets/vault.local.yml` are loaded conditionally if present. -- `secrets/.vault_pass.gpg` is used automatically if present; falls back to `secrets/.vault_pass`. -- Never print vault values; always use `no_log: true` where secrets flow through tasks. - -## AI agent dotfiles - -Shared agent instructions live in `dotfiles/common/.config/ai/`. Agent-specific entrypoints reference that path rather than duplicating content. Shared npm packages are in `ai_agents_npm_packages` in `ansible/inventory/group_vars/all.yml`. diff --git a/dotfiles/desktop/.emacs.d/lisp/core/ui.el b/dotfiles/desktop/.emacs.d/lisp/core/ui.el index 8b67411..183ef83 100644 --- a/dotfiles/desktop/.emacs.d/lisp/core/ui.el +++ b/dotfiles/desktop/.emacs.d/lisp/core/ui.el @@ -7,8 +7,15 @@ :config (load-theme 'nordic-night t)) -(set-frame-font "UbuntuSansMono Nerd Font 14" nil t) -(add-to-list 'default-frame-alist '(font . "UbuntuSansMono Nerd Font-14")) +(defconst fscotto/default-font + (pcase system-type + ('gnu/linux "UbuntuSansMono Nerd Font 14") + ('windows-nt "JetBrainsMono NF 12") + (_ "monospace 14")) + "Default font for graphical Emacs frames on the current platform.") + +(set-frame-font fscotto/default-font nil t) +(add-to-list 'default-frame-alist `(font . ,fscotto/default-font)) (add-to-list 'default-frame-alist '(fullscreen . maximized)) (tool-bar-mode -1)