My nix configuration stuff
To generate hardware config for a host: nixos-generate-config --show-hardware-config > hosts//hardware.nix
To upgrade: sudo nixos-rebuild switch --flake .#
To update: nix flake update
Sidekick desktop #
modules/desktop/niri.nix provides the reusable Niri/password-login desktop.
desktop.noctalia.enable = true opts into Noctalia's panel, launcher and
notification daemon (currently enabled only on sidekick). Without it, the
launcher/notifications use fuzzel/mako. Noctalia uses the pinned pkgs.noctalia
5.0.1 native release, not the legacy Quickshell package.
modules/desktop/apps.nix provides the reusable desktop.apps.enable opt-in,
currently enabled only on sidekick: Zen is the default web/HTML browser and
Moonlight Qt is the streaming client. The module also provides 1Password GUI/CLI
with Niri autostart and a TIDAL web shortcut. Zen reuses home/kaij/zen.nix and its
existing policies/extensions, without managing or migrating any browser profiles.
Sidekick's native nixpkgs has no Zen package, so it uses the existing locked
zen-browser input's unwrapped 1.19.11b, wrapped by host-native nixpkgs;
no input update is required. Firefox is not installed by this opt-in.
Launch Zen with Super+B or zen; launch Moonlight from the launcher or moonlight.
Moonlight 6.1.0 supports hardware decoding through the native package, but
availability depends on GPU drivers/codecs; select/check its decoder in settings.
No streaming server or pairing is configured here.
modules/desktop/screencast.nix provides desktop.screencast.enable, enabled
only on sidekick. The pinned niri-autoselect-portal bypasses the desktop ScreenCast
chooser; browser permission UI may remain. Start sharing in the app, then select
a focused window with Super+Ctrl+W or monitor with Super+Ctrl+M. Streams start
blank until selection. Super+Ctrl+0 clears video, not the session; stop sharing
in the app. All dynamic casts share the target. General GNOME/GTK portal routing
and keyring stay unchanged. See the host README for privacy and runtime checks.
Super is the modifier:
- T: Ghostty; B: Zen on sidekick (Firefox without the apps opt-in); R: launcher; L: lock.
- Minus / Equal: column 10 percentage points narrower / wider.
- Shift+Minus / Shift+Equal: window 10 percentage points shorter / taller.
- Arrows: focus; Shift+arrows: move window/column.
- Page Up/Down: workspace; Ctrl+Page Up/Down: move column to workspace.
- 1–5: workspace; Shift+1–5: move column to workspace.
- F: maximize column; Shift+F: fullscreen; V: floating; Tab: overview.
- Shift+Q: close; Shift+E: logout; Escape: key guide.
With Noctalia enabled it owns locking and idle; swaylock/swayidle are disabled.
Super+L and the menu use its native locker. Idle lock stays at 600 seconds;
both screens power off about a minute later (660 seconds unlocked, 60 seconds
of inactivity while locked, plus native 2-second fade). Keyboard/mouse activity
wakes the lock screen. Downloads continue; no automatic idle suspend is added. The menu's Suspend
runs native lock-and-suspend (plain Noctalia Suspend intentionally skips locking).
External lid/logind sleep uses Noctalia's sleep-delay inhibitor to wait for the
locked session. Password unlock uses the system's existing login PAM stack.
Password unlock and session-menu suspend/resume were tested on sidekick.
Undocked lid-close behavior still needs a separate test.
The existing polkit-gnome agent remains the sole authentication agent.
Output scaling remains automatic and the keyboard remains US international.
With Noctalia disabled, the baseline uses swaylock/swayidle instead.
When switching an active session from mako, stop mako.service and check the
owner of org.freedesktop.Notifications after activation before starting Noctalia.
The new profile must no longer expose mako's D-Bus activation file; reload the
user D-Bus configuration if it still sees that file. Niri reloads its config
without logout, but spawn-at-startup only runs on a new compositor start, so
start Noctalia once manually inside the existing user session. Do not restart
Niri, log out, or reboot just to apply this polish.
- Nix 95%
- Shell 5%