aboutsummaryrefslogtreecommitdiff
path: root/pkgs
diff options
context:
space:
mode:
authorChris Wells <chris@mathematicaster.org>2024-09-05 19:45:28 -0500
committerChris Wells <chris@mathematicaster.org>2024-09-05 19:45:28 -0500
commit373d5246eb53ef1a13166b066248526f33f935db (patch)
tree3d5494bb43d951ebf9bfa1358526102a8ac85406 /pkgs
parent1e9e6dbdd6edbfd8ac6249ba0d16e68b336cf093 (diff)
downloadkobo-manager-373d5246eb53ef1a13166b066248526f33f935db.tar
kobo-manager-373d5246eb53ef1a13166b066248526f33f935db.tar.gz
kobo-manager-373d5246eb53ef1a13166b066248526f33f935db.tar.bz2
kobo-manager-373d5246eb53ef1a13166b066248526f33f935db.tar.lz
kobo-manager-373d5246eb53ef1a13166b066248526f33f935db.tar.xz
kobo-manager-373d5246eb53ef1a13166b066248526f33f935db.tar.zst
kobo-manager-373d5246eb53ef1a13166b066248526f33f935db.zip
Trying to get the kobo api working for querying firmware
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/firmware/default.nix16
-rw-r--r--pkgs/kfwproxy/default.nix19
-rwxr-xr-xpkgs/kobo-manager/script.sh24
-rw-r--r--pkgs/misc/firmware-check.nix12
-rw-r--r--pkgs/misc/unlock.nix28
-rw-r--r--pkgs/plato/default.nix19
6 files changed, 107 insertions, 11 deletions
diff --git a/pkgs/firmware/default.nix b/pkgs/firmware/default.nix
index 813746a..932ecf1 100644
--- a/pkgs/firmware/default.nix
+++ b/pkgs/firmware/default.nix
@@ -1,20 +1,29 @@
{ stdenvNoCC, fetchzip, lib, ... }:
-{ hardware, date, version, hash ? "", sha256 ? "", ... }:
+{ hardware, date, version, hash ? "", ... }:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "kobo-firmware";
inherit version hardware date;
src = fetchzip {
url = "https://ereaderfiles.kobo.com/firmwares/${finalAttrs.hardware}/${finalAttrs.date}/kobo-update-${finalAttrs.version}.zip";
- inherit hash sha256;
+ inherit hash;
};
+ outputs = [
+ "out"
+ "KoboRoot"
+ ];
+
phases = "installPhase";
installPhase = ''
runHook preInstall
- cp -r $src $out
+ mkdir $out
+ cp -r $src/{manifest.md5sum,upgrade} $out/
+
+ mkdir $KoboRoot
+ tar xvzf $src/KoboRoot.tgz --directory=$KoboRoot
runHook postInstall
'';
@@ -29,5 +38,6 @@ stdenvNoCC.mkDerivation (finalAttrs: {
Kobo firmware files.
'';
platform = platforms.all;
+ outputsToInstall = finalAttrs.outputs;
};
})
diff --git a/pkgs/kfwproxy/default.nix b/pkgs/kfwproxy/default.nix
new file mode 100644
index 0000000..c06eb73
--- /dev/null
+++ b/pkgs/kfwproxy/default.nix
@@ -0,0 +1,19 @@
+{ fetchFromGitHub, buildGoModule, lib, ... }:
+buildGoModule rec {
+ pname = "kfwproxy";
+ version = "unstable";
+
+ src = fetchFromGitHub {
+ owner = "pgaskin";
+ repo = "kfwproxy";
+ rev = "fd068fe";
+ hash = "sha256-0d0ovn7omZkDW8Oj8m//hwo9h6R3/COYMSneIDp5nQM=";
+ };
+
+ vendorHash = "sha256-Ps5ofzM7S5FyEQ27OT/6MgB3KvOpawEAf/ReKcKE8x4=";
+
+ meta = with lib; {
+ homepage = "https://github.com/pgaskin/kfwproxy";
+ license = licenses.mit;
+ };
+}
diff --git a/pkgs/kobo-manager/script.sh b/pkgs/kobo-manager/script.sh
new file mode 100755
index 0000000..16bec7f
--- /dev/null
+++ b/pkgs/kobo-manager/script.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+set -euo pipefail
+
+local koboConfigurations="koboConfigurations"
+
+function setWorkDir() {
+ if [[ ! -v WORK_DIR ]]; then
+ WORK_DIR="$(mktemp --tmpdir -d kobo-manager-build.XXXXXXXXX)"
+
+ trap "rm -r '$WORK_DIR'" EXIT
+ fi
+}
+
+function setFlakeAttribute() {
+ local flake="${FLAKE_ARG%#*}"
+ local name="default"
+
+ case $FLAKE_ARG in
+ *#*) local name="${FLAKE_ARG#*#}" ;;
+ esac
+
+ export FLAKE_CONFIG_URI="$flake#\"$koboConfigurations\".\"$name\""
+}
diff --git a/pkgs/misc/firmware-check.nix b/pkgs/misc/firmware-check.nix
new file mode 100644
index 0000000..53cd2c2
--- /dev/null
+++ b/pkgs/misc/firmware-check.nix
@@ -0,0 +1,12 @@
+{ writeShellApplication, jq, curl, ... }:
+{ deviceID, affiliate ? "kobo" }:
+writeShellApplication {
+ name = "kobo-check-firmware";
+ runtimeInputs = [
+ curl
+ jq
+ ];
+ text = ''
+ curl --silent "https://api.kobobooks.com/1.0/UpgradeCheck/Device/${deviceID}/${affiliate}/0.0/N0" | jq '.UpgradeURL'
+ '';
+}
diff --git a/pkgs/misc/unlock.nix b/pkgs/misc/unlock.nix
new file mode 100644
index 0000000..dee313a
--- /dev/null
+++ b/pkgs/misc/unlock.nix
@@ -0,0 +1,28 @@
+{ sqlite3, kobo-utils, writeShellApplication, ... }:
+writeShellApplication {
+ name = "kobo-unlock";
+ runtimeInputs = [
+ sqlite3
+ kobo-utils
+ ];
+ text = ''
+ KOBOMNT="$(kobo-find)"
+ KOBOSQL="$KOBOMNT/.kobo/KoboReader.sqlite3"
+
+ if [ -z "$KOBOMNT" ]; then
+ >&2 echo "Cannot find a mounted Kobo ereader..."
+ exit 1
+ elif [ ! -f "$KOBOSQL" ]; then
+ >&2 echo "Cannot find the file $KOBOSQL"
+ exit 1
+ fi
+
+ echo "Inserting dummy user into $KOBOSQL"
+
+ sqlite3 "$KOBOSQL" \
+ 'INSERT INTO user(UserID,UserKey) VALUES("1","");' \
+ '.exit'
+
+ echo "Success!"
+ '';
+}
diff --git a/pkgs/plato/default.nix b/pkgs/plato/default.nix
index 2c7b5df..548363b 100644
--- a/pkgs/plato/default.nix
+++ b/pkgs/plato/default.nix
@@ -1,9 +1,7 @@
-{ stdenvNoCC, fetchzip, lib, ... }:
-let
- version = "0.9.43";
-in stdenvNoCC.mkDerivation (finalAttrs: {
+{ stdenvNoCC, fetchzip, fetchFromGitHub, lib, ... }:
+stdenvNoCC.mkDerivation (finalAttrs: {
pname = "plato";
- inherit version;
+ version = "0.9.43";
src = fetchzip {
url = "https://github.com/baskerville/plato/releases/download/${finalAttrs.version}/plato-${finalAttrs.version}.zip";
@@ -11,9 +9,14 @@ in stdenvNoCC.mkDerivation (finalAttrs: {
hash = "sha256-1E9trfAF3w0+ix8JVDJwYjWQ/dfsLjLPmkCLJAYXkZU=";
};
- picSrc = fetchzip {
- url = "https://github.com/baskerville/plato/archive/refs/tags/${version}.zip";
- hash = "sha256-u9d/8C9rRb0glZR07tqz/d8EXO0bRddXlCFDje7ow2Y=";
+ picSrc = fetchFromGitHub {
+ owner = "baskerville";
+ repo = "plato";
+ rev = "${finalAttrs.version}";
+ sparseCheckout = [
+ "artworks/plato.png"
+ ];
+ hash = "sha256-aZiEzZFeqUUMcBU7dg6xO6RF01lBlSmGsxNni/2pciY=";
};
outputs = [