From 4f471484b3a1e16230979a8406503a220b9101f4 Mon Sep 17 00:00:00 2001 From: Chris Wells Date: Tue, 10 Sep 2024 14:51:28 -0500 Subject: I think this is almost working! --- pkgs/misc/deploy.nix | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 pkgs/misc/deploy.nix (limited to 'pkgs/misc/deploy.nix') 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"; + }; +}) -- cgit v1.2.3