NixOS profiles to optimize settings for different hardware. ## Setup ### Using channels Add and update `nixos-hardware` channel: ``` $ sudo nix-channel --add https://github.com/NixOS/nixos-hardware/archive/master.tar.gz nixos-hardware $ sudo nix-channel --update ``` Then import an appropriate profile path from the table below. For example, to enable ThinkPad X220 profile, your `imports` in `/etc/nixos/configuration.nix` should look like: ``` imports = [ ./hardware-configuration.nix ]; ``` New updates to the expressions here will be fetched when you update the channel. ## Using nix flakes support There is also experimental flake support. In your `/etc/nixos/flake.nix` add the following: ```nix { description = "NixOS configuration with flakes"; inputs.nixos-hardware.url = github:NixOS/nixos-hardware/master; outputs = { self, nixpkgs, nixos-hardware }: { # replace with your actual hostname nixosConfigurations. = nixpkgs.lib.nixosSystem { # ... modules = [ # ... # add your model from this list: https://github.com/NixOS/nixos-hardware/blob/flakes/flake.nix nixos-hardware.nixosModules.dell-xps-13-9380 ]; }; }; } ``` ### Using fetchGit You can fetch the git repository directly: ```nix imports = [ "${builtins.fetchGit { url = "https://github.com/NixOS/nixos-hardware.git"; }}/lenovo/thinkpad/x220" ]; ``` Unlike the channel, this will update the git repository on a rebuild. However, you can easily pin to a particular revision if you desire more stability. ## List of Profiles See code for all available configurations. | Model | Path | | --------------------------------- | -------------------------------------------------- | | [Acer Aspire 4810T][] | `` | | Airis N990 | `` | | Apple MacBook Air 3,X | `` | | Apple MacBook Air 4,X | `` | | Apple MacBook Air 6,X | `` | | [Apple MacBook Pro 10,1][] | `` | | Apple MacBook Pro 12,1 | `` | | Asus TUF FX504GD | `` | | BeagleBoard PocketBeagle | `` | | Dell Latitude 3480 | `` | | Dell Precision 5530 | `` | | [Dell XPS E7240][] | `` | | [Dell XPS 13 7390][] | `` | | [Dell XPS 13 9343][] | `` | | [Dell XPS 13 9360][] | `` | | [Dell XPS 13 9370][] | `` | | [Dell XPS 13 9380][] | `` | | [Dell XPS 15 7590][] | `` | | [Dell XPS 15 9550][] | `` | | [Dell XPS 15 9560][] | `` | | [Dell XPS 15 9560, intel only][] | `` | | [Dell XPS 15 9560, nvidia only][] | `` | | [Dell XPS 15 9500][] | `` | | [Dell XPS 15 9500, nvidia][] | `` | | [Google Pixelbook][] | `` | | [Inverse Path USB armory][] | `` | | Lenovo IdeaPad Z510 | `` | | Lenovo ThinkPad E470 | `` | Lenovo ThinkPad E495 | `` | | Lenovo ThinkPad L13 | `` | | Lenovo ThinkPad L14 (Intel) | ` | | Lenovo ThinkPad L14 (AMD) | ` | | Lenovo ThinkPad P53 | `` | | Lenovo ThinkPad T14s | `` | | Lenovo ThinkPad T14s AMD Gen 1 | `` | | Lenovo ThinkPad T410 | `` | | Lenovo ThinkPad T420 | `` | | Lenovo ThinkPad T430 | `` | | Lenovo ThinkPad T440s | `` | | Lenovo ThinkPad T440p | `` | | Lenovo ThinkPad T450s | `` | | Lenovo ThinkPad T460s | `` | | Lenovo ThinkPad T470s | `` | | Lenovo ThinkPad T480s | `` | | Lenovo ThinkPad T490 | `` | | Lenovo ThinkPad T495 | `` | | Lenovo ThinkPad X140e | `` | | Lenovo ThinkPad X220 | `` | | Lenovo ThinkPad X230 | `` | | Lenovo ThinkPad X250 | `` | | [Lenovo ThinkPad X260][] | `` | | Lenovo ThinkPad X270 | `` | | Lenovo ThinkPad X280 | `` | | [Lenovo ThinkPad X1 (6th Gen)][] | `` | | [Lenovo ThinkPad X1 (7th Gen)][] | `` | | Lenovo ThinkPad X1 Extreme Gen 2 | `` | | [Microsoft Surface Pro 3][] | `` | | PC Engines APU | `` | | [Raspberry Pi 2][] | `` | | [Samsung Series 9 NP900X3C][] | `` | | [Purism Librem 13v3][] | `` | | [Purism Librem 15v3][] | `` | | Supermicro A1SRi-2758F | `` | | Supermicro X10SLL-F | `` | | [Toshiba Chromebook 2 `swanky`][] | `` | | [Tuxedo InfinityBook v4][] | `` | [Acer Aspire 4810T]: acer/aspire/4810t [Asus TUF FX504GD]: asus/fx504gd [Apple MacBook Pro 10,1]: apple/macbook-pro/10-1 [Dell XPS E7240]: dell/e7240 [Dell XPS 13 7390]: dell/xps/13-7390 [Dell XPS 13 9343]: dell/xps/13-9343 [Dell XPS 13 9360]: dell/xps/13-9360 [Dell XPS 13 9370]: dell/xps/13-9370 [Dell XPS 13 9380]: dell/xps/13-9380 [Dell XPS 15 7590]: dell/xps/15-7590 [Dell XPS 15 9550]: dell/xps/15-9550 [Dell XPS 15 9560]: dell/xps/15-9560 [Dell XPS 15 9560, intel only]: dell/xps/15-9560/intel [Dell XPS 15 9560, nvidia only]: dell/xps/15-9560/nvidia [Google Pixelbook]: google/pixelbook [Inverse Path USB armory]: inversepath/usbarmory [Lenovo ThinkPad X1 (6th Gen)]: lenovo/thinkpad/x1/6th-gen [Lenovo ThinkPad X1 (7th Gen)]: lenovo/thinkpad/x1/7th-gen [Lenovo ThinkPad X260]: lenovo/thinkpad/x260 [Microsoft Surface Pro 3]: microsoft/surface-pro/3 [Raspberry Pi 2]: raspberry-pi/2 [Samsung Series 9 NP900X3C]: samsung/np900x3c [Purism Librem 13v3]: purism/librem/13v3 [Purism Librem 15v5]: purism/librem/15v5 [Toshiba Chromebook 2 `swanky`]: toshiba/swanky [Tuxedo InfinityBook v4]: nixos-hardware/tuxedo/infinitybook/v4 ## How to contribute a new device profile 1. Add your device profile expression in the appropriate directory 2. Link it in the table in README.md and in flake.nix 3. Run ./tests/run.py to test it. The test script script will parse all the profiles from the README.md