This repository contains my personal dotfiles managed using chezmoi. Chezmois is a tool for managing dotfiles across multiple machines securely and efficiently.
Note
This is highly inspired by sebtiz13/dotfiles repository.
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 orblazerOr, if you prefer using wget:
sh -c "$(wget -qO- get.chezmoi.io)" -- init --apply --purge-binary orblazerAlternatively, 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 orblazer
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
- kubectl: Kubernetes command-line tool
- mise-completions-sync: Synchronize shell completions for mise
- shellcheck: Shell script analysis tool
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.
VSCodium extensions defined in home/.chezmoidata/vscodium.yaml are automatically installed using the script home/.chezmoiscripts/run_onchange_after_03-configure-vscodium.sh.tmpl. This script installs the specified extensions using the VSCodium 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.
.config/: Configuration files for various applicationsenvironment.d/: Directory for environment variables in*.conffilesgit/: Git configuration directoryhooks/executable_commit-msg: Git hook for conventional commitsconfig.tmpl: Git configuration template
mise/config.toml: Mise configurationnpm/.npmrc/pnpm/rc: (P)NPM config for conventional commits on release.sheldon/plugins.toml: Sheldon plugin manager configurationzsh/: Custom ZSH configurationsaliases.d/: Directory command aliases in*.zshfilescompletions/: Directory custom command completionsplugins/: Directory for zsh pluginsfzf-tab.zsh: FZF-tab configurationskubectl.zsh: kubectl aliasp10k.zsh: Powerlevel10k configurationsssh-agent.zsh: ssh-agent helper (loaded by sheldon with zsh-defer)
sources/: 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 configurationfunctions.zsh: Helper functions
.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.fdignore: Ignore some folders fromfdcommand.lessfilter: Custom filter forlessto enhance file preview usingeza,bat, andexiftool.profile: Load environment variables from.config/environment.d/*.conf.zshenv: Define ZDOTDIR and source.config/zsh/.zshenv