Skip to content

Architecture

Angelo Azevedo edited this page Jun 11, 2026 · 1 revision

Architecture and Structure

This repository uses a modular Flake-based structure to organize both system-level NixOS configurations and user-level Home Manager configurations.

Directory Structure

  • flake.nix: The main entrypoint, defining inputs (like nixpkgs, home-manager, nix-cachyos-kernel) and outputs (the host configurations).
  • hosts/: Contains host-specific configurations. E.g., pc-angelo for the main machine.
  • modules/: The core of the repository's modularity.
    • system/: NixOS modules (networking, bootloader, hardware quirks).
    • home-manager/: User-specific modules (Niri, Waybar, CLI tools, themes).
  • pkgs/: Custom packages built locally from source.
  • overlays/: Modifications to existing nixpkgs packages.

Key Subsystems

1. Code Editors

The configuration defines a highly specialized setup for VS Code, Cursor, and Antigravity IDE:

  • Shared settings and extensions reside in shared-settings.nix and shared-extensions.nix.
  • Extensions are declaratively fetched and heavily symlinked to satisfy internal IDE mechanisms (state.vscdb) without crashing the extension scanners.

2. Window Manager (Niri)

The Wayland environment relies on Niri, an innovative rolling window manager. It integrates seamlessly with:

  • Waybar for the status bar.
  • SwayNC for an interactive notification center.
  • Fuzzel for the main application launcher and power menus.

3. Dynamic GPU Passthrough (VFIO)

A custom libvirt hook script allows dynamic on-the-fly GPU passthrough, enabling a seamless transition of the eGPU to Windows VMs when needed.

Clone this wiki locally