summaryrefslogtreecommitdiff
path: root/pkgs/bluesky/pdsadmin
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/bluesky/pdsadmin')
-rw-r--r--pkgs/bluesky/pdsadmin/package.nix63
-rw-r--r--pkgs/bluesky/pdsadmin/pdsadmin-offline.patch24
2 files changed, 87 insertions, 0 deletions
diff --git a/pkgs/bluesky/pdsadmin/package.nix b/pkgs/bluesky/pdsadmin/package.nix
new file mode 100644
index 0000000..ba204f4
--- /dev/null
+++ b/pkgs/bluesky/pdsadmin/package.nix
@@ -0,0 +1,63 @@
+# See: https://github.com/NixOS/nixpkgs/pull/350645
+{
+ stdenvNoCC,
+ fetchFromGitHub,
+ bash,
+ pds,
+ makeWrapper,
+ jq,
+ curl,
+ openssl,
+ lib,
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+ pname = "pdsadmin";
+ inherit (pds) version src;
+
+ patches = [ ./pdsadmin-offline.patch ];
+
+ nativeBuildInputs = [
+ bash
+ makeWrapper
+ ];
+
+ buildPhase = ''
+ runHook preBuild
+
+ patchShebangs . pdsadmin
+ substituteInPlace pdsadmin.sh \
+ --replace-fail NIXPKGS_PDSADMIN_ROOT $out
+
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/lib/pds
+ install -Dm755 pdsadmin.sh $out/lib/pds
+ install -Dm755 pdsadmin/*.sh $out/lib/pds
+ makeWrapper "$out/lib/pds/pdsadmin.sh" "$out/bin/pdsadmin" \
+ --prefix PATH : "${
+ lib.makeBinPath [
+ jq
+ curl
+ openssl
+ ]
+ }"
+
+ runHook postInstall
+ '';
+
+ meta = {
+ description = "Admin scripts for Bluesky Personal Data Server (PDS)";
+ homepage = "https://github.com/bluesky-social/pds";
+ license = with lib.licenses; [
+ mit
+ asl20
+ ];
+ platforms = lib.platforms.unix;
+ mainProgram = "pdsadmin";
+ };
+})
diff --git a/pkgs/bluesky/pdsadmin/pdsadmin-offline.patch b/pkgs/bluesky/pdsadmin/pdsadmin-offline.patch
new file mode 100644
index 0000000..0b3fbee
--- /dev/null
+++ b/pkgs/bluesky/pdsadmin/pdsadmin-offline.patch
@@ -0,0 +1,24 @@
+diff --git a/pdsadmin.sh b/pdsadmin.sh
+index 913d2b4..b09c20c 100644
+--- a/pdsadmin.sh
++++ b/pdsadmin.sh
+@@ -15,16 +15,11 @@ if [[ "${EUID}" -ne 0 ]]; then
+ exit 1
+ fi
+
+-# Download the script, if it exists.
+-SCRIPT_URL="${PDSADMIN_BASE_URL}/${COMMAND}.sh"
+-SCRIPT_FILE="$(mktemp /tmp/pdsadmin.${COMMAND}.XXXXXX)"
++SCRIPT_FILE="NIXPKGS_PDSADMIN_ROOT/lib/pds/${COMMAND}.sh"
+
+-if ! curl --fail --silent --show-error --location --output "${SCRIPT_FILE}" "${SCRIPT_URL}"; then
++if ! [ -f "${SCRIPT_FILE}" ]; then
+ echo "ERROR: ${COMMAND} not found"
+ exit 2
+ fi
+
+-chmod +x "${SCRIPT_FILE}"
+-if "${SCRIPT_FILE}" "$@"; then
+- rm --force "${SCRIPT_FILE}"
+-fi
++"${SCRIPT_FILE}" "$@"