109 lines
3.5 KiB
Nix
109 lines
3.5 KiB
Nix
{ pkgs, config, lib, options, ... }: {
|
|
|
|
nixpkgs = {
|
|
overlays = [
|
|
(self: super: {
|
|
# Remove first run wizard and password policy check from Nextcloud
|
|
# package
|
|
nextcloud25 = super.nextcloud25.overrideAttrs (oldAttrs: rec {
|
|
installPhase = oldAttrs.installPhase + ''
|
|
rm -r $out/apps/firstrunwizard
|
|
rm -r $out/apps/password_policy
|
|
'';
|
|
});
|
|
})
|
|
];
|
|
};
|
|
|
|
# Setup Nextcloud including apps
|
|
services.nextcloud = {
|
|
enable = true;
|
|
package = pkgs.nextcloud25;
|
|
hostName = "localhost";
|
|
config = {
|
|
adminuser = "admin";
|
|
adminpassFile = "${pkgs.writeText "adminpass" "test123"}";
|
|
};
|
|
extraApps = {
|
|
circles = pkgs.fetchNextcloudApp rec {
|
|
url = "https://github.com/nextcloud-releases/circles/releases/download/0.21.4/circles-0.21.4.tar.gz";
|
|
sha256 = "sha256-gkW9jZvXS86ScuM434mUbvQajYKwHVjm9PfTMNgHL/Q=";
|
|
};
|
|
calendar = pkgs.fetchNextcloudApp rec {
|
|
url = "https://github.com/nextcloud-releases/calendar/releases/download/v4.1.0/calendar-v4.1.0.tar.gz";
|
|
sha256 = "sha256-KALFhCNjofFQMntv3vyL0TJxqD/mBkeDpxt8JV4CPAM=";
|
|
};
|
|
mail = pkgs.nextcloud25Packages.apps.mail;
|
|
};
|
|
extraOptions = {
|
|
mail_smtpmode = "sendmail";
|
|
mail_sendmailmode = "pipe";
|
|
};
|
|
};
|
|
|
|
# Setup mail server
|
|
services.maddy = {
|
|
enable = true;
|
|
hostname = "localhost";
|
|
primaryDomain = "localhost";
|
|
# Disable any sender validation checks
|
|
config = lib.concatStrings (
|
|
builtins.match "(.*)authorize_sender.*identity\n[ ]+\}(.*)" options.services.maddy.config.default
|
|
);
|
|
};
|
|
|
|
# Configure local mail delivery
|
|
programs.msmtp = {
|
|
enable = true;
|
|
accounts.default = {
|
|
host = "localhost";
|
|
port = 587;
|
|
auth = "login";
|
|
tls = "off";
|
|
from = "admin@localhost";
|
|
user = "admin@localhost";
|
|
password = "test123";
|
|
};
|
|
};
|
|
|
|
# Creating mail users and inboxes
|
|
systemd.services.maddy-accounts = {
|
|
script = ''
|
|
${pkgs.maddy}/bin/maddyctl creds create --password test123 user1@localhost
|
|
${pkgs.maddy}/bin/maddyctl imap-acct create user1@localhost
|
|
${pkgs.maddy}/bin/maddyctl creds create --password test123 user2@localhost
|
|
${pkgs.maddy}/bin/maddyctl imap-acct create user2@localhost
|
|
${pkgs.maddy}/bin/maddyctl creds create --password test123 admin@localhost
|
|
${pkgs.maddy}/bin/maddyctl imap-acct create admin@localhost
|
|
'';
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
User= "maddy";
|
|
};
|
|
after = [ "maddy.service" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
};
|
|
|
|
# Creating Nextcloud users and configure mail adresses
|
|
systemd.services.nextcloud-add-user = {
|
|
script = ''
|
|
export OC_PASS="test123"
|
|
${config.services.nextcloud.occ}/bin/nextcloud-occ user:add --password-from-env user1
|
|
${config.services.nextcloud.occ}/bin/nextcloud-occ user:setting user1 settings email "user1@localhost"
|
|
${config.services.nextcloud.occ}/bin/nextcloud-occ user:add --password-from-env user2
|
|
${config.services.nextcloud.occ}/bin/nextcloud-occ user:setting user2 settings email "user2@localhost"
|
|
${config.services.nextcloud.occ}/bin/nextcloud-occ user:setting admin settings email "admin@localhost"
|
|
'';
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
User= "nextcloud";
|
|
};
|
|
after = [ "nextcloud-setup.service" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
};
|
|
|
|
documentation.info.enable = false;
|
|
documentation.man.enable = false;
|
|
documentation.nixos.enable = false;
|
|
|
|
}
|