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.
This commit is contained in:
Vincent Ambo 2019-08-04 22:45:23 +01:00 committed by Vincent Ambo
parent 85e8d760fc
commit 2bef0ba240
2 changed files with 46 additions and 8 deletions

View file

@ -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

View file

@ -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
''