From 8fd4dac4a9fbd77b33b57ca0b95827826d056640 Mon Sep 17 00:00:00 2001 From: asonix Date: Tue, 24 Jan 2023 22:55:24 -0600 Subject: [PATCH] Extract shared nextcloud logic --- flake.nix | 88 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 32 deletions(-) diff --git a/flake.nix b/flake.nix index c2c60a2..4d47104 100644 --- a/flake.nix +++ b/flake.nix @@ -50,9 +50,8 @@ "@garage" "@garage-config" ]; - in - { - modules.shared = { extraPackages ? [ ] }: { + + sharedModule = { extraPackages ? [ ] }: { services.openssh.settings.PasswordAuthentication = false; # Use the extlinux boot loader. (NixOS wants to enable GRUB by default) @@ -103,46 +102,71 @@ }; }; - nixosConfigurations.nextcloud2 = - nixpkgs.lib.nixosSystem { - system = "aarch64-linux"; - modules = [ - image-builder.packages.aarch64-linux.modules.rockPro64v2 - (self.modules.shared - { - extraPackages = with pkgs; [ - docker - docker-compose - ]; - }) + makeNextcloudConfig = { hostName, volume }: nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + modules = [ + image-builder.packages.aarch64-linux.modules.rockPro64v2 + (sharedModule { - networking.hostName = "nextcloud2"; + extraPackages = with pkgs; [ + docker + docker-compose + ]; + }) + { + networking.hostName = hostName; - virtualisation.docker.enable = true; + virtualisation.docker.enable = true; - services.btrbk.instances.btrbk.settings.volume = { - "ssh://192.168.20.21/btrfs/hdd" = btrbkSecondary { - target-dir = "/btrfs/hdd/@snapshots"; - subvolumes = nextcloudSubvolumes; - }; - # "/btrfs/hdd" = btrbkPrimary { - # subvolumes = nextcloudSubvolumes; - # }; - }; - } - ]; - }; + services.btrbk.instances.btrbk.settings.volume = volume; + } + ]; + }; - deploy.nodes.nextcloud2 = { - hostname = "192.168.20.28"; + deployer = { hostname, configuration }: { + hostname = hostname; profiles.system = { user = "root"; sshOpts = [ "-i" "/home/asonix/.ssh/nix-installer" ]; - path = deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.nextcloud2; + path = deploy-rs.lib.aarch64-linux.activate.nixos configuration; }; }; + in + { + nixosConfigurations.nextcloud1 = makeNextcloudConfig { + hostName = "nextcloud1"; + volume = { + # "ssh://192.168.20.28/btrfs/hdd" = btrbkSecondary { + # target-dir = "/btrfs/hdd/@snapshots"; + # subvolumes = nextcloudSubvolumes; + # }; + "/btrfs/hdd" = btrbkPrimary { + subvolumes = nextcloudSubvolumes; + }; + }; + }; + + nixosConfigurations.nextcloud2 = + makeNextcloudConfig { + hostName = "nextcloud2"; + + volume = { + "ssh://192.168.20.21/btrfs/hdd" = btrbkSecondary { + target-dir = "/btrfs/hdd/@snapshots"; + subvolumes = nextcloudSubvolumes; + }; + # "/btrfs/hdd" = btrbkPrimary { + # subvolumes = nextcloudSubvolumes; + # }; + }; + }; + + deploy.nodes.nextcloud2 = deployer { + hostname = "192.168.20.28"; + configuration = self.nixosConfigurations.nextcloud2; + }; }; }