diff --git a/modules/programs/meli.nix b/modules/programs/meli.nix index 4abb9a46..3b629cc6 100644 --- a/modules/programs/meli.nix +++ b/modules/programs/meli.nix @@ -13,6 +13,10 @@ let mkIf ; + cfg = config.programs.meli; + + tomlFormat = pkgs.formats.toml { }; + enabledAccounts = lib.attrsets.filterAttrs ( name: value: value.meli.enable or false ) config.accounts.email.accounts; @@ -72,6 +76,12 @@ in description = "meli package to use"; }; + includes = mkOption { + type = with types; listOf (str); + description = "Paths of the various meli configuration files to include."; + default = [ ]; + }; + settings = mkOption { type = types.submodule { freeformType = (pkgs.formats.toml { }).type; @@ -186,12 +196,26 @@ in home.packages = [ config.programs.meli.package ]; # Generate meli configuration from email accounts - xdg.configFile."meli/config.toml".source = (pkgs.formats.toml { }).generate "meli-config" ( - { - accounts = meliAccounts; - } - // config.programs.meli.settings - ); + xdg.configFile."meli/config.toml" = + let + generatedToml = tomlFormat.generate "meli-config" ( + { + accounts = meliAccounts; + } + // config.programs.meli.settings + ); + + in + if cfg.includes == [ ] then + { + source = generatedToml; + } + else + { + text = lib.concatStringsSep "\n" ( + map (inc: "include(\"${inc}\")") (cfg.includes ++ [ generatedToml ]) + ); + }; }; }