Document our module
To document our modules is simple, we just need to use config.files.docs
as follow
# examples/docs.nix
{lib, pkgs, ...}:
{
files.docs."/gh-pages/src/modules/alias.md".modules = [ ../modules/alias.nix ../modules/alias-complete.nix ];
files.docs."/gh-pages/src/modules/cmds.md".modules = [ ../modules/cmds.nix ];
files.docs."/gh-pages/src/modules/files.md".modules = [ ../modules/files.nix ];
files.docs."/gh-pages/src/modules/git.md".modules = [ ../modules/git.nix ];
files.docs."/gh-pages/src/modules/on-call.md".modules = [ ../modules/startup.nix ];
files.docs."/gh-pages/src/modules/gitignore.md".modules = [ ../modules/gitignore.nix ];
files.docs."/gh-pages/src/modules/hcl.md".modules = [ ../modules/hcl.nix ];
files.docs."/gh-pages/src/modules/json.md".modules = [ ../modules/json.nix ];
files.docs."/gh-pages/src/modules/mdbook.md".modules = [ ../modules/mdbook.nix ];
files.docs."/gh-pages/src/modules/nim.md".modules = [ ../modules/nim.nix ];
files.docs."/gh-pages/src/modules/nushell.md".modules = [ ../modules/nushell.nix ];
files.docs."/gh-pages/src/modules/nush.md".modules = [ ../modules/nush.nix ../modules/nuon.nix ];
files.docs."/gh-pages/src/modules/rc.md".modules = [ ../modules/services/rc-devshell.nix ];
files.docs."/gh-pages/src/modules/services.md".modules = [ ../modules/services.nix ];
files.docs."/gh-pages/src/modules/spdx.md".modules = [ ../modules/spdx.nix ];
files.docs."/gh-pages/src/modules/text.md".modules = [ ../modules/text.nix ];
files.docs."/gh-pages/src/modules/toml.md".modules = [ ../modules/toml.nix ];
files.docs."/gh-pages/src/modules/watch.md".modules = [ ../modules/watch ];
files.docs."/gh-pages/src/modules/yaml.md".modules = [ ../modules/yaml.nix ];
}
We could also generate a mdbook with it
# examples/book.nix
{lib, ...}:
let
project = "devshell-files";
author = "cruel-intentions";
org-url = "https://github.com/${author}";
edit-path = "${org-url}/${project}/edit/master/examples/{path}";
in
{
files.mdbook.authors = ["Cruel Intentions <${org-url}>"];
files.mdbook.enable = true;
files.mdbook.gh-author = author;
files.mdbook.gh-project = project;
files.mdbook.language = "en";
files.mdbook.multilingual = false;
files.mdbook.summary = builtins.readFile ./summary.md;
files.mdbook.title = "Nix DevShell Files Maker";
files.mdbook.output.html.edit-url-template = edit-path;
files.mdbook.output.html.fold.enable = true;
files.mdbook.output.html.git-repository-url = "${org-url}/${project}/tree/master";
files.mdbook.output.html.no-section-label = true;
files.mdbook.output.html.site-url = "/${project}/";
files.gitignore.pattern.gh-pages = true;
files.text."/gh-pages/src/introduction.md" = builtins.readFile ./readme/about.md;
files.text."/gh-pages/src/installation.md" = builtins.readFile ./readme/installation.md;
files.text."/gh-pages/src/examples.md" = builtins.import ./readme/examples.nix;
files.text."/gh-pages/src/modules.md" = "## Writing new modules";
files.text."/gh-pages/src/nix-lang.md" = builtins.readFile ./readme/modules/nix-lang.md;
files.text."/gh-pages/src/json-nix.md" = builtins.import ./readme/modules/json-vs-nix.nix lib;
files.text."/gh-pages/src/module-spec.md" = builtins.readFile ./readme/modules/modules.md;
files.text."/gh-pages/src/share.md" = builtins.readFile ./readme/modules/share.md;
files.text."/gh-pages/src/document.md" = builtins.import ./readme/modules/document.nix;
files.text."/gh-pages/src/builtins.md" = builtins.readFile ./readme/modules/builtins.md;
files.text."/gh-pages/src/todo.md" = builtins.readFile ./readme/todo.md;
files.text."/gh-pages/src/issues.md" = builtins.readFile ./readme/issues.md;
files.text."/gh-pages/src/seeAlso.md" = builtins.readFile ./readme/seeAlso.md;
files.alias.publish-as-gh-pages-from-local = ''
# same as publish-as-gh-pages but works local
cd $PRJ_ROOT
ORIGIN=`git remote get-url origin`
cd gh-pages
mdbook build
cd book
git init .
git add .
git checkout -b gh-pages
git commit -m "docs(gh-pages): update gh-pages" .
git remote add origin $ORIGIN
git push -u origin gh-pages --force
'';
}
And publish this mdbook to github pages with book-as-gh-pages
alias.