{ 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 " $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 ] )); }