{ pkgs, config, lib, ... }: let cfg = config.grimmShared; browsers = [ "firefox-beta.desktop" "firefox.desktop" ]; text_editors = [ "nvim.desktop" "geany.desktop" "imhex.desktop" ]; image_viewers = [ "org.nomacs.ImageLounge.desktop" "org.kde.krita.desktop" "draw.desktop" ]; audio_players = [ "vlc.desktop" ]; video_viewers = [ "vlc.desktop" ]; document_viewers = [ "org.pwmt.zathura-pdf-mupdf.desktop" "com.github.jeromerobert.pdfarranger.desktop" ] ++ browsers; cad = [ "org.freecadweb.FreeCAD.desktop" "PrusaSlicer.desktop" "openscad.desktop" "blender.desktop" ]; tex_editors = [ ] ++ text_editors; in { config = with cfg; lib.mkIf (enable && portals && graphical) { environment.systemPackages = with pkgs; [ zathura imhex libreoffice-qt filezilla obsidian nomacs pdfarranger geany krita weasis kicad prusa-slicer freecad openscad vlc blender ]; xdg.mime.enable = true; xdg.mime.addedAssociations = { "application/java-vm" = [ "idea-community.desktop" "imhex.desktop" ]; "application/json" = text_editors ++ [ "firefox-beta.desktop" ]; "application/mp4" = video_viewers; "application/ogg" = audio_players; "application/octet-stream" = "imhex.desktop"; "application/pdf" = document_viewers; "application/rss+xml" = text_editors; "application/x-chess-pgn" = [ ] ++ text_editors; # fixme "application/x-krita" = "org.kde.krita.desktop"; "application/x-latex" = tex_editors; "application/x-tex" = tex_editors; "application/x-texinfo" = tex_editors; "application/xml" = text_editors; "image/svg+xml" = image_viewers ++ browsers ++ text_editors; "image/*" = image_viewers; "image/vnd.dwg" = cad; "model/*" = cad; "gcode" = [ "PrusaGcodeviewer.desktop" "PrusaSlicer.desktop" ]; "audio/*" = audio_players; "text/*" = text_editors; "text/plain" = text_editors; "text/markdown" = [ "obsidian.desktop" ] ++ text_editors; "text/csv" = [ "calc.desktop" ] ++ text_editors; "text/html" = browsers ++ text_editors; "text/x-python" = [ "pycharm-community.desktop" ] ++ text_editors; "text/x-c" = [ "clion.desktop" ] ++ text_editors; "text/x-java-source" = [ "idea-community.desktop" ] ++ text_editors; "video/*" = video_viewers; "application/vnd.oasis.opendocument.chart" = "calc.desktop"; "application/vnd.oasis.opendocument.chart-template" = "calc.desktop"; "application/vnd.oasis.opendocument.database" = "base.desktop"; "application/vnd.oasis.opendocument.formula" = "math.desktop"; "application/vnd.oasis.opendocument.formula-template" = "math.desktop"; "application/vnd.oasis.opendocument.graphics" = "draw.desktop"; "application/vnd.oasis.opendocument.graphics-template" = "draw.desktop"; "application/vnd.oasis.opendocument.image" = "draw.desktop"; "application/vnd.oasis.opendocument.image-template" = "draw.desktop"; "application/vnd.oasis.opendocument.presentation" = "impress.desktop"; "application/vnd.oasis.opendocument.presentation-template" = "impress.desktop"; "application/vnd.oasis.opendocument.spreadsheet" = "calc.desktop"; "application/vnd.oasis.opendocument.spreadsheet-template" = "calc.desktop"; "application/vnd.oasis.opendocument.text" = "writer.desktop"; "application/vnd.oasis.opendocument.text-master" = "writer.desktop"; "application/vnd.oasis.opendocument.text-template" = "writer.desktop"; "application/vnd.oasis.opendocument.text-web" = "writer.desktop"; "application/vnd.openxmlformats-officedocument.presentationml.presentation" = "impress.desktop"; "application/vnd.openxmlformats-officedocument.presentationml.slide" = "impress.desktop"; "application/vnd.openxmlformats-officedocument.presentationml.slideshow" = "impress.desktop"; "application/vnd.openxmlformats-officedocument.presentationml.template" = "impress.desktop"; "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" = "calc.desktop"; "application/vnd.openxmlformats-officedocument.spreadsheetml.template" = "calc.desktop"; "application/vnd.openxmlformats-officedocument.wordprocessingml.document" = "writer.desktop"; "application/vnd.openxmlformats-officedocument.wordprocessingml.template" = "writer.desktop"; }; }; }