Awesome
<div align="center"> <a href="https://codely.tv"> <img src="https://user-images.githubusercontent.com/1331435/141520189-90349bbd-3e0f-4200-8b76-f4297be11898.png" /> </a> </div> <div align="center"> <h1>ā”ļø Simple and fast dotfiles framework ā”ļø</h1> <strong>The path to increasing your productivity on macOS, Linux and WSL</strong> </div> <br> <p align="center"> <a href="https://github.com/CodelyTV"><img src="https://img.shields.io/badge/CodelyTV-OS-green.svg?style=flat-square" alt="codely.tv"/></a> <a href="https://pro.codely.tv"><img src="https://img.shields.io/badge/CodelyTV-PRO-black.svg?style=flat-square" alt="CodelyTV Courses"/></a> <a href="https://github.com/CodelyTV/dotly/actions"><img src="https://github.com/CodelyTV/dotly/workflows/CI/badge.svg" alt="CI pipeline status"/></a> </p>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.
<details> <summary>Using Alpine:</summary>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'
</details>
<details>
<summary>Or using Ubuntu:</summary>
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'
</details>
Restore your Dotfiles manually
- Install git
- Clone your dotfiles repository
git clone [your repository of dotfiles] $HOME/.dotfiles
- Go to your dotfiles folder
cd $HOME/.dotfiles
- Install git submodules
git submodule update --init --recursive modules/dotly
- Install your dotfiles
DOTFILES_PATH="$HOME/.dotfiles" DOTLY_PATH="$DOTFILES_PATH/modules/dotly" "$DOTLY_PATH/bin/dot" self install
- Restart your terminal
- Import your packages
dot package import
Restore your Dotfiles with script
Using wget
bash <(wget -qO- https://raw.githubusercontent.com/CodelyTV/dotly/HEAD/restorer)
Using curl
bash <(curl -s https://raw.githubusercontent.com/CodelyTV/dotly/HEAD/restorer)
š You need to know your GitHub username, repository and install ssh key if your repository is private.
It also supports other git repos, but you need to know your git repository url.
š» 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 allows 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
š½ļø Feature showcase (Spanish)
For an in-depth look at the features offered by dotly, you can take a look at this video:
āļø 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