about summary refs log tree commit diff
path: root/nix/hosts/corrino/www/cs.emile.space.nix
blob: 4f1b91e2994520f52744fb7c7a13dbf3a89bb2ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{ config, lib, ... }:

let

	# get's all repos configured in cgit and converts them into some JSON that is used by hound
	repos = builtins.toJSON
		(lib.mergeAttrsList
			(map
				(x: {"${x.name}" = { url = "file://${x.path}"; }; })
				(lib.mapAttrsToList
					(name: value: value // { name = "${name}"; })
					config.services.cgit.main.repos)));
in {
	services.nginx.virtualHosts."cs.emile.space" = {
		forceSSL = true;
		enableACME = true;
		locations = {
			"/" = {
        proxyPass = "http://${config.services.hound.listen}";
			};
		};
	};

	# add hound user to git group so the local repos can be read
  # users.users.hound.extraGroups = [ "git" ];

	users.groups."git".members = [ "hound" ];

	# The `.gitignore` of the user `hound` should contain the following:
	#
	# [safe]
  #       directory = /var/lib/git/repositories/*
  #       directory = /var/lib/git/repositories/faila.git
  #       directory = /var/lib/git/repositories/faila2.git

	services.hound = {
		enable = true;

		config = ''
			{
			  "dbpath": "/var/lib/hound/data",
			  "max-concurrent-indexers" : 6,
		    "vcs-config" : {
	        "git" : {
            "detect-ref" : true
	        }
		    },
			  "repos" : ${repos}
			}
		'';

		listen = "127.0.0.1:${toString config.emile.ports.hound}";
	};
}