dfm offers a straightforward way to manage dotfiles without the need for a Python runtime or git submodules. Designed to simplify the process, it supports easy installation and commands for applying, listing, and verifying profiles, making it a clean option for developers looking to maintain their environment seamlessly.
dfm is a standalone, single-binary dotfiles manager designed to streamline the management of configuration files across different systems. The profile format used in dfm takes inspiration from dotbot, yet dfm operates independently without relying on a Python runtime or git submodules.
Key Features
- Simplicity: Provides a straightforward command-line interface for easy usage without complex dependencies.
- Quick Start: Easily apply profile configurations with a simple command:
dfm apply <profile>... - Flexible Profile Management: Profiles are loaded from the
./profiles/<name>.conf.yamldirectory relative to the base working directory. - Command Overview:
Command Purpose dfm apply <profile>...Apply one or more profiles sequentially dfm diff <profile>Display planned changes without modifying the system dfm doctorCheck for unresolved symlinks in the installation dfm statusList the most recently applied profiles along with timestamps dfm listShow all profiles available in the ./profiles/directory
Global flags such as -C <dir>, -c <path>, --dry-run, and --dbg are available for enhanced control during execution.
Supported Directives
dfm supports several directives, which include:
defaults: Set default configurations.link: Create symlinks for specified files.shell: Execute shell commands with flexibility in defining command scripts.clean: Remove specified symlinks or files.create: Generate necessary files or directories.
Additionally, the when: condition can be utilized to gate directives based on the operating system, architecture, or hostname. In instances where the target is not a symlink, dfm will back it up to ~/.dotfiles-backup/<timestamp>/ instead of failing.
For detailed documentation, refer to the full YAML specification.
Non-Goals
dfm does not aim to provide templating, secret management, package installation, plugins, or profile inheritance, which keeps it focused and efficient for managing dotfiles.
No comments yet.
Sign in to be the first to comment.