{ pkgs, config, ... }: let ikiwikiDataPath = "/mnt/data/ikiwiki"; ikiwikiSettingsHeader = pkgs.writeText "ikiwiki-settings-header" '' # IkiWiki::Setup::Yaml - YAML formatted setup file ''; ikiwikiSettings = (pkgs.formats.yaml { }).generate "fi-zone-settings" { wikiname = "fi-zone"; adminemail = "fi@ikiwiki.vs.grzb.de"; adminuser = [ "fi" ]; banned_users = []; srcdir = "${ikiwikiDataPath}/fi-zone"; destdir = "${ikiwikiDataPath}/public_html/fi-zone"; url = "https://fi.nekover.se/"; cgiurl = "https://fi.nekover.se/ikiwiki.cgi"; reverse_proxy = 0; cgi_wrapper = "${ikiwikiDataPath}/public_html/fi-zone/ikiwiki.cgi"; cgi_wrappermode = "06755"; cgi_overload_delay = ""; cgi_overload_message = ""; only_committed_changes = 0; rcs = ""; add_plugins = [ "goodstuff" "websetup" "comments" "blogspam" "calendar" "sidebar" "trail" ]; disable_plugins = []; templatedir = "${pkgs.ikiwiki-full}/share/ikiwiki/templates"; underlaydir = "${pkgs.ikiwiki-full}/share/ikiwiki/basewiki"; usedirs = 1; prefix_directives = 1; indexpages = 0; discussion = 0; discussionpage = "Discussion"; html5 = 0; sslcookie = 0; default_pageext = "mdwn"; htmlext = "html"; timeformat = "%c"; userdir = ""; numbacklinks = 10; hardlink = 0; libdirs = []; libdir = "${ikiwikiDataPath}/.ikiwiki"; ENV = {}; timezone = ":/etc/localtime"; wiki_file_chars = "-[:alnum:]+/.:_"; allow_symlinks_before_srcdir = 0; cookiejar = { file = "${ikiwikiDataPath}/.ikiwiki/cookies"; }; useragent = "ikiwiki/${pkgs.ikiwiki-full.version}"; responsive_layout = 1; deterministic = 0; rss = 1; atom = 1; blogspam_pagespec = "postcomment(*)"; locked_pages = "* and !postcomment(*)"; comments_pagespec = "posts/* and !*/Discussion"; archive_pagespec = "page(posts/*) and !*/Discussion"; global_sidebars = 0; tagbase = "tags"; }; ikiwikiSettingsFile = pkgs.concatText "fi-zone.setup" [ ikiwikiSettingsHeader ikiwikiSettings ]; in { environment.systemPackages = with pkgs; [ ikiwiki-full ]; services.fcgiwrap.instances."ikiwiki" = { socket = { user = config.services.nginx.user; group = config.services.nginx.group; }; process = { user = config.services.nginx.user; group = config.services.nginx.group; }; }; systemd.services.ikiwiki-setup = { }; systemd.services.ikiwiki-settings-setup = { description = "Setup ikiwiki with configuration managed by NixOS."; serviceConfig = { Type = "simple"; ExecStart = "${pkgs.ikiwiki-full}/bin/ikiwiki --setup ${ikiwikiSettingsFile}"; User = config.services.nginx.user; Group = config.services.nginx.group; }; wantedBy = [ "multi-user.target" ]; }; }