From 971ce23e49cdf27d49a1ed92e6e744d67a143858 Mon Sep 17 00:00:00 2001 From: Lucien Cartier-Tilet Date: Sun, 7 Jun 2026 18:27:19 +0200 Subject: [PATCH] feat(streamlink): add streamlink --- users/modules/media/default.nix | 2 ++ users/modules/media/streamlink.nix | 17 +++++++++++++++++ users/phundrak/firefox.nix | 13 ++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 users/modules/media/streamlink.nix diff --git a/users/modules/media/default.nix b/users/modules/media/default.nix index 81563f8..4d6d3cb 100644 --- a/users/modules/media/default.nix +++ b/users/modules/media/default.nix @@ -12,6 +12,7 @@ in { ./mpd-mpris.nix ./mpv.nix ./ncmpcpp.nix + ./streamlink.nix ]; options.home.media.fullDesktop = mkEnableOption "Enables everything"; @@ -20,5 +21,6 @@ in { mpd.enable = mkDefault (cfg.fullDesktop or cfg.mpd-mpris.enable); mpv.enable = mkDefault cfg.fullDesktop; ncmpcpp.enable = mkDefault config.home.media.mpd.enable; + streamlink.enable = mkDefault config.home.media.mpv.enable; }; } diff --git a/users/modules/media/streamlink.nix b/users/modules/media/streamlink.nix new file mode 100644 index 0000000..cbfd0a8 --- /dev/null +++ b/users/modules/media/streamlink.nix @@ -0,0 +1,17 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; let + cfg = config.home.media.streamlink; +in { + options.home.media.streamlink.enable = mkEnableOption "Enable Streamlink"; + config.programs.streamlink = mkIf cfg.enable { + enable = true; + settings = { + player = "${pkgs.mpv}/bin/mpv"; + }; + }; +} diff --git a/users/phundrak/firefox.nix b/users/phundrak/firefox.nix index 4de7c0d..e1e9350 100644 --- a/users/phundrak/firefox.nix +++ b/users/phundrak/firefox.nix @@ -1,4 +1,4 @@ -{ +{pkgs, ...}: { config.home.desktop.firefox = { enable = true; useZen = true; @@ -13,6 +13,16 @@ smothscroll = "true"; }; extraConfig = '' + command openTwitchInMpv js -d@\ + const url = new URL(document.location.href);\ + const cleanUrl = url.hostname + url.pathname;\ + const token = document.cookie.split("; ")\ + .find(item => item.startsWith("auth-token="))?.split("=")[1];\ + const auth = "--twitch-api-header=Authorization=OAuth " + token;\ + const cmd = `${pkgs.streamlink}/bin/streamlink "''${auth}" "''${cleanUrl}" best`;\ + tri.native.run(cmd)\ + @ + unbind h unbind j unbind k @@ -69,6 +79,7 @@ bind < urlincrement -1 bind > urlincrement 1 + bind ypt openTwitchInMpv bind ypv js tri.native.run(`mpv --ytdl-format="[height >=? 480]" --ontop --fs "''${document.location.href}"`) bind ypm hint -JF e => tri.native.run(`mpv --ytdl-format="[height >=? 480]" --ontop --fs "''${e.href}"`) '';