1
0
Fork 0
mirror of https://github.com/NixOS/nixos-hardware synced 2024-12-23 18:19:44 +01:00

Merge pull request #77 from Mic92/imp/contributing-suggestions

[rebased from #67] Suggestions for CONTRIBUTING
This commit is contained in:
Jörg Thalheim 2018-08-31 20:17:25 +01:00 committed by GitHub
commit 8fa41aff5b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,6 +1,31 @@
Profiles should favor usability and stability, so performance hacks should be
activated by an additional NixOS option or conservative and performance configs
can be declared in separate profiles.
# Writing profiles
Because profiles can only be tested with the appropriate hardware, quality
assurance is up to *you*.
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*.