diff --git a/README.md b/README.md
index 6e69256..2b7e95c 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,8 @@
* [x] Split stuff into multiple files
* [x] Make a flake
+* [x] merge hosted docs into a single subdomain
+* [ ] pre-commit hook with 'nix eval'
* [ ] Setup some remote-development flow
* [ ] users/pbsds: Support multiple profiles, like headless, nixpkgs-dev, various desktops, hpc, pvv, etc
* [ ] nixos-generate-config instructions
diff --git a/base.nix b/base.nix
index 2bc32eb..0d4d83b 100644
--- a/base.nix
+++ b/base.nix
@@ -32,6 +32,7 @@
"-L" # print build logs
];
};
+ # TODO: this doesn't work during 'nix eval' on a non-nixos machine
#assertions = [
# { assertion = builtins.pathExists "/etc/nixos/flake.nix"; message = "You have yet to test systems without a flake in /etc/nixos"; }
#];
diff --git a/hosts/noximilien/default.nix b/hosts/noximilien/default.nix
index bdd6319..564404e 100644
--- a/hosts/noximilien/default.nix
+++ b/hosts/noximilien/default.nix
@@ -47,8 +47,11 @@
#../../profiles/web/services/censordodge
#../../profiles/web/services/openspeedtest
+ ../../profiles/web/docs
../../profiles/web/docs/pdoc
../../profiles/web/docs/python-docs
+ ../../profiles/web/docs/yagcd
+
../../profiles/web/sites/linktree-pbsds
../../profiles/web/sites/refleksjon-no
../../profiles/web/sites/roroslyd-no
diff --git a/profiles/web/docs/default.nix b/profiles/web/docs/default.nix
new file mode 100644
index 0000000..eed40b2
--- /dev/null
+++ b/profiles/web/docs/default.nix
@@ -0,0 +1,48 @@
+{ config, pkgs, lib, mkDomain, ... }:
+{
+ options = with lib; {
+ #services.docs-to-host.enable = mkEnable "docs-to-host";
+ services.docs-to-host.docs = mkOption {
+ type = types.listOf (types.submodule {
+ options = {
+ subdir = mkOption {
+ type = types.str;
+ example = "pdoc";
+ description = lib.mdDoc "The path at which the documentation will be linked";
+ };
+ path = mkOption {
+ type = types.path;
+ example = lib.literalExpression "pkgs.fetchzip {...}";
+ description = lib.mdDoc "The static html documentation to host";
+ };
+ desc = mkOption {
+ type = types.str;
+ #description = "A short decription about the hosted documentation in markdown.";
+ description = "A short decription about the hosted documentation.";
+ };
+ };
+ });
+ default = [ ];
+ #description = lib.mdDoc ''TODO'';
+ };
+ };
+
+ config = let
+ cfg = config.services.docs-to-host;
+ mkRow = {subdir, path, desc}: ''
${subdir}/ | ${desc}'';
+ mkEntry = {subdir, path, desc}: { name = subdir; path = path; };
+ in {
+ services.nginx.virtualHosts.${mkDomain "docs"} = {
+ forceSSL = true; # addSSL = true;
+ enableACME = true; #useACMEHost = acmeDomain;
+ root = pkgs.linkFarm "docs-html" ([{name = "index.html"; path = pkgs.writeText "docs-index.html" ''
+
+
+ URL | Desc
+ ${lib.concatStringsSep "\n" ( builtins.map mkRow cfg.docs ) }
+ |
---|
+ '';
+ }] ++ (builtins.map mkEntry cfg.docs));
+ };
+ };
+}
diff --git a/profiles/web/docs/pdoc/default.nix b/profiles/web/docs/pdoc/default.nix
index 0ec7a60..cc159da 100644
--- a/profiles/web/docs/pdoc/default.nix
+++ b/profiles/web/docs/pdoc/default.nix
@@ -252,11 +252,24 @@ let
in {
- # lib.filter (x: lib.isDerivation x && (builtins.tryEval x.outPath).success) (lib.attrValues linuxPackages_latest))
-
# Pdoc
# Auto-generate API documentation for Python projects.
+ services.docs-to-host.docs = [
+ {
+ subdir = "pdoc-docs";
+ path = mkPdocs false;
+ desc = "Documentation for various python modules, generated with pdoc";
+ }
+ {
+ subdir = "pdoc3-docs";
+ path = mkPdocs true;
+ desc = "Documentation for various python modules, generated with pdoc";
+ }
+ ];
+
+
+ /** /
services.nginx.virtualHosts.${mkDomain "pdoc"} = {
forceSSL = true; # addSSL = true;
enableACME = true; #useACMEHost = acmeDomain;
@@ -267,5 +280,6 @@ in {
enableACME = true; #useACMEHost = acmeDomain;
root = mkPdocs true;
};
+ /**/
}
diff --git a/profiles/web/docs/python-docs/default.nix b/profiles/web/docs/python-docs/default.nix
index 56c5853..c0bb43c 100644
--- a/profiles/web/docs/python-docs/default.nix
+++ b/profiles/web/docs/python-docs/default.nix
@@ -1,24 +1,12 @@
-{ config, pkgs, lib, mkDomain, ... }:
+{ config, pkgs, lib, ... }:
let
- python-versions = (lib.attrNames pkgs.pythonDocs.html);
- mkLinkFarmEntry = python-version: {
- name = python-version;
- path = "${builtins.toString pkgs.pythonDocs.html.${python-version}}/share/doc/${python-version}/html";
+ python-versions = lib.attrNames (lib.filterAttrs (k: v: lib.isDerivation v) pkgs.pythonDocs.html);
+ mkDocsEntry = python-version: {
+ subdir = "${python-version}";
+ path = "${builtins.toString pkgs.pythonDocs.html.${python-version}}/share/doc/${python-version}/html";
+ desc = "Documentation for Python ${pkgs.${python-version}.version}";
};
in
{
- services.nginx.virtualHosts.${mkDomain "python-docs"} = {
- forceSSL = true; # addSSL = true;
- enableACME = true; #useACMEHost = acmeDomain;
- root = pkgs.linkFarm "python-docs" ([
- { name = "index.html"; path = pkgs.writeText "my-file" ''
-
-
- ${lib.concatStringsSep "\n" (
- builtins.map (name: ''- ${name}/'') python-versions
- )}
-
- ''; }
- ] ++ (builtins.map mkLinkFarmEntry python-versions));
- };
+ services.docs-to-host.docs = builtins.map mkDocsEntry python-versions;
}
diff --git a/profiles/web/docs/yagcd/default.nix b/profiles/web/docs/yagcd/default.nix
new file mode 100644
index 0000000..2d6581d
--- /dev/null
+++ b/profiles/web/docs/yagcd/default.nix
@@ -0,0 +1,23 @@
+{ config, pkgs, lib, mkDomain, ... }:
+let
+ yagcd = pkgs.fetchzip {
+ url = "http://hitmen.c02.at/files/yagcd/yagcd.tar.gz";
+ hash = "sha256-6/0oh7Xvbq1eAk2fCtKU+IXm0FbmgXIwAUjXuUKicus=";
+ stripRoot = false;
+ };
+in
+{
+ services.docs-to-host.docs = [{
+ desc = "Yet another Gamecube Documentation";
+ subdir = "yagcd";
+ path = "${yagcd}/yagcd";
+ }];
+
+ /** /
+ services.nginx.virtualHosts.${mkDomain "yagcd"} = {
+ forceSSL = true; # addSSL = true;
+ enableACME = true; #useACMEHost = acmeDomain;
+ root = yagcd;
+ };
+ /**/
+}
diff --git a/profiles/web/index/default.nix b/profiles/web/index/default.nix
index e7d336c..00740de 100644
--- a/profiles/web/index/default.nix
+++ b/profiles/web/index/default.nix
@@ -10,6 +10,7 @@ let
www = "wwwwwwwwwwwwwww";
${config.networking.hostName} = www;
shlink = "Url shortener";
+ docs = "Various documentation";
};
in
{
|