hackens-org-configurations/hosts/hackens-org/wiki.nix
2022-03-31 11:36:08 +02:00

94 lines
3.3 KiB
Nix

{ pkgs, config, ... }:
let
hostname = "new.hackens.org" #config.my.subZone;
debug = true; #config.my.debug;
in
{
networking.firewall.allowedTCPPorts = [ 80 443 ];
services.nginx.virtualHosts."${hostname}".enableACME =
if debug
then false
else true;
services.dokuwiki.sites."${hostname}" = {
enable = true;
extraConfig = ''
$conf['template'] = 'dokuwiki';
$conf['license'] = 'cc-by-sa';
$conf['title'] = 'hackEns';
$conf['start'] = 'accueil';
$conf['lang'] = 'fr';
$conf['breadcrumbs'] = 0; // On s'en fiche de l'historique des pages visitées
$conf['youarehere'] = true; // Par contre on veut notre position dans la hiérarchie du site
// On veut que les liens externes s'ouvrent dans de nouveaux onglets
$conf['target'] = array(
'extern' => '_tab'
);
$conf['htmlok'] = 1; // On peut mettre du html dans les pages
$conf['sitemap'] = 7;
$conf['rss_type'] = 'rss2';
$conf['userewrite'] = 1; // Important, sinon on casse tout avec les règles nginx définies par le module nixos
$conf['useslash'] = 1;
$conf['plugin']['tokenbucketauth']['tba_send_mail'] = 'hackens@clipper.ens.fr'; // Ban auto des IPs qui brute-forcent
$conf['htmlmail'] = 0; // On envoie les mails en plain text
'';
pluginsConfig = ''
$plugins['authmysql'] = 0;
$plugins['popularity'] = 0;
$plugins['authpgsql'] = 0;
$plugins['authpdo'] = 0;
$plugins['authldap'] = 0;
'';
disableActions = "register";
superUser = "@admin";
aclUse = true;
# Il faut packager les templates
templates = let
template-bootstrap3 = { version, logo, favicon, apple-touch-icon, dokuwikiPath }: pkgs.stdenv.mkDerivation {
name = "bootstrap3";
# Download the theme from the dokuwiki site
src = pkgs.fetchFromGitHub version;
# We need unzip to build this package
# buildInputs = [ pkgs.unzip ];
# Installing simply means copying all files to the output directory
installPhase = ''
mkdir -p $out
cp -R * $out/
rm $out/images/logo.png
rm $out/images/favicon.ico
rm $out/images/apple-touch-icon.png
ln -s ${logo} $out/images/logo.png
ln -s ${favicon} $out/images/favicon.ico
ln -s ${apple-touch-icon} $out/images/apple-touch-icon.png
echo "<?php define('DOKU_INC', '${dokuwikiPath}');" > $out/doku_inc.php # Lien vers le dokuwiki
'';
};
# And then pass this theme to the template list like this:
in [
(template-bootstrap3 {
version = {
owner = "giterlizzi";
repo = "dokuwiki-template-bootstrap3";
rev="v2020-07-29";
#sha256="0cwi7hi59s8p4wfgday2kcj42i1v0hh3f96rnmm1qi6scbb002hi";
sha256="05d6si1lci3a2pgd10iwpwrgl969y7gq4qsn5p1lbgxkraad17af";
};
logo = ./media/logo.png;
favicon = ./media/favicon.ico;
apple-touch-icon = ./media/logo.png;
dokuwikiPath = "${config.services.dokuwiki.sites."${hostname}".package}/share/dokuwiki";
})
];
};
# On veut php-xml
services.phpfpm.pools."dokuwiki-${hostname}".phpPackage = pkgs.lib.mkForce ( pkgs.php74.withExtensions (
{ all, enabled, ... }:
enabled ++ [
all.xml
]
));
}