nixos-config/nixos/system/settings/default-applications.nix
2025-03-08 09:13:04 +01:00

66 lines
2.0 KiB
Nix

{
lib,
pkgs,
config,
userSettings,
...
}: {
options = {
sys.default-applications.enable = lib.mkEnableOption "Enable default applications";
xdg.da.browser = lib.mkOption {
type = lib.types.str;
default = "firefox";
description = "Default browser";
};
};
config = lib.mkIf config.sys.default-applications.enable {
environment.sessionVariables = {
DEFAULT_BROWSER =
if userSettings.browser != "zen"
then "${pkgs."${userSettings.browser}"}/bin/${userSettings.browser}"
else "zen";
TERMINAL = "${pkgs."${userSettings.terminal}"}/bin/${userSettings.terminal}";
EDITOR = "${pkgs."${userSettings.editor}"}/bin/${userSettings.editor}";
FLAKE = "/home/${userSettings.username}/.dotfiles";
};
xdg.da.browser =
if userSettings.browser == "qutebrowser"
then "org.qutebrowser.qutebrowser"
else if userSettings.browser == "librewolf"
then "librewolf"
else if userSettings.browser == "zen"
then "zen"
else "firefox";
xdg.mime = {
enable = true;
defaultApplications = {
"text/html" = "${config.xdg.da.browser}.desktop";
"x-scheme-handler/http" = "${config.xdg.da.browser}.desktop";
"x-scheme-handler/https" = "${config.xdg.da.browser}.desktop";
"x-scheme-handler/about" = "${config.xdg.da.browser}.desktop";
"x-scheme-handler/unknown" = "${config.xdg.da.browser}.desktop";
"text/plain" = "${userSettings.editor}.desktop";
"application/pdf" = "org.gnome.Evince.desktop";
"image/svg+xml" = "inkscape.desktop";
"image/jpeg" = "org.gnome.Loupe.desktop";
"image/png" = "org.gnome.Loupe.desktop";
"inode/directory" = "org.gnome.Nautilus.desktop";
"video/mp4" = "mpv.desktop";
};
};
programs.zsh.enable =
if userSettings.shell == "zsh"
then lib.mkDefault true
else lib.mkDefault false;
users.defaultUserShell =
if userSettings.shell == "zsh"
then pkgs.zsh
else pkgs.bash;
};
}