summaryrefslogtreecommitdiff
path: root/home-manager/xdg-mime.nix
diff options
context:
space:
mode:
authorTim Keller <tjk@tjkeller.xyz>2025-08-30 15:11:16 -0500
committerTim Keller <tjk@tjkeller.xyz>2025-08-30 15:11:16 -0500
commit425cbb03ab00c8c25fd3cab160898188ea8ae57f (patch)
tree0d6984cbc8b6aef509251e41b28c8a7dadb4c032 /home-manager/xdg-mime.nix
parent8c1f55c3e95e7cb8c949f120300697a3ac48c13a (diff)
downloadnixos-425cbb03ab00c8c25fd3cab160898188ea8ae57f.tar.xz
nixos-425cbb03ab00c8c25fd3cab160898188ea8ae57f.zip
replace mimewiz with xdg-mime option
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;
+ };
+ };
+}