aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_local/bin
diff options
context:
space:
mode:
Diffstat (limited to 'dot_local/bin')
-rw-r--r--dot_local/bin/executable__sandbox-net-parser16
-rwxr-xr-xdot_local/bin/executable_linkhandler2
-rw-r--r--dot_local/bin/executable_mpv4
-rw-r--r--dot_local/bin/executable_streamlink5
4 files changed, 13 insertions, 14 deletions
diff --git a/dot_local/bin/executable__sandbox-net-parser b/dot_local/bin/executable__sandbox-net-parser
index 648ad0f..d998ace 100644
--- a/dot_local/bin/executable__sandbox-net-parser
+++ b/dot_local/bin/executable__sandbox-net-parser
@@ -1,6 +1,6 @@
#!/usr/bin/env sh
# Sandbox wrapper for tools that parse data from untrusted network
-# sources (mpv, yt-dlp, streamlink). The threat model is RCE in a
+# sources (yt-dlp, streamlink). The threat model is RCE in a
# subtitle / muxer / extractor that walks the user's home directory
# looking for SSH/GPG keys, password store, cloud tokens, etc.
#
@@ -9,10 +9,13 @@
# work transparently; the sandbox only tmpfs-shadows known-sensitive
# directories so a compromised parser cannot read them.
#
+# (mpv itself is run as the io.mpv.Mpv flatpak, which is its own
+# sandbox — no extra bwrap wrapper needed.)
+#
# Set SANDBOX=0 to bypass entirely for a single invocation:
-# SANDBOX=0 mpv weird-codec-file.mkv
+# SANDBOX=0 streamlink weird-stream-url
#
-# Usage (called by the per-tool wrappers): _sandbox-net-parser /usr/bin/mpv "$@"
+# Usage (called by the per-tool wrappers): _sandbox-net-parser /usr/bin/yt-dlp "$@"
set -eu
@@ -33,10 +36,9 @@ bin=$1
shift
# Prevent re-entry: any tool spawned inside the sandbox that resolves
-# `mpv`/`yt-dlp`/`streamlink` via PATH (e.g. streamlink launching mpv)
-# must find the real binary, not another wrapper that would try to
-# nest a second bwrap and fail. Strip ~/.local/bin and nix-profile/bin
-# from PATH inside the namespace.
+# `yt-dlp`/`streamlink` via PATH must find the real binary, not another
+# wrapper that would try to nest a second bwrap and fail. Strip
+# ~/.local/bin and nix-profile/bin from PATH inside the namespace.
inner_path='/usr/local/sbin:/usr/local/bin:/usr/bin'
exec bwrap \
diff --git a/dot_local/bin/executable_linkhandler b/dot_local/bin/executable_linkhandler
index 48dd6ae..a440634 100755
--- a/dot_local/bin/executable_linkhandler
+++ b/dot_local/bin/executable_linkhandler
@@ -18,7 +18,7 @@ fi
case "$url" in
*.mkv* | *.webm* | *.mp4* | *.mp3* | *.ogg* | *.mov* | *.ts* | *.m3u8* | *.gif* | *.m4a* | *youtube.com/watch* | *youtube.com/playlist* | *youtu.be* | *twitch.tv* | *invidio.us* | *lbry* | *streamye.com* | *streamvi.com* | *streamwo.com* | *videos.lukesmith.xyz*)
- setsid mpv -quiet "$url" >/dev/null 2>&1 &
+ setsid flatpak run io.mpv.Mpv --quiet "$url" >/dev/null 2>&1 &
;;
acestream://*)
setsid acestream-launcher "$url" >/dev/null 2>&1 &
diff --git a/dot_local/bin/executable_mpv b/dot_local/bin/executable_mpv
deleted file mode 100644
index ba6787b..0000000
--- a/dot_local/bin/executable_mpv
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-# Thin wrapper: run /usr/bin/mpv inside _sandbox-net-parser. See that
-# script for the threat model and the SANDBOX=0 escape hatch.
-exec _sandbox-net-parser /usr/bin/mpv "$@"
diff --git a/dot_local/bin/executable_streamlink b/dot_local/bin/executable_streamlink
index 86ab12a..67dc122 100644
--- a/dot_local/bin/executable_streamlink
+++ b/dot_local/bin/executable_streamlink
@@ -1,5 +1,6 @@
#!/usr/bin/env sh
# Thin wrapper: run /usr/bin/streamlink inside _sandbox-net-parser. The
-# sandbox strips ~/.local/bin from PATH so streamlink's internal launch
-# of `mpv` resolves to /usr/bin/mpv (avoids nested bwrap).
+# sandbox keeps `/` bind-mounted, so streamlink's configured player
+# (`flatpak run io.mpv.Mpv` — see ~/.config/streamlink/config) is reachable
+# via /usr/bin/flatpak.
exec _sandbox-net-parser /usr/bin/streamlink "$@"