-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Expand file tree
/
Copy pathdevenv.nix
More file actions
100 lines (93 loc) · 2.28 KB
/
devenv.nix
File metadata and controls
100 lines (93 loc) · 2.28 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
{ pkgs, lib, config, inputs, ... }:
let
# Access packages from the argo-flake input
argoFlakePackages = inputs.argo-flake.packages.${pkgs.system};
argoConfig = import ./dev/nix/conf.nix;
mkEnvSerialize = (envKey: envValue: "export ${envKey}=${envValue};");
mkEnv = (envAttrs:
lib.concatStrings
(lib.mapAttrsToList
mkEnvSerialize
envAttrs)
);
mkExec = (execName: envAttrs: execArgs:
"${mkEnv envAttrs}${execName} ${execArgs}"
);
controllerCmd = mkExec "./dist/workflow-controller" argoConfig.controller.env argoConfig.controller.args;
argoServerCmd = mkExec "./argo" argoConfig.argoServer.env argoConfig.argoServer.args;
uiCmd = mkExec "yarn" argoConfig.ui.env argoConfig.ui.args;
in
{
# Import packages from nixpkgs and the argo flake
packages = with pkgs; [
go
nodejs_20
yarn
jq
protobuf
diffutils
argoFlakePackages.kubeauto # Import kubeauto from the argo flake
argoFlakePackages.mockery
argoFlakePackages.protoc-gen-gogo-all
argoFlakePackages.grpc-ecosystem
argoFlakePackages.go-swagger
argoFlakePackages.controller-tools
argoFlakePackages.k8sio-tools
argoFlakePackages.goreman
argoFlakePackages.stern
];
# Set up environment
env = argoConfig.env;
# Define processes with dependencies
processes = {
kubeauto = {
exec = "kubeauto";
};
workflow-controller = {
exec = controllerCmd;
};
argo-server = {
exec = argoServerCmd;
};
ui = {
exec = uiCmd;
};
};
# Configure process dependencies
process.managers.process-compose.settings = {
processes = {
workflow-controller = {
depends_on = {
kubeauto = {
condition = "process_started";
};
};
};
argo-server = {
depends_on = {
kubeauto = {
condition = "process_started";
};
};
};
ui = {
depends_on = {
kubeauto = {
condition = "process_started";
};
};
};
};
};
enterShell = ''
unset GOPATH;
unset GOROOT;
./hack/free-port.sh 9090;
./hack/free-port.sh 2746;
./hack/free-port.sh 8080;
yarn --cwd ui install;
sleep 5;
clear;
make install PROFILE=minimal
'';
}