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>
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>
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>
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>
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>
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>
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
- 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
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>
--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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
- 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>
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>
- 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>
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>
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>
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>
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>
The wallpaper file is a Home Manager symlink to the Nix store,
so cp can't overwrite it. Instead, point GNOME directly at the
source image path.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>