-
Notifications
You must be signed in to change notification settings - Fork 0
/
devShell.nix
152 lines (141 loc) · 3.17 KB
/
devShell.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
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
{ pkgs, system, ... }:
let
inherit (pkgs) writeScriptBin mkShell;
# Build images
build = writeScriptBin "build" ''
set -eu
image=$1
nix build --out-link "./images/$image" .#$image
# add image to cache
git add -Nf images/$image
'';
build-qcow = writeScriptBin "build-qcow" ''
build qcow
'';
build-gce = writeScriptBin "build-gce" ''
build gce
'';
build-azure = writeScriptBin "build-azure" ''
build azure
'';
# Apply using terraform
apply = writeScriptBin "apply" ''
env=''${1:-libvirt}
# defaults to libvirt
nix run .#apply-$env
'';
apply-libvirt = writeScriptBin "apply-libvirt" ''
apply libvirt
'';
apply-gcp = writeScriptBin "apply-gcp" ''
apply gcp
'';
apply-azure = writeScriptBin "apply-azure" ''
apply azure
'';
# Destroy using terraform
destroy = writeScriptBin "destroy" ''
env=''${1:-libvirt}
# defaults to libvirt
nix run .#destroy-$env
'';
destroy-libvirt = writeScriptBin "destroy-libvirt" ''
destroy libvirt
'';
destroy-gcp = writeScriptBin "destroy-gcp" ''
destroy gcp
'';
destroy-azure = writeScriptBin "destroy-azure" ''
destroy azure
'';
# Deploy nix using colmena
deploy = writeScriptBin "deploy" ''
env=''${1:-libvirt}
nix run .#deploy-$env
'';
deploy-libvirt = writeScriptBin "deploy-libvirt" ''
deploy libvirt
'';
deploy-gcp = writeScriptBin "deploy-gcp" ''
deploy gcp
'';
deploy-azure = writeScriptBin "deploy-azure" ''
deploy azure
'';
# Clean SSH authorized keys
clean-ssh = writeScriptBin "clean-ssh" ''
env=''${1:-"libvirt""}
[[ "$env" == all ]] && ./scripts/clean-ssh.sh
nix run .#clean-ssh-$env
'';
clean-ssh-libvirt = writeScriptBin "clean-ssh-libvirt" ''
nix run .#clean-ssh-libvirt
'';
clean-ssh-gcp = writeScriptBin "clean-ssh-gcp" ''
nix run .#clean-ssh-gcp
'';
clean-ssh-azure = writeScriptBin "clean-ssh-azure" ''
nix run .#clean-ssh-azure
'';
# Up and Running local vault using docker-compose by arion
local-vault = writeScriptBin "local-vault" ''
nix run .#local-vault
'';
# Up and running local k8s using k3d
local-k8s = writeScriptBin "local-k8s" ''
nix run .#local-k8s
'';
in mkShell {
packages = with pkgs; [
# build images
build
build-qcow # libvirt
build-gce # gcp
build-azure # azure
# provision apply
apply
apply-libvirt
apply-gcp
apply-azure
# provision destroy
destroy
destroy-libvirt
destroy-gcp
destroy-azure
# deploy to nixos
deploy
deploy-libvirt
deploy-gcp
deploy-azure
# clean ssh authorized keys
clean-ssh
clean-ssh-libvirt
clean-ssh-gcp
clean-ssh-azure
# start local vault
local-vault
# start local k8s
local-k8s
# pkgs
consul
consul-template
vault
envoy
terraformWithPlugins
terranix
kube3d
kubernetes-helm
arion
docker-client
qemu-utils
colmena
vault
bashInteractive
nixdoc
];
shellHook = ''
export NIX_PATH=${pkgs.path}
export VAULT_ADDR=''${IC_VAULT_ADDR:-"http://10.0.62.1:8200"}
export VAULT_TOKEN=''${IC_VAULT_TOKEN:-"root-token"}
'';
}