{ pkgs, ... }: {
  project.name = "whale";

  docker-compose.raw = {
    volumes.zookeeper = { };
    volumes.kafka = { };
  };

  services.kafka = {
    service.useHostStore = true;
    # service.volumes = [
    #   {
    #     type = "volume";
    #     source = "kafka";
    #     target = "/data";
    #     # volume.nocopy = true;
    #   }
    # ];
    service.ports = [ "9092:9092" ];
    service.depends_on = [ "zookeeper" ];
    image.name = "localhost/kafka";
    image.contents = [
      (pkgs.runCommand "root" { } ''
        mkdir -p $out/bin
        ln -s ${pkgs.runtimeShell} $out/bin/sh
      '')
    ];
    image.command = [
      "${pkgs.apacheKafka}/bin/kafka-server-start.sh"
      "${./kafka/server.properties}"
    ];
  };

  services.zookeeper = {
    service.useHostStore = true;
    service.ports = [ "2181:2181" ];
    # service.volumes = [
    #   {
    #     type = "volume";
    #     source = "zookeeper";
    #     target = "/data";
    #     # volume.nocopy = true;
    #   }
    # ];
    image.name = "localhost/zookeeper";
    image.contents = [
      (pkgs.buildEnv {
        name = "root";
        paths = [
          # pkgs.sed
          pkgs.busybox
        ];
      })
    ];
    image.command = [
      "${pkgs.zookeeper}/bin/zkServer.sh"
      "--config"
      "${./zookeeper}"
      "start-foreground"
    ];
  };
}