diff --git a/modules/services/web/rails/options.nix b/modules/services/web/rails/options.nix index f09f9de..322f39c 100644 --- a/modules/services/web/rails/options.nix +++ b/modules/services/web/rails/options.nix @@ -186,6 +186,13 @@ let should really use the Rails secrets system. ''; }; + + afterServices = mkOption { + type = types.listOf types.str; + default = [ ]; + example = [ "foo-key.service" ]; + description = "Additional services to start before Rails."; + }; }; config = { diff --git a/modules/services/web/rails/systemd.nix b/modules/services/web/rails/systemd.nix index 1488db5..498a298 100644 --- a/modules/services/web/rails/systemd.nix +++ b/modules/services/web/rails/systemd.nix @@ -39,7 +39,8 @@ let wants = plib.keyService app.database.passwordFile ++ - plib.keyService app.sourcedFile; + plib.keyService app.sourcedFile ++ + app.afterServices; after = [ "network.target" ] ++ @@ -47,7 +48,8 @@ let optional funcs.localpg "pg-accounts.service" ++ optional (!service.isMain) "rails-${app.name}-main" ++ plib.keyService app.database.passwordFile ++ - plib.keyService app.sourcedFile; + plib.keyService app.sourcedFile ++ + app.afterServices; preStart = optionalString service.isMain '' # Prepare the config directory: