Hi Alfredo,

I will let this gist talk for me:

https://gist.github.com/adinapoli/d4c33a9d1ea85bcaebdf

1) Shed some light on my specific use case: Can I do better here? (aka have GHC figure out automatically all the nitty gritty details)

You're installing into a cabal sandbox and compiling directly with ghc (not cabal), but ghc doesn't know anything about the sandbox. You need to point it to the package database with -package-db and tell it the package for linking with -package [2].

$ ghc -package-db .cabal-sandbox/x86_64-osx-ghc-7.8.3-packages.conf.d -package snappy HelloSnappy.hs
Linking HelloSnappy ...
$ ./HelloSnappy
HelloSnappy: foo.jpg: openBinaryFile: does not exist (No such file or directory)

[1] http://www.haskell.org/ghc/docs/latest/html/users_guide/packages.html#package-databases
[2] http://www.haskell.org/ghc/docs/latest/html/users_guide/options-phases.html#options-linker

Regards,
Sean