# HakaseOS

A modular, flake-based NixOS configuration for a single host (`hakase`).

## Features

- **Hyprland** compositor with UWSM (systemd session management)
- **Matugen** for automatic system-wide theming from wallpaper colors
- **Hardened Firefox** with custom bookmarks and new tab page
- **Vim keybindings** throughout the system
- **SOPS** for encrypted secrets management
- **CachyOS kernel** via chaotic-nyx for performance optimizations

## Structure

```
.
├── flake.nix                 # Flake inputs and NixOS configuration
├── config.nix                # Central configuration values
├── hosts/
│   └── hakase/               # Host-specific configuration
├── modules/
│   ├── nixos/                # System-level modules (boot, kernel, services)
│   └── home/                 # Home Manager modules
├── apps/                     # Per-application configurations
│   ├── hyprland/             # Hyprland window manager
│   ├── waybar/               # Status bar
│   ├── firefox/              # Browser configuration
│   ├── ghostty/              # Terminal emulator
│   ├── neovim/               # Editor (via nixovim flake)
│   ├── walker/               # Application launcher
│   └── ...                   # And many more
├── secrets/                  # SOPS encrypted secrets
└── assets/                   # Wallpapers and other assets
```

## Usage

### Rebuild System

```bash
sudo nixos-rebuild switch --flake ~/.config/nixos/#hakase
```

Or use the configured alias:

```bash
update
```

### Manage Secrets

```bash
# Edit secrets
nix-shell -p sops --run "sops secrets/secrets.yaml"

# Update keys
nix-shell -p sops --run "sops updatekeys secrets/secrets.yaml"
```

## Configuration

Central configuration values are defined in `config.nix`:

- `myConfig.nixos` - System settings (username, hostname, timezone)
- `myConfig.git` - Git configuration
- `myConfig.terminal` - Default terminal and aliases
- `myConfig.hyprland` - Monitor configuration and wallpaper
- `myConfig.firefox` - Bookmarks and new tab settings

## Flake Inputs

| Input | Description |
|-------|-------------|
| nixpkgs | NixOS unstable |
| home-manager | User environment management |
| hyprland | Wayland compositor |
| chaotic | CachyOS kernel and packages |
| sops-nix | Secrets management |
| nixovim | Neovim configuration |
| matugen | System-wide theming |
| vicinae | Application launcher |
| textfox | Firefox CSS theme |

## License

Personal configuration - use at your own discretion.
