Skip to content

Commit

Permalink
alot: apply nixfmt
Browse files Browse the repository at this point in the history
  • Loading branch information
rycee committed May 1, 2020
1 parent 10673bf commit 70f7c9f
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 101 deletions.
1 change: 0 additions & 1 deletion format
Expand Up @@ -33,7 +33,6 @@ find . -name '*.nix' \
! -path ./modules/misc/xdg.nix \
! -path ./modules/modules.nix \
! -path ./modules/programs/afew.nix \
! -path ./modules/programs/alot.nix \
! -path ./modules/programs/bash.nix \
! -path ./modules/programs/emacs.nix \
! -path ./modules/programs/firefox.nix \
Expand Down
175 changes: 75 additions & 100 deletions modules/programs/alot.nix
Expand Up @@ -7,20 +7,16 @@ let

cfg = config.programs.alot;

alotAccounts = filter (a: a.notmuch.enable)
(attrValues config.accounts.email.accounts);
alotAccounts =
filter (a: a.notmuch.enable) (attrValues config.accounts.email.accounts);

boolStr = v: if v then "True" else "False";

mkKeyValue = key: value:
let
value' =
if isBool value then boolStr value
else toString value;
in
"${key} = ${value'}";
let value' = if isBool value then boolStr value else toString value;
in "${key} = ${value'}";

mk2ndLevelSectionName = name: "[" + name + "]";
mk2ndLevelSectionName = name: "[" + name + "]";

tagSubmodule = types.submodule {
options = {
Expand Down Expand Up @@ -58,84 +54,66 @@ let
default = null;
description = "How to display the tag when focused.";
};
};
};
};

accountStr = account: with account;
concatStringsSep "\n" (
[ "[[${name}]]" ]
++ mapAttrsToList (n: v: n + "=" + v) (
{
address = address;
realname = realName;
sendmail_command =
optionalString (alot.sendMailCommand != null) alot.sendMailCommand;
sent_box = "maildir" + "://" + maildir.absPath + "/" + folders.sent;
draft_box = "maildir" + "://"+ maildir.absPath + "/" + folders.drafts;
}
// optionalAttrs (aliases != []) {
aliases = concatStringsSep "," aliases;
}
// optionalAttrs (gpg != null) {
gpg_key = gpg.key;
encrypt_by_default = if gpg.encryptByDefault then "all" else "none";
sign_by_default = boolStr gpg.signByDefault;
}
// optionalAttrs (signature.showSignature != "none") {
signature = pkgs.writeText "signature.txt" signature.text;
signature_as_attachment =
boolStr (signature.showSignature == "attach");
}
)
++ [ alot.extraConfig ]
++ [ "[[[abook]]]" ]
++ mapAttrsToList (n: v: n + "=" + v) alot.contactCompletion
);

configFile =
let
bindingsToStr = attrSet:
concatStringsSep "\n" (mapAttrsToList (n: v: "${n} = ${v}") attrSet);
in
''
# Generated by Home Manager.
# See http://alot.readthedocs.io/en/latest/configuration/config_options.html
${generators.toKeyValue { inherit mkKeyValue; } cfg.settings}
${cfg.extraConfig}
[tags]
''
+ (
let
submoduleToAttrs = m:
filterAttrs (name: v: name != "_module" && v != null) m;
in
generators.toINI { mkSectionName = mk2ndLevelSectionName; }
(mapAttrs (name: x: submoduleToAttrs x) cfg.tags)
)
+ ''
[bindings]
${bindingsToStr cfg.bindings.global}
[[bufferlist]]
${bindingsToStr cfg.bindings.bufferlist}
[[search]]
${bindingsToStr cfg.bindings.search}
[[envelope]]
${bindingsToStr cfg.bindings.envelope}
[[taglist]]
${bindingsToStr cfg.bindings.taglist}
[[thread]]
${bindingsToStr cfg.bindings.thread}
[accounts]
${concatStringsSep "\n\n" (map accountStr alotAccounts)}
'';

in

