From dc4072da459bc206b3c2232a1f3adde5f63e89f5 Mon Sep 17 00:00:00 2001 From: arcnmx Date: Tue, 5 Mar 2024 14:03:59 -0800 Subject: [PATCH] fix(plex): cache mount --- nixos/plex.nix | 20 +++++++++++++++++--- systems/reisen/setup.sh | 8 ++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/nixos/plex.nix b/nixos/plex.nix index 07c7cb35..553620fd 100644 --- a/nixos/plex.nix +++ b/nixos/plex.nix @@ -1,5 +1,6 @@ -{config, lib, ...}: let - inherit (lib.modules) mkIf mkDefault; +{config, lib, pkgs, ...}: let + inherit (lib.modules) mkIf mkForce mkDefault; + inherit (lib.strings) escapeShellArg; cfg = config.services.plex; in { services.plex.enable = mkDefault true; @@ -8,7 +9,20 @@ in { environment.MESA_SHADER_CACHE_DIR = mkDefault cfg.dataDir; serviceConfig = { BindPaths = [ - "/mnt/caches/plex/Cache:${cfg.dataDir}/Plex Media Server/Cache" + ''/mnt/caches/plex/Cache:${cfg.dataDir}/Cache'' + ]; + ExecStartPre = let + # systemd doesn't seem to like spaces so use a symlink instead... + preStartScript = pkgs.writeShellScript "plex-run-prestart" '' + set -eu + + if [[ ! -d $PLEX_DATADIR ]]; then + ${pkgs.coreutils}/bin/install -d -m 0755 -o ${escapeShellArg cfg.user} -g ${escapeShellArg cfg.group} "$PLEX_DATADIR/Plex Media Server" + fi + ${pkgs.coreutils}/bin/ln -sfT ../Cache "$PLEX_DATADIR/Plex Media Server/Cache" + ''; + in mkForce [ + ''!${preStartScript}'' ]; # KillMode = "mixed" doesn't behave as expected... TimeoutStopSec = 5; diff --git a/systems/reisen/setup.sh b/systems/reisen/setup.sh index 64f41c19..7185ad51 100644 --- a/systems/reisen/setup.sh +++ b/systems/reisen/setup.sh @@ -95,24 +95,24 @@ EOF if [[ ! -d /rpool/shared ]]; then zfs create rpool/shared fi + if [[ ! -d /rpool/shared/nix ]]; then zfs create rpool/shared/nix fi - if [[ ! -d /rpool/shared/nix/store ]]; then zfs create -o compression=zstd rpool/shared/nix/store fi -chown 100000:30000 /rpool/shared/nix/store -chmod 1775 /rpool/shared/nix/store - if [[ ! -d /rpool/shared/nix/var ]]; then mkdir /rpool/shared/nix/var fi +chown 100000:30000 /rpool/shared/nix/store +chmod 1775 /rpool/shared/nix/store chown 100000:100000 /rpool/shared/nix/var if [[ ! -d /rpool/caches ]]; then zfs create rpool/caches fi + if [[ ! -d /rpool/caches/plex ]]; then zfs create rpool/caches/plex fi