499 lines
11 KiB
Nix
499 lines
11 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
font,
|
|
...
|
|
}:
|
|
let
|
|
inherit (config.my) browser;
|
|
cfg = config.xdg.defaultApplications;
|
|
in
|
|
{
|
|
options = {
|
|
xdg.defaultApplications = {
|
|
enable = lib.mkEnableOption "Whether vpn should be enabled";
|
|
text-editor = lib.mkOption { };
|
|
image-viewer = lib.mkOption { };
|
|
video-player = lib.mkOption { };
|
|
web-browser = lib.mkOption { };
|
|
document-viewer = lib.mkOption { };
|
|
torrent-client = lib.mkOption { };
|
|
file-manager = lib.mkOption { };
|
|
archive-manager = lib.mkOption { };
|
|
email-client = lib.mkOption { };
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf (cfg.enable) {
|
|
# workaround to allow overriding mimeapps file
|
|
# btw, whatever it was that decided that damn file should always be written is an asshole
|
|
xdg.configFile."mimeapps.list".force = true;
|
|
xdg.mimeApps =
|
|
let
|
|
|
|
createMimeAssociation = (
|
|
mime_prefix: application: mime_suffix: { "${mime_prefix}/${mime_suffix}" = application; }
|
|
);
|
|
|
|
createMimeAssociations = (
|
|
mime_prefix: application: mime_suffixes:
|
|
lib.foldAttrs (n: _: n) { } (map (createMimeAssociation mime_prefix application) mime_suffixes)
|
|
);
|
|
|
|
mimes =
|
|
simple
|
|
// (createMimeAssociations "text" cfg.text-editor text_suffixes)
|
|
// (createMimeAssociations "image" cfg.image-viewer image_suffixes)
|
|
// (createMimeAssociations "video" cfg.video-player video_suffixes)
|
|
// (createMimeAssociations "application" cfg.archive-manager archive-suffixes);
|
|
|
|
simple = {
|
|
"inode/directory" = cfg.file-manager;
|
|
|
|
"application/pdf" = cfg.document-viewer;
|
|
"application/epub+zip" = cfg.document-viewer;
|
|
|
|
"text/html" = cfg.web-browser;
|
|
"x-scheme-handler/http" = cfg.web-browser;
|
|
"x-scheme-handler/https" = cfg.web-browser;
|
|
|
|
"x-scheme-handler/magnet" = cfg.torrent-client;
|
|
"application/x-bittorrent" = cfg.torrent-client;
|
|
|
|
"x-scheme-handler/mailto" = cfg.email-client;
|
|
};
|
|
|
|
text_suffixes = [
|
|
"cache-manifest"
|
|
"calendar"
|
|
"css"
|
|
"csv-schema"
|
|
"csv"
|
|
"enriched"
|
|
"html"
|
|
"htmlh"
|
|
"markdown"
|
|
"org"
|
|
"plain"
|
|
"rfc822-headers"
|
|
"richtext"
|
|
"rust"
|
|
"sgml"
|
|
"spreadsheet"
|
|
"tab-separated-values"
|
|
"tcl"
|
|
"troff"
|
|
"turtle"
|
|
"vbscript"
|
|
"vcard"
|
|
"vnd.graphviz"
|
|
"vnd.rn-realtext"
|
|
"vnd.senx.warpscript"
|
|
"vnd.sun.j2me.app-descriptor"
|
|
"vnd.trolltech.linguist"
|
|
"vnd.wap.wml"
|
|
"vnd.wap.wmlscript"
|
|
"vtt"
|
|
"x-adasrc"
|
|
"x-authors"
|
|
"x-bibtex"
|
|
"x-c++hdr"
|
|
"x-c++src"
|
|
"x-changelog"
|
|
"x-chdr"
|
|
"x-cmake"
|
|
"x-cobol"
|
|
"x-common-lisp"
|
|
"x-copying"
|
|
"x-credits"
|
|
"x-crystal"
|
|
"x-csharp"
|
|
"x-csrc"
|
|
"x-dart"
|
|
"x-dbus-service"
|
|
"x-dcl"
|
|
"x-dsl"
|
|
"x-dsrc"
|
|
"x-eiffel"
|
|
"x-elixir"
|
|
"x-emacs-lisp"
|
|
"x-erlang"
|
|
"x-fortran"
|
|
"x-gcode-gx"
|
|
"x-genie"
|
|
"x-gettext-translation-template"
|
|
"x-gettext-translation"
|
|
"x-gherkin"
|
|
"x-go"
|
|
"x-google-video-pointer"
|
|
"x-gradle"
|
|
"x-groovy"
|
|
"x-haskell"
|
|
"x-idl"
|
|
"x-imelody"
|
|
"x-install"
|
|
"x-iptables"
|
|
"x-java"
|
|
"x-kaitai-struct"
|
|
"x-kotlin"
|
|
"x-ldif"
|
|
"x-lilypond"
|
|
"x-literate-haskell"
|
|
"x-log"
|
|
"x-lua"
|
|
"x-makefile"
|
|
"x-matlab"
|
|
"x-maven"
|
|
"x-meson"
|
|
"x-microdvd"
|
|
"x-moc"
|
|
"x-modelica"
|
|
"x-mof"
|
|
"x-mpl2"
|
|
"x-mpsub"
|
|
"x-mrml"
|
|
"x-ms-regedit"
|
|
"x-mup"
|
|
"x-nfo"
|
|
"x-objc++src"
|
|
"x-objcsrc"
|
|
"x-ocaml"
|
|
"x-ocl"
|
|
"x-ooc"
|
|
"x-opencl-src"
|
|
"x-opml"
|
|
"x-pascal"
|
|
"x-patch"
|
|
"x-python"
|
|
"x-python3"
|
|
"x-qml"
|
|
"x-readme"
|
|
"x-reject"
|
|
"x-rpm-spec"
|
|
"x-rst"
|
|
"x-sagemath"
|
|
"x-sass"
|
|
"x-scala"
|
|
"x-scheme"
|
|
"x-scons"
|
|
"x-scss"
|
|
"x-setext"
|
|
"x-ssa"
|
|
"x-subviewer"
|
|
"x-svhdr"
|
|
"x-svsrc"
|
|
"x-systemd-unit"
|
|
"x-tex"
|
|
"x-texinfo"
|
|
"x-troff-me"
|
|
"x-troff-mm"
|
|
"x-troff-ms"
|
|
"x-twig"
|
|
"x-txt2tags"
|
|
"x-uil"
|
|
"x-uri"
|
|
"x-uuencode"
|
|
"x-vala"
|
|
"x-verilog"
|
|
"x-vhdl"
|
|
"x-xmi"
|
|
"x-xslfo"
|
|
"x.gcode"
|
|
"xmcd"
|
|
];
|
|
|
|
image_suffixes = [
|
|
"bmp"
|
|
"cgm"
|
|
"dicom-rle"
|
|
"emf"
|
|
"example"
|
|
"fits"
|
|
"g3fax"
|
|
"gif"
|
|
"heic"
|
|
"heif"
|
|
"ief"
|
|
"jls"
|
|
"jp2"
|
|
"jpeg"
|
|
"jpeg"
|
|
"jpg"
|
|
"jpm"
|
|
"jpx"
|
|
"ktx"
|
|
"naplps"
|
|
"pjpeg"
|
|
"png"
|
|
"prs.btif"
|
|
"prs.pti"
|
|
"pwg-raster"
|
|
"svg+xml-compressed"
|
|
"svg+xml"
|
|
"t38"
|
|
"tiff-fx"
|
|
"tiff"
|
|
"vnd.adobe.photoshop"
|
|
"vnd.airzip.accelerator.azv"
|
|
"vnd.cns.inf2"
|
|
"vnd.dece.graphic"
|
|
"vnd.djvu"
|
|
"vnd.dvb.subtitle"
|
|
"vnd.dwg"
|
|
"vnd.dxf"
|
|
"vnd.fastbidsheet"
|
|
"vnd.fpx"
|
|
"vnd.fst"
|
|
"vnd.fujixerox.edmics-mmr"
|
|
"vnd.fujixerox.edmics-rlc"
|
|
"vnd.globalgraphics.pgb"
|
|
"vnd.microsoft.icon"
|
|
"vnd.mix"
|
|
"vnd.mozilla.apng"
|
|
"vnd.ms-modi"
|
|
"vnd.net-fpx"
|
|
"vnd.radiance"
|
|
"vnd.rn-realpix"
|
|
"vnd.sealed.png"
|
|
"vnd.sealedmedia.softseal.gif"
|
|
"vnd.sealedmedia.softseal.jpg"
|
|
"vnd.svf"
|
|
"vnd.tencent.tap"
|
|
"vnd.valve.source.texture"
|
|
"vnd.wap.wbmp"
|
|
"vnd.xiff"
|
|
"vnd.zbrush.pcx"
|
|
"webp"
|
|
"wmf"
|
|
"x-bmp"
|
|
"x-cmu-raster"
|
|
"x-compressed-xcf"
|
|
"x-emf"
|
|
"x-eps"
|
|
"x-exr"
|
|
"x-fits"
|
|
"x-freehand"
|
|
"x-gimp-gbr"
|
|
"x-gimp-gih"
|
|
"x-gimp-pat"
|
|
"x-icon"
|
|
"x-pcx"
|
|
"x-png"
|
|
"x-portable-anymap"
|
|
"x-portable-bitmap"
|
|
"x-portable-graymap"
|
|
"x-portable-pixmap"
|
|
"x-psd"
|
|
"x-psp"
|
|
"x-rgb"
|
|
"x-sgi"
|
|
"x-targa"
|
|
"x-tga"
|
|
"x-vsd"
|
|
"x-webp"
|
|
"x-wmf"
|
|
"x-xbitmap"
|
|
"x-xcdr"
|
|
"x-xcf"
|
|
"x-xcursor"
|
|
"x-xpixmap"
|
|
"x-xwindowdump"
|
|
];
|
|
|
|
video_suffixes = [
|
|
"1d-interleaved-parityfec"
|
|
"3gp"
|
|
"3gpp"
|
|
"3gpp-tt"
|
|
"3gpp2"
|
|
"BMPEG"
|
|
"BT656"
|
|
"CelB"
|
|
"DV"
|
|
"H261"
|
|
"H263"
|
|
"H263-1998"
|
|
"H263-2000"
|
|
"H264"
|
|
"H264-RCDO"
|
|
"H264-SVC"
|
|
"H265"
|
|
"JPEG"
|
|
"MP1S"
|
|
"MP2P"
|
|
"MP2T"
|
|
"MP4V-ES"
|
|
"MPV"
|
|
"SMPTE292M"
|
|
"VP8"
|
|
"avi"
|
|
"divx"
|
|
"dv"
|
|
"encaprtp"
|
|
"example"
|
|
"fli"
|
|
"flv"
|
|
"iso.segment"
|
|
"jpeg2000"
|
|
"mj2"
|
|
"mkv"
|
|
"mp2t"
|
|
"mp4"
|
|
"mp4v-es"
|
|
"mpeg"
|
|
"mpeg-system"
|
|
"mpeg4-generic"
|
|
"msvideo"
|
|
"nv"
|
|
"ogg"
|
|
"parityfec"
|
|
"pointer"
|
|
"quicktime"
|
|
"raptorfec"
|
|
"raw"
|
|
"rtp-enc-aescm128"
|
|
"rtploopback"
|
|
"rtx"
|
|
"ulpfec"
|
|
"vc1"
|
|
"vnd.CCTV"
|
|
"vnd.dece.hd"
|
|
"vnd.dece.mobile"
|
|
"vnd.dece.mp4"
|
|
"vnd.dece.pd"
|
|
"vnd.dece.sd"
|
|
"vnd.dece.video"
|
|
"vnd.directv.mpeg"
|
|
"vnd.directv.mpeg-tts"
|
|
"vnd.divx"
|
|
"vnd.dlna.mpeg-tts"
|
|
"vnd.dvb.file"
|
|
"vnd.fvt"
|
|
"vnd.hns.video"
|
|
"vnd.iptvforum.1dparityfec-1010"
|
|
"vnd.iptvforum.1dparityfec-2005"
|
|
"vnd.iptvforum.2dparityfec-1010"
|
|
"vnd.iptvforum.2dparityfec-2005"
|
|
"vnd.iptvforum.ttsavc"
|
|
"vnd.iptvforum.ttsmpeg2"
|
|
"vnd.motorola.video"
|
|
"vnd.motorola.videop"
|
|
"vnd.mpegurl"
|
|
"vnd.ms-playready.media.pyv"
|
|
"vnd.nokia.interleaved-multimedia"
|
|
"vnd.nokia.mp4vr"
|
|
"vnd.nokia.videovoip"
|
|
"vnd.objectvideo"
|
|
"vnd.radgamettools.bink"
|
|
"vnd.radgamettools.smacker"
|
|
"vnd.rn-realvideo"
|
|
"vnd.sealed.mpeg1"
|
|
"vnd.sealed.mpeg4"
|
|
"vnd.sealed.swf"
|
|
"vnd.sealedmedia.softseal.mov"
|
|
"vnd.uvvu.mp4"
|
|
"vnd.vivo"
|
|
"webm"
|
|
"x-anim"
|
|
"x-annodex"
|
|
"x-avi"
|
|
"x-flc"
|
|
"x-fli"
|
|
"x-flic"
|
|
"x-flv"
|
|
"x-javafx"
|
|
"x-m4v"
|
|
"x-matroska"
|
|
"x-matroska-3d"
|
|
"x-mpeg"
|
|
"x-mpeg-system"
|
|
"x-mpeg2"
|
|
"x-mpeg3"
|
|
"x-ms-afs"
|
|
"x-ms-asf"
|
|
"x-ms-asf-plugin"
|
|
"x-ms-asx"
|
|
"x-ms-wm"
|
|
"x-ms-wmv"
|
|
"x-ms-wmx"
|
|
"x-ms-wvx"
|
|
"x-ms-wvxvideo"
|
|
"x-msvideo"
|
|
"x-nsv"
|
|
"x-ogm"
|
|
"x-ogm+ogg"
|
|
"x-sgi-movie"
|
|
"x-theora"
|
|
"x-theora+ogg"
|
|
];
|
|
|
|
archive-suffixes = [
|
|
"bzip2"
|
|
"gzip"
|
|
"vnd.android.package-archive"
|
|
"vnd.ms-cab-compressed"
|
|
"vnd.debian.binary-package"
|
|
"x-7z-compressed"
|
|
"x-7z-compressed-tar"
|
|
"x-ace"
|
|
"x-alz"
|
|
"x-ar"
|
|
"x-archive"
|
|
"x-arj"
|
|
"x-brotli"
|
|
"x-bzip-brotli-tar"
|
|
"x-bzip"
|
|
"x-bzip-compressed-tar"
|
|
"x-bzip1"
|
|
"x-bzip1-compressed-tar"
|
|
"x-cabinet"
|
|
"x-compress"
|
|
"x-compressed-tar"
|
|
"x-cpio"
|
|
"x-chrome-extension"
|
|
"x-deb"
|
|
"x-ear"
|
|
"x-ms-dos-executable"
|
|
"x-gtar"
|
|
"x-gzip"
|
|
"x-java-archive"
|
|
"x-lha"
|
|
"x-lhz"
|
|
"x-lrzip"
|
|
"x-lrzip-compressed-tar"
|
|
"x-lz4"
|
|
"x-lzip"
|
|
"x-lzip-compressed-tar"
|
|
"x-lzma"
|
|
"x-lzma-compressed-tar"
|
|
"x-lzop"
|
|
"x-lz4-compressed-tar"
|
|
"x-lzop-compressed-tar"
|
|
"x-ms-wim"
|
|
"x-rar"
|
|
"x-rar-compressed"
|
|
"x-source-rpm"
|
|
"x-rzip"
|
|
"x-rzip-compressed-tar"
|
|
"x-tar"
|
|
"x-tarz"
|
|
"x-stuffit"
|
|
"x-war"
|
|
"x-xar"
|
|
"x-xz"
|
|
"x-xz-compressed-tar"
|
|
"x-zip"
|
|
"x-zip-compressed"
|
|
"x-zoo"
|
|
"zip"
|
|
];
|
|
in
|
|
{
|
|
enable = true;
|
|
defaultApplications = mimes;
|
|
associations.added = mimes;
|
|
};
|
|
};
|
|
}
|