Skip to content

Commit 07a845f

Browse files
committed
clean up API clients, work on cross-builds of binaries + container images
1 parent 4568c9b commit 07a845f

File tree

26 files changed

+225
-149
lines changed

26 files changed

+225
-149
lines changed

Cargo.lock

Lines changed: 40 additions & 39 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[workspace]
22

33
resolver = "2"
4-
members = ["zeronsd", "central-api", "service-api", "tests"]
4+
members = ["zeronsd", "tests", "zerotier-api"]

Dockerfile

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
FROM nixos/nix:latest AS builder
2+
3+
COPY . /tmp/build
4+
WORKDIR /tmp/build
5+
6+
RUN nix \
7+
--extra-experimental-features "nix-command flakes" \
8+
--option filter-syscalls false \
9+
build
10+
11+
RUN mkdir /tmp/nix-store-closure
12+
RUN cp -R $(nix-store -qR result/) /tmp/nix-store-closure
13+
14+
FROM scratch
15+
16+
WORKDIR /
17+
18+
# Copy /nix/store
19+
COPY --from=builder /tmp/nix-store-closure /nix/store
20+
COPY --from=builder /tmp/build/result/bin/zeronsd /bin/zeronsd
21+
CMD ["/bin/zeronsd"]

central-api/Cargo.toml

Lines changed: 0 additions & 11 deletions
This file was deleted.

central-api/src/lib.rs

Lines changed: 0 additions & 3 deletions
This file was deleted.

docker.nix

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{ pkgs, cargo-package, ... }:
2+
3+
pkgs.dockerTools.buildImage {
4+
name = cargo-package.name;
5+
tag = cargo-package.version;
6+
created = "now";
7+
8+
copyToRoot = pkgs.buildEnv {
9+
name = "zeronsd-image-root";
10+
paths = with pkgs; [ zeronsd zerotierone dockerTools.caCertificates ];
11+
pathsToLink = [ "/bin" "/etc" ];
12+
};
13+
14+
config = {
15+
Cmd = [ "/bin/zeronsd" ];
16+
WorkingDir = "/var/lib/zeronsd";
17+
Volumes = { "/var/lib/zeronsd" = {}; };
18+
};
19+
}

flake.nix

Lines changed: 22 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,37 +10,38 @@
1010

1111
outputs = { nixpkgs, flake-utils, rust-overlay, ... }:
1212
let
13-
cargo-config = builtins.fromTOML (builtins.readFile ./zeronsd/Cargo.toml);
13+
cargo-package = (builtins.fromTOML (builtins.readFile ./zeronsd/Cargo.toml)).package;
1414
rust-version = "1.81.0";
15-
in {
16-
} // flake-utils.lib.eachDefaultSystem (system:
15+
in flake-utils.lib.eachDefaultSystem (system:
1716
let
1817
pkgs = import nixpkgs {
1918
inherit system;
2019
overlays = [ rust-overlay.overlays.default ];
20+
config.allowUnfree = true;
2121
};
2222

2323
devInputs = with pkgs; [
2424
rust-bin.stable.${rust-version}.complete
2525
pkg-config
2626
openssl
27-
];
27+
toml-cli
28+
] ++ lib.optionals pkgs.stdenv.isDarwin [
29+
pkgs.libiconv
30+
pkgs.darwin.apple_sdk.frameworks.SystemConfiguration
31+
] ;
2832

2933
zeronsd-bin = pkgs.rustPlatform.buildRustPackage rec {
30-
inherit (cargo-config.package) name version;
34+
inherit (cargo-package) name version;
3135

3236
src = ./.;
3337
buildAndTestSubdir = "zeronsd";
3438

3539
nativeBuildInputs = devInputs;
3640
buildInputs = devInputs;
3741

38-
cargoLock = {
39-
lockFile = ./Cargo.lock;
40-
};
42+
cargoLock.lockFile = ./Cargo.lock;
4143
};
42-
in
43-
{
44+
in rec {
4445
devShells.default = pkgs.mkShell {
4546
buildInputs = devInputs;
4647
nativeBuildInputs = [ pkgs.just ];
@@ -49,30 +50,20 @@
4950
packages = {
5051
zeronsd = zeronsd-bin;
5152
default = zeronsd-bin;
53+
} // builtins.listToAttrs (map (s: {
54+
name = "container-${s}";
55+
value = import ./docker.nix {
56+
inherit cargo-package;
5257

53-
container = pkgs.dockerTools.buildImage {
54-
inherit (cargo-config.package) name;
55-
tag = "latest";
56-
57-
copyToRoot = pkgs.buildEnv {
58-
name = "image-root";
59-
paths = [ zeronsd-bin pkgs.dockerTools.caCertificates ];
60-
pathsToLink = [ "/bin" "/etc" ];
61-
};
62-
63-
created = "now";
64-
65-
runAsRoot = ''
66-
#{pkgs.runtimeShell}
67-
mkdir -p /var/lib/zeronsd
68-
'';
69-
70-
config = {
71-
Cmd = [ "/bin/zeronsd" ];
72-
WorkingDir = "/var/lib/zeronsd";
58+
pkgs = import nixpkgs {
59+
localSystem = system;
60+
crossSystem = s;
61+
62+
overlays = [ overlays.default ];
63+
config.allowUnfree = true;
7364
};
7465
};
75-
};
66+
}) [ "x86_64-linux" "aarch64-linux" ]);
7667

7768
overlays = {
7869
default = final: prev: { zeronsd = zeronsd-bin; };

justfile

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,33 @@
1+
VERSION := shell("toml get zeronsd/Cargo.toml package.version")
2+
DOCKER_TAG := "zeronsd:" + VERSION
3+
4+
version:
5+
@echo {{VERSION}}
6+
17
build:
8+
nix build
9+
10+
build-image:
211
nix build .#container
12+
docker load < result
13+
docker tag {{DOCKER_TAG}} zeronsd:latest
314

4-
dns-ip network:
5-
@sudo zerotier-cli -j listnetworks \
15+
resolve network name:
16+
nix run nixpkg#dig @$(zerotier-cli -j listnetworks \
617
| jq -r \
718
'.[] | select(.id == "{{network}}") \
819
| .dns.servers \
920
| select(.[] | test("\\d+\\.\\d+\\.\\d+\\.\\d+")) \
10-
| last'
21+
| last') \
22+
{{name}}
1123

1224
run network config="./config.yaml" token="./.central.token": build
1325
file {{config}}
14-
sudo docker load < result
1526
sudo docker run \
1627
--net=host \
1728
--init \
1829
-v {{config}}:/var/lib/zeronsd/config.yaml \
1930
-v {{token}}:/var/lib/zeronsd/central.token \
2031
-v /var/lib/zerotier-one:/var/lib/zerotier-one \
21-
zeronsd:latest \
32+
zerotier/{{DOCKER_TAG}} \
2233
zeronsd start -c /var/lib/zeronsd/config.yaml {{network}}

0 commit comments

Comments
 (0)