aboutsummaryrefslogtreecommitdiffstats
path: root/modules/scripts
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar@proton.me>2026-04-23 04:00:13 +0530
committerArpit Chakladar <arpitchakladar@proton.me>2026-04-23 04:00:13 +0530
commit58e84ff53ceaf415e2a598c0122da526a27c3f38 (patch)
treef54ddcd6d91092e6d63c7385d65d260e628d47e2 /modules/scripts
parent5ba4319dd246e018abdfd7df8c491bdef907ca1c (diff)
downloadhome-manager-config-58e84ff53ceaf415e2a598c0122da526a27c3f38.tar.gz
home-manager-config-58e84ff53ceaf415e2a598c0122da526a27c3f38.zip
passing paths to the the executables used in the script
Diffstat (limited to 'modules/scripts')
-rw-r--r--modules/scripts/default.nix20
-rw-r--r--modules/scripts/file-preview.sh44
2 files changed, 38 insertions, 26 deletions
diff --git a/modules/scripts/default.nix b/modules/scripts/default.nix
index 9c7bba8..b4a6106 100644
--- a/modules/scripts/default.nix
+++ b/modules/scripts/default.nix
@@ -45,7 +45,14 @@ let
};
file-preview = {
path = ./file-preview.sh;
- env = { };
+ env = {
+ BAT = lib.getExe pkgs.bat;
+ FILE = lib.getExe pkgs.file;
+ FFMPEG = lib.getExe' pkgs.ffmpeg-full "ffmpeg";
+ FFPROBE = lib.getExe' pkgs.ffmpeg-full "ffprobe";
+ OUCH = lib.getExe pkgs.ouch;
+ PDFTOPPM = lib.getExe' pkgs.poppler-utils "pdftoppm";
+ };
deps = [
pkgs.bat
pkgs.file
@@ -55,7 +62,16 @@ let
];
conditions = [
{
- option = "tools.fzf.enable";
+ option = "tools.ffmpeg.enable";
+ value = true;
+ }
+ {
+ option = "tools.ouch.enable";
+ value = true;
+ }
+ {
+ # not a dependency
+ option = "tools.zathura.enable";
value = true;
}
];
diff --git a/modules/scripts/file-preview.sh b/modules/scripts/file-preview.sh
index 1dd810f..1f884ee 100644
--- a/modules/scripts/file-preview.sh
+++ b/modules/scripts/file-preview.sh
@@ -6,7 +6,7 @@ if [ -z "$LF_PREVIEW_RUNNING" ]; then
fi
# Parameters from lf
-FILE="$1"
+FILE_PATH="$1"
WIDTH="$2"
HEIGHT="$3"
X="$4"
@@ -15,7 +15,7 @@ Y="$5"
# Temp dir
TMP_DIR="/tmp/lf-preview-$(id -u)"
mkdir -p "$TMP_DIR"
-TMP_IMG="$TMP_DIR/pv-$(basename "$FILE" | tr -c '[:alnum:]' '_').png"
+TMP_IMG="$TMP_DIR/pv-$(basename "$FILE_PATH" | tr -c '[:alnum:]' '_').png"
# Render image via kitty
render_image() {
@@ -30,36 +30,36 @@ x="$4"
y="$5"
# Ensure file exists
-[ ! -r "$FILE" ] && exit 0
+[ ! -r "$FILE_PATH" ] && exit 0
-MIMETYPE=$(file --dereference --brief --mime-type "$FILE")
+MIMETYPE=$(file --dereference --brief --mime-type "$FILE_PATH")
case "$MIMETYPE" in
# --- IMAGES ---
image/svg+xml)
- rsvg-convert "$FILE" -o "$TMP_IMG" >/dev/null 2>&1 && render_image "$TMP_IMG"
+ rsvg-convert "$FILE_PATH" -o "$TMP_IMG" >/dev/null 2>&1 && render_image "$TMP_IMG"
;;
image/*)
- render_image "$FILE"
+ render_image "$FILE_PATH"
;;
# --- VIDEOS ---
video/*)
if command -v ffmpegthumbnailer >/dev/null; then
- ffmpegthumbnailer -i "$FILE" -o "$TMP_IMG" -s 0 -q 5 >/dev/null 2>&1
+ ffmpegthumbnailer -i "$FILE_PATH" -o "$TMP_IMG" -s 0 -q 5 >/dev/null 2>&1
else
- ffmpeg -y -i "$FILE" -ss 00:00:01 -vframes 1 "$TMP_IMG" >/dev/null 2>&1
+ "$FFMPEG" -y -i "$FILE_PATH" -ss 00:00:01 -vframes 1 "$TMP_IMG" >/dev/null 2>&1
fi
[ -f "$TMP_IMG" ] && render_image "$TMP_IMG"
;;
# --- AUDIO ---
audio/*)
- ffmpeg -y -i "$FILE" \
+ "$FFMPEG" -y -i "$FILE_PATH" \
-filter_complex "showwavespic=s=${WIDTH}x${HEIGHT}:colors=white" \
-frames:v 1 "$TMP_IMG" >/dev/null 2>&1
- ffprobe -hide_banner -v quiet -show_format -show_streams "$FILE"
+ "$FFPROBE" -hide_banner -v quiet -show_format -show_streams "$FILE_PATH"
[ -f "$TMP_IMG" ] && render_image "$TMP_IMG"
exit 0
@@ -67,53 +67,49 @@ case "$MIMETYPE" in
# --- PDF ---
application/pdf)
- pdftoppm -f 1 -l 1 -png -singlefile "$FILE" "${TMP_IMG%.png}" >/dev/null 2>&1
+ "$PDFTOPPM" -f 1 -l 1 -png -singlefile "$FILE_PATH" "${TMP_IMG%.png}" >/dev/null 2>&1
[ -f "$TMP_IMG" ] && render_image "$TMP_IMG"
;;
# --- EPUB / MOBI ---
application/epub+zip|application/x-mobipocket-ebook)
- ouch decompress "$FILE" --limit "*/cover*.jpg" --dir /tmp && mv /tmp/cover*.jpg "$TMP_IMG"
+ "$OUCH" decompress "$FILE_PATH" --limit "*/cover*.jpg" --dir /tmp && mv /tmp/cover*.jpg "$TMP_IMG"
[ -s "$TMP_IMG" ] && render_image "$TMP_IMG"
;;
# --- OFFICE ---
application/vnd.openxmlformats-officedocument.*|application/msword|application/vnd.oasis.opendocument.*)
- libreoffice --headless --convert-to pdf --outdir "$TMP_DIR" "$FILE" >/dev/null 2>&1
- PDF_VER="${TMP_DIR}/$(basename "${FILE%.*}").pdf"
+ libreoffice --headless --convert-to pdf --outdir "$TMP_DIR" "$FILE_PATH" >/dev/null 2>&1
+ PDF_VER="${TMP_DIR}/$(basename "${FILE_PATH%.*}").pdf"
if [ -f "$PDF_VER" ]; then
- pdftoppm -f 1 -l 1 -png -singlefile "$PDF_VER" "${TMP_IMG%.png}" >/dev/null 2>&1
+ "$PDFTOPPM" -f 1 -l 1 -png -singlefile "$PDF_VER" "${TMP_IMG%.png}" >/dev/null 2>&1
render_image "$TMP_IMG"
fi
;;
# --- ARCHIVES ---
application/zip|application/x-7z-compressed|application/x-rar|application/x-tar|application/x-gzip)
- ouch list -t "$FILE" 2>/dev/null
+ "$OUCH" list -t "$FILE_PATH" 2>/dev/null
exit 0
;;
# --- TEXT / CODE ---
text/*|application/json|application/javascript|application/xml)
- if command -v bat >/dev/null; then
- bat --color=always --style=numbers --line-range :200 "$FILE"
- else
- cat "$FILE"
- fi
+ "$BAT" --color=always --style=numbers --line-range :200 "$FILE_PATH"
exit 0
;;
# --- FONTS ---
font/*|application/vnd.ms-fontobject|application/x-font-ttf)
- fc-scan "$FILE"
+ fc-scan "$FILE_PATH"
exit 0
;;
# --- FALLBACK ---
*)
- file --dereference --brief "$FILE"
+ file --dereference --brief "$FILE_PATH"
echo "------------------------------------------------"
- hexdump -C "$FILE" | head -n 100
+ hexdump -C "$FILE_PATH" | head -n 100
exit 0
;;
esac