Skip to content

anIcedAntFA/dotfiles

Repository files navigation

🏠 dotfiles

A personal EndeavourOS desktop — niri + Noctalia, managed with chezmoi.

Reproducible on a fresh machine, and safe to share publicly.

CI License: MIT managed with chezmoi

Arch Linux niri Noctalia fish Ghostty

terminal

Note

This is tuned for my personal laptop. Read each config before applying it — don't copy blindly. Everything private (emails, work host, hostnames) is templated, so you supply your own values on first run.

Table of contents

What I use

Layer Choice
Distro EndeavourOS (Arch-based), "no desktop" base
AUR helper yay
Compositor niri — scrollable tiling, Wayland
Shell (desktop) Noctalia
Login greetd + tuigreet — guide
Terminal Ghosttyguide
Shell fishguide
Prompt starship
Dotfile manager chezmoiwhy (ADR)
A note on the base install

I install EndeavourOS in "no desktop" mode (minimal Arch, no DE) and build the niri + Noctalia environment on top. See docs/packages.md for the full package story.

Quick start

Warning

Applying these dotfiles overwrites files in your $HOME. Review first, and ideally test in a VM or a fresh user account.

# 1. Install chezmoi
yay -S --needed chezmoi

# 2. Pull this repo and apply it. You'll be prompted for your email, name,
#    work git host/port, ghq roots, and whether to auto-install packages.
chezmoi init --apply https://github.com/anIcedAntFA/dotfiles.git

Your answers are stored in ~/.config/chezmoi/chezmoi.toml (never committed) and injected into templates like ~/.config/git/config and ~/.ssh/config. To preview changes before applying: chezmoi diff.

Then, if you didn't opt into package auto-install, install them manually:

yay -S --needed - < packages/pacman-explicit.txt
yay -S --needed - < packages/aur.txt

System files under etc/ (hosts, greetd) are not managed by chezmoi — copy them by hand with sudo where noted in the guides.

How it's organized

dotfiles/
├── home/            ← chezmoi source (.chezmoiroot points here)
│   ├── dot_config/          → ~/.config/*
│   ├── dot_local/           → ~/.local/*
│   ├── private_dot_ssh/     → ~/.ssh/*  (0600)
│   ├── dot_config/git/config.tmpl → ~/.config/git/config  (templated)
│   └── .chezmoi.toml.tmpl   prompts for your private values
├── docs/            per-tool guides + Architecture Decision Records (adr/)
├── packages/        reproducible package snapshots
├── etc/             system files (/etc/*) — applied manually
├── images/          screenshots & wallpapers
└── justfile, lefthook.yml, .oxfmtrc.json, .github/  tooling

Guides

Each tool has a focused guide covering what it is, why, and how to set it up:

Guide About
chezmoi.md Dotfile manager — workflows, templates, add/re-add
niri.md The scrollable-tiling compositor + Noctalia shell (hub)
niri-concepts.md niri's mental model — columns, workspaces, outputs
niri-config.md Config walkthrough + one-file-three-machines template
niri-keybindings.md Full Keybind ↔ Action tables
ghostty.md Terminal, cursor shaders, theming
fish.md Shell, plugins, keybindings, secrets pattern
fastfetch.md System-info banner — random Arch logo, per-machine
ghq.md Organized repo cloning + fuzzy jumping
ssh.md SSH keys per host (personal + work auth)
git.md Git identities, includeIf, SSH commit signing
gopass.md Terminal password manager (GPG + git)
certs.md Corporate CA certs — trust store restore
vpn.md Corporate VPN (GlobalProtect / gpclient)
docker.md Engine setup, rootless usage, daemon config
firewalld.md Exposing a dev server to your LAN
greetd.md Login manager + tuigreet + quiet boot
fcitx5.md Vietnamese input (Bamboo)
screenshot.md Screenshot pipeline (grim/slurp/satty)
screen-recording.md GPU screen recording (wl-screenrec)
clipboard.md Clipboard history (cliphist + Noctalia launcher)
archives.md Compression / archives (7zz · ouch · PeaZip GUI)
mise.md Runtime / dev-env version management
direnv.md Per-directory environments (.envrc)
tuxedo.md todo.txt task TUI + niri float keybind

Bigger design decisions are recorded as ADRs.

Packages

The full, reproducible lists live in packages/; a curated, grouped, and explained subset is in docs/packages.md.

Development

This repo lints and formats itself. See CONTRIBUTING.md.

just setup    # install tooling + git hooks
just check    # format check + lint + secret scan (what CI runs)
just fmt      # auto-format everything
  • Format: oxfmt (md/json/yaml/toml), shfmt (shell), fish_indent (fish)
  • Lint: markdownlint, shellcheck
  • Secrets: gitleaks in the pre-commit hook and CI

Credits

Heavy inspiration from:

Many thanks to my colleagues at NDVN for introducing me to Linux and guiding me along the way. You're amazing and kind. 🙏

License

MIT © ngockhoi96

About

Personal Linux dotfiles for EndeavourOS (Arch) — niri scrollable-tiling Wayland compositor + Noctalia shell, fish, Ghostty. Reproducible with chezmoi.

Topics

Resources

License

Contributing

Security policy

Stars

11 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors