Files
lux/modules/capabilities/desktop-defaults.nix
T

106 lines
2.4 KiB
Nix

{ ... }:
let
mkPrimaryDesktopApplication =
{
name,
package,
command,
desktopId,
}:
{ pkgs, ... }:
{
meta.desktop.${name} = {
inherit command desktopId;
package = package pkgs;
};
};
in
{
flake.modules.homeManager.primary-browser-vivaldi = mkPrimaryDesktopApplication {
name = "browser";
package = pkgs: pkgs.vivaldi;
command = "vivaldi";
desktopId = "vivaldi-stable.desktop";
};
flake.modules.homeManager.primary-file-manager-nautilus = mkPrimaryDesktopApplication {
name = "fileManager";
package = pkgs: pkgs.nautilus;
command = "nautilus";
desktopId = "org.gnome.Nautilus.desktop";
};
flake.modules.homeManager.desktop-defaults =
{ config, pkgs, ... }:
let
browser = config.meta.desktop.browser;
fileManager = config.meta.desktop.fileManager;
homeDir = config.home.homeDirectory;
localDir = "${homeDir}/.local";
mediaDir = "${homeDir}/media";
in
{
home.preferXdgDirectories = true;
home.sessionVariables.BROWSER = browser.command;
home.packages =
with pkgs;
[
postman
spotify
calcure
planify
unzip
gimp
dbeaver-bin
]
++ [
browser.package
fileManager.package
];
programs.imv.enable = true;
programs.sioyek.enable = true;
xdg = {
enable = true;
cacheHome = "${localDir}/cache";
configHome = "${homeDir}/.config";
dataHome = "${localDir}/share";
stateHome = "${localDir}/state";
userDirs = {
enable = true;
createDirectories = true;
setSessionVariables = true;
download = "${homeDir}/downloads";
documents = "${homeDir}/documents";
projects = "${homeDir}/dev";
music = "${mediaDir}/music";
pictures = "${mediaDir}/images";
videos = "${mediaDir}/videos";
desktop = "${localDir}/desktop";
publicShare = "${localDir}/public";
templates = "${localDir}/templates";
};
mimeApps = {
enable = true;
defaultApplicationPackages =
with pkgs;
[
sioyek
imv
neovim
]
++ [
fileManager.package
browser.package
];
};
};
};
}