diff --git a/modules/accounts/email.nix b/modules/accounts/email.nix
index 6846cadb..031b8baa 100644
--- a/modules/accounts/email.nix
+++ b/modules/accounts/email.nix
@@ -123,7 +123,7 @@ let
# gpgModule = types.submodule {
# };
- mailAccount = types.submodule ({ name, config, ... }: {
+ mailAccountOpts = { name, config, ... }: {
options = {
name = mkOption {
type = types.str;
@@ -272,7 +272,7 @@ let
};
})
];
- });
+ };
in
@@ -294,7 +294,11 @@ in
};
accounts = mkOption {
- type = types.attrsOf mailAccount;
+ type = types.attrsOf (types.submodule [
+ mailAccountOpts
+ (import ../programs/mbsync-accounts.nix)
+ (import ../programs/notmuch-accounts.nix)
+ ]);
default = {};
description = "List of email accounts.";
};
diff --git a/modules/programs/mbsync-accounts.nix b/modules/programs/mbsync-accounts.nix
new file mode 100644
index 00000000..a983b7ff
--- /dev/null
+++ b/modules/programs/mbsync-accounts.nix
@@ -0,0 +1,57 @@
+{ lib, ... }:
+
+with lib;
+
+{
+ options.mbsync = {
+ enable = mkEnableOption "synchronization using mbsync";
+
+ flatten = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ example = ".";
+ description = ''
+ If set, flattens the hierarchy within the maildir by
+ substituting the canonical hierarchy delimiter
+ / with this value.
+ '';
+ };
+
+ create = mkOption {
+ type = types.enum [ "none" "maildir" "imap" "both" ];
+ default = "none";
+ example = "maildir";
+ description = ''
+ Automatically create missing mailboxes within the
+ given mail store.
+ '';
+ };
+
+ remove = mkOption {
+ type = types.enum [ "none" "maildir" "imap" "both" ];
+ default = "none";
+ example = "imap";
+ description = ''
+ Propagate mailbox deletions to the given mail store.
+ '';
+ };
+
+ expunge = mkOption {
+ type = types.enum [ "none" "maildir" "imap" "both" ];
+ default = "none";
+ example = "both";
+ description = ''
+ Permanently remove messages marked for deletion from
+ the given mail store.
+ '';
+ };
+
+ patterns = mkOption {
+ type = types.listOf types.str;
+ default = [ "*" ];
+ description = ''
+ Pattern of mailboxes to synchronize.
+ '';
+ };
+ };
+}
diff --git a/modules/programs/mbsync.nix b/modules/programs/mbsync.nix
index 87a78355..4abfc7b3 100644
--- a/modules/programs/mbsync.nix
+++ b/modules/programs/mbsync.nix
@@ -132,64 +132,6 @@ in
'';
};
};
-
- accounts.email.accounts = mkOption {
- options = [
- {
- mbsync = {
- enable = mkEnableOption "synchronization using mbsync";
-
- flatten = mkOption {
- type = types.nullOr types.str;
- default = null;
- example = ".";
- description = ''
- If set, flattens the hierarchy within the maildir by
- substituting the canonical hierarchy delimiter
- / with this value.
- '';
- };
-
- create = mkOption {
- type = types.enum [ "none" "maildir" "imap" "both" ];
- default = "none";
- example = "maildir";
- description = ''
- Automatically create missing mailboxes within the
- given mail store.
- '';
- };
-
- remove = mkOption {
- type = types.enum [ "none" "maildir" "imap" "both" ];
- default = "none";
- example = "imap";
- description = ''
- Propagate mailbox deletions to the given mail store.
- '';
- };
-
- expunge = mkOption {
- type = types.enum [ "none" "maildir" "imap" "both" ];
- default = "none";
- example = "both";
- description = ''
- Permanently remove messages marked for deletion from
- the given mail store.
- '';
- };
-
- patterns = mkOption {
- type = types.listOf types.str;
- default = [ "*" ];
- description = ''
- Pattern of mailboxes to synchronize.
- '';
- };
- };
- }
- ];
- };
};
config = mkIf cfg.enable {
diff --git a/modules/programs/notmuch-accounts.nix b/modules/programs/notmuch-accounts.nix
new file mode 100644
index 00000000..7c9c93d3
--- /dev/null
+++ b/modules/programs/notmuch-accounts.nix
@@ -0,0 +1,7 @@
+{ lib, ... }:
+
+{
+ options.notmuch = {
+ enable = lib.mkEnableOption "notmuch indexing";
+ };
+}
diff --git a/modules/programs/notmuch.nix b/modules/programs/notmuch.nix
index 3d7a651f..ef9f2ec4 100644
--- a/modules/programs/notmuch.nix
+++ b/modules/programs/notmuch.nix
@@ -129,16 +129,6 @@ in
};
};
};
-
- accounts.email.accounts = mkOption {
- options = [
- {
- notmuch = {
- enable = mkEnableOption "notmuch indexing";
- };
- }
- ];
- };
};
config = mkIf cfg.enable {