Personal dotfiles managed with chezmoi for macOS and Linux systems.
Do not use this repository directly. This repository contains personal configurations that require:
- rbw for secret management
- age encryption for sensitive files
- Personal data and credentials
However, ephemeral systems (non-Fedora Linux distributions like RHEL/CentOS) can use this repository with limited functionality, as sensitive configurations are automatically excluded.
- Cross-platform support (macOS and Linux)
- Platform-specific configurations with automatic detection
- Age encryption for sensitive files
- Template-based configuration with personal data and Nord theme colors
- Modular shell configuration (zsh and nushell)
- Automated setup scripts with enhanced terminal output (using gum)
- Centralized visual configuration (fonts, colors, themes)
- chezmoi (version 2.63.1 or compatible)
- age (for encryption)
- rbw (for secret management)
- gum (for enhanced terminal output)
- jq (for JSON processing)
- chezmoi
- gum (required for bootstrap and setup scripts)
-
Install dependencies:
# macOS brew install age chezmoi gum jq rbw # Fedora sudo dnf install -y age chezmoi gum jq rbw
-
Initialize chezmoi with this repository:
chezmoi init PaulYuuu
-
Review changes before applying:
chezmoi diff
-
Apply dotfiles:
chezmoi apply
For ephemeral systems, sensitive configurations are automatically excluded:
-
Install gum (required for setup scripts):
# CentOS Stream / RHEL sudo dnf config-manager --set-enabled crb sudo dnf install -y epel-release sudo dnf install -y chezmoi gum -
Initialize and apply:
chezmoi init PaulYuuu chezmoi apply
.chezmoiroot- Defines source root ashome/.chezmoi.toml.tmpl- Core configuration with platform detection.chezmoidata/- Template variables (user, git, terminal, visual settings).chezmoiscripts/- Setup scripts using gum for enhanced output.chezmoiexternals/- External resource management.chezmoiignore.tmpl- Platform-specific ignore rules.chezmoiremove- Files to remove from target directory
The repository automatically detects the system type:
- Personal systems: macOS or Fedora Linux with username "yvanyo"
- Ephemeral systems: Non-Fedora Linux distributions
Ephemeral systems automatically exclude:
- Encrypted files
- Personal configurations
- Cloud service integrations
- Most application configs
This repository uses Just for common tasks:
just # List all available commands just check # Run all pre-commit checks just test # Build and test in container just diff # Show pending changes just apply # Apply configurationSee all commands with just --list.
This repository uses pre-commit hooks for code quality:
pre-commit run --all-files # Or use: just checkHooks include:
- TOML: Format and lint with taplo
- YAML: Deep validation with yamllint
- Shell: Format with shfmt, check with shellcheck
- GitHub Actions: Validate with actionlint
- EditorConfig: Enforce consistent style
- Security: Secret detection with gitleaks
- Spelling: Typo detection
- Commits: Conventional commit linting
Automated testing runs on:
- Pull requests to main branch
- Weekly schedule (Sundays)
- Manual workflow dispatch
Tests validate:
- Multi-architecture compatibility (amd64/arm64)
- Ephemeral system detection and configuration
- External binary downloads
- Script execution in CentOS Stream 10 container
Dependencies are automatically updated:
- Pre-commit hooks: Monthly via pre-commit.ci
- GitHub Actions: Monthly via Dependabot
- Bot PRs: Auto-merged after tests pass
-
Edit files in the chezmoi source directory:
chezmoi edit ~/.config/app/config # Or: just edit ~/.config/app/config
-
Review changes:
just diff # Or: chezmoi diff -
Apply changes:
just apply # Or: chezmoi apply -
Test locally (optional):
just test # Run in Podman container
- Shell: zsh, nushell
- Terminals: ghostty, kitty, rio (all using Nord theme)
- Editors: helix, neovim, vscode, zed
- CLI tools: atuin, bat, eza, git, gum, ripgrep, starship
- Development: claude, direnv, npm, mise
- Desktop (Linux): niri, fcitx5, sddm
- System: SSH, homebrew (macOS)