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