Commit Graph
100 Commits
Author SHA1 Message Date
Miguel PalhasandClaude Opus 5 189196fb88 chore: pin the noctalia input to a rev
CI / lint (pull_request) Successful in 29s
CI / eval (pull_request) Successful in 1m51s
noctalia publishes no binary cache, so `flake update` means a local Qt/QML
build every time. quickshell comes from nixpkgs and is cached, so the
nixpkgs follows stays; only the noctalia ref is pinned.

Pinned to the rev already locked, so this rebuilds nothing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 12:29:22 +01:00
Miguel PalhasandClaude Opus 5 849cd3a5ef chore: sync aoe structured-session toggle from yolo
CI / lint (push) Successful in 38s
CI / eval (push) Successful in 2m26s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 12:22:23 +01:00
Miguel PalhasandClaude Opus 5 013d41aa72 feat: add the pi coding agent harness
CI / lint (push) Successful in 33s
CI / eval (push) Successful in 2m9s
Packages the prebuilt pi release binary and puts it on PATH alongside
Claude Code, Codex and opencode.

pi has no `@file` imports in context files, so the shared agent-skills
fragments are concatenated into ~/.pi/agent/AGENTS.md. Skills need no
wiring: pi already reads ~/.agents/skills.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 11:57:24 +01:00
Miguel PalhasandClaude Opus 5 0a4dd8a192 fix: bypass the ssh agent for github on yolo
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 2m4s
gpg-agent is the ssh agent here, and signing blocks forever on a pinentry
prompt with no TTY, so git push hung right after "Server accepts key".
The key file has no passphrase, so read it directly instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 21:11:28 +01:00
Miguel PalhasandClaude Opus 5 8efd0a1139 feat: give yolo a distinct amber cursor
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 1m56s
yolo's desktop is only ever seen through a Moonlight window, so its cursor
needs to be tellable apart from the client's at a glance. Bibata-Modern-Amber
differs in both colour and silhouette from Nordzy.

Threads the theme through an option rather than setting it in one place: it
was hardcoded in cursor.nix, in hl.env, in the setcursor autostart, and twice
more in darkman's mode scripts, which re-set it on every light/dark switch and
would have reverted the override.

Also drops a stale hl.env pointing HYPRCURSOR_THEME at rose-pine-hyprcursor,
which no host installs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 16:06:01 +01:00
Miguel PalhasandClaude Opus 5 de527df7c4 feat: stream yolo at 4k
virtio-gpu exposes no NVENC/VAAPI, so sunshine software-encodes. Measured
x264 (superfast+zerolatency) on the 8 vCPUs: 73fps at 2160p against 135fps
at 1440p, so a 60fps client keeps roughly 20% margin.

Also brings the drifted agent-of-empires config upstream, which the
mutableFiles guard required before switching.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 15:56:56 +01:00
Miguel PalhasandClaude Opus 5 c7eb5796ea fix: grant sunshine access to /dev/uinput
hardware.uinput, enabled by services.sunshine, sets /dev/uinput to
root:uinput 0660 and adds no members to the group. Sunshine runs as a
user service, so it failed to create the virtual mouse, keyboard and
gamepads and the stream carried no input.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 15:43:55 +01:00
Miguel Palhas 3ee2f4db10 feat: run the aoe web dashboard as a service
CI / lint (push) Successful in 33s
CI / eval (push) Successful in 2m12s
Auth is off in the unit: traefik + authelia front it, and aoe rejects
--auth none on a wildcard bind unless --behind-proxy says so.
2026-08-18 09:28:32 +01:00
Miguel Palhas 886af193a2 Merge remote-tracking branch 'origin/main' into images
CI / lint (push) Successful in 28s
CI / eval (push) Successful in 1m55s
2026-08-18 09:18:29 +01:00
Miguel PalhasandClaude Opus 5 4a8f8d330c fix: make clip2path safe and ssh-aware
Text paste went through `kitty @ send-text`, which has no bracketed
paste, so multi-line clipboard text ran line by line in a shell. Route
text through `kitty @ action paste_from_clipboard` instead and keep
send-text for the image path only.

