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

199 lines
5.7 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";
whatsappId = "hnpfjngllnobngcgfapefoaidbinmjnm";
in
{
desktop.commands.browser = [ command ];
home = {
packages = [ pkgs.vivaldi ];
sessionVariables.BROWSER = command;
};
xdg = {
desktopEntries = {
"vivaldi-${actualId}-Default" = {
name = "Actual";
exec = appCommand actualId;
icon = "vivaldi-${actualId}-Default";
settings.StartupWMClass = "crx_${actualId}";
actions = {
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.exec = "${appCommand actualId} --app-launch-url-for-shortcuts-menu-item=${config.facts.services.actual.origin}/reports";
};
};
"vivaldi-${whatsappId}-Default" = {
name = "WhatsApp Web";
exec = appCommand whatsappId;
icon = "vivaldi-${whatsappId}-Default";
settings.StartupWMClass = "crx_${whatsappId}";
};
};
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:[email protected]:5433/taop"
[profiles.schemas]
adapter = "postgres"
conn_str = "postgresql://mathesar:[email protected]: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;
};
};
}