CLI tool
luccahuguet/yazelix avatar
luccahuguet/yazelix

Yazelix Nova: A Nix-Packaged Terminal Workspace That Puts Popups First

Yazelix Nova is a Nix-packaged, popup-oriented terminal workspace for local use and SSH. It combines Mars (a Rio-derived terminal emulator) with Yazelix-owned Zellij and Helix forks, Yazi, Nushell, Lazygit, Ratconfig, optional coding agents, a configurable widget bar for CPU, RAM, and AI usage, cursor effects, and terminal animations.

1,179 stars52 forksRustApache-2.0

At a glance

What is it?
Yazelix Nova is a Nix-packaged terminal workspace that combines a Rio-derived emulator, forked Zellij and Helix, Yazi, Nushell, and Lazygit into a popup-oriented environment. It targets local use and SSH, with a 75% code reduction over its Classic predecessor.
Who is it for?
Adopt Yazelix Nova if you are a Nix user who wants a tightly integrated, popup-driven terminal workspace with strong defaults and SSH support, and you accept the project's rapid release cadence and its focus on Linux as the dogfooded platform. Skip it if you need a stable, long-term-support terminal multiplexer, if you are on macOS and require verified GUI behavior, or if you prefer to assemble your own stack without Nix.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Nova Solves and Who It Is For

Yazelix Nova is a terminal workspace that bundles a specific set of tools into one Nix package: a Rio-derived terminal emulator called Nova Rio, a fork of Zellij, a fork of Helix, Yazi, Nushell, Lazygit, and an optional coding agent popup. The target user is someone who lives in the terminal and wants a cohesive environment without assembling each piece themselves. The project is explicit that it is for local use and SSH, and that Linux is the dogfooded platform. The README positions Nova as a replacement for Yazelix Classic, which it calls bloated and built on the wrong ownership model. Nova's pitch is that each component owns its implementation and contract, and the main repository just pins and composes package outputs. That is a different approach from Classic, where the main repo acted as runtime, control plane, and config repair system all at once.

The Architecture: Firm Boundaries and a 75% Code Reduction

The core architectural claim is a reduction from 91,545 LOC in Classic to 23,272 LOC in Nova v1.0.0, a 75% cut. The README attributes this to giving each first-party component a firm package boundary. Nova Rio, Nova Zellij, and Nova Helix are separate repositories with their own contracts. The main repo no longer carries maintenance machinery for child components. Instead, it pins and composes their package outputs. This is a modular design that should make individual upgrades easier, but it also means you are depending on multiple forks that the Yazelix project owns. If you already use upstream Zellij or Helix, Nova's forks may diverge, and you need to accept that the keybindings and behavior come from those forks, not from the upstream projects.

Getting It Running: Nix, Flakes, and the yzx Commands

Yazelix requires Nix with flakes enabled. The quickest way to try it is `nix run github:Yazelix/nova/stable -- launch` for the graphical Rio window, or `nix run github:Yazelix/nova/stable -- enter` to start the workspace in the current terminal or over SSH. If the launch fails, `nix run github:Yazelix/nova/stable -- doctor` inspects the runtime setup. For a persistent install, `nix profile add --refresh github:Yazelix/nova/stable` followed by `yzx launch`. Home Manager users can use the module documented in `docs/installation.md`. The `stable` branch advances from a dogfooded `main` revision at most once per week, while `main` gets more frequent updates and `edge` is experimental. The version string inside a session shows the channel, for example `NOVA 1.1 STABLE`, which is a nice touch for knowing exactly what you are running.

The Popup-Oriented Interface and the Alt Key Grid

Nova's interface is popup-oriented. Lazygit appears as a popup, and you can configure other git clients. The optional coding agent also pops up. The workspace extends Helix/Vim's `h/j/k/l` motion into a key grid. The `Alt` layer moves focus or tabs, `Ctrl Alt` moves panes, and `Alt Shift` groups four workspace surfaces. For example, `Alt h` focuses left or previous tab, `Alt l` focuses right or next tab. The command palette opens with `Alt Shift M`. A guided tour starts with `yzx tutor begin`. This is a coherent design that rewards muscle memory, but it is also a departure from default Zellij and Helix bindings, so if you are used to those, expect a learning curve.

Ratconfig and the Widget Bar: Configuration and Monitoring

