openbooks: init at 4.5.0

+124
+17
pkgs/by-name/op/openbooks/common.nix
···
··· 1 + { lib, fetchFromGitHub }: 2 + rec { 3 + version = "4.5.0"; 4 + 5 + src = fetchFromGitHub { 6 + owner = "evan-buss"; 7 + repo = "openbooks"; 8 + rev = "v${version}"; 9 + hash = "sha256-gznaMcj8/9xW8wvz/pQaw4tY/hDW8K6duFfJD74E47E="; 10 + }; 11 + 12 + meta = with lib; { 13 + homepage = "https://evan-buss.github.io/openbooks/"; 14 + license = licenses.mit; 15 + maintainers = with maintainers; [ ambroisie ]; 16 + }; 17 + }
+27
pkgs/by-name/op/openbooks/frontend.nix
···
··· 1 + { 2 + buildNpmPackage, 3 + callPackage, 4 + }: 5 + let 6 + common = callPackage ./common.nix { }; 7 + in 8 + buildNpmPackage { 9 + pname = "openbooks-frontend"; 10 + inherit (common) version; 11 + 12 + src = "${common.src}/server/app"; 13 + 14 + npmDepsHash = "sha256-OtXPOFK18b6tzFIvXkThafLUw0GlioRmxjzcKYeTalU="; 15 + 16 + installPhase = '' 17 + runHook preInstall 18 + 19 + cp -r dist $out 20 + 21 + runHook postInstall 22 + ''; 23 + 24 + meta = common.meta // { 25 + description = "openbooks frontend"; 26 + }; 27 + }
+34
pkgs/by-name/op/openbooks/package.nix
···
··· 1 + { 2 + lib, 3 + buildGoModule, 4 + callPackage, 5 + fetchFromGitHub, 6 + }: 7 + let 8 + common = callPackage ./common.nix { }; 9 + 10 + frontend = callPackage ./frontend.nix { }; 11 + in 12 + buildGoModule (finalAttrs: { 13 + pname = "openbooks"; 14 + inherit (common) version src; 15 + 16 + vendorHash = "sha256-ETN5oZanDH7fOAVnfIHIoXyVof7CfEMkPSOHF2my5ys="; 17 + 18 + postPatch = '' 19 + cp -r ${finalAttrs.passthru.frontend} server/app/dist/ 20 + ''; 21 + 22 + subPackages = [ "cmd/openbooks" ]; 23 + 24 + passthru = { 25 + inherit frontend; 26 + 27 + updateScript = ./update.sh; 28 + }; 29 + 30 + meta = common.meta // { 31 + description = "Search and Download eBooks"; 32 + mainProgram = "openbooks"; 33 + }; 34 + })
+46
pkgs/by-name/op/openbooks/update.sh
···
··· 1 + #!/usr/bin/env nix-shell 2 + #!nix-shell -i bash -p nix wget prefetch-npm-deps nix-prefetch-github nurl jq 3 + 4 + # shellcheck shell=bash 5 + 6 + if [ -n "${GITHUB_TOKEN:-}" ]; then 7 + TOKEN_ARGS=(--header "Authorization: token $GITHUB_TOKEN") 8 + fi 9 + 10 + if [ "$#" -gt 1 ] || [[ $1 == -* ]]; then 11 + echo "Regenerates packaging data for the openbooks package." 12 + echo "Usage: $0 [git release tag]" 13 + exit 1 14 + fi 15 + 16 + version="$1" 17 + rev="v$version" 18 + 19 + set -euo pipefail 20 + 21 + NIXPKGS_ROOT="$(git rev-parse --show-toplevel)" 22 + 23 + if [ -z "$version" ]; then 24 + rev="$(wget -O- "${TOKEN_ARGS[@]}" "https://api.github.com/repos/evan-buss/openbooks/releases?per_page=1" | jq -r '.[0].tag_name')" 25 + version="${rev#v}" 26 + fi 27 + 28 + package_src="https://raw.githubusercontent.com/evan-buss/openbooks/$rev" 29 + 30 + src_hash=$(nix-prefetch-github evan-buss openbooks --rev "$rev" | jq -r .hash) 31 + 32 + tmpdir=$(mktemp -d) 33 + trap 'rm -rf "$tmpdir"' EXIT 34 + 35 + pushd "$tmpdir" 36 + wget "${TOKEN_ARGS[@]}" "$package_src/server/app/package-lock.json" 37 + npm_hash=$(prefetch-npm-deps package-lock.json) 38 + popd 39 + 40 + cd "$(dirname "${BASH_SOURCE[0]}")" 41 + sed -i -E -e "s#version = \".*\"#version = \"$version\"#" common.nix 42 + sed -i -E -e "s#hash = \".*\"#hash = \"$src_hash\"#" common.nix 43 + sed -i -E -e "s#npmDepsHash = \".*\"#npmDepsHash = \"$npm_hash\"#" frontend.nix 44 + 45 + vendor_hash=$(nurl -e "(import $NIXPKGS_ROOT/. { }).openbooks.goModules") 46 + sed -i -E -e "s#vendorHash = \".*\"#vendorHash = \"$vendor_hash\"#" package.nix