diff options
Diffstat (limited to 'nixos/modules/services/continuous-integration/buildbot/worker.nix')
-rw-r--r-- | nixos/modules/services/continuous-integration/buildbot/worker.nix | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/nixos/modules/services/continuous-integration/buildbot/worker.nix b/nixos/modules/services/continuous-integration/buildbot/worker.nix deleted file mode 100644 index 1d7f53bb655..00000000000 --- a/nixos/modules/services/continuous-integration/buildbot/worker.nix +++ /dev/null @@ -1,198 +0,0 @@ -# NixOS module for Buildbot Worker. - -{ config, lib, options, pkgs, ... }: - -with lib; - -let - cfg = config.services.buildbot-worker; - opt = options.services.buildbot-worker; - - python = cfg.package.pythonModule; - - tacFile = pkgs.writeText "aur-buildbot-worker.tac" '' - import os - from io import open - - from buildbot_worker.bot import Worker - from twisted.application import service - - basedir = '${cfg.buildbotDir}' - - # note: this line is matched against to check that this is a worker - # directory; do not edit it. - application = service.Application('buildbot-worker') - - master_url_split = '${cfg.masterUrl}'.split(':') - buildmaster_host = master_url_split[0] - port = int(master_url_split[1]) - workername = '${cfg.workerUser}' - - with open('${cfg.workerPassFile}', 'r', encoding='utf-8') as passwd_file: - passwd = passwd_file.read().strip('\r\n') - keepalive = ${toString cfg.keepalive} - umask = None - maxdelay = 300 - numcpus = None - allow_shutdown = None - - s = Worker(buildmaster_host, port, workername, passwd, basedir, - keepalive, umask=umask, maxdelay=maxdelay, - numcpus=numcpus, allow_shutdown=allow_shutdown) - s.setServiceParent(application) - ''; - -in { - options = { - services.buildbot-worker = { - - enable = mkOption { - type = types.bool; - default = false; - description = "Whether to enable the Buildbot Worker."; - }; - - user = mkOption { - default = "bbworker"; - type = types.str; - description = "User the buildbot Worker should execute under."; - }; - - group = mkOption { - default = "bbworker"; - type = types.str; - description = "Primary group of buildbot Worker user."; - }; - - extraGroups = mkOption { - type = types.listOf types.str; - default = []; - description = "List of extra groups that the Buildbot Worker user should be a part of."; - }; - - home = mkOption { - default = "/home/bbworker"; - type = types.path; - description = "Buildbot home directory."; - }; - - buildbotDir = mkOption { - default = "${cfg.home}/worker"; - defaultText = literalExpression ''"''${config.${opt.home}}/worker"''; - type = types.path; - description = "Specifies the Buildbot directory."; - }; - - workerUser = mkOption { - default = "example-worker"; - type = types.str; - description = "Specifies the Buildbot Worker user."; - }; - - workerPass = mkOption { - default = "pass"; - type = types.str; - description = "Specifies the Buildbot Worker password."; - }; - - workerPassFile = mkOption { - type = types.path; - description = "File used to store the Buildbot Worker password"; - }; - - hostMessage = mkOption { - default = null; - type = types.nullOr types.str; - description = "Description of this worker"; - }; - - adminMessage = mkOption { - default = null; - type = types.nullOr types.str; - description = "Name of the administrator of this worker"; - }; - - masterUrl = mkOption { - default = "localhost:9989"; - type = types.str; - description = "Specifies the Buildbot Worker connection string."; - }; - - keepalive = mkOption { - default = 600; - type = types.int; - description = " - This is a number that indicates how frequently keepalive messages should be sent - from the worker to the buildmaster, expressed in seconds. - "; - }; - - package = mkOption { - type = types.package; - default = pkgs.python3Packages.buildbot-worker; - defaultText = literalExpression "pkgs.python3Packages.buildbot-worker"; - description = "Package to use for buildbot worker."; - example = literalExpression "pkgs.python2Packages.buildbot-worker"; - }; - - packages = mkOption { - default = with pkgs; [ git ]; - defaultText = literalExpression "[ pkgs.git ]"; - type = types.listOf types.package; - description = "Packages to add to PATH for the buildbot process."; - }; - }; - }; - - config = mkIf cfg.enable { - services.buildbot-worker.workerPassFile = mkDefault (pkgs.writeText "buildbot-worker-password" cfg.workerPass); - - users.groups = optionalAttrs (cfg.group == "bbworker") { - bbworker = { }; - }; - - users.users = optionalAttrs (cfg.user == "bbworker") { - bbworker = { - description = "Buildbot Worker User."; - isNormalUser = true; - createHome = true; - home = cfg.home; - group = cfg.group; - extraGroups = cfg.extraGroups; - useDefaultShell = true; - }; - }; - - systemd.services.buildbot-worker = { - description = "Buildbot Worker."; - after = [ "network.target" "buildbot-master.service" ]; - wantedBy = [ "multi-user.target" ]; - path = cfg.packages; - environment.PYTHONPATH = "${python.withPackages (p: [ cfg.package ])}/${python.sitePackages}"; - - preStart = '' - mkdir -vp "${cfg.buildbotDir}/info" - ${optionalString (cfg.hostMessage != null) '' - ln -sf "${pkgs.writeText "buildbot-worker-host" cfg.hostMessage}" "${cfg.buildbotDir}/info/host" - ''} - ${optionalString (cfg.adminMessage != null) '' - ln -sf "${pkgs.writeText "buildbot-worker-admin" cfg.adminMessage}" "${cfg.buildbotDir}/info/admin" - ''} - ''; - - serviceConfig = { - Type = "simple"; - User = cfg.user; - Group = cfg.group; - WorkingDirectory = cfg.home; - - # NOTE: call twistd directly with stdout logging for systemd - ExecStart = "${python.pkgs.twisted}/bin/twistd --nodaemon --pidfile= --logfile - --python ${tacFile}"; - }; - - }; - }; - - meta.maintainers = with lib.maintainers; [ ]; - -} |