My Pop!_OS setup scripts and configuration files managed with GNU Stow.
On a fresh Pop!_OS installation:
git clone git@github.com:tsubaie/dorfilesv2.git ~/dotfiles
cd ~/dotfiles
chmod +x install.sh
./install.shThe script will:
- Install all packages (APT, Flatpak, Ghostty, Brave, Starship, Tailscale, ZSH)
- Automatically deploy dotfiles using GNU Stow
dotfiles/
├── install.sh # Main installation script
├── packages/
│ ├── apt.txt # APT packages
│ └── flatpak.txt # Flatpak applications
├── ghostty/
│ └── .config/ghostty/ # Ghostty config (stow package)
├── starship/
│ └── .config/ # Starship config (stow package)
├── zsh/
│ └── .zshrc # ZSH config (stow package)
└── README.md
- APT packages from
packages/apt.txt - Flatpak apps from
packages/flatpak.txt
- Ghostty - Modern terminal emulator
- Brave - Privacy-focused browser
- Starship - Cross-shell prompt
- Tailscale - VPN mesh network (configured as exit node)
- ZSH with Oh My Zsh
- GNU Stow - Dotfile management
- 1Password - Password manager
- Ghostty terminal settings
- Starship prompt customization
- ZSH configuration
- Log out and log back in - Required for ZSH to become default shell
- Approve Tailscale exit node - Visit https://login.tailscale.com/admin/machines
- Source your shell config - Run
source ~/.zshrcor restart terminal
cd ~/dotfiles
stow -R ghostty # Re-stow (update) Ghostty config
stow -R starship # Re-stow Starship config
stow -R zsh # Re-stow ZSH configstow -D ghostty # Remove Ghostty symlinksstow -R ghostty starship zsh- Create a new directory for the application
- Mirror your home directory structure inside it
- Move your config files there
- Stow it
Example:
mkdir -p nvim/.config/nvim
cp ~/.config/nvim/init.lua nvim/.config/nvim/
stow nvimEdit the package files:
packages/apt.txt- One package per linepackages/flatpak.txt- One Flatpak app ID per line
Lines starting with # are comments.
Edit files in their respective stow package directories and run:
cd ~/dotfiles
stow -R <package-name>After making changes:
git add .
git commit -m "Update configuration"
git push- ✅ Simple and lightweight
- ✅ Creates symlinks automatically
- ✅ Easy to manage multiple configs
- ✅ Can enable/disable configs easily
- ✅ No custom scripts needed
- ✅ Standard tool used by many dotfile repos
After modifying your dotfiles:
./push.shThis will:
- Show you what changed
- Ask for a commit message
- Commit and push to GitHub
To get the latest dotfiles from another machine:
./pull.shThis will:
- Pull the latest changes
- Ask if you want to apply them (restow)
- Apply configs if confirmed