{
accountStr = account:
with account;
concatStringsSep "\n" ([ "[[${name}]]" ]
++ mapAttrsToList (n: v: n + "=" + v) ({
address = address;
realname = realName;
sendmail_command =
optionalString (alot.sendMailCommand != null) alot.sendMailCommand;
sent_box = "maildir" + "://" + maildir.absPath + "/" + folders.sent;
draft_box = "maildir" + "://" + maildir.absPath + "/" + folders.drafts;
} // optionalAttrs (aliases != [ ]) {
aliases = concatStringsSep "," aliases;
} // optionalAttrs (gpg != null) {
gpg_key = gpg.key;
encrypt_by_default = if gpg.encryptByDefault then "all" else "none";
sign_by_default = boolStr gpg.signByDefault;
} // optionalAttrs (signature.showSignature != "none") {
signature = pkgs.writeText "signature.txt" signature.text;
signature_as_attachment = boolStr (signature.showSignature == "attach");
}) ++ [ alot.extraConfig ] ++ [ "[[[abook]]]" ]
++ mapAttrsToList (n: v: n + "=" + v) alot.contactCompletion);

configFile = let
bindingsToStr = attrSet:
concatStringsSep "\n" (mapAttrsToList (n: v: "${n} = ${v}") attrSet);
in ''
# Generated by Home Manager.
# See http://alot.readthedocs.io/en/latest/configuration/config_options.html
${generators.toKeyValue { inherit mkKeyValue; } cfg.settings}
${cfg.extraConfig}
[tags]
'' + (let
submoduleToAttrs = m:
filterAttrs (name: v: name != "_module" && v != null) m;
in generators.toINI { mkSectionName = mk2ndLevelSectionName; }
(mapAttrs (name: x: submoduleToAttrs x) cfg.tags)) + ''
[bindings]
${bindingsToStr cfg.bindings.global}
[[bufferlist]]
${bindingsToStr cfg.bindings.bufferlist}
[[search]]
${bindingsToStr cfg.bindings.search}
[[envelope]]
${bindingsToStr cfg.bindings.envelope}
[[taglist]]
${bindingsToStr cfg.bindings.taglist}
[[thread]]
${bindingsToStr cfg.bindings.thread}
[accounts]
${concatStringsSep "\n\n" (map accountStr alotAccounts)}
'';

in {
options.programs.alot = {
enable = mkOption {
type = types.bool;
Expand All @@ -161,59 +139,57 @@ in
options = {
global = mkOption {
type = types.attrsOf types.str;
default = {};
default = { };
description = "Global keybindings.";
};

bufferlist = mkOption {
type = types.attrsOf types.str;
default = {};
default = { };
description = "Bufferlist mode keybindings.";
};

search = mkOption {
type = types.attrsOf types.str;
default = {};
default = { };
description = "Search mode keybindings.";
};

envelope = mkOption {
type = types.attrsOf types.str;
default = {};
default = { };
description = "Envelope mode keybindings.";
};

taglist = mkOption {
type = types.attrsOf types.str;
default = {};
default = { };
description = "Taglist mode keybindings.";
};

thread = mkOption {
type = types.attrsOf types.str;
default = {};
default = { };
description = "Thread mode keybindings.";
};
};
};
default = {};
default = { };
description = ''
Keybindings.
'';
};

tags = mkOption {
type = types.attrsOf tagSubmodule;
default = {};
default = { };
description = "How to display the tags.";
};

settings = mkOption {
type = with types;
let
primitive = either (either (either str int) bool) float;
in
attrsOf primitive;
let primitive = either (either (either str int) bool) float;
in attrsOf primitive;
default = {
initial_command = "search tag:inbox AND NOT tag:killed";
auto_remove_unread = true;
Expand Down Expand Up @@ -242,15 +218,14 @@ in
};

config = mkIf cfg.enable {
home.packages = [ pkgs.alot ];
home.packages = [ pkgs.alot ];

xdg.configFile."alot/config".text = configFile;

xdg.configFile."alot/hooks.py" = mkIf (cfg.hooks != "") {
text = ''
# Generated by Home Manager.
''
+ cfg.hooks;
'' + cfg.hooks;
};
};
}

0 comments on commit 70f7c9f

Please sign in to comment.