Juna

Juna

Declarative, domain-isolated theming for Home Manager.

Codeberg | Modules | Themes


Philosophy: The Polite Guest

In Megrelian, Juna is a ghost-drizzle. It’s the air turning liquid so quietly that you don’t realize you’re soaked until you try to move. It’s a fine-mesh mist that doesn’t hit the ground—it just haunts it, silvering the edges of everything without making a sound.

Most Nix theming engines attempt to own your configuration. They rewrite files, inject global CSS, and abstract away the underlying logic until you no longer recognize your own system. Juna doesn't do that. It provides the pigments; you keep the pen. It is designed for developers who want visual coherence without surrendering architectural control.


Core Architecture

1. Strict Domain Isolation

Juna treats every application as a sovereign domain. Enabling the GTK module has zero side effects on your Neovim or Foot configuration. There are no "global" overrides—only explicit bridges. You maintain full authorship of your config files.

2. Atomic Asset Realization

Wallpapers and theme assets are handled as first-class Nix derivations. Juna manages the recursive symlinking of trusted repositories into stable /nix/store paths, ensuring your existing configs can consume assets declaratively and safely.

3. Optional Asynchronous IPC

For workflows that demand instant feedback, Juna supports an opt-in IPC mechanism. For supported modules (like Neovim or Foot), it can hot-swap colors in running processes via lightweight cache-watchers. If disabled, Juna falls back to standard, rock-solid static generation.


The Juna Difference

Feature Juna Stylix / Base16-nix
Logic Preserves user config Generates/Overwrites config
Coupling Loose (Domain-Isolated) Tight (Global Monolith)
Updates Static + Optional Live-Reload Requires Rebuild/Restart
Philosophy "The Polite Guest" "The Architect"