diff --git a/modules/programs/sbt.nix b/modules/programs/sbt.nix index 22a32fe28..3e8dbc102 100644 --- a/modules/programs/sbt.nix +++ b/modules/programs/sbt.nix @@ -8,13 +8,16 @@ let addSbtPlugin("${plugin.org}" % "${plugin.artifact}" % "${plugin.version}") ''; - renderCredential = cred: '' - credentials += Credentials("${cred.realm}", "${cred.host}", "${cred.user}", "${cred.passwordCommand}".!!.trim) - ''; + renderCredential = idx: cred: + let symbol = "credential_${toString idx}"; + in '' + lazy val ${symbol} = "${cred.passwordCommand}".!!.trim + credentials += Credentials("${cred.realm}", "${cred.host}", "${cred.user}", ${symbol}) + ''; renderCredentials = creds: '' import scala.sys.process._ - ${concatStrings (map renderCredential creds)}''; + ${concatStrings (imap0 renderCredential creds)}''; renderRepository = value: if isString value then '' diff --git a/tests/modules/programs/sbt/credentials.nix b/tests/modules/programs/sbt/credentials.nix index 55c3936a1..1a79582ab 100644 --- a/tests/modules/programs/sbt/credentials.nix +++ b/tests/modules/programs/sbt/credentials.nix @@ -19,8 +19,10 @@ let ]; expectedCredentialsSbt = pkgs.writeText "credentials.sbt" '' import scala.sys.process._ - credentials += Credentials("Sonatype Nexus Repository Manager", "example.com", "user", "echo password".!!.trim) - credentials += Credentials("Sonatype Nexus Repository Manager X", "v2.example.com", "user1", "echo password1".!!.trim) + lazy val credential_0 = "echo password".!!.trim + credentials += Credentials("Sonatype Nexus Repository Manager", "example.com", "user", credential_0) + lazy val credential_1 = "echo password1".!!.trim + credentials += Credentials("Sonatype Nexus Repository Manager X", "v2.example.com", "user1", credential_1) ''; credentialsSbtPath = ".sbt/1.0/credentials.sbt"; in {