From 5b1167fd145014df6668fca0600df899224506c8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 1 May 2025 19:50:09 +0100 Subject: [PATCH] openbooks: init at 4.5.0 --- pkgs/by-name/op/openbooks/common.nix | 17 ++++++++++ pkgs/by-name/op/openbooks/frontend.nix | 27 +++++++++++++++ pkgs/by-name/op/openbooks/package.nix | 34 +++++++++++++++++++ pkgs/by-name/op/openbooks/update.sh | 46 ++++++++++++++++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 pkgs/by-name/op/openbooks/common.nix create mode 100644 pkgs/by-name/op/openbooks/frontend.nix create mode 100644 pkgs/by-name/op/openbooks/package.nix create mode 100755 pkgs/by-name/op/openbooks/update.sh diff --git a/pkgs/by-name/op/openbooks/common.nix b/pkgs/by-name/op/openbooks/common.nix new file mode 100644 index 000000000000..baf1ac2529e7 --- /dev/null +++ b/pkgs/by-name/op/openbooks/common.nix @@ -0,0 +1,17 @@ +{ lib, fetchFromGitHub }: +rec { + version = "4.5.0"; + + src = fetchFromGitHub { + owner = "evan-buss"; + repo = "openbooks"; + rev = "v${version}"; + hash = "sha256-gznaMcj8/9xW8wvz/pQaw4tY/hDW8K6duFfJD74E47E="; + }; + + meta = with lib; { + homepage = "https://evan-buss.github.io/openbooks/"; + license = licenses.mit; + maintainers = with maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/by-name/op/openbooks/frontend.nix b/pkgs/by-name/op/openbooks/frontend.nix new file mode 100644 index 000000000000..a1e8f3f5dac5 --- /dev/null +++ b/pkgs/by-name/op/openbooks/frontend.nix @@ -0,0 +1,27 @@ +{ + buildNpmPackage, + callPackage, +}: +let + common = callPackage ./common.nix { }; +in +buildNpmPackage { + pname = "openbooks-frontend"; + inherit (common) version; + + src = "${common.src}/server/app"; + + npmDepsHash = "sha256-OtXPOFK18b6tzFIvXkThafLUw0GlioRmxjzcKYeTalU="; + + installPhase = '' + runHook preInstall + + cp -r dist $out + + runHook postInstall + ''; + + meta = common.meta // { + description = "openbooks frontend"; + }; +} diff --git a/pkgs/by-name/op/openbooks/package.nix b/pkgs/by-name/op/openbooks/package.nix new file mode 100644 index 000000000000..3ba63cb8f2f1 --- /dev/null +++ b/pkgs/by-name/op/openbooks/package.nix @@ -0,0 +1,34 @@ +{ + lib, + buildGoModule, + callPackage, + fetchFromGitHub, +}: +let + common = callPackage ./common.nix { }; + + frontend = callPackage ./frontend.nix { }; +in +buildGoModule (finalAttrs: { + pname = "openbooks"; + inherit (common) version src; + + vendorHash = "sha256-ETN5oZanDH7fOAVnfIHIoXyVof7CfEMkPSOHF2my5ys="; + + postPatch = '' + cp -r ${finalAttrs.passthru.frontend} server/app/dist/ + ''; + + subPackages = [ "cmd/openbooks" ]; + + passthru = { + inherit frontend; + + updateScript = ./update.sh; + }; + + meta = common.meta // { + description = "Search and Download eBooks"; + mainProgram = "openbooks"; + }; +}) diff --git a/pkgs/by-name/op/openbooks/update.sh b/pkgs/by-name/op/openbooks/update.sh new file mode 100755 index 000000000000..f97abe5647e3 --- /dev/null +++ b/pkgs/by-name/op/openbooks/update.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p nix wget prefetch-npm-deps nix-prefetch-github nurl jq + +# shellcheck shell=bash + +if [ -n "${GITHUB_TOKEN:-}" ]; then + TOKEN_ARGS=(--header "Authorization: token $GITHUB_TOKEN") +fi + +if [ "$#" -gt 1 ] || [[ $1 == -* ]]; then + echo "Regenerates packaging data for the openbooks package." + echo "Usage: $0 [git release tag]" + exit 1 +fi + +version="$1" +rev="v$version" + +set -euo pipefail + +NIXPKGS_ROOT="$(git rev-parse --show-toplevel)" + +if [ -z "$version" ]; then + rev="$(wget -O- "${TOKEN_ARGS[@]}" "https://api.github.com/repos/evan-buss/openbooks/releases?per_page=1" | jq -r '.[0].tag_name')" + version="${rev#v}" +fi + +package_src="https://raw.githubusercontent.com/evan-buss/openbooks/$rev" + +src_hash=$(nix-prefetch-github evan-buss openbooks --rev "$rev" | jq -r .hash) + +tmpdir=$(mktemp -d) +trap 'rm -rf "$tmpdir"' EXIT + +pushd "$tmpdir" +wget "${TOKEN_ARGS[@]}" "$package_src/server/app/package-lock.json" +npm_hash=$(prefetch-npm-deps package-lock.json) +popd + +cd "$(dirname "${BASH_SOURCE[0]}")" +sed -i -E -e "s#version = \".*\"#version = \"$version\"#" common.nix +sed -i -E -e "s#hash = \".*\"#hash = \"$src_hash\"#" common.nix +sed -i -E -e "s#npmDepsHash = \".*\"#npmDepsHash = \"$npm_hash\"#" frontend.nix + +vendor_hash=$(nurl -e "(import $NIXPKGS_ROOT/. { }).openbooks.goModules") +sed -i -E -e "s#vendorHash = \".*\"#vendorHash = \"$vendor_hash\"#" package.nix