Initial commit: Nomarchy NixOS configuration

An opinionated NixOS configuration with Hyprland, featuring:

- Modular flake-based architecture
- Parameterized user configuration (username, timezone, locale, etc.)
- Classical/antiquity theme with Thomas Cole wallpapers
- Full Hyprland setup with waybar, rofi, swaync
- Custom utility scripts (screenshots, screen recording, WiFi QR)
- Neovim with LSP support
- Interactive installer for existing NixOS systems
- ISO builder for fresh installations

Flake outputs:
- nixosConfigurations.example - Test configuration
- nixosConfigurations.installer - ISO installer
- packages.iso - Bootable ISO image
- apps.default - Interactive installer
- lib.mkHost - Host builder function
- templates.default - Starter template

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-15 02:44:33 -05:00
commit 58e4232f2f
50 changed files with 3853 additions and 0 deletions

54
themes/theme.nix Normal file
View File

@@ -0,0 +1,54 @@
# Theme module - provides colors and styling to all nomarchy components
{
config,
lib,
pkgs,
nomarchyConfig,
...
}: let
# Load the selected theme
themeName = nomarchyConfig.theme or "classical";
# Available themes
themes = {
classical = import ./classical/colors.nix;
# Future themes can be added here:
# nord = import ./nord/colors.nix;
# catppuccin = import ./catppuccin/colors.nix;
};
# Get the active theme, falling back to classical
theme = themes.${themeName} or themes.classical;
in {
# Export theme as a module option for other modules to consume
options.nomarchy.theme = lib.mkOption {
type = lib.types.attrs;
default = theme;
description = "The active nomarchy theme configuration";
};
config = {
# Set the theme in config
nomarchy.theme = theme;
# Install theme fonts
fonts.packages = with pkgs; [
font-awesome
nerd-fonts.jetbrains-mono
nerd-fonts.iosevka
nerd-fonts.victor-mono
nerd-fonts.fantasque-sans-mono
nerd-fonts.fira-code
nerd-fonts.monaspace
inter
];
fonts.fontconfig = {
enable = true;
defaultFonts = {
monospace = [theme.fonts.mono];
sansSerif = [theme.fonts.sans];
};
};
};
}