mirror of
https://github.com/donovanglover/nix-config.git
synced 2025-08-14 08:58:30 +02:00
record: init at 0.1.0
This commit is contained in:
89
packages/record.nix
Normal file
89
packages/record.nix
Normal file
@ -0,0 +1,89 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
writeTextFile,
|
||||
makeWrapper,
|
||||
fish,
|
||||
pipewire,
|
||||
ffmpeg,
|
||||
libnotify,
|
||||
wl-clipboard-rs,
|
||||
xclip,
|
||||
}:
|
||||
|
||||
let
|
||||
record = writeTextFile {
|
||||
name = "record";
|
||||
text = # fish
|
||||
''
|
||||
#!/usr/bin/env fish
|
||||
|
||||
if pgrep pw-record
|
||||
pkill pw-record
|
||||
|
||||
exit 0
|
||||
end
|
||||
|
||||
notify-send \
|
||||
--hint "string:x-dunst-stack-tag:record" \
|
||||
"録音" \
|
||||
"中"
|
||||
|
||||
set DIRECTORY "/tmp/"
|
||||
set FILENAME "録音_$(date --iso-8601)-$(uuidgen)"
|
||||
|
||||
pw-record -P "{ stream.capture.sink=true }" "$DIRECTORY$FILENAME.flac"
|
||||
ffmpeg -i "$DIRECTORY$FILENAME.flac" -c:a libopus -b:a 128K "$DIRECTORY$FILENAME.opus"
|
||||
|
||||
if test "$XDG_SESSION_TYPE" = "x11"
|
||||
echo "file://$DIRECTORY$FILENAME.opus" | xclip -selection clipboard
|
||||
else
|
||||
echo "file://$DIRECTORY$FILENAME.opus" | wl-copy -t text/uri-list
|
||||
end
|
||||
|
||||
notify-send \
|
||||
--hint "string:x-dunst-stack-tag:record" \
|
||||
"録音" \
|
||||
"成功"
|
||||
'';
|
||||
};
|
||||
in
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "record";
|
||||
version = "0.1.0";
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm755 ${record} $out/bin/record
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/record" \
|
||||
--prefix PATH ":" "${
|
||||
lib.makeBinPath [
|
||||
fish
|
||||
pipewire
|
||||
ffmpeg
|
||||
libnotify
|
||||
wl-clipboard-rs
|
||||
xclip
|
||||
]
|
||||
}"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/donovanglover/nix-config";
|
||||
description = "Script to record desktop audio and copy the result to the clipboard";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ donovanglover ];
|
||||
platforms = lib.platforms.linux;
|
||||
mainProgram = "record";
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user