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

147 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# nova-shell
A minimal [Quickshell](https://quickshell.outfoxxed.me) bar for [niri](https://github.com/YarikTH/ycmd), 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.
```nix
inputs.nova-shell.url = "github:yourname/nova-shell";
```
Then in your Home Manager config:
```nix
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
```nix
# flake.nix
inputs = {
nova-shell.url = "git+https://git.berlin.ccc.de/vinzenz/nova-shell";
nova-shell.inputs.nixpkgs.follows = "nixpkgs";
};
```
```nix
# home.nix
imports = [ inputs.nova-shell.homeModules.default ];
```
### Turning it on
```nix
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](https://github.com/danth/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.
```nix
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.
```nix
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.base00``base0F` | 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:
```nix
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](https://github.com/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.