mntn is built to keep your dotfiles organized, safe, and consistent across machines using profiles.
A profile is a named set of configuration choices that represents a context, like work, personal, or minimal. With profiles, you can keep multiple setups and switch between them so the right settings are active for the situation.
At a high level, mntn helps you manage these configurations, keep them in sync, and recover them when needed.
mntn backup
mntn restore
mntn validateSwitch profiles:
mntn profile create work --description "Work setup"
mntn use workbackup- copy tracked configs into~/.mntn/backup/restore- restore configs from backupvalidate- check registry files and config driftsecret- store (secret set) or remove (secret delete) the encryption passphrase in the OS keychain sobackup/restore/validatecan reuse it without promptingprofile- list/create/delete profilesuse- switch active profilegit- run any git command inside~/.mntnsync- rungit add ., commit with default messagechore: sync mntn (YYYY-MM-DD HH:MM:SS UTC)(use--messageto override), thengit pushinside~/.mntn
Encrypted configs: run mntn secret set after you know your passphrase to persist it. Use --ask-password on backup, restore, or validate if you want to type it for that run only.
~/.mntn/
├── backup/
│ ├── common/
│ │ └── encrypted/ # optional: encrypted bundle + legacy per-file .age
│ └── profiles/
│ └── <name>/
│ └── encrypted/
├── profiles.json
├── .active-profile
├── config.registry.json
├── package.registry.json
└── encrypted.registry.json
Registry notes:
config.registry.jsontracks regular dotfiles and their targets.package.registry.jsontracks package managers and how to export package lists.encrypted.registry.jsontracks sensitive files that are stored encrypted.
GNU General Public License v3.0 or later (GPL-3.0-or-later), published by the Free Software Foundation.
