Repository navigation
nixos-modules: Give the evaluator its own module - #1983
Open
Ericson2314 wants to merge 1 commit into
Open
Ericson2314 wants to merge 1 commit into
Ericson2314 wants to merge 1 commit into
Conversation
The evaluator's service and settings lived in the web app's module, so the evaluator could only be configured along with the web app. Every other Rust service already has a module of its own: the queue runner, the builder, the websocket server and `hydra-ad-hoc`. The evaluator now does too, `evaluator-module.nix`, under `services.hydra-evaluator-dev`. This doesn't yet make it possible to run the evaluator elsewhere. Until more work is done it must be on the same machine as the web app: it runs Hydra's Perl, which reads the web app's `hydra.conf` and data directory, and it evaluates into the local Nix store. The module asserts this, and its `enable` defaults to the web app's, so existing deployments keep their evaluator. - The environment the web app's services share moves to `web-app-env.nix`, so that the evaluator module can use it too. - `services.hydra-dev.evaluatorSettings` and `minimumDiskFreeEvaluator` are renamed to `services.hydra-evaluator-dev.settings` and `minimumDiskFree`. - `services.hydra-dev.evaluatorExecutable` is replaced by `services.hydra-evaluator-dev.package`, matching the other modules. One behavior changes: changing `hydra.conf` no longer restarts the evaluator, killing any evaluation in progress. The restart dates from the C++ evaluator, which read `hydra.conf` once at startup. The Rust evaluator doesn't read it at all; only the Perl it runs does, and that starts afresh for each evaluation, so the next evaluation picks up the change. Assisted-by: Claude Code (Opus 5.5)
Ericson2314
commented
Oct 7, 2026
Member
Author
There was a problem hiding this comment.
I don't love needing this file, but if we get rid of plugins or redo them in Rust or whatever, then this goes away
Conni2461
approved these changes
Oct 8, 2026
Conni2461
left a comment
Member
There was a problem hiding this comment.
thanks for doing the refactor. that aligns the setup more with the new queue runner :) changes look good to me. feel free to merge whenever
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Did this because @Conni2461 asked about it in #1940 (comment)
The evaluator's service and settings lived in the web app's module, so the evaluator could only be configured along with the web app. Every other Rust service already has a module of its own: the queue runner, the builder, the websocket server and
hydra-ad-hoc. The evaluator now does too,evaluator-module.nix, underservices.hydra-evaluator-dev.This doesn't yet make it possible to run the evaluator elsewhere. Until more work is done it must be on the same machine as the web app: it runs Hydra's Perl, which reads the web app's
hydra.confand data directory, and it evaluates into the local Nix store. The module asserts this, and itsenabledefaults to the web app's, so existing deployments keep their evaluator.The environment the web app's services share moves to
web-app-env.nix, so that the evaluator module can use it too.services.hydra-dev.evaluatorSettingsandminimumDiskFreeEvaluatorare renamed toservices.hydra-evaluator-dev.settingsandminimumDiskFree.services.hydra-dev.evaluatorExecutableis replaced byservices.hydra-evaluator-dev.package, matching the other modules.One behavior changes: changing
hydra.confno longer restarts the evaluator, killing any evaluation in progress. The restart dates from the C++ evaluator, which readhydra.confonce at startup. The Rust evaluator doesn't read it at all; only the Perl it runs does, and that starts afresh for each evaluation, so the next evaluation picks up the change.Assisted-by: Claude Code (Opus 5.5)