My NixOS desktop config
Find a file
2026-02-06 14:28:40 +01:00
assets Improve README 2026-02-06 14:28:40 +01:00
hosts Improve README 2026-02-06 14:28:40 +01:00
modules add credit 2026-02-06 13:06:05 +01:00
.gitignore add gitignore 2026-01-21 11:42:18 +01:00
flake.lock flake update 2026-02-05 11:04:27 +01:00
flake.nix Dolphin? 2026-01-27 23:06:06 +01:00
LICENSE Add License 2026-01-26 20:54:26 +01:00
README.md Improve README 2026-02-06 14:28:40 +01:00

Zohiu's NixOS flake

A continuously changing comprehensive collection containing computer configs

Prerequisites

Setup

This flake sets up an entire system, including all the apps and devices I use. You will have to edit this quite a lot. Before starting, make sure that you understand the structure of this config and know how to edit it to your liking.

  1. Clone the repo
  2. Edit the flake.nix - make sure the install-dir is set to the directory you cloned the repo to
  3. Edit the hosts/ to your liking. The username, hostname and first-install-version are really important - make sure to also update the imports in flake.nix
  4. Replace the hardware.nix of your hosts/ with the generated /etc/nixos/hardware-configuration.nix of your system. If you skip this step, there will be issues.
  5. See Folder Structure
  6. Run sudo nixos-rebuild switch --flake <install-dir>#<hostname> (replace with your values)
  7. Reboot

Preview

Floating Windows One Window Tiked Windows

(miku is optional)

Structure

Design Philosophy

These are not rules. They are just guidelines I try to respect to make my config more modular and easy to work with.

  • Everything is a module. Everything needed to make an app work and configure it should be in the same location. This allows hosts to selectively import apps.
  • Every module is imported at the root of the config. If you want to do something in home-manager, for example, you have to do it the long way. Look at a module in this repo if you want an example.
  • Overrides are preferred. If you need to change a setting in hyprland (like a window rule to make an app work), you should do this in the app's module instead of the hyprland module
  • Folder-level imports should always work. If anything is split into subdirectories, importing the root should import all modules contained inside. Every folder needs a default.nix.
  • Grouping should be small. If it makes sense to create a subdirectory, it should always be created. That way host imports can be really specific depending on their use-case.