β‘οΈ Simple and fast dotfiles framework β‘οΈ
The path to increasing your productivity on macOS, Linux and WSL
dotly is a dotfiles framework built on top of zim, one of the fastest zsh existing frameworks. It creates an opinionated dotfiles structure to handle all your configs and scripts.
π Installation
Using wget:
bash <(wget -qO- https://raw.githubusercontent.com/CodelyTV/dotly/HEAD/installer)
Or using curl:
bash <(curl -s https://raw.githubusercontent.com/CodelyTV/dotly/HEAD/installer)
π³ Try it in Docker
You can safely install additional software and make any changes to the file system. Once you exit zsh the image is deleted.
Using Alpine:
docker run -e TERM -e COLORTERM -e LC_ALL=C.UTF-8 -w /root -it --rm alpine sh -uec '
apk add curl sudo bash zsh git g++ python3
bash -c "$(curl -fsSL https://raw.githubusercontent.com/CodelyTV/dotly/HEAD/installer)"
zsh'
Or using Ubuntu:
docker run -e TERM -e COLORTERM -w /root -it --rm ubuntu sh -uec '
apt-get update
apt-get install -y curl build-essential sudo
su -c bash -c "$(curl -fsSL https://raw.githubusercontent.com/CodelyTV/dotly/HEAD/installer)"
su -c zsh'
π» Usage
πΆ First steps
Once dotly is installed, the next step is to commit and push your dotfiles. Create a new repository in your GitHub
named dotfiles
and then copy the url. Then go to your dotfiles (cd "$DOTFILES_PATH"
) and execute:
git remote add origin YOUR_DOTFILES_REPO_URL &&
git add -A &&
git commit -m "Initial commit" &&
git push origin main
It's recommended to commit every time you add/modify a config or script.
π The dot
command
dot
is the core command of dotly. If you execute it, you'll see all your scripts.
{βΈ} ~ dot -h
Usage:
dot
dot <context>
dot <context> <script> [<args>...]
dot -h | --help
π΄ Understanding your dotfiles folder structure
βββ π bin # External binaries/symlinks. This folder has preference in your $PATH
βββ π doc # Documentation of your dotfiles
βββ π editors # Settings of your editors (vscode, IDEA, β¦)
βββ π git # git config
βββ π langs # Config for programming languages/libraries
βββ π os # Specific config of your Operative System or apps
βββ π restoration_scripts # This will be execute when you restore your dotfiles in another computer/installation
βββ π scripts # Your custom scripts
βββ π shell # Bash/Zsh/Fish?β¦ configuration files
βββ π symlinks # The config of your symlinks
βοΈ Versioning configs
dotly facilites you to version your apps config files. Once you've found the config to version you should:
- Copy your config file inside your dotfiles so this will be the source of truth.
E.g.
cp ~/Library/Application Support/Code/User/settings.json $DOTFILES_PATH/editors/code/settings.json
- Symlink this file. To do this you should edit your
$DOTFILES_PATH/symlinks/conf.YOUR-OS.yaml
and add it. E.g.~/Library/Application Support/Code/User/settings.json: editors/code/settings.json
π¨ Customization
dotly includes an opinionated, minimal, very fast and powerful theme by default. You can configure it using the
following parameters in your shell/exports.sh
:
CODELY_THEME_MINIMAL=false|true # If true the theme will only show the prompt status
CODELY_THEME_MODE="dark"|"light" # Use dark if you use dark colors, light if light
CODELY_THEME_PROMPT_IN_NEW_LINE=false|true # If true the prompt will be in a newline
CODELY_THEME_PWD_MODE="short"|"full"|"home_relative" # short will show the first letter of each directory, full the full path and home_relative the full path relative to the $HOME dir
CODELY_THEME_STATUS_ICON_KO="βͺ" # The icon to show if the previous command failed. Useful if you're color blind
πΎ Default scripts
βββ π dotfiles
β βββ create # Creates the dotfiles scructure
β βββ import # Import an existing dotfiles
βββ π git
β βββ amend # Amend a commit
β βββ apply-gitignore # Exlude all commited files that are inside the project .gitignore
β βββ changed-files # Show all changed files to main
β βββ commit # Add all files and then commit
β βββ contributors # List contributors with number of commits
β βββ find # Find commits by commit message
β βββ pretty-diff # Show a pretty git diff using fzf (and copy selected path to the clipboard)
β βββ pretty-log # Git log filtering
β βββ rm-file-history # Remove completely a file from the repo with its history
βββ π mac
β βββ brew # Some brew utils
β βββ defaults # Some defaults utils to view your changes, import and export
βββ π package
β βββ add # Install a package
β βββ dump # Dump all installed packages
β βββ import # Import previously dumped packages
β βββ update_all # Update all packages
βββ π self # Instead of `dot self` you can use direclty `dotly` in your terminal
β βββ debug # Debug dotly
β βββ install # Install dotly and setup dotfiles
β βββ lint # Lint all dotly related bash files
β βββ static_analysis # Static analysis of all dotly related bash files
β βββ update # Update dotly to the latest stable release
βββ π shell
β βββ zsh # ZSH helpers
βββ π symlinks
βββ apply # Apply all symlinks
π½ Alias
You can see the default aliases here. The most commonly used are:
..
: cd one directory upla
: ls all files/dirs with colorsup
: Update all your package managers packages
βοΈ Troubleshooting
You can execute dot self debug
in parallel with another command to see the errors output.
π€ Contributing
- If you want to implement a new feature/script, please, open an issue first
π Thanks
A lot of dotly concepts has been inspired by denisidoro/dotfiles
βοΈ LICENSE
MIT Β© CodelyTV