move options to separate modules, set up mkDocs generation
Build docs with nix and Material for mkDocs / build-docs (push) Successful in 1m33s
Build docs with nix and Material for mkDocs / build-docs (push) Successful in 1m33s
This commit is contained in:
33 files changed
+385
-276
No files matched your search
@@ -0,0 +1,79 @@
|
||||
{ inputs, self, ... }: let
|
||||
mkDocsDerivation = { pkgs, doBuild ? true }: let
|
||||
inherit (pkgs) lib stdenv mkdocs python314Packages;
|
||||
|
||||
mkOptionsDocFromModule = commandName: module: let
|
||||
eval = lib.evalModules {
|
||||
modules = [ module ];
|
||||
args = { inherit pkgs; };
|
||||
};
|
||||
|
||||
optionsDoc = pkgs.nixosOptionsDoc {
|
||||
inherit (eval) options;
|
||||
};
|
||||
in pkgs.runCommand commandName {} ''
|
||||
cat ${optionsDoc.optionsCommonMark} >> $out
|
||||
'';
|
||||
|
||||
indexMd = let
|
||||
rawText = ''
|
||||
## Hello world
|
||||
Welcome to the site!
|
||||
'';
|
||||
in pkgs.runCommand "index.md" {} ''
|
||||
echo "${rawText}" >> $out
|
||||
'';
|
||||
|
||||
nixosOptionsMd = mkOptionsDocFromModule "nixos-options.md" self.nixosModules.options;
|
||||
homeOptionsMd = mkOptionsDocFromModule "home-options.md" self.homeModules.options;
|
||||
|
||||
mkDocsConfig = ''
|
||||
site_name: greyweather's nix flake options
|
||||
nav:
|
||||
- Home: 'index.md'
|
||||
- Options:
|
||||
- NixOS: 'nixos-options.md'
|
||||
- Home Manager: 'home-options.md'
|
||||
theme: material
|
||||
'';
|
||||
|
||||
mkDocsYml = pkgs.runCommand "mkdocs.yml" {} ''
|
||||
echo "${mkDocsConfig}" >> $out
|
||||
'';
|
||||
in stdenv.mkDerivation {
|
||||
src = self;
|
||||
name = if doBuild then "docs" else "docs-md";
|
||||
buildInput = [
|
||||
mkDocsYml
|
||||
indexMd
|
||||
nixosOptionsMd
|
||||
homeOptionsMd
|
||||
];
|
||||
nativeBuildInputs = [
|
||||
mkdocs
|
||||
python314Packages.mkdocs-material
|
||||
python314Packages.pygments
|
||||
];
|
||||
buildPhase = ''
|
||||
mkdir docs-build
|
||||
cd docs-build
|
||||
ln -s ${mkDocsYml} "./mkdocs.yml"
|
||||
mkdir docs
|
||||
ln -s ${indexMd} "./docs/index.md"
|
||||
ln -s ${nixosOptionsMd} "./docs/nixos-options.md"
|
||||
ln -s ${homeOptionsMd} "./docs/home-options.md"
|
||||
# generate the site
|
||||
${if doBuild then "mkdocs build" else ""}
|
||||
'';
|
||||
installPhase = if doBuild then ''
|
||||
mv site $out
|
||||
'' else ''
|
||||
cp -r . $out
|
||||
'';
|
||||
};
|
||||
in {
|
||||
perSystem = { pkgs, ... }: {
|
||||
packages.docs = mkDocsDerivation { inherit pkgs; };
|
||||
packages.docs-md = mkDocsDerivation { inherit pkgs; doBuild = false; };
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user