summary refs log tree commit diff
path: root/mixins/multimedia.nix
blob: 2e9977116dc69e454e0c7ee63a560e44f37195e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{
  pkgs,
  lib,
  config,
  inputs,
  ...
}: {
  home-manager.users.tzlil = {
    home.packages = with pkgs; [
      ffmpeg
      gimp
      transmission
      xdg-utils
      xdg-user-dirs
    ];
    xdg = {
      enable = true;
      mime.enable = true;
      mimeApps = {
        enable = true;
        defaultApplications = {
          "application/pdf" = ["${pkgs.zathura}/share/applications/org.pwmt.zathura.desktop"];
          "image/png" = ["${pkgs.swayimg}/share/applications/swayimg.desktop"];
          "image/jpeg" = ["${pkgs.swayimg}/share/applications/swayimg.desktop"];
        };
      };
      userDirs = {
        createDirectories = true;
        desktop = "${config.home-manager.users.tzlil.home.homeDirectory}/desktop";
        download = "${config.home-manager.users.tzlil.home.homeDirectory}/downloads";
      };
      #portal = {
      #  enable = true;
      #  extraPortals = with pkgs; [
      #    xdg-desktop-portal-wlr
      #    xdg-desktop-portal-gtk
      #  ];
      #};
    };

    programs = {
      mpv = {
        enable = true;
        scripts = with pkgs.mpvScripts; [
          mpris
          thumbnail
          (pkgs.callPackage ./youtube-quality.nix {})
        ];
        config = {
          sub-auto = "fuzzy";
          ytdl-raw-options = "write-auto-sub=,sub-lang=en";
          profile = "gpu-hq";
          hwdec = "vdpau";
          screenshot-template = "%F - [%P]v%#01n";
          ytdl-format = "bestvideo[height<=?1080]+bestaudio/best";
        };
        bindings = {
          # yank video link
          "Shift+Y" = "run ${
            pkgs.writeShellScript "yank-mpv" "
          ${pkgs.wl-clipboard}/bin/wl-copy $1"
          } \${path}";
          # yank video link with timestamp
          "Ctrl+y" = "run ${pkgs.writeShellScript "yank-mpv-timestamp" "
          url=$1
          timepos=\${2%.*}
          url+=$([[ $1 = *\?* ]] && echo \\& || echo \\?)t=$(( timepos / 3600 ))h$(( timepos / 60 ))m$(( timepos % 60 ))s

          ${pkgs.wl-clipboard}/bin/wl-copy $url
          "} \${path} \${=time-pos}";
        };
      };
      zathura = {
        enable = true;
        options = {
          selection-clipboard = "clipboard";
        };
      };
    };
  };
}