From c99cfe4684aed0d7dd982ef6f6675f69222bf6d7 Mon Sep 17 00:00:00 2001 From: Felix Tenley Date: Sun, 22 Nov 2020 12:15:01 +0100 Subject: [PATCH] feat(mimeapps): simplify config --- home/desktop/mimeapps.nix | 103 ++++++++++++++++++++++++++++++-------- 1 file changed, 81 insertions(+), 22 deletions(-) diff --git a/home/desktop/mimeapps.nix b/home/desktop/mimeapps.nix index 7e20824..e724e46 100644 --- a/home/desktop/mimeapps.nix +++ b/home/desktop/mimeapps.nix @@ -1,25 +1,84 @@ -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: -{ - xdg.mimeApps.enable = true; - xdg.mimeApps.defaultApplications = { - "application/pdf" = [ "org.gnome.Evince.desktop" ]; - "image/gif" = [ "org.gnome.eog.desktop" ]; - "image/jpeg" = [ "org.gnome.eog.desktop" ]; - "image/jpg" = [ "org.gnome.eog.desktop" ]; - "image/png" = [ "org.gnome.eog.desktop" ]; - "image/webp" = [ "org.gnome.eog.desktop" ]; - "inode/directory" = [ "nautilus.desktop" "org.gnome.Nautilus.desktop" ]; - "text/calendar" = [ "firefox.desktop" ]; - "text/html" = [ "firefox.desktop" ]; - "text/plain" = [ "org.gnome.gedit.desktop" ]; - "x-scheme-handler/about" = [ "firefox.desktop" ]; - "x-scheme-handler/http" = [ "firefox.desktop" ]; - "x-scheme-handler/https" = [ "firefox.desktop" ]; - "x-scheme-handler/magnet" = [ "transmission-gtk.desktop" ]; - "x-scheme-handler/mailto" = [ "firefox.desktop" ]; - "x-scheme-handler/sgnl" = [ "signal-desktop.desktop" ]; - "x-scheme-handler/unknown" = [ "firefox.desktop" ]; - "x-scheme-handler/webcal" = [ "firefox.desktop" ]; +with lib; +let + defaultApps = { + text = [ "org.gnome.gedit.desktop" ]; + image = [ "org.gnome.eog.desktop" ]; + audio = [ "io.github.celluloid_player.Celluloid.desktop" ]; + video = [ "io.github.celluloid_player.Celluloid.desktop" ]; + directory = [ "nautilus.desktop" "org.gnome.Nautilus.desktop" ]; + mail = [ "firefox.desktop" ]; + calendar = [ "firefox.desktop" ]; + browser = [ "firefox.desktop" ]; + office = [ "libreoffice.desktop" ]; + pdf = [ "org.gnome.Evince.desktop" ]; + magnet = [ "transmission-gtk.desktop" ]; + signal = [ "signal-desktop.desktop" ]; }; + + mimeMap = { + text = [ "text/plain" ]; + image = [ + "image/bmp" + "image/gif" + "image/jpeg" + "image/jpg" + "image/png" + "image/svg+xml" + "image/tiff" + "image/vnd.microsoft.icon" + "image/webp" + ]; + audio = [ + "audio/aac" + "audio/mpeg" + "audio/ogg" + "audio/opus" + "audio/wav" + "audio/webm" + "audio/x-matroska" + ]; + video = [ + "video/mp2t" + "video/mp4" + "video/mpeg" + "video/ogg" + "video/webm" + "video/x-flv" + "video/x-matroska" + "video/x-msvideo" + ]; + directory = [ "inode/directory" ]; + mail = [ "x-scheme-handler/mailto" ]; + calendar = [ "text/calendar" "x-scheme-handler/webcal" ]; + browser = [ + "text/html" + "x-scheme-handler/about" + "x-scheme-handler/http" + "x-scheme-handler/https" + "x-scheme-handler/unknown" + ]; + office = [ + "application/vnd.oasis.opendocument.text" + "application/vnd.oasis.opendocument.spreadsheet" + "application/vnd.oasis.opendocument.presentation" + "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + "application/vnd.openxmlformats-officedocument.presentationml.presentation" + "application/msword" + "application/vnd.ms-excel" + "application/vnd.ms-powerpoint" + ]; + pdf = [ "application/pdf" ]; + magnet = [ "x-scheme-handler/magnet" ]; + signal = [ "signal-desktop.desktop" ]; + }; +in { + xdg.configFile."mimeapps.list".force = true; + xdg.mimeApps.enable = true; + xdg.mimeApps.defaultApplications = with lists; + listToAttrs (flatten (mapAttrsToList (key: types: + map (type: attrsets.nameValuePair (type) (defaultApps."${key}")) types) + mimeMap)); }