mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 17:27:14 +08:00 
			
		
		
		
	Merge pull request #77 from Mic92/imp/contributing-suggestions
[rebased from #67] Suggestions for CONTRIBUTING
This commit is contained in:
		@@ -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*.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user