summaryrefslogtreecommitdiff
path: root/pkgs/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/scripts')
-rw-r--r--pkgs/scripts/clip.nix50
-rw-r--r--pkgs/scripts/default.nix13
-rw-r--r--pkgs/scripts/merge-pdfs.nix38
3 files changed, 101 insertions, 0 deletions
diff --git a/pkgs/scripts/clip.nix b/pkgs/scripts/clip.nix
new file mode 100644
index 0000000..3e16e3e
--- /dev/null
+++ b/pkgs/scripts/clip.nix
@@ -0,0 +1,50 @@
+{
+ lib,
+ writeShellScriptBin,
+ gnome-screenshot,
+ xclip,
+ file,
+ imagemagick,
+ toPDF,
+ ...
+}:
+with lib; let
+ name =
+ if toPDF
+ then "clip-pdf"
+ else "clip";
+
+ pdfCmdline = optionalString toPDF ''
+ if [ $# -lt 1 ]; then
+ echo "Usage: $0 <out.pdf> [opts...]" >&2
+ exit 1
+ fi
+
+ OUT="$1"
+ shift
+ '';
+
+ copyOut =
+ if toPDF
+ then ''
+ ${imagemagick}/bin/convert "$CLIP" "$OUT"
+ ''
+ else ''
+ ${xclip}/bin/xclip -selection clipboard \
+ -t $(${file}/bin/file -b --mime-type $CLIP) <"$CLIP"
+ '';
+in
+ writeShellScriptBin name ''
+ ${pdfCmdline}
+
+ OPTIONS=-a
+ if [ "x$@" != "x" ]; then
+ OPTIONS="$@"
+ fi
+
+ CLIP="$HOME/vtmp/$$.png"
+ ${gnome-screenshot}/bin/gnome-screenshot "$OPTIONS" -f "$CLIP"
+ ${copyOut}
+
+ rm "$CLIP"
+ ''
diff --git a/pkgs/scripts/default.nix b/pkgs/scripts/default.nix
new file mode 100644
index 0000000..ed18647
--- /dev/null
+++ b/pkgs/scripts/default.nix
@@ -0,0 +1,13 @@
+{
+ callPackage,
+ symlinkJoin,
+ ...
+}:
+symlinkJoin {
+ name = "scripts";
+ paths = [
+ (callPackage ./clip.nix {toPDF = false;})
+ (callPackage ./clip.nix {toPDF = true;})
+ (callPackage ./merge-pdfs.nix {})
+ ];
+}
diff --git a/pkgs/scripts/merge-pdfs.nix b/pkgs/scripts/merge-pdfs.nix
new file mode 100644
index 0000000..cb7d678
--- /dev/null
+++ b/pkgs/scripts/merge-pdfs.nix
@@ -0,0 +1,38 @@
+{
+ writeShellScriptBin,
+ pdftk,
+ ...
+}:
+writeShellScriptBin "merge-pdfs" ''
+ set -e
+ export PATH="$PATH:${pdftk}/bin"
+
+ if [ $# -lt 3 ]; then
+ echo "Usage: $0 <output> <PDFs...>" >&2
+ exit 1
+ fi
+
+ OUTPUT="$1"
+ shift
+
+ WORKDIR="$HOME/vtmp/merge-pdfs.$$"
+ BOOKMARKS="$WORKDIR/bookmarks.txt"
+ FMT="BookmarkBegin
+ BookmarkTitle: %s
+ BookmarkLevel: 1
+ BookmarkPageNumber: 1
+ "
+
+ mkdir "$WORKDIR"
+
+ N=0
+ for SOURCE in "$@"; do
+ BASE="$(basename "$SOURCE")"
+ printf "$FMT" "''${BASE%.*}" >"$BOOKMARKS"
+ pdftk "$SOURCE" update_info "$BOOKMARKS" output "$WORKDIR/"$(printf "%04d" $N).pdf
+ N=$((N+1))
+ done
+
+ pdftk "$WORKDIR"/*.pdf cat output "$OUTPUT"
+ rm -r "$WORKDIR"
+''