aboutsummaryrefslogtreecommitdiff
path: root/pkgs/misc/deploy.nix
diff options
context:
space:
mode:
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";
+ };
+})