fix(plex): cache mount

This commit is contained in:
arcnmx 2024-03-05 14:03:59 -08:00
parent 0ff920215b
commit dc4072da45
2 changed files with 21 additions and 7 deletions

View file

@ -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;

View file

@ -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