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

192 lines
5.9 KiB
Nix

{
flake.modules.homeManager.desktop-commands =
{ lib, ... }:
{
options.desktop = {
commands = {
browser = lib.mkOption {
type = lib.types.nonEmptyListOf lib.types.nonEmptyStr;
};
launcher = lib.mkOption {
type = lib.types.nonEmptyListOf lib.types.nonEmptyStr;
};
terminal = lib.mkOption {
type = lib.types.nonEmptyListOf lib.types.nonEmptyStr;
};
};
autostart = lib.mkOption {
type = lib.types.listOf (lib.types.nonEmptyListOf lib.types.nonEmptyStr);
default = [ ];
};
};
};
flake.modules.homeManager.vivaldi =
{
config,
lib,
pkgs,
...
}:
let
command = lib.getExe pkgs.vivaldi;
appCommand = id: "${command} --profile-directory=Default --app-id=${id}";
actualId = "ahoihnifhakgijcmjlhbcgehigihinlo";
outlookId = "eoficlgicibekocmfdomjbfnjmehnhcd";
whatsappId = "hnpfjngllnobngcgfapefoaidbinmjnm";
actualDesktop = pkgs.makeDesktopItem {
name = "vivaldi-${actualId}-Default";
desktopName = "Actual";
exec = appCommand actualId;
icon = "vivaldi-${actualId}-Default";
extraConfig.StartupWMClass = "crx_${actualId}";
actions = {
Accounts = {
name = "Accounts";
exec = "${appCommand actualId} --app-launch-url-for-shortcuts-menu-item=${config.facts.services.actual.origin}/accounts";
};
"Add-Transaction" = {
name = "Add Transaction";
exec = "${appCommand actualId} --app-launch-url-for-shortcuts-menu-item=${config.facts.services.actual.origin}/transactions/new";
};
Reports = {
name = "Reports";
exec = "${appCommand actualId} --app-launch-url-for-shortcuts-menu-item=${config.facts.services.actual.origin}/reports";
};
};
};
whatsappDesktop = pkgs.makeDesktopItem {
name = "vivaldi-${whatsappId}-Default";
desktopName = "WhatsApp Web";
exec = appCommand whatsappId;
icon = "vivaldi-${whatsappId}-Default";
extraConfig.StartupWMClass = "crx_${whatsappId}";
};
outlookDesktop = pkgs.makeDesktopItem {
name = "vivaldi-${outlookId}-Default";
desktopName = "Outlook";
exec = "${appCommand outlookId} %U";
icon = "vivaldi-${outlookId}-Default";
mimeTypes = [ "x-scheme-handler/mailto" ];
extraConfig.StartupWMClass = "crx_${outlookId}";
actions = {
Calendar = {
name = "Open calendar";
exec = "${appCommand outlookId} --app-launch-url-for-shortcuts-menu-item=https://outlook.cloud.microsoft/calendar";
};
Compose = {
name = "New message";
exec = "${appCommand outlookId} --app-launch-url-for-shortcuts-menu-item=https://outlook.cloud.microsoft/mail/deeplink/compose";
};
Event = {
name = "New event";
exec = "${appCommand outlookId} --app-launch-url-for-shortcuts-menu-item=https://outlook.cloud.microsoft/calendar/deeplink/compose";
};
};
};
in
{
desktop.commands.browser = [ command ];
home = {
packages = [ pkgs.vivaldi ];
sessionVariables.BROWSER = command;
};
xdg = {
dataFile = {
"applications/vivaldi-${actualId}-Default.desktop" = {
force = true;
source = "${actualDesktop}/share/applications/vivaldi-${actualId}-Default.desktop";
};
"applications/vivaldi-${whatsappId}-Default.desktop" = {
force = true;
source = "${whatsappDesktop}/share/applications/vivaldi-${whatsappId}-Default.desktop";
};
"applications/vivaldi-${outlookId}-Default.desktop" = {
force = true;
source = "${outlookDesktop}/share/applications/vivaldi-${outlookId}-Default.desktop";
};
};
mimeApps.defaultApplicationPackages = [ pkgs.vivaldi ];
};
};
flake.modules.homeManager.nautilus =
{ config, pkgs, ... }:
{
home.packages = [ pkgs.nautilus ];
gtk.gtk3.bookmarks = [
"sftp://${config.facts.topology.server.sshAlias} Orion VPS"
];
xdg.mimeApps.defaultApplicationPackages = [ pkgs.nautilus ];
};
flake.modules.homeManager.imv =
{ pkgs, ... }:
{
programs.imv.enable = true;
xdg.mimeApps.defaultApplicationPackages = [ pkgs.imv ];
};
flake.modules.homeManager.sioyek =
{ pkgs, ... }:
{
programs.sioyek.enable = true;
xdg.mimeApps.defaultApplicationPackages = [ pkgs.sioyek ];
};
flake.modules.homeManager.discord = {
programs.discord = {
enable = true;
settings.SKIP_HOST_UPDATE = true;
};
};
flake.modules.homeManager.workstation-apps =
{ pkgs, ... }:
{
home.packages = with pkgs; [
spotify
unzip
dbeaver-bin
onlyoffice-desktopeditors
pinta
zellij
];
};
flake.modules.homeManager.xdg =
{ config, ... }:
let
homeDir = config.home.homeDirectory;
localDir = "${homeDir}/.local";
mediaDir = "${homeDir}/media";
in
{
home.preferXdgDirectories = true;
xdg = {
enable = true;
cacheHome = "${localDir}/cache";
userDirs = {
enable = true;
createDirectories = true;
setSessionVariables = true;
download = "${homeDir}/downloads";
documents = "${homeDir}/documents";
projects = "${homeDir}/projects";
music = "${mediaDir}/music";
pictures = "${mediaDir}/images";
videos = "${mediaDir}/videos";
desktop = "${localDir}/desktop";
publicShare = "${localDir}/public";
templates = "${localDir}/templates";
};
mimeApps.enable = true;
};
};
}