Allow me to start by saying I'm no expert in Haskell. I've written some during my undergrad and my postgrad. However, I'm currently brushing up and spending alot of my free time investing in learning Haskell and what will eventually be Plutus for Cardano.
So, with that said, as a graduate from the university of manchester and a postgrad from the University of Edinburgh, this ain't no cakewalk.
I must have spent quite a while trying to instantiate a NIX shell, which is probably easy as pie for any Haskell developer. But, if you're like me, it's going to take some time, effort, and research to get to grips with a language and the tooling for that language that you've not used in a good couple of years.
To the point. As you should probably know: you don't want to be instantiating a nix-shell within Cardano without implementing the IOHK binary caches, otherwise, you'll be sat there for, well, ever (trust me, I tried it).
So, you'll want to follow the advice laid out here: https://github.com/input-output-hk/plutus#iohk-binary-cache
Except, this didn't work for me... I was met with a rather unsavory error: '/usr/lib/libSystem.B.dylib': No such file or directory
Right, so I'm no expert, so take whatever I say with a pinch of salt. But I found that disabling the sandbox for NIX on macOS resolved this issue for me. I was able o then run a NIX-SHELL quickly and easily. There are probably tons of better solutions, but this is what I'm working with for now. If anyone can shed additional light on why this is the case, that would be appreciated. I was under the impression that sandboxing in macOS for NIX should be OKAY: "These days it should be safe to turn on sandboxing on macOS with a few exceptions."
I suppose those "few exceptions" applied to me. Anyway, I hope this may be of help to others who are encountering similar problems. Either way, I look forward to developing on Cardano in the future with a lot of bright individuals.