Currently udev rules symlinks against platformio sources, pulling in the platformio source tree into the runtime closure.
Previous to platformio-core being exposed separately from platformio this also meant that you had no ergonomic way to avoid platformio in the system closure, even though you only wanted the udev rules.
We can avoid this by making platformio-core multi output, making it trivial to depend only on the udev rules.
PlatformIO is a pure python package that is in turn a package
manager. In a pure NixOS environment, this means that any downloaded
binary packages will not run. To make PlatformIO usable, there's a
chrootenv wrapper. However, in a mixed environment like other linux or
darwin, the pure python version will work, and in the case of darwin
only the pure version will work, since the chrootenv wrapper is not
supported.
To handle the above use cases we have:
* platformio -- unwrapped on darwin, wrapped on linux. Should always
provide a functional platformio.
* platformio-core -- always unwrapped (like "bintools-unwrapped") for
when the wrapper is explicitly not required. For
example, on other linux where the chrootenv is
not supported.