Commit graph

238 commits

Author SHA1 Message Date
d0095af4fb gaming: disable IPv6 to stop NetworkManager connectivity flap
LAN has no v6 route, so AAAA lookups succeed but connect fails. NM's
connectivity probe was reporting "limited" at boot (GNOME's "?" icon)
until the next 5-min repoll cleared it.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 13:00:59 +01:00
9f0b220427 Corrected sensors. 2026-04-20 11:34:49 +01:00
50b66a3262 Adding sensors 2026-04-20 11:33:29 +01:00
83eed3f8a0 Merge branch 'main' of github.com:ediblerope/nixos-config 2026-04-20 11:20:11 +01:00
97e4cd49d7 Adding usbutils 2026-04-20 11:19:11 +01:00
Claude
2b09eae3fb
facetimehd: fix overlay to extend linuxPackages_latest directly
Overriding linuxPackagesFor doesn't affect the already-evaluated
linuxPackages_latest attribute. Extend it directly so the patched
facetimehd is picked up by boot.kernelPackages = pkgs.linuxPackages_latest.

https://claude.ai/code/session_01XEMg2HskwRaQW3nrCd1q2z
2026-04-19 11:25:26 +00:00
Claude
293e3306b3
facetimehd: patch out wait_prepare/wait_finish for Linux 7.0
struct vb2_ops dropped wait_prepare and wait_finish in Linux 6.8.
Add a nixpkgs overlay to sed them out of fthd_v4l2.c at build time.

https://claude.ai/code/session_01XEMg2HskwRaQW3nrCd1q2z
2026-04-19 11:18:58 +00:00
806adcfde7 Add gamescope to FredOS-Gaming for per-game FSR upscaling
Lets 7DTD (and other native titles lacking built-in FSR) render
internally at a lower resolution and upscale to the 3440x1440
display via gamescope's FSR filter.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 21:53:15 +01:00
f57c6e99ec Add Last Update widget to Homepage via record-update script
record-update parses nvd diff after switch and writes latest.json;
Homepage polls a local-only nginx listener and renders date/changes/
closure/kernel via a customapi widget.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-16 20:58:19 +01:00
2096330eb8 Theme btop and Homepage via matugen on the mediaserver
Share the wallpaper symlink across all hosts by moving it from gnome.nix
into home-manager/fred.nix, and add matugen templates for btop and the
Homepage dashboard.

The Homepage NixOS module writes custom.css into /etc (read-only), so
bind-mount /var/lib/homepage-custom-css/custom.css over it. A systemd
path unit restarts homepage-dashboard whenever matugen rewrites the
file, so regeneration works without sudo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 20:17:38 +01:00
cb92db7ad8 Revert VSCodium title bar CSS override
Wayland/Mutter forces server-side decorations when the custom title bar
is collapsed, which looked worse than the slim custom bar. Reverting to
stock VSCodium with compact menu + no command center handled in user
settings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 19:51:43 +01:00
362f3b3d86 Collapse VSCodium title bar via height instead of display:none
Using display:none removed the drag region entirely, which caused
GNOME/Mutter to fall back to server-side decorations. Collapsing the
title bar to 0 height keeps VSCodium's frameless state intact.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 19:46:04 +01:00
43a8cb976c Hide VSCodium title bar via workbench.html CSS injection
Override vscodium with a postFixup step that appends a style tag to
workbench.html hiding the titlebar part, so the window sits flush
against GNOME's edge without native or custom decorations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 19:40:31 +01:00
5f31149565 Skip actively seeded files in transcode-hevc via qBittorrent API
Queries qBittorrent for individual file sizes of all active torrents.
Files whose size matches a seeded torrent file are skipped, catching
cross-filesystem copies where hardlink detection doesn't work.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 19:31:37 +01:00
7fe1ccb8a7 Add transcode-hevc script for bulk H.264 to HEVC conversion
Resumable batch script that finds H.264 files, re-encodes to HEVC
(libx265 CRF 24), verifies duration, and replaces originals.
Tracks completed files in /var/lib/transcode-hevc/completed.log.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 10:25:36 +01:00
c8066a1ecb Use legacy 580.xx NVIDIA driver for Quadro M2000 (Maxwell)
The latest 595.x driver dropped Maxwell GPU support. The Quadro M2000
(GM206) requires the legacy_580 branch for CUDA/NVENC to function.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 09:30:17 +01:00
e1f073969b Fix reboot alias auth prompt and minor formatting
Add sudo to reboot alias so it doesn't prompt for password.
Add blank line before networking.hostName in hardware config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 09:23:12 +01:00
Claude
a42d906758
mediaserver: explicitly load NVIDIA kernel modules at boot
On a headless system, services.xserver.videoDrivers doesn't guarantee
the NVIDIA modules load. Add nvidia, nvidia_modeset, nvidia_uvm, and
nvidia_drm to boot.kernelModules explicitly.

nvidia_uvm is particularly critical — without it, CUDA initialisation
fails with CUDA_ERROR_NO_DEVICE, which is exactly what broke Jellyfin
NVENC transcoding.

https://claude.ai/code/session_016jJU8ZtWLSnJQBdbMr5pxK
2026-04-15 07:32:04 +00:00
Claude
98cc3de7bc
jellyfin: enable NVENC hardware transcoding via Quadro M2000
- Add NVIDIA proprietary driver config to FredOS-Mediaserver hardware
  (Maxwell/GM206, open=false, modesetting enabled, headless)
- Enable hardware.graphics for DRM/KMS infrastructure
- Add jellyfin user to video and render groups for device access

After deploying, enable NVENC in Jellyfin: Dashboard → Playback →
Transcoding → Hardware acceleration: Nvidia NVENC.

https://claude.ai/code/session_016jJU8ZtWLSnJQBdbMr5pxK
2026-04-15 07:17:09 +00:00
f90fe5a41e Add data disks and mergerfs pool to new mediaserver
Three data disks (down from four) with mergerfs pool at /mnt/storage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 21:54:09 +01:00
f63d6d4195 Add new mediaserver hardware config for UEFI server
New server uses systemd-boot instead of GRUB. Data disks and
mergerfs pool to be added after physical disk migration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 15:50:59 +01:00
b06b2b04e3 Strip mediaserver hardware config for new server migration
Clear old disk UUIDs, boot config, and filesystem mounts.
Add backup script for migrating service state to new hardware.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 15:33:07 +01:00
1a8dd02b46
Update FredOS-Gaming.nix 2026-04-09 20:13:54 +01:00
0e94c3a975
Update FredOS-Gaming.nix 2026-04-09 20:10:02 +01:00
6b868fba9e
Update FredOS-Gaming.nix 2026-04-09 20:06:55 +01:00
ca4178d3ba Fix GoofCord desktop matching with lowercase StartupWMClass
Electron sets the Wayland app_id from the package name (lowercase
"goofcord") but the desktop file had StartupWMClass=GoofCord
(capitalized), causing GNOME to not match the window to its icon.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 20:04:48 +01:00
9fb0c0a792 Fix GoofCord identity by enabling native Wayland mode
Set NIXOS_OZONE_WL=1 so Electron runs on Wayland natively and sets
the correct app_id, matching the .desktop file's StartupWMClass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 19:55:37 +01:00
f28f6ecbdf Fix GoofCord --class flag placement after electron binary
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 19:47:08 +01:00
a914726ca9 Fix GoofCord launching as 'electron' by passing --class flag
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 19:36:59 +01:00
5d033a55ec 2026-04-09 10:09:24 +01:00
a14cc55921 Revert nixpkgs.stdenv.hostPlatform back to nixpkgs.hostPlatform
nixpkgs.stdenv.hostPlatform is not a valid NixOS option. The
deprecation warning comes from nixpkgs internals and is harmless.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 09:27:34 +01:00
f1f2afaace Fix deprecated nixpkgs.hostPlatform -> nixpkgs.stdenv.hostPlatform
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 09:26:26 +01:00
8b62397037 Remove Docker, add server migration checklist to readme
- Remove virtualisation.docker.enable (no longer used after native
  migration of Authelia, go2rtc, and nginx)
- Add migration checklist documenting which state directories and
  secrets to back up when moving to new hardware

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 22:54:33 +01:00
39450ca786 Remove Suricata/ELK; add SSH key auth and disable password login
Adds authorised keys for FredOS-Gaming and phone. Disables SSH password
authentication on FredOS-Mediaserver — key auth only going forward.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 21:48:08 +01:00
Claude
16363dc887
fail2ban: add jails for SSH, nginx proxy manager, and Jellyfin
Replaces bare enable flag with a dedicated service module covering:
- SSH brute force via journald
- Nginx Proxy Manager auth failures via Docker log files
- Jellyfin auth failures via journald
Includes incremental ban times (up to 1 week) and LAN ignore rules.

https://claude.ai/code/session_01PwAXuaoJx7qD5FhVLsn7Sn
2026-04-06 08:21:23 +00:00
3f8addd5bf Remove easyeffects from FredOS-Gaming packages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 22:15:14 +01:00
488016aaed Add easyeffects to FredOS-Gaming packages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 21:59:16 +01:00
4a952db006 Add CachyOS kernel (BORE scheduler) for FredOS-Gaming 2026-04-04 20:38:56 +01:00
93ea194da4 Reorganise hardware vs host config, tidy settings and services 2026-04-01 21:16:59 +01:00
effc4da3a6
2026-04-01 15:58:10 +01:00
c81bf4f54d
2026-04-01 14:15:38 +01:00
81d4bff052
2026-04-01 14:14:38 +01:00
4bcfd3d970
2026-03-31 14:20:45 +01:00
901c9ee3b0
2026-03-30 21:43:15 +01:00
f256f145fd
2026-03-30 21:34:12 +01:00
e50696290c
2026-03-30 21:17:27 +01:00
c5a8722f1a
2026-03-30 20:49:30 +01:00
041664eac7
2026-03-28 16:21:20 +00:00
79c7e0213a
2026-03-28 16:09:17 +00:00
f6fb6ceba1
2026-03-28 15:57:10 +00:00