These are my personal dotfiles, which include configurations for zsh shell, various tools and applications I use daily. They are designed to be lightweight and fast, supporting my workflow on macOS and Linux.
- Zsh with Zinit: My shell environment is based on
zsh, managed withzinitfor plugin loading and configuration. - Sublime Text & Sublime Merge: Custom settings and keybindings for a streamlined development experience.
- iTerm2 Configuration: Includes a custom color scheme and dynamic profile settings.
- VS Code Settings: Keybindings and settings for a consistent coding experience.
- tmux Integration: Custom scripts and settings for
tmuxto enhance terminal multiplexing. - Karabiner Customization: Key remappings for efficiency using
karabiner.json. - LaunchAgents: Automations for launching background tasks, such as automatic BibDesk saving and tmux session management.
- Custom Scripts: Various utility scripts for workflow automation.
Clone the repository with its submodules, then create the symlinks from $HOME into the repository with bin/links.zsh:
git clone https://github.com/alberti42/dotfiles.git ~/dotfiles
cd ~/dotfiles
git submodule update --init --recursive
bin/links.zsh install -n # print the actions only
bin/links.zsh installinstall first creates ~/.config/dotfiles pointing at the clone, then creates the links for this OS through that path. Anything already at a link's path is moved to <name>.bak-<timestamp>.
The submodules must be downloaded before install: some files in the repository are symlinks into them.
links.conf lists the links, one per line:
<os> <link, relative to $HOME> -> <target, relative to the repo>
<os> is all, macos or linux. Alternative targets are separated by |: install links the first, check accepts any (for links switched at runtime). An ignore <path> line makes check skip links at or under that path.
bin/links.zsh checkcheck reports entries whose link is missing or wrong, and prints the links in $HOME that point into the repository but are not in links.conf, in links.conf format, ready to paste.
Where chsh is not allowed, the linked ~/.bashrc (bash/.bashrc) starts zsh for interactive top-level shells. Non-interactive shells (scp, rsync, ssh host cmd) and bash typed from another shell stay in bash.
If you commit to this repository, include .git-dotfiles.conf in the clone's git configuration once. It defines the git clean filters that redact secrets:
git config include.path ../.git-dotfiles.confThis repository includes the following submodules:
Zsh plugins
oh-my-zsh/custom/plugins/zsh-misc-completionsoh-my-zsh/custom/plugins/zsh-indent-controloh-my-zsh/custom/plugins/zsh-appearance-controloh-my-zsh/custom/plugins/zsh-opencode-taboh-my-zsh/custom/plugins/tmux-fzf-linksoh-my-zsh/custom/plugins/tmux-ssh-syncing
Emacs
Yazi
.config/yazi/flavors.config/yazi/plugins/fazif.yazi.config/yazi/plugins/fzf-plus.yazi.config/yazi/plugins/faster-piper.yazi.config/yazi/plugins/bat.yazi.config/yazi/plugins/command.yazi
eza
Sublime Text
Sublime Text/Packages/Recent Files TrackerSublime Text/Packages/VirtualenvSelectorSublime Text/Packages/Dictionaries
Zinit
Other
This repository is released under the MIT License.
Feel free to explore, modify, and adapt these dotfiles to your needs!