Over SSH the typed path pointed at the local /tmp and the remote process
could not read it. Read the focused window's foreground processes from
`kitty @ ls`, and when one of them is an ssh client, scp the image to
that host and type the remote path. Nothing is typed into the focused
app but a path, so this still works when the target is a TUI rather than
a shell. The real ssh process is preferred over the `kitten ssh`
wrapper, whose long options the argument parser does not understand.

Also: mktemp instead of a timestamp that collides within a second,
a prune of clip files older than a day, image/png preferred over
whatever format the source advertises first, and the clipboard tools
pinned so the script does not depend on kitty's inherited PATH.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 08:30:20 +01:00
Miguel PalhasandClaude Opus 5 92a7273ff3 fix: let yolo inherit the common claude model
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 1m53s
yolo pinned model to claude-fable-5[1m] while common sets opus[1m].
/model writes the live value into ~/.claude/settings.json, so any switch
away from fable-5 left the file drifted and mutableFiles aborted
activation on the next `nh home switch`. Dropping the override makes the
repo agree with the model actually in use.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 08:24:00 +01:00
Miguel PalhasandClaude Opus 5 05037e40d8 refactor: dissolve the agent-deck tmux block
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 1m59s
The block came from the agent-deck installer and was carried in wholesale
when the config was ported to nix. The tool is not installed on any host
and nothing else references it, and now that the file is rendered
read-only from the nix store the installer could not update its own block
anyway.

It re-declared default-terminal, history-limit and mouse at their existing
values, and escape-time at 0 — which quietly overrode the deliberate 25ms
two sections above it, along with the comment explaining that 0 breaks Alt
keys over SSH. Keeps the parts that do real work: the alternate-screen
override, extended keys, and the mouse scroll and drag-to-copy bindings.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 08:17:45 +01:00
Miguel PalhasandClaude Opus 5 d417a27f2d feat: make the clipboard work across tmux, ssh and hosts
CI / lint (push) Successful in 31s
CI / eval (push) Successful in 2m1s
tmux copy bindings piped to xclip, which is X11-only and never worked
under Hyprland or over SSH, and set-clipboard was never enabled, so the
vi-mode `y` binding was dead too. Route both through OSC 52 instead.
terminal-features has to name the outer terminal explicitly: tmux skips
OSC 52 silently when the terminfo entry does not claim the capability,
which is the common case for an SSH session on xterm-256color.

Neovim only falls back to OSC 52 when it finds no clipboard tool, but
wl-clipboard is installed on every host, so over SSH it wrote the remote
clipboard. Pin the OSC 52 provider for SSH sessions only.

Moonlight and Sunshine have no clipboard channel in the protocol, so
nothing at the terminal layer can help there. Add kdeconnect on all three
hosts for that, and start its indicator from Hyprland — kdeconnectd is
DBus-activated and nothing else brings it up at login.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 08:14:17 +01:00
Miguel PalhasandClaude Opus 5 c79436d340 refactor: fix yolo config drift and restart traps
CI / lint (push) Successful in 32s
CI / eval (push) Successful in 2m7s
yolo's .claude/settings.json was a full fork of the common file, not the
narrow override its comment claimed: sandbox, defaultMode, voiceEnabled,
$schema and feedbackSurveyState were absent, and five more keys had
diverged. It now holds only yolo's overrides and merges over common via
recursiveUpdate. sandbox.enabled stays pinned false — inheriting it would
newly sandbox every Bash call on a box built for unattended agents.

mutableFiles maps a source back to a repo path for the "bring changes
upstream" hint, which only works inside the flake tree. Generated sources
would print a /nix/store path to copy onto, so add upstreamPath.

