98 karma · joined November 29, 2020
Everything which isn't in nixpkgs I prefer to install manually (such as IDEs, VirtualBox, Docker, ...) because the built-in installer/updater is more robust than brew and most of the time brew just invokes the native installer anyways.
If something is in nixpkgs though you can be pretty certain that it will work at your colleagues machine just like it does on yours which is great.
Much quicker than a `brew install` for me.
If its a personal PC I probably also want the package if I ever were to reinstall the PC. => Use NixOS and add it to the configuration.
If its for work I probably want my colleagues to have the package as well => nix-shell.
Once I started using Nix just quickly installing a package felt really hacky to me, just like a dirty workaround.
I just hate when some project's README.md says: "Yeah, just do apt-get install <long list of packages> and you are good to go".
The chance that this works successfully is about 0.
EDIT: typo
- If you want the package just for now and probably not later use `nix-shell -p`
- If you always need the package for a specific project add it to `shell.nix` (`flake.nix`) of that project.
- If you need the package globally use home-manager, nix-darwin, NixOS
That is not required.
NixOS gives a level of reproducability that other tools like Ansible won't ever be able to give you.
This reproducability means it makes debugging problems very easy: E.g. uncomment a line in the config and see if something starts working again. You can nearly undo everything cleanly in NixOS by just doing that.
On the other hand the learning curve really is pretty steep. Took me about half a year to get to a point where I understood it enough to be able to debug most errors.
They don't mean that you just silently ignore the null value, they mean that they would prefer to use a language that has proper optional types.
If an Android user is travelling with an AirTag other people (e.g. a colleague) with iPhones will "send the signal to the motherships" but they won't get the alert as they most likely won't be in proximity of the AirTag long enough to trigger it.