{ pkgs, lib, ... }: let url_handler = pkgs.writeShellApplication { name = "url-handler"; text = builtins.readFile ./url_handler.sh; inheritPath = false; runtimeInputs = [ pkgs.rofi pkgs.libnotify pkgs.zathura pkgs.tskm ]; }; in { imports = [ ./xdg_vars.nix ]; xdg = { mimeApps = { enable = true; defaultApplications = { "application/pdf" = ["url_handler.desktop"]; "application/x-pdf" = ["url_handler.desktop"]; "text/html" = ["url_handler.desktop"]; "text/xml" = ["url_handler.desktop"]; "x-scheme-handler/http" = ["url_handler.desktop"]; "x-scheme-handler/https" = ["url_handler.desktop"]; "x-scheme-handler/about" = ["url_handler.desktop"]; "x-scheme-handler/unknown" = ["url_handler.desktop"]; }; }; desktopEntries = { url-handler = { name = "url-handler"; genericName = "Web Browser"; exec = "${lib.getExe url_handler} %u"; terminal = false; categories = [ "Application" "Network" "WebBrowser" ]; mimeType = [ "text/html" "text/xml" "x-scheme-handler/http" "x-scheme-handler/https" "x-scheme-handler/about" "x-scheme-handler/unknown" ]; }; }; }; }