A Python-based tool to manage and sync dotfiles across different devices and operating systems.
- Manage dotfiles across different devices and operating systems
- Automatic path translation between different home directories
- Backup system for safe modifications
- Support for multiple devices with different configurations
- Automatic symlink creation and management
- Create and activate a virtual environment using
uv:
uv venv
source .venv/bin/activate- Install dependencies:
uv syncpython -m src_dotfiles add /path/to/dotfile [--alias custom_name] [--force]Example:
python -m src_dotfiles add ~/.zshrc
python -m src_dotfiles add ~/.config/nvim/init.vim --alias neovim_configDeploy all dotfiles:
python -m src_dotfiles deployDeploy a specific dotfile:
python -m src_dotfiles deploy --alias zshrcRun the test suite with verbose output:
pytest -s -v tests/test_dotfiles.pyBuild the Docker container:
docker compose buildStart a new container:
docker kill work.gpu # Stop any existing container
docker compose up -d # Start in detached mode
docker compose exec work.gpu zsh # Open a shell in the container-
src_dotfiles/: Main package directory__main__.py: CLI entry pointdatabase.py: Core database operationsDotFile.py: Dotfile management logicconfig.py: Configuration handlingmodels.py: Pydantic models for data validation
-
tests/: Test suitetest_dotfiles.py: Main test file
- Backups are automatically created before any modifications
- Device-specific paths are automatically translated
- The metadata file keeps track of all dotfiles and their device-specific configurations