Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nixos/version: validate system.stateVersion #379754

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

eclairevoyant
Copy link
Contributor

@eclairevoyant eclairevoyant commented Feb 6, 2025

New users do not understand the purpose of system.stateVersion and often set it to invalid values when switching channels.
Since they don't read the comment nor the option description, add a sterner assertion to warn them about clearly invalid values like "unstable".
This prevents issues like https://discourse.nixos.org/t/how-to-exclude-xterm-from-nixos/59887.

This only validates that the stateVersion string matches the (2 digits).(2 digits) format, and eschews additional restrictions.
If one needs a "maximal" or "minimal" value for testing purposes, values like "00.00" and "99.99" are still permissible.

#351158 is a similar but ultimately different PR.
I prefer my approach as it

  • doesn't try to exhaustively validate every single version against prior releases (as that increases maintenance effort)
  • permits "testing" values if needed
  • provides a proper error message to the user explaining what they did incorrectly and how to fix it.

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 👍 reaction to pull requests you find important.

@github-actions github-actions bot added 6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS 8.has: module (update) This PR changes an existing module in `nixos/` labels Feb 6, 2025
@eclairevoyant
Copy link
Contributor Author

Am I supposed to edit nixos/doc/manual/release-notes/ or doc/release-notes/? We have release notes in both, apparently...

@github-actions github-actions bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin 10.rebuild-linux: 1-10 labels Feb 6, 2025
@eclairevoyant eclairevoyant marked this pull request as ready for review February 6, 2025 04:13
@NotAShelf
Copy link
Member

Am I supposed to edit nixos/doc/manual/release-notes/ or doc/release-notes/? We have release notes in both, apparently...

nixos/doc/manual/release-notes/rl-2505.section.md I believe.

${config.system.stateVersion} is an invalid value for `system.stateVersion`; it must be in the format `YY.MM`, which corresponds to a prior release of NixOS.
If you want to switch releases or switch to unstable, you should change your channel and/or flake input URLs only.
*DO NOT* touch the `system.stateVersion` option, as it will not help you upgrade.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit but since backticks aren't used for anything in terminals, I would like to suggest using ' ' instead. Looks a little more coherent imho.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS 8.has: module (update) This PR changes an existing module in `nixos/` 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin 10.rebuild-linux: 1-10
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants