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.
