diff options
Diffstat (limited to 'modules/nixos-hardware/CONTRIBUTING.md')
-rw-r--r-- | modules/nixos-hardware/CONTRIBUTING.md | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/modules/nixos-hardware/CONTRIBUTING.md b/modules/nixos-hardware/CONTRIBUTING.md new file mode 100644 index 000000000000..ea468923ae10 --- /dev/null +++ b/modules/nixos-hardware/CONTRIBUTING.md @@ -0,0 +1,31 @@ +# Writing profiles + +When setting an option, use `lib.mkDefault` unless: +- The option *must* be set and the user should get an error if they try to override it. +- The setting should merge with the user's settings (typical for list or set options). + +For example: + +```nix +{ lib }: { + # Using mkDefault, because the user might want to disable tlp + services.tlp.enable = lib.mkDefault true; + # No need to use mkDefault, because the setting will merge with the user's setting + boot.kernelModules = [ "tmp_smapi" ]; +} +``` + +Try to avoid "opinionated" settings relating to optional features like sound, bluetooth, choice of bootloader etc. + +Where possible, use module imports to share code between similar hardware variants. + +# Performance + +Profiles should favor usability and stability, so performance improvements should either be conservative or +be guarded behind additional NixOS module options. + +If it makes sense to have a performance-focussed config, it can be declared in a separate profile. + +# Testing + +Because profiles can only be tested with the appropriate hardware, quality assurance is up to *you*. |