about summary refs log tree commit diff
path: root/tools
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2022-05-13T16·25+0200
committertazjin <tazjin@tvl.su>2022-05-23T15·04+0000
commitf31edeec1bebcb98f0618c937505c7967e774236 (patch)
tree57668fbd70caa7603748f7a06aee9b3a2987a570 /tools
parent796ff086bea3e060e61d8c56d38441898025ed1c (diff)
refactor(nixery): Modernise structure of binaries r/4106
Nixery is going to gain a new binary (used for building images without
a registry server); to prepare for this the server binary has moved to
cmd/server and the Nix build logic has been updated to wrap this
binary and set the required environment variables.

Change-Id: I9b4f49f47872ae76430463e2fcb8f68114070f72
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5603
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/nixery/cmd/server/main.go (renamed from tools/nixery/main.go)0
-rw-r--r--tools/nixery/default.nix53
2 files changed, 25 insertions, 28 deletions
diff --git a/tools/nixery/main.go b/tools/nixery/cmd/server/main.go
index 8fe1679cfa..8fe1679cfa 100644
--- a/tools/nixery/main.go
+++ b/tools/nixery/cmd/server/main.go
diff --git a/tools/nixery/default.nix b/tools/nixery/default.nix
index b5575be507..6b053e55dd 100644
--- a/tools/nixery/default.nix
+++ b/tools/nixery/default.nix
@@ -25,23 +25,6 @@ let
   # through revision numbers.
   nixery-commit-hash = "depot";
 
-  # Go implementation of the Nixery server which implements the
-  # container registry interface.
-  #
-  # Users should use the nixery-bin derivation below instead as it
-  # provides the paths of files needed at runtime.
-  nixery-server = buildGoModule rec {
-    name = "nixery-server";
-    src = ./.;
-    doCheck = true;
-
-    # Needs to be updated after every modification of go.mod/go.sum
-    vendorSha256 = "1xnmyz2a5s5sck0fzhcz51nds4s80p0jw82dhkf4v2c4yzga83yk";
-
-    buildFlagsArray = [
-      "-ldflags=-s -w -X main.version=${nixery-commit-hash}"
-    ];
-  };
 in
 depot.nix.readTree.drvTargets rec {
   # Implementation of the Nix image building logic
@@ -52,18 +35,32 @@ depot.nix.readTree.drvTargets rec {
   # nixery.dev.
   nixery-book = callPackage ./docs { };
 
-  # Wrapper script running the Nixery server with the above two data
-  # dependencies configured.
+  nixery-popcount = callPackage ./popcount { };
+
+  # Build Nixery's Go code, resulting in the binaries used for various
+  # bits of functionality.
   #
-  # In most cases, this will be the derivation a user wants if they
-  # are installing Nixery directly.
-  nixery-bin = writeShellScriptBin "nixery" ''
-    export WEB_DIR="${nixery-book}"
-    export PATH="${nixery-prepare-image}/bin:$PATH"
-    exec ${nixery-server}/bin/nixery
-  '';
+  # The server binary is wrapped to ensure that required environment
+  # variables are set at runtime.
+  nixery = buildGoModule rec {
+    name = "nixery";
+    src = ./.;
+    doCheck = true;
 
-  nixery-popcount = callPackage ./popcount { };
+    # Needs to be updated after every modification of go.mod/go.sum
+    vendorSha256 = "1xnmyz2a5s5sck0fzhcz51nds4s80p0jw82dhkf4v2c4yzga83yk";
+
+    buildFlagsArray = [
+      "-ldflags=-s -w -X main.version=${nixery-commit-hash}"
+    ];
+
+    nativeBuildInputs = [ makeWrapper ];
+    postInstall = ''
+      wrapProgram $out/bin/server \
+        --set WEB_DIR "${nixery-book}" \
+        --prefix PATH : ${nixery-prepare-image}/bin
+    '';
+  };
 
   # Container image containing Nixery and Nix itself. This image can
   # be run on Kubernetes, published on AppEngine or whatever else is
@@ -98,7 +95,7 @@ depot.nix.readTree.drvTargets rec {
         # This can be achieved by setting a 'preLaunch' script.
         ${preLaunch}
 
-        exec ${nixery-bin}/bin/nixery
+        exec ${nixery}/bin/server
       '';
     in
     dockerTools.buildLayeredImage {