rev and rev-deploy set Restart=always with RestartSec=2, which burns
systemd's default 5-starts-per-10s budget and parks the unit in `failed`
until a manual reset-failed. StartLimitIntervalSec=0 lifts the cap.

programs.nh.flake and home.mutableFilesRepoPath become mkDefault so yolo
overrides them plainly instead of with mkForce in three places.

Also clears the outstanding nixfmt and statix findings. The yolo system
derivation hash is unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 07:32:08 +01:00
Miguel Palhas 6a08ec3805 Merge remote-tracking branch 'origin/moonlight'
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 2m5s
2026-08-17 18:22:56 +01:00
Miguel Palhas 51f6cb013f fix: drop sunshine fec_percentage to 1
At the default 20, FEC mangles large frames and moonlight draws horizontal
bands over an otherwise-fine stream, with no error on either side.
2026-08-17 18:22:52 +01:00
Miguel PalhasandClaude Opus 5 fbf5ce2616 fix: stream real frames from yolo instead of a black picture
Three separate faults, each producing a black Moonlight stream:

- sunshine's wlr backend takes wlr-screencopy's dmabuf path, which on this
  virtio-gpu returns empty buffers. Reproduced locally over 127.0.0.1, so it
  is not the network or the client. Switch to kms capture.
- hypridle locked the session and cut dpms, blanking the captured output with
  no console to unlock from. Disable it on this host.
- qemu picked the nvidia render node by readdir order, so virgl fell back to
  llvmpipe. Pin renderD128 via the VM's args.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 17:48:41 +01:00
Miguel PalhasandClaude Sonnet 5 df319322b9 fix: authenticate nix github fetches to dodge the 60/hr rate limit
CI / lint (push) Successful in 29s
CI / eval (push) Failing after 20m25s
Unauthenticated flake input fetches from github.com were hitting 429.
Token lives in /etc/nix/github-token.conf (root:root 600, out-of-band —
never in git or /nix/store) and nix.conf !includes it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 15:03:31 +01:00
Miguel PalhasandClaude Sonnet 5 65b95bb1fa feat: enable moonlight streaming client on konishi
CI / lint (push) Successful in 26s
CI / eval (push) Failing after 17m42s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 14:37:44 +01:00
Miguel PalhasandClaude Sonnet 5 352700fdab fix: point nvchad-starter to git.naps.pt/naps62/nvim-config, add /bin/bash symlink
CI / lint (push) Successful in 29s
CI / eval (push) Failing after 20m59s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 14:29:39 +01:00
Miguel Palhas a8593d9157 wl kbptr
CI / lint (push) Successful in 32s
CI / eval (push) Failing after 1m39s
2026-08-17 13:39:37 +01:00
Miguel Palhas af28175e1c home: clear four eval warnings
All pre-existing, all mechanical:

- pointerCursor no longer implies generation from the block alone; set enable.
- top-level elixir_1_18 alias is deprecated for the beamPackages set. Same
  derivation, 1.18.4 either way.
- pkgs.system -> pkgs.stdenv.hostPlatform.system.
- fzf and atuin both bind Ctrl-R. Atuin is sourced last so it already owned the
  key; historyWidget.zsh.command = "" states that explicitly and satisfies
  home-manager's conflict check. Behaviour is unchanged and fzf keeps Ctrl-T
  and Alt-C.
2026-08-17 13:39:37 +01:00
Miguel Palhas 4028c55d56 hyprland: add wl-kbptr, patched for HiDPI and rotated outputs
Keyboard control of the mouse pointer. SUPER+G labels detected targets and
clicks one; SUPER+SHIFT+G falls back to tile -> bisect for anything detection
misses.

Stock wl-kbptr 0.4.1 is unusable on this setup, for two unrelated reasons:

- Target detection is hardcoded for ~1080p. filter_rects() discards any
  candidate with height >= 50 or width >= 500, so on a 4K screen at scale = 1
  nearly every real control is dropped for being "too big" and only emoji and
  avatars survive — a full Slack window produced ~8 labels, all on images.

