My goto for doing CAD stuff on Linux is currently SolveSpace. It's pretty great except it becomes unusably slow once models get complicated with lots of instancing through step+repeat operations.
Otherwise, its UI is minimal and stays out of the way for the most part, the way it encourages components residing in separate files then be linked into assemblies is very intuitive for a programmer like me, and it's proven to be quite stable.
I hope SolveSpace can get more attention to improve the performance problems, because I often find myself making models too complicated for it to handle before it gets bogged down then I end up halting progress on the project adding another "profile solvespace and optimize whatever is preventing further progress here" entry to my endless TODO list.
Edit:
Here's some context on the kind of SolveSpace limitations I've encountered...
The most recent thing was modeling a heat exchanger made of transversely stacked Coroplast sheets. I modeled the channel details of Coroplast w/a large step+repeat between two layers, then linked that sheet into an assembly twice in the two transverse orientations, those were then each step+repeated with a 1-sheet gap to accommodate one another to form the entire stack. It quickly degenerated into half-hour redraws and I gave up finishing the assembly. It's really too bad, because putting something like that together is otherwise super fast and easy in SolveSpace. I love using it for quick engineering project mockups.
If anyone is looking for a parametric CAD optimization rabbit hole to go down, please geek on on SolveSpace! I'm sure others would appreciate it.
There are actually a few people that know quite a bit and can help people wanting to get involved. It all volunteers so be patient and willing to dig. Go through the open issues, there's a lot of variety.
I'd like to recommend FreeCAD to the audience, which is a fairly feature-rich CAD Software. FreeCAD is particularly good at parametric modeling. It's mainly C++ with Qt, and enjoys pervasive scriptability through Python. I've also written a Jupyter notebook integration, but it can be a bit tricky to install.
The bad parts: The GUI is very usable, but tends to annoy me quite often. It's also relatively easy to crash. There does not seem to be a clear formal structure behind the overall project, leading to forking and the co-existence of modules that don't play that well with each other. There is no clear path to learn the Software, but the effort is worth it. There are a lot of tutorials, though the ones I found the best where often in German, sometimes English by Germans.