Skip to main content
Check
Git Deps Syncer

Manage a local development environment in style

Simplify the complex dotfiles repository wiring by separating the files from the management layer, use a dedicatd CLI utility to control all aspects of the dotfiles repository with ease.

brew install ZachiNachshon/tap/dotfiles-cli
Read the docs

Currently v0.6.0 · Download · Docs · All Releases

Using a dotfiles repository has never been so easy

Interact with the dotfiles repository using a well defined CLI utility rather then executing random scripts.


Read installation docs

Install using several options

Install dotfiles-cli via Homebrew, pre-built release or from sources. Package managed installs contains only the bare minimum without documentation / site / dev-scripts etc...

For additional information check the download section.

Linking a dotfiles repository

Linking a fresh remote dotfiles repository is as simple as running the following command:

dotfiles link https://github.com/ZachiNachshon/dotfiles-example.git

For additional information check the commands section.

Categorize dotfiles domains

dotfiles-cli relies on a simple and opinionated dotfiles repository structure which allows it to control and manage domains by category i.e. Homebrew installs, $HOME symlinks, OS settings, shell plugins etc...

Learn more about the repository structure options

Declare which Homebrew components to install by type

The brew folder holds the Homebrew components declarations, items on each file should be separated by a new line.

.
├── ...
├── brew
│   ├── casks.txt
│   ├── drivers.txt
│   ├── packages.txt
│   ├── services.txt
│   └── taps.txt
└── ...


Update Homebrew components by running:

dotfiles brew <packages/casks/drivers/services/all>

Sync or unsync symlinks from the dotfiles repository

The dotfiles folder contains files to symlink from the repository to the $HOME folder, an unsync command is available to remove them when necessary.

.
├── ...
├── dotfiles               
│   ├── home
│   │   ├── .gitconfig       
│   │   ├── .vimrc
│   │   └── ...
│   └── shell
│       ├── .zshrc
│       └── ...
└── ...

Symlink files to $HOME folder by running:

dotfiles sync <home/shell/all>

Control what to source on an active shell session

The dotfiles folder contains files to source on every new shell session and in case of changes a reload command is available as well.

.
├── ...
├── dotfiles               
│   ├── custom
│   │   ├── .my-company  
│   │   └── ...
│   ├── session
│   │   ├── .aliases
│   │   ├── .exports
│   │   └── ...
│   └── transient
│       └── .secrets
└── ...

Reload changes to the active shell session by running (order: transient-session-custom):

dotfiles reload

Update OS settings and preferences

The os folder contains scripts that configure the presonal settings and preferences for mac / linux operating systems.

.
├── ...
├── os
│   ├── linux
│   │   ├── key_bindings.sh
│   │   └── ...
│   └── mac
│       ├── finder_settings.sh
│       └── ...
└── ...



Apply personal settings and preferences on an operating system of choice by running:

dotfiles os <linux/mac>

Install plugins by shell type

The plugins folder contains scripts to run on a specific shell type.

.
├── ...
├── plugins
│   ├── zsh
│   │   ├── oh_my_zsh.sh  
│   │   └── ...
│   └── bash
│       ├── dummy.sh
│       └── ...
└── ...

Run plugin scripts on a specific shell type by running:

dotfiles plugins <bash/zsh>

Utilize dotfiles-cli useful features

Explore dotfiles-cli useful features that simpify the interaction with the dotfiles repository.

Learn more about available features

Change directory to the dotfiles repository

Use the dedicated command to change directory to the linked dotfiles repository.

dotfiles repo

Print the supported dotfiles structure

Get a reminder on the expected dotfiles repository structure.

dotfiles structure

Experiment with the CLI

Use the --dry-run flag on every command to have a sneak peek on the outcome without any file system changes.

dotfiles sync home --dry-run

Explore usages

Go over a list of dotfiles-cli supported repositories.

Click to head over to the list