1 { env, fetchedGithub, stdenv, defaultGemConfig, writeText, bundlerEnv, ruby_2_4, pkgs, cacert }:
7 gemConfig = defaultGemConfig // {
8 kostya-sigar = attrs: {
9 buildInputs = with pkgs; [ pkgs.perl ];
13 varDir = "/var/lib/diaspora_immae";
14 socketsDir = "/run/diaspora";
15 buildInputs = [ gems ] ++ (with pkgs; [
16 git redis imagemagick libxslt nodejs
17 jemalloc cacert ruby_2_4
18 openssl postgresql curl libnghttp2
21 diaspora = stdenv.mkDerivation (fetchedGithub ./diaspora.json // rec {
23 export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
24 export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
26 patch -p1 < ${./ldap.patch}
31 propagatedBuildInputs = buildInputs;
33 secret_token = writeText "secret_token.rb" ''
34 Diaspora::Application.config.secret_key_base = '${env.secret_token}'
36 config = writeText "diaspora.yml" ''
39 url: "https://diaspora.immae.eu/"
40 certificate_authorities: '/etc/ssl/certs/ca-certificates.crt'
41 redis: 'redis://localhost:6379/15'
49 listen: '${socketsDir}/diaspora.sock'
50 rails_environment: 'production'
62 enable_registrations: false
81 sender_address: 'diaspora@immae.eu'
88 podmin_email: 'diaspora@immae.eu'
98 skip_email_confirmation: true
100 bind_dn: "cn=diaspora,ou=services,dc=immae,dc=eu"
101 bind_pw: "${env.ldap.password}"
102 search_base: "dc=immae,dc=eu"
103 search_filter: "(&(memberOf=cn=users,cn=diaspora,ou=services,dc=immae,dc=eu)(uid=%{username}))"
109 database_config = writeText "database.yml" ''
110 postgresql: &postgresql
115 password: "${env.postgresql.password}"
123 database: diaspora_development
129 database: "diaspora_test"
132 database: diaspora_integration1
135 database: diaspora_integration2
138 railsRoot = stdenv.mkDerivation {
139 name = "diaspora_immae";
141 builder = writeText "build_diaspora_immae" ''
146 tar -czf public/source.tar.gz ./{app,db,lib,script,Gemfile,Gemfile.lock,Rakefile,config.ru}
147 ln -s ${database_config} config/database.yml
148 ln -s ${config} config/diaspora.yml
149 ln -s ${secret_token} config/initializers/secret_token.rb
150 ln -sf ../../../../../../${varDir}/schedule.yml config/schedule.yml
151 ln -sf ../../../../../../${varDir}/oidc_key.pem config/oidc_key.pem
152 ln -sf ../../../../../../${varDir}/uploads public/uploads
153 RAILS_ENV=production ${gems}/bin/rake assets:precompile
155 ln -sf ../../../../../${varDir}/tmp tmp
156 ln -sf ../../../../../${varDir}/log log
158 propagatedBuildInputs = buildInputs;
162 inherit railsRoot varDir socketsDir gems;
163 railsSocket = "${socketsDir}/diaspora.sock";