Unverified Commit 7703f36f authored by Janik's avatar Janik Committed by GitHub
Browse files

Merge pull request #269469 from NetaliDev/zammad-update

parents 4fa7d5f3 531fa591
Loading
Loading
Loading
Loading
+49 −6
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ let
    NODE_ENV = "production";
    RAILS_SERVE_STATIC_FILES = "true";
    RAILS_LOG_TO_STDOUT = "true";
    REDIS_URL = "redis://${cfg.redis.host}:${toString cfg.redis.port}";
  };
  databaseConfig = settingsFormat.generate "database.yml" cfg.database.settings;
in
@@ -65,6 +66,36 @@ in
        description = lib.mdDoc "Websocket service port.";
      };

      redis = {
        createLocally = mkOption {
          type = types.bool;
          default = true;
          description = lib.mdDoc "Whether to create a local redis automatically.";
        };

        name = mkOption {
          type = types.str;
          default = "zammad";
          description = lib.mdDoc ''
            Name of the redis server. Only used if `createLocally` is set to true.
          '';
        };

        host = mkOption {
          type = types.str;
          default = "localhost";
          description = lib.mdDoc ''
            Redis server address.
          '';
        };

        port = mkOption {
          type = types.port;
          default = 6379;
          description = lib.mdDoc "Port of the redis server.";
        };
      };

      database = {
        type = mkOption {
          type = types.enum [ "PostgreSQL" "MySQL" ];
@@ -206,6 +237,10 @@ in
        assertion = cfg.database.createLocally -> cfg.database.passwordFile == null;
        message = "a password cannot be specified if services.zammad.database.createLocally is set to true";
      }
      {
        assertion = cfg.redis.createLocally -> cfg.redis.host == "localhost";
        message = "the redis host must be localhost if services.zammad.redis.createLocally is set to true";
      }
    ];

    services.mysql = optionalAttrs (cfg.database.createLocally && cfg.database.type == "MySQL") {
@@ -231,6 +266,13 @@ in
      ];
    };

    services.redis = optionalAttrs cfg.redis.createLocally {
      servers."${cfg.redis.name}" = {
        enable = true;
        port = cfg.redis.port;
      };
    };

    systemd.services.zammad-web = {
      inherit environment;
      serviceConfig = serviceConfig // {
@@ -240,6 +282,8 @@ in
      after = [
        "network.target"
        "postgresql.service"
      ] ++ optionals cfg.redis.createLocally [
        "redis-${cfg.redis.name}.service"
      ];
      requires = [
        "postgresql.service"
@@ -303,16 +347,15 @@ in
      script = "./script/websocket-server.rb -b ${cfg.host} -p ${toString cfg.websocketPort} start";
    };

    systemd.services.zammad-scheduler = {
      inherit environment;
      serviceConfig = serviceConfig // { Type = "forking"; };
    systemd.services.zammad-worker = {
      inherit serviceConfig environment;
      after = [ "zammad-web.service" ];
      requires = [ "zammad-web.service" ];
      description = "Zammad scheduler";
      description = "Zammad background worker";
      wantedBy = [ "multi-user.target" ];
      script = "./script/scheduler.rb start";
      script = "./script/background-worker.rb start";
    };
  };

  meta.maintainers = with lib.maintainers; [ garbas taeer ];
  meta.maintainers = with lib.maintainers; [ taeer netali ];
}
+3 −2
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ import ./make-test-python.nix (
  {
    name = "zammad";

    meta.maintainers = with lib.maintainers; [ garbas taeer n0emis ];
    meta.maintainers = with lib.maintainers; [ taeer n0emis netali ];

    nodes.machine = { config, ... }: {
      services.zammad.enable = true;
@@ -44,9 +44,10 @@ import ./make-test-python.nix (
    testScript = ''
      start_all()
      machine.wait_for_unit("postgresql.service")
      machine.wait_for_unit("redis-zammad.service")
      machine.wait_for_unit("zammad-web.service")
      machine.wait_for_unit("zammad-websocket.service")
      machine.wait_for_unit("zammad-scheduler.service")
      machine.wait_for_unit("zammad-worker.service")
      # wait for zammad to fully come up
      machine.sleep(120)

+1 −1
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ index d85a17491..90ea5e387 100644
 
 require 'rails/all'
+require 'nulldb'
 require_relative 'issue_2656_workaround_for_rails_issue_33600'
 require_relative '../lib/zammad/safe_mode'
 
 # DO NOT REMOVE THIS LINE - see issue #2037
diff --git a/db/schema.rb b/db/schema.rb
+17 −3
Original line number Diff line number Diff line
@@ -19,11 +19,12 @@
, yarn2nix-moretea
, v8
, cacert
, redis
}:

let
  pname = "zammad";
  version = "5.4.1";
  version = "6.1.0";

  src = applyPatches {

@@ -100,7 +101,7 @@ let

    offlineCache = fetchYarnDeps {
      yarnLock = "${src}/yarn.lock";
      hash = "sha256-HI4RR4/ll/zNBNtDCb8OvEsG/BMVYacM0CcYqbkNHEY=";
      hash = "sha256-PVQ2L+Io6Ct9UHvfoQmxV01ECG8fj0+xKwpMfAvD7q0=";
    };

    yarnPreBuild = ''
@@ -124,13 +125,26 @@ stdenv.mkDerivation {
    cacert
  ];

  nativeBuildInputs = [
    redis
  ];

  RAILS_ENV = "production";

  buildPhase = ''
    node_modules=${yarnEnv}/libexec/Zammad/node_modules
    ${yarn2nix-moretea.linkNodeModulesHook}

    mkdir redis-work
    pushd redis-work
    redis-server &
    REDIS_PID=$!
    popd

    rake DATABASE_URL="nulldb://user:pass@127.0.0.1/dbname" assets:precompile

    kill $REDIS_PID
    rm -r redis-work
  '';

  installPhase = ''
@@ -151,6 +165,6 @@ stdenv.mkDerivation {
    homepage = "https://zammad.org";
    license = licenses.agpl3Plus;
    platforms = [ "x86_64-linux" "aarch64-linux" ];
    maintainers = with maintainers; [ n0emis garbas taeer ];
    maintainers = with maintainers; [ n0emis taeer netali ];
  };
}
+386 −257

File changed.

Preview size limit exceeded, changes collapsed.

Loading