Ask HN: How do you set up a new dev machine? (2025 edition)

11 daryllxd 8 5/30/2025, 10:35:06 AM
Looking for ideas here! New machine will be on OS X. I am currently playing around with Ansible and for now I am able to set up much of the non-dev applications + `pnpm`, `ruby`, `go`. (I based a lot of it on https://github.com/geerlingguy/mac-dev-playbook as I wanted to learn Ansible anyway).

Thank you!

Comments (8)

runjake · 2d ago
First, using Ansible for setting up a single Mac is way overkill. Jeff's only doing it because he literally wrote the book on Ansible. For a single Mac where you want reproducible, just use shell script(s).

Anyway, for my Ansible environment for servers and network devices, I use uv[1]. It works flawlessly.

If I were doing things even more right, I'd host it in a container, but I don't have time for all that right now.

And nobody's mentioned Homebrew[2], yet.

PS: OS X is now called macOS, and at least in some parts, "OS X" is still used to refer to really old OS releases and may generate some confusion.

1. https://docs.astral.sh/uv/

2. https://brew.sh/

yb6677 · 2d ago
I also use Ansible to setup Mac and not overkill at all.

On a new Mac, I install Homebrew, install ansible via Brew.

And then run an Ansible script which installs a series of Brew items (ansible has a brew module) along with other stuff not on brew.

daryllxd · 1d ago
> And then run an Ansible script which installs a series of Brew items (ansible has a brew module) along with other stuff not on brew.

Yes, this is what I have right now. I have it set up to install some non-Brew stuff as well (Chrome, Firefox, Whatsapp, etc.). I intend on using this even for my non-tech family's machines, ideally should just be 1 script to install `homebrew`, `pip` (or `uv` like the other fellow said) + Ansible, and then 1 script to install everything else via the brew module.

hiAndrewQuinn · 2d ago
For Ubuntu, not Mac, but I maintain a set of 3 shell scripts over at https://github.com/hiAndrewQuinn/shell-bling-ubuntu that put 95% of everything I use on an everyday basis.

I picked shell scripts specifically because I didn't want the overhead of installing eg Ansible, even if its idempotency would be nice. I definitely like Ansible for DevOps on virtual machines, though, it's a solid platform.

daryllxd · 1d ago
Awesome, I think this is kind of what I am going for re: the goodies. I am a tmux guy as well but will try them out.

I'm leaning towards Ansible as I wanted to learn it this year for VMs too. So there is some overlap with the local machines + am still on MacOS.

Curious why you went with fish over zsh? (Zsh is more common in my circles)

hiAndrewQuinn · 12h ago
Honestly, fish just has a much nicer user experience OOTB for me than anything else I've used. The way it colors commands, arguments etc automatically was what sold me on it more than anything.

It's an excellent shell for interactive use. I would recommend writing actual shell scripts in Bash or good old POSIX shell however, if for no other reason than LLMs generate much better Bash code than Fish code. Zsh is similar enough to Bash that I haven't heard of it making much difference.

aristofun · 2d ago
By restoring from previous machine’s time machine backup apparently.

If it’s a working mac - by following corporate guides.

I wonder why complicate your life?

daryllxd · 2d ago
Hey, thanks - I don't think it's a good idea to time machine my personal laptop to my new work laptop. And definitely I would try to follow the guides if the company has them.

> I wonder why complicate your life?

I wouldn't say it's complicating life? I'm quite having fun tinkering around with it. I intend to use the playbook (or maybe Brewfile as one of my friends recommend that as well) for setting up future machines for my family and I.