summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2024-08-23 23:36:43 +0200
committerGregor Kleen <gkleen@yggdrasil.li>2024-08-23 23:36:43 +0200
commit618e4580240c71a7ac866649e01439e75ef4d6a6 (patch)
tree52de219537f8e2ca4c24527eb8a5321f77277fc7
parentf7c6f796fa348c2b3edfd9bc44d3e8533501681e (diff)
downloadnixos-618e4580240c71a7ac866649e01439e75ef4d6a6.tar
nixos-618e4580240c71a7ac866649e01439e75ef4d6a6.tar.gz
nixos-618e4580240c71a7ac866649e01439e75ef4d6a6.tar.bz2
nixos-618e4580240c71a7ac866649e01439e75ef4d6a6.tar.xz
nixos-618e4580240c71a7ac866649e01439e75ef4d6a6.zip
...
-rw-r--r--accounts/gkleen@sif/hyprland.nix4
-rw-r--r--accounts/gkleen@sif/systemd.nix55
-rw-r--r--home-modules/lmu-hausschrift/default.nix37
3 files changed, 83 insertions, 13 deletions
diff --git a/accounts/gkleen@sif/hyprland.nix b/accounts/gkleen@sif/hyprland.nix
index 645a2f22..052f35b0 100644
--- a/accounts/gkleen@sif/hyprland.nix
+++ b/accounts/gkleen@sif/hyprland.nix
@@ -184,6 +184,10 @@ in {
184 "CTRL, comma, exec, dunstctl history-pop" 184 "CTRL, comma, exec, dunstctl history-pop"
185 185
186 "$mainMod ALT, E, exec, emacsclient -c" 186 "$mainMod ALT, E, exec, emacsclient -c"
187 "$mainMod ALT, Y, exec, ${pkgs.writeShellScript "yt-dlp" ''
188 export PATH="${lib.makeBinPath (with pkgs; [ wl-clipboard-rs socat ])}:$PATH"
189 socat STDIO UNIX-CONNECT:"$XDG_RUNTIME_DIR"/yt-dlp.sock <<<$'{ "urls": ["'"$(wl-paste)"$'"] }'
190 ''}"
187 191
188 ", XF86MonBrightnessUp, exec, lightctl -d -e4 -n1 up" 192 ", XF86MonBrightnessUp, exec, lightctl -d -e4 -n1 up"
189 ", XF86MonBrightnessDown, exec, lightctl -d -e4 -n1 down" 193 ", XF86MonBrightnessDown, exec, lightctl -d -e4 -n1 down"
diff --git a/accounts/gkleen@sif/systemd.nix b/accounts/gkleen@sif/systemd.nix
index 09d058de..b7bf902e 100644
--- a/accounts/gkleen@sif/systemd.nix
+++ b/accounts/gkleen@sif/systemd.nix
@@ -278,6 +278,47 @@ in {
278 ''}''; 278 ''}'';
279 }; 279 };
280 }; 280 };
281 "yt-dlp@" = {
282 Service = {
283 Type = "notify";
284 RuntimeDirectory = "%N";
285 StandardInput = "socket";
286 StandardOutput = "journal";
287 WatchdogSec = "10s";
288 Environment = [
289 "PATH=${lib.makeBinPath (with pkgs; [atomicparsley ffmpeg-headless rtmpdump])}"
290 ];
291 ExecStart = pkgs.writers.writePython3 "yt-dlp" {
292 libraries = with pkgs.python3Packages; [ yt-dlp sdnotify ];
293 } ''
294 import json
295 from yt_dlp import YoutubeDL, parse_options
296 from sys import stdin
297 from sdnotify import SystemdNotifier
298 from os import environ
299 from pathlib import Path
300
301
302 n = SystemdNotifier()
303 args = json.load(stdin)
304 ydl_opts = {
305 **parse_options().ydl_opts,
306 'progress_hooks': [lambda _d: n.notify('WATCHDOG=1')],
307 'postprocessor_hooks': [lambda _d: n.notify('WATCHDOG=1')],
308 'progress_with_newline': True,
309 'progress_delta': 5,
310 'paths': {
311 'home': str(Path.home() / 'media'),
312 'temp': str(Path(environ['RUNTIME_DIRECTORY'])),
313 },
314 **(args['params'] if 'params' in args else {}),
315 }
316 with YoutubeDL(ydl_opts) as ytdl:
317 n.notify('READY=1')
318 ytdl.download(args['urls'])
319 '';
320 };
321 };
281 } // listToAttrs (map ({host, port}: nameValuePair "proxy-to-autossh-socks@${toString port}" { 322 } // listToAttrs (map ({host, port}: nameValuePair "proxy-to-autossh-socks@${toString port}" {
282 Unit = { 323 Unit = {
283 Requires = ["autossh-socks@${host}:${toString (port + 1)}.service" "proxy-to-autossh-socks@${toString port}.socket"]; 324 Requires = ["autossh-socks@${host}:${toString (port + 1)}.service" "proxy-to-autossh-socks@${toString port}.socket"];
@@ -294,7 +335,19 @@ in {
294 Install = { 335 Install = {
295 WantedBy = ["default.target"]; 336 WantedBy = ["default.target"];
296 }; 337 };
297 }) [8118 8120]); 338 }) [8118 8120]) // {
339 "yt-dlp" = {
340 Socket = {
341 SocketMode = "0600";
342 Accept = true;
343 ListenStream = "%t/yt-dlp.sock";
344 TriggerLimitIntervalSec = 0;
345 };
346 Install = {
347 WantedBy = ["sockets.target"];
348 };
349 };
350 };
298 timers = { 351 timers = {
299 sync-keepass = { 352 sync-keepass = {
300 Timer = { 353 Timer = {
diff --git a/home-modules/lmu-hausschrift/default.nix b/home-modules/lmu-hausschrift/default.nix
index c3344947..ceaf7252 100644
--- a/home-modules/lmu-hausschrift/default.nix
+++ b/home-modules/lmu-hausschrift/default.nix
@@ -24,24 +24,37 @@ with lib;
24 ''; 24 '';
25 }; 25 };
26 26
27 systemd.user.services.sops-nix = { 27 systemd.user.services.unpack-lmu-hausschrift = {
28 Unit = {
29 ConditionPathExists = [
30 "!%h/.local/share/lmu-hausschrift"
31 "!%t/lmu-hausschrift"
32 ];
33 };
34 Unit = {
35 After = ["sops-nix.service"];
36 };
37 Install = {
38 WantedBy = ["sops-nix.service"];
39 };
28 Service = { 40 Service = {
29 ExecStartPost = pkgs.writeShellScript "unpack-lmu-hausschrift.sh" '' 41 UMask = "07077";
42 Environment = [
43 "PATH=${lib.makeBinPath (with pkgs; [gnutar coreutils])}"
44 ];
45 ExecStart = pkgs.writeShellScript "unpack-lmu-hausschrift.sh" ''
30 set -xe 46 set -xe
31 47
32 out=''${XDG_RUNTIME_DIR:-/tmp}/lmu-hausschrift 48 out=''${XDG_RUNTIME_DIR:-/tmp}/lmu-hausschrift
33 src="${config.sops.secrets."lmu-hausschrift.tar.zstd".path}" 49 src="${config.sops.secrets."lmu-hausschrift.tar.zstd".path}"
34 src=''${src#"%r/"} 50 if [[ "$src" =~ ^%r ]]; then
35 src=''${XDG_RUNTIME_DIR:-/tmp}/"''${src}" 51 src=''${src#"%r/"}
36 52 src=''${XDG_RUNTIME_DIR:-/tmp}/"''${src}"
37 umask 07077
38
39 if [[ ! -d "''${out}" ]]; then
40 ${pkgs.coreutils}/bin/mkdir -p "''${out}"
41 ${pkgs.gnutar}/bin/tar -xaf "''${src}" -C "''${out}"
42
43 ${pkgs.coreutils}/bin/ln -sfT "''${out}" "${config.home.homeDirectory}/.local/share/lmu-hausschrift"
44 fi 53 fi
54
55 mkdir -p "''${out}"
56 tar -xaf "''${src}" -C "''${out}"
57 ln -sfT "''${out}" "${config.home.homeDirectory}/.local/share/lmu-hausschrift"
45 ''; 58 '';
46 }; 59 };
47 }; 60 };