about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2019-08-04T21·45+0100
committerVincent Ambo <github@tazj.in>2019-08-04T23·32+0100
commit2bef0ba2403f20826fbd615b0abb91cb2aff0350 (patch)
tree701e593ef37ef96b029fb05ebb7646e8c8a964f1
parent85e8d760fcf16e50ba8e055561ac418f4f5bce58 (diff)
feat(build): Build Nixery book and embed it into Nixery image
Executes the previously added mdBook on the previously added book
source to yield a directory that can be served by Nixery on its index
page.

This is one of those 'I <3 Nix' things due to how easy it is to do.
-rw-r--r--tools/nixery/default.nix18
-rw-r--r--tools/nixery/docs/default.nix36
2 files changed, 46 insertions, 8 deletions
diff --git a/tools/nixery/default.nix b/tools/nixery/default.nix
index 28b94af5bd59..4f0b14c90394 100644
--- a/tools/nixery/default.nix
+++ b/tools/nixery/default.nix
@@ -48,13 +48,6 @@ rec {
     cat ${./build-registry-image.nix} > $out
   '';
 
-  # Static files to serve on the Nixery index. This is used primarily
-  # for the demo instance running at nixery.dev and provides some
-  # background information for what Nixery is.
-  nixery-static = runCommand "nixery-static" {} ''
-    mkdir $out
-    cp ${./static}/* $out
-  '';
   # nixpkgs currently has an old version of mdBook. A new version is
   # built here, but eventually the update will be upstreamed
   # (nixpkgs#65890)
@@ -73,6 +66,10 @@ rec {
     cargoSha256 = "0qwhc42a86jpvjcaysmfcw8kmwa150lmz01flmlg74g6qnimff5m";
   };
 
+  # Use mdBook to build a static asset page which Nixery can then
+  # serve. This is primarily used for the public instance at
+  # nixery.dev.
+  nixery-book = callPackage ./docs { inherit mdbook; };
 
   # Wrapper script running the Nixery server with the above two data
   # dependencies configured.
@@ -81,7 +78,7 @@ rec {
   # are installing Nixery directly.
   nixery-bin = writeShellScriptBin "nixery" ''
     export NIX_BUILDER="${nixery-builder}"
-    export WEB_DIR="${nixery-static}"
+    export WEB_DIR="${nixery-book}"
     exec ${nixery-server}/bin/nixery
   '';
 
@@ -107,6 +104,11 @@ rec {
       mkdir -p /etc/nix
       echo 'sandbox = false' >> /etc/nix/nix.conf
 
+      # In some cases users building their own image might want to
+      # customise something on the inside (e.g. set up an environment
+      # for keys or whatever).
+      #
+      # This can be achieved by setting a 'preLaunch' script.
       ${preLaunch}
 
       exec ${nixery-bin}/bin/nixery
diff --git a/tools/nixery/docs/default.nix b/tools/nixery/docs/default.nix
new file mode 100644
index 000000000000..ba652cef9c26
--- /dev/null
+++ b/tools/nixery/docs/default.nix
@@ -0,0 +1,36 @@
+# Copyright 2019 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Builds the documentation page using the Rust project's 'mdBook'
+# tool.
+#
+# Some of the documentation is pulled in and included from other
+# sources.
+
+{ fetchFromGitHub, mdbook, runCommand }:
+
+let
+  nix-1p = fetchFromGitHub {
+    owner  = "tazjin";
+    repo   = "nix-1p";
+    rev    = "aab846cd3d79fcd092b1bfea1346c587b2a56095";
+    sha256 = "12dl0xrwgg2d4wyv9zxgdn0hzqnanczjg23vqn3356rywxlzzwak";
+  };
+in runCommand "nixery-book" {} ''
+  mkdir -p $out
+  cp -r ${./.}/* .
+  chmod -R a+w src
+  cp ${nix-1p}/README.md src/nix-1p.md
+  ${mdbook}/bin/mdbook build -d $out
+''