about summary refs log tree commit diff
path: root/home/profiles/messaging
diff options
context:
space:
mode:
Diffstat (limited to 'home/profiles/messaging')
-rw-r--r--home/profiles/messaging/default.nix324
1 files changed, 0 insertions, 324 deletions
diff --git a/home/profiles/messaging/default.nix b/home/profiles/messaging/default.nix
deleted file mode 100644
index 1712b1d..0000000
--- a/home/profiles/messaging/default.nix
+++ /dev/null
@@ -1,324 +0,0 @@
-{ config, lib, pkgs, ... }:
-let
-  cfg = config.profiles.messaging;
-
-  poorObfuscation = y: x: "${x}@${y}";
-  mapKeys = map (x:
-    let
-      x' = lib.splitString " " x;
-    in
-    {
-      map = lib.splitString "," (lib.head x');
-      key = lib.elemAt x' 1;
-      action = lib.last x';
-    });
-  mbsyncCmd = if pkgs.stdenv.isLinux then "${config.programs.mbsync.package}/bin/mbsync" else "";
-in
-{
-  imports = [ ../../modules/programs/nixpkgs ];
-
-  options.profiles.messaging = {
-    enable = lib.mkEnableOption
-      "A profile that enables the system to communicate via internet.";
-  };
-
-  config = lib.mkIf cfg.enable (lib.mkMerge [
-    (lib.mkIf pkgs.stdenv.isLinux {
-
-      sops.secrets.sef-imap-password = { };
-
-      accounts.email = {
-        maildirBasePath = "${config.home.homeDirectory}/mail";
-
-        accounts.sef = {
-          address = poorObfuscation "sefidel.com" "contact";
-          # gpg = {
-          #   key = "";
-          #   signByDefault = true;
-          # };
-
-          imap.host = "imap.migadu.com";
-          imap.tls.enable = true;
-          smtp.host = "smtp.migadu.com";
-          smtp.tls.enable = true;
-
-          mbsync = {
-            enable = true;
-            create = "maildir";
-            remove = "none";
-            expunge = "both";
-
-            extraConfig.account.SSLType = "IMAPS";
-            extraConfig.account.SSLVersions = "TLSv1.2";
-          };
-
-          msmtp.enable = true;
-          notmuch.enable = true;
-          neomutt.enable = true;
-          neomutt.mailboxName = "sef";
-          neomutt.extraMailboxes = [
-            "Archive"
-            "Drafts"
-            "Junk"
-            "Sent"
-            "Trash"
-          ];
-
-          imapnotify = {
-            enable = true;
-            boxes = [ "Inbox" ];
-            onNotify = pkgs.writeShellScript "imap-on-notify" ''
-              ${mbsyncCmd} sef
-              ${pkgs.notmuch}/bin/notmuch new
-            '';
-          };
-
-          primary = true;
-          realName = "***REMOVED***";
-          userName = poorObfuscation "sefidel.com" "contact";
-          passwordCommand = "${pkgs.coreutils}/bin/cat ${builtins.replaceStrings ["%r"] ["$XDG_RUNTIME_DIR"] config.sops.secrets.sef-imap-password.path}";
-        };
-      };
-
-      programs.abook.enable = true;
-      programs.mbsync.enable = true;
-      programs.msmtp.enable = true;
-      programs.notmuch = {
-        enable = true;
-        hooks.preNew = "${mbsyncCmd} --all";
-      };
-
-      programs.neomutt = {
-        enable = true;
-        sidebar.enable = true;
-        sidebar.format = "%D%?F? [%F]?%* %?N?*N/?%S";
-
-        sort = "reverse-threads";
-
-        settings = {
-          date_format = ''"%y/%m/%d %I:%M%p"'';
-          index_format = ''"%4C %Z %?X?A& ? %D %-15.15L (%-4.4c) %s"'';
-          query_command = ''"abook --mutt-query '%s'"'';
-          rfc2047_parameters = "yes";
-          # Pause 0 seconds for informational messages
-          sleep_time = "0";
-          # Disables the `+` displayed at line wraps
-          markers = "no";
-          # Unread mail stay unread until read;
-          mark_old = "no";
-          # attachments are forwarded with mail;
-          mime_forward = "yes";
-          # mutt won't ask "press key to continue";
-          wait_key = "no";
-          # skip to compose when replying
-          fast_reply = "yes";
-          # save attachments with the body
-          fcc_attach = "yes";
-          # format of subject when forwarding;
-          forward_format = ''"Fwd: %s"'';
-          # include message in forwards
-          forward_quote = "yes";
-          # reply as whomever it was to
-          reverse_name = "yes";
-          # include message in replies
-          include = "yes";
-
-          # edit headers in editor
-          autoedit = "yes";
-          edit_headers = "yes";
-        };
-
-        binds = mapKeys [
-          "index,pager i noop"
-          "index,pager g noop"
-          "index \\Cf noop"
-          "index j next-entry"
-          "index k previous-entry"
-          "attach <return> view-mailcap"
-          "attach l view-mailcap"
-          "editor <space> noop"
-          "index G last-entry"
-          "index gg first-entry"
-          "pager,attach h exit"
-          "pager j next-line"
-          "pager k previous-line"
-          "pager l view-attachments"
-          "index D delete-message"
-          "index U undelete-message"
-          "index L limit"
-          "index h noop"
-          "index l display-message"
-          "index,query <space> tag-entry"
-          "browser h goto-parent"
-          "index,pager H view-raw-message"
-          "browser l select-entry"
-          "pager,browser gg top-page"
-          "pager,browser G bottom-page"
-          "index,pager,browser d half-down"
-          "index,pager,browser u half-up"
-          "index,pager S sync-mailbox"
-          "index,pager R group-reply"
-          "index \\031 previous-undeleted" # Mouse wheel
-          "index \\005 next-undeleted" # Mouse wheel
-          "pager \\031 previous-line" # Mouse wheel
-          "pager \\005 next-line" # Mouse wheel
-          "editor <Tab> complete-query"
-
-          # Pager stuff
-          "index,pager B sidebar-toggle-visible"
-        ];
-        macros = mapKeys [
-          "index,pager \\Ck <sidebar-prev><sidebar-open>"
-          "index,pager \\Cj <sidebar-next><sidebar-open>"
-          "index,pager \\Cp <sidebar-prev-new><sidebar-open>"
-          "index,pager \\Cn <sidebar-next-new><sidebar-open>"
-          "index,pager \\Cb <pipe-message>urlscan<Enter>"
-          "attach,compose \\Cb <pipe-entry>urlscan<Enter>"
-        ];
-
-        # TODO: Re-theme this after nightlamp -> limestone theme
-        extraConfig = ''
-          # Default index colors:
-          color index yellow default '.*'
-          color index_author red default '.*'
-          color index_number blue default
-          color index_subject cyan default '.*'
-
-          # New mail is boldened:
-          color index brightyellow black "~N"
-          color index_author brightred black "~N"
-          color index_subject brightcyan black "~N"
-
-
-          # Tagged mail is highlighted:
-          color index brightyellow blue "~T"
-          color index_author brightred blue "~T"
-          color index_subject brightcyan blue "~T"
-
-
-          # Other colors and aesthetic settings:
-          mono bold bold
-          mono underline underline
-          mono indicator reverse
-          mono error bold
-          color normal default default
-          color indicator brightblack white
-          color sidebar_highlight red default
-          color sidebar_divider brightblack black
-          color sidebar_flagged red black
-          color sidebar_new green black
-          color normal brightyellow default
-          color error red default
-          color tilde black default
-          color message cyan default
-          color markers red white
-          color attachment white default
-          color search brightmagenta default
-          color status brightyellow black
-          color hdrdefault brightgreen default
-          color quoted green default
-          color quoted1 blue default
-          color quoted2 cyan default
-          color quoted3 yellow default
-          color quoted4 red default
-          color quoted5 brightred default
-          color signature brightgreen default
-          color bold black default
-          color underline black default
-          color normal default default
-
-
-          # Regex highlighting:
-          color header blue default ".*"
-          color header brightmagenta default "^(From)"
-          color header brightcyan default "^(Subject)"
-          color header brightwhite default "^(CC|BCC)"
-          color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
-          color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
-          color body green default "\`[^\`]*\`" # Green text between ` and `
-          color body brightblue default "^# \.*" # Headings as bold blue
-          color body brightcyan default "^## \.*" # Subheadings as bold cyan
-          color body brightgreen default "^### \.*" # Subsubheadings as bold green
-          color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
-          color body brightcyan default "[;:][-o][)/(|]" # emoticons
-          color body brightcyan default "[;:][)(|]" # emoticons
-          color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
-          color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
-          color body red default "(BAD signature)"
-          color body cyan default "(Good signature)"
-          color body brightblack default "^gpg: Good signature .*"
-          color body brightyellow default "^gpg: "
-          color body brightyellow red "^gpg: BAD signature from.*"
-          mono body bold "^gpg: Good signature"
-          mono body bold "^gpg: BAD signature from.*"
-          color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
-        '';
-      };
-
-      programs.notmuch.hooks.postNew = ''
-        ${pkgs.libnotify}/bin/notify-send --icon=mail-unread --app-name=notmuch \
-          "Email" "Sync completed"
-      '';
-
-      services.imapnotify.enable = true;
-
-      # Sync emails on initial login
-      systemd.user.services.mbsync-oneshot = {
-        Unit = {
-          Description = "mbsync oneshot synchronisation";
-        };
-        Service = {
-          Type = "oneshot";
-          ExecStart = "${mbsyncCmd} --all";
-          RemainAfterExit = true;
-        };
-        Install.WantedBy = [ "default.target" ];
-      };
-
-      home.file.".mailcap".text =
-        let
-          setsid = "${pkgs.util-linux}/bin/setsid";
-          openfile = "${pkgs.writeShellScript "openfile" ''
-        # Helps open a file with xdg-open from mutt in a external program without weird side effects.
-        tempdir="''${TMPDIR:-$(mktemp -d)}"
-        file="$tempdir/$(basename "$1")"
-        [ "$(uname)" = "Darwin" ] && opener="open" || opener="${setsid} -f ${pkgs.xdg-utils}/bin/xdg-open"
-        mkdir -p "$tempdir"
-        cp -f "$1" "$file"
-        $opener "$file" >/dev/null 2>&1
-        find "''${tempdir:?}" -mtime +1 -type f -delete
-      ''}";
-        in
-        ''
-          ${lib.optionalString false "text/html; ${pkgs.w3m}/bin/w3m -dump -T text/html -I %{charset} -O utf-8 %s; copiousoutut; description=HTML Text; nametemplate=%s.html"}
-          text/plain; $EDITOR %s ;
-          ${lib.optionalString true "text/html; ${openfile} %s ; nametemplate=%s.html"}
-          text/html; ${pkgs.lynx}/bin/lynx -assume_charset=%{charset} -display_charset=utf-8 -dump %s; nametemplate=%s.html; copiousoutput;
-          image/*; ${openfile} %s ;
-          application/pdf; ${openfile} %s ;
-          # application/pgp-encrypted; gpg -d '%s'; copiousoutput;
-        '';
-    })
-    {
-      home.packages = with pkgs; [
-        urlscan
-        ispell
-
-        element-desktop
-        (weechat.override {
-          configure = { availablePlugins, ... }: {
-            plugins = [
-              (availablePlugins.python.withPackages (ps: with ps; [
-                potr
-                pycrypto
-                (if pkgs.stdenv.isDarwin then pync else [ ])
-              ]))
-              availablePlugins.perl
-              availablePlugins.lua
-            ];
-          };
-        })
-      ];
-    }
-  ]);
-}