A minimal, portable, public-friendly set of CachyOS desktop configuration files.
This repository is a curated snapshot of a real daily-driver setup built around Niri, Noctalia, Fish, Alacritty, Starship, GTK/Qt theming, Firefox, Code - OSS, and a small Vim setup. It intentionally tracks only the configuration files that are stable, understandable, and worth keeping under version control.
License: AGPL-v3.0
.
├── .github/ # Issue templates, PR template, CI workflow
├── Code - OSS/ # Code - OSS settings and extension list
├── Firefox/ # Firefox user.js and extension list
├── alacritty/ # Alacritty terminal config
├── assets/ # Screenshots used by the repository
├── fastfetch/ # Fastfetch output layout
├── fish/ # Fish config and helper functions
├── gtk-3.0/ # GTK 3 appearance settings
├── gtk-4.0/ # GTK 4 appearance settings
├── niri/ # Niri config split into topic-based includes
├── noctalia/ # Noctalia colors and settings
├── qt5ct/ # Qt5ct appearance config
├── qt6ct/ # Qt6ct appearance config
├── scripts/ # Interactive bootstrap script
├── starship/ # Starship prompt config
├── vim/ # Vim entrypoint, HyDE defaults, colorscheme
├── .editorconfig # Editor formatting rules
├── .gitattributes # Line ending normalization
├── .gitignore # Local junk / temporary files to ignore
├── CHANGELOG.md # Release history and unreleased changes
├── CONTRIBUTING.md # Contribution guidelines
├── LICENSE # AGPL-v3.0 license text
├── README.md # Project overview and usage guide
└── requirements.md # Expected dependencies and runtime assumptions
This repo tracks config files that are:
- Portable — safe to publish and reuse
- Curated — intentionally selected instead of dumping an entire
~/.config - Stable enough to version — not high-churn machine state
- Documented — comments are written to explain intent, not just syntax
This is not meant to be a full system backup.
- Niri: keybinds, layout, input, environment and misc behavior
- Noctalia: shell colors and settings used by the desktop shell
- Fish: main shell config, helper functions, aliases, abbreviations, XDG-related setup
- Starship: prompt configuration
- Fastfetch: custom system summary layout
- Alacritty: fonts, colors, window settings, scrolling, key bindings
- GTK 3 / GTK 4: theme, icon, cursor and font settings
- qt5ct / qt6ct: Qt appearance and interface settings
-
Code - OSS:
settings.jsoncstored in the repo as a documented source fileextensions.txtas a reference/install list
-
Firefox:
user.jswith portable preferencesextensions.txtas a reference list
-
Vim:
vimrcas the user entrypointhyde.vimfor HyDE-oriented defaults- custom
wallbash.vimcolorscheme file
- Bootstrap script for interactive setup tasks
- CI lint workflow for syntax and hygiene checks
- Issue / PR templates for cleaner collaboration
By design, this repository avoids tracking:
- secrets or sensitive data
- cookies, tokens, sync state, private credentials
- cache and runtime state
- MRU lists and recent-file history
- machine-specific identifiers when they are not useful
- large generated files or vendor bundles
- config noise that changes constantly and has little long-term value
If a file is mostly GUI-generated but still stable, useful, and reviewable, it can still belong here.
This setup assumes a CachyOS / Arch-like environment and a Wayland desktop based on Niri.
See requirements.md for the full list of:
- required applications
- helper CLI tools
- fonts
- themes / icons / cursor theme
- Wayland / Qt expectations
There are three reasonable ways to use this repository.
git clone https://github.com/zudaR107/cachyos-configs.git
cd cachyos-configsThe repository includes an interactive bootstrap script:
bash scripts/bootstrap.shWhat it can do:
- optionally install fonts and packages
- optionally generate SSH and GPG keys
- optionally configure global Git identity and signing
- optionally scan for other OSes and rebuild GRUB config
- optionally copy selected config directories into
~/.config - optionally install Code - OSS settings and extensions
Useful modes:
bash scripts/bootstrap.sh --dry-run
bash scripts/bootstrap.sh --no-backupThe bootstrap script is intentionally interactive. Read it before running it.
This is the cleanest option if you want to keep the repository as the source of truth.
ln -sfn "$PWD/alacritty" "$HOME/.config/alacritty"
ln -sfn "$PWD/fastfetch" "$HOME/.config/fastfetch"
ln -sfn "$PWD/fish" "$HOME/.config/fish"
ln -sfn "$PWD/gtk-3.0" "$HOME/.config/gtk-3.0"
ln -sfn "$PWD/gtk-4.0" "$HOME/.config/gtk-4.0"
ln -sfn "$PWD/niri" "$HOME/.config/niri"
ln -sfn "$PWD/noctalia" "$HOME/.config/noctalia"
ln -sfn "$PWD/qt5ct" "$HOME/.config/qt5ct"
ln -sfn "$PWD/qt6ct" "$HOME/.config/qt6ct"
ln -sfn "$PWD/starship" "$HOME/.config/starship"
ln -sfn "$PWD/vim" "$HOME/.config/vim"cp -a alacritty "$HOME/.config/"
cp -a fastfetch "$HOME/.config/"
cp -a fish "$HOME/.config/"
cp -a gtk-3.0 "$HOME/.config/"
cp -a gtk-4.0 "$HOME/.config/"
cp -a niri "$HOME/.config/"
cp -a noctalia "$HOME/.config/"
cp -a qt5ct "$HOME/.config/"
cp -a qt6ct "$HOME/.config/"
cp -a starship "$HOME/.config/"
cp -a vim "$HOME/.config/"Back up existing configs first if you already use these tools.
- File:
alacritty/alacritty.toml - Includes colors, fonts, padding, scrollback settings and custom key bindings
- Files:
Code - OSS/settings.jsonc,Code - OSS/extensions.txt - The repository stores settings as
settings.jsoncso the file can stay documented with comments - If you install it into Code - OSS, it should normally end up as
settings.json
Install extensions from the list:
while read -r ext; do
[[ -z "$ext" || "$ext" =~ ^# ]] && continue
code --install-extension "$ext"
done < "Code - OSS/extensions.txt"Depending on your package, the executable may be
code-ossinstead ofcode.
- Files:
Firefox/user.js,Firefox/extensions.txt user.jsmust be copied into the active Firefox profile directory, next toprefs.js
- Main file:
fish/config.fish - Helper functions live in
fish/functions/ - Some helpers expect tools such as
eza,fzf,bat,yazi, andduf
- Main entrypoint:
niri/config.kdl - Topic-based includes live under
niri/cfg/
- Files:
noctalia/colors.json,noctalia/plugins.json,noctalia/settings.json - Stores shell palette, plugin source list, and shell behavior/settings
vim/vimrcis the entrypointvim/hyde.vimcontains the HyDE-oriented defaultsvim/colors/wallbash.vimprovides the custom colorscheme file included in this repo
The repository includes a GitHub Actions workflow that checks:
- JSON, JSONC and TOML validity
- GitHub Actions workflow syntax via
actionlint - YAML formatting via
yamllint - Fish syntax
- shell scripts via
shellcheckandbash -n - whitespace, line endings and final newline hygiene
The goal is to keep the repository clean, reviewable, and safe to publish.
Contributions are welcome, but keep them:
- portable
- documented
- minimal
- free from secrets and machine-specific junk
Please read CONTRIBUTING.md before opening a pull request.
This project is licensed under the GNU Affero General Public License v3.0.
See LICENSE for the full text.
For public discussion, prefer GitHub issues.
For direct contact:




