Commit Graph

140 Commits

Author SHA1 Message Date
Miguel Palhas 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 Palhas 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 Palhas 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 Palhas 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 Palhas 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
naps62 c57a430fd6 feat: chrome and agent-browser only on yolo
Drops zen-browser and downloads-cleanup. agent-browser was a global npm
install; nixpkgs has it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 12:57:25 +00:00
naps62 a8880c1441 docs: record why the igpu is unused
pve hardcodes egl-headless with no rendernode, and the nvidia egl vendor
outranks mesa, so virgl lands on llvmpipe.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 12:50:15 +00:00
naps62 c4a20f6152 docs: record the proxmox vm settings
vga: virtio-gl, serial0 and ovmf are load-bearing and live only on the
hypervisor, so a rebuilt vm would regress silently.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 12:47:02 +00:00
naps62 4ce204d46f chore: drop postgresql from yolo
Nothing connects to it — every database here runs in a container.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 12:15:06 +00:00
naps62 38bfd6a76d fix: raise sunshine fd limit
It leaks a /dev/dri/renderD fd per encoder probe, hits the 1024 default,
and mesa can then no longer dlopen the GBM driver — capture degrades to a
black picture with no error surfaced.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 09:05:28 +00:00
naps62 37e44b9a3d fix: sunshine capture value is wlr, not wlgrab
wlgrab is the name the backend logs under, not a valid config value.
Sunshine rejects it, then starts anyway with no encoder — moonlight sees
a 503.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 08:51:55 +00:00
naps62 352b87192d fix: disable zram on yolo, use aoe-with-web
zram wedged shutdown faulting stored pages back in, and the VM already
has a real swap partition. aoe-with-web is the same binary plus `serve`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 08:12:48 +00:00
naps62 4bea767b2e feat: serial console on yolo
Needed before switching to vga: virtio-gl, which leaves no QEMU console
surface for noVNC or screendump.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 08:05:24 +00:00
naps62 bb65e34bca chore: move yolo flake path to ~/tea/nixos-config
Also overrides the home-manager nh.flake, which sets NH_FLAKE and was
still pointing at the ~/projects default, so bare `nh home switch` never
resolved on this host.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 07:38:15 +00:00
naps62 77bdbe108d feat: add yolo host
New NixOS VM on proxmox, replacing the Ubuntu box. Reuses the existing
Hyprland config; remote access is Sunshine/Moonlight rather than xrdp,
since xrdp cannot drive a wayland compositor.

Two fixes here are not yolo-specific and affect any fresh install:
git at system level (nix needs it for the type = "git" hyprland input,
but git only came from home-manager, so neither rebuild could run), and
dropping the yogurt input, whose private repo made home-manager
un-evaluatable without GitHub auth.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 06:30:54 +00: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 5ed3026903 updates 2026-07-29 15:49:43 +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 Palhas 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 Palhas 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 Palhas 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 Palhas 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 Palhas 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 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 Palhas 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 4aa2e67794 wip 2026-05-08 13:21:42 +01:00
Miguel Palhas d48267c8ad wip 2026-04-09 18:16:31 +01:00
Miguel Palhas 50f25bc6a4 wip 2026-04-06 16:20:54 +01: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 9af55f9e16 wip 2026-03-21 16:01:20 +00:00
Miguel Palhas 5939224604 wf-recorder 2026-02-18 13:49:44 +00:00
Miguel Palhas a5089b77e9 termfilechooser 2026-02-17 20:35:11 +00:00
Miguel Palhas b6efd4d27b noctalia with fingerprint lock screen 2026-02-17 11:28:12 +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 f9dfa0404e wip 2026-02-04 14:02:11 +00:00
Miguel Palhas 746487377e ipv6 2025-12-03 12:14:49 +00:00
Miguel Palhas 669e590c60 wip 2025-11-28 15:02:37 +00:00
Miguel Palhas 57e1e116c2 prusa slicer mime type 2025-11-25 14:03:31 +00:00
Miguel Palhas 265d97cecc wip 2025-11-24 13:21:00 +00:00
Miguel Palhas fa97d8857d remove flashforge 2025-11-17 14:30:37 +00:00
Miguel Palhas 488721bc7c updaates 2025-10-30 14:20:48 +00:00