https://github.com/bhdicaire/dotfiles
๐ง Opinionated dot files for linux servers
https://github.com/bhdicaire/dotfiles
chezmoi chezmoi-template debian linux raspberry-pi shell zsh
Last synced: 3 months ago
JSON representation
๐ง Opinionated dot files for linux servers
- Host: GitHub
- URL: https://github.com/bhdicaire/dotfiles
- Owner: bhdicaire
- License: mit
- Created: 2026-02-02T20:36:52.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-02-03T00:55:53.000Z (5 months ago)
- Last Synced: 2026-02-03T11:32:38.688Z (5 months ago)
- Topics: chezmoi, chezmoi-template, debian, linux, raspberry-pi, shell, zsh
- Language: Vim Script
- Homepage:
- Size: 103 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: .github/SECURITY.md
- Support: .github/SUPPORT.md
- Governance: .github/GOVERNANCE.md
- Maintainers: .github/MAINTAINERS.md
Awesome Lists containing this project
README
# 








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](https://www.chezmoi.io/), is the configuration for my Debian-based headless servers.
## ๐ Key Features
๐ Secure, templated dotfile management
This repository uses [Chezmoi](https://www.chezmoi.io/) 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](https://www.chezmoi.io/)
* `dot_curlrc`: [Curl](https://curl.se/) is used in command lines or scripts to transfer data
* `dot_editorconfig`: [EditorConfig](https://editorconfig.org/) a file format that enable various text editors and IDEs to adhere to defined styles
* `dot_tmux.conf`: [tmux](https://github.com/tmux/tmux/wiki) 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 terminal
* `dot_wgetrc`: [GNU Wget](https://www.gnu.org/software/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](https://linux-audit.com/linux-history-how-dot-files-became-hidden-files/).
๐งฉ Modular Zsh configuration with aliases and functions
[Zsh](https://www.zsh.org/) is a shell designed for interactive use, the files load order:
1. `~/.zshenv` managed as dot_zshenv
* Environment variables loaded for all shells such as interactive, non-interactive, login, and scripts
2. `~/.config/zsh/.zshrc` managed as dot_config/zsh/dot_zshrc
* Main config file for interactive shells
3. `~/.config/zsh/aliases.zsh` managed as dot_config/zsh/aliases.zsh
* Additional configuration loaded via `.zshrc`
4. `~/.config/zsh/functions.zsh` managed as dot_config/zsh/functions.zsh
* Additional configuration loaded via `.zshrc`
5. `~/.config/starship.toml` managed as dot_config/starship.toml
* [Starship prompt](https://starship.rs/) loaded via `.zshrc`
Install zsh manually if you're not using `run_once_before_install-packages.sh.tmpl`
1. `sudo apt install zsh`
2. `chsh -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 `ls` is aliased to [Eza](https://eza.rocks/) for better readability:
* `--icons`: Display of icons for different file types with a [Nerd Font](https://www.nerdfonts.com/)
* `--git`: Shows Git status for files directly in the directory listing
* `--group-directories-first`: Keeps your view organized
* Prompt: [Starship](https://starship.rs/) is gorgeous and works everywhere with Rust-powered
* System info: [Fastfetch](https://github.com/fastfetch-cli/fastfetch) is a maintained neofetch like tool
๐ Hardened GIT & SSH configuration
Commit Signing: Git is configured to sign commits using SSH keys (ED25519)
* [GitHub](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) & [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](https://git-scm.com/) configuration:
* `~/.config/git/config` managed as a Chezmoi's template `/dot_config/config.tmpl`
* Main config file, template information are collected during the quick start
* `~/.config/git/aliases` managed as `/dot_config/aliases`
* Additional configuration loaded via `~/.config/git/config`
* `~/.config/git/gitignore_global` managed as `/dot_config/gitignore_global`
* Used by GIT without a specific configuration
Modular [SSH](https://www.openssh.org/) configuration:
* `~/.ssh/config` managed as a Chezmoi's template `dot_ssh/config.tmpl`
* Main config file, template information are collected during the quick start
* `~/.ssh/authorized_keys` managed as a Chezmoi's template `dot_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/sockets` managed as `dot_ssh/sockets`
* Support Multiplexing for lightning-fast subsequent connections to the same host
โ๏ธ Vim configuration with colors cheme support
[Configured](https://github.com/bhdicaire/dotFiles/blob/main/dot_vimrc) for professional sysadmin work:
* Mac classic color scheme [modified by Drew Neil](https://github.com/altercation/vim-colors-solarized) for a clean, light-background aesthetic
* Support for termguicolors, optimized for [Ghostty](https://ghostty.org/)
* Swaps and backups disabled to keep your home directory clean
## ๐ Quick Start
On a fresh Debian install, run:
```bash
sh -c "$(curl -fsLS get.chezmoi.io)" -- -b ~/.config/bin init --apply bhdicaire
```
โ Installs [Chezmoi](https://www.chezmoi.io/) to manage your dotFiles
โก Automatically triggers the [run_once_before_install-packages.sh](https://github.com/bhdicaire/dotFiles/blob/main/run_once_before_install-packages.sh.tmpl) 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
```text
.
โโโ 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
```
## Licence
dotFiles by Benoรฎt H. Dicaire are shared under [MIT](https://github.com/bhdicaire/dotFiles/raw/master/LICENSE).
## Related projects
* [The *unofficial** guide to dotfiles on GitHub](https://dotfiles.github.io/)
* [Awesome dotfiles](https://github.com/webpro/awesome-dotfiles)