{ config, lib, pkgs, ... }: let moduleName = "hm-default-apps"; in { # Ensure update-mime-database is available home.packages = with pkgs; [ shared-mime-info ]; # Teach the MIME DB that *.nix files are text/x-nix xdg.dataFile."mime/packages/custom-text-types.xml".text = '' Nix expression Configuration file ''; # Rebuild user MIME database after HM writes xdg.dataFile files home.activation.updateMimeDatabase = lib.hm.dag.entryAfter [ "writeBoundary" ] '' ${pkgs.shared-mime-info}/bin/update-mime-database ${config.xdg.dataHome}/mime ''; xdg.mimeApps.enable = true; xdg.mimeApps.defaultApplications = { # Nix files "text/x-nix" = [ "org.kde.kate.desktop" ]; "text/plain" = [ "org.kde.kate.desktop" ]; "text/x-ini" = [ "org.kde.kate.desktop" ]; "application/x-desktop" = [ "org.kde.kate.desktop" ]; # Zen Browser (Flatpak) "x-scheme-handler/http" = [ "app.zen_browser.zen.desktop" ]; "x-scheme-handler/https" = [ "app.zen_browser.zen.desktop" ]; "text/html" = [ "app.zen_browser.zen.desktop" ]; # Email "x-scheme-handler/mailto" = [ "eu.betterbird.Betterbird.desktop" ]; "message/rfc822" = [ "eu.betterbird.Betterbird.desktop" ]; # Calendar (common handlers) "text/calendar" = [ "eu.betterbird.Betterbird.desktop" ]; "application/ics" = [ "eu.betterbird.Betterbird.desktop" ]; "application/calendar" = [ "eu.betterbird.Betterbird.desktop" ]; "x-scheme-handler/webcal" = [ "eu.betterbird.Betterbird.desktop" ]; "x-scheme-handler/webcals" = [ "eu.betterbird.Betterbird.desktop" ]; # File manager "inode/directory" = [ "org.kde.dolphin.desktop" ]; }; home.file.".nixlog/loaded.${moduleName}-module-loaded".text = "loaded\n"; }