{ config, pkgs, ... }: { virtualisation.docker.enable = true; users.users.drone-server = { isSystemUser = true; group = "drone-server"; home = "/var/lib/drone-server"; createHome = true; }; users.groups.drone-server = { }; users.groups.docker.members = [ "drone-server" ]; systemd.services.drone-server = { description = "Drone Server (CI CD Service)"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; path = [ pkgs.docker ]; serviceConfig = { # Type = "simple"; Name = "drone-server"; User = "drone-server"; Group = "drone-server"; Restart = "always"; ExecStartPre= '' -${pkgs.docker}/bin/docker stop %n \ -${pkgs.docker}/bin/docker rm %n \ ${pkgs.docker}/bin/docker pull drone/drone:1 ''; ExecStart= '' ${pkgs.docker}/bin/docker run --rm --name %n \ --env=DRONE_AGENTS_ENABLED=true \ --env=DRONE_GOGS_SERVER=https://git.cloonar.com \ --env=DRONE_GIT_ALWAYS_AUTH=true \ --env=DRONE_RPC_SECRET=super-duper-secret \ --env=DRONE_SERVER_HOST=drone.cloonar.com \ --env=DRONE_SERVER_PROTO=https \ --env=DRONE_USER_CREATE=username:dominik.polakovics,admin:true \ -v /var/lib/drone-server:/data \ --publish=8080:80 \ drone/drone:2 ''; }; }; services.nginx.enable = true; services.nginx.virtualHosts."drone.cloonar.com" = { forceSSL = true; enableACME = true; acmeRoot = null; locations."/" = { proxyPass = "http://localhost:8080"; }; }; }