# HakaseOS

A modular, flake-based NixOS configuration for my personal devices (`hakase` desktop and `macbook`). Heavily inspired by [OmarchyOS](https://omarchy.org/).

## Features

- **Hyprland** compositor with UWSM (systemd session management)
- **Multi-Architecture Support**: Runs on x86_64 (Desktop) and aarch64 (Apple Silicon M1/M2)
- **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** (Desktop) and **Asahi Linux** (MacBook) support

## 🚧 TODO
- LUKS designed

## Screenshots

![Display overview](assets/example/desktop_display.png)

![Terminal windows](assets/example/desktop_terminals.png)
![Lockscreen](assets/example/lockscreen.png)
![Desktop Music](assets/example/desktop_music.png)
![Desktop with Hakase](assets/example/desktop_hakase.png)

## Structure

```
.
├── flake.nix                 # Entry point defining hosts (hakase, macbook)
├── config.nix                # Central configuration values per host
├── hosts/
│   ├── hakase/               # Desktop configuration (x86_64)
│   └── macbook/              # Laptop configuration (aarch64, Apple Silicon)
├── modules/
│   ├── nixos/                # System-level modules (boot, kernel, services)
│   └── home/                 # Home Manager modules
├── home/                     # Host-specific Home Manager entry points
├── apps/                     # Per-application configurations
│   ├── hyprland/             # Hyprland window manager
│   ├── waybar/               # Status bar
│   ├── firefox/              # Browser configuration
│   ├── ghostty/              # Terminal emulator
│   ├── neovim/               # Editor (via nixovim flake)
│   ├── vicinae/               # Application launcher
│   └── ...                   # And many more
├── secrets/                  # SOPS encrypted secrets
└── assets/                   # Wallpapers and other assets
```

## Usage

### Rebuild System

**Desktop (Hakase):**
```bash
sudo nixos-rebuild switch --flake ~/.config/nixos/#hakase
```

**MacBook (Asahi):**
```bash
sudo nixos-rebuild switch --flake ~/.config/nixos/#macbook
```

### 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`, separated by host:

- `hakase` / `macbook` keys define host-specific overrides
- `myConfig.nixos` - System settings (username, hostname, timezone)
- `myConfig.hyprland` - Monitor configuration (Hz, Resolution) and wallpaper

## Flake Inputs

| Input | Description |
|-------|-------------|
| nixpkgs | NixOS unstable |
| home-manager | User environment management |
| hyprland | Wayland compositor |
| chaotic | CachyOS kernel and packages (x86 only) |
| apple-silicon | Asahi Linux support for NixOS (aarch64 only) |
| 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.