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";
18 # https://git.immae.eu/mantisbt/view.php?id=131
19 ruby = ruby_2_4.overrideAttrs(old: {
20 postInstall = builtins.replaceStrings [" --destdir $GEM_HOME"] [""] old.postInstall;
22 gemfile = "${diaspora}/Gemfile";
23 lockfile = "${diaspora}/Gemfile.lock";
24 gemset = ./gemset.nix;
25 groups = [ "postgresql" "default" "production" ];
26 gemConfig = defaultGemConfig // {
27 kostya-sigar = attrs: {
28 buildInputs = [ pkgs.perl ];
32 secret_token = writeText "secret_token.rb" ''
33 Diaspora::Application.config.secret_key_base = '${env.secret_token}'
35 config = writeText "diaspora.yml" ''
38 url: "https://diaspora.immae.eu/"
39 certificate_authorities: '${cacert}/etc/ssl/certs/ca-bundle.crt'
40 redis: '${env.redis_url}'
48 listen: '${socketsDir}/diaspora.sock'
49 rails_environment: 'production'
61 enable_registrations: false
80 sender_address: 'diaspora@tools.immae.eu'
84 location: '/run/wrappers/bin/sendmail'
87 podmin_email: 'diaspora@tools.immae.eu'
97 skip_email_confirmation: true
99 bind_dn: "cn=diaspora,ou=services,dc=immae,dc=eu"
100 bind_pw: "${env.ldap.password}"
101 search_base: "dc=immae,dc=eu"
102 search_filter: "(&(memberOf=cn=users,cn=diaspora,ou=services,dc=immae,dc=eu)(uid=%{username}))"
108 database_config = writeText "database.yml" ''
109 postgresql: &postgresql
111 host: "${env.postgresql.socket}"
112 port: "${env.postgresql.port}"
113 username: "${env.postgresql.user}"
114 password: "${env.postgresql.password}"
122 database: diaspora_development
125 database: ${env.postgresql.database}
128 database: "diaspora_test"
131 database: diaspora_integration1
134 database: diaspora_integration2
137 railsRoot = stdenv.mkDerivation {
138 name = "diaspora_immae";
140 builder = writeText "build_diaspora_immae" ''
145 tar -czf public/source.tar.gz ./{app,db,lib,script,Gemfile,Gemfile.lock,Rakefile,config.ru}
146 ln -s ${database_config} config/database.yml
147 ln -s ${config} config/diaspora.yml
148 ln -s ${secret_token} config/initializers/secret_token.rb
149 ln -sf ${varDir}/schedule.yml config/schedule.yml
150 ln -sf ${varDir}/oidc_key.pem config/oidc_key.pem
151 ln -sf ${varDir}/uploads public/uploads
152 RAILS_ENV=production ${gems}/bin/rake assets:precompile
154 ln -sf ${varDir}/tmp tmp
155 ln -sf ${varDir}/log log
157 propagatedBuildInputs = [ gems pkgs.nodejs pkgs.which pkgs.git ];
161 inherit railsRoot varDir socketsDir gems;
162 railsSocket = "${socketsDir}/diaspora.sock";