Skip to content

Commit

Permalink
Merge pull request #32 from pinpox/github-pages
Browse files Browse the repository at this point in the history
Create pages.yml
  • Loading branch information
pinpox authored Mar 28, 2024
2 parents 0bd24e7 + 1931abd commit a634cfa
Show file tree
Hide file tree
Showing 4 changed files with 135 additions and 8 deletions.
64 changes: 64 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Sample workflow for building and deploying a Hugo site to GitHub Pages
name: Deploy Documentation to Pages

on:
# Runs on pushes targeting the default branch
push:
branches:
- "main"

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

# Default to bash
defaults:
run:
shell: bash

jobs:
# Build job
build:
runs-on: ubuntu-latest
env:
HUGO_VERSION: 0.124.1
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Pages
id: pages
uses: actions/configure-pages@v4
- name: Install Nix
uses: cachix/install-nix-action@v15
- name: Build with Nix
run: |
nix build '.#docs'
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./result

# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
result
40 changes: 40 additions & 0 deletions docs.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{ lib
, nixosOptionsDoc
, runCommand
, fetchurl
, pandoc
, modules ? [ ]
, filterPrefix ? ""
, title ? "My Options"
}:

let
eval = lib.evalModules { inherit modules; };
options = nixosOptionsDoc {

# If the filterPrefix is set, only options with that prefix are documented.
options =
if filterPrefix == ""
then eval.options
else eval.options."${filterPrefix}";
};
md = (runCommand "my-options.md" { } ''
cat >$out <<EOF
# ${title}
EOF
cat ${options.optionsCommonMark} >>$out
'').overrideAttrs (_o: {
# Work around https://github.com/hercules-ci/hercules-ci-agent/issues/168
allowSubstitutes = true;
});
css = fetchurl {
url = "https://gist.githubusercontent.com/killercup/5917178/raw/40840de5352083adb2693dc742e9f75dbb18650f/pandoc.css";
sha256 = "sha256-SzSvxBIrylxBF6B/mOImLlZ+GvCfpWNLzGFViLyOeTk=";
};
in
runCommand "options.html" { nativeBuildInputs = [ pandoc ]; } ''
mkdir $out
cp ${css} $out/pandoc.css
pandoc --css="pandoc.css" ${md} --to=html5 -s -f markdown+smart --metadata pagetitle="${title}" -o $out/index.html
''
38 changes: 30 additions & 8 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,26 @@
pkgs = nixpkgs.legacyPackages.${system};
in
{

packages = rec {
default = docs;
docs = pkgs.callPackage ./docs.nix {
filterPrefix = "lollypops";
title = "Lollypops options";
modules = [
(import ./module.nix {
inherit pkgs;
lib = pkgs.lib;
config.networking.hostName = "hostname";
})
{
# Fake this so depending options documentation don't fail
options.environment = pkgs.lib.mkOption { description = "test"; };
}
];
};
};

# Allow custom packages to be run using `nix run`
apps =
let
Expand Down Expand Up @@ -205,15 +225,16 @@


# Group hosts by their group name
hostGroups = let
processHost = currentGroups: host:
let
groupName = host.config.lollypops.deployment.group;
existing = currentGroups."${groupName}" or [ ];
in
hostGroups =
let
processHost = currentGroups: host:
let
groupName = host.config.lollypops.deployment.group;
existing = currentGroups."${groupName}" or [ ];
in
# Either add the host to an existing group or create a new group list
currentGroups // { ${groupName} = existing ++ [ host.config.system.name ]; };
in
in
builtins.foldl' processHost { } (builtins.attrValues configFlake.nixosConfigurations);


Expand Down Expand Up @@ -252,7 +273,8 @@
{
desc = "Provision group: ${groupName}";
deps = map (host: { task = "${host}"; }) hosts;
}) hostGroups // {
})
hostGroups // {
# Add special task called "all" which has all hosts as
# dependency to deploy all hosts at once
all.deps = map (x: { task = x; }) (builtins.attrNames configFlake.nixosConfigurations);
Expand Down

0 comments on commit a634cfa

Please sign in to comment.