- On the rotated monitor the pointer landed in the wrong place. move_pointer()
  takes output->width/height from xdg_output.logical_size, which is already
  rotated, then applies the transform again. Asking for global (4000,1000) on
  DP-2 landed at (4286,3726); the double rotation predicts (4301,3736).

Neither is exposed as a config option, hence the overrideAttrs. Sizes in the
config file are likewise doubled: wl-kbptr paints raw cairo onto a layer
surface and never sees a scale factor, so upstream's defaults render half-size.

Both binds are pidof-guarded: wl-kbptr only exits on a keypress, so an overlay
that loses focus first sits there holding an exclusive keyboard grab.
2026-08-17 13:39:37 +01:00
Miguel Palhas 1f94b29d56 wip
CI / lint (push) Successful in 34s
CI / eval (push) Failing after 1m41s
2026-08-17 09:18:11 +01:00
Miguel Palhas f7947375e3 wip
CI / lint (push) Successful in 33s
CI / eval (push) Failing after 1m37s
2026-08-10 09:49:14 +01:00
Miguel Palhas 3d9c273fd3 wip
CI / lint (push) Successful in 33s
CI / eval (push) Failing after 1m41s
2026-07-30 13:18:47 +01:00
Miguel Palhas 8cfa920ea8 wip
CI / lint (push) Successful in 33s
CI / eval (push) Failing after 1m40s
2026-07-29 16:08:21 +01:00
Miguel Palhas 5ed3026903 updates 2026-07-29 15:49:43 +01:00
Miguel Palhas a1c03448e9 wip
CI / lint (push) Successful in 32s
CI / eval (push) Failing after 1m40s
2026-07-16 17:59:22 +01:00
Miguel PalhasandClaude Opus 4.8 938a900fbe feat(home): package Claude Desktop and T3 Code, with per-host UI scaling
Add two Electron AI desktop apps built from their official upstream
binaries and wire them into the home config (x86_64 only):

- claude-desktop: Anthropic's official Linux .deb, unpacked via dpkg +
  autoPatchelfHook. Wrapper disables the SUID sandbox (nix store can't
  set it up) and adds the NixOS GL driver path so it hardware-accelerates
  instead of falling back to software rendering.
- t3-code: pingdotgg/t3code AppImage via appimageTools.wrapType2, with
  desktop entry + hicolor icons.

Both share a new custom.aiApps.deviceScaleFactor option feeding
--force-device-scale-factor; konishi's 4K@1x monitors set it to "1.5",
arrakis stays native.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 14:06:55 +01:00
Miguel PalhasandClaude Opus 4.8 f64cc3a803 fix(ci): fetch yogurt input over https so CI can eval without ssh key
CI / lint (push) Successful in 1m5s
CI / eval (push) Failing after 2m28s
The yogurt flake input was pinned via git+ssh://, which the Gitea CI
runner can't fetch (no GitHub SSH key), failing the eval job. Switch to
git+https:// — repo is anonymously cloneable, same rev/narHash.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 11:27:18 +01:00
Miguel Palhas 79d4bcc989 fixing
CI / lint (push) Successful in 1m8s
CI / eval (push) Failing after 2m31s
2026-07-08 10:15:41 +01:00
Miguel Palhas 3c7a65b190 retroarch
CI / lint (push) Successful in 1m21s
CI / eval (push) Failing after 2m29s
2026-07-06 16:28:40 +01:00
Miguel Palhas eea9bdb095 sunshine fixes 2026-07-06 09:54:23 +01:00
Miguel PalhasandClaude Opus 4.8 c4a5515297 gaming: move home module to gaming/ dir, add moonlight client toggle
CI / lint (push) Successful in 1m5s
CI / eval (push) Failing after 2m20s
Mirror the hosts/common/features/gaming/ layout on the home side: turn the
single gaming.nix into a gaming/ directory. Moonlight (the client
counterpart to the Sunshine host) becomes moonlight.nix, gated by its own
custom.gaming.moonlight option so a host can install just the streaming
client without the full launcher/Proton toolkit (custom.gaming.enable).

