nova-shell/README.md
2026-04-12 12:19:30 +02:00

4.5 KiB
Raw Blame History

nova-shell

A minimal Quickshell bar for niri, lovingly hallucinated by a statistical text blender. Every line of code in this repository was produced by a glorified autocomplete engine and has not been meaningfully reviewed by a human with a functioning brain.

Use at your own risk. The slop machine was very confident, which is exactly when you should be most suspicious.

"Features"

  • Bar with workspaces, clock, tray, and a pile of widgets the AI insisted on adding
  • Home Manager module (probably works)
  • treefmt + nixfmt for formatting, because even AI slop deserves consistent indentation
  • Checks via nix flake check (the irony of testing AI garbage is not lost on anyone)

Installation

Add the flake input and use the Home Manager module. Good luck — the robot didn't test any of this on real hardware.

inputs.nova-shell.url = "github:yourname/nova-shell";

Then in your Home Manager config:

imports = [ inputs.nova-shell.homeModules.default ];

programs.nova-shell.enable = true;

Configuration

Surprisingly, the robot managed to wire up a Home Manager module that mostly works. Here is how to make it do things.

Flake setup

# flake.nix
inputs = {
  nova-shell.url = "git+https://git.berlin.ccc.de/vinzenz/nova-shell";
  nova-shell.inputs.nixpkgs.follows = "nixpkgs";
};
# home.nix
imports = [ inputs.nova-shell.homeModules.default ];

Turning it on

programs.nova-shell.enable = true;

This installs the bar, the Symbols Nerd Font, and a systemd user service that starts with graphical-session.target. If you use stylix, colors and fonts are populated automatically — one fewer thing for the AI to have gotten wrong.

Disabling modules

All modules are on by default because the robot was optimistic. Set any to false to get rid of them. Disabling weather also skips pulling in wttrbar, which is the one genuinely useful thing the module system does.

programs.nova-shell.modules = {
  weather     = false;  # also removes the wttrbar dependency
  bluetooth   = false;  # unless you enjoy a ghost icon on your desktop
  backlight   = false;  # desktops don't have screens that dim, allegedly
  battery     = false;  # see above
  temperature = false;  # ignorance is thermally efficient
  disk        = false;
  wlogout     = false;  # if you enjoy living dangerously without a logout button
};

Full list of things you can disable: tray, windowTitle, clock, notifications, mpris, volume, bluetooth, backlight, network, powerProfile, idleInhibitor, weather, temperature, cpu, memory, disk, battery, wlogout.

Theme

Theme keys merge on top of whatever stylix provides, so you only need to specify what you want to override. The AI picked Catppuccin Mocha as the fallback, because of course it did.

programs.nova-shell.theme = {
  barHeight  = 28;
  barOpacity = 0.85;
  barPadding = 10;
  barSpacing = 8;
  radius     = 6;
  fontSize   = 13;
  fontFamily = "JetBrains Mono";

  # override individual palette entries if stylix's choices offend you
  colors.base00 = "#1a1a2e";
  colors.base05 = "#e0e0f0";
};

Full list of theme keys and their defaults:

Key Default Controls
colors.base00base0F Catppuccin Mocha Base16 palette
fontFamily "sans-serif" Bar text font
iconFontFamily "Symbols Nerd Font" Nerd font for icons
fontSize 12 Base font size (px)
barHeight 32 Bar height (px)
barOpacity 0.9 Bar and flyout background opacity
barPadding 8 Left/right bar content margin (px)
barSpacing 12 Gap between modules (px)
moduleSpacing 4 Icon-to-label gap within a module (px)
radius 4 Corner radius for flyouts and menus (px)

Systemd service

Enabled by default. To attach it to a different target or disable it entirely because you have opinions about service management:

programs.nova-shell.systemd = {
  enable = true;
  target = "niri.service";
};

Contributing

Sure, why not. It can't get much worse.

License

GPLv3. Yes, the AI slop is copylefted now. caelestia-dots/shell provided architectural inspiration, which the robot then faithfully mangled into this. If you improve it, the license requires you to share those improvements — a higher standard of accountability than the author has held themselves to.