{ config, lib, pkgs, ... }:

{
  # Samba configuration
  environment.systemPackages = with pkgs; [ samba ];

  services.samba = {
    enable = true;
    nsswins = true;
    extraConfig = ''
      workgroup = WORKGROUP
      server string = unit
      netbios name = unit
      guest account = nobody
      map to guest = bad user
      load printers=no
      smb encrypt = required
      server min protocol = SMB2_10
      client min protocol = SMB2
      client max protocol = SMB3
      ntlm auth = yes
    '';
    shares.public = {
      path = "/vault/samba/CSD";
      browseable = "yes";
      "read only" = "no";
      "guest ok" = "yes";
      "create mask" = "0644";
      "directory mask" = "0755";
      "force user" = "coace";
    };
  };

  # ZFS automatic backup solution
  services.znapzend = {
    enable = true;
    pure = true;
    zetup."vault" = {
      plan = "1h=>10min,1d=>1h,1w=>1d,1m=>1w,1y=>1m";
      recursive = true;
      destinations.backup = {
        host = "10.0.1.4";
        dataset = "shield/unit";
        plan = "1w=>1d,1m=>1w,1y=>1m";
      };
    };
  };

  # Nextcloud configuration
  services.nextcloud = {
    enable = true;
    package = pkgs.nextcloud21;
    home = "/vault/nextcloud";
    hostName = "coace.duckdns.org";
    https = true;
    autoUpdateApps = {
      enable = true;
      startAt = "Sun 05:00:00";
    };
    config = {
      overwriteProtocol = "https";
      dbtype = "pgsql";
      dbuser = "nextcloud";
      dbname = "nextcloud";
      dbpassFile = "/var/keys/nextcloud";
      adminpassFile = "/var/keys/nextcloud-admin";
      adminuser = "admin";
      defaultPhoneRegion = "ES";
    };
  };

}