A personal collection of configuration files for zsh, starship prompt, zim framework, SSH, and more.
This repository contains my personal configuration files ("dotfiles") for various command-line tools and applications, organized using GNU Stow for easy installation and management.
Included configurations:
- ZSH: Shell configuration
- Zimfw: ZSH plugin manager framework
- Starship: Cross-shell prompt
- FZF: Fuzzy finder
- SSH: Secure Shell configuration
- Git: Git configuration and global gitignore
- VSCode: Visual Studio Code configuration with settings, keybindings, and snippets
The repository is organized following the GNU Stow conventions, with each application's configurations in its own subdirectory:
dotfiles/
├── install.sh # Automated installation script
├── README.md # This documentation file
├── git/ # Git configuration
│ ├── .gitconfig # Git settings
│ └── .gitignore_global # Global gitignore patterns
├── ssh/ # SSH configuration
│ └── .ssh/
│ └── config # SSH client configuration
├── starship/ # Starship prompt configuration
│ └── .config/
│ └── starship.toml
├── vscode/ # VSCode configuration
│ ├── .config/
│ │ └── Code/
│ │ └── User/
│ │ ├── settings.json # VSCode settings
│ │ ├── keybindings.json # Custom keybindings
│ │ └── snippets/ # Code snippets
│ │ ├── javascript.json
│ │ └── python.json
│ └── README.md # VSCode-specific documentation
└── zsh/ # ZSH shell configuration
├── .fzf.zsh # FZF configuration for ZSH
├── .zimrc # Zim framework configuration
└── .zshrc # Main ZSH configuration
This configuration requires the following tools:
- zsh: The Z shell
- stow: Symlink farm manager
- starship: Cross-shell prompt
- fzf: Command-line fuzzy finder
- zimfw: ZSH plugin framework
- yay: AUR helper (for Arch Linux)
The easiest way to install these dotfiles is using the provided installation script:
-
Clone this repository:
git clone https://github.com/yourusername/dotfiles.git ~/dotfiles cd ~/dotfiles
-
Run the installation script:
./install.sh
The script will:
- Check for and install missing dependencies
- Set up symbolic links to all configuration files
- Install yay (AUR helper) if not present
- Install fzf from AUR (if yay is available)
- Install Starship and Zimfw
- Optionally set up SSH keys for GitHub (with proper permissions)
If you prefer to install manually:
-
Install required packages:
# For Arch Linux sudo pacman -S zsh stow git base-devel # Install yay (AUR helper) git clone https://aur.archlinux.org/yay.git cd yay && makepkg -si # Install fzf yay -S fzf # Install Starship curl -sS https://starship.rs/install.sh | sh # Install Zimfw curl -fsSL --create-dirs -o ~/.zim/zimfw.zsh \ https://github.com/zimfw/zimfw/releases/latest/download/zimfw.zsh
-
Clone this repository:
git clone https://github.com/yourusername/dotfiles.git ~/dotfiles -
Use stow to create the symlinks:
cd ~/dotfiles stow zsh stow starship stow vscode stow git stow ssh
To add a new configuration for an application:
-
Create a new directory for the application:
mkdir -p ~/dotfiles/app_name -
Add the configuration files to this directory, maintaining the same structure as they would have in your home directory:
# Example for an app with config in ~/.config/app_name/config.yml mkdir -p ~/dotfiles/app_name/.config/app_name cp ~/.config/app_name/config.yml ~/dotfiles/app_name/.config/app_name/
-
Stow the new configuration:
cd ~/dotfiles stow app_name
Simply edit the files in the ~/dotfiles directory. Since they're symlinked, changes will be reflected immediately.
To remove the symlinks for a specific package:
cd ~/dotfiles
stow -D app_nameIf you've made changes to the directory structure:
cd ~/dotfiles
stow -R app_nameThe dotfiles include SSH client configuration with secure defaults. The installation script can also help you generate SSH keys for GitHub.
If you didn't generate keys during installation or need additional keys:
# Generate a new Ed25519 key (recommended)
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/github_ed25519
# Set proper permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/github_ed25519
chmod 644 ~/.ssh/github_ed25519.pub
# Add to GitHub
cat ~/.ssh/github_ed25519.pub
# Copy the output and add to https://github.com/settings/keys
# Test connection
ssh -T git@github.comThe SSH configuration in ssh/.ssh/config includes settings for GitHub and general security hardening:
# Global settings with security hardening
Host *
HashKnownHosts yes
IdentitiesOnly yes
ServerAliveInterval 60
ServerAliveCountMax 2
# GitHub-specific settings
Host github.com
User git
IdentityFile ~/.ssh/github_ed25519
IdentitiesOnly yes
This project is licensed under the MIT License - see the LICENSE file for details.