99 lines
3.5 KiB
Nix
99 lines
3.5 KiB
Nix
{ pkgs, config, ... }:
|
|
let
|
|
hostname = "new.hackens.org"; #config.my.subZone;
|
|
debug = false; #config.my.debug;
|
|
in
|
|
{
|
|
imports = [
|
|
modules/custom-dokuwiki.nix
|
|
];
|
|
disabledModules = [ "services/web-apps/dokuwiki.nix" ];
|
|
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'] = 'bootstrap3';
|
|
$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', getenv('DOKUWIKI_ROOT'));" > $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}".finalPackage}/share/dokuwiki";
|
|
})
|
|
];
|
|
};
|
|
# On veut php-xml
|
|
services.phpfpm.pools."dokuwiki-${hostname}".phpPackage = pkgs.lib.mkForce ( pkgs.php74.withExtensions (
|
|
{ all, enabled, ... }:
|
|
enabled ++ [
|
|
all.xml
|
|
]
|
|
));
|
|
}
|