From 4d1147f49e041cb40395048741976b61f044e8ac Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 24 May 2023 16:58:51 +0200 Subject: [PATCH] add plexpass package --- flake.nix | 2 ++ nixos/common/desktop/home.nix | 3 +-- nixos/pkgs/default.nix | 4 ++++ nixos/pkgs/plex-pass/default.nix | 3 +++ nixos/pkgs/plex-pass/raw.nix | 13 +++++++++++++ nixos/pkgs/plex-pass/sources.json | 14 ++++++++++++++ nixos/pkgs/plex-pass/update.sh | 32 +++++++++++++++++++++++++++++++ 7 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 nixos/pkgs/plex-pass/default.nix create mode 100644 nixos/pkgs/plex-pass/raw.nix create mode 100644 nixos/pkgs/plex-pass/sources.json create mode 100755 nixos/pkgs/plex-pass/update.sh diff --git a/flake.nix b/flake.nix index 8c40bb0..f1ba3fd 100644 --- a/flake.nix +++ b/flake.nix @@ -54,6 +54,7 @@ pkgs = import nixpkgs { inherit system; + config.allowUnfree = true; overlays = [ (import ./nixos/pkgs) vault-secrets.overlay nur.overlay ]; }; @@ -147,6 +148,7 @@ nil vault yamllint + jq (vault-push-approle-envs self { }) (vault-push-approles self { }) fast-repl diff --git a/nixos/common/desktop/home.nix b/nixos/common/desktop/home.nix index 1121eab..c575b57 100644 --- a/nixos/common/desktop/home.nix +++ b/nixos/common/desktop/home.nix @@ -16,8 +16,7 @@ in { gimp inputs.comma.packages.${pkgs.system}.default inputs.webcord.packages.${pkgs.system}.default - jetbrains.clion - jetbrains.idea-ultimate + # jetbrains.clion kdenlive mullvad-vpn neofetch diff --git a/nixos/pkgs/default.nix b/nixos/pkgs/default.nix index 8a06715..537224d 100644 --- a/nixos/pkgs/default.nix +++ b/nixos/pkgs/default.nix @@ -21,5 +21,9 @@ _final: prev: { platformio.platformio-ide = prev.callPackage ./vscode-extensions/platformio.nix { }; }; + }; + + plex-plexpass = prev.callPackage ./plex-pass { }; + plexRaw-plexpass = prev.callPackage ./plex-pass/raw.nix { }; } diff --git a/nixos/pkgs/plex-pass/default.nix b/nixos/pkgs/plex-pass/default.nix new file mode 100644 index 0000000..a2c93c7 --- /dev/null +++ b/nixos/pkgs/plex-pass/default.nix @@ -0,0 +1,3 @@ +{ plex, plexRaw-plexpass }: +# Copied from: https://github.com/tadfisher/flake/blob/ed949a619236ba30f0be614fed804abdf1e8005b/pkgs/plex-plexpass/default.nix +plex.override { plexRaw = plexRaw-plexpass; } diff --git a/nixos/pkgs/plex-pass/raw.nix b/nixos/pkgs/plex-pass/raw.nix new file mode 100644 index 0000000..af68731 --- /dev/null +++ b/nixos/pkgs/plex-pass/raw.nix @@ -0,0 +1,13 @@ +{ lib, stdenv, plexRaw, fetchurl }: +let + sources = builtins.fromJSON (builtins.readFile ./sources.json); + source = lib.findFirst (x: x.platform == stdenv.hostPlatform.system) + (throw "unsupported platform: ${stdenv.hostPlatform.system}") sources; +in plexRaw.overrideAttrs (attrs: { + pname = attrs.pname + "-plexpass"; + version = source.version; + src = fetchurl { + inherit (source) url; + sha256 = source.hash; + }; +}) diff --git a/nixos/pkgs/plex-pass/sources.json b/nixos/pkgs/plex-pass/sources.json new file mode 100644 index 0000000..a505c01 --- /dev/null +++ b/nixos/pkgs/plex-pass/sources.json @@ -0,0 +1,14 @@ +[ + { + "version": "1.32.2.7100", + "platform": "aarch64-linux", + "url": "https://downloads.plex.tv/plex-media-server-new/1.32.2.7100-248a2daf0/debian/plexmediaserver_1.32.2.7100-248a2daf0_arm64.deb", + "hash": "1rs967n4vli7gba2137l5z6vrdcdxfy3hni21lay3ayyds3xmavd" + }, + { + "version": "1.32.2.7100", + "platform": "x86_64-linux", + "url": "https://downloads.plex.tv/plex-media-server-new/1.32.2.7100-248a2daf0/debian/plexmediaserver_1.32.2.7100-248a2daf0_amd64.deb", + "hash": "0myr0nws0dhhkp9cc5zwxs4pigs7bmyf582fwskzjqm3d7phlwmi" + } +] diff --git a/nixos/pkgs/plex-pass/update.sh b/nixos/pkgs/plex-pass/update.sh new file mode 100755 index 0000000..2637e25 --- /dev/null +++ b/nixos/pkgs/plex-pass/update.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +set -x +shopt -s extglob +set -eu -o pipefail + +path="$(realpath "$(dirname "$0")")" + +declare -A platforms=( + [linux-x86_64]=x86_64-linux + [linux-aarch64]=aarch64-linux +) + +token=$(vault kv get -field=plex_token hades_secrets/nixos/plex) +manifest=$(curl -s "https://plex.tv/api/downloads/5.json?channel=plexpass" -H "X-Plex-Token: ${token}") +version=$(echo "$manifest" | jq -r '.computer.Linux.version | split("-") | .[0]') + +tmp="$path/sources.tmp.json" +echo '' >$tmp + +for arch in "${!platforms[@]}"; do + url="$(echo "$manifest" | jq --arg arch "$arch" -r '.computer.Linux.releases[] | select(.distro == "debian" and .build == $arch) .url')" + hash="$(nix-prefetch-url "$url")" + nixPlatform=${platforms[$arch]} + jq --arg version $version \ + --arg platform $nixPlatform \ + --arg url "$url" \ + --arg hash $hash \ + -n '$ARGS.named' >>$tmp +done + +jq -s '.' $tmp >"$path/sources.json" +rm $tmp