nixpkgs/nixos
Quantenzitrone 2521bebbf2
nixosTests.systemd-initrd-luks-fido2: fix test on aarch64-linux
This is the error message on fail:

> qemu-system-aarch64: -device canokey,file=/tmp/canokey-file: Warning:
>   speed mismatch trying to attach usb device "CanoKey QEMU" (full
>   speed) to bus "usb0.0", port "3" (high speed)

My Understanding of the Issue is: The test failed because
qemu-system-aarch64 apparently has different USB controllers enabled by
default, resulting in a "speed mismatch" between the USB controller and
CanoKey that only occurred on aarch64.
I could reproduce the issue on x86_64 by enabling the EHCI controller
and then fix the issue by specifying which USB bus to use for the
CanoKey.
This didn't fully fix the issue on my first attempt, because the UCHI
controller enabled by -usb doesn't have the same bus name on aarch64
and x86_64.
While bus=usb-bus.0 worked on x86_64, on aarch64 i get this message:

> qemu-system-aarch64: -device canokey,bus=usb-bus.0,file=
>   /tmp/canokey-file: Bus 'usb-bus.0' not found

The final solution now manually enables the OHCI controller (which may
be similar to UHCI, but i really have no idea other than it works) and
assigns it the id aka bus name "usb-bus", so it works the same under
both architectures.
2024-09-01 10:40:14 +02:00
..
doc/manual Merge pull request #318061 from PedroRegisPOAR/remove-extra-backtick 2024-06-09 10:48:16 +00:00
lib nixos/test-driver: fix return value of subtest function 2024-06-06 01:07:39 +02:00
maintainers Merge pull request #316162 from adamcstephens/lxd/vm-cfg-rw 2024-06-04 00:16:12 -04:00
modules Merge pull request #317035 from ck3d/fix-node-red-path 2024-06-09 20:13:58 +00:00
tests nixosTests.systemd-initrd-luks-fido2: fix test on aarch64-linux 2024-09-01 10:40:14 +02:00
COPYING
default.nix
README.md Release NixOS 24.05 2024-05-31 20:17:44 +02:00
release-combined.nix nixos/release-combined: fix evaluation 2024-06-05 17:50:37 +02:00
release-small.nix nixos-small: fix eval 2024-06-04 14:07:11 +02:00
release.nix treewide: rename renamed sddm/displayManager settings 2024-04-08 21:56:38 +02:00

NixOS

NixOS is a Linux distribution based on the purely functional package management system Nix. More information can be found at https://nixos.org/nixos and in the manual in doc/manual.

Testing changes

You can add new module to your NixOS configuration file (usually its /etc/nixos/configuration.nix). And do sudo nixos-rebuild test -I nixpkgs=<path to your local nixpkgs folder> --fast.

Commit conventions

  • Make sure you read about the commit conventions common to Nixpkgs as a whole.

  • Format the commit messages in the following way:

    nixos/(module): (init module | add setting | refactor | etc)
    
    (Motivation for change. Link to release notes. Additional information.)
    

    Examples:

    • nixos/hydra: add bazBaz option

      Dual baz behavior is needed to do foo.

    • nixos/nginx: refactor config generation

      The old config generation system used impure shell scripts and could break in specific circumstances (see #1234).

Reviewing contributions

When changing the bootloader installation process, extra care must be taken. Grub installations cannot be rolled back, hence changes may break peoples installations forever. For any non-trivial change to the bootloader please file a PR asking for review, especially from @edolstra.

Module updates

Module updates are submissions changing modules in some ways. These often contains changes to the options or introduce new options.

Reviewing process:

  • Ensure that the module maintainers are notified.
    • CODEOWNERS will make GitHub notify users based on the submitted changes, but it can happen that it misses some of the package maintainers.
  • Ensure that the module tests, if any, are succeeding.
    • You may invoke OfBorg with @ofborg test <module> to build nixosTests.<module>
  • Ensure that the introduced options are correct.
    • Type should be appropriate (string related types differs in their merging capabilities, loaOf and string types are deprecated).
    • Description, default and example should be provided.
  • Ensure that option changes are backward compatible.
    • mkRenamedOptionModuleWith provides a way to make renamed option backward compatible.
    • Use lib.versionAtLeast config.system.stateVersion "24.05" on backward incompatible changes which may corrupt, change or update the state stored on existing setups.
  • Ensure that removed options are declared with mkRemovedOptionModule.
  • Ensure that changes that are not backward compatible are mentioned in release notes.
  • Ensure that documentations affected by the change is updated.

Sample template for a module update review is provided below.

##### Reviewed points

- [ ] changes are backward compatible
- [ ] removed options are declared with `mkRemovedOptionModule`
- [ ] changes that are not backward compatible are documented in release notes
- [ ] module tests succeed on ARCHITECTURE
- [ ] options types are appropriate
- [ ] options description is set
- [ ] options example is provided
- [ ] documentation affected by the changes is updated

##### Possible improvements

##### Comments

New modules

New modules submissions introduce a new module to NixOS.

Reviewing process:

  • Ensure that all file paths fit the guidelines.
  • Ensure that the module tests, if any, are succeeding.
  • Ensure that the introduced options are correct.
    • Type should be appropriate (string related types differs in their merging capabilities, loaOf and string types are deprecated).
    • Description, default and example should be provided.
  • Ensure that module meta field is present
    • Maintainers should be declared in meta.maintainers.
    • Module documentation should be declared with meta.doc.
  • Ensure that the module respect other modules functionality.
    • For example, enabling a module should not open firewall ports by default.

Sample template for a new module review is provided below.

##### Reviewed points

- [ ] module path fits the guidelines
- [ ] module tests succeed on ARCHITECTURE
- [ ] options have appropriate types
- [ ] options have default
- [ ] options have example
- [ ] options have descriptions
- [ ] No unneeded package is added to `environment.systemPackages`
- [ ] `meta.maintainers` is set
- [ ] module documentation is declared in `meta.doc`

##### Possible improvements

##### Comments