This repository contains my personal configurations for various tools and applications I use daily.
- Single command setup: Works on fresh installs and subsequent updates.
- Bash-powered automation: No dependencies needed, even on the first run.
- Idempotent execution: The only side effect is installing new updates.
- Centralized configuration: Creates symbolic links targeting the repository.
- Automatic cleanup: Removes broken symlinks and orphaned directories.
- Manual intervention: Ephemeral or sensitive files are not touched.
- XDG compliant: Organized and predictable file locations, where possible.
- GOPATH: Go convention for all the projects. Improves discoverability.
- Homebrew Bundle: System-wide package management.
- asdf: Multiple tool and runtime version management.
- fish: The default shell used for everyday tasks, outside the setup process.
- Starship: Informative shell prompt. No icons for better readability.
- tmux: Terminal multiplexing, beyond the tabs and panes.
- Alacritty: Lightweight terminal emulator.
- Natural key bindings in terminal: Smooth motions, like the native fields.
- Automatic terminal colors: Dark or light, follows the system setting.
- Neovim: Fast and extensible code editor with Tree-sitter and LSP support.
- Visual Studio Code: Occasionally used for some tasks.
- Zen Browser: Distraction-free web, auto-hiding sidebar, vertical tabs.
- JetBrains Mono: Font for coding. No ligatures for better readability.
- Gruvbox-inspired: The theme for welcoming the sunrise with less eye pain.
- yabai: Window management. Automatic fullscreening, resizing, and more.
- skhd: Scriptable hotkey management.
- JankyBorders: Custom window borders. For boosting the botanic feel.
- SketchyBar: Customizable status bar. Mostly hidden, bound to a hotkey.
- AltTab: Application switcher, window listing, vertical layout.
- Background photo from Unsplash: Both elegant and wild, nature's own art.
Additional screenshots are in the screenshots
directory.
The configuration files are organized by tool names and are located in the
config
directory.
The setup process is automated with the help of Bash scripts. These scripts
are located in the scripts
directory, and they are organized by
corresponding tools' names.
For reducing the complexity and increasing the maintainability, the scripts are detected automatically and executed in a structured manner.
The scripts are divided into four categories, each of which is optional, and must be executed in the respective order:
prepare.sh
: Prepares the environment for the tool.pre-configure.sh
: Executes preliminary configuration steps.configure.sh
: Applies the main configurations.post-configure.sh
: Finalizes the setup.
The automatic detection and execution of the scripts are done with the following logic:
-
Prioritized Execution:
- For each number between 0 and 100, check if a corresponding subdirectory exists within each tool's directory.
- If found, execute the scripts inside that directory.
- If no matching subdirectory exists, skip to the next tool.
-
General Execution:
- After the prioritized pass, execute scripts directly present in each tool's directory.
The setup can be run with the following command, from the root directory of the repository:
bash entrypoint.sh
After setup, a shortcut can be used as well to update tools or apply new configurations (create symlinks), by running the following command, from any working directory:
dotfiles_reload
Running the setup for specific tools is also possible. This can be done by providing the tool names as arguments to the script:
bash entrypoint.sh fish tmux
Similarly, the shortcut also accepts tool names as arguments:
dotfiles_reload lsp nvim
After the setup, several commands are available for the user. Some of the most relevant ones are:
brew_bundle
: Install packages listed in theBrewfile
.brew_update
: Update all installed packages.dotfiles_edit
: Open the dotfiles repository in the code editor.dotfiles_reload
: Reload configurations, update tools, etc.setenv_prefers_color_scheme
: Set terminal color scheme to dark or light.
After the setup, several environment variables are set for the user. Some of the most relevant ones are:
DOTFILES_DIR
: Path to the dotfiles repository.PREFERS_COLOR_SCHEME
: Preferred color scheme (dark or light).
- Alacritty integration with Tmux
- ANSI escape code - Wikipedia
- Automatic dark mode for terminal applications
- Box-drawing characters - Wikipedia
The files in the third_party
directory are licensed under
their respective licenses.
The rest of the repository is licensed under the
MIT License,
see the LICENSE
file for more information.