atlassian-{bamboo,confluence,crowd,jira}: drop
Support for the Atlassian Server products ended in February 2024 and there was insufficient interest in maintaining the Atlassian Data Center replacements c.f. https://github.com/NixOS/nixpkgs/pull/353043#issuecomment-2452825826
This commit is contained in:
parent
e5a0b0c39e
commit
fa08eabc4a
@ -672,6 +672,15 @@
|
||||
lists by default. Backwards-compatible behavior can be enabled with
|
||||
`atomsCoercedToLists`.
|
||||
|
||||
- Atlassian Server products have been removed, as support for the Atlassian Server
|
||||
products ended in February 2024 and there was insufficient interest in
|
||||
maintaining the Atlassian Data Center replacements:
|
||||
- The `atlassian-bamboo` package
|
||||
- The `atlassian-confluence` package and its `services.confluence` NixOS module
|
||||
- The `atlassian-crowd` package and its `services.crowd` NixOS module
|
||||
- The `atlassian-jira` package and its `services.jira` NixOS module
|
||||
|
||||
|
||||
- `python3Packages.nose` has been removed, as it has been deprecated and unmaintained for almost a decade and does not work on Python 3.12.
|
||||
Please switch to `pytest` or another test runner/framework.
|
||||
|
||||
|
@ -1390,9 +1390,6 @@
|
||||
./services/web-apps/alps.nix
|
||||
./services/web-apps/anuko-time-tracker.nix
|
||||
./services/web-apps/artalk.nix
|
||||
./services/web-apps/atlassian/confluence.nix
|
||||
./services/web-apps/atlassian/crowd.nix
|
||||
./services/web-apps/atlassian/jira.nix
|
||||
./services/web-apps/audiobookshelf.nix
|
||||
./services/web-apps/bluemap.nix
|
||||
./services/web-apps/bookstack.nix
|
||||
|
@ -62,7 +62,9 @@ in
|
||||
(mkRemovedOptionModule [ "services" "beegfsEnable" ] "The BeeGFS module has been removed")
|
||||
(mkRemovedOptionModule [ "services" "cgmanager" "enable"] "cgmanager was deprecated by lxc and therefore removed from nixpkgs.")
|
||||
(mkRemovedOptionModule [ "services" "chronos" ] "The corresponding package was removed from nixpkgs.")
|
||||
(mkRemovedOptionModule [ "services" "confluence" ] "Atlassian software has been removed, as support for the Atlassian Server products ended in February 2024 and there was insufficient interest in maintaining the Atlassian Data Center replacements")
|
||||
(mkRemovedOptionModule [ "services" "couchpotato" ] "The corresponding package was removed from nixpkgs.")
|
||||
(mkRemovedOptionModule [ "services" "crowd" ] "Atlassian software has been removed, as support for the Atlassian Server products ended in February 2024 and there was insufficient interest in maintaining the Atlassian Data Center replacements")
|
||||
(mkRemovedOptionModule [ "services" "dd-agent" ] "dd-agent was removed from nixpkgs in favor of the newer datadog-agent.")
|
||||
(mkRemovedOptionModule [ "services" "dnscrypt-proxy" ] "Use services.dnscrypt-proxy2 instead")
|
||||
(mkRemovedOptionModule [ "services" "dnscrypt-wrapper" ] ''
|
||||
@ -82,6 +84,7 @@ in
|
||||
(mkRemovedOptionModule [ "services" "homeassistant-satellite"] "The `services.homeassistant-satellite` module has been replaced by `services.wyoming-satellite`.")
|
||||
(mkRemovedOptionModule [ "services" "hydron" ] "The `services.hydron` module has been removed as the project has been archived upstream since 2022 and is affected by a severe remote code execution vulnerability.")
|
||||
(mkRemovedOptionModule [ "services" "ihatemoney" ] "The ihatemoney module has been removed for lack of downstream maintainer")
|
||||
(mkRemovedOptionModule [ "services" "jira" ] "Atlassian software has been removed, as support for the Atlassian Server products ended in February 2024 and there was insufficient interest in maintaining the Atlassian Data Center replacements")
|
||||
(mkRemovedOptionModule [ "services" "kippo" ] "The corresponding package was removed from nixpkgs.")
|
||||
(mkRemovedOptionModule [ "services" "lshd" ] "The corresponding package was removed from nixpkgs as it had no maintainer in Nixpkgs and hasn't seen an upstream release in over a decades.")
|
||||
(mkRemovedOptionModule [ "services" "mailpile" ] "The corresponding package was removed from nixpkgs.")
|
||||
|
@ -1,224 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.confluence;
|
||||
|
||||
pkg = cfg.package.override (optionalAttrs cfg.sso.enable {
|
||||
enableSSO = cfg.sso.enable;
|
||||
});
|
||||
|
||||
crowdProperties = pkgs.writeText "crowd.properties" ''
|
||||
application.name ${cfg.sso.applicationName}
|
||||
application.password ${if cfg.sso.applicationPassword != null then cfg.sso.applicationPassword else "@NIXOS_CONFLUENCE_CROWD_SSO_PWD@"}
|
||||
application.login.url ${cfg.sso.crowd}/console/
|
||||
|
||||
crowd.server.url ${cfg.sso.crowd}/services/
|
||||
crowd.base.url ${cfg.sso.crowd}/
|
||||
|
||||
session.isauthenticated session.isauthenticated
|
||||
session.tokenkey session.tokenkey
|
||||
session.validationinterval ${toString cfg.sso.validationInterval}
|
||||
session.lastvalidation session.lastvalidation
|
||||
'';
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.confluence = {
|
||||
enable = mkEnableOption "Atlassian Confluence service";
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "confluence";
|
||||
description = "User which runs confluence.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "confluence";
|
||||
description = "Group which runs confluence.";
|
||||
};
|
||||
|
||||
home = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/confluence";
|
||||
description = "Home directory of the confluence instance.";
|
||||
};
|
||||
|
||||
listenAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = "Address to listen on.";
|
||||
};
|
||||
|
||||
listenPort = mkOption {
|
||||
type = types.port;
|
||||
default = 8090;
|
||||
description = "Port to listen on.";
|
||||
};
|
||||
|
||||
catalinaOptions = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = [ "-Xms1024m" "-Xmx2048m" "-Dconfluence.disable.peopledirectory.all=true" ];
|
||||
description = "Java options to pass to catalina/tomcat.";
|
||||
};
|
||||
|
||||
proxy = {
|
||||
enable = mkEnableOption "proxy support";
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
example = "confluence.example.com";
|
||||
description = "Virtual hostname at the proxy";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 443;
|
||||
example = 80;
|
||||
description = "Port used at the proxy";
|
||||
};
|
||||
|
||||
scheme = mkOption {
|
||||
type = types.str;
|
||||
default = "https";
|
||||
example = "http";
|
||||
description = "Protocol used at the proxy.";
|
||||
};
|
||||
};
|
||||
|
||||
sso = {
|
||||
enable = mkEnableOption "SSO with Atlassian Crowd";
|
||||
|
||||
crowd = mkOption {
|
||||
type = types.str;
|
||||
example = "http://localhost:8095/crowd";
|
||||
description = "Crowd Base URL without trailing slash";
|
||||
};
|
||||
|
||||
applicationName = mkOption {
|
||||
type = types.str;
|
||||
example = "jira";
|
||||
description = "Exact name of this Confluence instance in Crowd";
|
||||
};
|
||||
|
||||
applicationPassword = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Application password of this Confluence instance in Crowd";
|
||||
};
|
||||
|
||||
applicationPasswordFile = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Path to the application password for Crowd of Confluence.";
|
||||
};
|
||||
|
||||
validationInterval = mkOption {
|
||||
type = types.int;
|
||||
default = 2;
|
||||
example = 0;
|
||||
description = ''
|
||||
Set to 0, if you want authentication checks to occur on each
|
||||
request. Otherwise set to the number of minutes between request
|
||||
to validate if the user is logged in or out of the Crowd SSO
|
||||
server. Setting this value to 1 or higher will increase the
|
||||
performance of Crowd's integration.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
package = mkPackageOption pkgs "atlassian-confluence" { };
|
||||
|
||||
jrePackage = mkPackageOption pkgs "oraclejre8" {
|
||||
extraDescription = ''
|
||||
::: {.note }
|
||||
Atlassian only supports the Oracle JRE (JRASERVER-46152).
|
||||
:::
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
users.users.${cfg.user} = {
|
||||
isSystemUser = true;
|
||||
group = cfg.group;
|
||||
};
|
||||
|
||||
assertions = [
|
||||
{ assertion = cfg.sso.enable -> ((cfg.sso.applicationPassword == null) != (cfg.sso.applicationPasswordFile));
|
||||
message = "Please set either applicationPassword or applicationPasswordFile";
|
||||
}
|
||||
];
|
||||
|
||||
warnings = mkIf (cfg.sso.enable && cfg.sso.applicationPassword != null) [
|
||||
"Using `services.confluence.sso.applicationPassword` is deprecated! Use `applicationPasswordFile` instead!"
|
||||
];
|
||||
|
||||
users.groups.${cfg.group} = {};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.home}' - ${cfg.user} - - -"
|
||||
"d /run/confluence - - - - -"
|
||||
|
||||
"L+ /run/confluence/home - - - - ${cfg.home}"
|
||||
"L+ /run/confluence/logs - - - - ${cfg.home}/logs"
|
||||
"L+ /run/confluence/temp - - - - ${cfg.home}/temp"
|
||||
"L+ /run/confluence/work - - - - ${cfg.home}/work"
|
||||
"L+ /run/confluence/server.xml - - - - ${cfg.home}/server.xml"
|
||||
];
|
||||
|
||||
systemd.services.confluence = {
|
||||
description = "Atlassian Confluence";
|
||||
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = [ "postgresql.service" ];
|
||||
after = [ "postgresql.service" ];
|
||||
|
||||
path = [ cfg.jrePackage pkgs.bash ];
|
||||
|
||||
environment = {
|
||||
CONF_USER = cfg.user;
|
||||
JAVA_HOME = "${cfg.jrePackage}";
|
||||
CATALINA_OPTS = concatStringsSep " " cfg.catalinaOptions;
|
||||
JAVA_OPTS = mkIf cfg.sso.enable "-Dcrowd.properties=${cfg.home}/crowd.properties";
|
||||
};
|
||||
|
||||
preStart = ''
|
||||
mkdir -p ${cfg.home}/{logs,work,temp,deploy}
|
||||
|
||||
sed -e 's,port="8090",port="${toString cfg.listenPort}" address="${cfg.listenAddress}",' \
|
||||
'' + (lib.optionalString cfg.proxy.enable ''
|
||||
-e 's,protocol="org.apache.coyote.http11.Http11NioProtocol",protocol="org.apache.coyote.http11.Http11NioProtocol" proxyName="${cfg.proxy.name}" proxyPort="${toString cfg.proxy.port}" scheme="${cfg.proxy.scheme}",' \
|
||||
'') + ''
|
||||
${pkg}/conf/server.xml.dist > ${cfg.home}/server.xml
|
||||
|
||||
${optionalString cfg.sso.enable ''
|
||||
install -m660 ${crowdProperties} ${cfg.home}/crowd.properties
|
||||
${optionalString (cfg.sso.applicationPasswordFile != null) ''
|
||||
${pkgs.replace-secret}/bin/replace-secret \
|
||||
'@NIXOS_CONFLUENCE_CROWD_SSO_PWD@' \
|
||||
${cfg.sso.applicationPasswordFile} \
|
||||
${cfg.home}/crowd.properties
|
||||
''}
|
||||
''}
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
PrivateTmp = true;
|
||||
Restart = "on-failure";
|
||||
RestartSec = "10";
|
||||
ExecStart = "${pkg}/bin/start-confluence.sh -fg";
|
||||
ExecStop = "${pkg}/bin/stop-confluence.sh";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -1,193 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.crowd;
|
||||
|
||||
pkg = cfg.package.override {
|
||||
home = cfg.home;
|
||||
port = cfg.listenPort;
|
||||
openidPassword = cfg.openidPassword;
|
||||
} // (optionalAttrs cfg.proxy.enable {
|
||||
proxyUrl = "${cfg.proxy.scheme}://${cfg.proxy.name}:${toString cfg.proxy.port}";
|
||||
});
|
||||
|
||||
crowdPropertiesFile = pkgs.writeText "crowd.properties" ''
|
||||
application.name crowd-openid-server
|
||||
application.password @NIXOS_CROWD_OPENID_PW@
|
||||
application.base.url http://localhost:${toString cfg.listenPort}/openidserver
|
||||
application.login.url http://localhost:${toString cfg.listenPort}/openidserver
|
||||
application.login.url.template http://localhost:${toString cfg.listenPort}/openidserver?returnToUrl=''${RETURN_TO_URL}
|
||||
|
||||
crowd.server.url http://localhost:${toString cfg.listenPort}/crowd/services/
|
||||
|
||||
session.isauthenticated session.isauthenticated
|
||||
session.tokenkey session.tokenkey
|
||||
session.validationinterval 0
|
||||
session.lastvalidation session.lastvalidation
|
||||
'';
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.crowd = {
|
||||
enable = mkEnableOption "Atlassian Crowd service";
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "crowd";
|
||||
description = "User which runs Crowd.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "crowd";
|
||||
description = "Group which runs Crowd.";
|
||||
};
|
||||
|
||||
home = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/crowd";
|
||||
description = "Home directory of the Crowd instance.";
|
||||
};
|
||||
|
||||
listenAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = "Address to listen on.";
|
||||
};
|
||||
|
||||
listenPort = mkOption {
|
||||
type = types.port;
|
||||
default = 8092;
|
||||
description = "Port to listen on.";
|
||||
};
|
||||
|
||||
openidPassword = mkOption {
|
||||
type = types.str;
|
||||
default = "WILL_NEVER_BE_SET";
|
||||
description = "Application password for OpenID server.";
|
||||
};
|
||||
|
||||
openidPasswordFile = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Path to the file containing the application password for OpenID server.";
|
||||
};
|
||||
|
||||
catalinaOptions = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = [ "-Xms1024m" "-Xmx2048m" ];
|
||||
description = "Java options to pass to catalina/tomcat.";
|
||||
};
|
||||
|
||||
proxy = {
|
||||
enable = mkEnableOption "reverse proxy support";
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
example = "crowd.example.com";
|
||||
description = "Virtual hostname at the proxy";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 443;
|
||||
example = 80;
|
||||
description = "Port used at the proxy";
|
||||
};
|
||||
|
||||
scheme = mkOption {
|
||||
type = types.str;
|
||||
default = "https";
|
||||
example = "http";
|
||||
description = "Protocol used at the proxy.";
|
||||
};
|
||||
|
||||
secure = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Whether the connections to the proxy should be considered secure.";
|
||||
};
|
||||
};
|
||||
|
||||
package = mkPackageOption pkgs "atlassian-crowd" { };
|
||||
|
||||
jrePackage = mkPackageOption pkgs "oraclejre8" {
|
||||
extraDescription = ''
|
||||
::: {.note }
|
||||
Atlassian only supports the Oracle JRE (JRASERVER-46152).
|
||||
:::
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
users.users.${cfg.user} = {
|
||||
isSystemUser = true;
|
||||
group = cfg.group;
|
||||
};
|
||||
|
||||
users.groups.${cfg.group} = {};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.home}' - ${cfg.user} ${cfg.group} - -"
|
||||
"d /run/atlassian-crowd - - - - -"
|
||||
|
||||
"L+ /run/atlassian-crowd/database - - - - ${cfg.home}/database"
|
||||
"L+ /run/atlassian-crowd/logs - - - - ${cfg.home}/logs"
|
||||
"L+ /run/atlassian-crowd/work - - - - ${cfg.home}/work"
|
||||
"L+ /run/atlassian-crowd/server.xml - - - - ${cfg.home}/server.xml"
|
||||
];
|
||||
|
||||
systemd.services.atlassian-crowd = {
|
||||
description = "Atlassian Crowd";
|
||||
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = [ "postgresql.service" ];
|
||||
after = [ "postgresql.service" ];
|
||||
|
||||
path = [ cfg.jrePackage ];
|
||||
|
||||
environment = {
|
||||
JAVA_HOME = "${cfg.jrePackage}";
|
||||
CATALINA_OPTS = concatStringsSep " " cfg.catalinaOptions;
|
||||
CATALINA_TMPDIR = "/tmp";
|
||||
JAVA_OPTS = mkIf (cfg.openidPasswordFile != null) "-Dcrowd.properties=${cfg.home}/crowd.properties";
|
||||
};
|
||||
|
||||
preStart = ''
|
||||
rm -rf ${cfg.home}/work
|
||||
mkdir -p ${cfg.home}/{logs,database,work}
|
||||
|
||||
sed -e 's,port="8095",port="${toString cfg.listenPort}" address="${cfg.listenAddress}",' \
|
||||
'' + (lib.optionalString cfg.proxy.enable ''
|
||||
-e 's,compression="on",compression="off" protocol="HTTP/1.1" proxyName="${cfg.proxy.name}" proxyPort="${toString cfg.proxy.port}" scheme="${cfg.proxy.scheme}" secure="${boolToString cfg.proxy.secure}",' \
|
||||
'') + ''
|
||||
${pkg}/apache-tomcat/conf/server.xml.dist > ${cfg.home}/server.xml
|
||||
|
||||
${optionalString (cfg.openidPasswordFile != null) ''
|
||||
install -m660 ${crowdPropertiesFile} ${cfg.home}/crowd.properties
|
||||
${pkgs.replace-secret}/bin/replace-secret \
|
||||
'@NIXOS_CROWD_OPENID_PW@' \
|
||||
${cfg.openidPasswordFile} \
|
||||
${cfg.home}/crowd.properties
|
||||
''}
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
PrivateTmp = true;
|
||||
Restart = "on-failure";
|
||||
RestartSec = "10";
|
||||
ExecStart = "${pkg}/start_crowd.sh -fg";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -1,219 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.jira;
|
||||
|
||||
pkg = cfg.package.override (optionalAttrs cfg.sso.enable {
|
||||
enableSSO = cfg.sso.enable;
|
||||
});
|
||||
|
||||
crowdProperties = pkgs.writeText "crowd.properties" ''
|
||||
application.name ${cfg.sso.applicationName}
|
||||
application.password @NIXOS_JIRA_CROWD_SSO_PWD@
|
||||
application.login.url ${cfg.sso.crowd}/console/
|
||||
|
||||
crowd.server.url ${cfg.sso.crowd}/services/
|
||||
crowd.base.url ${cfg.sso.crowd}/
|
||||
|
||||
session.isauthenticated session.isauthenticated
|
||||
session.tokenkey session.tokenkey
|
||||
session.validationinterval ${toString cfg.sso.validationInterval}
|
||||
session.lastvalidation session.lastvalidation
|
||||
'';
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.jira = {
|
||||
enable = mkEnableOption "Atlassian JIRA service";
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "jira";
|
||||
description = "User which runs JIRA.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "jira";
|
||||
description = "Group which runs JIRA.";
|
||||
};
|
||||
|
||||
home = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/jira";
|
||||
description = "Home directory of the JIRA instance.";
|
||||
};
|
||||
|
||||
listenAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = "Address to listen on.";
|
||||
};
|
||||
|
||||
listenPort = mkOption {
|
||||
type = types.port;
|
||||
default = 8091;
|
||||
description = "Port to listen on.";
|
||||
};
|
||||
|
||||
catalinaOptions = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = [ "-Xms1024m" "-Xmx2048m" ];
|
||||
description = "Java options to pass to catalina/tomcat.";
|
||||
};
|
||||
|
||||
proxy = {
|
||||
enable = mkEnableOption "reverse proxy support";
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
example = "jira.example.com";
|
||||
description = "Virtual hostname at the proxy";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 443;
|
||||
example = 80;
|
||||
description = "Port used at the proxy";
|
||||
};
|
||||
|
||||
scheme = mkOption {
|
||||
type = types.str;
|
||||
default = "https";
|
||||
example = "http";
|
||||
description = "Protocol used at the proxy.";
|
||||
};
|
||||
|
||||
secure = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Whether the connections to the proxy should be considered secure.";
|
||||
};
|
||||
};
|
||||
|
||||
sso = {
|
||||
enable = mkEnableOption "SSO with Atlassian Crowd";
|
||||
|
||||
crowd = mkOption {
|
||||
type = types.str;
|
||||
example = "http://localhost:8095/crowd";
|
||||
description = "Crowd Base URL without trailing slash";
|
||||
};
|
||||
|
||||
applicationName = mkOption {
|
||||
type = types.str;
|
||||
example = "jira";
|
||||
description = "Exact name of this JIRA instance in Crowd";
|
||||
};
|
||||
|
||||
applicationPasswordFile = mkOption {
|
||||
type = types.str;
|
||||
description = "Path to the file containing the application password of this JIRA instance in Crowd";
|
||||
};
|
||||
|
||||
validationInterval = mkOption {
|
||||
type = types.int;
|
||||
default = 2;
|
||||
example = 0;
|
||||
description = ''
|
||||
Set to 0, if you want authentication checks to occur on each
|
||||
request. Otherwise set to the number of minutes between request
|
||||
to validate if the user is logged in or out of the Crowd SSO
|
||||
server. Setting this value to 1 or higher will increase the
|
||||
performance of Crowd's integration.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
package = mkPackageOption pkgs "atlassian-jira" { };
|
||||
|
||||
jrePackage = mkPackageOption pkgs "oraclejre8" {
|
||||
extraDescription = ''
|
||||
::: {.note }
|
||||
Atlassian only supports the Oracle JRE (JRASERVER-46152).
|
||||
:::
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
users.users.${cfg.user} = {
|
||||
isSystemUser = true;
|
||||
group = cfg.group;
|
||||
home = cfg.home;
|
||||
};
|
||||
|
||||
users.groups.${cfg.group} = {};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.home}' - ${cfg.user} - - -"
|
||||
"d /run/atlassian-jira - - - - -"
|
||||
|
||||
"L+ /run/atlassian-jira/home - - - - ${cfg.home}"
|
||||
"L+ /run/atlassian-jira/logs - - - - ${cfg.home}/logs"
|
||||
"L+ /run/atlassian-jira/work - - - - ${cfg.home}/work"
|
||||
"L+ /run/atlassian-jira/temp - - - - ${cfg.home}/temp"
|
||||
"L+ /run/atlassian-jira/server.xml - - - - ${cfg.home}/server.xml"
|
||||
];
|
||||
|
||||
systemd.services.atlassian-jira = {
|
||||
description = "Atlassian JIRA";
|
||||
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = [ "postgresql.service" ];
|
||||
after = [ "postgresql.service" ];
|
||||
|
||||
path = [ cfg.jrePackage pkgs.bash ];
|
||||
|
||||
environment = {
|
||||
JIRA_USER = cfg.user;
|
||||
JIRA_HOME = cfg.home;
|
||||
JAVA_HOME = "${cfg.jrePackage}";
|
||||
CATALINA_OPTS = concatStringsSep " " cfg.catalinaOptions;
|
||||
JAVA_OPTS = mkIf cfg.sso.enable "-Dcrowd.properties=${cfg.home}/crowd.properties";
|
||||
};
|
||||
|
||||
preStart = ''
|
||||
mkdir -p ${cfg.home}/{logs,work,temp,deploy}
|
||||
|
||||
sed -e 's,port="8080",port="${toString cfg.listenPort}" address="${cfg.listenAddress}",' \
|
||||
'' + (lib.optionalString cfg.proxy.enable ''
|
||||
-e 's,protocol="HTTP/1.1",protocol="HTTP/1.1" proxyName="${cfg.proxy.name}" proxyPort="${toString cfg.proxy.port}" scheme="${cfg.proxy.scheme}" secure="${toString cfg.proxy.secure}",' \
|
||||
'') + ''
|
||||
${pkg}/conf/server.xml.dist > ${cfg.home}/server.xml
|
||||
|
||||
${optionalString cfg.sso.enable ''
|
||||
install -m660 ${crowdProperties} ${cfg.home}/crowd.properties
|
||||
${pkgs.replace-secret}/bin/replace-secret \
|
||||
'@NIXOS_JIRA_CROWD_SSO_PWD@' \
|
||||
${cfg.sso.applicationPasswordFile} \
|
||||
${cfg.home}/crowd.properties
|
||||
''}
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
PrivateTmp = true;
|
||||
Restart = "on-failure";
|
||||
RestartSec = "10";
|
||||
ExecStart = "${pkg}/bin/start-jira.sh -fg";
|
||||
ExecStop = "${pkg}/bin/stop-jira.sh";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "jira" "sso" "applicationPassword" ] ''
|
||||
Use `applicationPasswordFile` instead!
|
||||
'')
|
||||
];
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
{ stdenvNoCC, lib, fetchurl, mysql_jdbc
|
||||
, withMysql ? true
|
||||
}:
|
||||
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "atlassian-bamboo";
|
||||
version = "9.6.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://product-downloads.atlassian.com/software/bamboo/downloads/atlassian-bamboo-${version}.tar.gz";
|
||||
hash = "sha256-Gd4+rH/40s9AvJi/waEVfVwWtT0H3bSlknNV6wxGpNg=";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
echo "bamboo.home=/run/bamboo/home" > atlassian-bamboo/WEB-INF/classes/bamboo-init.properties
|
||||
mv conf/server.xml conf/server.xml.dist
|
||||
ln -sf /run/atlassian-bamboo/server.xml conf/server.xml
|
||||
rm -r logs; ln -sf /run/atlassian-bamboo/logs/ .
|
||||
rm -r temp; ln -sf /run/atlassian-bamboo/temp/ .
|
||||
rm -r work; ln -sf /run/atlassian-bamboo/work/ .
|
||||
'' + lib.optionalString withMysql ''
|
||||
cp -v ${mysql_jdbc}/share/java/*jar atlassian-bamboo/lib/
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cp -rva . $out
|
||||
patchShebangs $out/bin
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Bamboo Data Center is a continuous delivery server";
|
||||
homepage = "https://www.atlassian.com/software/bamboo";
|
||||
sourceProvenance = with sourceTypes; [ binaryBytecode ];
|
||||
license = with licenses; [ unfree ];
|
||||
maintainers = with maintainers; [ techknowlogick ];
|
||||
};
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
{ stdenvNoCC, lib, fetchurl, mysql_jdbc ? null
|
||||
, enableSSO ? false
|
||||
, crowdProperties ? null
|
||||
, withMysql ? true
|
||||
}:
|
||||
|
||||
assert withMysql -> (mysql_jdbc != null);
|
||||
|
||||
lib.warnIf (crowdProperties != null) "Using `crowdProperties` is deprecated!"
|
||||
(stdenvNoCC.mkDerivation rec {
|
||||
pname = "atlassian-confluence";
|
||||
version = "9.0.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://product-downloads.atlassian.com/software/confluence/downloads/${pname}-${version}.tar.gz";
|
||||
hash = "sha256-WCshWmJaTfyjRLaXUtkDuXHO5eEhHa/rDCPVFSLd3aU=";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
echo "confluence.home=/run/confluence/home" > confluence/WEB-INF/classes/confluence-init.properties
|
||||
mv conf/server.xml conf/server.xml.dist
|
||||
ln -sf /run/confluence/home/deploy conf/Standalone
|
||||
ln -sf /run/confluence/server.xml conf/server.xml
|
||||
rm -r logs; ln -sf /run/confluence/logs/ .
|
||||
rm -r work; ln -sf /run/confluence/work/ .
|
||||
rm -r temp; ln -sf /run/confluence/temp/ .
|
||||
'' + lib.optionalString enableSSO ''
|
||||
substituteInPlace confluence/WEB-INF/classes/seraph-config.xml \
|
||||
--replace com.atlassian.confluence.user.ConfluenceAuthenticator\
|
||||
com.atlassian.confluence.user.ConfluenceCrowdSSOAuthenticator
|
||||
'' + lib.optionalString (crowdProperties != null) ''
|
||||
cat <<EOF > confluence/WEB-INF/classes/crowd.properties
|
||||
${crowdProperties}
|
||||
EOF
|
||||
'' + lib.optionalString withMysql ''
|
||||
cp -v ${mysql_jdbc}/share/java/*jar confluence/WEB-INF/lib/
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cp -rva . $out
|
||||
patchShebangs $out/bin
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Team collaboration software written in Java and mainly used in corporate environments";
|
||||
homepage = "https://www.atlassian.com/software/confluence";
|
||||
sourceProvenance = with sourceTypes; [ binaryBytecode ];
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ willibutz ciil techknowlogick ];
|
||||
};
|
||||
})
|
@ -1,50 +0,0 @@
|
||||
{ lib, stdenv, fetchurl, home ? "/var/lib/crowd"
|
||||
, port ? 8092, proxyUrl ? null, openidPassword ? "WILL_NEVER_BE_SET" }:
|
||||
|
||||
lib.warnIf (openidPassword != "WILL_NEVER_BE_SET") "Using `crowdProperties` is deprecated!"
|
||||
(stdenv.mkDerivation rec {
|
||||
pname = "atlassian-crowd";
|
||||
version = "5.0.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.atlassian.com/software/crowd/downloads/binary/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-ccXSNuiXP0+b9WObboikqVd0nKH0Fi2gMVEF3+WAx5M=";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
mv apache-tomcat/conf/server.xml apache-tomcat/conf/server.xml.dist
|
||||
ln -s /run/atlassian-crowd/server.xml apache-tomcat/conf/server.xml
|
||||
|
||||
rm -rf apache-tomcat/{logs,work}
|
||||
ln -s /run/atlassian-crowd/logs apache-tomcat/logs
|
||||
ln -s /run/atlassian-crowd/work apache-tomcat/work
|
||||
|
||||
ln -s /run/atlassian-crowd/database database
|
||||
|
||||
substituteInPlace apache-tomcat/bin/startup.sh --replace start run
|
||||
|
||||
echo "crowd.home=${home}" > crowd-webapp/WEB-INF/classes/crowd-init.properties
|
||||
substituteInPlace build.properties \
|
||||
--replace "openidserver.url=http://localhost:8095/openidserver" \
|
||||
"openidserver.url=http://localhost:${toString port}/openidserver"
|
||||
substituteInPlace crowd-openidserver-webapp/WEB-INF/classes/crowd.properties \
|
||||
--replace "http://localhost:8095/" \
|
||||
"http://localhost:${toString port}/"
|
||||
sed -r -i crowd-openidserver-webapp/WEB-INF/classes/crowd.properties \
|
||||
-e 's,application.password\s+password,application.password ${openidPassword},'
|
||||
'' + lib.optionalString (proxyUrl != null) ''
|
||||
sed -i crowd-openidserver-webapp/WEB-INF/classes/crowd.properties \
|
||||
-e 's,http://localhost:${toString port}/openidserver,${proxyUrl}/openidserver,'
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cp -rva . $out
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Single sign-on and identity management tool";
|
||||
homepage = "https://www.atlassian.com/software/crowd";
|
||||
license = licenses.unfree;
|
||||
maintainers = [ ];
|
||||
};
|
||||
})
|
@ -1,44 +0,0 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchurl
|
||||
, gawk
|
||||
, enableSSO ? false
|
||||
, makeWrapper
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "atlassian-jira";
|
||||
version = "9.17.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-${version}.tar.gz";
|
||||
hash = "sha256-hSwPVYIN1/BG6d8UepopLEMExjwDg/w/Bwj9k27nmDQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
buildPhase = ''
|
||||
mv conf/server.xml conf/server.xml.dist
|
||||
ln -sf /run/atlassian-jira/server.xml conf/server.xml
|
||||
rm -r logs; ln -sf /run/atlassian-jira/logs/ .
|
||||
rm -r work; ln -sf /run/atlassian-jira/work/ .
|
||||
rm -r temp; ln -sf /run/atlassian-jira/temp/ .
|
||||
substituteInPlace bin/check-java.sh \
|
||||
--replace "awk" "${gawk}/bin/gawk"
|
||||
'' + lib.optionalString enableSSO ''
|
||||
substituteInPlace atlassian-jira/WEB-INF/classes/seraph-config.xml \
|
||||
--replace com.atlassian.jira.security.login.JiraSeraphAuthenticator \
|
||||
com.atlassian.jira.security.login.SSOSeraphAuthenticator
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cp -rva . $out
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Proprietary issue tracking product, also providing project management functions";
|
||||
homepage = "https://www.atlassian.com/software/jira";
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ ciil megheaiulian techknowlogick ];
|
||||
};
|
||||
}
|
@ -115,6 +115,10 @@ mapAliases {
|
||||
aria = aria2; # Added 2024-03-26
|
||||
armcord = throw "ArmCord was renamed to legcord by the upstream developers. Action is required to migrate configurations between the two applications. Please see this PR for more details: https://github.com/NixOS/nixpkgs/pull/347971"; # Added 2024-10-11
|
||||
aseprite-unfree = aseprite; # Added 2023-08-26
|
||||
atlassian-bamboo = throw "Atlassian software has been removed, as support for the Atlassian Server products ended in February 2024 and there was insufficient interest in maintaining the Atlassian Data Center replacements"; # Added 2024-11-02
|
||||
atlassian-confluence = throw "Atlassian software has been removed, as support for the Atlassian Server products ended in February 2024 and there was insufficient interest in maintaining the Atlassian Data Center replacements"; # Added 2024-11-02
|
||||
atlassian-crowd = throw "Atlassian software has been removed, as support for the Atlassian Server products ended in February 2024 and there was insufficient interest in maintaining the Atlassian Data Center replacements"; # Added 2024-11-02
|
||||
atlassian-jira = throw "Atlassian software has been removed, as support for the Atlassian Server products ended in February 2024 and there was insufficient interest in maintaining the Atlassian Data Center replacements"; # Added 2024-11-02
|
||||
audaciousQt5 = throw "'audaciousQt5' has been removed, since audacious is built with Qt 6 now"; # Added 2024-07-06
|
||||
auditBlasHook = throw "'auditBlasHook' has been removed since it never worked"; # Added 2024-04-02
|
||||
aumix = throw "'aumix' has been removed due to lack of maintenance upstream. Consider using 'pamixer' for CLI or 'pavucontrol' for GUI"; # Added 2024-09-14
|
||||
|
@ -23969,11 +23969,6 @@ with pkgs;
|
||||
|
||||
appdaemon = callPackage ../servers/home-assistant/appdaemon.nix { };
|
||||
|
||||
atlassian-bamboo = callPackage ../servers/atlassian/bamboo.nix { };
|
||||
atlassian-confluence = callPackage ../servers/atlassian/confluence.nix { };
|
||||
atlassian-crowd = callPackage ../servers/atlassian/crowd.nix { };
|
||||
atlassian-jira = callPackage ../servers/atlassian/jira.nix { };
|
||||
|
||||
cadvisor = callPackage ../servers/monitoring/cadvisor { };
|
||||
|
||||
cassandra_3_0 = callPackage ../servers/nosql/cassandra/3.0.nix {
|
||||
|
Loading…
Reference in New Issue
Block a user