This repository contains my personal dotfiles - a collection of configuration files and scripts for setting up a powerful development environment. It focuses on creating a highly customized and efficient workspace primarily using Neovim, Tmux, and Fish shell, along with various other tools and utilities.
# Directory Structure
dotfiles/
├── .backup/
├── .bin/
│ ├── utils/
│ │ ├── setup_base.sh
│ │ ├── setup_directories.sh
│ │ ├── setup_fish.sh
│ │ ├── setup_git.sh
│ │ ├── setup_neovim.sh
│ │ ├── setup_rust_tools.sh
│ │ ├── setup_symlinks.sh
│ │ └── setup_tmux.sh
│ ├── deploy.sh
│ └── install.sh
├── .config/
│ ├── alacritty/
│ │ └── alacritty.toml
│ ├── fish/
│ │ ├── completions/
│ │ │ ├── fisher.fish
│ │ │ ├── git.fish
│ │ │ ├── poetry.fish
│ │ │ └── pyenv.fish
│ │ ├── functions/
│ │ │ └── config.fish
│ │ └── config.fish
│ ├── i3/
│ │ ├── config
│ │ └── i3-alt-tab.py
│ ├── mpd/
│ │ └── mpd.conf
│ ├── ncmpcpp/
│ │ └── config
│ ├── nvim/
│ │ └── status_line/
│ │ ├── bufferline.toml
│ │ ├── gitsigns.toml
│ │ ├── lualine.toml
│ │ ├── coc-settings.json
│ │ ├── dashboard.toml
│ │ ├── ddc_settings.toml
│ │ ├── dein.toml
│ │ ├── dein_lazy.toml
│ │ ├── init.lua
│ │ ├── lsp_settings.toml
│ │ ├── style.toml
│ │ └── treesitter_settings.toml
│ ├── picom/
│ │ └── picom.conf
│ ├── polybar/
│ │ └── forest/
│ ├── rofi/
│ └── starship/
├── .github/
├── polybar-themes/
├── .bash_aliases
├── .bashrc
├── .gitconfig
├── .gitconfig.local.sample
├── .gitignore
├── .gitmodules
├── .tmux.conf
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
└── fish_plugin_setup.fish
.bin/: Contains main scripts and utility scripts
deploy.sh: Handles symlinking of dotfiles install.sh: Main installation script utils/: Directory for utility scripts
manage_cargo_tools.sh: Manages Cargo tools setup_neovim.sh: Sets up Neovim setup_fish.sh: Sets up Fish shell setup_tmux.sh: Sets up Tmux
configs/: Contains configuration files for various tools
nvim/: Neovim configuration fish/: Fish shell configuration tmux/: Tmux configuration ... (other tool configurations)
Makefile: Defines tasks for easy execution README.md: Project documentation
.PHONY: all install deploy update-tools
all: install deploy
install:
@echo "Installing dotfiles..."
@.bin/install.sh
deploy:
@echo "Deploying dotfiles..."
@.bin/deploy.sh
update-tools:
@echo "Updating Cargo tools..."
@.bin/utils/manage_cargo_tools.sh
setup-neovim:
@echo "Setting up Neovim..."
@.bin/utils/setup_neovim.sh
setup-fish:
@echo "Setting up Fish shell..."
@.bin/utils/setup_fish.sh
setup-tmux:
@echo "Setting up Tmux..."
@.bin/utils/setup_tmux.sh
-
Neovim Configuration: Advanced setup with Dein plugin manager and LSP integration
-
Tmux: Custom configuration for enhanced terminal multiplexing
-
Fish Shell: Configured with Fisher package manager and custom functions
-
Window Manager: i3 setup with Polybar, Rofi, and Picom for a customized desktop experience
-
Terminal: Alacritty configuration for a modern terminal experience
-
Development Tools: Integration of various Rust-based CLI tools (fd, ripgrep, exa, etc.)
-
Version Control: Git setup with Delta for improved diffs
-
Package Managers: Utilizes Cargo, Fisher, Dein, and others for managing various components
-
Automated Setup: Makefile and scripts for easy deployment and environment setup
Warning: If you want to give these dotfiles a try, you should first fork this repository, review the code, and remove things you don't want or need. Don't blindly use my settings unless you know what that entails. Use at your own risk!
-
Clone the repository:
git clone https://github.com/music-brain88/dotfiles.git ~/dotfiles
-
Navigate to the dotfiles directory:
cd ~/dotfiles
-
Run the installation command:
make install
-
Deploy the configurations:
make deploy
-
Set up Python environment (if needed):
pyenv install <python3 version> pyenv virtualenv <python3 version> neovim3 source ~/.pyenv/versions/neovim3/bin/activate.fish
-
Install pynvim:
pip install pynvim
-
Open Neovim and install plugins:
:call dein#install()
To see available commands, run make
in the dotfiles directory:
~/dotfiles make
This will display a list of available commands for managing your dotfiles and development environment.
Feel free to fork this repository and modify the configurations to suit your needs. The modular structure allows for easy customization of individual components.
Contributions are welcome! Please feel free to submit a Pull Request.