diff options
author | Samuel Dionne-Riel <samuel@dionne-riel.com> | 2023-07-04 13:06:43 -0400 |
---|---|---|
committer | Samuel Dionne-Riel <samuel@dionne-riel.com> | 2023-07-04 13:42:57 -0400 |
commit | a6e61a1ea9c71cec5eb83b1dc800805f55594a83 (patch) | |
tree | 04da0694ddff3971dcd7cf69de85a94996840e83 /nixos | |
parent | 0fbe93c5a7cac99f90b60bdf5f149383daaa615f (diff) | |
download | nixlib-a6e61a1ea9c71cec5eb83b1dc800805f55594a83.tar nixlib-a6e61a1ea9c71cec5eb83b1dc800805f55594a83.tar.gz nixlib-a6e61a1ea9c71cec5eb83b1dc800805f55594a83.tar.bz2 nixlib-a6e61a1ea9c71cec5eb83b1dc800805f55594a83.tar.lz nixlib-a6e61a1ea9c71cec5eb83b1dc800805f55594a83.tar.xz nixlib-a6e61a1ea9c71cec5eb83b1dc800805f55594a83.tar.zst nixlib-a6e61a1ea9c71cec5eb83b1dc800805f55594a83.zip |
nixos: Formally deprecate `boot.loader.raspberryPi`
The whole option set was recommended against since mid-2019, and never worked with the Raspberry Pi 4 family of devices. We should have deprecated it in early 2020 for removal by 2021. At the time I did not feel confident in making such a decision, and never ended-up getting around to it. The ***only*** supported-by-NixOS boot methods for AArch64 are standards-based boot methods, namely UEFI or the pragmatically almost-standard extlinux-compatible for U-Boot. You can quote me on that.
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/doc/manual/release-notes/rl-2311.section.md | 2 | ||||
-rw-r--r-- | nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix | 64 |
2 files changed, 57 insertions, 9 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2311.section.md b/nixos/doc/manual/release-notes/rl-2311.section.md index 0844596d7f6c..538c2d2f816f 100644 --- a/nixos/doc/manual/release-notes/rl-2311.section.md +++ b/nixos/doc/manual/release-notes/rl-2311.section.md @@ -24,6 +24,8 @@ ## Backward Incompatibilities {#sec-release-23.11-incompatibilities} +- The `boot.loader.raspberryPi` options have been marked deprecated, with intent for removal for NixOS 24.11. They had a limited use-case, and do not work like people expect. They required either very old installs ([before mid-2019](https://github.com/NixOS/nixpkgs/pull/62462)) or customized builds out of scope of the standard and generic AArch64 support. That option set never supported the Raspberry Pi 4 family of devices. + - `python3.pkgs.sequoia` was removed in favor of `python3.pkgs.pysequoia`. The latter package is based on upstream's dedicated repository for sequoia's Python bindings, where the Python bindings from [gitlab:sequoia-pgp/sequoia](https://gitlab.com/sequoia-pgp/sequoia) were removed long ago. - `writeTextFile` now requires `executable` to be boolean, values like `null` or `""` will now fail to evaluate. diff --git a/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix index 1dde55074336..9c9bee93de8a 100644 --- a/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix +++ b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix @@ -52,6 +52,10 @@ in Whether to create files with the system generations in `/boot`. `/boot/old` will hold files from old generations. + + ::: {.note} + These options are deprecated, unsupported, and may not work like expected. + ::: ''; }; @@ -67,6 +71,10 @@ in type = types.bool; description = lib.mdDoc '' Enable using uboot as bootmanager for the raspberry pi. + + ::: {.note} + These options are deprecated, unsupported, and may not work like expected. + ::: ''; }; @@ -76,6 +84,10 @@ in type = types.int; description = lib.mdDoc '' Maximum number of configurations in the boot menu. + + ::: {.note} + These options are deprecated, unsupported, and may not work like expected. + ::: ''; }; @@ -87,19 +99,53 @@ in description = lib.mdDoc '' Extra options that will be appended to `/boot/config.txt` file. For possible values, see: https://www.raspberrypi.com/documentation/computers/config_txt.html + + ::: {.note} + These options are deprecated, unsupported, and may not work like expected. + ::: ''; }; }; }; - config = mkIf cfg.enable { - assertions = singleton { - assertion = !pkgs.stdenv.hostPlatform.isAarch64 || cfg.version >= 3; - message = "Only Raspberry Pi >= 3 supports aarch64."; - }; + config = mkMerge[ + (mkIf cfg.uboot.enable { + warnings = [ + '' + The option set for `boot.loader.raspberrypi.uboot` has been recommended against + for years, and is now formally deprecated. + + It is possible it already did not work like you expected. + + It never worked on the Raspberry Pi 4 family. + + These options will be removed by NixOS 24.11. + '' + ]; + }) + (mkIf cfg.enable { + warnings = [ + '' + The option set for `boot.loader.raspberrypi` has been recommended against + for years, and is now formally deprecated. + + It is possible it already did not work like you expected. + + It never worked on the Raspberry Pi 4 family. + + These options will be removed by NixOS 24.11. + '' + ]; + }) + (mkIf cfg.enable { + assertions = singleton { + assertion = !pkgs.stdenv.hostPlatform.isAarch64 || cfg.version >= 3; + message = "Only Raspberry Pi >= 3 supports aarch64."; + }; - system.build.installBootLoader = builder; - system.boot.loader.id = "raspberrypi"; - system.boot.loader.kernelFile = pkgs.stdenv.hostPlatform.linux-kernel.target; - }; + system.build.installBootLoader = builder; + system.boot.loader.id = "raspberrypi"; + system.boot.loader.kernelFile = pkgs.stdenv.hostPlatform.linux-kernel.target; + }) + ]; } |