Unverified Commit f0875e05 authored by github-actions[bot]'s avatar github-actions[bot] Committed by GitHub
Browse files

Merge master into staging-next

parents a893fcf2 a168173e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ lrexlib-pcre,,,,,,vyp
lrexlib-posix,,,,,,
lua-cjson,,,,,,
lua-cmsgpack,,,,,,
lua-curl,,,,,,
lua-iconv,,,,,,
lua-lsp,,,,,,
lua-messagepack,,,,,,
+2 −0
Original line number Diff line number Diff line
@@ -274,6 +274,8 @@ In addition to numerous new and upgraded packages, this release has the followin
  replacement. It stores backups as volume dump files and thus better integrates
  into contemporary backup solutions.

- `services.maddy` now allows to configure users and their credentials using `services.maddy.ensureCredentials`.

- The `dnsmasq` service now takes configuration via the
  `services.dnsmasq.settings` attribute set. The option
  `services.dnsmasq.extraConfig` will be deprecated when NixOS 22.11 reaches
+36 −2
Original line number Diff line number Diff line
@@ -228,8 +228,8 @@ in {
        default = [];
        description = lib.mdDoc ''
          List of IMAP accounts which get automatically created. Note that for
          a complete setup, user credentials for these accounts are required too
          and can be created using the command `maddyctl creds`.
          a complete setup, user credentials for these accounts are required
          and can be created using the `ensureCredentials` option.
          This option does not delete accounts which are not (anymore) listed.
        '';
        example = [
@@ -238,6 +238,33 @@ in {
        ];
      };

      ensureCredentials = mkOption {
        default = {};
        description = lib.mdDoc ''
          List of user accounts which get automatically created if they don't
          exist yet. Note that for a complete setup, corresponding mail boxes
          have to get created using the `ensureAccounts` option.
          This option does not delete accounts which are not (anymore) listed.
        '';
        example = {
          "user1@localhost".passwordFile = /secrets/user1-localhost;
          "user2@localhost".passwordFile = /secrets/user2-localhost;
        };
        type = types.attrsOf (types.submodule {
          options = {
            passwordFile = mkOption {
              type = types.path;
              example = "/path/to/file";
              default = null;
              description = lib.mdDoc ''
                Specifies the path to a file containing the
                clear text password for the user.
              '';
            };
          };
        });
      };

    };
  };

@@ -265,6 +292,13 @@ in {
                fi
              '') cfg.ensureAccounts}
            ''}
            ${optionalString (cfg.ensureCredentials != {}) ''
              ${concatStringsSep "\n" (mapAttrsToList (name: cfg: ''
                if ! ${pkgs.maddy}/bin/maddyctl creds list | grep "${name}"; then
                  ${pkgs.maddy}/bin/maddyctl creds create --password $(cat ${escapeShellArg cfg.passwordFile}) ${name}
                fi
              '') cfg.ensureCredentials)}
            ''}
          '';
          serviceConfig = {
            Type = "oneshot";
+1 −1
Original line number Diff line number Diff line
@@ -140,7 +140,7 @@ in
        # We can't use Environment=HOSTNAME=%H, as it doesn't include the domain part.
        export HOSTNAME=$(< /proc/sys/kernel/hostname)

        exec ${cfg.package}/bin/agent -config.expand-env -config.file ${configFile}
        exec ${lib.getExe cfg.package} -config.expand-env -config.file ${configFile}
      '';
      serviceConfig = {
        Restart = "always";
+6 −6
Original line number Diff line number Diff line
@@ -4,12 +4,12 @@ with lib;

let
  cfg = config.services.prometheus.exporters.smartctl;
  args = concatStrings [
    "--web.listen-address=\"${cfg.listenAddress}:${toString cfg.port}\" "
    "--smartctl.path=\"${pkgs.smartmontools}/bin/smartctl\" "
    "--smartctl.interval=\"${cfg.maxInterval}\" "
    "${concatMapStringsSep " " (device: "--smartctl.device=${device}") cfg.devices}"
  ] ++ cfg.extraFlags;
  args = lib.escapeShellArgs ([
    "--web.listen-address=${cfg.listenAddress}:${toString cfg.port}"
    "--smartctl.path=${pkgs.smartmontools}/bin/smartctl"
    "--smartctl.interval=${cfg.maxInterval}"
  ] ++ map (device: "--smartctl.device=${device}") cfg.devices
  ++ cfg.extraFlags);
in {
  port = 9633;

Loading