Skip to content

Commit

Permalink
himalaya: adjust package for released v1.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
soywod committed Jan 2, 2025
1 parent a5119ff commit ea8c656
Showing 1 changed file with 28 additions and 60 deletions.
88 changes: 28 additions & 60 deletions modules/programs/himalaya.nix
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ let
email = account.address;
display-name = account.realName;
default = account.primary;
folder.alias = {
folder.aliases = {
inbox = account.folders.inbox;
sent = account.folders.sent;
drafts = account.folders.drafts;
Expand All @@ -46,43 +46,48 @@ let
signatureConfig =
lib.optionalAttrs (account.signature.showSignature == "append") {
# TODO: signature cannot be attached yet
# https://todo.sr.ht/~soywod/pimalaya/27
# https://github.com/pimalaya/himalaya/issues/534
signature = account.signature.text;
signature-delim = account.signature.delimiter;
};

imapConfig = lib.optionalAttrs imapEnabled (compactAttrs {
backend = "imap";
imap.host = account.imap.host;
imap.port = account.imap.port;
imap.encryption = mkEncryptionConfig account.imap.tls;
imap.login = account.userName;
imap.passwd.cmd = builtins.concatStringsSep " " account.passwordCommand;
backend.type = "imap";
backend.host = account.imap.host;
backend.port = account.imap.port;
backend.encryption.type = mkEncryptionConfig account.imap.tls;
backend.login = account.userName;
backend.auth.type = "password";
backend.auth.cmd =
builtins.concatStringsSep " " account.passwordCommand;
});

maildirConfig = lib.optionalAttrs maildirEnabled (compactAttrs {
backend = "maildir";
maildir.root-dir = account.maildir.absPath;
backend.type = "maildir";
backend.root-dir = account.maildir.absPath;
});

notmuchConfig = lib.optionalAttrs notmuchEnabled (compactAttrs {
backend = "notmuch";
notmuch.database-path = maildirBasePath;
backend.type = "notmuch";
backend.db-path = maildirBasePath;
});

smtpConfig = lib.optionalAttrs (!isNull account.smtp) (compactAttrs {
message.send.backend = "smtp";
smtp.host = account.smtp.host;
smtp.port = account.smtp.port;
smtp.encryption = mkEncryptionConfig account.smtp.tls;
smtp.login = account.userName;
smtp.passwd.cmd = builtins.concatStringsSep " " account.passwordCommand;
message.send.backend.type = "smtp";
message.send.backend.host = account.smtp.host;
message.send.backend.port = account.smtp.port;
message.send.backend.encryption.type =
mkEncryptionConfig account.smtp.tls;
message.send.backend.login = account.userName;
message.send.backend.auth.type = "password";
message.send.backend.auth.cmd =
builtins.concatStringsSep " " account.passwordCommand;
});

sendmailConfig =
lib.optionalAttrs (isNull account.smtp && !isNull account.msmtp) {
sender = "sendmail";
sendmail.cmd = lib.getExe pkgs.msmtp;
message.send.backend.type = "sendmail";
message.send.backend.cmd = lib.getExe pkgs.msmtp;
};

config = lib.attrsets.mergeAttrsList [
Expand All @@ -109,25 +114,7 @@ in {
default = { };
description = ''
Himalaya CLI global configuration.
See <https://pimalaya.org/himalaya/cli/latest/configuration/index.html#global-configuration> for supported values.
'';
};
};

services.himalaya-watch = {
enable = lib.mkEnableOption
"the email client Himalaya CLI envelopes watcher service";

environment = lib.mkOption {
type = with lib.types; attrsOf str;
default = { };
example = lib.literalExpression ''
{
"PASSWORD_STORE_DIR" = "~/.password-store";
}
'';
description = ''
Extra environment variables to be exported in the service.
See <https://github.com/pimalaya/himalaya/blob/master/config.sample.toml> for supported values.
'';
};
};
Expand All @@ -143,7 +130,7 @@ in {
default = { };
description = ''
Himalaya CLI configuration for this email account.
See <https://pimalaya.org/himalaya/cli/latest/configuration/index.html#account-configuration> for supported values.
See <https://github.com/pimalaya/himalaya/blob/master/config.sample.toml> for supported values.
'';
};
};
Expand All @@ -161,7 +148,7 @@ in {
accountsConfig = lib.mapAttrs mkAccountConfig enabledAccounts;
globalConfig = compactAttrs himalaya.settings;
allConfig = globalConfig // { accounts = accountsConfig; };
in tomlFormat.generate "himalaya-config.toml" allConfig;
in tomlFormat.generate "himalaya.config.toml" allConfig;

desktopEntries.himalaya = lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
type = "Application";
Expand All @@ -175,24 +162,5 @@ in {
settings = { Keywords = "email"; };
};
};

systemd.user.services."himalaya-watch@" =
let inherit (config.services.himalaya-watch) enable environment;
in lib.mkIf enable {
Unit = {
Description = "Email client Himalaya CLI envelopes watcher service";
After = [ "network.target" ];
};
Install = { WantedBy = [ "default.target" ]; };
Service = {
ExecStart =
"${lib.getExe himalaya.package} envelopes watch --account %I";
ExecSearchPath = "/bin";
Environment =
lib.mapAttrsToList (key: val: "${key}=${val}") environment;
Restart = "always";
RestartSec = 10;
};
};
};
}

0 comments on commit ea8c656

Please sign in to comment.