self-hosting/modules/dokuwiki.nix

72 lines
2.1 KiB
Nix
Raw Normal View History

2021-12-07 08:34:21 +01:00
{ config, lib, pkgs, ... }:
let
cfg = config.custom.services.dokuwiki;
2022-11-25 18:55:45 +01:00
template-chippedsnow = pkgs.stdenv.mkDerivation {
name = "chippedsnow";
src = builtins.fetchGit {
url = "ssh://git@gitlab.com/desbest/Chipped-Snow-Dokuwiki-Template.git";
ref = "master";
rev = "61e525236063714cade90beb1401cde2c75e4c88";
};
installPhase = "mkdir -p $out; cp -R * $out/";
};
2024-04-23 23:20:44 +02:00
template-darkblue = pkgs.stdenv.mkDerivation {
name = "darkblue";
src = builtins.fetchGit {
url = "git@github.com:ms101/dokuwiki-template-darkblue.git";
ref = "main";
rev = "14f8e738c83c16f2633d23fe30b7c6031551fa77";
};
installPhase = "mkdir -p $out; cp -R darkblue/* $out/";
};
configureWiki = name: title: templatePackage: templateName: {
2021-12-09 17:43:38 +01:00
sops.secrets."usersFile-${name}" = {
owner = "dokuwiki";
key = "wiki/${name}/users_file";
2023-07-10 19:19:25 +02:00
restartUnits =
[ "phpfpm-dokuwiki-${name}.${config.networking.domain}.service" ];
2021-12-09 17:43:38 +01:00
};
2021-12-07 08:34:21 +01:00
services.dokuwiki.sites = {
"${name}.${config.networking.domain}" = {
enable = true;
stateDir = "/nix/var/data/dokuwiki/${name}/data";
2021-12-09 17:43:38 +01:00
usersFile = config.sops.secrets."usersFile-${name}".path;
2024-04-23 23:20:44 +02:00
templates = [ templatePackage ];
2023-07-10 19:19:25 +02:00
settings = {
useacl = true;
2024-04-23 23:20:44 +02:00
title = title;
template = templateName;
2023-07-10 19:19:25 +02:00
disableactions = "register";
2023-11-11 00:08:59 +01:00
dontlog = [ "debug" "deprecated" ];
2023-07-10 19:19:25 +02:00
};
2021-12-07 08:34:21 +01:00
};
};
services.nginx.virtualHosts."${name}.${config.networking.domain}" = {
forceSSL = true;
enableACME = true;
2023-09-14 06:36:39 +02:00
extraConfig = "client_max_body_size 25M;";
2021-12-07 08:34:21 +01:00
};
};
2023-07-10 19:19:25 +02:00
in {
options.custom.services.dokuwiki = {
2024-03-26 23:37:53 +01:00
enable = lib.mkEnableOption "dokuwiki";
2024-03-26 23:37:53 +01:00
secretKeyFile = lib.mkOption { type = lib.types.path; };
};
2024-04-23 23:20:44 +02:00
config = lib.mkIf cfg.enable (lib.mkMerge [
(configureWiki "anderia" "Choniques d`Arkadia" template-chippedsnow
"chippedsnow")
(configureWiki "arkadia" "Choniques d`Arkadia" template-chippedsnow
"chippedsnow")
(configureWiki "scifirpg" "2324" template-darkblue "darkblue")
]);
}