forked from DeterminateSystems/nix-github-actions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdevenv.nix
69 lines (50 loc) · 1.48 KB
/
devenv.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
66
67
68
69
{ pkgs, ... }:
{
# https://devenv.sh/basics/
env.GREET = "devenv";
# add pre-commit hooks
pre-commit.hooks = {
# lint shell scripts
shellcheck.enable = true;
# execute example shell from Markdown files
mdsh.enable = true;
# format Python code
black.enable = true;
};
# add processes as entrypoint in container
name = "myapp";
packages = [ pkgs.procps ];
processes.hello-docker.exec = "while true; do echo 'Hello Docker!' && sleep 1; done";
processes.hello-nix.exec = "while true; do echo 'Hello Nix!' && sleep 1; done";
# Exclude the source repo to make the container smaller.
containers."processes".copyToRoot = null;
# add services
services.postgres = {
enable = true;
package = pkgs.postgresql_15;
initialDatabases = [{ name = "mydb"; }];
extensions = extensions: [
extensions.postgis
extensions.timescaledb
];
settings.shared_preload_libraries = "timescaledb";
initialScript = "CREATE EXTENSION IF NOT EXISTS timescaledb;";
};
# add processes
processes = {
silly-example.exec = "while true; do echo hello && sleep 1; done";
ping.exec = "ping google.com";
};
# define languages
languages.python.enable = true;
languages.python.version = "3.8";
languages.rust.enable = true;
languages.rust.channel = "stable";
# define script and enter into shell
scripts.hello.exec = "echo hello from $GREET";
enterShell = ''
hello
rustc --version
python3.8 --version
'';
}