{ pkgs, ... }: let mkWwwContent = { domain }: pkgs.stdenvNoCC.mkDerivation { pname = "www-content"; version = domain; src = ./.; # Build dependencies nativeBuildInputs = [ pkgs.hugo pkgs.glibcLocales (pkgs.python3.withPackages (python-pkgs: [ python-pkgs.icalendar python-pkgs.pytz ])) ]; LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive"; # Build phase - run Hugo to generate the site buildPhase = '' mkdir -p public hugo --baseURL=https://${domain}/ python3 ./tools/merge_cals.py upcoming="$(python3 tools/gen_upcoming.py static/all.ics 20 5 | tr '\n' ' ')" cp static/all.ics public/all.ics sed -i "s#CALENDAR#$upcoming#g" public/index.html ''; # Install phase - copy the public directory to the output installPhase = '' mkdir -p $out cp -r public/* $out/ ''; }; in { production-content = mkWwwContent { domain = "berlin.ccc.de"; }; staging-content = mkWwwContent { domain = "staging.berlin.ccc.de"; }; local-content = mkWwwContent { domain = "localhost"; }; }