Thinking with multiple brains is better than one!
The idea of limiting the player is not a bad one, indeed.
To achieve this, it would be enough to write in the data file:
data.raw.character.crafting_categories = nil --{"crafting"}
But I think adding a new category would then be necessary to at least be able to craft the workbenches.
-- new category
local newCategory = {
type = "recipe-category",
name = "manual-crafting",
}
data:extend({newCategory})
data.raw.character.crafting_categories = {"manual-crafting"}
Therefore, this property will need to be added to the recipe for all workbenches:
category = "manual-crafting",
But the issue remains that we cannot build inside a vehicle.