diff options
author | Griffin Smith <grfn@gws.fyi> | 2020-07-15T18·02-0400 |
---|---|---|
committer | glittershark <grfn@gws.fyi> | 2020-07-15T18·06+0000 |
commit | 1fd34a82cb03ba93f90ce58dd75d08039316e57e (patch) | |
tree | 7820e2570d8c4ff3a25d8e8747be570f8dc3b79f /users | |
parent | 8c34a475671cc67216c9b7dbccc4cb493fd05227 (diff) |
feat(gs/home): Add config for email notifications r/1301
This uses the notifymuch package pulled from https://github.com/NixOS/nixpkgs/pull/92797 right now, but eventually I would like to pull from a vendored version since there are some changes I would like to make to how the notifications are rendered and it looks like upstream is unmaintained. Change-Id: I3d1d355a09171a33677f095aa068f2499d50b37b Reviewed-on: https://cl.tvl.fyi/c/depot/+/1177 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
Diffstat (limited to 'users')
-rw-r--r-- | users/glittershark/system/home/modules/email.nix | 111 | ||||
-rw-r--r-- | users/glittershark/system/pkgs/notifymuch.nix | 55 |
2 files changed, 127 insertions, 39 deletions
diff --git a/users/glittershark/system/home/modules/email.nix b/users/glittershark/system/home/modules/email.nix index 80c5385e69ae..62c8be19a24e 100644 --- a/users/glittershark/system/home/modules/email.nix +++ b/users/glittershark/system/home/modules/email.nix @@ -1,6 +1,31 @@ -{ pkgs, ... }: -{ - # programs.mbsync.enable = true; +{ lib, pkgs, ... }: + +with lib; + +let + + # from home-manager/modules/services/lieer.nix + escapeUnitName = name: + let + good = upperChars ++ lowerChars ++ stringToCharacters "0123456789-_"; + subst = c: if any (x: x == c) good then c else "-"; + in stringAsChars subst name; + + accounts = { + work = { + primary = true; + address = "griffin@urbint.com"; + aliases = [ "grfn@urbint.com" ]; + passEntry = "urbint/msmtp-app-password"; + }; + + personal = { + address = "root@gws.fyi"; + passEntry = "root-gws-msmtp"; + }; + }; + +in { programs.lieer.enable = true; programs.notmuch.enable = true; services.lieer.enable = true; @@ -11,44 +36,52 @@ msmtp ]; + nixpkgs.overlays = [(self: super: { + notifymuch = self.python3Packages.callPackage ../../pkgs/notifymuch.nix {}; + })]; + + systemd.user.services = mapAttrs' (name: account: { + name = escapeUnitName "lieer-${name}"; + value.Service.ExecStart = mkForce "${pkgs.writeShellScript "sync-${name}" '' + ${pkgs.gmailieer}/bin/gmi sync + ${pkgs.notifymuch}/bin/notifymuch + ''}"; + }) accounts; + + xdg.configFile."notifymuch/notifymuch.cfg".text = generators.toINI {} { + notifymuch = { + query = "is:unread and is:important"; + mail_client = ""; + recency_interval_hours = "48"; + hidden_tags = "inbox unread attachment replied sent encrypted signed"; + }; + }; + accounts.email.maildirBasePath = "mail"; - accounts.email.accounts = - let - mkAccount = params@{ passEntry, ... }: { - realName = "Griffin Smith"; - passwordCommand = "pass ${passEntry}"; - - flavor = "gmail.com"; - - imapnotify = { - enable = true; - boxes = [ "Inbox" ]; - }; - - gpg = { - key = "0F11A989879E8BBBFDC1E23644EF5B5E861C09A7"; - signByDefault = true; - }; - - # mbsync.enable = true; - notmuch.enable = true; - lieer = { - enable = true; - sync.enable = true; - }; - msmtp.enable = true; - } // builtins.removeAttrs params ["passEntry"]; - in { - work = mkAccount { - primary = true; - address = "griffin@urbint.com"; - aliases = [ "grfn@urbint.com" ]; - passEntry = "urbint/msmtp-app-password"; - }; + accounts.email.accounts = mapAttrs (_: params@{ passEntry, ... }: { + realName = "Griffin Smith"; + passwordCommand = "pass ${passEntry}"; + + flavor = "gmail.com"; + + imapnotify = { + enable = true; + boxes = [ "Inbox" ]; + }; + + gpg = { + key = "0F11A989879E8BBBFDC1E23644EF5B5E861C09A7"; + signByDefault = true; + }; - personal = mkAccount { - address = "root@gws.fyi"; - passEntry = "root-gws-msmtp"; + notmuch.enable = true; + lieer = { + enable = true; + sync = { + enable = true; + frequency = "*:*"; }; }; + msmtp.enable = true; + } // builtins.removeAttrs params ["passEntry"]) accounts; } diff --git a/users/glittershark/system/pkgs/notifymuch.nix b/users/glittershark/system/pkgs/notifymuch.nix new file mode 100644 index 000000000000..065bcddd07c6 --- /dev/null +++ b/users/glittershark/system/pkgs/notifymuch.nix @@ -0,0 +1,55 @@ +{ stdenv +, buildPythonApplication +, isPy3k +, fetchFromGitHub +, notmuch +, pygobject3 +, gobject-introspection +, libnotify +, wrapGAppsHook +, gtk3 +}: + +buildPythonApplication rec { + pname = "notifymuch"; + version = "0.1"; + disabled = ! isPy3k; + + src = fetchFromGitHub { + owner = "kspi"; + repo = "notifymuch"; + rev = "9d4aaf54599282ce80643b38195ff501120807f0"; + sha256 = "1lssr7iv43mp5v6nzrfbqlfzx8jcc7m636wlfyhhnd8ydd39n6k4"; + }; + + propagatedBuildInputs = [ + notmuch + pygobject3 + libnotify + gtk3 + ]; + + nativeBuildInputs = [ + gobject-introspection + wrapGAppsHook + ]; + + dontWrapGApps = true; + + preFixup = '' + echo "wrapper args" + echo "''${makeWrapperArgs[@]}" + makeWrapperArgs+=("''${gappsWrapperArgs[@]}") + echo "wrapper args again" + echo "''${makeWrapperArgs[@]}" + ''; + + strictDeps = false; + + meta = with stdenv.lib; { + description = "Display desktop notifications for unread mail in a notmuch database"; + homepage = "https://github.com/kspi/notifymuch"; + maintainers = with maintainers; [ glittershark ]; + license = licenses.gpl3; + }; +} |