mac OS, Arch Linux, and Debian/Ubuntu
Alternatives To Dotfiles
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
5 days ago1February 27, 201851gpl-3.0Python
Yet Another Dotfiles Manager
100 Days Of Code Frontend2,338
2 years ago4mit
Curriculum for learning front-end development during #100DaysOfCode.
5 months ago1February 27, 201867gpl-2.0Shell
config manager based on Git
4 days ago83June 26, 20222gpl-3.0Python
Save your dotfiles once, deploy them everywhere
Salt Bootstrap916
a month ago42otherShell
Generic Salt Bootstrap Script
a year ago17apache-2.0Shell
A bootstrap script for new Mac
10 hours ago20Lua
mac OS, Arch Linux, and Debian/Ubuntu
Scipio Erp290
4 months ago18apache-2.0Java
Your Online Business Kit - Build your own business applications. Create your own online shop. Customize to your own needs.
Gitit Bigger270
6 years ago6JavaScript
Gitit Bigger: 最好的个人、团队Wiki/文档方案(Git、Markdown、Bootstrap、Ace、Docker)
8 months ago5mitJavaScript
A git server side platform based on ASP.NET MVC. 一个基于ASP.NET MVC的git服务端。QQ群:200319579。
Alternatives To Dotfiles
Select To Compare

Alternative Project Comparisons

My dotfiles. davidosomething/dotfiles

terminal screenshot

Screenshot of my ZSH prompt

My /uses post my be of interest to you!


See macOS specific notes in mac/


git clone ~/.dotfiles

Then, run the bootstrap/symlink script for linux or bootstrap/mac for macOS.

After symlinking, bootstrap/cleanup can detect and move pre-existing dotfiles that conflict with these (mac does this).

Dev environment setup

After symlinking and restarting shell, aliases will be available. The sshkeygen alias will help in generating a new SSH key.


For user-land ruby, install ruby-build, its dependencies, and asdf and asdf-ruby. Use asdf to install ruby.


Use asdf OR fnm using bootstrap/fnm if speed is a concern.


For user-land python, use pyenv-installer to install pyenv and pyenv-virtualenv.

Create virtualenvs for Neovim using bootstrap/pyenv

Provisioning scripts

These will assist in installing packages and dotfiles. Best to have the environment set up first.

  • bootstrap/cleanup moves some dotfiles into their XDG Base Directory supported directories and deletes unnecessary things (with confirmation).
  • bootstrap/mac provision macOS. Runs other bootstrappers.
  • bootstrap/pipx installs python CLI tools using pipx
  • bootstrap/pyenv creates a Neovim pyenv and installs pynvim
  • bootstrap/symlink symlinks rc files for bash, ZSH, ack, (Neo)vim, etc.


u is an alias to dot. Use u without arguments for usage.


  • bin/
    • There's a readme in bin/ describing each script/binary. This directory is in the $PATH.
  • git/
    • The comment character is # instead of ; so I can use Markdown in my commit messages without trimming the headers as comments. This is also reflected in a custom Vim highlighting syntax in vim/after/syntax/gitcommit.vim.
  • local/
    • Unversioned folder, put zshrc, bashrc, npmrc, and gitconfig here and they will be automatically sourced, LAST, by the default scripts. No dots on the filenames.
  • nvim/
  • python/
  • vim/
    • Not really maintained, I use neovim on all my systems now
    • See vim/ for more information.

rc script source order

If you have node installed, the dkosourced command will show you (not exhaustively) the order scripts get sourced. Without node echo $DKO_SOURCE works.

For X apps (no terminal) the value may be:


Shell script code style

  • Script architecture
    • Use the #!/usr/bin/env bash shebang and write with bash compatibility
    • Create a private main function with the same name as the shell script. E.g. for a script called fun, there should be a __fun() that gets called with the original arguments __fun [email protected]
    • Two space indents
    • Prefer . over source
  • Function names
    • For private functions in a script, use two underscores __private_func() These function names are safe to reuse after running the script once. When namespaced, they are in the form of __dko_function_name().
  • Variable interpolation
    • Always use curly braces around the variable name when interpolating in double quotes.
  • Variable names
    • Stick to nouns, lower camel case
  • Variable scope
    • Use local and readonly variables as much as possible over global/shell-scoped variables.
  • Comparison
    • Not strict on POSIX, but portability
    • Do NOT use BASH arrays, use ZSH or Python if need something complicated
    • Use BASH == for string comparison
    • Use BASH (( A == 2 )) for integer comparison (note not $A, $ not needed)


Logo from jglovier/dotfiles-logo

Popular Git Projects
Popular Bootstrap Projects
Popular Version Control Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.