Doty is a highly opinionated, fully declarative, and reproducible NixOS - Hyprland configuration that provides a complete desktop environment with pre-configured applications, services, and workflows. It is designed to be easy to install and maintain, while also being flexible enough to allow for customization and extension. I use it on my personal machine and it is tailored to my workflow, but it can be adapted to suit other users' needs as well. It is a work in progress and I am constantly improving it.
It has custom daemons wabi, keys, widgets, launchers and services out-of-the-box. It is designed to be efficient and lightweight, while also providing a modern and visually appealing desktop environment. It is also designed to be modular and extensible, allowing users to easily add or remove components as needed all done in qml & rust.
This repository supports two setups depending on the branch:
-
NixOS Setup (main branch) (Current): A fully declarative system-level and user-level configuration powered by Nix flakes, NixOS modules, and Home Manager. This contains latest changes as i've moved to NixOS.
-
Arch Linux Setup (arch-dots branch) (Legacy): A GNU Stow-based, distro-agnostic configuration tailored for Arch-based distributions.
[Core]Declarative & Reproducible: Powered by Nix Flakes and Home Manager to ensure your environment is fully reproducible across installations.[Setup]Everything Configured: Fully customized daemons, keys, widgets, popups, launchers and services out-of-the-box, nix magic. Yo arch so fat, when she tried to clone this, AUR servers went straight into swap memory.[AI]AI-Powered (Local) Workflows: Out-of-the-box integrations for local OCR, Speech-to-Text (STT), and LLMs.[UI]Animated Wallpaper: Automatically change your wallpaper based on time of day or system events or put an video.[Utils]Screen Time & Focus Mode: Track your screen time and enable focus mode to block distractions.[Dev]Virtualization Maxx: Waydroid, Droidbox(ubuntu, fedora, etc), VMware, Qemu/Libvirt all preconfigured for development.[Theme]Matugen Dynamic Theming: Colors dynamically generated from your active wallpaper to keep your workspace fresh and cohesive.[Layout]Horizontal Scrolling Layout: Slide through workspace layers in a smooth horizontal layout.[Design]Liquid Glass Aesthetics: Modern, translucent, and blurred glassmorphism so clean you'll try to wipe your greasy fingerprints off the screen.[Opinion]Highly Opinionated: Built with a curated layout and toolchain designed for efficiency for developers.[Widgets]Quickshell Popups: Instant control panels, system sliders, and toggles right at your fingertips.[System]Under the Hood Nix Magic: Lockfiles ensuring package version consistency across updates.[Perf]Resource Efficient: Tailored to run light on system resources.[Modular]Modular & Extensible: Easily add or remove components to suit your workflow.[Admin]Cockpit Integration: Seamless integration with Cockpit for system management & instant logs.- And much more...
The installation script is designed for a minimal NixOS install with a single user. It will automatically set up the system and user configurations, including all necessary packages, services, and settings, the old Arch Linux setup is still available in the arch-dots branch but the support for it has been discontinued.
Important
This is a highly opinionated setup, and it is recommended to use it on a fresh NixOS installation & is very big and will take a lot of time to install, so please be patient. It is not recommended to use this on a production machine or a machine with important data. Also before running make sure to check your device related configuration.
To install, execute the following commands:
git clone --depth 1 https://github.com/parazeeknova/doty
cd ~/doty
sudo nixos-rebuild switch --flake .#apostropheTip
After one time installation, there is a handy alias doty to update the system and user configuration with a single command. Just run doty in the terminal.
I frequently update the configuration with new features, bug fixes, and improvements. To update your installation, simply run the following command:
cd ~/doty
git pull
doty # Assuming you have the alias set up, otherwise run `sudo nixos-rebuild switch --flake .#apostrophe`Doty manages personal system credentials and API tokens securely using sops-nix and age encryption. Secrets are encrypted locally and committed safely to GitHub, so only your authorized machine can decrypt them.
This configuration encrypts:
- Mail Accounts: Credentials for the push notification daemon (
mail_notifier). - GitHub API Token: Personal access token to pull repository metadata in the Quickshell app launcher.
If you are cloning this repository for your own machine, you will need to set up your own encrypted secrets:
First, generate a local private key on your machine. This key must remain local (never committed to Git):
mkdir -p ~/.config/sops/age
nix shell nixpkgs#age -c age-keygen -o ~/.config/sops/age/keys.txtTake note of the printed public key (starts with age1...).
Modify the public key defined in .sops.yaml at the root of the repository with the public key you generated:
keys:
- &primary <your_public_key_here>
creation_rules:
- path_regex: secrets/.*\.yaml$
key_groups:
- age:
- *primaryCreate a temporary file secrets/temp_unencrypted.yaml containing your email credentials and GitHub token:
mail-accounts: |
[
{
"email": "your_email@gmail.com",
"password": "your_app_password"
}
]
github-token: |
ghp_your_github_token_hereEncrypt your secrets into the tracked file path secrets/secrets.yaml (which is committed to Git) and delete the temporary file:
nix shell nixpkgs#sops -c sops --encrypt secrets/temp_unencrypted.yaml > secrets/secrets.yaml
rm secrets/temp_unencrypted.yamlApply the new configuration:
sudo nixos-rebuild switch --flake .#apostropheApp Launcher![]() |
Battery![]() |
Brightness![]() |
Emoji![]() |
GitHub![]() |
Media![]() |
Podman![]() |
Clipboard![]() |
System Info![]() |
Virtualization![]() |
Wi-Fi![]() |
Waydroid![]() |
Wallpaper Switcher![]() |
Control Center![]() |
Color Schemes![]() |
Screen Capture![]() |
![]() |
![]() |
![]() |
![]() |
All application adopt the color scheme based on the current wallpaper. Here are some previews of different wallpapers and their corresponding dynamic themes.
- NixOS & Nix - The foundation of this system, providing a purely functional, declarative package management system & nice docs for cuda, nvidia, qemu & etc.
- Hyprland - A highly customizable, dynamic tiling Wayland compositor with fluid animations.
- Quickshell - Framework used to build the responsive, QML-based desktop shell widgets and popups.
- Matugen - The color generation tool that dynamically extracts Material You themes from wallpapers.
- Waydroid - Waydroid configuration for nixOS on Hyprland.
- HyDE Project - Very good project for Hyprland configuration and scripts.
- Zen-Wabi - Matugen-driven dynamic theme for Zen Browser wallpaper-aware, per-site, hot-reloadable themes.
- And many other open-source projects and libraries that make this configuration like these possible.
This project is licensed under the MIT & Do whatever the fu* you want license.





















