{ stdenv, nix, perlPackages, buildEnv , makeWrapper, autoconf, automake, libtool, unzip, pkg-config, sqlite, libpqxx_6 , top-git, mercurial, darcs, subversion, breezy, openssl, bzip2, libxslt , perl, postgresql, nukeReferences, git, boehmgc, nlohmann_json , docbook_xsl, openssh, gnused, coreutils, findutils, gzip, xz, gnutar , rpm, dpkg, cdrkit, pixz, lib, boost, autoreconfHook, src ? null, version ? null , migration ? false, patches ? [] , tests ? {}, mdbook }: with stdenv; if lib.versions.major nix.version == "1" then throw "This Hydra version doesn't support Nix 1.x" else let perlDeps = buildEnv { name = "hydra-perl-deps"; paths = with perlPackages; lib.closePropagation [ ModulePluggable CatalystActionREST CatalystAuthenticationStoreDBIxClass CatalystDevel CatalystDispatchTypeRegex CatalystPluginAccessLog CatalystPluginAuthorizationRoles CatalystPluginCaptcha CatalystPluginPrometheusTiny CatalystPluginSessionStateCookie CatalystPluginSessionStoreFastMmap CatalystPluginSmartURI CatalystPluginStackTrace CatalystRuntime CatalystTraitForRequestProxyBase CatalystViewDownload CatalystViewJSON CatalystViewTT CatalystXScriptServerStarman CatalystXRoleApplicator CryptPassphrase CryptPassphraseArgon2 CryptRandPasswd DBDPg DBDSQLite DataDump DateTime DigestSHA1 EmailMIME EmailSender FileSlurp IOCompress IPCRun JSON JSONAny JSONXS LWP LWPProtocolHttps NetAmazonS3 NetPrometheus NetStatsd PadWalker PrometheusTinyShared Readonly SQLSplitStatement SetScalar Starman StringCompareConstantTime SysHostnameLong TermSizeAny TextDiff TextTable XMLSimple YAML nix nix.perl-bindings git boehmgc ]; }; in stdenv.mkDerivation rec { pname = "hydra"; inherit stdenv src version patches; buildInputs = [ makeWrapper autoconf automake libtool unzip nukeReferences sqlite libpqxx_6 top-git mercurial /*darcs*/ subversion breezy openssl bzip2 libxslt perlDeps perl nix postgresql # for running the tests nlohmann_json boost ]; hydraPath = lib.makeBinPath ( [ sqlite subversion openssh nix coreutils findutils pixz gzip bzip2 xz gnutar unzip git top-git mercurial /*darcs*/ gnused breezy ] ++ lib.optionals stdenv.isLinux [ rpm dpkg cdrkit ] ); nativeBuildInputs = [ autoreconfHook pkg-config mdbook ]; configureFlags = [ "--with-docbook-xsl=${docbook_xsl}/xml/xsl/docbook" ]; NIX_CFLAGS_COMPILE = "-pthread"; shellHook = '' PATH=$(pwd)/src/script:$(pwd)/src/hydra-eval-jobs:$(pwd)/src/hydra-queue-runner:$(pwd)/src/hydra-evaluator:$PATH PERL5LIB=$(pwd)/src/lib:$PERL5LIB; ''; enableParallelBuilding = true; preCheck = '' patchShebangs . export LOGNAME=''${LOGNAME:-foo} ''; postInstall = '' mkdir -p $out/nix-support for i in $out/bin/*; do read -n 4 chars < $i if [[ $chars =~ ELF ]]; then continue; fi wrapProgram $i \ --prefix PERL5LIB ':' $out/libexec/hydra/lib:$PERL5LIB \ --prefix PATH ':' $out/bin:$hydraPath \ --set HYDRA_RELEASE ${version} \ --set HYDRA_HOME $out/libexec/hydra \ --set NIX_RELEASE ${nix.name or "unknown"} done ''; # */ dontStrip = true; passthru = { inherit perlDeps migration tests; }; meta = with lib; { description = "Nix-based continuous build system"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ ]; }; }