59 lines
2.0 KiB
Nix
59 lines
2.0 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
let
|
|
moduleName = "hm-deefault-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/nix.xml".text = ''
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
|
|
<mime-type type="text/x-nix">
|
|
<comment>Nix expression</comment>
|
|
<glob pattern="*.nix"/>
|
|
</mime-type>
|
|
</mime-info>
|
|
'';
|
|
|
|
# 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";
|
|
}
|