Skip to main content

Dotfile Manager Python package

A dotfile manager to easily reuse configurations between linux and macOS.

Installation

uv tool install dotfile-manager

Or with pip:

pip install dotfile-manager

Usage

  • Make sure your dotfiles are organized as described below.

  • cd into your dotfiles repo.

  • Installing the dotfiles: This will install all the necessary dependencies for your dotfiles.

    dotfile_manager install
    
  • Setting up the dotfiles: This will set up symbolic links for the config files, symlink binaries and create a script to source everything.

    dotfile_manager setup
    

Organize your dotfiles for use with the dotfile manager

A minimal example of how to organize your dotfiles can be seen here, a real-life example here.

The dotfiles are organised by project, where each project has its own top-level folder. A project has to contain a file dotfile_manager.yaml which configures the dotfile manager. It is setup as follows:

install_macos:
  - install_macos.sh

install_ubuntu:
  - install_ubuntu.sh

symlinks:
  zshrc.zsh: ~/.zshrc

bin:
  - do_something.sh

source:
  - aliases.sh
  - helpers.sh

disable: False

The entries of install_macos configure what scripts are used to install this project on macos. install_ubuntu does the same for ubuntu. Multiple scripts can be provided and they are executed in the order as specified in the yaml file.

The entries of symlinks configure where the files will be symlinked to, the key is the path of the file inside the topic folder, the value is the global path where the file will be symlinked to. Use this to setup configuration files that need to be at a specific location (for example .bashrc which has to be in ~/). It is possible to use ~ to specify the path of files that need to go to a user's ``$HOME` folder.

The entries of bin will be symlinked to ${DOTFILES}/generated/bin/. Add the latter to your $PATH to easily execute these binaries from everywhere.

The entries of source will be added to a script in ${DOTFILES}/generated/sources.zsh, such that you only have to source this file instead of sourcing all files individually.

Lastly disable can be used to disable a dotfile project. If this is set to true this project will be skipped during installation and setup.

All these entries are optional. If you don't need them you can simply omit them.

Advanced

To work correctly the dotfile manager needs to know where the repo with all your dotfiles is stored. Thus you need to run the dotfile_manager [install|setup] command from the directory where your dotfiles are stored. If you want to be able to run the dotfile manager from anywhere there are two options:

  • Use a command line argument:
    dotfile_manager -d <path/to/dotfiles/> install
    
  • Use an environment variable:
    export DOTFILES=<path/to/dotfiles>
    dotfile_manager install
    

Metadata

Release files for dotfile-manager 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dotfile-manager 0.5.0
File Size Uploaded
dotfile_manager-0.5.0.tar.gz 8.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dotfile-manager 0.5.0
File Interpreter ABI Platform
dotfile_manager-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.0 kB

Release files / dotfile_manager-0.5.0.tar.gz

Download URL dotfile_manager-0.5.0.tar.gz
Size 8.8 kB
Tags Source
SHA-256 checksum
How to use checksums
bccaae3d9144de3ee616eca38c8d75be46634ee6b46e373845ad8d25dad239de
BLAKE2b-256 checksum
How to use checksums
c947bd70c6aa53c7f3ed9a44b22afd622fee64c83e7517af3f44d85d60011ba6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / dotfile_manager-0.5.0-py3-none-any.whl

Download URL dotfile_manager-0.5.0-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f32090c31e1ebb6805b9d1602ff52adcbdae793e164c2877f6807533e3751a73
BLAKE2b-256 checksum
How to use checksums
31bf743126febb457e5a18aa0a9557a93742d1afa4cce3d0b9484451cc378230
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page