So far I've got the main functionality of register-path working: it successfully puts the passed information in a database (at least in my manual tests it did), and it even puts it in the right database based on prefix and state-directory. But there are quite a few side-effects missing, most of them noted above register-path in store.scm. There's deduplication, resetting timestamps and permissions and stuff (the C++ code called it "canonicalizing"), actually returning true in the case of success like the documentation says it should, processing environment variables, and figuring out if I should be automatically creating the database if it doesn't exist yet. Currently the register-path unit test fails due to being unable to open the database for writing - the test doesn't specify a prefix or state-directory, so it's trying to open /var/guix/db/db.sqlite, which requires root access to open for writing. Perhaps the test is using an environment variable or similar to specify a different database, which I haven't implemented yet. Comments welcome.