Personal-use NixOS configuration
1{
2 pkgs,
3 lib,
4 mkAliases,
5 ...
6}:
7
8let
9 ffmpegExe = lib.getExe pkgs.ffmpeg;
10
11 aliases = {
12 opus = ''
13 INPUT_FILE_NAME="$1"
14 TEMPORARY_FILE_NAME="/tmp/''${1%.*}.opus"
15 TARGET_FILE_NAME="''${1%.*}.m4a"
16
17 BITRATE="''${2:-128k}"
18
19 ${ffmpegExe} -i $INPUT_FILE_NAME \
20 -b:a $BITRATE \
21 -c:a libopus \
22 $TEMPORARY_FILE_NAME
23
24 ${ffmpegExe} -i $TEMPORARY_FILE_NAME \
25 -map_metadata -1 \
26 -fflags +bitexact \
27 -flags:v +bitexact \
28 -flags:a +bitexact \
29 -c:a copy \
30 -f mp4 \
31 $TARGET_FILE_NAME
32
33 rm $TEMPORARY_FILE_NAME
34 '';
35 };
36in
37pkgs.mkShell {
38 packages =
39 with pkgs;
40 [
41 ffmpeg
42 rsgain
43 ]
44 ++ (mkAliases aliases);
45}