{ config, pkgs, fetchurl, lib, ... }: { virtualisation = { docker = let daemonConfig = { ipv6 = true; fixed-cidr-v6 = "fd69:2074:9fcd:b0fd::/64"; features = { buildkit = true; }; }; in { enable = true; enableOnBoot = false; liveRestore = false; extraOptions = "--config-file=${pkgs.writeText "daemon.json" (builtins.toJSON daemonConfig)}"; autoPrune = { enable = true; dates = "Mon, 13:00"; }; }; }; services.mongodb = { enable = true; replSetName = "rs0"; bind_ip = "127.0.0.1"; dbpath = "/tmp/mongodb"; }; systemd.services.mongodb.wantedBy = lib.mkForce []; systemd.timers.mongodb = { description = "Delayed startup of MongoDB"; wantedBy = [ "timers.target" ]; timerConfig = { OnActiveSec = "1 min"; }; }; systemd.services.mongodb-init = { description = "Init mongodb replicaset"; requires = [ "mongodb.service" ]; script = "${pkgs.mongodb}/bin/mongo --eval 'rs.initiate()'"; }; systemd.timers.mongodb-init = { wantedBy = [ "timers.target" ]; timerConfig = { OnActiveSec = "2 min"; }; }; services.postgresql = { enable = true; ensureDatabases = ["satoshipay"]; authentication = '' # TYPE DATABASE USER ADDRESS METHOD local all postgres trust local all all md5 ''; ensureUsers = [ { name = "alan"; ensurePermissions = { "DATABASE satoshipay" = "ALL PRIVILEGES"; }; } { name = "satoshipay"; ensurePermissions = { "DATABASE satoshipay" = "ALL PRIVILEGES"; }; } ]; }; nix.gc.dates = "12:30"; system.autoUpgrade.dates = "13:05"; networking.domain = "satoshipay.io"; }