This repository contains my personal dotfiles managed using chezmoi. Chezmois is a tool for managing dotfiles across multiple machines securely and efficiently.
curlorwget(for installing chezmoi)git(for cloning this repository)
To set up your environment using these dotfiles, run the following command:
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply --purge-binary sebtiz13Or, if you prefer using wget:
sh -c "$(wget -qO- get.chezmoi.io)" -- init --apply --purge-binary sebtiz13Alternatively, you can manually install chezmoi and apply the dotfiles:
-
Install chezmoi:
sh -c "$(curl -fsLS get.chezmoi.io)" -- -b ~/.local/bin
-
Clone this repository and apply the dotfiles:
chezmoi init --apply --purge-binary sebtiz13
This setup includes:
- ZSH Shell: A powerful shell with advanced features
- Sheldon: A fast and configurable plugin manager for ZSH
- Powerlevel10k: A customizable prompt for ZSH
- FZF: A fuzzy finder for command-line
- Mise: A polyglot runtime manager
- Bitwarden: Secure secrets (eg. SSH keys, GPG keys) management
- lessfilter: A custom filter for
lessto enhance file preview usingeza,bat, andexiftool. This is particularly useful forfzf-tabpreview
The following plugins are managed by Sheldon:
- zsh-defer: Deferred initialization for faster shell startup
- zsh-autoswitch-virtualenv: Automatically switch virtual environments
- powerlevel10k: Pretty cool customizable prompt
- fzf-tab: Fuzzy tab completion with enhanced preview using
lessfilter - fast-syntax-highlighting: Syntax highlighting
- zsh-history-substring-search: History substring search
- zsh-autosuggestions: Command suggestions
- zsh-completions: Additional completions
- fzf: Fuzzy finder
- ssh-agent: SSH agent management
- zsh-ssh: SSH utilities
The following tools are managed by Mise:
- chezmoi: Manage dotfiles across multiple machines
- flux2: GitOps tool for Kubernetes
- mise-completions-sync: Synchronize shell completions for mise
- helm: Kubernetes package manager
- kubectl: Kubernetes command-line tool
- shellcheck: Shell script analysis tool
- uv: Python package installer and resolver
The mise-completions-sync tool is used to synchronize shell completion for the mise tool. This ensures that shell completions for tools managed by mise are automatically updated and available in the shell.
Packages defined in home/.chezmoidata/packages.yaml are automatically installed using the script home/.chezmoiscripts/run_once_before_01-install-packages.sh.tmpl.
For Manjaro this script enables AUR on pamac, updates sources, and installs the specified packages.
For macOS this script install brew if not present and installs packages with it.
VSCode extensions defined in home/.chezmoidata/vscode.yaml are automatically installed using the script home/.chezmoiscripts/run_onchange_after_03-configure-vscode.sh.tmpl. This script installs the specified extensions using the VSCode CLI.
This setup uses Bitwarden to securely store and manage secrets like SSH keys, GPG keys, and other sensitive information. During setup, chezmoi will prompt for Bitwarden server information and unlock credentials to securely retrieve these secrets.
The script home/.chezmoiscripts/darwin/run_once_before_10-keyboard-layout.sh.tmpl copy keyboard layout on system and home/.chezmoiscripts/darwin/run_onchange_after_90_configure-defaults.sh.tmpl configure macOS settings.
.config/: Configuration files for various applicationsmise/config.toml: Mise configurationsheldon/plugins.tom: Sheldon plugin manager configurationgit/config.tmpl: Git configuration templatezsh/: Custom ZSH configurationssources/: Directory for custom fzf-tab sourcescommand.zsh: Custom command sourcetldr.zsh: TLDR pages source
.zprofile: Zsh profile configuration.zshenv: Zsh environment configuration.zshrc: Zsh runtime configurationaliases.zsh: Commands aliasesfunctions.zsh: Helper functionsfzf-tab.zsh: FZF-tab configurationskubectl.zsh: kubectl aliasp10k.zsh: Powerlevel10k configurationsssh-agent.zsh: ssh-agent helper (loaded by sheldon with zsh-defer)
.ssh/: SSH configurationconfig.d: Directory for SSH configuration environments in*.conffilesconfig: SSH client configuration- SSH keys are managed via Bitwarden CLI
.chezmoi.yaml.tmpl: Chezmoi configuration template.lessfilter: Custom filter forlessto enhance file preview usingeza,bat, andexiftool.zshenv: Define ZDOTDIR and source.config/zsh/.zshenv