Commit graph

1397 commits

Author SHA1 Message Date
0519efdf01 anyrun: fix config and restore toggle behavior
terminal field still expects Option<T> wrapper (Some("ghostty")).
Restore close-or-open toggle for Super+R — with the daemon running,
`anyrun close` correctly fails when no window is open.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-18 12:35:07 +01:00
76bef27ac7 anyrun: restart daemon after standalone power menu use
The power menu runs anyrun in standalone stdin mode, which kills the
daemon. Explicitly quit the daemon before, then restart it after the
standalone invocation so the launcher stays fast.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-18 12:30:28 +01:00
a673881fa5 anyrun: fix launcher bind for daemon mode
Just call `anyrun` directly — the daemon handles window display.
The previous `anyrun close || anyrun` toggle failed because close
returns success even with no window open.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-18 12:22:20 +01:00
8ec8e4c876 anyrun: switch to daemon mode and fix config warnings
Start `anyrun daemon` at Hyprland launch for instant open times.
Replace `killall anyrun` with `anyrun close` to dismiss without
killing the daemon. Fix applications.ron config — newer anyrun
expects plain values, not Option<T> wrappers (Some(8) → 8).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-18 12:20:02 +01:00
88b9c24ffb fix deprecated package names and gtk4 theme warning
- protonvpn-gui → proton-vpn
- xfce.thunar → thunar
- set gtk.gtk4.theme = null to adopt new HM 26.05 default

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-18 10:48:22 +01:00
cea4d37bfb flake: update Stylix to master and scope import to desktop hosts
Switch Stylix from release-25.11 to master, which fixes hyprpaper's
wallpaper config generation for 0.8.4 (structured attributes instead
of raw string concatenation).

Move the Stylix module import from common.nix to flake.nix extraModules
so the Mediaserver (on nixpkgs-stable) doesn't pull in options that
only exist in unstable nixpkgs (services.displayManager.generic).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-18 10:44:16 +01:00
d89706736c hyprpaper: remove unnecessary wallpaper workarounds
The mkForce wallpaper override (explicit monitor names) and the IPC
startup script (sleep 2 + hyprctl) were stacked workarounds for a
misdiagnosed hyprpaper 0.8.4 bug.  Stylix's hyprpaper target (still
auto-enabled) correctly sets preload and wallpaper with the standard
wildcard syntax.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-18 10:35:26 +01:00
542d5b1ee6 hyprpaper: fix wallpaper IPC script (use writeShellScript)
The previous inline shell command had quoting/PATH issues. Replace with
a proper pkgs.writeShellScript that:
- Uses the full hyprctl store path (no PATH dependency)
- Reads the wallpaper from hyprpaper.conf at runtime ($HOME/.config)
- Avoids the Nix string-context conflict from embedding a store path

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 10:18:15 +01:00
e90018d780 hyprpaper: work around 0.8.4 wallpaper= config bug via IPC
hyprpaper 0.8.4 silently ignores wallpaper= directives in the config
on startup — preload= works but the monitor assignment does not.

Add a hyprland.start hook that waits 2s (for hyprpaper to preload the
image) then sets the wallpaper via hyprctl IPC.  The image path is read
at runtime from hyprpaper.conf to avoid a Nix string-context conflict
between the stylix image store path and the powerMenu derivation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 10:13:36 +01:00
4fa6dc9f88 remove VSCodium and nix-ld from config
VSCodium (with its nix-ld/LD_LIBRARY_PATH wrapper for native extension
addons) has been removed from home-manager. nix-ld is no longer needed
on Gaming or Macbook without it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 10:01:07 +01:00
18809b9fcb hyprpaper: fix monitor wallpaper mapping for 0.8.4
hyprpaper 0.8.4 doesn't honour the Stylix-generated "wallpaper=,<path>"
empty-monitor wildcard — DP-2 was found but had no target.  Override with
explicit monitor names (DP-2 on Gaming, eDP-1 on Macbook) using
config.stylix.image to avoid a circular reference through the preload list.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 10:00:21 +01:00
forgejo-actions[bot]
fd5258c9ad flake: update inputs 2026-05-18 04:01:44 +00:00
609e98d681 hyprland: fix waybar, power menu icons, and tray handle glyph
- Explicitly start hyprland-session.target in our hl.on("hyprland.start")
  handler so waybar (and other session services) launch even if HM's
  dbus-update-activation-environment chain fails silently upstream

- Power menu: replace plain spaces with bash $'\uXXXX' nerd font glyphs
  (fa-lock, fa-sign-out, fa-refresh, fa-power-off)

- Waybar tray-handle: use builtins.fromJSON to embed U+E0B2 powerline
  filled left-arrow as the drawer indicator

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 22:58:41 +01:00
0940965a86 hyprland: fix incorrect Lua dispatcher APIs
hl.dsp.workspace.change() does not exist; workspace switching uses
hl.dsp.focus({ workspace = N }).

hl.dsp.window.move_to_workspace() does not exist; moving a window to a
workspace silently uses hl.dsp.window.move({ workspace = N, follow = false })
(follow = false sets the silent flag in the C++ dispatcher).

