Skip to content

Commit 4151a9e

Browse files
yvan-srakajfroche
authored andcommitted
Deploy envoy using system manager
We verify that the envoy service can be deployed using the system manager.
1 parent 8fac60d commit 4151a9e

File tree

6 files changed

+91
-31
lines changed

6 files changed

+91
-31
lines changed

nix/packages/default.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
dbmate-tool = pkgs.callPackage ./dbmate-tool.nix { inherit (self.supabase) defaults; };
3939
docker-image-ubuntu = pkgs.callPackage ./docker-ubuntu.nix { };
4040
docs = pkgs.callPackage ./docs.nix { };
41+
envoy-bin = pkgs.callPackage ./envoy-bin.nix { };
4142
supabase-groonga = pkgs.callPackage ./groonga { };
4243
local-infra-bootstrap = pkgs.callPackage ./local-infra-bootstrap.nix { };
4344
migrate-tool = pkgs.callPackage ./migrate-tool.nix { psql_15 = self'.packages."psql_15/bin"; };

nix/packages/envoy-bin.nix

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
envoy-bin,
3+
fetchurl,
4+
stdenv,
5+
...
6+
}:
7+
let
8+
version = "1.28.0";
9+
inherit (stdenv.hostPlatform) system;
10+
throwSystem = throw "envoy-bin is not available for ${system}.";
11+
plat =
12+
{
13+
aarch64-linux = "aarch_64";
14+
x86_64-linux = "x86_64";
15+
}
16+
.${system} or throwSystem;
17+
hash =
18+
{
19+
aarch64-linux = "sha256-65MOMqtVVWQ+CdEdSQ45LQp5DFqA6wsOussQRr27EU0=";
20+
x86_64-linux = "sha256-JjlWPOm8CbHua9RzF2C1lsjtHkdM3YPMnfk2RRbhQ2c=";
21+
}
22+
.${system} or throwSystem;
23+
in
24+
envoy-bin.overrideAttrs {
25+
inherit version;
26+
src = fetchurl {
27+
url = "https://github.com/envoyproxy/envoy/releases/download/v${version}/envoy-${version}-linux-${plat}";
28+
inherit hash;
29+
};
30+
}

nix/systemConfigs.nix

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
{ self, inputs, ... }:
2-
let
3-
mkModules = system: [
4-
({
5-
services.nginx.enable = true;
6-
nixpkgs.hostPlatform = system;
7-
})
8-
];
9-
10-
systems = [
11-
"aarch64-linux"
12-
"x86_64-linux"
13-
];
14-
15-
mkSystemConfig = system: {
16-
name = system;
17-
value.default = inputs.system-manager.lib.makeSystemConfig {
18-
modules = mkModules system;
19-
extraSpecialArgs = {
20-
inherit self;
21-
inherit system;
22-
};
23-
};
24-
};
25-
in
26-
{
27-
flake = {
28-
systemConfigs = builtins.listToAttrs (map mkSystemConfig systems);
29-
};
30-
}
1+
{ self, inputs, ... }:
2+
let
3+
mkModules = system: [
4+
({
5+
services.nginx.enable = true;
6+
nixpkgs.hostPlatform = system;
7+
})
8+
];
9+
10+
systems = [
11+
"aarch64-linux"
12+
"x86_64-linux"
13+
];
14+
15+
mkSystemConfig = system: {
16+
name = system;
17+
value.default = inputs.system-manager.lib.makeSystemConfig {
18+
modules = mkModules system;
19+
extraSpecialArgs = {
20+
inherit self;
21+
inherit system;
22+
};
23+
};
24+
};
25+
in
26+
{
27+
flake = {
28+
systemConfigs = builtins.listToAttrs (map mkSystemConfig systems);
29+
};
30+
}

nix/systemModules/default.nix

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
{
55
imports = [ ./tests ];
66
flake = {
7-
systemModules = { };
7+
systemModules = {
8+
envoy = ./envoy.nix;
9+
};
810
};
911
}

nix/systemModules/envoy.nix

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
lib,
3+
nixosModulesPath,
4+
self,
5+
system,
6+
...
7+
}:
8+
{
9+
imports = map (path: nixosModulesPath + path) [
10+
"/services/networking/envoy.nix"
11+
];
12+
config = {
13+
services.envoy = {
14+
enable = true;
15+
package = self.packages.${system}.envoy-bin;
16+
# TODO: settings from postgres/ansible/files/envoy_config/
17+
};
18+
systemd.services.envoy = {
19+
wantedBy = lib.mkForce [
20+
"system-manager.target"
21+
];
22+
};
23+
};
24+
}

nix/systemModules/tests/test_envoy.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
def test_envoy_service(host):
2+
assert host.service("envoy.service").is_valid
3+
assert host.service("envoy.service").is_running

0 commit comments

Comments
 (0)