From 3855fb5eb67a211d7c8b06b945544253c6022139 Mon Sep 17 00:00:00 2001 From: Colin Date: Tue, 14 Nov 2023 00:38:06 +0000 Subject: [PATCH] geary: integrate with swaync and auto-start --- hosts/by-name/desko/default.nix | 2 ++ hosts/by-name/moby/default.nix | 1 + hosts/common/programs/geary.nix | 27 ++++++++++++++++++- .../programs/swaynotificationcenter.nix | 7 +++++ hosts/modules/gui/sway/sway-config | 1 + 5 files changed, 37 insertions(+), 1 deletion(-) diff --git a/hosts/by-name/desko/default.nix b/hosts/by-name/desko/default.nix index 651f3345..1284a13f 100644 --- a/hosts/by-name/desko/default.nix +++ b/hosts/by-name/desko/default.nix @@ -28,6 +28,8 @@ sane.programs.consoleUtils.suggestedPrograms = [ "consoleMediaUtils" "desktopConsoleUtils" ]; # sane.programs.devPkgs.enableFor.user.colin = true; + sane.programs."gnome.geary".config.autostart = true; + boot.loader.efi.canTouchEfiVariables = false; sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ]; diff --git a/hosts/by-name/moby/default.nix b/hosts/by-name/moby/default.nix index b5b5e798..fcb7a7ca 100644 --- a/hosts/by-name/moby/default.nix +++ b/hosts/by-name/moby/default.nix @@ -49,6 +49,7 @@ # sane.programs.ntfy-sh.config.autostart = true; sane.programs.dino.config.autostart = true; + # sane.programs."gnome.geary".config.autostart = true; # sane.programs.calls.config.autostart = true; sane.programs.mpv.config.vo = "wlshm"; #< see hosts/common/programs/mpv.nix for details diff --git a/hosts/common/programs/geary.nix b/hosts/common/programs/geary.nix index c1e43ca9..4cb83061 100644 --- a/hosts/common/programs/geary.nix +++ b/hosts/common/programs/geary.nix @@ -3,9 +3,22 @@ # - it uses webkitgtk_4_1, which is expensive to build. # could be upgraded to webkitgtk latest if upgraded to gtk4 # -{ ... }: +{ config, lib, ... }: +let + cfg = config.sane.programs."gnome.geary"; +in { sane.programs."gnome.geary" = { + configOption = with lib; mkOption { + default = {}; + type = types.submodule { + options.autostart = mkOption { + type = types.bool; + default = false; + }; + }; + }; + persist.byStore.private = [ # attachments, and email -- contained in a sqlite db ".local/share/geary" @@ -51,5 +64,17 @@ transport_security=transport credentials=use-incoming ''; + + services.geary = { + description = "Geary email client"; + wantedBy = lib.mkIf cfg.config.autostart [ "default.target" ]; + serviceConfig = { + ExecStart = "${cfg.package}/bin/geary"; + Type = "simple"; + Restart = "always"; + RestartSec = "20s"; + }; + }; }; + } diff --git a/hosts/common/programs/swaynotificationcenter.nix b/hosts/common/programs/swaynotificationcenter.nix index 3dbffa61..518a65c2 100644 --- a/hosts/common/programs/swaynotificationcenter.nix +++ b/hosts/common/programs/swaynotificationcenter.nix @@ -351,6 +351,13 @@ in command = "${systemctl-toggle}/bin/systemctl-toggle --user gnome-calls"; active = "${pkgs.systemd}/bin/systemctl is-active --user gnome-calls"; } + ] ++ lib.optionals config.sane.programs."gnome.geary".enabled [ + { + type = "toggle"; + label = "E"; # email (Geary); other icons: ✉, 📧 + command = "${systemctl-toggle}/bin/systemctl-toggle --user geary"; + active = "${pkgs.systemd}/bin/systemctl is-active --user geary"; + } ] ++ lib.optionals config.sane.programs.dino.enabled [ { type = "toggle"; diff --git a/hosts/modules/gui/sway/sway-config b/hosts/modules/gui/sway/sway-config index eae00bef..9442b78e 100644 --- a/hosts/modules/gui/sway/sway-config +++ b/hosts/modules/gui/sway/sway-config @@ -146,6 +146,7 @@ for_window [title="megapixels"] inhibit_idle open # TODO: could be neat to somehow do this in a way that it never steals focus from anything... for_window [app_id="im.dino.Dino"] move container to workspace number 1 for_window [app_id="org.gnome.Fractal"] move container to workspace number 1 +for_window [app_id="geary"] move container to workspace number 1 ### displays ## DESKTOP