Skip to content

Latest commit

 

History

287 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Home, sweet home

       ██              ██
  ▄███▄██   ▄████▄   ███████   ▄▄█████▄
 ██▀  ▀██  ██▀  ▀██    ██      ██▄▄▄▄ ▀
 ██    ██  ██    ██    ██       ▀▀▀▀██▄
 ▀██▄▄███  ▀██▄▄██▀    ██▄▄▄   █▄▄▄▄▄██
   ▀▀▀ ▀▀    ▀▀▀▀       ▀▀▀▀    ▀▀▀▀▀▀

Cross-platform dotfiles for five machine profiles: lenovo, cloudtop, macbook, hp, and hetzner (the aslan server hostname). Managed with chezmoi, secrets age-encrypted, single branch.

Stack: Qtile · Zsh · Neovim (LazyVim) · Alacritty · Catppuccin Mocha


Install

# 1. Install dependencies
pacman -S chezmoi age

# 2. Place age key (from backup / password manager)
mkdir -p ~/.config/chezmoi
cp /path/to/key.txt ~/.config/chezmoi/key.txt

# 3. Initialize — prompts for machine profile and secrets on first run
chezmoi init --source /path/to/this/repo

# 4. Preview, then apply
chezmoi-dry-apply            # preview both user dotfiles and system changes
chezmoi apply                # apply dotfiles and deploy system files

System files under system/ (e.g. /etc/zsh/zshenv) are deployed automatically via a post-apply script with sudo. The system/arch/ subtree is applied only on Arch Linux systems, and the system/hetzner/ subtree is applied only when the machine profile is aslan/hetzner; it contains the server's Nginx, monitoring, security, and service overrides.

To preview pending changes safely without mutating /etc, modifying files, or reloading services, run:

chezmoi-dry-apply

This single command previews both normal chezmoi user dotfile changes (chezmoi apply --dry-run --verbose) and system configuration changes.

Warning: Running chezmoi apply --dry-run or chezmoi diff alone skips post-apply lifecycle hooks (run_after_system-deploy.sh.tmpl). Running chezmoi apply --dry-run will therefore never preview system files under /etc or /usr. Always use chezmoi-dry-apply to safely inspect both user dotfiles and system changes together.

To preview system configuration changes alone, run:

system-deploy.sh --dry-run   # or: system-deploy.sh -n

Key dry-run safety features:

  • Worktree Source Detection: When invoked from inside a git feature worktree, both chezmoi-dry-apply and system-deploy.sh automatically detect and use that worktree's source templates instead of falling back to the main configured chezmoi source path.
  • Fail-Closed Protection: If --dry-run is requested but the target template lacks explicit dry-run capability headers (SYSTEM_DEPLOY_CAPABILITIES), execution aborts immediately with an error to prevent accidental live mutation.
  • Guarded Destructive Cleanup: Decommissioned configurations and service removals are reported as [dry-run] would remove ... without deleting any files, and service reloads (such as Nginx) are skipped. Setting DRY_RUN=1 in the environment also activates dry-run mode.

The former archnet-cfg repository remains useful for destructive Hetzner installation, package bootstrap, and service-data migration. It must not also deploy files managed by this repository.


Docs


Machine Profiles

Profile Hostname Platform / session Battery Cursor
lenovo lenovo Linux / Qtile Wayland yes 24px
cloudtop cloudtop Linux / Qtile X11 HiDPI no 48px
macbook prompted macOS / native desktop yes n/a
hp hp Linux / Qtile X11 yes 48px
hetzner aslan Linux / headless server no n/a

The profiles are auto-selected for the lenovo, cloudtop, hp, and aslan hostnames. macbook and unknown hosts use the profile prompt during chezmoi init. See Profiles for all capability flags and machine-specific behavior.


Code Quality

Pre-commit hooks run on every commit:

Hook Covers
black + isort Python (bin/, qtile/, qtile-wl/)
ruff Python linting + auto-fix
stylua Lua (nvim/)
prettier JSON, YAML, CSS, Markdown
shellcheck + shfmt Shell scripts (bin/)
gitleaks Secret detection
pre-commit install        # install hooks
pre-commit run --all-files  # run manually

About

there's no place like ~

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages