feat(gs/home): Add config for email notifications
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
This commit is contained in:
parent
8c34a47567
commit
1fd34a82cb
2 changed files with 124 additions and 36 deletions
|
@ -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}";
|
||||
accounts.email.accounts = mapAttrs (_: params@{ passEntry, ... }: {
|
||||
realName = "Griffin Smith";
|
||||
passwordCommand = "pass ${passEntry}";
|
||||
|
||||
flavor = "gmail.com";
|
||||
flavor = "gmail.com";
|
||||
|
||||
imapnotify = {
|
||||
enable = true;
|
||||
boxes = [ "Inbox" ];
|
||||
};
|
||||
imapnotify = {
|
||||
enable = true;
|
||||
boxes = [ "Inbox" ];
|
||||
};
|
||||
|
||||
gpg = {
|
||||
key = "0F11A989879E8BBBFDC1E23644EF5B5E861C09A7";
|
||||
signByDefault = true;
|
||||
};
|
||||
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";
|
||||
};
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
55
users/glittershark/system/pkgs/notifymuch.nix
Normal file
55
users/glittershark/system/pkgs/notifymuch.nix
Normal file
|
@ -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;
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue