marleyos/modules/home/base/xdg/default.nix

75 lines
2.2 KiB
Nix

{
config,
namespace,
lib,
pkgs,
...
}:
let
inherit (lib) mkMerge mkIf;
inherit (config.${namespace}) isDesktop;
in
{
config = {
home.preferXdgDirectories = true;
xdg =
let
homeDir = config.home.homeDirectory;
in
mkMerge [
{
enable = true;
cacheHome = "${homeDir}/.cache";
configHome = "${homeDir}/.config";
dataHome = "${homeDir}/.local/share";
stateHome = "${homeDir}/.local/state";
}
(mkIf isDesktop {
userDirs = {
enable = true;
createDirectories = true;
desktop = "${homeDir}/desktop";
documents = null;
download = "${homeDir}/downloads";
music = null;
pictures = "${homeDir}/pictures";
templates = null;
videos = "${homeDir}/videos";
};
portal = {
enable = true;
xdgOpenUsePortal = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
config.common.default = [ "gtk" ];
};
mimeApps = rec {
enable = true;
associations.added = {
"application/json" = [ "nvim.desktop" ];
"application/pdf" = [ "org.pwmt.zathura-pdf-mupdf.desktop" ];
"application/xhtml+xml" = [ "zen-alpha.desktop" ];
"application/x-extension-htm" = [ "zen-alpha.desktop" ];
"application/x-extension-html" = [ "zen-alpha.desktop" ];
"application/x-extension-shtml" = [ "zen-alpha.desktop" ];
"application/x-extension-xhtml" = [ "zen-alpha.desktop" ];
"application/x-extension-xht" = [ "zen-alpha.desktop" ];
"image/png" = [ "feh.desktop" ];
"text/html" = [ "zen-alpha.desktop" ];
"text/plain" = [ "nvim.desktop" ];
"x-scheme-handler/chrome" = [ "zen-alpha.desktop" ];
"x-scheme-handler/http" = [ "zen-alpha.desktop" ];
"x-scheme-handler/https" = [ "zen-alpha.desktop" ];
};
defaultApplications = associations.added;
};
})
];
};
}