From c319bfea1fa2651e277aafb0aee7d445f8fe57e2 Mon Sep 17 00:00:00 2001 From: Jonas Heinrich Date: Sat, 3 Dec 2022 13:18:29 +0100 Subject: [PATCH] automatically bootstrap mail accounts --- Makefile | 2 +- vm-nextcloud.nix | 54 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e253e16..a66fc96 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,2 @@ all: - sudo -E QEMU_NET_OPTS="hostfwd=tcp::80-:80" NIX_PATH=nixpkgs=/home/onny/projects/nixpkgs nixos-shell vm-nextcloud.nix + QEMU_NET_OPTS="hostfwd=tcp::8080-:80,hostfwd=tcp::1433-:143,hostfwd=tcp::2525-:25" NIX_PATH=nixpkgs=/home/onny/projects/nixpkgs nixos-shell vm-nextcloud.nix diff --git a/vm-nextcloud.nix b/vm-nextcloud.nix index e204dad..3e796ba 100644 --- a/vm-nextcloud.nix +++ b/vm-nextcloud.nix @@ -1,10 +1,26 @@ { pkgs, ... }: { + nixpkgs = { + overlays = [ + (self: super: { + # Remove first run wizard from Nextcloud package + nextcloud25 = super.nextcloud25.overrideAttrs (oldAttrs: rec { + installPhase = oldAttrs.installPhase + '' + rm -r $out/apps/firstrunwizard + ''; + }); + }) + ]; + }; + services.nextcloud = { enable = true; package = pkgs.nextcloud25; hostName = "localhost"; - config.adminpassFile = "${pkgs.writeText "adminpass" "hunter2"}"; + 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"; @@ -14,9 +30,45 @@ 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; }; }; + services.maddy = { + enable = true; + hostname = "localhost"; + primaryDomain = "localhost"; + }; + + programs.msmtp = { + enable = true; + accounts.default = { + host = "localhost"; + tls = false; + port = 587; + from = "admin@localhost"; + user = "admin@localhost"; + password = "test123"; + }; + }; + + systemd.services.maddy-accounts = { + script = '' + set -eu + ${pkgs.coreutils}/bin/echo "Creating mail users and inboxes" + ${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 + ''; + serviceConfig = { + Type = "oneshot"; + User= "maddy"; + }; + after = [ "maddy.service" ]; + wantedBy = [ "multi-user.target" ]; + }; + documentation.info.enable = false; documentation.man.enable = false; documentation.nixos.enable = false;