{ ldap ? false, varDir ? "/var/lib/diaspora", podmin_email ? null, config_dir ? "/etc/diaspora", mylibs, stdenv, bundlerEnv, writeText, cacert, defaultGemConfig, perl, ruby_2_4, nodejs, which, git }: let diaspora_src = stdenv.mkDerivation (mylibs.fetchedGithub ./diaspora.json // rec { buildPhase = '' ${if ldap then "patch -p1 < ${./ldap.patch}" else ""} # FIXME: bundlerEnv below doesn't take postgresql group for some # reason echo 'gem "pg", "1.1.3"' >> Gemfile ''; installPhase = '' cp -a . $out ''; }); gems = bundlerEnv { name = "diaspora-env"; # https://git.immae.eu/mantisbt/view.php?id=131 ruby = ruby_2_4.overrideAttrs(old: { postInstall = builtins.replaceStrings [" --destdir $GEM_HOME"] [""] old.postInstall; }); gemfile = "${diaspora_src}/Gemfile"; lockfile = "${diaspora_src}/Gemfile.lock"; gemset = if ldap then ./gemset_ldap.nix else ./gemset.nix; groups = [ "postgresql" "default" "production" ]; gemConfig = defaultGemConfig // { kostya-sigar = attrs: { buildInputs = [ perl ]; }; }; }; build_config = writeText "diaspora.yml" '' configuration: environment: certificate_authorities: '${cacert}/etc/ssl/certs/ca-bundle.crt' ${if podmin_email != null then '' # dummy comment for indentation admins: podmin_email: '${podmin_email}' '' else ""} production: environment: ''; dummy_token = writeText "secret_token.rb" '' Diaspora::Application.config.secret_key_base = 'dummy' ''; in stdenv.mkDerivation { name = "diaspora"; inherit diaspora_src; builder = writeText "build_diaspora" '' source $stdenv/setup cp -a $diaspora_src $out cd $out chmod -R u+rwX . tar -czf public/source.tar.gz ./{app,db,lib,script,Gemfile,Gemfile.lock,Rakefile,config.ru} ln -s database.yml.example config/database.yml ln -s ${build_config} config/diaspora.yml ln -s ${dummy_token} config/initializers/secret_token.rb ln -sf ${varDir}/schedule.yml config/schedule.yml ln -sf ${varDir}/oidc_key.pem config/oidc_key.pem ln -sf ${varDir}/uploads public/uploads RAILS_ENV=production ${gems}/bin/rake assets:precompile ln -sf ${config_dir}/database.yml config/database.yml ln -sf ${config_dir}/diaspora.yml config/diaspora.yml ln -sf ${config_dir}/secret_token.rb config/initializers/secret_token.rb rm -rf tmp log ln -sf ${varDir}/tmp tmp ln -sf ${varDir}/log log ''; propagatedBuildInputs = [ gems nodejs which git ]; passthru = { inherit gems varDir; }; }