Commit graph

979 commits

Author SHA1 Message Date
984f45e1d4 Set UMask 0002 on all media services for group-writable files
Sonarr, Radarr, qBittorrent, Jellyfin, and Bazarr all need to create
files that are writable by the media group. Without this, Jellyfin
can't write thumbnails/artwork to media directories and services
can't collaborate on shared files. Also fixes radarr movies directory
to use setgid (2775) consistently.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 23:23:56 +01:00
3c6e86aca9 Clean up leftover temp files on transcode-hevc startup
Removes any .transcode-* files left behind by interrupted runs
before starting the encoding loop.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 22:55:53 +01:00
7ef39af81b Fix transcode-hevc hanging on files with attached pictures
Map only the first video stream, all audio, and all subtitles instead
of mapping everything. This avoids feeding cover art images through
the libx265 encoder which caused hangs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 21:00:59 +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
c8c7606eb7 Skip hardlinked files in transcode-hevc to avoid breaking seed links
Files with multiple hardlinks are likely linked from downloads/ where
they are still being seeded. Transcoding would break the hardlink and
cause both copies to take up disk space separately.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 19:22:24 +01:00
f431d1a5b0 Always output MKV in transcode-hevc to avoid container codec issues
MP4 containers don't support all subtitle/codec combinations with HEVC.
MKV handles everything, so always output .mkv and remove the original
if it was a different format.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 19:20:02 +01:00
603ac86f0a Skip downloads directories in transcode-hevc
Files in downloads/ are still being seeded and must not be altered.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 10:27:48 +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
df227ad173 Revert "Add Tdarr transcoding manager for bulk H.264→HEVC conversion"
This reverts commit 91c437de6d.
2026-04-15 10:23:28 +01:00
91c437de6d Add Tdarr transcoding manager for bulk H.264→HEVC conversion
Runs Tdarr server with internal node on the mediaserver for managing
library-wide re-encoding to save disk space. Web UI at tdarr.nordhammer.it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 10:17:09 +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
090e5efbc1
Merge pull request #7 from ediblerope/claude/jellyfin-nvidia-kernel-modules
mediaserver: explicitly load NVIDIA kernel modules at boot
2026-04-15 07:32:39 +00: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
cac4bda2ab
Merge pull request #6 from ediblerope/claude/jellyfin-quadro-transcoding-Z4EGb
jellyfin: enable NVENC hardware transcoding via Quadro M2000
2026-04-15 07:21:46 +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
ediblerope
b171c0526a flake: update inputs 2026-04-15 05:54:29 +00:00
fb8f75e9c7 Increase ACME DNS propagation timeout to 10 minutes
Cloudflare's authoritative nameservers take longer than the
default 2-minute timeout to propagate TXT records created via
API. Set CLOUDFLARE_PROPAGATION_TIMEOUT=600 to give enough
time for DNS-01 challenge validation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 22:48:58 +01:00
337b90ced3 Fix ACME DNS resolver flag placement (global, not subcommand)
--dns.resolvers is a global lego flag, not a run/renew subcommand
flag. Use extraLegoFlags instead of extraLegoRunFlags.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 22:41:55 +01:00
6ae3f8be97 Use Cloudflare resolver for ACME DNS propagation check
Route DNS propagation checks through 1.1.1.1 only, bypassing
the local resolver that caches stale responses and causes
wildcard cert DNS-01 challenges to time out.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 22:38:20 +01:00
beadcc5397 Use propagation wait instead of disabling ACME DNS check
Disabling the propagation check caused lego to submit to Let's
Encrypt before Cloudflare's authoritative nameservers had the
TXT record. A 30s wait gives Cloudflare time to propagate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 22:36:48 +01:00
3c0746e23b Skip ACME DNS propagation check for local resolver caching
Local DNS resolver caches stale responses causing the wildcard
cert DNS-01 challenge to time out before propagation is confirmed.
Cloudflare's authoritative servers propagate fast enough for
Let's Encrypt to validate without the client-side check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 22:33:13 +01:00
a109d5a5c7 Disable game servers while not in use
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 22:10:20 +01:00
8aa7beccd6 Re-enable all services after secret migration to new server
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 21:59:18 +01: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
5b12b59654 Temporarily disable game servers for server migration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 16:05:16 +01:00
3c8d5678b0 Temporarily disable services requiring secrets for server migration
Commented out nginx, go2rtc, cloudflare-ddns, fail2ban, and authelia
until secrets are migrated to the new server hardware.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 16:03:50 +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
570d0aadac Add Vesktop wallpaper color theme via matugen
Generates quickCss for Vencord with wallpaper-derived colors
and Adwaita-style rounding. Work in progress — Discord may
override CSS variables on load.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 14:21:25 +01:00
73955a158d Fix Zen sidebar splitter and content area background colors
Color the #zen-sidebar-splitter to match the sidebar instead of
showing a grey strip. Also theme content area containers and
window frame elements. Clean up redundant CSS rules.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 11:00:27 +01:00
a706438b08 Simplify wallpaper function to use fixed background path
No longer accepts an argument — always regenerates colors from
the wallpaper managed by git at ~/.local/share/backgrounds/wallpaper.png.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 10:33:52 +01:00
79460a955e Theme panel button hover and overview window close button
Use GNOME Shell's native box-shadow inset fill technique for panel
button hover/active states to avoid double-background layering.
Add wallpaper-colored window close button in overview.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 10:28:34 +01:00
6c6794efb9 Add GTK3 wallpaper color overrides for Electron/GTK3 apps
Create gtk3-colors.css matugen template and import it in GTK3
gtk.css so apps like Vesktop get wallpaper-based headerbar colors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 09:46:45 +01:00
25189a0d99 Skip matugen in update alias when not installed
Guard matugen call with command -v check so the update alias
works on hosts without GNOME/matugen (e.g. mediaserver).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 09:44:00 +01:00
24994ab912 Auto-reload Shell theme after matugen, style calendar panel and Zen URL bar
Add GNOME Shell theme reload (dconf toggle) to recolor-folders.sh
post-hook so colors apply immediately after update or wallpaper
change. Style calendar panel, date menu, pager buttons, and today
highlight. Fix Zen URL bar background mismatch.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 09:42:29 +01:00
ediblerope
dee11c713e flake: update inputs 2026-04-14 05:54:28 +00:00
a9cd65f334
Add files via upload 2026-04-13 22:08:12 +00:00
743a81247d 2026-04-13 23:04:54 +01:00
7aa9828cf4 Scope search result styling to avoid breaking dash icons
The .overview-tile selector was too broad and affected dash app
icons. Scoped to .search-section-content to only style search results.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 22:41:38 +01:00
4d33f68734 Fix Zen profile path and style GNOME Shell search results
Zen was writing to wrong profile (fraudek5 instead of mpege0em).
Add search result, overview-tile, and list-search-result styling
to GNOME Shell theme for consistent palette in overview search.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 22:38:56 +01:00
6bf4921a00 Fix Zen theming with correct source variables and Nautilus backdrop
Override Zen's source variables (--zen-branding-dark,
--zen-main-browser-background) instead of just derived ones, since
Zen re-computes derived colors from sources. Add sidebar-pane and
top-bar backdrop rules for Nautilus split-header layout.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 22:32:57 +01:00
ed526791f0 Polish wallpaper theming across Shell, VSCodium, Zen, and GTK4
Comprehensive GNOME Shell theme: accent variable overrides, quick
toggle states, chevrons, sliders, sub-menus, header buttons,
overview/dash/search/app-grid styling. Fix GTK4 backdrop so Nautilus
keeps palette colors when unfocused. Expand VSCodium color coverage
(diff editor, widgets, notifications, scrollbars). Add more Zen
browser CSS variables for broader UI theming.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 22:21:07 +01:00
0eb6c587dc Fix GNOME Shell theme output path and improve Zen theming
- Shell theme CSS now outputs directly to themes directory
- Zen userChrome.css updated with more UI variables
- Remove redundant copy step from recolor script

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 21:29:27 +01:00
3873de6003 Add GNOME Shell theme and User Themes extension
Generates a custom GNOME Shell CSS for the top bar, quick
settings, and notifications using wallpaper palette colors.
Uses the User Themes extension to load it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 21:20:41 +01:00
8359853fc9 Extend wallpaper theming to Zen, VSCodium, and GNOME accents
- Zen browser: generates userChrome.css with palette colors
- VSCodium: merges workbench.colorCustomizations into settings.json
- GNOME: maps palette hue to closest accent color preset
- Add jq to GNOME packages for JSON merging

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 21:14:54 +01:00
1ca92e96ba Fix icon copy — dereference symlinks and clean before copying
Papirus icons in the Nix store are symlinks, so cp -a creates
read-only symlinks that can't be overwritten on subsequent runs.
Now removes the directory first and uses cp -rL to dereference.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 21:09:21 +01:00
54cda24cda Copy Papirus mimetypes at all sizes for crisp file icons
Previously only copied 64x64, causing blurry icons when scaled.
Now copies 16x16 through 128x128 so icons render at native
resolution at any zoom level.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 21:08:07 +01:00
043dd3674c Add Papirus mimetype icons to WallpaperAdwaita theme
Copies Papirus-Dark mimetype icons into WallpaperAdwaita for
distinctive file type icons (json, python, markdown, etc.)
while keeping the wallpaper-colored folder icons from Adwaita.

Also fixes recolor script to process all place icons, not just
folders (fixes Desktop icon), and improves color mapping.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 21:03:00 +01:00
0a1ffe201f Switch back to Adwaita icons — MoreWaita made folders monochrome
MoreWaita was overriding the colored Adwaita folder icons with
monochrome symbolic ones. Added adwaita-icon-theme-legacy for
extra coverage of older icon names.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 20:49:37 +01:00