Having a Nim sequence:

var buff = newSeq[byte](buffSize)

if you want to get a pointer to the underlying data buffer that is suitable for being passed to a C library, you can simply use:

sha256Update(ctx, addr buff[0], input[i].len.uint)

If your input is a string, you can use the following:

let str = "abcdefghijklmnopqrstuvwxyz"
sha256Update(ctx, str.cstring, input[i].len.uint)

Here we use sha256Update from BearSSL library. See How to create a hash using BearSSL for more complete examples. See also Accessing seq pointer, Use cstring for C binding, and Arrays and Sequences in nim on Nim forum.