nixos-nextcloud-testumgebung/vm-nextcloud.nix

122 lines
3.7 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=";
};
mail = pkgs.nextcloud25Packages.apps.mail;
};
extraOptions = {
mail_smtpmode = "sendmail";
mail_sendmailmode = "pipe";
debug = true;
trusted_domains = [ "10.100.100.1" ];
};
};
# Mount our local development app repository into the VM
nixos-shell.mounts.extraMounts = {
"/var/lib/nextcloud/store-apps/calendar" = {
target = /home/onny/projects/calendar;
cache = "none";
};
};
# 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"
${config.services.nextcloud.occ}/bin/nextcloud-occ app:enable calendar
'';
serviceConfig = {
Type = "oneshot";
User= "nextcloud";
};
after = [ "nextcloud-setup.service" ];
wantedBy = [ "multi-user.target" ];
};
# FIXME debugging
environment.systemPackages = [ pkgs.php82 ];
system.stateVersion = "21.11";
documentation.info.enable = false;
documentation.man.enable = false;
documentation.nixos.enable = false;
}