{config, lib, pkgs, ... }: { imports = [ ./generic/mpv.nix ./xdg-default-apps.nix ]; config = { services.printing.enable = true; hardware.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; # Enable audio interfaces renaming wireplumber.enable = true; wireplumber.extraConfig = { "dont-switch-device-profiles"."wireplumber.settings"."bluetooth.autoswitch-to-headset-profile" = false; }; }; environment.systemPackages = with pkgs; [ kdePackages.kdeconnect-kde pcmanfm pwvucontrol qimgv ]; programs.mpv = let fetchMpvScript = {url, hash, scriptName}: pkgs.fetchurl { inherit url hash; name = "mpv-script-${scriptName}"; recursiveHash = true; downloadToTemp = true; postFetch = '' mkdir -p $out/share/mpv/scripts mv $downloadedFile $out/share/mpv/scripts/${scriptName} ''; passthru.scriptName = scriptName; }; in { enable = true; scripts = [ pkgs.mpvScripts.sponsorblock pkgs.mpvScripts.mpris ] ++ lib.map (script: fetchMpvScript { url = "https://raw.githubusercontent.com/occivink/mpv-scripts/d0390c8e802c2e888ff4a2e1d5e4fb040f855b89/scripts/${script.name}"; hash = script.hash; scriptName = script.name; }) [ { name = "crop.lua"; hash = "sha256-/uaTCtV8Aanvnxrt8afBbO4uu2xp8Ec6DxApMb+fg2s="; } { name = "encode.lua"; hash = "sha256-yK/DV0cpGhl4Uobl7xA1myZiECJpsShrHnsJftBqzAY="; } ]; settings = { mpv = { keep-open = "yes"; volume = "40"; osd-fractions = "yes"; background = "none"; }; input = lib.mkMerge [ # mpv core '' Alt+1 set window-scale 0.125 Alt+2 set window-scale 0.25 Alt+3 set window-scale 0.5 Alt+4 set window-scale 1 Alt+5 set window-scale 2 '' # crop.lua '' c script-message-to crop start-crop hard alt+c script-message-to crop start-crop soft ctrl+shift+c script-message-to crop start-crop delogo C script-message-to crop toggle-crop hard '' # encode.lua '' b script-message-to encode encode_default alt+b script-message-to encode set-timestamp encode_default '' ]; script-opts = { "encode_default.conf" = { only_active_tracks = "no"; preserve_filters = "yes"; append_filder = ""; codec = ""; output_format = "$f_$n.$x"; output_dir = "/tmp"; detached = "no"; ffmpeg_command = lib.getExe pkgs.ffmpeg; }; }; }; }; # Fonts fonts.packages = with pkgs; [ corefonts (nerdfonts.override { fonts = [ "Meslo" ]; }) roboto ]; # Pcmanfm configuration environment.etc."xdg/pcmanfm/default/pcmanfm.conf".text = '' [config] bm_open_method=0 [volume] mount_on_startup=0 mount_removable=0 autorun=0 [ui] always_show_tabs=1 max_tab_chars=32 media_in_new_tab=0 desktop_folder_new_win=0 change_tab_on_drop=1 close_on_unmount=1 focus_previous=1 side_pane_mode=places view_mode=list show_hidden=1 sort=name;ascending; toolbar=newwin;newtab;navigation;home; show_statusbar=1 pathbar_mode_buttons=0 ''; environment.etc."xdg/libfm/libfm.conf".text = '' [config] single_click=0 use_trash=1 confirm_del=1 confirm_trash=1 advanced_mode=0 si_unit=0 force_startup_notify=1 backup_as_hidden=1 no_usb_trash=1 no_child_non_expandable=0 show_full_names=0 only_user_templates=0 drop_default_action=auto terminal=${lib.optionalString (lib.elem pkgs.kitty config.environment.systemPackages) "kitty"} archiver=file-roller thumbnail_local=1 thumbnail_max=16384 [ui] big_icon_size=48 small_icon_size=16 pane_icon_size=16 thumbnail_size=128 show_thumbnail=1 shadow_hidden=1 [places] places_home=1 places_desktop=1 places_root=1 places_computer=1 places_trash=1 places_applications=1 places_network=1 places_unmounted=1 ''; }; }