Home

dotnix @54258b9e845fedd28a51a2b078fd21108f442b96 - refs - log -
-
https://git.jolheiser.com/dotnix.git
My nix dotfiles
dotnix / machines / dragonwell / concourse / concourse.nix
- raw
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# Auto-generated using compose2nix v0.2.0-pre.
{
  pkgs,
  lib,
  ...
}: {
  # Runtime
  virtualisation.docker = {
    enable = true;
    autoPrune.enable = true;
  };
  virtualisation.oci-containers.backend = "docker";

  # Containers
  virtualisation.oci-containers.containers."concourse-concourse" = {
    image = "concourse/concourse";
    environment = {
      CONCOURSE_ADD_LOCAL_USER = "test:test";
      CONCOURSE_CLIENT_SECRET = "Y29uY291cnNlLXdlYgo=";
      CONCOURSE_CLUSTER_NAME = "tutorial";
      CONCOURSE_CONTENT_SECURITY_POLICY = "*";
      CONCOURSE_EXTERNAL_URL = "http://localhost:8080";
      CONCOURSE_MAIN_TEAM_LOCAL_USER = "test";
      CONCOURSE_POSTGRES_DATABASE = "concourse";
      CONCOURSE_POSTGRES_HOST = "concourse-db";
      CONCOURSE_POSTGRES_PASSWORD = "concourse_pass";
      CONCOURSE_POSTGRES_USER = "concourse_user";
      CONCOURSE_TSA_CLIENT_SECRET = "Y29uY291cnNlLXdvcmtlcgo=";
      CONCOURSE_WORKER_BAGGAGECLAIM_DRIVER = "overlay";
      CONCOURSE_WORKER_CONTAINERD_DNS_SERVER = "8.8.8.8";
      CONCOURSE_WORKER_RUNTIME = "containerd";
      CONCOURSE_X_FRAME_OPTIONS = "allow";
    };
    ports = [
      "8080:8080/tcp"
    ];
    cmd = ["quickstart"];
    dependsOn = [
      "concourse-concourse-db"
    ];
    log-driver = "journald";
    extraOptions = [
      "--network-alias=concourse"
      "--network=concourse_default"
      "--privileged"
    ];
  };
  systemd.services."docker-concourse-concourse" = {
    serviceConfig = {
      Restart = lib.mkForce "no";
    };
    after = [
      "docker-network-concourse_default.service"
    ];
    requires = [
      "docker-network-concourse_default.service"
    ];
    partOf = [
      "docker-compose-concourse-root.target"
    ];
    wantedBy = [
      "docker-compose-concourse-root.target"
    ];
  };
  virtualisation.oci-containers.containers."concourse-concourse-db" = {
    image = "postgres";
    environment = {
      PGDATA = "/database";
      POSTGRES_DB = "concourse";
      POSTGRES_PASSWORD = "concourse_pass";
      POSTGRES_USER = "concourse_user";
    };
    log-driver = "journald";
    extraOptions = [
      "--network-alias=concourse-db"
      "--network=concourse_default"
    ];
  };
  systemd.services."docker-concourse-concourse-db" = {
    serviceConfig = {
      Restart = lib.mkForce "no";
    };
    after = [
      "docker-network-concourse_default.service"
    ];
    requires = [
      "docker-network-concourse_default.service"
    ];
    partOf = [
      "docker-compose-concourse-root.target"
    ];
    wantedBy = [
      "docker-compose-concourse-root.target"
    ];
  };

  # Networks
  systemd.services."docker-network-concourse_default" = {
    path = [pkgs.docker];
    serviceConfig = {
      Type = "oneshot";
      RemainAfterExit = true;
      ExecStop = "${pkgs.docker}/bin/docker network rm -f concourse_default";
    };
    script = ''
      docker network inspect concourse_default || docker network create concourse_default
    '';
    partOf = ["docker-compose-concourse-root.target"];
    wantedBy = ["docker-compose-concourse-root.target"];
  };

  # Root service
  # When started, this will automatically create all resources and start
  # the containers. When stopped, this will teardown all resources.
  systemd.targets."docker-compose-concourse-root" = {
    unitConfig = {
      Description = "Root target generated by compose2nix.";
    };
    wantedBy = ["multi-user.target"];
  };
}