3 ms·
Something I couldn’t get about nix by skimming the documentation is how it manages application configuration. Using traditional systems when you upgrade the pac
by zaphirplane 7y ago
Something I couldn’t get about nix by skimming the documentation is how it manages application configuration.
Using traditional systems when you upgrade the package responsible for the network configuration my current configuration is carried thru or merged into the new format if the package changes it’s configuration syntax. How does nixos manage /etc ?
- evil-olive 7y agoFor the majority of changes, it "just works". For example, here's the part of nixpkgs that configures wireless networking via wpa_supplicant, as well as the actual package build of wpa_supplicant: https://github.com/NixOS/nixpkgs/blob/nixos-19.09/nixos/modules/services/networking/wpa_supplicant.nix https://github.com/NixOS/nixpkgs/blob/nixos-19.09/nixos/modu... https://github.com/NixOS/nixpkgs/blob/nixos-19.09/pkgs/os-specific/linux/wpa_supplicant/default.nix https://github.com/NixOS/nixpkgs/blob/nixos-19.09/pkgs/os-sp... Because they're contained within the same git repo, if a new version of wpa_supplicant changed the syntax of wpa_supplicant.conf, the upgrade could be handled easily (assuming the user-facing options in NixOS didn't need to change). For more complicated changes, there's `system.stateVersion`: https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion An example of this would be if NixOS version A ships with Postgres version X by default, while NixOS version B upgrades to Postgres version Y. stateVersion allows a sane upgrade path where you can update to NixOS version B without breaking your database immediately (because stateVersion is still A).
- takeda 7y agoFiles in /etc shouldn't be modified directly. You edit configuration.nix and it generates these files. How it is done, depends on a module.