From 5054b557bf7acb05b6713dc37e7cfb5dbbc09d2b Mon Sep 17 00:00:00 2001 From: chn Date: Sat, 6 Sep 2025 08:26:07 +0800 Subject: [PATCH] modules.services.mariadb: allow mount from configurable location --- devices/pc/default.nix | 1 + devices/srv1/default.nix | 1 + devices/srv2/default.nix | 1 + modules/services/mariadb.nix | 10 +++++++--- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/devices/pc/default.nix b/devices/pc/default.nix index ba8bdbdd..a3aa9ba2 100644 --- a/devices/pc/default.nix +++ b/devices/pc/default.nix @@ -113,6 +113,7 @@ inputs: kvm.aarch64 = true; nfs."/" = [ "192.168.84.0/24" ]; peerBanHelper = {}; + mariadb.mountFrom = "nodatacow"; }; bugs = [ "xmunet" "backlight" "amdpstate" "iwlwifi" ]; packages = { mathematica = {}; vasp = {}; }; diff --git a/devices/srv1/default.nix b/devices/srv1/default.nix index 984c90df..50cda0b2 100644 --- a/devices/srv1/default.nix +++ b/devices/srv1/default.nix @@ -59,6 +59,7 @@ inputs: { name = "n1"; mpiThreads = 8; openmpThreads = 4; } ]; }; + mariadb.mountFrom = "nodatacow"; }; packages = { vasp = {}; lumerical = {}; }; user.users = [ "chn" "xll" "zem" "yjq" "gb" "wp" "hjp" "wm" "GROUPIII-1" "GROUPIII-2" "GROUPIII-3" "zgq" ]; diff --git a/devices/srv2/default.nix b/devices/srv2/default.nix index 21e371ef..c19b9dc8 100644 --- a/devices/srv2/default.nix +++ b/devices/srv2/default.nix @@ -74,6 +74,7 @@ inputs: ]; }; }; + mariadb.mountFrom = "nodatacow"; }; packages = { vasp = {}; desktop = {}; }; user.users = diff --git a/modules/services/mariadb.nix b/modules/services/mariadb.nix index 566ee4ae..bc98a363 100644 --- a/modules/services/mariadb.nix +++ b/modules/services/mariadb.nix @@ -13,6 +13,7 @@ inputs: };})); default = {}; }; + mountFrom = mkOption { type = types.nullOr types.nonEmptyStr; default = null; }; }; config = let inherit (inputs.config.nixos.services) mariadb; in inputs.lib.mkIf mariadb.enable { @@ -30,7 +31,7 @@ inputs: }; mysqlBackup = { - enable = true; + enable = mariadb.mountFrom == "nodatacow"; singleTransaction = true; databases = builtins.map (db: db.value.database) (inputs.localLib.attrsToList mariadb.instances); }; @@ -49,7 +50,10 @@ inputs: nixos.system.sops.secrets = builtins.listToAttrs (builtins.map (db: { name = "mariadb/${db.value.user}"; value.owner = inputs.config.users.users.mysql.name; }) (builtins.filter (db: db.value.passwordFile == null) (inputs.localLib.attrsToList mariadb.instances))); - environment.persistence."/nix/nodatacow".directories = - [{ directory = "/var/lib/mysql"; user = "mysql"; group = "mysql"; mode = "0750"; }]; + environment.persistence = inputs.lib.mkIf (mariadb.mountFrom != null) + { + "/nix/${mariadb.mountFrom}".directories = + [{ directory = "/var/lib/mysql"; user = "mysql"; group = "mysql"; mode = "0750"; }]; + }; }; }