summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorIndiscipline <elephanttalk@protonmail.com>2021-04-10 14:42:47 +0300
committerIndiscipline <elephanttalk@protonmail.com>2021-04-10 14:44:45 +0300
commit9ffc4ad790dbbfcb0ac061d650c1df943b9e084d (patch)
tree50cfc6301577f4f719dbfb0a68af8d9dd1631d37 /nixos
parentc32ba28e67f809caa83a0f836bcc3d0bfcee98d1 (diff)
downloadnixpkgs-9ffc4ad790dbbfcb0ac061d650c1df943b9e084d.tar
nixpkgs-9ffc4ad790dbbfcb0ac061d650c1df943b9e084d.tar.gz
nixpkgs-9ffc4ad790dbbfcb0ac061d650c1df943b9e084d.tar.bz2
nixpkgs-9ffc4ad790dbbfcb0ac061d650c1df943b9e084d.tar.lz
nixpkgs-9ffc4ad790dbbfcb0ac061d650c1df943b9e084d.tar.xz
nixpkgs-9ffc4ad790dbbfcb0ac061d650c1df943b9e084d.tar.zst
nixpkgs-9ffc4ad790dbbfcb0ac061d650c1df943b9e084d.zip
nixos/minio: allow multiple data directories for erasure coding
Diffstat (limited to 'nixos')
-rw-r--r--nixos/doc/manual/release-notes/rl-2105.xml6
-rw-r--r--nixos/modules/services/web-servers/minio.nix11
2 files changed, 11 insertions, 6 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2105.xml b/nixos/doc/manual/release-notes/rl-2105.xml
index b5290b374f9..d6cab4afa2a 100644
--- a/nixos/doc/manual/release-notes/rl-2105.xml
+++ b/nixos/doc/manual/release-notes/rl-2105.xml
@@ -658,6 +658,12 @@ environment.systemPackages = [
      Environment variables can be set using <option>environment.variables</option>.
     </para>
    </listitem>
+   <listitem>
+    <para>
+     <option>services.minio.dataDir</option> changed type to a list of paths, required for specifiyng multiple data directories for using with erasure coding.
+     Currently, the service doesn't enforce nor checks the correct number of paths to correspond to minio requirements.
+    </para>
+   </listitem>
   </itemizedlist>
  </section>
 
diff --git a/nixos/modules/services/web-servers/minio.nix b/nixos/modules/services/web-servers/minio.nix
index cd123000f00..381a55faff1 100644
--- a/nixos/modules/services/web-servers/minio.nix
+++ b/nixos/modules/services/web-servers/minio.nix
@@ -18,9 +18,9 @@ in
     };
 
     dataDir = mkOption {
-      default = "/var/lib/minio/data";
-      type = types.path;
-      description = "The data directory, for storing the objects.";
+      default = [ "/var/lib/minio/data" ];
+      type = types.listOf types.path;
+      description = "The list of data directories for storing the objects. Use one path for regular operation and the minimum of 4 endpoints for Erasure Code mode.";
     };
 
     configDir = mkOption {
@@ -74,15 +74,14 @@ in
   config = mkIf cfg.enable {
     systemd.tmpfiles.rules = [
       "d '${cfg.configDir}' - minio minio - -"
-      "d '${cfg.dataDir}' - minio minio - -"
-    ];
+    ] ++ (map (x:  "d '" + x + "' - minio minio - - ") cfg.dataDir);
 
     systemd.services.minio = {
       description = "Minio Object Storage";
       after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
       serviceConfig = {
-        ExecStart = "${cfg.package}/bin/minio server --json --address ${cfg.listenAddress} --config-dir=${cfg.configDir} ${cfg.dataDir}";
+        ExecStart = "${cfg.package}/bin/minio server --json --address ${cfg.listenAddress} --config-dir=${cfg.configDir} ${toString cfg.dataDir}";
         Type = "simple";
         User = "minio";
         Group = "minio";