172 karma · joined July 8, 2021
I don't even use any advanced config, just bare-minimum config for the system, enough (project-specific things handled by nix).
So the phrase the article says "Package managers keep falling for this. And it keeps not working out" I feel that's untrue.
The most issue I have with this really is "flakes" integration where the whole recipe folder is copied into the store (which doesn't happen with non-flakes commands), but that's a tooling problem not an intrinsic problem of using git
I use that with with macros to return akins to std::expected, while maintaining the code in the happy-path like with exceptions.
For example:
auto a;
will always fail to compile not matter what flags.
int a;
is valid.
Also it prevents implicit type conversions, what you get as type on auto is the type you put at the right.
That's good.
The easiest entry-point is to just use it like a package manager, you install nix (which is just a command...) and then you have available the whole set of packages which are searchable from here: https://search.nixos.org/packages
nix-shell is just to download&add programs temporary to your PATH.
I don't feel that this is harder than something like "sudo apt install -y xxxxx" but for sure more robust and portable, and doesn't require sudo.
If at some point you want to learn the language in order to create configurations or packaging software, it may require to check a lot more documentation and examples, but for this I think it's pretty straightforward and is not harder than any other package manager like aptitude, homebrew or pacman.
Remote: Preferred
Willing to relocate: No
Technologies: C++(up to 23), Nix, Linux Namespaces / Docker, Python, CUDA, FPGA development(xilinx) with a little bit of linux driver development, verilog, reverse engineering, Rust-curious... In general I touch a lot of stuff and learn fast :)!
Résumé/CV: https://rucadi.eu/cv.html
Email: rubencanodiaz[<at>]gmail.com
I'm kinda of the opinion that the real option to handle dotfiles is to override/overlay the package itself with the dotfiles, patching if necessary in order to make it look to the dotfile inside the store, so you can copy the closure of *your* whole app to any machine even if they don't use/can't use nix tho.
The same about exported symbols and being able to compile to wasm easily.
However it seems like C++ wants to only provide this kind of pattern via monadic operations.
nix build github:NixOS/nixpkgs#pkgsStatic.git
return the pacakge as:
ls -lah git
-r-xr-xr-x 1 rucadi rucadi 5.1M Jan 1 1970 git
ldd git
$ not a dynamic executable
So you don't really need to really grow the container
See autocad for web for example, is kinda the same. Or Photopea, photoshop's clone.