1 { env, fetchedGithub, stdenv, defaultGemConfig, writeText, bundlerEnv, ruby_2_4, pkgs, cacert }:
3 varDir = "/var/lib/diaspora_immae";
4 socketsDir = "/run/diaspora";
5 diaspora = stdenv.mkDerivation (fetchedGithub ./diaspora.json // rec {
7 patch -p1 < ${./ldap.patch}
8 # FIXME: bundlerEnv below doesn't take postgresql group for some
10 echo 'gem "pg", "1.1.3"' >> Gemfile
17 name = "diaspora-env";
19 gemfile = "${diaspora}/Gemfile";
20 lockfile = "${diaspora}/Gemfile.lock";
21 gemset = ./gemset.nix;
22 groups = [ "postgresql" "default" "production" ];
23 gemConfig = defaultGemConfig // {
24 kostya-sigar = attrs: {
25 buildInputs = [ pkgs.perl ];
29 secret_token = writeText "secret_token.rb" ''
30 Diaspora::Application.config.secret_key_base = '${env.secret_token}'
32 config = writeText "diaspora.yml" ''
35 url: "https://diaspora.immae.eu/"
36 certificate_authorities: '${cacert}/etc/ssl/certs/ca-bundle.crt'
37 redis: '${env.redis_url}'
45 listen: '${socketsDir}/diaspora.sock'
46 rails_environment: 'production'
58 enable_registrations: false
77 sender_address: 'diaspora@immae.eu'
81 location: '/run/wrappers/bin/sendmail'
84 podmin_email: 'diaspora@immae.eu'
94 skip_email_confirmation: true
96 bind_dn: "cn=diaspora,ou=services,dc=immae,dc=eu"
97 bind_pw: "${env.ldap.password}"
98 search_base: "dc=immae,dc=eu"
99 search_filter: "(&(memberOf=cn=users,cn=diaspora,ou=services,dc=immae,dc=eu)(uid=%{username}))"
105 database_config = writeText "database.yml" ''
106 postgresql: &postgresql
108 host: "${env.postgresql.socket}"
109 port: "${env.postgresql.port}"
110 username: "${env.postgresql.user}"
111 password: "${env.postgresql.password}"
119 database: diaspora_development
122 database: ${env.postgresql.database}
125 database: "diaspora_test"
128 database: diaspora_integration1
131 database: diaspora_integration2
134 railsRoot = stdenv.mkDerivation {
135 name = "diaspora_immae";
137 builder = writeText "build_diaspora_immae" ''
142 tar -czf public/source.tar.gz ./{app,db,lib,script,Gemfile,Gemfile.lock,Rakefile,config.ru}
143 ln -s ${database_config} config/database.yml
144 ln -s ${config} config/diaspora.yml
145 ln -s ${secret_token} config/initializers/secret_token.rb
146 ln -sf ${varDir}/schedule.yml config/schedule.yml
147 ln -sf ${varDir}/oidc_key.pem config/oidc_key.pem
148 ln -sf ${varDir}/uploads public/uploads
149 RAILS_ENV=production ${gems}/bin/rake assets:precompile
151 ln -sf ${varDir}/tmp tmp
152 ln -sf ${varDir}/log log
154 propagatedBuildInputs = [ gems pkgs.nodejs pkgs.which pkgs.git ];
158 inherit railsRoot varDir socketsDir gems;
159 railsSocket = "${socketsDir}/diaspora.sock";