Your dotFiles should be unique. These are mine, fork this repository as a reference. You can learn a lot by looking at how other people set up their dotfiles.
This repository managed with Chezmoi, is the configuration for my Debian-based headless servers.
๐ Secure, templated dotfile management
This repository uses Chezmoi templates. Check the other sections.
When you install it, your identity is stored in ~/.config/chezmoi/chezmoi.toml. You can manually update these values by running: chezmoi edit-config.
Many dot files are managed by Chezmoi
dot_curlrc: Curl is used in command lines or scripts to transfer datadot_editorconfig: EditorConfig a file format that enable various text editors and IDEs to adhere to defined stylesdot_tmux.conf: tmux is a terminal multiplexer. It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminaldot_wgetrc: GNU Wget is a non-interactive commandline tool for retrieving files using HTTP, HTTPS, FTP and FTPS
The reason that many of these file names start with a period and are therefore known as โdotfilesโ is the accidental invention of โhidden filesโ in 1997.
๐งฉ Modular Zsh configuration with aliases and functions
Zsh is a shell designed for interactive use, the files load order:
~/.zshenvmanaged as dot_zshenv- Environment variables loaded for all shells such as interactive, non-interactive, login, and scripts
~/.config/zsh/.zshrcmanaged as dot_config/zsh/dot_zshrc- Main config file for interactive shells
~/.config/zsh/aliases.zshmanaged as dot_config/zsh/aliases.zsh- Additional configuration loaded via
.zshrc
- Additional configuration loaded via
~/.config/zsh/functions.zshmanaged as dot_config/zsh/functions.zsh- Additional configuration loaded via
.zshrc
- Additional configuration loaded via
~/.config/starship.tomlmanaged as dot_config/starship.toml- Starship prompt loaded via
.zshrc
- Starship prompt loaded via
Install zsh manually if you're not using run_once_before_install-packages.sh.tmpl
sudo apt install zshchsh -s /bin/zsh
The change takes effect on your next login (or open a new terminal session) and verify with echo $SHELL
๐ Modern Tooling
- Standard
lsis aliased to Eza for better readability:--icons: Display of icons for different file types with a Nerd Font--git: Shows Git status for files directly in the directory listing--group-directories-first: Keeps your view organized
- Prompt: Starship is gorgeous and works everywhere with Rust-powered
- System info: Fastfetch is a maintained neofetch like tool
๐ Hardened GIT & SSH configuration
Commit Signing: Git is configured to sign commits using SSH keys (ED25519)
- GitHub & [GitLab] (https://docs.gitlab.com/user/project/repository/signed_commits/ssh/) documentation
Multiplexing: Hardened ~/.ssh/config with ControlMaster enabled for lightning-fast subsequent connections to the same host
Privacy: Sensitive hostnames and IPs are offloaded to ~/.ssh/config.local (ignored by Git)
Modular GIT configuration:
~/.config/git/configmanaged as a Chezmoi's template/dot_config/config.tmpl- Main config file, template information are collected during the quick start
~/.config/git/aliasesmanaged as/dot_config/aliases- Additional configuration loaded via
~/.config/git/config
- Additional configuration loaded via
~/.config/git/gitignore_globalmanaged as/dot_config/gitignore_global- Used by GIT without a specific configuration
Modular SSH configuration:
~/.ssh/configmanaged as a Chezmoi's templatedot_ssh/config.tmpl- Main config file, template information are collected during the quick start
~/.ssh/authorized_keysmanaged as a Chezmoi's templatedot_ssh/authorized_keys.tmpl- Contains a list of public keys that are permitted to access that specific user account remotely
- Include one static key and keys fetched from GitHub
~/.ssh/socketsmanaged asdot_ssh/sockets- Support Multiplexing for lightning-fast subsequent connections to the same host
โ๏ธ Vim configuration with colors cheme support
Configured for professional sysadmin work:
- Mac classic color scheme modified by Drew Neil for a clean, light-background aesthetic
- Support for termguicolors, optimized for Ghostty
- Swaps and backups disabled to keep your home directory clean
On a fresh Debian install, run:
sh -c "$(curl -fsLS get.chezmoi.io)" -- -b ~/.config/bin init --apply bhdicaireโ Installs Chezmoi to manage your dotFiles
โก Automatically triggers the run_once_before_install-packages.sh script to install missing components
โข Prompts you for information in order to generate localized configs
- Email for GIT configuration
- Full name for GIT signature
- Hostname for specific configuration items
.
โโโ dot_config/
โ โโโ git/ # Templated Git config (name/email)
โ โโโ zsh/ # Modular shell scripts (aliases.zsh, functions.zsh)
โ โโโ starship.toml # Prompt configuration
โโโ dot_ssh/
โ โโโ config.tmpl # Secure SSH client config
โ โโโ authorized_keys.tmpl # Fetches keys from GitHub
โโโ dot_vim/ # Vim colorschemes
โโโ dot_vimrc # Main Vim configuration
โโโ run_once_before_install-packages.sh.tmpl # Bootstrap script
dotFiles by Benoรฎt H. Dicaire are shared under MIT.
