-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdodona.nix
65 lines (65 loc) · 1.68 KB
/
dodona.nix
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
55
56
57
58
59
60
61
62
63
64
65
{ pkgs, inputs, ... }:
let
support-services = {
memcached.command = "memcached";
mysql.command = "mysql";
worker.command = "rails jobs:work";
css.command = "yarn build:css --watch";
js.command = "yarn build:js --watch";
};
all-services = support-services // {
rails = {
name = "server";
command = "rails s -p 3000";
};
};
in
pkgs.devshell.mkShell {
name = "Dodona";
imports = [ "${inputs.devshell}/extra/language/ruby.nix" ];
packages = with pkgs; [
chromedriver
ungoogled-chromium
nodejs
nodePackages.typescript-language-server
yarn
];
env = [
{ name = "DATABASE_URL"; value = "trilogy://root:dodona@127.0.0.1:3306/dodona"; }
{ name = "TEST_DATABASE_URL"; value = "trilogy://root:dodona@127.0.0.1:3306/dodona_test"; }
];
commands = [
{
name = "refresh-deps";
category = "general commands";
help = "Install dependencies";
command = ''
yarn install
bundle install
bundle pristine
'';
}
{
name = "memcached";
category = "general commands";
help = "Start caching server";
package = pkgs.memcached;
}
{
name = "mysql";
category = "general commands";
help = "Start mysql (in docker container)";
command = ''
docker run --name dodona-db -p 3306:3306 --rm -v dodona-db-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=dodona mariadb:latest
'';
}
];
serviceGroups = {
server.services = all-services;
server-support.services = support-services;
};
language.ruby = {
package = pkgs.ruby_3_3;
nativeDeps = [ pkgs.libmysqlclient pkgs.openssl pkgs.zlib pkgs.libffi pkgs.libyaml ];
};
}