marleyos/modules/home/system/xdg.nix
2025-05-26 11:29:47 -07:00

74 lines
2.2 KiB
Nix

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