summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorNatasha Moongrave <natasha@256phi.eu>2026-03-24 13:57:44 +0100
committerNatasha Moongrave <natasha@256phi.eu>2026-03-24 13:57:44 +0100
commit640794a741177bb0bb1a0d161eb743f2bfed73ca (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /README.md
parentc4af2e03eb09a9b6566da1fd0c8be3e341e97463 (diff)
Removed everything
Diffstat (limited to 'README.md')
-rw-r--r--README.md581
1 files changed, 0 insertions, 581 deletions
diff --git a/README.md b/README.md
deleted file mode 100644
index 8862029..0000000
--- a/README.md
+++ /dev/null
@@ -1,581 +0,0 @@
-# NixOS Configuration Guide
-
-This NixOS configuration repository uses a modular, hierarchical import structure to manage system and home-manager configurations across multiple environments and desktop setups.
-
-## Table of Contents
-
-1. [Architecture Overview](#architecture-overview)
-2. [Directory Structure](#directory-structure)
-3. [How Import Wranglers Work](#how-import-wranglers-work)
-4. [Switching Environments](#switching-environments)
-5. [Configuration Layers](#configuration-layers)
-6. [Modifying Configurations](#modifying-configurations)
-
----
-
-## Architecture Overview
-
-The configuration follows a **layered orchestrator pattern**:
-
-```
-flake.nix (entry point)
- ↓
-configuration.nix (system orchestrator)
- ├─ hardware-configuration.nix (hardware specifics)
- ├─ modules/nixos/base/ (system-wide config)
- │ └─ default.nix (orchestrator)
- │ ├─ nix.nix
- │ ├─ boot.nix
- │ ├─ networking.nix
- │ ├─ users.nix
- │ ├─ services.nix
- │ ├─ programs.nix
- │ ├─ graphics.nix
- │ └─ packages.nix
- └─ modules/nixos/{i3wm,hyprland}/ (environment-specific)
-
-mun.nix (home-manager orchestrator)
- ├─ modules/home/i3wm/default.nix (orchestrator)
- │ ├─ dunst.nix
- │ ├─ i3.nix
- │ ├─ kitty.nix
- │ ├─ neovim.nix
- │ ├─ nnn.nix
- │ ├─ picom.nix
- │ ├─ polybar.nix
- │ ├─ rofi.nix
- │ ├─ scripts.nix
- │ └─ xdg.nix
- └─ modules/home/hyprland/default.nix (orchestrator)
- └─ chernobyl/default.nix (orchestrator)
- ├─ dunst.nix
- ├─ fastfetch.nix
- ├─ hyprland.nix
- └─ kitty.nix
-```
-
----
-
-## Directory Structure
-
-```
-.
-├── flake.nix # Flake inputs/outputs definition
-├── flake.lock # Lock file for reproducibility
-├── configuration.nix # Main system config (thin orchestrator)
-├── hardware-configuration.nix # Hardware-specific config (generated)
-├── mun.nix # Home-manager user config (orchestrator)
-├── modules/
-│ ├── nixos/
-│ │ ├── base/ # Base system config (split modules)
-│ │ │ ├── default.nix # Orchestrator: imports all base modules
-│ │ │ ├── nix.nix # Nix settings, flakes, substituters
-│ │ │ ├── boot.nix # Boot loader, kernel, Plymouth
-│ │ │ ├── networking.nix # Hostname, NetworkManager, Bluetooth
-│ │ │ ├── users.nix # User definitions
-│ │ │ ├── services.nix # System services (SSH, Pipewire, Printing, Ly)
-│ │ │ ├── programs.nix # System programs (Firefox, Zsh, Steam)
-│ │ │ ├── graphics.nix # GPU drivers, hardware acceleration
-│ │ │ └── packages.nix # System-wide packages
-│ │ ├── i3wm/
-│ │ │ └── default.nix # X11, i3 window manager config
-│ │ └── hyprland/
-│ │ └── default.nix # Wayland, Hyprland config
-│ └── home/
-│ ├── i3wm/
-│ │ ├── default.nix # Orchestrator: imports all i3wm home modules
-│ │ ├── dunst.nix # Notification daemon (i3 config)
-│ │ ├── i3.nix # i3 window manager config (keybinds, layout)
-│ │ ├── kitty.nix # Terminal emulator (i3 config)
-│ │ ├── neovim.nix # Text editor with LazyVim setup
-│ │ ├── nnn.nix # File browser
-│ │ ├── picom.nix # X11 compositor
-│ │ ├── polybar.nix # Status bar (i3 specific)
-│ │ ├── rofi.nix # Application launcher
-│ │ ├── scripts.nix # Custom shell scripts
-│ │ └── xdg.nix # XDG MIME type defaults
-│ └── hyprland/
-│ ├── default.nix # Orchestrator: imports Hyprland rices
-│ └── chernobyl/ # "Chernobyl" Hyprland rice
-│ ├── default.nix # Orchestrator for chernobyl rice
-│ ├── dunst.nix # Notification daemon (Hyprland config)
-│ ├── fastfetch.nix # System info display
-│ ├── hyprland.nix # Hyprland window manager config
-│ └── kitty.nix # Terminal emulator (Hyprland config)
-```
-
----
-
-## How Import Wranglers Work
-
-An "import wrangler" is a `default.nix` file that acts as a **local aggregator**, collecting all related configurations into one place for easy management. This pattern appears at multiple levels:
-
-### Level 1: Base System Configuration
-
-**File:** `modules/nixos/base/default.nix`
-
-```nix
-{ ... }:
-
-{
- imports = [
- ./nix.nix
- ./boot.nix
- ./networking.nix
- ./users.nix
- ./services.nix
- ./programs.nix
- ./graphics.nix
- ./packages.nix
- ];
-
- system.stateVersion = "25.11";
-}
-```
-
-**Purpose:** Groups all foundational system configurations (boot, networking, users, services, packages) into a single import point. When you need to add a base system feature, you either:
-- Add it to an existing module file
-- Create a new module (e.g., `firewall.nix`) and add it to this import list
-
-**Benefits:**
-- Single import in `configuration.nix`: `./modules/nixos/base`
-- All base modules are in one place; easy to see what's included
-- New base modules are simply added to the imports list
-
-### Level 2: Environment-Specific System Configuration
-
-**Files:** `modules/nixos/i3wm/default.nix`, `modules/nixos/hyprland/default.nix`
-
-These are currently thin wrappers but follow the same pattern. To extend them (e.g., add environment-specific services or packages), you would create sub-modules:
-
-```nix
-# Example expansion of modules/nixos/i3wm/default.nix
-{ ... }:
-
-{
- imports = [
- ./xserver.nix # X11-specific settings
- ./i3.nix # i3 window manager
- ./keyboard.nix # Czech keyboard layout
- ];
-}
-```
-
-### Level 3: Home-Manager Orchestration
-
-**File:** `modules/home/i3wm/default.nix`
-
-```nix
-{ ... }:
-
-{
- imports = [
- ./dunst.nix
- ./i3.nix
- ./kitty.nix
- ./neovim.nix
- ./nnn.nix
- ./picom.nix
- ./polybar.nix
- ./rofi.nix
- ./scripts.nix
- ./xdg.nix
- ];
-}
-```
-
-**Purpose:** All i3wm-specific home-manager modules (dunst, i3 keybinds, polybar, etc.) are collected here. This is imported once in `mun.nix`, rather than importing 10 separate files.
-
-**Benefits:**
-- One line in `mun.nix`: `./modules/home/i3wm/default.nix`
-- All i3 home configs are clearly grouped
-- Easy to switch entire environments with a single comment/uncomment
-
-### Level 4: Multi-Rice Support (Hyprland)
-
-**File:** `modules/home/hyprland/default.nix`
-
-```nix
-{ ... }:
-
-{
- imports = [
- #./default.nix # main hyprland rice (future)
- ./chernobyl/default.nix # chernobyl hyprland rice
- ];
-}
-```
-
-**File:** `modules/home/hyprland/chernobyl/default.nix`
-
-```nix
-{ ... }:
-
-{
- imports = [
- ./dunst.nix
- ./fastfetch.nix
- ./hyprland.nix
- ./kitty.nix
- ];
-}
-```
-
-**Purpose:** Supports multiple visual rices/themes for the same window manager. The parent orchestrator selects which rice to use.
-
-**Benefits:**
-- Scale to many rices easily (add `./cyberpunk/default.nix`, `./nord/default.nix`, etc.)
-- Each rice has its own folder with consistent structure
-- Switch rices by commenting/uncommenting in the parent orchestrator
-
----
-
-## Switching Environments
-
-### Switch from i3wm to Hyprland
-
-Edit **two files**:
-
-#### 1. System Configuration (`configuration.nix`)
-
-```nix
-{ config, lib, pkgs, ... }:
-
-{
- imports = [
- ./hardware-configuration.nix
- ./modules/nixos/base
-
- # === Environment Choice ===
- # Uncomment one of the following to select your environment:
- #./modules/nixos/i3wm # ← comment this
- ./modules/nixos/hyprland # ← uncomment this
- ];
-}
-```
-
-#### 2. Home-Manager Configuration (`mun.nix`)
-
-```nix
-{ config, lib, pkgs, ... }:
-
-{
- imports = [
- #./modules/home/i3wm/default.nix # ← comment this
- ./modules/home/hyprland/default.nix # ← uncomment this
- ];
-
- # ... rest of mun.nix
-}
-```
-
-#### 3. Rebuild
-
-```bash
-sudo nixos-rebuild switch
-```
-
----
-
-## Configuration Layers
-
-The configuration is organized in **four distinct layers**:
-
-### 1. **System-Wide Base (`modules/nixos/base/`)**
-
-Applied to **all environments**.
-
-**Includes:**
-- Nix settings (flakes, substituters)
-- Boot configuration (GRUB, EFI, kernel)
-- Networking (hostname, NetworkManager, Bluetooth)
-- Users (mun user definition)
-- System services (SSH, Pipewire, Printing, Ly display manager)
-- System programs (Firefox, Zsh, Steam)
-- Graphics drivers (Intel VAAPI, hardware acceleration)
-- System packages (Neovim, Git, TeX Live, RetroArch, etc.)
-
-**Modify by:** Editing existing files in `base/` or creating new ones and adding them to `base/default.nix`.
-
-### 2. **Environment-Specific System (`modules/nixos/{i3wm,hyprland}/`)**
-
-Applied to **one environment at a time** (X11 vs Wayland).
-
-**i3wm includes:**
-- X11 enable
-- i3 window manager
-- Keyboard layout (Czech)
-- Display manager session
-
-**Hyprland includes:**
-- X11 disable
-- Hyprland enable
-- XDG portal for Wayland
-- Qt6 Wayland support
-- Keyboard layout (Czech)
-
-**Modify by:** Editing the respective `default.nix` or creating sub-modules.
-
-### 3. **Home-Manager User-Wide Config (`mun.nix`)**
-
-Configuration applied to user `mun` only.
-
-**Includes:**
-- SSH setup
-- Shell configuration (Zsh with oh-my-zsh)
-- Environment variables
-- Gnome-keyring service
-- User packages (Rust tools, Discord, utilities)
-- Environment-specific home-manager orchestrator import
-
-**Modify by:** Editing `mun.nix` directly or adding packages to the `packages` list.
-
-### 4. **Environment-Specific Home-Manager (`modules/home/{i3wm,hyprland}/`)**
-
-Applied to **one environment at a time**.
-
-**i3wm includes:**
-- i3 keybindings and layout
-- Polybar status bar
-- Dunst notifications
-- Picom compositor
-- Rofi launcher
-- NeoVim with LazyVim
-- Kitty terminal
-- Custom scripts
-- XDG MIME type defaults
-
-**Hyprland (chernobyl rice) includes:**
-- Hyprland config
-- Dunst notifications
-- Kitty terminal
-- Fastfetch system info
-
-**Modify by:** Editing the respective module files or adding new ones to the orchestrator `default.nix`.
-
----
-
-## Modifying Configurations
-
-### Add a New System Package
-
-**File:** `modules/nixos/base/packages.nix`
-
-```nix
-environment.systemPackages = with pkgs; [
- # ... existing packages ...
- my-new-package # ← add here
-];
-```
-
-### Add a New Base System Service
-
-**File:** `modules/nixos/base/services.nix` or create `modules/nixos/base/firewall.nix`
-
-If adding firewall rules, create a new file:
-
-```nix
-# modules/nixos/base/firewall.nix
-{ config, lib, pkgs, ... }:
-
-{
- networking.firewall.allowedTCPPorts = [ 80 443 ];
-}
-```
-
-Then add to orchestrator:
-
-```nix
-# modules/nixos/base/default.nix
-{ ... }:
-
-{
- imports = [
- ./nix.nix
- ./boot.nix
- ./networking.nix
- ./users.nix
- ./services.nix
- ./programs.nix
- ./graphics.nix
- ./packages.nix
- ./firewall.nix # ← add here
- ];
-
- system.stateVersion = "25.11";
-}
-```
-
-### Add an i3wm Home-Manager Module
-
-**File:** `modules/home/i3wm/my-new-config.nix`
-
-```nix
-{ config, pkgs, ... }:
-
-{
- # Your home-manager config here
-}
-```
-
-Then add to orchestrator:
-
-```nix
-# modules/home/i3wm/default.nix
-{ ... }:
-
-{
- imports = [
- ./dunst.nix
- ./i3.nix
- # ... other modules ...
- ./my-new-config.nix # ← add here
- ];
-}
-```
-
-### Add a New Hyprland Rice
-
-Create a new directory:
-
-```bash
-mkdir modules/home/hyprland/cyberpunk
-```
-
-Add files:
-
-```nix
-# modules/home/hyprland/cyberpunk/default.nix
-{ ... }:
-
-{
- imports = [
- ./dunst.nix
- ./hyprland.nix
- ./kitty.nix
- ];
-}
-```
-
-Update parent orchestrator:
-
-```nix
-# modules/home/hyprland/default.nix
-{ ... }:
-
-{
- imports = [
- #./default.nix
- ./chernobyl/default.nix
- #./cyberpunk/default.nix # ← uncomment to use
- ];
-}
-```
-
----
-
-## Rebuilding Your System
-
-After making changes:
-
-```bash
-# Switch to new system configuration
-sudo nixos-rebuild switch
-
-# Or, test first (doesn't activate)
-sudo nixos-rebuild test
-
-# Show what changed
-sudo nixos-rebuild dry-run
-```
-
-To edit and rebuild in one step:
-
-```bash
-# If you have the 'edit' alias from mun.nix
-edit
-sudo nixos-rebuild switch
-```
-
----
-
-## Key Principles
-
-1. **One Import Per Layer:** Each `default.nix` orchestrator imports related modules, reducing clutter in parent files.
-
-2. **Separation of Concerns:** System config (nixos/) is separate from user config (home/); base is separate from environment-specific.
-
-3. **Easy Environment Switching:** Change environments by commenting one line in `configuration.nix` and `mun.nix`.
-
-4. **Scalability:** Adding new features (base services, home modules, rices) follows a consistent pattern of creating a file + adding it to the orchestrator.
-
-5. **Clarity:** Each file has a clear purpose; finding where to modify something is straightforward.
-
----
-
-## Example Workflow
-
-### Goal: Add Firefox configuration to i3wm
-
-1. Create `modules/home/i3wm/firefox.nix`:
- ```nix
- { config, pkgs, ... }:
-
- {
- programs.firefox = {
- enable = true;
- profiles.mun = {
- settings = {
- "browser.startup.homepage" = "about:home";
- };
- };
- };
- }
- ```
-
-2. Add to orchestrator in `modules/home/i3wm/default.nix`:
- ```nix
- imports = [
- ./dunst.nix
- ./firefox.nix # ← add here
- ./i3.nix
- # ... rest
- ];
- ```
-
-3. Rebuild:
- ```bash
- sudo nixos-rebuild switch
- ```
-
-Done! Firefox is now configured for the i3wm environment.
-
----
-
-## Troubleshooting
-
-### "Module not found" error
-
-Check that all imports in `default.nix` files reference correct file paths. Use absolute paths from the module directory:
-- `./nix.nix` ✓ (correct)
-- `../base/nix.nix` ✓ (correct, relative to parent)
-- `/absolute/path/nix.nix` ✗ (avoid; use relative)
-
-### Environment not loading after switch
-
-Ensure **both** `configuration.nix` and `mun.nix` have the same environment enabled (not one i3wm and one hyprland).
-
-### Syntax errors in .nix files
-
-Use `nix flake check` to validate:
-```bash
-nix flake check
-```
-
----
-
-## References
-
-- [NixOS Manual - Configuration](https://nixos.org/manual/nixos/stable/)
-- [Home Manager Manual](https://nix-community.github.io/home-manager/)
-- [Nix Language](https://nixos.wiki/wiki/Nix_language)