From 8c3af63e1206635b2e652fd033eb591cc17fa819 Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L de Mello" Date: Fri, 14 Mar 2025 22:13:03 -0300 Subject: [PATCH] feat(guz,apps,packages): untrack, small utility to remove metadata from files --- flake.nix | 2 ++ home/guz/apps.nix | 2 ++ packages/untrack/default.nix | 9 +++++++++ packages/untrack/untrack.sh | 25 +++++++++++++++++++++++++ 4 files changed, 38 insertions(+) create mode 100644 packages/untrack/default.nix create mode 100644 packages/untrack/untrack.sh diff --git a/flake.nix b/flake.nix index 13781ef..906948e 100644 --- a/flake.nix +++ b/flake.nix @@ -137,6 +137,8 @@ ... }: { davincify = pkgs.callPackage ./packages/davincify {}; + untrack = pkgs.callPackage ./packages/untrack {}; + neovim = inputs.neovim.packages.${pkgs.system}.default; devkit = diff --git a/home/guz/apps.nix b/home/guz/apps.nix index 2fa33e5..05b0f2e 100644 --- a/home/guz/apps.nix +++ b/home/guz/apps.nix @@ -40,11 +40,13 @@ # Media ffmpeg + exiftool krita davinci-resolve ]) # Utils ++ (with self.packages.${pkgs.system}; [ davincify + untrack ]); } diff --git a/packages/untrack/default.nix b/packages/untrack/default.nix new file mode 100644 index 0000000..da2f654 --- /dev/null +++ b/packages/untrack/default.nix @@ -0,0 +1,9 @@ +{ + pkgs, + lib, + ... +}: +pkgs.writeShellScriptBin "untrack" '' + function exitftool() { ${lib.getExe pkgs.exiftool} "$@"; } + ${builtins.readFile ./untrack.sh} +'' diff --git a/packages/untrack/untrack.sh b/packages/untrack/untrack.sh new file mode 100644 index 0000000..3b0867d --- /dev/null +++ b/packages/untrack/untrack.sh @@ -0,0 +1,25 @@ +function rand_hex() { + local length="$1" + + cat /dev/urandom | tr -cd 'a-f0-9' | head -c "$length" +} + +# TODO: Support for directories +function untrack() { + local file="$1" + + local filename="$(basename "$file")" + local ext="${filename##*.}" + local directory="$(dirname "$file")" + + local output_file="$directory/$(rand_hex 6).$ext" + + cp "$file" "$output_file" + + exiftool \ + -overwrite_original \ + -all= \ + "$output_file" +} + +untrack "$1"