A dotfile manager that stores configurations in Git and deploys different versions across multiple hosts using profiles.
Dotdrop is a dotfile manager that stores configuration files in a Git repository and deploys them across multiple machines using customizable profiles. It solves the problem of maintaining different versions of the same dotfile for different hosts, such as personal laptops and work desktops, by allowing templating, variable substitution, and profile-specific configurations.
Developers and system administrators who work across multiple machines and need to keep their shell, editor, and application configurations synchronized and host-specific.
Developers choose Dotdrop for its powerful profile system and templating engine, which provide fine-grained control over dotfile deployment without duplicating repositories. Its ability to handle sensitive data and integrate actions makes it a comprehensive solution for dotfile management.
Save your dotfiles once, deploy them everywhere
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Dotdrop allows defining multiple profiles (e.g., home vs. office) with different dotfile sets and variables, enabling host-specific deployments without duplication, as shown in the config.yaml examples.
Supports dynamic content generation with conditional logic and variables, such as adapting Polybar fonts or WM configurations per profile, making dotfiles highly adaptable.
Includes actions for post-deployment scripts, transformations for encryption/compression, and dry-run comparisons, offering a one-stop solution for advanced dotfile management.
Stores all dotfiles in a Git repository for version control, backup, and collaboration, seamlessly fitting into developer workflows as demonstrated in the setup instructions.
Requires manual setup of YAML config files and profile definitions, which can be cumbersome compared to simpler symlink-based tools like GNU Stow.
Relies on Python and its packages for installation and operation, potentially limiting use in environments without Python or causing conflicts with existing setups.
Mastering Jinja2 templating syntax and the profile-variable system adds complexity, especially for users new to templating or those seeking plug-and-play solutions.