答案1
对于遵循 XDG 规范的应用程序
从 NixOS 21.11 或更高版本开始,现在可以设置xdg.mime.defaultApplications
.例如,要将 Qutebrowser 设置为默认 Web 浏览器:
xdg.mime.defaultApplications = {
"text/html" = "org.qutebrowser.qutebrowser.desktop";
"x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop";
"x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop";
"x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop";
"x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop";
}
确保xdg.mime.enable
is true
,这是默认值,否则上面的代码片段将不起作用。
对于电子应用程序:
基于 Electron 的桌面应用程序似乎会拉取默认浏览器实例来打开DEFAULT_BROWSER
环境变量中的链接。它期望被设置为可以在 中找到的二进制文件PATH
,或者要使用的二进制文件的完整路径。
另一个例子,再次设置 qutebrowser:
environment.sessionVariables.DEFAULT_BROWSER = "${pkgs.qutebrowser}/bin/qutebrowser"
答案2
NixOS 不管理特定于用户的配置。句号。
至于配置对话框未找到的浏览器,请尝试通过/etc/nixos/configuration.nix
而不是使用 来安装它们nix-env
。
提示
如果您以声明式和命令式方式安装软件包,您最终将不得不管理两个依赖关系树。一个通过nixos-rebuild --upgrade boot
,另一个通过nix-channel --update && nix-env -u
。这意味着如果您忘记了任何一个更新过程,您最终都会安装旧的软件包。
答案3
对于家庭经理:
nrdxp 答案上的系统范围设置可能会因某种原因而被忽略,因此,如果它不起作用并且您正在使用家庭管理器,请尝试按用户设置它们。为此,您需要替换mime
为mimeApps
并设置enable = true
,因为默认情况下它是禁用的。调整他们的片段我们得到:
home-manager.users.<YOUR_USER_NAME>.xdg.mimeApps = {
enable = true;
defaultApplications = {
"text/html" = "org.qutebrowser.qutebrowser.desktop";
"x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop";
"x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop";
"x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop";
"x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop";
};
};
您需要对每个需要配置此功能的用户执行此操作。
答案4
@nrdxp 的答案中有一个拼写错误,其中 s 太多sessionsVariables
。应该是:不幸的是我没有足够的声誉来发表评论。
environment.sessionVariables.DEFAULT_BROWSER = "${pkgs.qutebrowser}/bin/qutebrowser"