From 7dfb67f1f4e5418f244cab887e8f9dd734476eb9 Mon Sep 17 00:00:00 2001 From: Leyla Becker Date: Fri, 3 Jan 2025 13:39:08 -0600 Subject: [PATCH] created nextcloud service --- configurations/nixos/defiant/services.nix | 30 ------------ modules/nixos-modules/server/default.nix | 1 + modules/nixos-modules/server/nextcloud.nix | 55 ++++++++++++++++++++++ 3 files changed, 56 insertions(+), 30 deletions(-) create mode 100644 modules/nixos-modules/server/nextcloud.nix diff --git a/configurations/nixos/defiant/services.nix b/configurations/nixos/defiant/services.nix index fdb0383..958bc08 100644 --- a/configurations/nixos/defiant/services.nix +++ b/configurations/nixos/defiant/services.nix @@ -1,8 +1,6 @@ { lib, config, - pkgs, - inputs, ... }: { imports = []; @@ -40,31 +38,13 @@ }; config = { - sops.secrets = { - "services/nextcloud_adminpass" = { - sopsFile = "${inputs.secrets}/defiant-services.yaml"; - owner = config.users.users.nextcloud.name; - }; - }; - systemd = { services = { - # nextcloud-setup = { - # after = ["network.target"]; - # }; headscale = { after = ["postgresql.service"]; requires = ["postgresql.service"]; }; }; - - # disable computer sleeping - targets = { - sleep.enable = false; - suspend.enable = false; - hibernate.enable = false; - hybrid-sleep.enable = false; - }; }; services = { @@ -92,16 +72,6 @@ }; }; - # nextcloud here is built using its auto setup mysql db because it was not playing nice with postgres - nextcloud = { - enable = true; - package = pkgs.nextcloud30; - hostName = config.apps.nextcloud.hostname; - config = { - adminpassFile = config.sops.secrets."services/nextcloud_adminpass".path; - }; - }; - nginx = { enable = true; virtualHosts = { diff --git a/modules/nixos-modules/server/default.nix b/modules/nixos-modules/server/default.nix index dd19cfd..b44eec7 100644 --- a/modules/nixos-modules/server/default.nix +++ b/modules/nixos-modules/server/default.nix @@ -9,5 +9,6 @@ ./searx.nix ./home-assistant.nix ./pihole.nix + ./nextcloud.nix ]; } diff --git a/modules/nixos-modules/server/nextcloud.nix b/modules/nixos-modules/server/nextcloud.nix new file mode 100644 index 0000000..126ddd5 --- /dev/null +++ b/modules/nixos-modules/server/nextcloud.nix @@ -0,0 +1,55 @@ +{ + lib, + pkgs, + config, + inputs, + ... +}: let + dataDir = "/var/lib/nextcloud"; +in { + options.host.nextcloud = { + enable = lib.mkEnableOption "should nextcloud be enabled on this computer"; + subdomain = lib.mkOption { + type = lib.types.str; + description = "subdomain of base domain that nextcloud will be hosted at"; + default = "nextcloud"; + }; + }; + + config = lib.mkIf config.host.nextcloud.enable (lib.mkMerge [ + { + sops.secrets = { + "services/nextcloud_adminpass" = { + sopsFile = "${inputs.secrets}/defiant-services.yaml"; + owner = config.users.users.nextcloud.name; + }; + }; + + host.reverse_proxy.subdomains.${config.host.jellyfin.subdomain} = {}; + + services = { + nextcloud = { + enable = true; + package = pkgs.nextcloud30; + hostName = "${config.host.nextcloud.subdomain}.${config.host.reverse_proxy.hostname}"; + config = { + adminpassFile = config.sops.secrets."services/nextcloud_adminpass".path; + }; + }; + }; + } + (lib.mkIf config.host.impermanence.enable { + environment.persistence."/persist/system/root" = { + enable = true; + hideMounts = true; + directories = [ + { + directory = dataDir; + user = "nextcloud"; + group = "nextcloud"; + } + ]; + }; + }) + ]); +}