hl.dsp.window.fullscreen() takes a 'mode' field, not 'state'; drop the
stale argument so the call uses the correct toggle-fullscreen default.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 22:37:34 +01:00
f5183a7605 gaming: set max-jobs = 1 to allow trivial local builds
pkgs.writeText derivations (used by HM for config files) carry
preferLocalBuild = true, which the remote build hook declines, and
allowSubstitutes = false, which prevents cache hits.  With max-jobs = 0
these can never be realised, causing nixos-rebuild to fail.

Setting max-jobs = 1 lets these millisecond-duration text-file writes
run locally with no gaming impact.  All real compilation still goes to
the media server via the distributed build configuration.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 22:32:34 +01:00
f4b45c8bda hyprland: fix Lua config errors caused by stylix's Hyprland target
Stylix's Hyprland target injects settings.{general,decoration,group,misc}
as top-level keys.  In hyprlang mode these render as section blocks, but
in Lua mode (configType = "lua") they become hl.general(), hl.decoration(),
etc. — functions that don't exist, causing an emergency-mode config error.

Disable stylix.targets.hyprland and absorb all its colours into
settings.config.{general,decoration,group,misc} where they are correctly
rendered inside the single hl.config({}) call.

Also add a home.activation script that removes any stale hyprland.conf
(auto-generated by Hyprland before hyprland.lua was first placed) so the
autogenerated-config warning banner can never persist across restarts.
Keep services.hyprpaper.enable = true since it was previously set by the
now-disabled Hyprland target.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 22:24:12 +01:00
62a1f9a38c gaming: remove lutris (using Faugus instead)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 21:14:18 +01:00
7bd43f6baf nix: add i686-linux to remote build machine systems
Lutris and Wine pull in 32-bit (i686-linux) dependencies like openldap.
Without i686-linux in the supported systems list, nix falls back to
building those locally on the gaming PC instead of offloading to the server.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 21:12:53 +01:00
49c4a93fa8 gaming: force all nix builds to remote media server
max-jobs = 0 sends every build to nordhammer.it instead of compiling
locally, so nixos updates never compete with games for resources.
builders-use-substitutes lets the server pull from binary caches directly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 21:01:00 +01:00
83ab64e35b flake: switch Gaming and Macbook to nixpkgs unstable
home-manager unstable requires lib/services/lib.nix which was added to
nixpkgs after 25.11. Move the two Hyprland hosts to unstable so the HM
module evaluates against a compatible nixpkgs. Mediaserver stays on stable.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 20:46:23 +01:00
2156ce4138 hyprland: migrate to Lua config (Hyprland 0.55+)
Switch Gaming and Macbook to home-manager unstable which has
configType = "lua" support. Converts the full Hyprland config from
deprecated hyprlang to native Lua:

- flake: add home-manager unstable input for Gaming/Macbook
- hyprland.nix: configType = "lua", settings.config for static sections,
  extraConfig for env/startup/animations/binds/window-rules
- hosts: monitor config updated to hl.monitor({}) table format

Eliminates the windowrulev2 deprecation banner.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 20:38:30 +01:00
07ee7b86df hyprland: revert to windowrulev2 for Battle.net tray rule
extraConfig is parsed as hyprlang by the HM module, not Lua — Lua syntax
caused parse errors. windowrulev2 in settings is the correct approach.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 19:55:18 +01:00
b165b55e82 hyprland: use Lua window rule for Battle.net tray window
Replace deprecated windowrulev2 hyprlang syntax with the Hyprland 0.55+
Lua hl.window_rule() API via extraConfig.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 19:51:45 +01:00
e59575780c hyprland: hide Battle.net tray icon window
The Battle.net agent leaks a tiny floating XWayland window (steam_app_0,
empty title, 160x20) that isn't captured by the Wayland tray. Send it
to the special workspace silently.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 19:48:50 +01:00
db413ad808 services: add Flatnotes note-sharing at notes.nordhammer.it
Replaces Vesktop for quick cross-device note-passing. Uses Flatnotes
with auth disabled so Authelia is the only login required.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 14:19:52 +01:00
43c251b90d macbook: add wob OSD for keyboard backlight keys
wob (Wayland OSD Bar) runs as a systemd user service listening on a FIFO.
Keyboard brightness keybindings now pipe the new brightness percentage to
the FIFO after each adjustment, showing a progress bar overlay.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 13:48:07 +01:00
b4be9a9339 Upload files to "walls" 2026-05-17 05:36:26 -07:00
7e59e8b2e8 macbook: restore keyboard backlight to 10% on graphical login
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 13:18:26 +01:00
b97920df45 macbook: fix keyboard backlight keybinds to use brightnessctl
swayosd-client does not support --keyboard-brightness; use brightnessctl
directly to control smc::kbd_backlight.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 13:16:12 +01:00
cdb4cbd6c0 macbook: add keyboard backlight key bindings and permissions
- Add XF86KbdBrightnessUp/Down keybindings (Macbook-only) using swayosd
  for consistent OSD behaviour with screen brightness and volume
- Enable hardware.acpilight for udev rules allowing video group to write
  to /sys/class/leds/ (keyboard backlight)
