82 lines
2.0 KiB
Nix
82 lines
2.0 KiB
Nix
{
|
|
pkgs,
|
|
module-docs,
|
|
clan-cli-docs,
|
|
clan-lib-openapi,
|
|
asciinema-player-js,
|
|
asciinema-player-css,
|
|
roboto,
|
|
fira-code,
|
|
docs-options,
|
|
...
|
|
}:
|
|
let
|
|
uml-c4 = pkgs.python3Packages.plantuml-markdown.override { plantuml = pkgs.plantuml-c4; };
|
|
in
|
|
pkgs.stdenv.mkDerivation {
|
|
name = "clan-documentation";
|
|
|
|
# Points to repository root.
|
|
# so that we can access directories outside of docs to include code snippets
|
|
src = pkgs.lib.fileset.toSource {
|
|
root = ../..;
|
|
fileset = pkgs.lib.fileset.unions [
|
|
# Docs directory
|
|
../../docs
|
|
# Icons needed for the build
|
|
../../pkgs/clan-app/ui/icons
|
|
# Any other directories that might be referenced for code snippets
|
|
# Add them here as needed based on what mkdocs actually uses
|
|
];
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
pkgs.python3
|
|
uml-c4
|
|
]
|
|
++ (with pkgs.python3Packages; [
|
|
mkdocs
|
|
mkdocs-material
|
|
mkdocs-macros
|
|
mkdocs-redoc-tag
|
|
mkdocs-redirects
|
|
]);
|
|
configurePhase = ''
|
|
pushd docs
|
|
|
|
mkdir -p ./site/reference/cli
|
|
cp -af ${module-docs}/* ./site/reference/
|
|
cp -af ${clan-cli-docs}/* ./site/reference/cli/
|
|
|
|
mkdir -p ./site/reference/internal
|
|
cp -af ${clan-lib-openapi} ./site/openapi.json
|
|
|
|
chmod -R +w ./site/reference
|
|
echo "Generated API documentation in './site/reference/' "
|
|
|
|
rm -r ./site/options-page || true
|
|
cp -r ${docs-options} ./site/options-page
|
|
chmod -R +w ./site/options-page
|
|
|
|
mkdir -p ./site/static/asciinema-player
|
|
ln -snf ${asciinema-player-js} ./site/static/asciinema-player/asciinema-player.min.js
|
|
ln -snf ${asciinema-player-css} ./site/static/asciinema-player/asciinema-player.css
|
|
|
|
# Link to fonts
|
|
ln -snf ${roboto}/share/fonts/truetype/Roboto-Regular.ttf ./site/static/
|
|
ln -snf ${fira-code}/share/fonts/truetype/FiraCode-VF.ttf ./site/static/
|
|
|
|
# Copy icons into place
|
|
cp -af ../pkgs/clan-app/ui/icons ./site/static/
|
|
'';
|
|
|
|
buildPhase = ''
|
|
mkdocs build --strict
|
|
ls -la .
|
|
'';
|
|
|
|
installPhase = ''
|
|
cp -a out/ $out/
|
|
'';
|
|
}
|