My copy of scrypt seems to certainly take an explicit salt buffer:

```
int
crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
    const uint8_t * salt, size_t saltlen, uint64_t N, uint32_t r, uint32_t p,
    uint8_t * buf, size_t buflen)
```

That said, I'm find with derivation not having a salt param and constructors having one. Semantically, I think it's the context that should be a derivation parameter... I guess we're all just going to have to partially apply that to create more KDF functions all the time :)