Skip to content

parazeeknova/doty

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

645 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


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 .#apostrophe

Tip

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.

Guide: How to configure secrets for your own setup

If you are cloning this repository for your own machine, you will need to set up your own encrypted secrets:

1. Generate a new Age keypair

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.txt

Take note of the printed public key (starts with age1...).

2. Update .sops.yaml

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:
          - *primary

3. Create your unencrypted YAML file

Create 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_here

4. Encrypt it using SOPS

Encrypt 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.yaml

5. Rebuild your system

Apply the new configuration:

sudo nixos-rebuild switch --flake .#apostrophe

Preview

App Launcher
Battery
Brightness
Emoji
GitHub
Media
Podman
Clipboard
System Info
Virtualization
Wi-Fi
Waydroid
Wallpaper Switcher
Control Center
Color Schemes
Screen Capture

Preview 17 Preview 18 Preview 19 Preview 20

Preview

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.