67 lines
2.9 KiB
Markdown
67 lines
2.9 KiB
Markdown
# 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.
|