···212212213213 systemd.services.paperless-scheduler = {
214214 description = "Paperless Celery Beat";
215215+ wantedBy = [ "multi-user.target" ];
216216+ wants = [ "paperless-consumer.service" "paperless-web.service" "paperless-task-queue.service" ];
215217 serviceConfig = defaultServiceConfig // {
216218 User = cfg.user;
217219 ExecStart = "${pkg}/bin/celery --app paperless beat --loglevel INFO";
218220 Restart = "on-failure";
219221 };
220222 environment = env;
221221- wantedBy = [ "multi-user.target" ];
222222- wants = [ "paperless-consumer.service" "paperless-web.service" "paperless-task-queue.service" ];
223223224224 preStart = ''
225225 ln -sf ${manage} ${cfg.dataDir}/paperless-manage
···248248249249 systemd.services.paperless-task-queue = {
250250 description = "Paperless Celery Workers";
251251+ after = [ "paperless-scheduler.service" ];
251252 serviceConfig = defaultServiceConfig // {
252253 User = cfg.user;
253254 ExecStart = "${pkg}/bin/celery --app paperless worker --loglevel INFO";
···275276276277 systemd.services.paperless-consumer = {
277278 description = "Paperless document consumer";
279279+ # Bind to `paperless-scheduler` so that the consumer never runs
280280+ # during migrations
281281+ bindsTo = [ "paperless-scheduler.service" ];
282282+ after = [ "paperless-scheduler.service" ];
278283 serviceConfig = defaultServiceConfig // {
279284 User = cfg.user;
280285 ExecStart = "${pkg}/bin/paperless-ngx document_consumer";
281286 Restart = "on-failure";
282287 };
283288 environment = env;
284284- # Bind to `paperless-scheduler` so that the consumer never runs
285285- # during migrations
286286- bindsTo = [ "paperless-scheduler.service" ];
287287- after = [ "paperless-scheduler.service" ];
288289 };
289290290291 systemd.services.paperless-web = {
291292 description = "Paperless web server";
293293+ # Bind to `paperless-scheduler` so that the web server never runs
294294+ # during migrations
295295+ bindsTo = [ "paperless-scheduler.service" ];
296296+ after = [ "paperless-scheduler.service" ];
292297 serviceConfig = defaultServiceConfig // {
293298 User = cfg.user;
294299 ExecStart = ''
···312317 # Allow the web interface to access the private /tmp directory of the server.
313318 # This is required to support uploading files via the web interface.
314319 unitConfig.JoinsNamespaceOf = "paperless-task-queue.service";
315315- # Bind to `paperless-scheduler` so that the web server never runs
316316- # during migrations
317317- bindsTo = [ "paperless-scheduler.service" ];
318318- after = [ "paperless-scheduler.service" ];
319320 };
320321321322 users = optionalAttrs (cfg.user == defaultUser) {
+4
nixos/tests/paperless.nix
···2626 # Wait until server accepts connections
2727 machine.wait_until_succeeds("curl -fs localhost:28981")
28282929+ # Required for consuming documents via the web interface
3030+ with subtest("Task-queue gets ready"):
3131+ machine.wait_for_unit("paperless-task-queue.service")
3232+2933 with subtest("Add a document via the web interface"):
3034 machine.succeed(
3135 "convert -size 400x40 xc:white -font 'DejaVu-Sans' -pointsize 20 -fill black "