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

62
modules/home/default.nix Normal file
View File

@@ -0,0 +1,62 @@
# Home-manager configuration
{
config,
lib,
pkgs,
nomarchyConfig,
...
}: let
username = nomarchyConfig.username;
homeDir = "/home/${username}";
# Keyboard layout formatting
kbLayouts = builtins.concatStringsSep "," nomarchyConfig.keyboardLayouts;
kbVariants = builtins.concatStringsSep "," nomarchyConfig.keyboardVariants;
in {
imports = [
./hyprland.nix
./waybar.nix
./rofi.nix
./scripts.nix
./shell.nix
./notifications.nix
./neovim.nix
];
home = {
inherit username;
homeDirectory = homeDir;
stateVersion = "24.11";
packages = with pkgs; [
# Fonts
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
];
sessionVariables = {
PATH = "$HOME/.cargo/bin:$HOME/.local/bin:$PATH";
EDITOR = "nvim";
VISUAL = "nvim";
};
};
fonts.fontconfig.enable = true;
# Pass keyboard config to hyprland module
_module.args.keyboardConfig = {
layouts = kbLayouts;
variants = kbVariants;
};
# Enable programs
programs.nix-init.enable = true;
programs.cmus.enable = true;
programs.satty.enable = true;
programs.yazi.enable = true;
}