about summary refs log tree commit diff
path: root/modules/nixos/common/xdg.nix
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2023-11-04 16:52:03 +0300
committerAzat Bahawi <azat@bahawi.net>2023-11-04 16:52:03 +0300
commit5da01d688fcfd4d1956197f7b7f9372e88687d05 (patch)
tree662647084b947301db091928c58f83ad74dbd232 /modules/nixos/common/xdg.nix
parent2023-10-30 (diff)
2023-11-04
Diffstat (limited to '')
-rw-r--r--modules/nixos/common/xdg.nix104
1 files changed, 28 insertions, 76 deletions
diff --git a/modules/nixos/common/xdg.nix b/modules/nixos/common/xdg.nix
index b46c350..668996f 100644
--- a/modules/nixos/common/xdg.nix
+++ b/modules/nixos/common/xdg.nix
@@ -7,85 +7,37 @@
 with lib; let
   cfg = config.nixfiles.modules.common.xdg;
 in {
-  xdg.portal = mkIf this.isHeadful {
-    enable = true;
+  options.nixfiles.modules.common.xdg.defaultApplications = mkOption {
+    description = "Default applications.";
+    type = with types; attrsOf (listOf str);
+    default = {};
   };
 
-  hm.xdg = mkMerge [
-    (with cfg; {
+  config = {
+    xdg.portal = mkIf this.isHeadful {
       enable = true;
+    };
 
-      inherit cacheHome;
-      inherit configHome;
-      inherit dataHome;
-      inherit stateHome;
-      inherit userDirs;
-    })
-    (mkIf this.isHeadful {
-      mimeApps = {
+    hm.xdg = mkMerge [
+      (with cfg; {
         enable = true;
-        # https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
-        defaultApplications = mkMerge (mapAttrsToList
-          (n: v: genAttrs v (_: ["${n}.desktop"]))
-          {
-            emacsclient = [
-              "application/json"
-              "application/ld+json"
-              "application/vnd.ms-publisher"
-              "application/x-c"
-              "application/x-desktop"
-              "application/x-httpd-php"
-              "application/x-sh"
-              "application/x-tex"
-              "application/xhtml+xml"
-              "application/xml"
-              "text/css"
-              "text/csv"
-              "text/javascript"
-              "text/markdown"
-              "text/plain"
-              "text/x-lisp"
-            ];
-            firefox = [
-              "text/html"
-              "x-scheme-handler/http"
-              "x-scheme-handler/https"
-            ];
-            mpv = [
-              "audio/3gpp"
-              "audio/3gpp2"
-              "audio/aac"
-              "audio/flac"
-              "audio/mp3"
-              "audio/mpeg"
-              "audio/ogg"
-              "audio/opus"
-              "audio/wav"
-              "audio/webm"
-              "image/avif"
-              "image/bmp"
-              "image/gif"
-              "image/jpeg"
-              "image/jpg"
-              "image/png"
-              "image/tiff"
-              "image/vnd.microsoft.icon"
-              "image/webp"
-              "video/mkv"
-              "video/mp2t"
-              "video/mp4"
-              "video/mpeg"
-              "video/ogg"
-              "video/webm"
-              "video/x-matroska"
-              "video/x-msvideo"
-            ];
-            "org.pwmt.zathura" = [
-              "application/pdf"
-              "application/epub+zip"
-            ];
-          });
-      };
-    })
-  ];
+
+        inherit cacheHome;
+        inherit configHome;
+        inherit dataHome;
+        inherit stateHome;
+        inherit userDirs;
+      })
+      (mkIf this.isHeadful {
+        mimeApps = {
+          enable = true;
+          defaultApplications =
+            mkMerge
+            (mapAttrsToList
+              (n: v: genAttrs v (_: ["${n}.desktop"]))
+              cfg.defaultApplications);
+        };
+      })
+    ];
+  };
 }

Consider giving Nix/NixOS a try! <3