1 { lib, pkgs, config, myconfig, mylibs, ... }:
3 diaspora = pkgs.callPackage ./diaspora.nix {
4 inherit (mylibs) fetchedGithub;
5 env = myconfig.env.tools.diaspora;
8 root = "/run/current-system/webapps/tools_diaspora";
9 cfg = config.services.myWebsites.tools.diaspora;
11 options.services.myWebsites.tools.diaspora = {
12 enable = lib.mkEnableOption "enable diaspora's website";
15 config = lib.mkIf cfg.enable {
16 ids.uids.diaspora = myconfig.env.tools.diaspora.user.uid;
17 ids.gids.diaspora = myconfig.env.tools.diaspora.user.gid;
19 users.users.diaspora = {
21 uid = config.ids.uids.diaspora;
23 description = "Diaspora user";
24 home = diaspora.varDir;
25 useDefaultShell = true;
26 packages = [ diaspora.gems pkgs.nodejs diaspora.gems.ruby ];
29 users.groups.diaspora.gid = config.ids.gids.diaspora;
31 systemd.services.diaspora = {
32 description = "Diaspora";
33 wantedBy = [ "multi-user.target" ];
34 after = [ "network.target" "redis.service" "postgresql.service" ];
35 wants = [ "redis.service" "postgresql.service" ];
37 environment.RAILS_ENV = "production";
38 environment.BUNDLE_PATH = "${diaspora.gems}/${diaspora.gems.ruby.gemPath}";
39 environment.BUNDLE_GEMFILE = "${diaspora.gems.confFiles}/Gemfile";
40 environment.EYE_SOCK = "${diaspora.socketsDir}/eye.sock";
41 environment.EYE_PID = "${diaspora.socketsDir}/eye.pid";
43 path = [ diaspora.gems pkgs.nodejs diaspora.gems.ruby pkgs.curl pkgs.which pkgs.gawk ];
46 ./bin/bundle exec rails db:migrate
50 exec ${diaspora.railsRoot}/script/server
58 WorkingDirectory = diaspora.railsRoot;
59 StandardInput = "null";
60 KillMode = "control-group";
63 unitConfig.RequiresMountsFor = diaspora.varDir;
66 system.activationScripts.diaspora = {
69 install -m 0755 -o diaspora -g diaspora -d ${diaspora.socketsDir}
70 install -m 0755 -o diaspora -g diaspora -d ${diaspora.varDir} \
71 ${diaspora.varDir}/uploads ${diaspora.varDir}/tmp \
72 ${diaspora.varDir}/log
73 install -m 0700 -o diaspora -g diaspora -d ${diaspora.varDir}/tmp/pids
74 if [ ! -f ${diaspora.varDir}/schedule.yml ]; then
75 echo "{}" | $wrapperDir/sudo -u diaspora tee ${diaspora.varDir}/schedule.yml
80 services.myWebsites.tools.modules = [
81 "headers" "proxy" "proxy_http"
83 security.acme.certs."eldiron".extraDomains."diaspora.immae.eu" = null;
84 system.extraSystemBuilderCmds = ''
86 ln -s ${diaspora.railsRoot}/public/ $out/webapps/tools_diaspora
88 services.myWebsites.tools.vhostConfs.diaspora = {
90 hosts = [ "diaspora.immae.eu" ];
94 RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
95 RewriteRule ^/(.*)$ unix://${diaspora.railsSocket}|http://diaspora.immae.eu/%{REQUEST_URI} [P,NE,QSA,L]
100 RequestHeader set X_FORWARDED_PROTO https