- gaming.nix -> gaming/default.nix (imports moonlight.nix)
- gaming/moonlight.nix: custom.gaming.moonlight -> moonlight-qt
- arrakis: import gaming module, set custom.gaming.moonlight = true
  (replaces the one-off home.packages line)
- konishi: update import path to the directory

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 09:49:04 +01:00
Miguel PalhasandClaude Opus 4.8 afd9646189 zen: switch from twilight nightly to stable channel
CI / lint (push) Successful in 1m8s
CI / eval (push) Failing after 2m24s
twilight re-publishes under the same 1.22t tag, so the pinned hash goes
stale and `nh home switch` fails with a fixed-output hash mismatch. Move
to the stable `default` package (branded zen-beta, 1.21.5b), which uses
proper versioned releases.

- zen-browser.nix: twilight-official -> default
- xdg.nix: zen-twilight.desktop -> zen-beta.desktop mimeapp defaults
- flake.lock: bump zen-browser input

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 09:38:31 +01:00
Miguel Palhas eab82e8ff0 claude updates 2026-07-06 08:45:22 +01:00
Miguel PalhasandClaude Opus 4.8 75198e4429 konishi: autologin straight into hyprlock
CI / lint (push) Successful in 1m11s
CI / eval (push) Failing after 2m28s
SDDM auto-logs naps62 in and Hyprland locks immediately via hyprlock
(exec-once), so a cold boot lands on the themeable lock screen instead of
the SDDM greeter. Safe here (no FDE makes SDDM-vs-autologin marginal) and it
lets Moonlight reach the box after a cold boot, not just from suspend, since
Sunshine only runs once a session exists. konishi-only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 15:55:22 +01:00
Miguel PalhasandClaude Opus 4.8 4f2438d383 hyprland: replace noctalia locker with hyprlock
noctalia's built-in lock screen is hard to theme and opaque to logind
(LockedHint never flips). Swap to hyprlock: clean dark theme, drive it from
hypridle (idle + before-sleep via loginctl lock-session) so logind tracks
lock state, and add a $mod CTRL+L manual lock bind. Applies to both hosts
that share this module (konishi + arrakis).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 15:55:22 +01:00
Miguel PalhasandClaude Opus 4.8 923b884eff gaming: pin Steam Big Picture + games to DP-1/ws3
Big Picture shares the plain `steam` WM_CLASS, so it opened on whatever
monitor the cursor was on rather than the streamed one; match its title
instead and pin to ws3 (DP-1's persistent workspace, what the stream
captures). Move the steam_app_ game rule from ws6 to ws3 too so games and
Big Picture share one streamed workspace and launching a game doesn't flip
DP-1 to a different workspace.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 14:59:22 +01:00
Miguel PalhasandClaude Opus 4.8 624315821b konishi: enable Wake-on-LAN on enp5s0
Arm magic-packet WoL on the Intel igc NIC (re-applied every boot) so
Moonlight can wake the box from suspend to stream. Still needs "Wake on
LAN" enabled in BIOS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 14:59:22 +01:00
Miguel PalhasandClaude Opus 4.8 4d4f9a0b5e steam: stop Big Picture GPU sandbox crash (-cef-disable-gpu-sandbox)
Steam's CEF UI intermittently crashed its GPU child (exit_code=8704) on
NVIDIA+Wayland, falling back to CPU rendering and making Big Picture a
slideshow at 4K/HiDPI. Bake -cef-disable-gpu-sandbox into every steam
invocation via extraArgs so it covers all entry points (desktop, CLI,
Sunshine's Big Picture tile) — launch flags only apply on the invocation
that first starts Steam.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 14:59:22 +01:00
Miguel PalhasandClaude Opus 4.8 e4b96ba019 konishi/hyprland: launch Steam games fullscreen on DP-1
CI / lint (push) Successful in 1m6s
CI / eval (push) Failing after 2m23s
Steam/Proton titles run under XWayland with WM_CLASS steam_app_<appid>.
Without a rule they open tiled on whatever monitor Steam is on (the
primary, bottom-left HDMI-A-1). Match steam_app_.* and send them
fullscreen to workspace 6 (DP-1, top-left). Native games use their own
class and can be added individually.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 14:16:29 +01:00
Miguel PalhasandClaude Opus 4.8 fa9be89d68 flake: bump nixpkgs (sunshine 2025.924 -> 2026.516, security fix)
CI / lint (push) Successful in 1m4s
CI / eval (push) Failing after 2m31s
nixpkgs 2026-06-10 -> 2026-06-29. Pulls in Sunshine 2026.516.143833,
which ships critical security fixes (flagged in the Sunshine web UI).
CUDA/NVENC override carries over: verified the new build still probes
h264_nvenc / hevc_nvenc / av1_nvenc.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 17:04:50 +01:00
Miguel PalhasandClaude Opus 4.8 a273e10d29 sunshine: enable NVENC hardware encoding on NVIDIA
Default nixpkgs sunshine is built -DSUNSHINE_ENABLE_CUDA=FALSE, so every
NVENC probe died with "Couldn't scale frame" and it fell back to CPU
x264. Fix:

- package = sunshine.override { cudaSupport = true; } — gives it the
  CUDA scaling/colour-conversion path. Verified: probe now finds
  h264_nvenc / hevc_nvenc / av1_nvenc.
- LD_LIBRARY_PATH=/run/opengl-driver/lib on the service so libcuda.so.1
  (NVIDIA driver) is discoverable.
- capSysAdmin = false — Hyprland/wlroots capture via wlr-screencopy needs
  no CAP_SYS_ADMIN, and the setcap wrapper's secure-exec mode would strip
  LD_LIBRARY_PATH and break libcuda loading.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 10:56:38 +01:00
Miguel PalhasandClaude Opus 4.8 c81454c680 claude: sync settings.json (model opus[1m], tui fullscreen)
Bring the live ~/.claude/settings.json changes upstream so the
mutable-file guard stops aborting home activation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 10:50:58 +01:00
Miguel PalhasandClaude Opus 4.8 7fff73e776 gaming: add Steam/Sunshine stack + user-space toolkit
Host (hosts/common/features/gaming/):
- move steam.nix under gaming/, add gamemode + gamescope (capSysNice)
- sunshine.nix: Sunshine stream host for Moonlight/Nvidia Shield
  (openFirewall, capSysAdmin for Wayland/KMS capture, autoStart)

Home (home/common/programs/gaming.nix):
- reusable custom.gaming module: Lutris, Heroic, ProtonPlus,
  protontricks, MangoHud, vkbasalt, vulkan-tools
- NVIDIA-specific extras isolated behind custom.gaming.nvidia

Wire konishi: host imports ../gaming; home enables custom.gaming
with nvidia = true.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 10:50:38 +01:00
Miguel Palhas ff408faf69 yogurt
CI / eval (push) Failing after 3m22s
CI / lint (push) Successful in 55s
2026-07-03 07:14:01 +01:00
Miguel Palhas 1f89394e40 ssh
CI / lint (push) Successful in 2m26s
CI / eval (push) Successful in 5m34s
2026-07-01 18:42:17 +01:00
Miguel PalhasandClaude Opus 4.8 195ee328de spicetify: switch to comfy theme (rose-pine)
CI / eval (push) Successful in 3m7s
CI / lint (push) Successful in 1m15s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 10:57:36 +01:00
Miguel PalhasandClaude Opus 4.8 233939d77d ssh: auto-forward yolo ports 47100/47101
Add LocalForward entries for 47100/47101 to the yolo host, and set
LogLevel=ERROR to silence the INFO-level "channel open failed: connection
refused" noise when a forwarded port has nothing listening yet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 10:57:36 +01:00
Miguel PalhasandClaude Opus 4.8 498cea267d home: add nh + bump zen-browser
Enable the home-manager programs.nh module (installs nh, sets NH_FLAKE so
`nh home switch` finds this repo). Re-pin zen-browser to the 2026-06-28
revision to clear a stale twilight fixed-output-derivation hash mismatch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 10:57:36 +01:00
Miguel PalhasandClaude Opus 4.8 d9000c0d00 ci: eval configs via nix eval (allow IFD) instead of flake check --no-build
CI / lint (push) Successful in 1m11s
CI / eval (push) Successful in 3m9s
user.nix fetches SSH keys via fetchurl+readFile (import-from-derivation);
--no-build blocks the IFD fetch, failing eval in a fresh store. Evaluating
the toplevel/activation drvPaths permits IFD without building the toplevels.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 20:34:26 +01:00
Miguel PalhasandClaude Opus 4.8 82205727cd ci: make lint steps non-gating (step-level continue-on-error)
CI / lint (push) Successful in 1m25s
CI / eval (push) Failing after 2m6s
Job-level continue-on-error still rendered red and skipped statix/deadnix
after nixfmt failed. Step-level lets all three run without failing the job.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 18:56:33 +01:00
Miguel PalhasandClaude Opus 4.8 817c2f4f5e System tweaks, gitea CI, boot limit
CI / lint (push) Failing after 1m52s
CI / eval (push) Failing after 2m38s
- nix: keep-outputs + keep-derivations (preserve devshells across GC)
- zramSwap + fstrim
- systemd-boot configurationLimit = 20
- expand .gitignore (editor/AI/stray dotfiles); track statix.toml
- gitea Actions CI: blocking flake-check eval + informational statix/deadnix/nixfmt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 18:52:20 +01:00
Miguel PalhasandClaude Opus 4.8 39e6276c7d Session overhaul: dev tooling, cleanup, theming, fixes
Tooling:
- nh + nvd/nom/statix/deadnix/comma (new programs/nix.nix); GC via nh clean
- zoxide (cd), atuin, just, lazydocker, dust, duf, difftastic (git dft)

Structure:
- rename desktop -> konishi; homeConfigurations -> "user@host" for nh autodetect

Removals (heavy/unused):
- android-studio, unity/.NET/omnisharp/vscode, kicad, zoom, calibre,
  google-fonts, nerd-dictation

Screen recording:
- kooha + vokoscreen-ng + `webcam` corner-cam command/window-rule

Fixes:
- WEBKIT_DISABLE_DMABUF_RENDERER moved to common (electron/tauri on intel)
- kitty pinned to Catppuccin-Mocha; darkman no longer toggles kitty/claude
- claude theme dark + statusline locale fix
- ssh: migrate to settings API + multiplexing/keepalive/AddKeysToAgent;
  gpg-agent enableSshSupport
- silence hyprland configType / gtk4 / xdg userDirs deprecations

Flake hygiene:
- follows=nixpkgs for foundry/hardware/rose-pine/zen/spicetify (10->5 nixpkgs)
- zoxide _ZO_DOCTOR=0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 18:17:25 +01:00
Miguel Palhas 474bd840d2 statix 2026-06-27 14:18:03 +01:00
Miguel Palhas a2b4d0f479 deadnix 2026-06-27 14:17:02 +01:00
Miguel Palhas 4eeef628b0 a few more additions 2026-06-27 14:16:30 +01:00
Miguel Palhas 559edbe89a various fixes 2026-06-27 11:21:45 +01:00
Miguel Palhas 753426fd91 wip 2026-06-20 07:58:50 +01:00
Miguel Palhas 8a7439fe1d wip 2026-06-16 11:45:16 +01:00
Miguel Palhas bb42e115d5 disable kitten ssh 2026-06-16 11:45:16 +01:00
Miguel Palhas 0f1c9235e9 wip 2026-05-28 15:24:48 +01:00
Miguel Palhas 09b1b838b0 wip 2026-05-26 09:35:21 +01:00
Miguel Palhas 4aa2e67794 wip 2026-05-08 13:21:42 +01:00
Miguel Palhas efe63cb0a9 wip 2026-04-22 15:28:04 +01:00
Miguel Palhas 3d881785d5 wip 2026-04-09 18:16:34 +01:00
Miguel Palhas d48267c8ad wip 2026-04-09 18:16:31 +01:00
Miguel Palhas 94e1d17ad7 wip 2026-04-07 17:16:17 +01:00
Miguel Palhas 92291d7a12 wip 2026-04-07 17:16:17 +01:00
Miguel Palhas 50f25bc6a4 wip 2026-04-06 16:20:54 +01:00
Miguel Palhas ee01610675 godot 2026-04-06 16:01:28 +01:00
Miguel Palhas 261b5dd0b2 wip 2026-03-29 11:57:11 +01:00
Miguel Palhas 7c41597269 wip 2026-03-28 17:00:24 +00:00
Miguel Palhas 02a7d44b57 remmina 2026-03-26 18:35:35 +00:00
Miguel Palhas 6f67e5f451 fixes 2026-03-26 14:30:47 +00:00
Miguel Palhas 6c397bc61a fixes 2026-03-25 16:40:15 +00:00
Miguel Palhas be52931cbe copying claude's settings.json instead of symlinking 2026-03-25 15:14:32 +00:00
Miguel Palhas 9af55f9e16 wip 2026-03-21 16:01:20 +00:00
Miguel Palhas beb62ba7e0 wip 2026-03-20 10:32:04 +00:00
Miguel Palhas a8e27ee9d3 wip 2026-03-18 09:41:46 +00:00
Miguel Palhas c9f554e276 yazi updates 2026-03-03 10:43:56 +00:00
Miguel Palhas 6385102d3d amp code 2026-03-02 13:13:35 +00:00
Miguel Palhas 1e1238a6c1 several updates 2026-02-25 21:53:21 +00:00
Miguel Palhas 6584bf521f wip 2026-02-18 14:57:48 +00:00
Miguel Palhas f4005787ba better kitty 2026-02-18 14:56:14 +00:00
Miguel Palhas 5939224604 wf-recorder 2026-02-18 13:49:44 +00:00
Miguel Palhas bd80c370bf auto switch vim theme 2026-02-18 10:20:18 +00:00
Miguel Palhas a5089b77e9 termfilechooser 2026-02-17 20:35:11 +00:00
Miguel Palhas abdf71f7dc desktop noctalia configs 2026-02-17 12:18:07 +00:00
Miguel Palhas 1219e2e69f wip 2026-02-17 11:44:46 +00:00
Miguel Palhas 94666c75a0 wip 2026-02-17 11:40:09 +00:00
Miguel Palhas b6efd4d27b noctalia with fingerprint lock screen 2026-02-17 11:28:12 +00:00
Miguel Palhas 0993a23874 disable hyprfocus 2026-02-16 19:03:59 +00:00
Miguel Palhas ae1ac19436 auto rotate wallpapers 2026-02-16 19:00:27 +00:00
Miguel Palhas 6caa433b50 darkman: kitty and claude support 2026-02-16 17:56:31 +00:00
Miguel Palhas e8086e8528 Several hyprland updates:
plugins, new cursor, light/dark themes, new app launcher, ...
2026-02-16 17:33:40 +00:00
Miguel Palhas 48225afa6d claude-code-nix 2026-02-15 16:47:55 +00:00
Miguel Palhas c9ca5b2952 deps updates 2026-02-15 16:46:23 +00:00