{ ... }: { 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"; 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}"; }; 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"; }; }; 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.file.".harlequin.toml".text = '' [profiles.taop] adapter = "postgres" conn_str = "postgresql://taop:taop@127.0.0.1:5433/taop" [profiles.schemas] adapter = "postgres" conn_str = "postgresql://mathesar:mathesar@127.0.0.1:55432/traceability" ''; home.packages = with pkgs; [ postman spotify rainfrog dblab harlequin tabularis dbgate pgadmin4-desktopmode tbls (pgmodeler.overrideAttrs (old: { version = "2.0.0-beta"; src = fetchFromGitHub { owner = "nullptrlabs"; repo = "pgmodeler"; rev = "v2.0.0-beta"; hash = "sha256-NH7iRc484HskeSa8fi3nYThLq6kul3MItaiEezA4pd8="; }; nativeBuildInputs = builtins.filter (input: input != qt6.qmake) old.nativeBuildInputs ++ [ cmake ]; buildInputs = old.buildInputs ++ [ libxml2 ]; qmakeFlags = [ ]; cmakeFlags = [ "-DPGM_PREFIX=${placeholder "out"}" ]; postPatch = '' patchShebangs getbuildnum.sh substituteInPlace BuildConfs.cmake \ --replace-fail /usr/bin/clang++ "$CXX" \ --replace-fail /usr/bin/clang "$CC" ''; postInstall = '' install -Dm444 "$src/assets/conf/pgmodeler_logo.png" \ "$out/share/icons/hicolor/256x256/apps/pgmodeler.png" ''; })) calcure planify unzip gimp dbeaver-bin onlyoffice-desktopeditors obsidian pinta ]; }; 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"; 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; }; }; }