# Dotfiles My personal collection of configuration files (dotfiles) for a consistent and productive development environment on Debian-based Linux systems. This setup is managed using `stow` for symlinking and includes configurations for Zsh, Tmux, Neovim, and more. ## Prerequisites Before you begin, ensure you have the following installed: * `git`: For cloning the repository. * `curl`: Used by the installation script to fetch dependencies. * A Debian-based Linux distribution (e.g., Ubuntu, Debian) is assumed for the installation script (`apt`). ## Installation The installation is automated via a single script. 1. **Clone the repository:** ```bash git clone --recursive https://git.simonis.lol/csimonis/dotfiles.git ~/.dotfiles ``` *Note: Using `--recursive` is important as it will clone all the necessary git submodules for plugins (like for zsh and tmux).* 2. **Run the installation script:** ```bash cd ~/.dotfiles ./scripts/install ``` The `install` script will: - Update system packages. - Install essential command-line tools like `zsh`, `stow`, `tmux`, `eza`, `bat`, and `btop`. - Install [Oh My Zsh](https://ohmyzsh.com/). - Initialize the git submodules. - Create a local `.zshenv` file for environment variables. - Set up the git configuration. - Use `stow` to create symlinks for all the configurations in your home directory. ## What's Included? This repository configures the following tools: - **Shell:** Zsh, configured via `.zshrc`, with [Oh My Zsh](https://ohmyzsh.com/). - **Prompt:** [Powerlevel10k](https://github.com/romkatv/powerlevel10k) theme. - **Plugins:** `zsh-autosuggestions`, `zsh-syntax-highlighting`. - **Terminal Multiplexer:** [Tmux](https://github.com/tmux/tmux/wiki), with plugins managed by [TPM](https://github.com/tmux-plugins/tpm). - **Editor:** [Neovim](https://neovim.io/) with a [LazyVim](https://www.lazyvim.org/) based setup. Plugins are managed via `lazy.nvim`. - **Git:** Global git configuration and ignores. - **Other Tools:** Configuration for `atuin`, `btop`, `neofetch`, and more. ## Structure - **`stow`:** The configurations are structured to be symlinked by [GNU Stow](https://www.gnu.org/software/stow/). The `stow .` command in the `setup` script handles the symlinking of all packages in the root of this repository. - **Submodules:** Git submodules are used to manage third-party plugins for tools like Zsh and Tmux to keep them self-contained and version-controlled. - **`scripts/`:** Contains scripts for installation, setup, and post-merge git hooks. ## Post-Installation - **Tmux Plugins:** Start `tmux` and press `prefix + I` (that's a capital I) to fetch the plugins defined in `.tmux.conf`. - **Neovim Plugins:** The first time you open `nvim`, [Lazy.nvim](https://github.com/folke/lazy.nvim) will automatically install all the configured plugins. ## License This project is licensed under the MIT License.