Do you need to detect varying levels of radiation? If your safety depends on your equipment, then you should probably buy it from a reputable manufacturer. On the other hand, hacker Prabhat built a DIY version that looks good, and also appears to work quite well.
The device is sort of like a mix between a Tricorder and a futuristic vacuum cleaner, implementing a display on the top, and with a flared front section that houses a Soviet-era SBM-20 detection tube. When radioactive particles enter the tube it ionizes gas molecules, creating a detectable electrical spike that is used to infer the atmospheric radiation levels. Feedback is via a small piezo speaker, as well as a touchscreen that acts as an interface and offers information to the user.
Electronics-wise, the Geiger counter is surprisingly simple, with a NodeMCU ESP8266 board providing computing power, along with a buck converter used to supply 430 volts to the ionization tube. Code, however, is not, involving around 1,000 lines written in Arduino C. Much of this is dedicated to the graphical interface, though, generated using the Adafruit GFX library. It allows you to select radiation units, alarm thresholds, and whether it averages over a minute or three seconds.
The device is shown off in the video below, and while the small uranium sample tested isn’t that radioactive, a thorium mantle for a gas lamp is disturbingly ‘hot.’ Code and the circuit schematic is available on GitHub.