]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - nixops/modules/databases/mysql.nix
Upgrade mysql and postgresql
[perso/Immae/Config/Nix.git] / nixops / modules / databases / mysql.nix
index acf47509d573be234a135c6d881727a7716b59be..39d25d30cc78dd22a5a72200aae615cafbaf543f 100644 (file)
@@ -1,5 +1,6 @@
-{ lib, pkgs, config, myconfig, mylibs, ... }:
+{ lib, pkgs, pkgsNext, config, myconfig, mylibs, ... }:
 let
+    pkgs = pkgsNext.appendOverlays config.nixpkgs.overlays;
     cfg = config.services.myDatabases;
 in {
   options.services.myDatabases = {
@@ -14,13 +15,13 @@ in {
   };
 
   config = lib.mkIf cfg.enable {
-    nixpkgs.config.packageOverrides = oldpkgs: rec {
+    nixpkgs.overlays = [ (self: super: rec {
       mariadb = mariadbPAM;
-      mariadbPAM = oldpkgs.mariadb.overrideAttrs(old: rec {
+      mariadbPAM = super.mariadb.overrideAttrs(old: rec {
         cmakeFlags = old.cmakeFlags ++ [ "-DWITH_AUTHENTICATION_PAM=ON" ];
-        buildInputs = old.buildInputs ++ [ pkgs.pam ];
+        buildInputs = old.buildInputs ++ [ self.pam ];
       });
-    };
+    }) ];
 
     networking.firewall.allowedTCPPorts = [ 3306 ];
 
@@ -51,6 +52,21 @@ in {
       '';
     };
 
+    services.cron = {
+      enable = true;
+      systemCronJobs = let
+        mycnf = pkgs.writeText "my.cnf" ''
+          [mysqldump]
+          user = root
+          password = ${myconfig.env.databases.mysql.systemUsers.root}
+          '';
+      in [
+        ''
+          30 1,13 * * * root ${pkgs.mariadb}/bin/mysqldump --defaults-file=${mycnf} --all-databases > /var/lib/mysql/backup.sql
+        ''
+      ];
+    };
+
     security.pam.services = let
       pam_ldap = "${pkgs.pam_ldap}/lib/security/pam_ldap.so";
       pam_ldap_mysql = with myconfig.env.databases.mysql.pam;