From d95497cf3a7728f4a0d43bf4f54eb4a796ba0870 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Wed, 13 Apr 2022 15:20:45 -0700 Subject: drone: initial attempt at configuring it --- modules/services/drone/server/default.nix | 45 +++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 modules/services/drone/server/default.nix (limited to 'modules/services/drone/server') diff --git a/modules/services/drone/server/default.nix b/modules/services/drone/server/default.nix new file mode 100644 index 0000000..199aa47 --- /dev/null +++ b/modules/services/drone/server/default.nix @@ -0,0 +1,45 @@ +{ config, lib, pkgs, ... }: +let cfg = config.my.services.drone; +in { + config = lib.mkIf cfg.enable { + systemd.services.drone-server = { + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + EnvironmentFile = [ cfg.sharedSecretFile ]; + Environment = [ + "DRONE_SERVER_HOST=${cfg.vhostName}" + "DRONE_SERVER_PROTO=https" + "DRONE_SERVER_PORT=:${toString cfg.port}" + "DRONE_USER_CREATE=username:${cfg.admin},admin:true" + "DRONE_JSONNET_ENABLED=true" + "DRONE_STARLARK_ENABLED=true" + ]; + ExecStart = "${pkgs.drone}/bin/drone-server"; + User = "drone"; + Group = "drone"; + }; + }; + + users.users.drone = { + isSystemUser = true; + createHome = true; + group = "drone"; + }; + + users.groups.drone = { }; + + services.nginx.virtualHosts."${cfg.vhostName}" = { + forceSSL = true; + useACMEHost = cfg.vhostName; + locations."/" = { + proxyPass = "http://127.0.0.1:${toString cfg.port}"; + proxyWebsockets = true; + }; + }; + + security.acme.certs."${cfg.vhostName}" = { + dnsProvider = "gcloud"; + credentialsFile = secrets."acme/credentials".path; + }; + }; +} -- cgit 1.4.1