summaryrefslogtreecommitdiff
path: root/home-manager/xdg-mime.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/xdg-mime.nix')
-rw-r--r--home-manager/xdg-mime.nix23
1 files changed, 23 insertions, 0 deletions
diff --git a/home-manager/xdg-mime.nix b/home-manager/xdg-mime.nix
new file mode 100644
index 0000000..043b214
--- /dev/null
+++ b/home-manager/xdg-mime.nix
@@ -0,0 +1,23 @@
+{ config, lib, pkgs, ... }: let
+ cfg = config.xdg.mimeApps._setDefaultApplications;
+ mimeDir = ./resources/xdg-mime;
+
+ getApplicationMimeTypes = applicationName: lib.filter (s: s != "") (lib.splitString "\n" (builtins.readFile "${mimeDir}/${applicationName}"));
+
+ getMimeTypeApplicationList = applicationName: lib.mkMerge (lib.map (mimetype:
+ { "${mimetype}" = [ "${applicationName}.desktop" ]; }
+ ) (getApplicationMimeTypes applicationName));
+
+ defaultApplications = lib.mkMerge (lib.mapAttrsToList (appPath: pathType: lib.mkIf (pathType == "regular") (getMimeTypeApplicationList appPath)) (builtins.readDir mimeDir));
+in {
+ options.xdg.mimeApps._setDefaultApplications = {
+ enable = lib.mkEnableOption "set default applications as defined in the resources dir";
+ };
+
+ config = lib.mkIf cfg.enable {
+ xdg.mimeApps = {
+ enable = true;
+ inherit defaultApplications;
+ };
+ };
+}