TLDR: default.nix was pointing to an unmaintained code base whereas stable.nix is up-to-date and maintained.
History
1. At first their was one Python version of vdirsyncer that had been working fine for years. Then, maintenance decreased and the package was marked as broken in nixpkgs.
2. The original author (@untitaker on github.com) of vdirsyncer decided to re-implement (part of) vdirsyncer in Rust. Nixpkgs made `vdirsyncer` point to the Rust version and renamed the Python historical version to `vdirsyncerStable`.
3. Eventually, @untitaker gave up on the Rust version.
4. Someone else (@WhyNotHugo on github.com) decided to take over maintenance of the Python version.
5. Mario Rodas (@marsam on github) and Damien Cassou updated the `vdirsyncerStable` to point to the work of @WhyNotHugo and mark the package as working again.
* vdirsyncer: standardize derivation
Use toPythonApplication and use callPackage from python-packages.nix.
Make vdirsyncerStable somewhat functional again, but mark it as broken
for Python 3.6 or higher.
* vdirsyncer: use buildPythonPackage as it's a package now
* vdirsyncer: move to python-modules/
* vdirsyncer: Move disabled logic into expression