aboutsummaryrefslogtreecommitdiff
path: root/pkgs/misc/deploy.nix
diff options
context:
space:
mode:
authorChris Wells <chris@mathematicaster.org>2024-09-10 14:51:28 -0500
committerChris Wells <chris@mathematicaster.org>2024-09-10 14:51:28 -0500
commit4f471484b3a1e16230979a8406503a220b9101f4 (patch)
treedc3f5256f275f34d3bcc9573462ed34c7fd97f77 /pkgs/misc/deploy.nix
parent5cb16c34a8c5b803ec723934c1dc828c0e8e3bad (diff)
downloadkobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar.gz
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar.bz2
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar.lz
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar.xz
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar.zst
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.zip
I think this is almost working!
Diffstat (limited to 'pkgs/misc/deploy.nix')
-rw-r--r--pkgs/misc/deploy.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/pkgs/misc/deploy.nix b/pkgs/misc/deploy.nix
new file mode 100644
index 0000000..23973e9
--- /dev/null
+++ b/pkgs/misc/deploy.nix
@@ -0,0 +1,65 @@
+{ stdenvNoCC, writeShellApplication, makeWrapper, rsync, kobo-utils, lib, ... }:
+src:
+let
+ deployScript = writeShellApplication {
+ name = "deploy";
+ runtimeInputs = [
+ rsync
+ kobo-utils
+ ];
+ text = ''
+ PAYLOAD="./payload"
+
+ if [[ ! -d "$PAYLOAD" ]]; then
+ >&2 echo "./payload is not a directory I can copy..."
+ exit 1
+ fi
+
+ KOBOMNT="$(kobo-find -f -w)"
+ KOBODIR="$KOBOMNT/.kobo"
+
+ if [[ -z "$KOBOMNT" ]]; then
+ >&2 echo "Cannot find mounted kobo"
+ exit 1
+ elif [[ ! -d "$KOBODIR" ]]; then
+ >&2 echo "$KOBODIR does not appear to exist. Is this really a kobo?"
+ exit 1
+ fi
+
+ echo "Deploying payload"
+
+ rsync -rv --executability --chmod=u+w "$PAYLOAD/" "$KOBODIR"
+ '';
+ };
+in stdenvNoCC.mkDerivation (finalAttrs: {
+ name = "deploy-kobo";
+
+ inherit src;
+
+ nativeBuildInputs = [
+ makeWrapper
+ ];
+
+ buildInputs = [
+ kobo-utils
+ rsync
+ ];
+
+ phases = "installPhase";
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out
+ cp -r $src $out/payload
+
+ mkdir -p $out/bin
+ makeWrapper "${lib.getExe deployScript}" $out/bin/deploy --chdir "$out"
+
+ runHook postInstall
+ '';
+
+ meta = {
+ mainProgram = "deploy";
+ };
+})