This repository contains my personal configuration files (dotfiles) for macOS and Arch Linux.
Before running the installation script, ensure you have:
- macOS 12 or later or Arch Linux
- Git installed
- For macOS: Command Line Tools:
xcode-select --install
git clone --recurse-submodules https://github.com/alinalihassan/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
bunx dotbash
./installThe installation process uses Dotbot to automate setup:
-
Creates Symlinks - Links configuration files from the repo to their proper locations:
git/.gitconfig→~/.gitconfignvim/→~/.config/nvimfish/→~/.config/fishbat/→~/.config/batghostty/→~/.config/ghosttyniri/→~/.config/niri(Niri window manager)noctalia/→~/.config/noctalia(Noctalia desktop shell)- And others...
-
Installs Homebrew - If not already installed (macOS only)
- Uses the included
brew/Brewfilefor reproducible package installation
- Uses the included
-
Configures Shell - Sets Fish as your default shell
-
Installs Fish Plugins - Runs
fisher updateto install plugins listed infish/fish_plugins
For Arch Linux systems, there's a separate package list in arch/pkglist.txt:
# Install all packages with paru
paru -S --needed --noconfirm - < arch/pkglist.txt
# Or with yay
yay -S --needed --noconfirm - < arch/pkglist.txtThe package list includes CLI tools, development tools, applications, and Arch-specific packages from the AUR.
Symlink conflicts:
- If you have existing config files at the target locations, Dotbot will overwrite them (due to
force: truein the config) - Backup any existing configs before running
./install
Fish plugins don't load:
- Manually run:
fish -c "fisher update"
Permission denied on install script:
- Make executable:
chmod +x ~/.dotfiles/install
Homebrew installation fails:
- Ensure Command Line Tools are installed:
xcode-select --install
| Directory | Purpose |
|---|---|
arch/ |
Arch Linux package list (pkglist.txt) |
bat/ |
Syntax highlighting configuration |
brew/ |
Homebrew package list (Brewfile) |
fish/ |
Fish shell configuration, functions, and plugins |
git/ |
Git configuration with delta diff viewer |
ghostty/ |
Terminal emulator configuration |
lazygit/ |
LazyGit UI for git operations |
niri/ |
Niri window manager configuration |
noctalia/ |
Noctalia desktop shell configuration |
nvim/ |
Neovim editor configuration |
opencode/ |
OpenCode CLI configuration |
If you prefer to set up manually:
# Clone the repo
git clone https://github.com/alinalihassan/dotfiles.git ~/.dotfiles
# Create symlinks manually
mkdir -p ~/.config
ln -s ~/.dotfiles/git/.gitconfig ~/.gitconfig
ln -s ~/.dotfiles/git/.gitignore_global ~/.gitignore_global
ln -s ~/.dotfiles/nvim ~/.config/nvim
ln -s ~/.dotfiles/fish ~/.config/fish
ln -s ~/.dotfiles/bat ~/.config/bat
ln -s ~/.dotfiles/ghostty ~/.config/ghostty
ln -s ~/.dotfiles/lazygit ~/.config/lazygit
ln -s ~/.dotfiles/niri ~/.config/niri
ln -s ~/.dotfiles/noctalia ~/.config/noctalia
# Install packages (choose one)
# macOS:
brew bundle --file=~/.dotfiles/brew/Brewfile
# Arch Linux:
paru -S --needed --noconfirm - < ~/.dotfiles/arch/pkglist.txt
# Set Fish as default shell and install plugins
chsh -s $(which fish)
fish -c "fisher update"