{ config, pkgs, ... }: # This module sets up solr with one core. It is a bit tedious…. If you # know a better solution, please let me know. { services.solr = { enable = true; }; # This is needed to run solr script as user solr users.users.solr.useDefaultShell = true; systemd.services.solr-init = let solrPort = toString config.services.solr.port; initSolr = '' if [ ! -f ${config.services.solr.stateDir}/docspell_core ]; then while ! echo "" | ${pkgs.telnet}/bin/telnet localhost ${solrPort} do echo "Waiting for SOLR become ready..." sleep 1.5 done ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh solr -c "${pkgs.solr}/bin/solr create_core -c docspell -p ${solrPort}"; touch ${config.services.solr.stateDir}/docspell_core fi ''; in { script = initSolr; after = [ "solr.target" ]; wantedBy = [ "multi-user.target" ]; requires = [ "solr.target" ]; description = "Create a core at solr"; }; }