{ config, pkgs, self, ... }: let versioncontrol_compose_dir = pkgs.stdenv.mkDerivation { name = "versioncontrol_compose_dir"; src = self + "/assets/compose/versioncontrol"; dontUnpack = true; installPhase = '' mkdir -p $out cp -r $src/* $out/ ''; }; in { networking.firewall.allowedTCPPorts = [ 2222 ]; systemd.services.versioncontrol_stack = { description = "Gitea via Docker Compose"; after = [ "network-online.target" "docker.service" ]; wants = [ "network-online.target" "docker.service" ]; serviceConfig = { WorkingDirectory = "${versioncontrol_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" ]; }; }