diff options
| author | Mel <einebeere@gmail.com> | 2024-12-07 18:16:47 +0100 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2024-12-07 18:16:47 +0100 |
| commit | d1a88ffa2c8cf5d6dd690f9059c0da059e01b716 (patch) | |
| tree | b05d964e2e5c692ce36ec3471939f1f32ba54593 /services/dendrite.nix | |
| parent | a511e64fab20700fad50dedd1f966b4605e637b5 (diff) | |
| download | network-d1a88ffa2c8cf5d6dd690f9059c0da059e01b716.tar.zst network-d1a88ffa2c8cf5d6dd690f9059c0da059e01b716.zip | |
Convert most services to streamed images and foundation
Signed-off-by: Mel <einebeere@gmail.com>
Diffstat (limited to 'services/dendrite.nix')
| -rw-r--r-- | services/dendrite.nix | 75 |
1 files changed, 12 insertions, 63 deletions
diff --git a/services/dendrite.nix b/services/dendrite.nix index 2987762..dcd4dc9 100644 --- a/services/dendrite.nix +++ b/services/dendrite.nix @@ -1,4 +1,4 @@ -{ lib, pkgs, unstablePkgs, auxiliaryPkgs, ... }: +{ pkgs, unstablePkgs, auxiliaryPkgs, ... }: let inherit (pkgs) dockerTools; @@ -8,7 +8,7 @@ let dendrite = unstablePkgs.dendrite; - dendriteImage = dockerTools.buildLayeredImage { + dendriteImage = dockerTools.streamLayeredImage { name = "dendrite"; tag = dendrite.version; fromImage = common.alpine.base; @@ -18,84 +18,33 @@ let in { - virtualisation.oci-containers.containers = { + foundation.service.dendrite = { dendrite = { - imageFile = dendriteImage; - image = "dendrite:${dendrite.version}"; - ports = [ - "127.0.0.1:8008:8008" - "127.0.0.1:8448:8448" + image = dendriteImage; + ports = [ + [ 8008 8008 ] + [ 8448 8448 ] ]; volumes = [ - "${dendriteDir}/config:/etc/dendrite" - "${dendriteDir}/data:/var/dendrite" + [ "${dendriteDir}/config" "/etc/dendrite" ] + [ "${dendriteDir}/data" "/var/dendrite" ] ]; entrypoint = "${dendrite}/bin/dendrite"; workdir = "/etc/dendrite"; - - dependsOn = [ "dendrite-db" ]; - - extraOptions = [ - "--network-alias=dendrite" - "--network=dendrite" - ]; }; - dendrite-db = { - inherit (common.postgres15) image imageFile; + db = { + fullImage = common.postgres15; - volumes = [ "${dendriteDir}/pgdata:/var/lib/postgresql/data" ]; + volumes = [ [ "${dendriteDir}/pgdata" "/var/lib/postgresql/data" ] ]; environment = { "POSTGRES_DATABASE" = "dendrite"; "POSTGRES_USER" = "dendrite"; "POSTGRES_PASSWORD" = "TFbQi2cHnzwe26"; }; - - extraOptions = [ - "--network-alias=db" - "--network=dendrite" - ]; - }; - }; - - systemd = let - root = "docker-dendrite-root"; - network = "docker-dendrite-network"; - - containerService = { - serviceConfig = { - Restart = lib.mkOverride 90 "always"; - RestartMaxDelaySec = lib.mkOverride 90 "1m"; - RestartSec = lib.mkOverride 90 "100ms"; - RestartSteps = lib.mkOverride 90 9; - }; - after = [ "${network}.service" ]; requires = [ "${network}.service" ]; - partOf = [ "${root}.target" ]; wantedBy = [ "${root}.target" ]; - }; - in { - services = { - "docker-dendrite-db" = containerService; - "docker-dendrite" = containerService; - - "${network}" = { - path = [ pkgs.docker ]; - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - ExecStop = "docker network rm -f dendrite"; - }; - script = '' - docker network inspect dendrite || docker network create dendrite --driver=bridge - ''; - partOf = [ "${root}.target" ]; wantedBy = [ "${root}.target" ]; - }; - }; - - targets = { - "${root}" = { wantedBy = [ "multi-user.target" ]; }; }; }; } |
