{ config, pkgs, lib, ... }: let serviceValidation = import ../validation/service/kiwix.nix; service_data = import ../config/services.nix; kiwix = serviceValidation.getKiwix service_data; rootDir = kiwix.root_dir; zimUrls = kiwix.urls; updater = pkgs.writeShellScriptBin "kiwix-updater" '' set -e URLS=( ${builtins.concatStringsSep " " zimUrls} ) download() { local url=''$1 local filename=''$(basename "''$url") local filepath="${rootDir}"/''$filename if [ -f "''$filepath" ]; then echo "''$filepath exists!" return 0 fi cd ${rootDir} ${pkgs.wget}/bin/wget --continue --quiet "''$url" -O "''$filename.tmp" mv ''$filename.tmp ''$filename } build_lib() { { echo '' echo '' for zim in "${rootDir}"/*.zim; do if [ -f "''$zim" ]; then filename=''$(basename "''$zim") size=''$(stat -c%s "''$zim") case "''$filename" in *_en_*) title="English Wikipedia (Text Only)" lang="eng" ;; *_de_*) title="German Wikipedia (Text Only)" lang="deu" ;; *) title="''$filename" lang="unknown" ;; esac cat << EOF ''$title ''$lang /data/''$filename ''$size EOF fi done echo '' } > "${rootDir}/library.xml.tmp" mv "${rootDir}/library.xml.tmp" "${rootDir}/library.xml" } for url in "''${URLS[@]}"; do download "''$url" done build_lib ${pkgs.systemd}/bin/systemctl restart podman-kiwix-serve.service ''; in { environment.systemPackages = with pkgs; [ wget curl ]; services.cron = { enable = true; systemCronJobs = [ "0 3 * * * root ${updater}/bin/kiwix-updater >/dev/null 2>&1" ]; }; }