Ratconfig is a settings manager that opens with `Alt Shift K`. It lets you jump to tabs with `1` through `9`, search all settings with `/`, and run contextual actions with `e`, `Enter`, or `Space`. You can remove explicit overrides with `u`. The footer lists the selected row's controls, which is a practical way to discover actions without reading docs. Nova also includes a configurable widget bar for CPU, RAM, and AI usage, plus cursor effects and terminal animations. The widget bar is a notable feature for a terminal workspace, since it puts system monitoring inside the same UI as your editor and shell. The README mentions these features but does not specify how to configure the widget bar, so you may need to inspect the package's Nix module or the Ratconfig settings to find the relevant keys.

Migration from Classic: The Bridge and Its Limits

If you are coming from Yazelix Classic, Nova provides a migration bridge. Classic v17.12 translates mutable Classic `settings.jsonc` or `config.toml` files into Nova configuration. You run `nix run github:Yazelix/nova/v17.12#yazelix -- launch` once to preserve mutable settings. The bridge does not rewrite Home Manager declarations or Home Manager-owned files, so Home Manager users must replace Classic-only options with Nova's narrower module surface before switching. After switching, `yzx doctor` reports recognized Classic `configs/` and `sessions/` state, generated Nushell extern artifacts, and migration backups. These are read-only warnings: `nova=unused` means Nova did not load the path, and `ownership=ambiguous` means it cannot prove the owner from the pathname. Nova does not archive or remove those paths, so external scripts may still reference them. This is a real limitation: you get warnings, not cleanup, and you must handle the leftover files yourself.

A Real Limitation: Platform Support and Release Cadence

The README states that Linux is the dogfooded platform. CI builds all packages and a Home Manager activation on `aarch64-darwin`, and sustained interactive macOS beta use has found no known regression. But the earlier per-command checklist and the Rio GUI remain unverified on macOS. That is a genuine gap. If you are on macOS and rely on the GUI launch, you are on untested ground. The release cadence is also fast: `stable` advances at most once per week, and `main` more often. That is fine if you want new features quickly, but it means the project is not a stable LTS. The README recommends using an immutable `nova-v*` tag for an exact release, which is a sensible way to pin your environment. The Nova cutover also replaces the old `main` history, so existing clones need a fresh clone, not a pull. That is an operational cost to plan for.

Alternatives and How They Differ

The obvious alternative is to assemble the same stack yourself: a terminal emulator like Rio or Alacritty, a multiplexer like Zellij or tmux, an editor like Helix or Neovim, a file manager like Yazi, and a shell like Nushell. The difference is integration. With Nova, the components are forked and pre-wired, so the keybindings and popup behavior are consistent. With a manual stack, you own the glue: you write your own keybindings, your own popup scripts, and your own config for each tool. Another alternative is a full desktop environment like a tiling window manager with terminal panes, but that does not give you the same popup-oriented workspace over SSH. Nova's `yzx enter` works in any capable terminal emulator or over SSH, which is a different use case from a local GUI only. The trade-off is that Nova's forks may lag upstream or diverge in ways you do not control.

Maintenance and Upgrade Cost

Because Nova is Nix-packaged, upgrades are declarative. You can pin to a `nova-v*` tag or follow `stable` or `main`. The package identity shows the channel inside the session, which helps with debugging. The migration bridge is a one-time cost, but it does not handle Home Manager files, so you must manually reconcile those. The README warns that external scripts may reference old Classic paths, and Nova does not clean them up. That means after switching, you need to audit your scripts and configs for references to `configs/` and `sessions/`. The project is Apache-2.0 licensed, which is permissive, but the forks are separate projects, so check each fork's license if you plan to redistribute. There is no mention of a changelog or upgrade notes in the provided material, so you may need to read release tags or commit logs to understand what changed between versions.

Editorial conclusion

Adopt Yazelix Nova if you are a Nix user who wants a tightly integrated, popup-driven terminal workspace with strong defaults and SSH support, and you accept the project's rapid release cadence and its focus on Linux as the dogfooded platform. Skip it if you need a stable, long-term-support terminal multiplexer, if you are on macOS and require verified GUI behavior, or if you prefer to assemble your own stack without Nix. Before switching, verify that your Nix setup has flakes enabled, check whether your existing Classic settings match packaged defaults, and run `yzx doctor` after installation to inspect any migration warnings. The project's own docs state that Linux is the dogfooded platform and that sustained macOS beta use has found no known regression, but the earlier per-command checklist and Rio GUI remain unverified, so test those paths yourself. The Nova cutover replaces the old `main` history, so plan for a fresh clone rather than a pull if you are migrating from Classic.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Community notes

Community notes