- Add fred to the video group so brightnessctl/swayosd can write backlight values

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 12:58:06 +01:00
1d491f4bd2 desktop: enable Plymouth boot splash with Stylix theming
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 11:11:15 +01:00
forgejo-actions[bot]
1943098d57 flake: update inputs 2026-05-17 04:01:56 +00:00
12253c23dd arr: patch AuthenticationRequired to suppress auth enforcement
Newer *arr versions added AuthenticationRequired to config.xml and now
block access if it's not explicitly set. Patch it to
DisabledForLocalAddresses alongside the existing AuthenticationMethod
patch, since Authelia handles auth at the reverse proxy.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 21:01:11 +01:00
c569892406 systemd: shorten DefaultTimeoutStopSec to 10s
Eliminates the long "stop job on user ID 1000" / watchdog hang on shutdown.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 19:41:21 +01:00
403bb0bd19 nemo: hide menubar by default
Nemo replaces it with a ☰ toolbar button. Toggle with F8 if needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 17:59:25 +01:00
85f63cfc9e ghostty: enable single-instance mode for faster window opens
Keeps a persistent GTK process alive so subsequent terminal launches
skip full GTK initialisation — new windows open nearly instantly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 17:52:18 +01:00
f59b00a23d desktop: rename gnome.nix → desktop.nix; switch to nemo
- Rename settings/gnome.nix to settings/desktop.nix (file no longer
  has anything to do with GNOME)
- Replace nautilus with nemo — starts fast, has a hamburger menu,
  no Tracker3/Mutter D-Bus dependencies
- Exclude thunar (pulled in by XFCE) via environment.xfce.excludePackages
- Remove nautilus Tracker dconf workaround (no longer needed)
- Update $mod+E keybind and common.nix import accordingly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 17:50:01 +01:00
33b2c3815c hyprland: add swayosd for volume/brightness OSD
Replaces bare pamixer/brightnessctl key bindings with swayosd-client
so volume and brightness changes show an on-screen indicator bar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 17:37:02 +01:00
60ab2d6b70 nautilus: disable tracker search to fix slow startup
Outside GNOME, Tracker3 isn't running. Nautilus connects to it at
startup for recursive search, hitting a D-Bus timeout and causing
~4s launch delay. Setting recursive-search=never prevents the attempt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 17:22:47 +01:00
3ea1b316fe desktop: drop qt block; let stylix own qt.platformTheme
qt.platformTheme conflicted with stylix's qt5ct setting after
removing GNOME. Stylix handles Qt theming so the block is redundant.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 17:18:43 +01:00
7791d3d9e5 desktop: replace GNOME with XFCE fallback; fix keyring popup
Remove GNOME DE (gnome-keyring, tracker, extensions, shell dconf
settings) and replace with a lightweight XFCE fallback session so
ly offers an alternative if Hyprland fails after an update. Add
nautilus explicitly as a standalone package. Eliminates the keyring
unlock prompt that appeared in Nautilus on Hyprland sessions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 17:14:44 +01:00
359b6651db hosts: disable local builds on Macbook; add garnix cache for Gaming
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 12:42:27 +01:00
81b5fc84d1 authelia: extend session inactivity timeout to 2h
Inactivity was 5m which caused logouts while working in VS Code
(no new page loads). Bumped inactivity to 2h, expiration to 12h.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 12:42:17 +01:00
5eeab405c0 services: disable built-in auth on *arr stack; update readme
Radarr, Sonarr, Prowlarr, and Bazarr now patch their auth setting to
None on every service start — auth is handled by Authelia at the proxy.

Also updates readme with missing services, settings files, and flake
inputs added since the last readme refresh.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 12:27:19 +01:00
ad7a45d143 code-server: fix Nix string interpolation in Firefox CORS patch
Escape \${q} as ''${q} so Nix doesn't try to evaluate it as a
variable in the activation script string.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 12:25:30 +01:00
099ff8a093 code-server: patch Claude Code extension for Firefox CORS fix
Adds a NixOS activation script that patches the crossorigin attribute
onto the Claude Code extension's stylesheet link, fixing broken CSS in
Firefox due to stricter CORS handling than Chrome.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 12:10:11 +01:00
forgejo-actions[bot]
9d5a2b43f1 flake: update inputs 2026-05-16 10:21:00 +00:00
e59c239257 code-server: pin package to nixpkgs unstable for newer VS Code version
Adds nixpkgs unstable as a flake input and exposes pkgs-unstable via
specialArgs. code-server uses the unstable package so the Claude Code
extension version requirement is satisfied.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 11:17:25 +01:00
b6eb5c055d services: add code-server web IDE at code.nordhammer.it
Deploys code-server on FredOS-Mediaserver (port 4444, user fred) with
Authelia one_factor auth and nginx reverse proxy. Includes claude-code
in system packages for use in the integrated terminal.

Also fixes anyrun launcher width to absolute 350px (was a tiny fraction).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 10:59:35 +01:00
0be8faced3 Update hosts/FredOS-Macbook.nix 2026-05-16 02:38:20 -07:00