diff --git a/hosts/hebesu/default.nix b/hosts/hebesu/default.nix index 28c59bc..3895f3f 100644 --- a/hosts/hebesu/default.nix +++ b/hosts/hebesu/default.nix @@ -37,4 +37,5 @@ ip46tables -t mangle -D nixos-fw-rpfilter -p udp -m udp --dport 51820 -j RETURN || true ''; }; + u.has.jp = true; } diff --git a/overlays/default.nix b/overlays/default.nix index 148688c..7b80b84 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -10,6 +10,11 @@ buildInputs = old.buildInputs ++ [pkgs.xorg.libXcursor]; env.NIX_LDFLAGS = "-lXcursor"; }); + ki = super.ki.overrideAttrs (old: { + postInstall = '' + patch $out/bin/ki < ${./ki.diff} + ''; + }); }) ]; } diff --git a/overlays/ki.diff b/overlays/ki.diff new file mode 100644 index 0000000..895dd0e --- /dev/null +++ b/overlays/ki.diff @@ -0,0 +1,11 @@ +--- a/bin/ki ++++ b/bin/ki +@@ -1,6 +1,8 @@ + import re + import sys + from ki import ki ++import ki.maybes as M; M.empty_kirepo = lambda root: (M.F.mksubdir(root, M.Path(M.KI)), M.F.mksubdir(M.EmptyDir(root), M.Path(M.MEDIA))) ++import pathlib as P; PTD = P.Path.__truediv__; P.Path.__truediv__ = lambda a, b: P.Path('/dev/null') if '.gitattributes' in str(PTD(a, b)) else PTD(a, b) + if __name__ == "__main__": + sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) + sys.exit(ki()) diff --git a/user/config/default.nix b/user/config/default.nix index 7ad776d..6170a57 100644 --- a/user/config/default.nix +++ b/user/config/default.nix @@ -9,6 +9,7 @@ in { imports = [ ./kde ./tmux + ./mpv ./nvim ./starship ]; diff --git a/user/config/mpv/default.nix b/user/config/mpv/default.nix new file mode 100644 index 0000000..696f4cf --- /dev/null +++ b/user/config/mpv/default.nix @@ -0,0 +1,15 @@ +{ + config, + lib, + pkgs, + ... +}: +lib.mkIf config.u.has.graphical { + programs.mpv = { + enable = true; + scripts = lib.optionals config.u.has.jp [pkgs.mpvScripts.mpvacious]; + }; + xdg.configFile."mpv/input.conf".source = config.u.lib.lnn "user/config/mpv/input.conf"; + xdg.configFile."mpv/mpv.conf".source = config.u.lib.lnn "user/config/mpv/mpv.conf"; + xdg.configFile."mpv/script-opts".source = config.u.lib.lnn "user/config/mpv/script-opts"; +} diff --git a/user/config/mpv/input.conf b/user/config/mpv/input.conf new file mode 100644 index 0000000..3904e7d --- /dev/null +++ b/user/config/mpv/input.conf @@ -0,0 +1,17 @@ +h seek -10 +j seek -3 exact +k seek 3 exact +l seek 10 + +a no-osd sub-seek -1 +s set sub-delay 0 +d no-osd sub-seek 1 + +Z add sub-delay +0.05 +z add sub-delay -0.05 +X sub-step 1 +x sub-step -1 + +mbtn_left cycle pause +wheel_up seek 1 +wheel_down seek -1 diff --git a/user/config/mpv/mpv.conf b/user/config/mpv/mpv.conf new file mode 100644 index 0000000..8cbb5e5 --- /dev/null +++ b/user/config/mpv/mpv.conf @@ -0,0 +1,9 @@ +alang=ja,jp,jpn,japanese,en,eng,english,English,enUS,en-US +slang=ja,jp,jpn,japanese,en,eng,english,English,enUS,en-US +save-position-on-quit=yes +sub-auto=fuzzy +sub-file-paths=ass:srt:sub:subs:subtitles +sub-font="Noto Sans CJK JP Regular" +sub-font-size=40 +af-add=scaletempo2 +no-keepaspect-window diff --git a/user/config/mpv/script-opts/subs2srs.conf b/user/config/mpv/script-opts/subs2srs.conf new file mode 100644 index 0000000..584772e --- /dev/null +++ b/user/config/mpv/script-opts/subs2srs.conf @@ -0,0 +1,9 @@ +deck_name=mining +model_name=jp + +sentence_field=sent +secondary_field=eng +audio_field=sent_a +image_field=img + +autoclip=yes diff --git a/user/options.nix b/user/options.nix index 53a1e9b..e5b2fdc 100644 --- a/user/options.nix +++ b/user/options.nix @@ -65,6 +65,7 @@ wine = mkOpt "wine"; prog = mkOpt "prog"; activitywatch = mkOptF "activitywatch"; + jp = mkOptF "jp"; }; lib = lib.mkOption { type = lib.types.attrs; diff --git a/user/packages.nix b/user/packages.nix index 557b314..abcb4f0 100644 --- a/user/packages.nix +++ b/user/packages.nix @@ -32,7 +32,6 @@ ++ lib.optionals config.u.has.graphical [ (config.u.lib.localHome pkgs.firefox-bin "firefox" "bin/firefox") alacritty - mpv nsxiv rofi sct @@ -59,5 +58,10 @@ ++ lib.optionals config.u.has.wine [ wine winetricks + ] + ++ lib.optionals config.u.has.jp [ + anki + ki + python312Packages.manga-ocr ]; } diff --git a/user/xdg.nix b/user/xdg.nix index a624d3a..143186e 100644 --- a/user/xdg.nix +++ b/user/xdg.nix @@ -23,6 +23,7 @@ lib.mkIf config.u.has.graphical { "video/mp4" = media; "video/mpeg" = media; + "video/x-matroska" = media; "text/plain" = text; "application/xml" = text;