Unverified Commit a378c720 authored by Leona Maroni's avatar Leona Maroni Committed by GitHub
Browse files

youtrack_2022_3: drop (#349356)

parents ca63cb8a dc14253a
Loading
Loading
Loading
Loading
+39 −113
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ in
    (lib.mkRenamedOptionModule [ "services" "youtrack" "port" ] [ "services" "youtrack" "environmentalParameters" "listen-port" ])
    (lib.mkRemovedOptionModule [ "services" "youtrack" "maxMemory" ] "Please instead use `services.youtrack.generalParameters`.")
    (lib.mkRemovedOptionModule [ "services" "youtrack" "maxMetaspaceSize" ] "Please instead use `services.youtrack.generalParameters`.")
    (lib.mkRemovedOptionModule [ "services" "youtrack" "extraParams" ] "Please migrate to `services.youtrack.generalParameters`.")
    (lib.mkRemovedOptionModule [ "services" "youtrack" "jvmOpts" ] "Please migrate to `services.youtrack.generalParameters`.")
  ];

  options.services.youtrack = {
@@ -22,33 +24,15 @@ in
      type = lib.types.str;
    };

    extraParams = lib.mkOption {
      default = {};
      description = ''
        Extra parameters to pass to youtrack.
        Use to configure YouTrack 2022.x, deprecated with YouTrack 2023.x. Use `services.youtrack.generalParameters`.
        https://www.jetbrains.com/help/youtrack/standalone/YouTrack-Java-Start-Parameters.html
        for more information.
      '';
      example = lib.literalExpression ''
        {
          "jetbrains.youtrack.overrideRootPassword" = "tortuga";
        }
      '';
      type = lib.types.attrsOf lib.types.str;
      visible = false;
    };

    package = lib.mkOption {
      description = ''
        Package to use.
      '';
      type = lib.types.package;
      default = null;
      relatedPackages = [ "youtrack_2022_3" "youtrack" ];
      default = pkgs.youtrack;
      defaultText = lib.literalExpression "pkgs.youtrack";
    };


    statePath = lib.mkOption {
      description = ''
        Path were the YouTrack state is stored.
@@ -67,19 +51,6 @@ in
      type = lib.types.nullOr lib.types.str;
    };

    jvmOpts = lib.mkOption {
      description = ''
        Extra options to pass to the JVM.
        Only has a use with YouTrack 2022.x, deprecated with YouTrack 2023.x. Use `serivces.youtrack.generalParameters`.
        See https://www.jetbrains.com/help/youtrack/standalone/Configure-JVM-Options.html
        for more information.
      '';
      type = lib.types.separatedString " ";
      example = "--J-XX:MetaspaceSize=250m";
      default = "";
      visible = false;
    };

    autoUpgrade = lib.mkOption {
      type = lib.types.bool;
      default = true;
@@ -90,7 +61,6 @@ in
      type = with lib.types; listOf str;
      description = ''
        General configuration parameters and other JVM options.
        Only has an effect for YouTrack 2023.x.
        See https://www.jetbrains.com/help/youtrack/server/2023.3/youtrack-java-start-parameters.html#general-parameters
        for more information.
      '';
@@ -121,7 +91,6 @@ in
      };
      description = ''
        Environmental configuration parameters, set imperatively. The values doesn't get removed, when removed in Nix.
        Only has an effect for YouTrack 2023.x.
        See https://www.jetbrains.com/help/youtrack/server/2023.3/youtrack-java-start-parameters.html#environmental-parameters
        for more information.
      '';
