Personal configurations for a modern, productive, and minimal shell. Meant to be used with my .zshrc on macOS. This repository contains the configuration files I use daily on macOS/Linux, including:
- ⚡ Zsh with custom plugins and prompt, managed by Zinit
- 📝 Neovim as my favourite editor within the terminal
- 🪞 Ghostty as terminal emulator
- 🛠️ Other CLI tools (SDKMAN, fnm, Starship, etc.)
- 🍺 Homebrew package management via
Brewfile(Homebrew Bundle, brew bundle and Brewfile)
dotfiles/
├── Configs/ # Dotfiles go here
│ ├── aerospace/ # Aerospace tiling manager
│ ├── environment/ # launchd plist for XDG_CONFIG_HOME (GUI apps)
│ ├── ghostty/ # Ghostty terminal
│ ├── nvim/ # Neovim editor
│ ├── nushell/ # Nushell
│ ├── proton-pass/ # Proton Pass CLI SSH agent launchd plist
│ ├── ssh/ # SSH client config (~/.ssh/config)
│ ├── starship/ # Starship prompt
│ ├── yazi/ # Yazi file manager
│ ├── zellij/ # Zellij multiplexer
│ ├── zsh/ # Zsh shell
│ └── ... # Other tool configs
├── Hooks/ # Setup scripts go here (auto-run on `tuckr set`)
├── Secrets/ # Encrypted files go here
└── brewfile # Homebrew packagesMake sure you have installed:
- Git
- Zsh
- Nushell
- Homebrew (on macOS) or an equivalent package manager
- Tuckr for dotfiles management
-
Clone your dotfiles repository into a folder in your home directory:
git clone https://github.com/fraluc06/dotfiles.git ~/.dotfilesor via SSH:
git clone git@github.com:fraluc06/dotfiles.git ~/.dotfilesor via gh CLI:
gh repo clone git@github.com:fraluc06/dotfiles.git ~/.dotfiles -
Change into the dotfiles directory:
cd ~/.dotfiles
-
Use Tuckr to symlink your configs automatically:
tuckr zsh tuckr nvim tuckr ghostty # ...or all with one command
tuckr */ # Everything (the '/' ignores the README)
For the SSH + launchd setup (SSH client config, Proton Pass CLI SSH agent daemon, and
XDG_CONFIG_HOMEfor GUI apps), run:tuckr set ssh proton-pass environmentThis symlinks the configs and runs the posthooks, which auto-bootstrap the launchd agents (
com.proton.pass-cli.ssh-agentandmy.startup.shell_agnostic.environment). No manuallaunchctlcommands needed. -
Install all Homebrew packages and casks from your
Brewfile:brew bundle --file=~/dotfiles/Brewfile -
Install npm packages from the JSON file (requires
jq):bat npm-global-packages.json | jq -r '.dependencies | keys[]' | xargs npm install -g
This section explains how to export the package lists for Homebrew and npm.
To update the Brewfile with all currently installed packages, run:
brew bundle dump --file=./Brewfile --forceTo save a list of globally installed npm packages, run:
npm ls -g --json > npm-global-packages.json- Managed with
Zinitfor optimal plugin loading zsh-autosuggestions: Dynamic suggestions while typingfzf-tab: Replace zsh's default completion selection menu with fzffast-syntax-highlighting: Syntax highlighting for commandsforgit: A utility tool powered by fzf for using git interactively.
-
The
XDG_CONFIG_HOMEenvironment plist for GUI apps is managed by theenvironmenttuckr group. Deploy it with:tuckr set environmentThe posthook auto-loads
~/Library/LaunchAgents/environment.plistinto launchd (setsXDG_CONFIG_HOMEfor GUI apps at login). -
To set Nushell as default shell, run:
chsh -s /opt/homebrew/bin/nu
then reboot your machine.
- Ghostty with custom themes and fonts:
- Catppuccin Mocha: Catppuccin is a pastel theme with four warm flavors and 26 eye-candy colors, ideal for coding, designing, and other creative tasks.
- JetBrains Mono Nerd Font: A monospaced font with programming ligatures and Nerd Font glyphs for an enhanced coding experience
MIT – Free to use, modify, and distribute with attribution.
