{ config, pkgs, self, ... }: let passwordmanager_compose_dir = builtins.path { name = "passwordmanager_compose_dir"; path = self + "/assets/compose/passwordmanager"; }; in { systemd.services.passwordmanager_stack = { description = "Bitwarden via Docker Compose"; after = [ "network-online.target" "docker.service" ]; wants = [ "network-online.target" "docker.service" ]; serviceConfig = { WorkingDirectory = "${passwordmanager_compose_dir}"; # Stop left over container by the same name ExecStartPre = "${pkgs.bash}/bin/bash -c '${pkgs.docker-compose}/bin/docker-compose down || true'"; # Start the services using Docker Compose ExecStart = "${pkgs.docker-compose}/bin/docker-compose up -d"; # Stop and remove containers on shutdown ExecStop = "${pkgs.docker-compose}/bin/docker-compose down"; RemainAfterExit = true; TimeoutStartSec = 0; }; wantedBy = [ "multi-user.target" ]; }; }