-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Aleem Isiaka edited this page Mar 31, 2026
·
5 revisions
A universal dotfile and system configuration manager
Heimdal automatically manages your dotfiles, installs packages, and keeps your development environment in sync across multiple machines.
- Quick Start - Get started in a few minutes
- Installation - Install on your platform
- Package Management - Search and install packages
- Configuration - Configure Heimdal
- Troubleshooting - Common issues and solutions
Heimdal is a cross-platform tool that helps you:
- Manage dotfiles across multiple machines with intelligent symlinking
- Install packages from a unified interface (Homebrew, APT, DNF, Pacman, APK, MAS)
- Keep configurations in sync using Git
- Use multiple profiles for different machines (work, personal, server)
- Store secrets securely using OS-native keychains
- Import from existing tools like GNU Stow, dotbot, chezmoi, yadm, homesick
Packages are defined in heimdal.yaml under each profile's packages: section. Use common: for cross-platform packages, or specify packages per manager (homebrew:, apt:, dnf:, etc.).
- GNU Stow-style fallback when
dotfiles:list is empty - Automatic conflict detection
-
--forceand--backupoptions - Rollback support
- Multiple profiles (work, personal, server)
- Profile inheritance via
extends: - Packages/dotfiles/templates/ignore are unioned; hooks are replaced
- Easy switching with
heimdal profile switch
-
{{ variable }}substitution syntax - Undefined variables are preserved (not errors)
- System variables:
os,hostname,user,home,env.VAR,secrets.NAME - Per-profile
vars:in the templates list
- OS-native keychain via
keyring(macOS Keychain, Linux Secret Service) - Secrets never stored in Git
- Names-only manifest at
<dotfiles_path>/.heimdal/secrets_manifest.json - Available in templates as
{{ secrets.NAME }}
-
heimdal syncpulls from remote and applies config -
heimdal commitstages and commits with optional push -
heimdal autosyncfor background automation - All Git operations shell out to the
gitbinary
macOS (Homebrew)
brew install limistah/tap/heimdalAny Platform (Cargo)
cargo install heimdalheimdal wizardThe wizard offers three flows:
- Fresh setup — scan your system and generate a config
- Import existing — migrate from Stow, dotbot, chezmoi, yadm, or homesick
- Clone existing repo — set up Heimdal on a new machine from your existing dotfiles repo
heimdal applyThis installs packages, creates symlinks, and renders templates.
- Quick Start - Get up and running
- Installation - Platform-specific install guides
- Package Management - Search and install packages
- Dotfile Management - Manage your dotfiles
- Profile System - Multiple machine profiles
- Configuration - Configuration reference
- Template System - Use variables in configs
- Secret Management - Secure secret storage
- Git Sync - Keep configs in sync
- Commands Overview - All CLI commands
- Troubleshooting - Common issues
- FAQ - Frequently asked questions
heimdal packages add neovim --manager homebrewheimdal profile switch work
heimdal applyheimdal syncheimdal secret add API_KEY --value "your-secret-value"Ready to get started? Quick Start Guide
Need help? Troubleshooting