@@ -135,51 +104,9 @@ in
  };

  config = lib.mkIf cfg.enable {
    warnings = lib.optional (lib.versions.major cfg.package.version <= "2022")
      "YouTrack 2022.x is deprecated. See https://nixos.org/manual/nixos/unstable/index.html#module-services-youtrack for details on how to upgrade."
    ++ lib.optional (cfg.extraParams != {} && (lib.versions.major cfg.package.version >= "2023"))
      "'services.youtrack.extraParams' is deprecated and has no effect on YouTrack 2023.x and newer. Please migrate to 'services.youtrack.generalParameters'"
    ++ lib.optional (cfg.jvmOpts != "" && (lib.versions.major cfg.package.version >= "2023"))
      "'services.youtrack.jvmOpts' is deprecated and has no effect on YouTrack 2023.x and newer. Please migrate to 'services.youtrack.generalParameters'";

    # XXX: Drop all version feature switches at the point when we consider YT 2022.3 as outdated.
    services.youtrack.package = lib.mkDefault (
      if lib.versionAtLeast config.system.stateVersion "24.11" then pkgs.youtrack
      else pkgs.youtrack_2022_3
    );

    services.youtrack.generalParameters = lib.optional (lib.versions.major cfg.package.version >= "2023")
      "-Ddisable.configuration.wizard.on.upgrade=${lib.boolToString cfg.autoUpgrade}"
      ++ (lib.mapAttrsToList (k: v: "-D${k}=${v}") cfg.extraParams);
    services.youtrack.generalParameters = [ "-Ddisable.configuration.wizard.on.upgrade=${lib.boolToString cfg.autoUpgrade}" ];

    systemd.services.youtrack = let
      service_jar = let
        mergeAttrList = lib.foldl' lib.mergeAttrs {};
        stdParams = mergeAttrList [
          (lib.optionalAttrs (cfg.environmentalParameters ? base-url && cfg.environmentalParameters.base-url != null) {
            "jetbrains.youtrack.baseUrl" = cfg.environmentalParameters.base-url;
          })
          {
          "java.aws.headless" = "true";
          "jetbrains.youtrack.disableBrowser" = "true";
          }
        ];
        extraAttr = lib.concatStringsSep " " (lib.mapAttrsToList (k: v: "-D${k}=${v}") (stdParams // cfg.extraParams));
      in {
        environment.HOME = cfg.statePath;
        environment.YOUTRACK_JVM_OPTS = "${extraAttr}";
        after = [ "network.target" ];
        wantedBy = [ "multi-user.target" ];
        path = with pkgs; [ unixtools.hostname ];
        serviceConfig = {
          Type = "simple";
          User = "youtrack";
          Group = "youtrack";
          Restart = "on-failure";
          ExecStart = ''${cfg.package}/bin/youtrack ${cfg.jvmOpts} ${cfg.environmentalParameters.listen-address}:${toString cfg.environmentalParameters.listen-port}'';
        };
      };
      service_zip = let
      jvmoptions = pkgs.writeTextFile {
        name = "youtrack.jvmoptions";
        text = (lib.concatStringsSep "\n" cfg.generalParameters);
@@ -218,7 +145,6 @@ in
        })
      ];
    };
    in if (lib.versions.major cfg.package.version >= "2023") then service_zip else service_jar;

    users.users.youtrack = {
      description = "Youtrack service user";
+0 −32
Original line number Diff line number Diff line
{ lib, stdenv, fetchurl, makeWrapper, jdk17, gawk }:

stdenv.mkDerivation (finalAttrs: {
  pname = "youtrack";
  version = "2022.3.65371";

  jar = fetchurl {
    url = "https://download.jetbrains.com/charisma/youtrack-${finalAttrs.version}.jar";
    hash = "sha256-NQKWmKEq5ljUXd64zY27Nj8TU+uLdA37chbFVdmwjNs=";
  };

  nativeBuildInputs = [ makeWrapper ];

  dontUnpack = true;

  installPhase = ''
    runHook preInstall
    makeWrapper ${jdk17}/bin/java $out/bin/youtrack \
      --add-flags "\$YOUTRACK_JVM_OPTS -jar $jar" \
      --prefix PATH : "${lib.makeBinPath [ gawk ]}" \
      --set JRE_HOME ${jdk17}
    runHook postInstall
  '';

  meta = {
    description = "Issue tracking and project management tool for developers";
    maintainers = lib.teams.serokell.members ++ [ lib.maintainers.leona ];
    sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
    # https://www.jetbrains.com/youtrack/buy/license.html
    license = lib.licenses.unfree;
  };
})
+1 −0
Original line number Diff line number Diff line
@@ -1262,6 +1262,7 @@ mapAliases {
  yacc = throw "'yacc' has been renamed to/replaced by 'bison'"; # Converted to throw 2024-10-17
  yafaray-core = libyafaray; # Added 2022-09-23
  yi = throw "'yi' has been removed, as it was broken and unmaintained"; # added 2024-05-09
  youtrack_2022_3 = throw "'youtrack_2022_3' has been removed as it was deprecated. Please update to the 'youtrack' package."; # Added 2024-10-17
  yrd = throw "'yrd' has been removed, as it was broken and unmaintained"; # added 2024-05-27

  ### Z ###