Joey Hafner b763bfb8ee Big Update:
- Switch Zen browser from flatpak to 0xc000022070's flake.
- Add ffmpeg scripts for transcoding and uploading video.
- Add ffmpeg-full package.
- Delete workaround for nixGL with OBS-studio.
2024-12-07 00:39:36 -08:00

83 lines
2.6 KiB
Nix

{ pkgs, ... }: {
home.packages = with pkgs; [
ffmpeg-full
libnotify
( writeShellApplication {
name = "convert-for-discord"; # { filePath }: { none } (side-effect: transcodes & remuxes file to x264/mp4)
runtimeInputs = [
libnotify
ffmpeg-full
];
text = ''
#!/bin/bash
INPUT_FILE=$(realpath "$1")
FILE_PATH=$(dirname "$INPUT_FILE")
FILE_NAME=$(basename "$INPUT_FILE")
#FILE_EXT="''$''\{FILE_NAME##*.}"
FILE_NAME="''$''\{FILE_NAME%.*}"
OUTFILE="$FILE_PATH/$FILE_NAME.mp4"
# Actual transcoding happens here:
notify-send -t 2000 "Transcode starting" "$FILE_NAME"
ffmpeg -hide_banner -vaapi_device /dev/dri/renderD128 -i "$INPUT_FILE" -map 0 -vf 'format=nv12,hwupload' -c:v h264_vaapi -b:v 8M -c:a copy "$OUTFILE"
notify-send -t 4000 "Transcode complete" "$FILE_NAME"
'';
} )
( writeShellApplication {
name = "send-to-zipline"; # { filePath }: { none } (side-effect: transcodes & remuxes file to x264/mp4)
runtimeInputs = [
libnotify
curl
jq
wl-clipboard
wl-clip-persist
];
text = ''
#!/bin/bash
INPUT_FILE=$(realpath "$INPUT_FILE")
FILE_NAME=$(basename "$INPUT_FILE")
FILE_NAME="''$''\{FILE_NAME%.*}"
ZIPLINE_HOST_ROOT=https://zipline.jafner.net
TOKEN=$(cat ~/.zipline-auth)
LINK=$(curl \
--header "authorization: $TOKEN" \
$ZIPLINE_HOST_ROOT/api/upload -F "file=@$INPUT_FILE" \
--header "Content-Type: multipart/form-data" \
--header "Format: name" \
--header "Embed: true" \
--header "Original-Name: true")
LINK=$(echo "$LINK" | jq -r .'files[0]')
echo "[$FILE_NAME]($LINK)" | wl-copy
notify-send -t 4000 "Zipline - Upload complete." "Link copied to clipboard: $LINK"
'';
} )
];
home.file."send-to-ffmpeg.desktop" = {
target = ".local/share/kio/servicemenus/send-to-ffmpeg.desktop";
text = ''
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=video/*;
Icon=video-mp4
X-KDE-Submenu=Run script...
Actions=convertForDiscord;sendToZipline
[Desktop Action convertForDiscord]
Name=Convert for Discord
Icon=video-mp4
TryExec=ffmpeg
Exec=file=%f; convert-for-discord "%f"
[Desktop Action sendToZipline]
Name=Send to Zipline
Icon=video-mp4
TryExec=ffmpeg
Exec=file=%f; send-to-zipline "%f"
'';
};
}