You can import settings.typ in top.typ, and then import top.typ in education.typ. This way the variable/function definitions will propagate.
Or you can import settings.typ in all files that need it (education.typ, etc.).
What doesn't work is to have a file like top.typ contain
import "settings.typ": *
import "education.typ": *
and hope that this will make settings available in education.typ. Because each .typ file is "pure" in the sense that it only knows the variables/functions that are defined in the file, or imported. This way you don't have a file magically affecting the bindings available in another file, which is nice.It's true there are cases where you'd like something like the above. Currently you can do something like that using states and context (basically putting the "settings" into the document and retrieving that) but it's not so nice. In the future the plan is to make this nicer by allowing custom type definitions (and having show rules and set rules work with them as they work with built-in types).