Merge branch 'nixos-hardware-merge-preparations' into nixos-hardware-merge

Merges https://github.com/NixOS/nixos-hardware into nixpkgs.

This will give better discoverability, and considering the low
turnover (less than 100 commits in the last year and only 350 total)
it won’t make any dent on the size of nixpkgs.

We have a monorepo, let’s use it
This commit is contained in:
Profpatsch 2020-06-20 12:57:47 +02:00
commit ef3f3a4eb0
113 changed files with 3937 additions and 0 deletions

9
nixos/hardware/.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
*~
,*
.*.swp
.*.swo
result
result-*
.version-suffix
.DS_Store

View File

@ -0,0 +1,3 @@
language: nix
script:
./tests/run.py

View File

@ -0,0 +1,7 @@
beagleboard/pocketbeagle @yegortimoshenko
dell/xps/13-9370 @moredread
dell/xps/13-9380 @kalbasit
lenovo/thinkpad/x230 @makefu @yegortimoshenko
lenovo/thinkpad/x250 @Mic92
pcengines/apu @yegortimoshenko
purism/librem/13v3 @yegortimoshenko

View File

@ -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*.

111
nixos/hardware/COPYING Normal file
View File

@ -0,0 +1,111 @@
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator and
subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for the
purpose of contributing to a commons of creative, cultural and scientific
works ("Commons") that the public can reliably and without fear of later
claims of infringement build upon, modify, incorporate in other works, reuse
and redistribute as freely as possible in any form whatsoever and for any
purposes, including without limitation commercial purposes. These owners may
contribute to the Commons to promote the ideal of a free culture and the
further production of creative, cultural and scientific works, or to gain
reputation or greater distribution for their Work in part through the use and
efforts of others.
For these and/or other purposes and motivations, and without any expectation
of additional consideration or compensation, the person associating CC0 with a
Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
and publicly distribute the Work under its terms, with knowledge of his or her
Copyright and Related Rights in the Work and the meaning and intended legal
effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not limited
to, the following:
i. the right to reproduce, adapt, distribute, perform, display, communicate,
and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or likeness
depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data in
a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation thereof,
including any amended or successor version of such directive); and
vii. other similar, equivalent or corresponding rights throughout the world
based on applicable law or treaty, and any national implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention of,
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
and Related Rights and associated claims and causes of action, whether now
known or unknown (including existing as well as future claims and causes of
action), in the Work (i) in all territories worldwide, (ii) for the maximum
duration provided by applicable law or treaty (including future time
extensions), (iii) in any current or future medium and for any number of
copies, and (iv) for any purpose whatsoever, including without limitation
commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
the Waiver for the benefit of each member of the public at large and to the
detriment of Affirmer's heirs and successors, fully intending that such Waiver
shall not be subject to revocation, rescission, cancellation, termination, or
any other legal or equitable action to disrupt the quiet enjoyment of the Work
by the public as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason be
judged legally invalid or ineffective under applicable law, then the Waiver
shall be preserved to the maximum extent permitted taking into account
Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
is so judged Affirmer hereby grants to each affected person a royalty-free,
non transferable, non sublicensable, non exclusive, irrevocable and
unconditional license to exercise Affirmer's Copyright and Related Rights in
the Work (i) in all territories worldwide, (ii) for the maximum duration
provided by applicable law or treaty (including future time extensions), (iii)
in any current or future medium and for any number of copies, and (iv) for any
purpose whatsoever, including without limitation commercial, advertising or
promotional purposes (the "License"). The License shall be deemed effective as
of the date CC0 was applied by Affirmer to the Work. Should any part of the
License for any reason be judged legally invalid or ineffective under
applicable law, such partial invalidity or ineffectiveness shall not
invalidate the remainder of the License, and in such case Affirmer hereby
affirms that he or she will not (i) exercise any of his or her remaining
Copyright and Related Rights in the Work or (ii) assert any associated claims
and causes of action with respect to the Work, in either case contrary to
Affirmer's express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or warranties
of any kind concerning the Work, express, implied, statutory or otherwise,
including without limitation warranties of title, merchantability, fitness
for a particular purpose, non infringement, or the absence of latent or
other defects, accuracy, or the present or absence of errors, whether or not
discoverable, all to the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without limitation
any person's Copyright and Related Rights in the Work. Further, Affirmer
disclaims responsibility for obtaining any necessary consents, permissions
or other rights required for any use of the Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to this
CC0 or use of the Work.

115
nixos/hardware/README.md Normal file
View File

@ -0,0 +1,115 @@
NixOS profiles covering hardware quirks.
## Setup
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 = [
<nixos-hardware/lenovo/thinkpad/x220>
./hardware-configuration.nix
];
```
## Incomplete list of Profiles
See code for all available configurations.
| Model | Path |
| --------------------------------- | -------------------------------------------------- |
| [Acer Aspire 4810T][] | `<nixos-hardware/acer/aspire/4810t>` |
| Airis N990 | `<nixos-hardware/airis/n990>` |
| Apple MacBook Air 3,X | `<nixos-hardware/apple/macbook-air/3>` |
| Apple MacBook Air 4,X | `<nixos-hardware/apple/macbook-air/4>` |
| Apple MacBook Air 6,X | `<nixos-hardware/apple/macbook-air/6>` |
| [Apple MacBook Pro 10,1][] | `<nixos-hardware/apple/macbook-pro/10-1>` |
| Apple MacBook Pro 12,1 | `<nixos-hardware/apple/macbook-pro/12-1>` |
| BeagleBoard PocketBeagle | `<nixos-hardware/beagleboard/pocketbeagle>` |
| Dell Latitude 3480 | `<nixos-hardware/dell/latitude/3480>` |
| [Dell XPS E7240][] | `<nixos-hardware/dell/e7240>` |
| [Dell XPS 13 7390][] | `<nixos-hardware/dell/xps/13-7390>` |
| [Dell XPS 13 9360][] | `<nixos-hardware/dell/xps/13-9360>` |
| [Dell XPS 13 9370][] | `<nixos-hardware/dell/xps/13-9370>` |
| [Dell XPS 13 9380][] | `<nixos-hardware/dell/xps/13-9380>` |
| [Dell XPS 15 7590][] | `<nixos-hardware/dell/xps/15-7590>` |
| [Dell XPS 15 9550][] | `<nixos-hardware/dell/xps/15-9550>` |
| [Dell XPS 15 9560][] | `<nixos-hardware/dell/xps/15-9560>` |
| [Dell XPS 15 9560, intel only][] | `<nixos-hardware/dell/xps/15-9560/intel>` |
| [Dell XPS 15 9560, nvidia only][] | `<nixos-hardware/dell/xps/15-9560/nvidia>` |
| [Google Pixelbook][] | `<nixos-hardware/google/pixelbook>` |
| [Inverse Path USB armory][] | `<nixos-hardware/inversepath/usbarmory>` |
| Lenovo IdeaPad Z510 | `<nixos-hardware/lenovo/ideapad/z510>` |
| Lenovo ThinkPad E495 | `<nixos-hardware/lenovo/thinkpad/e495>` |
| Lenovo ThinkPad L13 | `<nixos-hardware/lenovo/thinkpad/l13>` |
| Lenovo ThinkPad P53 | `<nixos-hardware/lenovo/thinkpad/p53>` |
| Lenovo ThinkPad T410 | `<nixos-hardware/lenovo/thinkpad/t410>` |
| Lenovo ThinkPad T420 | `<nixos-hardware/lenovo/thinkpad/t420>` |
| Lenovo ThinkPad T430 | `<nixos-hardware/lenovo/thinkpad/t430>` |
| Lenovo ThinkPad T440s | `<nixos-hardware/lenovo/thinkpad/t440s>` |
| Lenovo ThinkPad T440p | `<nixos-hardware/lenovo/thinkpad/t440p>` |
| Lenovo ThinkPad T450s | `<nixos-hardware/lenovo/thinkpad/t450s>` |
| Lenovo ThinkPad T460s | `<nixos-hardware/lenovo/thinkpad/t460s>` |
| Lenovo ThinkPad T470s | `<nixos-hardware/lenovo/thinkpad/t470s>` |
| Lenovo ThinkPad T480s | `<nixos-hardware/lenovo/thinkpad/t480s>` |
| Lenovo ThinkPad T490 | `<nixos-hardware/lenovo/thinkpad/t490>` |
| Lenovo ThinkPad T495 | `<nixos-hardware/lenovo/thinkpad/t495>` |
| Lenovo ThinkPad X140e | `<nixos-hardware/lenovo/thinkpad/x140e>` |
| Lenovo ThinkPad X220 | `<nixos-hardware/lenovo/thinkpad/x220>` |
| Lenovo ThinkPad X230 | `<nixos-hardware/lenovo/thinkpad/x230>` |
| Lenovo ThinkPad X250 | `<nixos-hardware/lenovo/thinkpad/x250>` |
| [Lenovo ThinkPad X260][] | `<nixos-hardware/lenovo/thinkpad/x260>` |
| Lenovo ThinkPad X270 | `<nixos-hardware/lenovo/thinkpad/x270>` |
| Lenovo ThinkPad X280 | `<nixos-hardware/lenovo/thinkpad/x280>` |
| [Lenovo ThinkPad X1 (6th Gen)][] | `<nixos-hardware/lenovo/thinkpad/x1/6th-gen>` |
| [Lenovo ThinkPad X1 (7th Gen)][] | `<nixos-hardware/lenovo/thinkpad/x1/7th-gen>` |
| Lenovo ThinkPad X1 Extreme Gen 2 | `<nixos-hardware/lenovo/thinkpad/x1-extreme/gen2>` |
| [Microsoft Surface Pro 3][] | `<nixos-hardware/microsoft/surface-pro/3>` |
| PC Engines APU | `<nixos-hardware/pcengines/apu>` |
| [Raspberry Pi 2][] | `<nixos-hardware/raspberry-pi/2>` |
| [Samsung Series 9 NP900X3C][] | `<nixos-hardware/samsung/np900x3c>` |
| [Purism Librem 13v3][] | `<nixos-hardware/purism/librem/13v3>` |
| [Purism Librem 15v3][] | `<nixos-hardware/purism/librem/15v3>` |
| Supermicro A1SRi-2758F | `<nixos-hardware/supermicro/a1sri-2758f>` |
| Supermicro X10SLL-F | `<nixos-hardware/supermicro/x10sll-f>` |
| [Toshiba Chromebook 2 `swanky`][] | `<nixos-hardware/toshiba/swanky>` |
| [Tuxedo InfinityBook v4][] | `<nixos-hardware/tuxedo/infinitybook/v4>` |
[Acer Aspire 4810T]: acer/aspire/4810t
[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 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 13v5]: purism/librem/13v5
[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
3. Run ./tests/run.py to test it. The test script script will parse all the profiles from the README.md

View File

@ -0,0 +1,110 @@
= Overview =
* CPU: Intel Core 2 Solo U3500 @ 1.40GHz (speeds: 0.8, 1.2 and 1.4GHz), 3MB L2
* Screen: 1366x768 LED
= BIOS versions =
* 1.10 - average ACPI temperature around 34°C, good GL playing
* 1.20 - average ACPI temperature around 39°C, good GL playing
* 1.31 - big slowdown in X windows from time to time, GL games with annoying slowdowns regularly
The most recent BIOS updates (1.20 onwards) come with a DOS flasher; older come only with a windows flasher. I used a [http://www.pcengines.ch/freedos.htm freedos image] stored in a USB flash memory to boot freedos and flash the BIOS.
= Drivers =
All provided in linux 2.6.32 kernels.
Linux 2.6.29 has problems at least with the wire ethernet card (Attansic Technology Corp. Device 1063). Loading and unloading the ethernet card driver module (atl1c) helps getting a working link, although it will change from eth0 to eth1, eth2, or another interface name.
== lspci ==
00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)
00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1d.3 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93)
00:1f.0 ISA bridge: Intel Corporation ICH9M-E LPC Interface Controller (rev 03)
00:1f.2 IDE interface: Intel Corporation ICH9M/M-E 2 port SATA IDE Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03)
00:1f.5 IDE interface: Intel Corporation ICH9M/M-E 2 port SATA IDE Controller (rev 03)
00:1f.6 Signal processing controller: Intel Corporation 82801I (ICH9 Family) Thermal Subsystem (rev 03)
01:00.0 Ethernet controller: Attansic Technology Corp. Device 1063 (rev c0)
02:00.0 Network controller: Intel Corporation Wireless WiFi Link 5100
= Configuration =
{
# Make te network WLAN card (wlan0) firmware available
require = [ ./nixos/modules/hardware/network/intel-5000.nix ];
boot = rec {
initrd = {
kernelModules = [ "ata_piix" "reiserfs" ];
};
kernelParams = [
"selinux=0"
"apm=on"
"acpi=on"
"vga=0x317"
"console=tty1"
"video=vesafb:ywrap"
# Important, to disable Kernel Mode Setting for the graphics card
# This will allow backlight regulation
"nomodeset"
];
kernelModules = [
"acpi-cpufreq"
"cpufreq-ondemand" # not autoloaded in 2.6.32.2
"kvm-intel"
];
resumeDevice = "8:2";
extraKernelParams = ["resume=/dev/sda2"];
kernelPackages = pkgs.kernelPackages_2_6_32;
postBootCommands = ''
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
'';
};
services = {
xserver = {
enable = true;
defaultDepth = 24;
videoDriver = "intel";
exportConfiguration = true;
enableTCP = true;
autorun = true;
driSupport = false;
synaptics = {
enable = true;
dev = "/dev/input/event8";
};
};
};
= X settings =
== Backlight ==
Having disabled Kernel Mode Setting for the i915 kernel drm module (kernel parameter ''nomodeset''), use ''xrandr'' to set:
xrandr --output LVDS --set BACKLIGHT_CONTROL combination
xrandr --output LVDS --set BACKLIGHT 300 # ~1000, max light.
If those steps make your mouse cursor not appear, switch to another VT, and then back to X, and it will come.
== Synaptics pad ==
I like the pad speed set by:
synclient MaxTapTime=0 MaxSpeed=1.12 MinSpeed=0.6 AccelFactor=0.001 VertEdgeScroll=1
Install the ''xf86-input-synaptics-1.2.0'' for ''synclient'' to be in your PATH.
= Suspending and hibernating =
Usual pm-utils work, with pm-suspend and pm-hibernate.
[[Category:Installation]]
[[Category:Hardware]]
[[Category:Laptops]]

View File

@ -0,0 +1,29 @@
{ lib, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop
];
boot = {
initrd.kernelModules = [ "ata_piix" ];
kernelParams = [
"apm=on"
"acpi=on"
"vga=0x317"
"video=vesafb:ywrap"
# Important, disable KMS to fix backlight regulation:
"nomodeset"
];
};
# TODO: reverse compat
hardware.opengl.driSupport = false;
# TODO: reverse compat
services.xserver = {
defaultDepth = lib.mkDefault 24;
};
}

View File

@ -0,0 +1,21 @@
{ lib, pkgs, ... }:
{
imports = [ ../../common/pc/laptop ];
boot = {
initrd.kernelModules = [ "pata_via" ];
kernelParams = [
"apm=on"
"acpi=on"
"vga=0x317" # 1024x768
"console=tty1"
"video=vesafb:ywrap" # Faster scroll
];
};
hardware.firmware = with pkgs; [ intel2200BGFirmware ];
services.xserver.videoDrivers = [ "openchrome" ];
}

View File

@ -0,0 +1,12 @@
{ config, lib, ... }:
{
boot.kernelParams = [
"hid_apple.iso_layout=0"
];
hardware.facetimehd.enable = lib.mkDefault
(config.nixpkgs.config.allowUnfree or false);
services.mbpfan.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,15 @@
{ config, lib, ... }:
{
imports = [
../../.
../../../common/pc/laptop
../../../common/pc/ssd
];
# Built-in iSight is recognized by the generic uvcvideo kernel module
hardware.facetimehd.enable = false;
hardware.cpu.intel.updateMicrocode =
lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -0,0 +1,16 @@
{ lib, ... }:
{
imports = [
../.
../../../common/cpu/intel/sandy-bridge
];
boot.kernelParams = [
"acpi_backlight=vendor"
];
services.xserver.deviceSection = lib.mkDefault ''
Option "TearFree" "true"
'';
}

View File

@ -0,0 +1,18 @@
{ config, lib, ... }:
{
imports = [ ../. ];
boot = {
extraModulePackages = with config.boot.kernelPackages; [ mba6x_bl ];
kernelModules = [ "mba6x_bl" ];
# Divides power consumption by two.
kernelParams = [ "acpi_osi=" ];
};
services.xserver.deviceSection = lib.mkDefault ''
Option "Backlight" "mba6x_backlight"
Option "TearFree" "true"
'';
}

View File

@ -0,0 +1,8 @@
{
imports = [
../.
../../common/cpu/intel
../../common/pc/laptop
../../common/pc/laptop/ssd
];
}

View File

@ -0,0 +1,9 @@
= Apple MacBook Pro 10,1 =
I presume the associated configuration also will work with to other 10,x models.
If you don't have an Ethernet adapter, make sure your NixOS installer has a sufficiently modern kernel or you will be stuck without internet and unable to installer.
Note that (with NixPkgs circa late October 2016) Linux 4.8.1 does not work: everything will boot through X, but then manually-run commands accessing peripherals (nmcli, lspci, etc) will hang inexplicably.
Thankfully no tweaking of the BIOS or similar was needed. Do note that if your MacOS partition is encrypted, you will have an easier time shrinking it from within MacOS, but this is standard advice.

View File

@ -0,0 +1,21 @@
{ lib, pkgs, ... }:
{
imports = [
../.
../../../common/pc/laptop/ssd
];
# TODO: boot loader
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# TODO: reverse compat
hardware.opengl.driSupport32Bit = true;
services.xserver = {
# TODO: we should not enable unfree drivers
# when there is an alternative (i.e. nouveau)
videoDrivers = [ "nvidia" ];
};
}

View File

@ -0,0 +1,32 @@
# Apple MacBook Pro 11,5
This configuration will **not** work with MacBook Pro 11,2 or 11,3 models.
## Notable features
* Prevent intermittent USB 3.0 controller wakeup signal when the lid is closed. Without this fix your laptop may get very hot and drain the battery after waking up in your laptop bag.
You can see for yourself which devices are allowed to wake up your laptop using the command:
```shell
cat /proc/acpi/wakeup
```
This fix works for Linux kernel 3.13 and above.
Sources:
* [Fix unwanted laptop resume after lid is closed](https://medium.com/@laurynas.karvelis_95228/install-arch-linux-on-macbook-pro-11-2-retina-install-guide-for-year-2017-2034ceed4cb2#66ba)
* [Arch wiki: MacBookPro11,x Suspend](https://wiki.archlinux.org/index.php/MacBookPro11,x#Suspend)
* [simonvandel/dotfiles (nix config)](https://github.com/simonvandel/dotfiles/blob/f254a4a607257faee295ce798ed215273c342850/nixos/vandel-macair/configuration.nix#L45)
## Graphics
The [MacBookPro11,4 and MacBookPro11,5](https://support.apple.com/kb/SP719) models ship with a discrete ATI graphics card (whereas MacBookPro11,2 and MacBookPro11,3 ship with NVidia cards). This is alongside the usual integrated Intel GPU.
You may wish to look into dynamic switching between integrated and discrete graphics, but this config doesn't attempt it.
## Additional resources
* Arch linux wiki: [MacBookPro11,x](https://wiki.archlinux.org/index.php/MacBookPro11,x)
* Kernel patches: [MacBookPro11,x](https://bugzilla.kernel.org/buglist.cgi?quicksearch=macbookpro11)

View File

@ -0,0 +1,27 @@
{ lib, config, pkgs, ... }:
let
kernelPackages = config.boot.kernelPackages;
in
{
imports = [
../.
../../../common/pc/laptop/ssd
<nixpkgs/nixos/modules/hardware/network/broadcom-43xx.nix>
];
# Apparently this is currently only supported by ati_unfree drivers, not ati
hardware.opengl.driSupport32Bit = false;
services.xserver.videoDrivers = [ "ati" ];
services.udev.extraRules =
# Disable XHC1 wakeup signal to avoid resume getting triggered some time
# after suspend. Reboot required for this to take effect.
lib.optionalString
(lib.versionAtLeast kernelPackages.kernel.version "3.13")
''SUBSYSTEM=="pci", KERNEL=="0000:00:14.0", ATTR{power/wakeup}="disabled"'';
}

View File

@ -0,0 +1,14 @@
{ lib, ... }:
{
imports = [
../.
../../../common/pc/laptop/ssd
<nixpkgs/nixos/modules/hardware/network/broadcom-43xx.nix>
];
# USB subsystem wakes up MBP right after suspend unless we disable it.
services.udev.extraRules = lib.mkDefault ''
SUBSYSTEM=="pci", KERNEL=="0000:00:14.0", ATTR{power/wakeup}="disabled"
'';
}

View File

@ -0,0 +1,7 @@
{
imports = [
../.
../../common/cpu/intel
../../common/pc/laptop
];
}

View File

@ -0,0 +1,6 @@
{ config, ... }:
{
boot.extraModulePackages = with config.boot.kernelPackages; [ rtl8812au ];
boot.kernelModules = [ "8812au" ];
}

View File

@ -0,0 +1,7 @@
{
boot = {
extraModprobeConfig = lib.mkDefault ''
options snd slots=snd_usb_audio,snd-hda-intel
'';
};
}

View File

@ -0,0 +1,10 @@
{ lib, ... }:
{
boot.kernelParams = [ "console=ttyO0,115200n8" ];
boot.loader = {
generic-extlinux-compatible.enable = lib.mkDefault true;
grub.enable = lib.mkDefault false;
};
}

View File

@ -0,0 +1,6 @@
{ config, lib, ... }:
{
hardware.cpu.amd.updateMicrocode =
lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
{
boot.initrd.kernelModules = [ "i915" ];
hardware.cpu.intel.updateMicrocode =
lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware.opengl.extraPackages = with pkgs; [
vaapiIntel
vaapiVdpau
libvdpau-va-gl
intel-media-driver
];
}

View File

@ -0,0 +1,8 @@
{
imports = [ ../. ];
boot.kernelParams = [
"i915.enable_fbc=1"
"i915.enable_psr=2"
];
}

View File

@ -0,0 +1,9 @@
{
imports = [ ../. ];
# Enables RC6, RC6p and RC6pp.
# Last two are only available on Sandy Bridge CPUs (circa 2011).
boot.kernelParams = [
"i915.enable_rc6=7"
];
}

View File

@ -0,0 +1,5 @@
{ lib, ... }:
{
services.xserver.libinput.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,7 @@
{ lib, ... }:
{
boot.kernel.sysctl = {
"vm.swappiness" = lib.mkDefault 10;
};
}

View File

@ -0,0 +1,10 @@
# acpi_call makes tlp work for newer thinkpads
{ config, ... }:
{
boot = {
kernelModules = [ "acpi_call" ];
extraModulePackages = with config.boot.kernelPackages; [ acpi_call ];
};
}

View File

@ -0,0 +1,7 @@
{ config, lib, ... }:
{
imports = [ ../. ];
services.tlp.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,8 @@
{ lib, ... }:
{
imports = [ ../../hdd ];
# Hard disk protection if the laptop falls:
services.hdapsd.enable = lib.mkDefault true;
}

View File

@ -0,0 +1 @@
../ssd

View File

@ -0,0 +1,9 @@
{ lib, ... }:
{
boot.kernel.sysctl = {
"vm.swappiness" = lib.mkDefault 1;
};
services.fstrim.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,3 @@
# This file is necessary so nix-env -qa does not break,
# when nixos-hardware is used as a channel
{}

View File

@ -0,0 +1,8 @@
On some kernel versions user ashgillman has experiences suspend issues
(see https://bugzilla.redhat.com/show_bug.cgi?id=1597481).
Try:
```nix
boot.kernelPackages = pkgs.linuxPackages_4_14;
```

View File

@ -0,0 +1,8 @@
{ lib, pkgs, ... }:
{
imports = [
../../common/cpu/intel
../../common/pc/laptop
];
}

View File

@ -0,0 +1,14 @@
{ lib, pkgs, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop
../../../common/pc/laptop/ssd
];
# touchpad goes over i2c
boot.blacklistedKernelModules = [ "psmouse" ];
services.xserver.videoDrivers = lib.mkDefault [ "intel" ];
}

View File

@ -0,0 +1,16 @@
= Dell XPS 13 7390 =
== Installation ==
You need to disable RAID and use AHCI instead as described [https://wiki.ubuntu.com/Dell/XPS/XPS-13-7390-2-in-1 here].
== Firmware upgrades ==
Note that this device is supported by [https://fwupd.org/ fwupd].
To perform firmware upgrades just activate the service
<code>
services.fwupd.enable = true;
</code>
Then use <code>fwupdmgr</code> to perform updates.

View File

@ -0,0 +1,13 @@
{ lib, pkgs, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop
../../../common/pc/laptop/ssd
];
boot.kernelParams = [ "mem_sleep_default=deep" ];
services.thermald.enable = true;
}

View File

@ -0,0 +1,34 @@
{ lib, pkgs, ... }:
# TODO: move to general HiDPI profile
# 4K screen, use bigger console font
# i18n.consoleFont deprecated in >=20.03, choose option based on OS version
lib.recursiveUpdate
(if lib.versionAtLeast (lib.versions.majorMinor lib.version) "20.03" then {
console.font = lib.mkDefault "latarcyrheb-sun32";
} else {
i18n.consoleFont = lib.mkDefault "latarcyrheb-sun32";
}) {
imports = [
../../../common/cpu/intel/kaby-lake
../../../common/pc/laptop
];
boot.blacklistedKernelModules = [ "psmouse" ]; # touchpad goes over i2c
# TODO: decide on boot loader policy
boot.loader = {
efi.canTouchEfiVariables = lib.mkDefault true;
systemd-boot.enable = lib.mkDefault true;
};
hardware.firmware = lib.mkBefore [ pkgs.qca6174-firmware ];
# TODO: upstream to NixOS/nixpkgs
nixpkgs.overlays = [(final: previous: {
qca6174-firmware = final.callPackage ./qca6174-firmware.nix {};
})];
# This will save you money and possibly your life!
services.thermald.enable = true;
}

View File

@ -0,0 +1,26 @@
{ stdenv, fetchurl }:
stdenv.mkDerivation rec {
name = "${target}-firmware-${version}";
version = "${branch}-00042";
branch = "4.4.1.c1";
target = "QCA6174";
src = fetchurl {
url = "https://github.com/kvalo/ath10k-firmware/raw/952afa4949cb34193040cd4e7441e1aee50ac731/${target}/hw3.0/${branch}/firmware-6.bin_RM.${version}-QCARMSWP-1";
sha256 = "01vvz3qhqw5l3yilcqgk1spk4y9k4qy7na7a57cbl037r231szdh";
};
buildCommand = ''
install -D $src $out/lib/firmware/ath10k/${target}/hw3.0/firmware-6.bin
'';
meta = with stdenv.lib; {
description = "Updated firmware for the qca6174 wireless chip";
homepage = "https://github.com/kvalo/ath10k-firmware/tree/master/QCA6174/hw3.0";
license = licenses.unfreeRedistributable;
maintainers = with maintainers; [ yorickvp ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,16 @@
= Dell XPS 13 9370 =
== Battery drain when sleeping ==
The laptop uses the S2 sleep mode by default instead of S3, which leads to
draining a lot of battery during sleep.
Though this is intentional by the manufacturer and might cause lockups when
forced I - @moredread - never had any issues with it.
See https://wiki.archlinux.org/index.php/Dell_XPS_13_(9370)#Power_Management
and https://bugzilla.kernel.org/show_bug.cgi?id=199689#c3 for reference
== Additional resources ==
* Arch linux wiki: [https://wiki.archlinux.org/index.php/Dell_XPS_13_(9370) Dell XPS 13 9370]

View File

@ -0,0 +1,20 @@
{ lib, pkgs, ... }:
{
imports = [
../../../common/cpu/intel/kaby-lake
../../../common/pc/laptop
../../../common/pc/laptop/acpi_call.nix
];
# Force S3 sleep mode. See README.wiki for details.
boot.kernelParams = [ "mem_sleep_default=deep" ];
# touchpad goes over i2c
boot.blacklistedKernelModules = [ "psmouse" ];
services.throttled.enable = lib.mkDefault true;
# This will save you money and possibly your life!
services.thermald.enable = true;
}

View File

@ -0,0 +1,20 @@
= Dell XPS 13 9380 =
== Firmware upgrades ==
Note that this device is supported by [https://fwupd.org/ fwupd].
To perform firmware upgrades just activate the service
<code>
services.fwupd.enable = true;
</code>
Then use <code>fwupdmgr</code> to perform updates.
== Battery drain when sleeping ==
The laptop uses the S2 sleep mode by default instead of S3, which leads to
draining a lot of battery during sleep.
See https://wiki.archlinux.org/index.php/Dell_XPS_13_(9370)#Power_Management
and https://bugzilla.kernel.org/show_bug.cgi?id=199689#c3 for reference

View File

@ -0,0 +1,18 @@
{ lib, pkgs, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop
../../../common/pc/laptop/acpi_call.nix
];
# Force S3 sleep mode. See README.wiki for details.
boot.kernelParams = [ "mem_sleep_default=deep" ];
# touchpad goes over i2c
boot.blacklistedKernelModules = [ "psmouse" ];
# This will save you money and possibly your life!
services.thermald.enable = true;
}

View File

@ -0,0 +1,54 @@
= Dell XPS 15 7590 =
*Mostly copied from 15-9550
== Tested Hardware ==
* CPU: Intel(R) Core(TM) i9-9980HK
* RAM: 32 GB
* HDD: 1 TiB SSD
* Screen: 15" 4k (3840✕2160)
* Input: Touchscreen and trackpad.
== Firmware Configuration ==
Not much tweaking of NixOS itself was needed. But we currently cannot automate the firmware setup, so this must be done by hand.
=== Before installation ===
These settings are needed both for booting the final install, and installer itself. Therefore, they must be done first.
* ''Disable Secure Boot (but keep UEFI Boot).'' Thankfully doing so is as easy as changing any other simple setting.
* ''Disable Intel hardware RAID and use AHCI instead.'' Intel doesn't seem to provide a working linux driver for this. (If you just have SSD it's pointless and just slows things down needlessly anyways.)
=== Wifi ===
~~Wifi does not work with kernels older than 5.1 (firmware not present) or newer~~ (https://bbs.archlinux.org/viewtopic.php?id=247705)
Update: The 48.ucode causes the Killer wifi card to crash. The iwlfwifi-cc-a0-46.ucode works perfectly.
default.nix contains an overlay that removes the offending ucode from the linux-firmware bundle.
To use it one also needs to enable unfree firmware in their own configuration (<code>hardware.enableRedistributableFirmware = true;</code>)
```
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.grub = {
device = "nodev";
efiSupport = true;
efiInstallAsRemovable = true;
};
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_5_1;
```
Disable the `canTouchEfiVariables` after a boot or two to prevent NVRAM wearout.
=== After installation ===
* ''Add systemd-boot to UEFI boot list.'' The (uneditable anyways) settings mapping drive UUIDs to HD* work fine.
=== Optional ===
* ''Update BIOS.'' According to Reddit, this helps with battery life.
=== Troubleshooting ===

View File

@ -0,0 +1,51 @@
{ lib, ... }:
# Earlier font-size setup.
# Virtual console options were renamed in 20.03; use the right option depending
# on the OS version; keep this here at least until 20.03 is stable.
lib.recursiveUpdate
(if lib.versionAtLeast (lib.versions.majorMinor lib.version) "20.03" then {
console.earlySetup = true;
} else {
boot.earlyVconsoleSetup = true;
}) {
imports = [
../../../common/cpu/intel
../../../common/pc/laptop
../../../common/pc/ssd
];
# Set to true for just the first run, then disable it.
# boot.loader.efi.canTouchEfiVariables = lib.mkDefault true;
# Load GPU drivers.
# hardware.bumblebee.enable = lib.mkDefault true;
# High DPI for X users. 175 "looks reasonable" but I didn't do the actual DPI
# calculation.
# services.xserver.dpi = lib.mkDefault 175;
# Earlier font-size setup
console.earlySetup = true;
# Prevent small EFI partiion from filling up
boot.loader.grub.configurationLimit = 10;
# The 48.ucode causes the Killer wifi card to crash.
# The iwlfwifi-cc-a0-46.ucode works perfectly
nixpkgs.overlays = [
(self: super: {
firmwareLinuxNonfree = super.firmwareLinuxNonfree.overrideAttrs (old: {
src = super.fetchgit {
url =
"https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git";
rev = "bf13a71b18af229b4c900b321ef1f8443028ded8";
sha256 = "1dcaqdqyffxiadx420pg20157wqidz0c0ca5mrgyfxgrbh6a4mdj";
};
postInstall = ''
rm $out/lib/firmware/iwlwifi-cc-a0-48.ucode
'';
outputHash = "0dq48i1cr8f0qx3nyq50l9w9915vhgpwmwiw3b4yhisbc3afyay4";
});
})
];
}

View File

@ -0,0 +1,52 @@
= Dell XPS 15 9550 =
Most of this I presume also applies to the XPS 13 1530, the 13" variant.
== Tested Hardware ==
* CPU: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
* RAM: 16 GB
* HDD: 512 GiB SSD
* Screen: 15" 4k (3840✕2160)
* Graphics: NVIDIA Corporation GM107M, with Intel Graphics too.
* Input: Touchscreen and trackpad.
== Firmware Configuration ==
Not much tweaking of NixOS itself was needed. But we currently cannot automate the firmware setup, so this must be done by hand.
=== Before installation ===
These settings are needed both for booting the final install, and installer itself. Therefore, they must be done first.
* ''Disable Secure Boot (but keep UEFI Boot).'' Thakfully doing so is as easy as changing any other simple setting.
* ''Disable Intel hardware RAID and use AHCI instead.'' Intel doesn't seem to provide a working linux driver for this. (If you just have SSD it's pointless and just slows things down needlessly anyways.)
=== After installation ===
* ''Add systemd-boot to UEFI boot list.'' The (uneditable anyways) settings mapping drive UUIDs to HD* work fine.
=== Optional ===
* ''Disable C-States.'' This is a processor idling thing. It seems to cause random crashes (Blank screen, no normal panic debug dump). Unfortunately, without it, the computer cannot be suspended. On the other hand, it doesn't seem to affect acpi's estimation of battery life when the computer is running with minimal load, but I haven't tested battery life in practice. I list it as optional as there's a tradeoff, and the crashes are rare enough one can probably get through installation just fine.
* ''Update BIOS.'' According to Reddit, this helps with battery life.
* ''Update Intel's Thunderbolt firmware.'' Without this, the Thunderbolt port will only work as power source, and not transfer data.
=== Troubleshooting ===
==== rcu_sched freezing problems ====
After a recent update my machine became unstable. X couldn't start and even running `lspci` would lock the machine. I'm not sure what the root cause was, but I found the fix here: https://wiki.archlinux.org/index.php/Dell_XPS_15_9560#Troubleshooting
TL;DR I added this line:
```
boot.kernelParams = [ "acpi_rev_override=1" "pcie_aspm=off" "nouveau.modeset=0" ];
```
Some more detail about the problem can be found here: https://bbs.archlinux.org/viewtopic.php?id=223056

View File

@ -0,0 +1,18 @@
{ lib, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop
];
# TODO: boot loader
boot.loader.systemd-boot.enable = lib.mkDefault true;
boot.loader.efi.canTouchEfiVariables = lib.mkDefault true;
# This will save you money and possibly your life!
services.thermald.enable = true;
# To just use Intel integrated graphics with Intel's open source driver
# hardware.nvidiaOptimus.disable = true;
}

View File

@ -0,0 +1,54 @@
= Dell XPS 15 9560 =
== Tested Hardware ==
* CPU: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
* RAM: 16 GB
* HDD: 512 GiB SSD
* Screen: 15.6" FHD(1920x1080) InfinityEdge
* Graphics: NVIDIA Corporation GTX1050 4GB GDDR5, with Intel Graphics too.
* Input: trackpad
== Firmware Configuration ==
Not much tweaking of NixOS itself was needed. But we currently cannot automate the firmware setup, so this must be done by hand.
=== Before installation ===
These settings are needed both for booting the final install, and installer itself. Therefore, they must be done first.
* ''Disable Secure Boot (but keep UEFI Boot).'' Thakfully doing so is as easy as changing any other simple setting.
* ''Disable Intel hardware RAID and use AHCI instead.'' Intel doesn't seem to provide a working linux driver for this. (If you just have SSD it's pointless and just slows things down needlessly anyways.)
=== After installation ===
* ''Add systemd-boot to UEFI boot list.'' The (uneditable anyways) settings mapping drive UUIDs to HD* work fine.
=== Optional ===
* ''Disable C-States.'' This is a processor idling thing. It seems to cause random crashes (Blank screen, no normal panic debug dump). Unfortunately, without it, the computer cannot be suspended. On the other hand, it doesn't seem to affect acpi's estimation of battery life when the computer is running with minimal load, but I haven't tested battery life in practice. I list it as optional as there's a tradeoff, and the crashes are rare enough one can probably get through installation just fine.
* ''Update BIOS.'' According to Reddit, this helps with battery life.
* ''Update Intel's Thunderbolt firmware.'' Without this, the Thunderbolt port will only work as power source, and not transfer data.
=== Troubleshooting ===
==== rcu_sched freezing problems ====
After a recent update my machine became unstable. X couldn't start and even running `lspci` would lock the machine. I'm not sure what the root cause was, but I found the fix here: https://wiki.archlinux.org/index.php/Dell_XPS_15_9560#Troubleshooting
TL;DR I added this line:
I am leaving these params here, I haven't test these so use on your own risk.
I am using different method to disable nvidia.
("acpi_rev_override=1" param is save and I have been using it for a while now,
no crashes.)
```
boot.kernelParams = [ "acpi_rev_override=1" "pcie_aspm=off" "nouveau.modeset=0" ];
```
Some more detail about the problem can be found here: https://bbs.archlinux.org/viewtopic.php?id=223056

View File

@ -0,0 +1,24 @@
{ lib, pkgs, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop
./xps-common.nix
];
# This configuration makes intel default and optionaly applications could run nvidia with optirun.
# To Optimize for your use case import intel or nvidia only configuration instead
# xps-9560/intel
# or
# xps-9560/nvidia
##### bumblebee working, needs reboot to take affect and to use it run: optirun "<application>"
services.xserver.videoDrivers = lib.mkDefault [ "intel" "nvidia" ];
boot.blacklistedKernelModules = lib.mkDefault [ "nouveau" "bbswitch" ];
boot.extraModulePackages = lib.mkDefault [ pkgs.linuxPackages.nvidia_x11 ];
hardware.bumblebee.enable = lib.mkDefault true;
hardware.bumblebee.pmMethod = lib.mkDefault "none";
}

View File

@ -0,0 +1,18 @@
{ lib, pkgs, ... }:
{
imports = [
../../../../common/cpu/intel
../../../../common/pc/laptop
../xps-common.nix
];
# This runs only Intel and nvidia does not drain power.
##### disable nvidia, very nice battery life.
hardware.nvidiaOptimus.disable = lib.mkDefault true;
boot.blacklistedKernelModules = lib.mkDefault [ "nouveau" "nvidia" ];
services.xserver.videoDrivers = lib.mkDefault [ "intel" ];
}

View File

@ -0,0 +1,20 @@
{ lib, pkgs, ... }:
{
imports = [
../../../../common/cpu/intel
../../../../common/pc/laptop
../xps-common.nix
];
# This runs only nvidia, great for games or heavy use of render applications
##### disable intel, run nvidia only and as default
services.xserver.videoDrivers = lib.mkDefault ["nvidia"];
hardware.nvidia.modesetting.enable = lib.mkDefault true;
hardware.nvidia.optimus_prime.enable = lib.mkDefault true;
hardware.nvidia.optimus_prime.nvidiaBusId = lib.mkDefault "PCI:1:0:0";
hardware.nvidia.optimus_prime.intelBusId = lib.mkDefault "PCI:0:2:0";
}

View File

@ -0,0 +1,12 @@
{ lib, ... }:
{
# Boot loader
boot.loader.systemd-boot.enable = lib.mkDefault true;
boot.loader.efi.canTouchEfiVariables = lib.mkDefault true;
boot.kernelParams = lib.mkDefault [ "acpi_rev_override" ];
# This will save you money and possibly your life!
services.thermald.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,9 @@
{ ... }:
{
imports = [
../../common/pc/laptop
../../common/pc/laptop/ssd
../../common/cpu/intel/kaby-lake
];
}

View File

@ -0,0 +1,6 @@
USB Armory network interface support
- rename the Armory USB network interface
- set Armory inteface ip to 10.0.0.2/24
- enable NAT and forward Armory interface
- add the name 'armory' to /etc/hosts

View File

@ -0,0 +1,46 @@
{ config, lib, pkgs, ... }:
{
boot = {
extraModprobeConfig = lib.mkDefault ''
options g_ether use_eem=0 dev_addr=1a:55:89:a2:69:41 host_addr=1a:55:89:a2:69:42
'';
kernelModules = [ "ledtrig_heartbeat" "ci_hdrc_imx" "g_ether" ];
kernelPackages = lib.mkDefault pkgs.linuxPackages_usbarmory;
kernelParams = [ "console=ttymxc0,115200" ];
loader.generic-extlinux-compatible.enable = lib.mkDefault true;
};
networking = {
defaultGateway = "172.16.0.1";
firewall.enable = lib.mkDefault false;
hostName = "usbarmory";
interfaces.usb0.ip4 = [
{ address = "172.16.0.2"; prefixLength = 24; }
];
nameservers = [ "8.8.8.8" ];
};
nix = {
binaryCaches = [ "http://nixos-arm.dezgeg.me/channel" ];
binaryCachePublicKeys = [ "nixos-arm.dezgeg.me-1:xBaUKS3n17BZPKeyxL4JfbTqECsT+ysbDJz29kLFRW0=%" ];
};
nixpkgs.overlays = [(final: previous: {
linuxPackages_usbarmory = final.recurseIntoAttrs
(final.linuxPackagesFor (import ./kernel.nix {
inherit (final) stdenv buildLinux fetchurl;
}));
})];
sound.enable = lib.mkDefault false;
services = {
openssh.enable = lib.mkDefault true;
openssh.permitRootLogin = lib.mkDefault "without-password";
};
}

View File

@ -0,0 +1,19 @@
{ dev ? "armory0" }:
{
services.udev.extraRules = ''
SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="0525", ATTRS{idProduct}=="a4a2", NAME="${staticDevName}"
'';
networking = {
interfaces."${staticDevName}".ip4 = [{
address = "10.0.0.2";
prefixLength = 24;
}];
nat = {
enable = true;
internalInterfaces = [ dev ];
};
extraHosts = "10.0.0.1 armory";
};
}

View File

@ -0,0 +1,995 @@
CONFIG_ARM=y
CONFIG_ARM_HAS_SG_CHAIN=y
CONFIG_MIGHT_HAVE_PCI=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_HAVE_PROC_CPU=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_ARM_PATCH_PHYS_VIRT=y
CONFIG_GENERIC_BUG=y
CONFIG_PGTABLE_LEVELS=2
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
CONFIG_DMIID=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_HAVE_KERNEL_LZ4=y
CONFIG_KERNEL_GZIP=y
CONFIG_DEFAULT_HOSTNAME="usbarmory"
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_FHANDLE=y
CONFIG_USELIB=y
CONFIG_AUDIT=y
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_IRQ_DOMAIN=y
CONFIG_HANDLE_DOMAIN_IRQ=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
CONFIG_NO_HZ_IDLE=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_PREEMPT_RCU=y
CONFIG_SRCU=y
CONFIG_RCU_STALL_COMMON=y
CONFIG_BUILD_BIN2C=y
CONFIG_IKCONFIG=m
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_GENERIC_SCHED_CLOCK=y
CONFIG_CGROUPS=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
CONFIG_HAVE_UID16=y
CONFIG_BPF=y
CONFIG_EXPERT=y
CONFIG_UID16=y
CONFIG_MULTIUSER=y
CONFIG_SYSFS_SYSCALL=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_ADVISE_SYSCALLS=y
CONFIG_MEMBARRIER=y
CONFIG_EMBEDDED=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_COMPAT_BRK=y
CONFIG_SLUB=y
CONFIG_HAVE_OPROFILE=y
CONFIG_JUMP_LABEL=y
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_ATTRS=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_GENERIC_IDLE_POLL_SETUP=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_PERF_REGS=y
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR_NONE=y
CONFIG_HAVE_CONTEXT_TRACKING=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
CONFIG_MODULES_USE_ELF_REL=y
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_OLD_SIGACTION=y
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_CMDLINE_PARSER=y
CONFIG_PARTITION_ADVANCED=y
CONFIG_MSDOS_PARTITION=y
CONFIG_EFI_PARTITION=y
CONFIG_EFI_STUB=y
CONFIG_CMDLINE_PARTITION=y
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_DEADLINE=m
CONFIG_IOSCHED_CFQ=m
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
CONFIG_ASN1=m
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_FREEZER=y
CONFIG_MMU=y
CONFIG_ARCH_MULTIPLATFORM=y
CONFIG_ARCH_MULTI_V7=y
CONFIG_ARCH_MULTI_V6_V7=y
CONFIG_ARCH_MXC=y
CONFIG_MXC_TZIC=y
CONFIG_HAVE_IMX_SRC=y
CONFIG_SOC_IMX5=y
CONFIG_SOC_IMX53=y
CONFIG_CPU_V7=y
CONFIG_CPU_32v6K=y
CONFIG_CPU_32v7=y
CONFIG_CPU_ABRT_EV7=y
CONFIG_CPU_PABRT_V7=y
CONFIG_CPU_CACHE_V7=y
CONFIG_CPU_CACHE_VIPT=y
CONFIG_CPU_COPY_V6=y
CONFIG_CPU_TLB_V7=y
CONFIG_CPU_HAS_ASID=y
CONFIG_CPU_CP15=y
CONFIG_CPU_CP15_MMU=y
CONFIG_ARM_THUMB=y
CONFIG_ARM_VIRT_EXT=y
CONFIG_KUSER_HELPERS=y
CONFIG_OUTER_CACHE=y
CONFIG_OUTER_CACHE_SYNC=y
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
CONFIG_CACHE_L2X0=y
CONFIG_ARM_L1_CACHE_SHIFT_6=y
CONFIG_ARM_L1_CACHE_SHIFT=6
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
CONFIG_ARM_HEAVY_MB=y
CONFIG_MULTI_IRQ_HANDLER=y
CONFIG_HAVE_SMP=y
CONFIG_VMSPLIT_2G=y
CONFIG_PAGE_OFFSET=0x80000000
CONFIG_ARCH_NR_GPIO=0
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
CONFIG_HZ_FIXED=0
CONFIG_HZ_100=y
CONFIG_HZ=100
CONFIG_SCHED_HRTICK=y
CONFIG_AEABI=y
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_CPU_SW_DOMAIN_PAN=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_HAVE_MEMBLOCK=y
CONFIG_NO_BOOTMEM=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y
CONFIG_ZONE_DMA_FLAG=0
CONFIG_KSM=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_NEED_PER_CPU_KM=y
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m
CONFIG_ZBUD=m
CONFIG_ZSMALLOC=m
CONFIG_FORCE_MAX_ZONEORDER=11
CONFIG_ALIGNMENT_TRAP=y
CONFIG_SECCOMP=y
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
CONFIG_USE_OF=y
CONFIG_ATAGS=y
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mmcblk0p1 rw rootfstype=ext4 ip=off"
CONFIG_CMDLINE_FROM_BOOTLOADER=y
CONFIG_AUTO_ZRELADDR=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_GOV_COMMON=y
CONFIG_CPU_FREQ_STAT=m
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPUFREQ_DT=y
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_NEON=y
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_SCRIPT=y
CONFIG_COREDUMP=y
CONFIG_HIBERNATE_CALLBACKS=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_SLEEP=y
CONFIG_PM=y
CONFIG_PM_OPP=y
CONFIG_PM_CLK=y
CONFIG_CPU_PM=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARM_CPU_SUSPEND=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_NET=y
CONFIG_NET_INGRESS=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_ALGO=m
CONFIG_XFRM_USER=m
CONFIG_XFRM_SUB_POLICY=y
CONFIG_XFRM_MIGRATE=y
CONFIG_XFRM_STATISTICS=y
CONFIG_XFRM_IPCOMP=m
CONFIG_NET_KEY=m
CONFIG_NET_KEY_MIGRATE=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IP_TUNNEL=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_SYN_COOKIES=y
CONFIG_NET_IPVTI=m
CONFIG_NET_UDP_TUNNEL=m
CONFIG_NET_FOU=m
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_XFRM_TUNNEL=m
CONFIG_INET_TUNNEL=m
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
CONFIG_INET_UDP_DIAG=m
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_WESTWOOD=m
CONFIG_TCP_CONG_HTCP=m
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
CONFIG_TCP_CONG_SCALABLE=m
CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
CONFIG_DEFAULT_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_TCP_MD5SIG=y
CONFIG_IPV6=m
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
CONFIG_IPV6_OPTIMISTIC_DAD=y
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_MIP6=m
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
CONFIG_INET6_XFRM_MODE_TUNNEL=m
CONFIG_INET6_XFRM_MODE_BEET=m
CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
CONFIG_IPV6_VTI=m
CONFIG_IPV6_SIT=m
CONFIG_IPV6_SIT_6RD=y
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_IPV6_TUNNEL=m
CONFIG_IPV6_GRE=m
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_SUBTREES=y
CONFIG_IPV6_MROUTE=y
CONFIG_NETFILTER=y
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=m
CONFIG_NETFILTER_INGRESS=y
CONFIG_NETFILTER_NETLINK=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_LOG_COMMON=m
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_PROCFS=y
CONFIG_NF_CT_PROTO_GRE=m
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=m
CONFIG_NF_CONNTRACK_BROADCAST=m
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
CONFIG_NF_CONNTRACK_SNMP=m
CONFIG_NF_CONNTRACK_PPTP=m
CONFIG_NF_CONNTRACK_SANE=m
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=m
CONFIG_NF_CT_NETLINK_TIMEOUT=m
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_SIP=m
CONFIG_NF_NAT_TFTP=m
CONFIG_NF_NAT_REDIRECT=m
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_TARGET_HL=m
CONFIG_NETFILTER_XT_TARGET_LED=m
CONFIG_NETFILTER_XT_NAT=m
CONFIG_NETFILTER_XT_TARGET_NETMAP=m
CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_BPF=m
CONFIG_NETFILTER_XT_MATCH_CGROUP=m
CONFIG_NETFILTER_XT_MATCH_ECN=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HL=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_OWNER=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_TIME=m
CONFIG_NETFILTER_XT_MATCH_U32=m
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_CONNTRACK_IPV4=m
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
CONFIG_NF_LOG_IPV4=m
CONFIG_NF_REJECT_IPV4=m
CONFIG_NF_NAT_IPV4=m
CONFIG_NF_NAT_MASQUERADE_IPV4=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_PPTP=m
CONFIG_NF_NAT_H323=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_RPFILTER=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_SYNPROXY=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m
CONFIG_NF_DEFRAG_IPV6=m
CONFIG_NF_CONNTRACK_IPV6=m
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
CONFIG_NF_NAT_IPV6=m
CONFIG_NF_NAT_MASQUERADE_IPV6=m
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_MH=m
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_REJECT=m
CONFIG_IP6_NF_TARGET_SYNPROXY=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_RAW=m
CONFIG_IP6_NF_NAT=m
CONFIG_IP6_NF_TARGET_MASQUERADE=m
CONFIG_IP6_NF_TARGET_NPT=m
CONFIG_L2TP=m
CONFIG_STP=m
CONFIG_BRIDGE=m
CONFIG_BRIDGE_IGMP_SNOOPING=y
CONFIG_HAVE_NET_DSA=y
CONFIG_VLAN_8021Q=m
CONFIG_LLC=m
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_CLS=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_CGROUP=m
CONFIG_NET_CLS_BPF=m
CONFIG_NET_SCH_FIFO=y
CONFIG_CGROUP_NET_CLASSID=y
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
CONFIG_BPF_JIT=y
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_WEXT_CORE=y
CONFIG_WEXT_PROC=y
CONFIG_CFG80211=m
CONFIG_CFG80211_DEFAULT_PS=y
CONFIG_CFG80211_CRDA_SUPPORT=y
CONFIG_CFG80211_WEXT=y
CONFIG_MAC80211=m
CONFIG_MAC80211_HAS_RC=y
CONFIG_MAC80211_RC_MINSTREL=y
CONFIG_MAC80211_RC_MINSTREL_HT=y
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
CONFIG_HAVE_BPF_JIT=y
CONFIG_UEVENT_HELPER=y
CONFIG_UEVENT_HELPER_PATH=""
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_FW_LOADER=m
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
CONFIG_SOC_BUS=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP_MMIO=m
CONFIG_MTD=m
CONFIG_MTD_OF_PARTS=m
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
CONFIG_MTD_M25P80=m
CONFIG_MTD_BLOCK2MTD=m
CONFIG_MTD_SPI_NOR=m
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
CONFIG_DTC=y
CONFIG_OF=y
CONFIG_OF_FLATTREE=y
CONFIG_OF_EARLY_FLATTREE=y
CONFIG_OF_ADDRESS=y
CONFIG_OF_IRQ=y
CONFIG_OF_NET=y
CONFIG_OF_MTD=y
CONFIG_OF_RESERVED_MEM=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
CONFIG_SRAM=y
CONFIG_EEPROM_93CX6=m
CONFIG_SCSI_MOD=m
CONFIG_SCSI=m
CONFIG_SCSI_DMA=y
CONFIG_SCSI_PROC_FS=y
CONFIG_BLK_DEV_SD=m
CONFIG_SCSI_LOWLEVEL=y
CONFIG_MD=y
CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=y
CONFIG_DM_BUFIO=y
CONFIG_DM_CRYPT=y
CONFIG_DM_VERITY=y
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
CONFIG_DUMMY=m
CONFIG_VXLAN=m
CONFIG_TUN=m
CONFIG_VETH=m
CONFIG_PPP=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_FILTER=y
CONFIG_PPP_MPPE=m
CONFIG_PPPOE=m
CONFIG_PPPOL2TP=m
CONFIG_SLHC=m
CONFIG_USB_NET_DRIVERS=m
CONFIG_WLAN=y
CONFIG_RTL8187=m
CONFIG_RT2X00=m
CONFIG_RT2500USB=m
CONFIG_RT73USB=m
CONFIG_RT2800USB=m
CONFIG_RT2800USB_RT33XX=y
CONFIG_RT2800USB_RT35XX=y
CONFIG_RT2800USB_RT3573=y
CONFIG_RT2800USB_RT53XX=y
CONFIG_RT2800USB_RT55XX=y
CONFIG_RT2800USB_UNKNOWN=y
CONFIG_RT2800_LIB=m
CONFIG_RT2X00_LIB_USB=m
CONFIG_RT2X00_LIB=m
CONFIG_RT2X00_LIB_FIRMWARE=y
CONFIG_RT2X00_LIB_CRYPTO=y
CONFIG_RT2X00_LIB_LEDS=y
CONFIG_RT2X00_DEBUG=y
CONFIG_RTL_CARDS=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTLWIFI_USB=m
CONFIG_RTLWIFI_DEBUG=y
CONFIG_RTL8192C_COMMON=m
CONFIG_RTL8XXXU=m
CONFIG_INPUT=y
CONFIG_INPUT_LEDS=m
CONFIG_INPUT_MOUSEDEV=m
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_EVDEV=m
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=m
CONFIG_MOUSE_PS2_FOCALTECH=y
CONFIG_MOUSE_SERIAL=m
CONFIG_MOUSE_SYNAPTICS_USB=m
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_PROPERTIES=y
CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
CONFIG_TOUCHSCREEN_USB_E2I=y
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
CONFIG_TTY=y
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_VT_CONSOLE_SLEEP=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
CONFIG_DEVMEM=y
CONFIG_DEVKMEM=y
CONFIG_SERIAL_EARLYCON=y
CONFIG_SERIAL_IMX=y
CONFIG_SERIAL_IMX_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_HW_RANDOM=m
CONFIG_I2C=m
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=m
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_IMX=m
CONFIG_SPI=y
CONFIG_SPI_DEBUG=y
CONFIG_SPI_MASTER=y
CONFIG_SPI_BITBANG=m
CONFIG_SPI_IMX=m
CONFIG_SPI_SPIDEV=m
CONFIG_PPS=y
CONFIG_PINCTRL=y
CONFIG_PINMUX=y
CONFIG_PINCONF=y
CONFIG_PINCTRL_IMX=y
CONFIG_PINCTRL_IMX53=y
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_DEVRES=y
CONFIG_OF_GPIO=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_GENERIC=y
CONFIG_GPIO_GENERIC_PLATFORM=y
CONFIG_GPIO_MXC=y
CONFIG_POWER_SUPPLY=y
CONFIG_POWER_AVS=y
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
CONFIG_SOFT_WATCHDOG=m
CONFIG_GPIO_WATCHDOG=m
CONFIG_IMX2_WDT=m
CONFIG_SSB_POSSIBLE=y
CONFIG_BCMA_POSSIBLE=y
CONFIG_REGULATOR=y
CONFIG_REGULATOR_LTC3589=m
CONFIG_DUMMY_CONSOLE=y
CONFIG_HID=y
CONFIG_HID_GENERIC=m
CONFIG_USB_HID=m
CONFIG_USB_HIDDEV=y
CONFIG_USB_KBD=m
CONFIG_USB_MOUSE=m
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=m
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=m
CONFIG_USB_DEFAULT_PERSIST=y
CONFIG_USB_OTG=y
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_STORAGE=m
CONFIG_USB_CHIPIDEA=m
CONFIG_USB_CHIPIDEA_OF=m
CONFIG_USB_CHIPIDEA_UDC=y
CONFIG_USB_CHIPIDEA_HOST=y
CONFIG_USB_CHIPIDEA_DEBUG=y
CONFIG_USB_PHY=y
CONFIG_NOP_USB_XCEIV=y
CONFIG_USB_GADGET=m
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
CONFIG_USB_LIBCOMPOSITE=m
CONFIG_USB_F_ACM=m
CONFIG_USB_F_SS_LB=m
CONFIG_USB_U_SERIAL=m
CONFIG_USB_U_ETHER=m
CONFIG_USB_F_SERIAL=m
CONFIG_USB_F_OBEX=m
CONFIG_USB_F_NCM=m
CONFIG_USB_F_ECM=m
CONFIG_USB_F_EEM=m
CONFIG_USB_F_SUBSET=m
CONFIG_USB_F_RNDIS=m
CONFIG_USB_F_MASS_STORAGE=m
CONFIG_USB_F_FS=m
CONFIG_USB_F_HID=m
CONFIG_USB_F_PRINTER=m
CONFIG_USB_CONFIGFS=m
CONFIG_USB_CONFIGFS_SERIAL=y
CONFIG_USB_CONFIGFS_ACM=y
CONFIG_USB_CONFIGFS_OBEX=y
CONFIG_USB_CONFIGFS_NCM=y
CONFIG_USB_CONFIGFS_ECM=y
CONFIG_USB_CONFIGFS_ECM_SUBSET=y
CONFIG_USB_CONFIGFS_RNDIS=y
CONFIG_USB_CONFIGFS_EEM=y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
CONFIG_USB_CONFIGFS_F_LB_SS=y
CONFIG_USB_CONFIGFS_F_FS=y
CONFIG_USB_CONFIGFS_F_HID=y
CONFIG_USB_CONFIGFS_F_PRINTER=y
CONFIG_USB_ZERO=m
CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
CONFIG_USB_ETH_EEM=y
CONFIG_USB_G_NCM=m
CONFIG_USB_GADGETFS=m
CONFIG_USB_FUNCTIONFS=m
CONFIG_USB_FUNCTIONFS_ETH=y
CONFIG_USB_FUNCTIONFS_RNDIS=y
CONFIG_USB_FUNCTIONFS_GENERIC=y
CONFIG_USB_MASS_STORAGE=m
CONFIG_USB_G_SERIAL=m
CONFIG_USB_G_PRINTER=m
CONFIG_USB_CDC_COMPOSITE=m
CONFIG_USB_G_ACM_MS=m
CONFIG_USB_G_MULTI=m
CONFIG_USB_G_MULTI_RNDIS=y
CONFIG_USB_G_MULTI_CDC=y
CONFIG_USB_G_HID=m
CONFIG_MMC=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_ESDHC_IMX=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=m
CONFIG_LEDS_GPIO=m
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
CONFIG_LEDS_TRIGGER_CPU=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_TRANSIENT=m
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_SYSTOHC=y
CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
CONFIG_RTC_INTF_DEV_UIE_EMUL=y
CONFIG_RTC_DRV_IMXDI=y
CONFIG_RTC_DRV_MXC=y
CONFIG_DMADEVICES=y
CONFIG_DMA_ENGINE=y
CONFIG_DMA_OF=y
CONFIG_IMX_SDMA=m
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
CONFIG_COMMON_CLK=y
CONFIG_CLKSRC_OF=y
CONFIG_CLKSRC_PROBE=y
CONFIG_CLKSRC_MMIO=y
CONFIG_CLKSRC_IMX_GPT=y
CONFIG_IOMMU_SUPPORT=y
CONFIG_EXTCON=m
CONFIG_IRQCHIP=y
CONFIG_ARCH_HAS_RESET_CONTROLLER=y
CONFIG_DCACHE_WORD_ACCESS=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_JBD2=y
CONFIG_FS_MBCACHE=y
CONFIG_EXPORTFS=y
CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_AUTOFS4_FS=y
CONFIG_FUSE_FS=m
CONFIG_OVERLAY_FS=y
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_NTFS_FS=m
CONFIG_NTFS_RW=y
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_TMPFS_XATTR=y
CONFIG_CONFIGFS_FS=y
CONFIG_MISC_FILESYSTEMS=y
CONFIG_ECRYPT_FS=m
CONFIG_ECRYPT_FS_MESSAGING=y
CONFIG_JFFS2_FS=m
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_FILE_DIRECT=y
CONFIG_SQUASHFS_DECOMP_SINGLE=y
CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZ4=y
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_NFS_V2=m
CONFIG_NFS_V3=m
CONFIG_NFSD=m
CONFIG_NFSD_V3=y
CONFIG_GRACE_PERIOD=m
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
CONFIG_CIFS=m
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_UTF8=y
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=1024
CONFIG_DEBUG_FS=y
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
CONFIG_DEBUG_KERNEL=y
CONFIG_HAVE_DEBUG_KMEMLEAK=y
CONFIG_LOCKUP_DETECTOR=y
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=0
CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=1
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=5
CONFIG_SCHED_DEBUG=y
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_RCU_CPU_STALL_TIMEOUT=21
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_TRACING_SUPPORT=y
CONFIG_LKDTM=m
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_STRICT_DEVMEM=y
CONFIG_ARM_UNWIND=y
CONFIG_DEBUG_IMX_UART_PORT=1
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
CONFIG_KEYS=y
CONFIG_ENCRYPTED_KEYS=m
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_INTEGRITY=y
CONFIG_DEFAULT_SECURITY_DAC=y
CONFIG_DEFAULT_SECURITY=""
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=m
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_RNG_DEFAULT=m
CONFIG_CRYPTO_PCOMP=m
CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_AKCIPHER2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_USER=m
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
CONFIG_CRYPTO_GF128MUL=y
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_NULL2=y
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_CCM=m
CONFIG_CRYPTO_GCM=m
CONFIG_CRYPTO_SEQIV=m
CONFIG_CRYPTO_ECHAINIV=m
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=m
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_XTS=y
CONFIG_CRYPTO_CMAC=m
CONFIG_CRYPTO_HMAC=m
CONFIG_CRYPTO_CRC32C=y
CONFIG_CRYPTO_GHASH=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=m
CONFIG_CRYPTO_ANSI_CPRNG=m
CONFIG_CRYPTO_DRBG_MENU=m
CONFIG_CRYPTO_DRBG_HMAC=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG=m
CONFIG_CRYPTO_JITTERENTROPY=m
CONFIG_CRYPTO_USER_API=m
CONFIG_CRYPTO_USER_API_HASH=m
CONFIG_CRYPTO_USER_API_SKCIPHER=m
CONFIG_CRYPTO_USER_API_RNG=m
CONFIG_CRYPTO_HASH_INFO=y
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_DEV_SAHARA=y
CONFIG_ASYMMETRIC_KEY_TYPE=m
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
CONFIG_PUBLIC_KEY_ALGO_RSA=m
CONFIG_X509_CERTIFICATE_PARSER=m
CONFIG_PKCS7_MESSAGE_PARSER=m
CONFIG_BITREVERSE=y
CONFIG_HAVE_ARCH_BITREVERSE=y
CONFIG_RATIONAL=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_NET_UTILS=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_GENERIC_IO=y
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
CONFIG_CRC_CCITT=m
CONFIG_CRC16=y
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC32_SLICEBY8=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
CONFIG_LZ4_DECOMPRESS=y
CONFIG_DECOMPRESS_GZIP=y
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT_MAP=y
CONFIG_HAS_DMA=y
CONFIG_DQL=y
CONFIG_NLATTR=y
CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
CONFIG_CLZ_TAB=y
CONFIG_MPILIB=m
CONFIG_LIBFDT=y
CONFIG_OID_REGISTRY=m
CONFIG_ARCH_HAS_SG_CHAIN=y

View File

@ -0,0 +1,20 @@
{ stdenv, buildLinux, fetchurl }:
buildLinux {
inherit stdenv;
version = "4.4.0";
src = fetchurl {
url = "mirror://kernel/linux/kernel/v4.x/linux-4.4.tar.xz";
sha256 = "401d7c8fef594999a460d10c72c5a94e9c2e1022f16795ec51746b0d165418b2";
};
configfile = ./kernel.config;
kernelPatches = [{
patch = ./usbarmory-dts.patch;
name = "usbarmory-dts";
}];
allowImportFromDerivation = true;
}

View File

@ -0,0 +1,418 @@
diff -Nru linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory-common.dtsi linux-4.4/arch/arm/boot/dts/imx53-usbarmory-common.dtsi
--- linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory-common.dtsi 1969-12-31 18:00:00.000000000 -0600
+++ linux-4.4/arch/arm/boot/dts/imx53-usbarmory-common.dtsi 2016-02-04 08:31:38.730794858 -0600
@@ -0,0 +1,241 @@
+/*
+ * USB armory MkI device tree include file
+ * https://inversepath.com/usbarmory
+ *
+ * Copyright (C) 2015, Inverse Path
+ * Andrej Rosano <andrej@inversepath.com>
+ *
+ * Licensed under GPLv2
+ */
+
+#include "imx53.dtsi"
+
+/ {
+ model = "Inverse Path USB armory";
+ compatible = "inversepath,imx53-usbarmory", "fsl,imx53";
+};
+
+/ {
+ chosen {
+ stdout-path = &uart1;
+ };
+
+ memory {
+ reg = <0x70000000 0x20000000>;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+ pinctrl-names = "default";
+ pinctrl-0 = <&led_pin_gpio4_27>;
+
+ user {
+ label = "LED";
+ gpios = <&gpio4 27 0>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+ soc {
+ aips@60000000 {
+ sahara: crypto@63ff8000 {
+ compatible = "fsl,imx53-sahara";
+ reg = <0x63ff8000 0x4000>;
+ interrupts = <19 20>;
+ clocks = <&clks IMX5_CLK_SAHARA_IPG_GATE>,
+ <&clks IMX5_CLK_SAHARA_IPG_GATE>;
+ clock-names = "ipg", "ahb";
+ };
+ };
+ };
+};
+
+&cpu0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a8";
+ reg = <0x0>;
+ clocks = <&clks IMX5_CLK_ARM>;
+ clock-latency = <61036>;
+ voltage-tolerance = <5>;
+ operating-points = <
+ /* kHz */
+ 166666 850000
+ 400000 900000
+ 800000 1050000
+ >;
+};
+
+&esdhc1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_esdhc1>;
+ status = "okay";
+};
+
+&iomuxc {
+ pinctrl-names = "default";
+
+ imx53-usbarmory {
+ led_pin_gpio4_27: led_gpio4_27@0 {
+ fsl,pins = <
+ MX53_PAD_DISP0_DAT6__GPIO4_27 0x80000000
+ >;
+ };
+
+ pinctrl_esdhc1: esdhc1grp {
+ fsl,pins = <
+ MX53_PAD_SD1_DATA0__ESDHC1_DAT0 0x1d5
+ MX53_PAD_SD1_DATA1__ESDHC1_DAT1 0x1d5
+ MX53_PAD_SD1_DATA2__ESDHC1_DAT2 0x1d5
+ MX53_PAD_SD1_DATA3__ESDHC1_DAT3 0x1d5
+ MX53_PAD_SD1_CMD__ESDHC1_CMD 0x1d5
+ MX53_PAD_SD1_CLK__ESDHC1_CLK 0x1d5
+ >;
+ };
+
+ pinctrl_i2c1_pmic: i2c1grp_pmic {
+ fsl,pins = <
+ MX53_PAD_EIM_D21__I2C1_SCL 0xc0000000
+ MX53_PAD_EIM_D28__I2C1_SDA 0xc0000000
+ >;
+ };
+
+ /*
+ UART mode pin header configration:
+ pin number: 1 2 3 4 5 6 7
+ function: GND 5V ? ? TX RX ?
+ */
+ pinctrl_uart1: uart1grp {
+ fsl,pins = <
+ MX53_PAD_CSI0_DAT10__UART1_TXD_MUX 0x1e4
+ MX53_PAD_CSI0_DAT11__UART1_RXD_MUX 0x1e4
+ >;
+ };
+
+ /*
+ GPIO mode pin header configuration:
+ 1 2 3 4 5 6 7
+ GND 5V GPIO5[26] GPIO5[27] GPIO5[28] GPIO5[29] GPIO5[30]
+ */
+ pinctrl_gpio5: gpio5grp {
+ fsl,pins = <
+ MX53_PAD_CSI0_DAT8__GPIO5_26 0xc0
+ MX53_PAD_CSI0_DAT9__GPIO5_27 0xc0
+ MX53_PAD_CSI0_DAT10__GPIO5_28 0xc0
+ MX53_PAD_CSI0_DAT11__GPIO5_29 0xc0
+ MX53_PAD_CSI0_DAT12__GPIO5_30 0xc0
+ >;
+ };
+
+ /*
+ SPI mode pin header configuration:
+ 1 2 3 4 5 6 7
+ GND 5V SCLK MOSI MISO /SS0 /SS1
+ */
+ pinctrl_ecspi2: ecspi2grp {
+ fsl,pins = <
+ MX53_PAD_CSI0_DAT8__ECSPI2_SCLK 0x80000000
+ MX53_PAD_CSI0_DAT9__ECSPI2_MOSI 0x80000000
+ MX53_PAD_CSI0_DAT10__ECSPI2_MISO 0x80000000
+ MX53_PAD_CSI0_DAT11__GPIO5_29 0x80000000
+ MX53_PAD_CSI0_DAT12__GPIO5_30 0x80000000
+ >;
+ };
+
+ /*
+ I2C mode pin header configuration:
+ 1 2 3 4 5 6 7
+ GND 5V SDA SCL GPIO5[28] GPIO5[29] GPIO5[30]
+ */
+ pinctrl_i2c1_pinheader: i2c1grp_pinheader {
+ fsl,pins = <
+ MX53_PAD_CSI0_DAT8__I2C1_SDA 0xc0000000
+ MX53_PAD_CSI0_DAT9__I2C1_SCL 0xc0000000
+ MX53_PAD_CSI0_DAT10__GPIO5_28 0x80000000
+ MX53_PAD_CSI0_DAT11__GPIO5_29 0x80000000
+ MX53_PAD_CSI0_DAT12__GPIO5_30 0x80000000
+ >;
+ };
+ };
+};
+
+&uart1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_uart1>;
+ status = "okay";
+};
+
+&vpu {
+ status = "okay";
+};
+
+&i2c1 {
+ pinctrl-0 = <&pinctrl_i2c1_pmic>;
+ status = "okay";
+ ltc3589: pmic@34 {
+ compatible = "lltc,ltc3589-2";
+ reg = <0x34>;
+ regulators {
+ sw1_reg: sw1 {
+ regulator-min-microvolt = <591930>;
+ regulator-max-microvolt = <1224671>;
+ lltc,fb-voltage-divider = <100000 158000>;
+ regulator-ramp-delay = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sw2_reg: sw2 {
+ regulator-min-microvolt = <704123>;
+ regulator-max-microvolt = <1456803>;
+ lltc,fb-voltage-divider = <180000 191000>;
+ regulator-ramp-delay = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sw3_reg: sw3 {
+ regulator-min-microvolt = <1341250>;
+ regulator-max-microvolt = <2775000>;
+ lltc,fb-voltage-divider = <270000 100000>;
+ regulator-ramp-delay = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ bb_out_reg: bb-out {
+ regulator-min-microvolt = <3387341>;
+ regulator-max-microvolt = <3387341>;
+ lltc,fb-voltage-divider = <511000 158000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+ ldo1_reg: ldo1 {
+ regulator-min-microvolt = <1306329>;
+ regulator-max-microvolt = <1306329>;
+ lltc,fb-voltage-divider = <100000 158000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ ldo2_reg: ldo2 {
+ regulator-min-microvolt = <704123>;
+ regulator-max-microvolt = <1456806>;
+ lltc,fb-voltage-divider = <180000 191000>;
+ regulator-ramp-delay = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ ldo3_reg: ldo3 {
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-boot-on;
+ };
+
+ ldo4_reg: ldo4 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <3200000>;
+ };
+ };
+ };
+};
diff -Nru linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory.dts linux-4.4/arch/arm/boot/dts/imx53-usbarmory.dts
--- linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory.dts 1969-12-31 18:00:00.000000000 -0600
+++ linux-4.4/arch/arm/boot/dts/imx53-usbarmory.dts 2016-02-04 08:31:38.730794858 -0600
@@ -0,0 +1,18 @@
+/*
+ * USB armory MkI device mode device tree file
+ * https://inversepath.com/usbarmory
+ *
+ * Copyright (C) 2015, Inverse Path
+ * Andrej Rosano <andrej@inversepath.com>
+ *
+ * Licensed under GPLv2
+ */
+
+/dts-v1/;
+
+#include "imx53-usbarmory-common.dtsi"
+
+&usbotg {
+ dr_mode = "peripheral";
+ status = "okay";
+};
diff -Nru linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory-gpio.dts linux-4.4/arch/arm/boot/dts/imx53-usbarmory-gpio.dts
--- linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory-gpio.dts 1969-12-31 18:00:00.000000000 -0600
+++ linux-4.4/arch/arm/boot/dts/imx53-usbarmory-gpio.dts 2016-02-04 08:31:38.730794858 -0600
@@ -0,0 +1,26 @@
+/*
+ * USB armory MkI device mode device tree file
+ * https://inversepath.com/usbarmory
+ *
+ * Copyright (C) 2015, Inverse Path
+ * Andrej Rosano <andrej@inversepath.com>
+ *
+ * Licensed under GPLv2
+ */
+
+/dts-v1/;
+
+#include "imx53-usbarmory-common.dtsi"
+
+&usbotg {
+ dr_mode = "peripheral";
+ status = "okay";
+};
+
+&iomuxc {
+ pinctrl-0 = <&pinctrl_gpio5>;
+};
+
+&uart1 {
+ status = "disabled";
+};
diff -Nru linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory-host.dts linux-4.4/arch/arm/boot/dts/imx53-usbarmory-host.dts
--- linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory-host.dts 1969-12-31 18:00:00.000000000 -0600
+++ linux-4.4/arch/arm/boot/dts/imx53-usbarmory-host.dts 2016-02-04 08:31:38.730794858 -0600
@@ -0,0 +1,18 @@
+/*
+ * USB armory MkI host mode device tree file
+ * https://inversepath.com/usbarmory
+ *
+ * Copyright (C) 2015, Inverse Path
+ * Andrej Rosano <andrej@inversepath.com>
+ *
+ * Licensed under GPLv2
+ */
+
+/dts-v1/;
+
+#include "imx53-usbarmory-common.dtsi"
+
+&usbotg {
+ dr_mode = "host";
+ status = "okay";
+};
diff -Nru linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory-i2c.dts linux-4.4/arch/arm/boot/dts/imx53-usbarmory-i2c.dts
--- linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory-i2c.dts 1969-12-31 18:00:00.000000000 -0600
+++ linux-4.4/arch/arm/boot/dts/imx53-usbarmory-i2c.dts 2016-02-04 08:31:38.730794858 -0600
@@ -0,0 +1,32 @@
+/*
+ * USB armory MkI device mode device tree file
+ * https://inversepath.com/usbarmory
+ *
+ * Copyright (C) 2015, Inverse Path
+ * Andrej Rosano <andrej@inversepath.com>
+ *
+ * Licensed under GPLv2
+ */
+
+/dts-v1/;
+
+#include "imx53-usbarmory-common.dtsi"
+
+&usbotg {
+ dr_mode = "peripheral";
+ status = "okay";
+};
+
+&uart1 {
+ status = "disabled";
+};
+
+&iomuxc {
+ pinctrl-0 = <&pinctrl_i2c1_pinheader>;
+};
+
+&i2c1 {
+ ltc3589: pmic@34 {
+ status = "disabled";
+ };
+};
diff -Nru linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory-spi.dts linux-4.4/arch/arm/boot/dts/imx53-usbarmory-spi.dts
--- linux-4.4-orig/arch/arm/boot/dts/imx53-usbarmory-spi.dts 1969-12-31 18:00:00.000000000 -0600
+++ linux-4.4/arch/arm/boot/dts/imx53-usbarmory-spi.dts 2016-02-04 08:31:38.730794858 -0600
@@ -0,0 +1,45 @@
+/*
+ * USB armory MkI device mode device tree file
+ * https://inversepath.com/usbarmory
+ *
+ * Copyright (C) 2015, Inverse Path
+ * Andrej Rosano <andrej@inversepath.com>
+ *
+ * Licensed under GPLv2
+ */
+
+/dts-v1/;
+
+#include "imx53-usbarmory-common.dtsi"
+
+&usbotg {
+ dr_mode = "peripheral";
+ status = "okay";
+};
+
+&uart1 {
+ status = "disabled";
+};
+
+&iomuxc {
+ pinctrl-0 = <&pinctrl_ecspi2>;
+};
+
+&ecspi2 {
+ fsl,spi-num-chipselects = <2>;
+ cs-gpios = <&gpio5 29 0>, <&gpio5 30 0>;
+ status = "okay";
+
+ flash: m25p40@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "st,m25p40", "st,m25p";
+ spi-max-frequency = <20000000>;
+ reg = <0>;
+
+ partition@0 {
+ label = "test-partition";
+ reg = <0x0 0x80000>;
+ };
+ };
+};
diff -Nru linux-4.4-orig/arch/arm/boot/dts/Makefile linux-4.4/arch/arm/boot/dts/Makefile
--- linux-4.4-orig/arch/arm/boot/dts/Makefile 2016-02-04 13:29:20.880919101 -0600
+++ linux-4.4/arch/arm/boot/dts/Makefile 2016-02-04 13:27:10.733849955 -0600
@@ -278,6 +278,10 @@
imx53-smd.dtb \
imx53-tx53-x03x.dtb \
imx53-tx53-x13x.dtb \
+ imx53-usbarmory.dtb \
+ imx53-usbarmory-host.dtb \
+ imx53-usbarmory-i2c.dtb \
+ imx53-usbarmory-gpio.dtb \
imx53-voipac-bsb.dtb
dtb-$(CONFIG_SOC_IMX6Q) += \
imx6dl-apf6dev.dtb \

View File

@ -0,0 +1,3 @@
{
imports = [ ../../common/pc/laptop ];
}

View File

@ -0,0 +1,11 @@
{ lib, ... }:
{
imports = [
../.
../../../common/cpu/intel
];
# https://github.com/NixOS/nixpkgs/issues/18356
boot.blacklistedKernelModules = [ "nouveau" ];
}

View File

@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
imports = [ ../../common/pc/laptop ];
hardware.trackpoint.enable = lib.mkDefault true;
hardware.trackpoint.emulateWheel = lib.mkDefault config.hardware.trackpoint.enable;
# Fingerprint reader: login and unlock with fingerprint (if you add one with `fprintd-enroll`)
# services.fprintd.enable = true;
}

View File

@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
imports = [
../.
../../../common/cpu/amd
];
# see https://github.com/NixOS/nixpkgs/issues/69289
boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "5.2") pkgs.linuxPackages_latest;
}

View File

@ -0,0 +1,10 @@
{ nixos, lib, pkgs, config, stdenv, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
../.
];
services.throttled.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,10 @@
{ nixos, pkgs, lib, config, stdenv, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
../.
];
services.throttled.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,36 @@
{ config, lib, pkgs, ... }:
{
imports = [
../.
../tp-smapi.nix
../../../common/cpu/intel
];
boot = {
# TODO: this configuration seems to be very aggressive.
# Ask @peti if it's stable or not.
kernelParams = [
"drm.debug=0"
"drm.vblankoffdelay=1"
"i915.semaphores=1"
"i915.modeset=1"
"i915.use_mmio_flip=1"
"i915.powersave=1"
"i915.enable_ips=1"
"i915.disable_power_well=1"
"i915.enable_hangcheck=1"
"i915.enable_cmd_parser=1"
"i915.fastboot=0"
"i915.enable_ppgtt=1"
"i915.reset=0"
"i915.lvds_use_ssc=0"
"i915.enable_psr=0"
"vblank_mode=0"
"i915.i915_enable_rc6=1"
];
blacklistedKernelModules = [
"sierra_net" "cdc_mbim" "cdc_ncm" "btusb"
];
};
}

View File

@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
imports = [
../.
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
];
}

View File

@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
{
imports = [
../.
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
];
boot = {
kernelParams = [
# fixes brightness keys, see https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_T430s
"acpi_osi\='!Windows 2012'"
];
};
}

View File

@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
{
imports = [
../.
../../../common/cpu/intel
];
boot = {
extraModprobeConfig = lib.mkDefault ''
options bbswitch use_acpi_to_detect_card_state=1
'';
# TODO: probably enable tcsd? Is this line necessary?
kernelModules = [ "tpm-rng" ];
};
}

View File

@ -0,0 +1,14 @@
{ config, lib, pkgs, ... }:
{
imports = [
../.
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
];
boot = {
# TODO: probably enable tcsd? Is this line necessary?
kernelModules = [ "tpm-rng" ];
};
}

View File

@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
../.
];
}

View File

@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
../.
];
}

View File

@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
../.
];
}

View File

@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
../.
];
services.throttled.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,31 @@
{ nixos, lib, pkgs, config, stdenv, ... }:
{
imports = [
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
../.
];
services = {
# This fixes the pulseaudio profiles of the Thinkpad T490.
# The laptop contains a single audio card with 5 sub-devices. Default pulseaudio only offers a single sink
# which can only be switched between speaker/HDMI via a manual profile change.
# This configures a profile set for pulseaudio which offers multiple sinks corresponding to the
# speaker + 4 HDMI ports. This allows the user to play audio streams on the speaker and any of the 4 HDMI/USB-C
# ports at the same time.
udev.extraRules = let
t490ProfileSet = ./t490-profile-set.conf;
in ''
SUBSYSTEM!="sound", GOTO="pulseaudio_end"
ACTION!="change", GOTO="pulseaudio_end"
KERNEL!="card*", GOTO="pulseaudio_end"
# Lenovo T490
ATTRS{vendor}=="0x8086" ATTRS{device}=="0x9dc8" ATTRS{subsystem_vendor}=="0x17aa", ATTRS{subsystem_device}=="0x2279", ENV{PULSE_PROFILE_SET}="${t490ProfileSet}"
LABEL="pulseaudio_end"
'';
throttled.enable = lib.mkDefault true;
};
}

View File

@ -0,0 +1,107 @@
[Profile speaker+hdmi-stereo]
description = Speaker + HDMI Stereo
output-mappings = analog-stereo hdmi-stereo hdmi-stereo-extra1 hdmi-stereo-extra2
input-mappings = analog-stereo
[Mapping analog-stereo]
device-strings = front:%f
channel-map = left,right
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic
priority = 15
[Mapping hdmi-stereo]
description = Stereo (HDMI)
device-strings = hdmi:%f
paths-output = hdmi-output-0
channel-map = left,right
priority = 6
direction = output
[Mapping hdmi-stereo-extra1]
description = Stereo (HDMI 2)
device-strings = hdmi:%f,1
paths-output = hdmi-output-1
channel-map = left,right
priority = 8
direction = output
[Mapping hdmi-stereo-extra2]
description = Stereo (HDMI 3)
device-strings = hdmi:%f,2
paths-output = hdmi-output-2
channel-map = left,right
priority = 6
direction = output
[Profile speaker+hdmi-surround]
description = Speaker + HDMI 5.1
output-mappings = analog-stereo hdmi-surround hdmi-surround-extra1 hdmi-surround-extra2
input-mappings = analog-stereo
[Mapping analog-stereo]
device-strings = front:%f
channel-map = left,right
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic
priority = 15
[Mapping hdmi-surround]
description = Digital Surround 5.1 (HDMI)
device-strings = hdmi:%f
paths-output = hdmi-output-0
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
priority = 6
direction = output
[Mapping hdmi-surround-extra1]
description = Digital Surround 5.1 (HDMI 2)
device-strings = hdmi:%f,1
paths-output = hdmi-output-1
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
priority = 8
direction = output
[Mapping hdmi-surround-extra2]
description = Digital Surround 5.1 (HDMI 3)
device-strings = hdmi:%f,2
paths-output = hdmi-output-2
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
priority = 6
direction = output
[Profile speaker+hdmi-surround71]
description = Speaker + HDMI 7.1
output-mappings = analog-stereo hdmi-surround71 hdmi-surround71-extra1 hdmi-surround71-extra2
input-mappings = analog-stereo
[Mapping analog-stereo]
device-strings = front:%f
channel-map = left,right
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic
priority = 15
[Mapping hdmi-surround71]
description = Digital Surround 7.1 (HDMI)
device-strings = hdmi:%f
paths-output = hdmi-output-0
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
priority = 6
direction = output
[Mapping hdmi-surround71-extra1]
description = Digital Surround 7.1 (HDMI 2)
device-strings = hdmi:%f,1
paths-output = hdmi-output-1
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
priority = 8
direction = output
[Mapping hdmi-surround71-extra2]
description = Digital Surround 7.1 (HDMI 3)
device-strings = hdmi:%f,2
paths-output = hdmi-output-2
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
priority = 6
direction = output

View File

@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
{
imports = [
../.
../../../common/cpu/amd
../../../common/pc/laptop/acpi_call.nix
];
# Force use of the thinkpad_acpi driver for backlight control.
# This allows the backlight save/load systemd service to work.
boot.kernelParams = [ "acpi_backlight=native" ];
# see https://github.com/NixOS/nixpkgs/issues/69289
boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "5.2") pkgs.linuxPackages_latest;
}

View File

@ -0,0 +1,11 @@
# tp_smapi works on ThinkPads made before 2013. See compat table:
# https://www.thinkwiki.org/wiki/Tp_smapi#Model-specific_status
{ config, ... }:
{
boot = {
kernelModules = [ "tp_smapi" ];
extraModulePackages = with config.boot.kernelPackages; [ tp_smapi ];
};
}

View File

@ -0,0 +1,8 @@
{
imports = [
../.
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
../../../common/pc/laptop/ssd
];
}

View File

@ -0,0 +1,48 @@
{ config, lib, ... }:
with lib;
{
imports = [
../.
];
# Fixes an issue with incorrect battery reporting. See
# https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Extreme_(Gen_2)#Invalid_Stats_Workaround
boot.initrd.availableKernelModules = [ "battery" ];
# New ThinkPads have a different TrackPoint manufacturer/name.
# See also https://certification.ubuntu.com/catalog/component/input/5313/input%3ATPPS/2ElanTrackPoint/
hardware.trackpoint.device = "TPPS/2 Elan TrackPoint";
# Since the HDMI port is connected to the NVIDIA card.
hardware.bumblebee.connectDisplay = true;
nixpkgs.overlays = [
(self: super: {
bumblebee = super.bumblebee.override {
extraNvidiaDeviceOptions = ''
Option "AllowEmptyInitialConfiguration"
'';
};
})
];
services.xserver = mkMerge [
{
# Set the right DPI. xdpyinfo says the screen is 508×285 mm but
# it actually is 344×193 mm.
monitorSection = ''
DisplaySize 344 193
'';
}
# To support intel-virtual-output when using Bumblebee.
(mkIf config.hardware.bumblebee.enable {
deviceSection = ''Option "VirtualHeads" "1"'';
videoDrivers = [ "intel" ];
})
];
services.throttled.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,36 @@
# X1 6th generation with a QHD (2560x1440px) display
{ config, lib, pkgs, ... }:
{
imports = [
../.
];
# Fix font sizes in X
services.xserver.dpi = 210;
fonts.fontconfig.dpi = 210;
# Fix sizes of GTK/GNOME ui elements
environment.variables = {
GDK_SCALE = lib.mkDefault "2";
GDK_DPI_SCALE= lib.mkDefault "0.5";
};
# Enable readable font on console. The example configuration that
# follows is taliored towards western languages. To see how to
# configure the font download the source tarball from
# http://terminus-font.sourceforge.net/ and read the README file on
# the root dir
# i18n = {
# # this means ISO8859-1 or ISO8859-15 or Windows-1252 codepages
# # (ter-1), 16x32 px (32), normal font weight (n)
# consoleFont = "ter-132n";
# consoleKeyMap = "us";
# defaultLocale = "en_US.UTF-8";
# consolePackages = [ pkgs.terminus_font ];
# };
# Early configure the console to make the font readable from the
# start
# boot.earlyVconsoleSetup = true;
}

View File

@ -0,0 +1,20 @@
# A good source of information about how to fix the issues still
# standing with kernel 4.6.11 is the following wiki page:
# https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6). The
# TrackPoint and TouchPad issues there seem to have been fixed already.
#
# Enable the lower-power S3 suspend state by upgrading the BIOS to version >= 1.30,
# then manually selecting Linux in the power management section.
{ config, pkgs, lib, ... }:
{
imports = [
../.
../../../../common/pc/laptop/acpi_call.nix
];
# New ThinkPads have a different TrackPoint manufacturer/name.
# See also https://certification.ubuntu.com/catalog/component/input/5313/input%3ATPPS/2ElanTrackPoint/
hardware.trackpoint.device = "TPPS/2 Elan TrackPoint";
services.throttled.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,15 @@
{ lib, pkgs, ... }:
{
# This can be removed when the default kernel is at least version 5.6
# https://github.com/NixOS/nixpkgs/pull/86168
boot.kernelPackages = lib.mkIf
(lib.versionOlder pkgs.linux.version "5.6")
(lib.mkDefault pkgs.linuxPackages_5_6);
# This can be removed when PulseAudio is at least version 14
# https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_7)#Audio
hardware.pulseaudio.extraConfig = ''
load-module module-alsa-sink device=hw:0,0 channels=4
load-module module-alsa-source device=hw:0,6 channels=4
'';
}

View File

@ -0,0 +1,7 @@
{
imports = [
../.
../../../../common/pc/laptop/acpi_call.nix
./audio.nix
];
}

View File

@ -0,0 +1,6 @@
{
imports = [
../.
../../../common/cpu/intel
];
}

View File

@ -0,0 +1,14 @@
{ config, lib, pkgs, ... }:
{
imports = [
../.
../../../common/cpu/amd
];
boot.extraModprobeConfig = lib.mkDefault ''
options snd_hda_intel enable=0,1
'';
services.xserver.videoDrivers = [ "ati" ];
}

View File

@ -0,0 +1,10 @@
{ config, lib, pkgs, ... }:
{
imports = [
../.
../../../common/cpu/intel
../../../common/pc/laptop/hdd # TODO: reverse compat
../tp-smapi.nix
];
}

View File

@ -0,0 +1,19 @@
{ config, lib, pkgs, ... }:
{
imports = [
../.
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
];
boot = {
kernelModules = [
"tpm-rng"
];
};
services.xserver.deviceSection = lib.mkDefault ''
Option "TearFree" "true"
'';
}

View File

@ -0,0 +1,7 @@
{
imports = [
../.
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
];
}

View File

@ -0,0 +1,12 @@
{
imports = [
../.
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
];
# https://wiki.archlinux.org/index.php/TLP#Btrfs
services.tlp.extraConfig = ''
SATA_LINKPWR_ON_BAT=med_power_with_dipm
'';
}

View File

@ -0,0 +1,6 @@
{
imports = [
../.
../../../common/cpu/intel
];
}

View File

@ -0,0 +1,12 @@
{ config, pkgs, lib, ... }:
{
imports = [
../.
../../../common/cpu/intel
../../../common/pc/laptop/acpi_call.nix
../../../common/pc/laptop/ssd/default.nix
];
services.throttled.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,63 @@
This is a setup for installing NixOS in Hyper-V as a guest.
I don't have details handy anymore on the detailed steps I had to do on the Windows host
(there's no NixWindows yet, unfortunately...), so you'll have to try googling that yourself, e.g. something like
"linux on hyper-v" or "ubuntu on hyper-v". (You're welcome to send PRs with improvements of this guide.)
Below, I'm providing only the info with what to do on the NixOS side of things.
## Installation ##
I basically followed the [guide for NixOS on VirtualBox](https://nixos.org/wiki/Installing_NixOS_in_a_VirtualBox_guest).
However, some additional changes in `/etc/nixos/configuration.nix` were required to really make it work
(I don't include them as a .nix file, as they must be done **before `nixos-install`**, and I'm not sure how to proceed
with cloning the nixos-hardware repo at this stage):
# REQUIRED - see: https://github.com/nixos/nixpkgs/issues/9899
boot.initrd.kernelModules = ["hv_vmbus" "hv_storvsc"];
# RECOMMENDED
# - use 800x600 resolution for text console, to make it easy to fit on screen
boot.kernelParams = ["video=hyperv_fb:800x600"]; # https://askubuntu.com/a/399960
# - avoid a problem with `nix-env -i` running out of memory
boot.kernel.sysctl."vm.overcommit_memory" = "1"; # https://github.com/NixOS/nix/issues/421
# UNKNOWN - not sure if below are needed; were suggested for VirtualBox and I used them
boot.loader.grub.device = "/dev/sda";
boot.initrd.checkJournalingFS = false;
## Shared folder ##
To share a folder between Windows host and Linux/NixOS guest, the typical solution seems to be to make a folder "shared"
on Windows, then access it via Samba from NixOS.
On the Windows host, I had to make an additional virtual switch in Hyper-V Manager, with mode "internal".
Then in properties of the virtual network card on Windows host (attached to the virtual switch), I
changed the IP to a fixed 10.0.0.100 (mask 255.255.255.240). I also added a special purpose user on the host, with some
long randomly generated password, to act as Samba credentials for NixOS.
To test that it works, I used the following commands:
$ nix-env -iA nixos.samba
$ smbclient -L //10.0.0.100 -U shares-guest%ReplaceWithSomeLongRandomlyGeneratedPassword
Domain=[DESKTOP-ABCD123] OS=[Windows 10 Pro 14393] Server=[Windows 10 Pro 6.3]
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Administracja zdalna
C$ Disk Domyślny udział
IPC$ IPC Zdalne wywołanie IPC
shared-space Disk
Connection to 10.0.0.100 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
NetBIOS over TCP disabled -- no workgroup available
$ nix-env -e samba
Then I added the following lines in `/etc/nixos/configuration.nix`:
# Client for shared folder on Windows Hyper-V host
# Based on: nixpkgs.git/nixos/tests/samba.nix
fileSystems."/vm-share" = {
fsType = "cifs";
device = "//10.0.0.100/shared-space";
options = [ "username=shares-guest" "password=ReplaceWithSomeLongRandomlyGeneratedPassword" ];
};
networking.interfaces.eth1.ip4 = [{address="10.0.0.101"; prefixLength=28;}];

View File

@ -0,0 +1,41 @@
Work in progress. This is the setup for a dual-boot windows/NixOS.
== Installation ==
Current requirements:
* USB stick
* Latest unstable minimal installation iso, I used [[https://nixos.org/releases/nixos/unstable/nixos-15.05pre61665.4c01e6d/nixos-minimal-15.05pre61665.4c01e6d-x86_64-linux.iso the 15.06-pre one]]
* (maybe) USB keyboard and therefore a USB hub
* WiFi SSID and password
In the current installation iso, the kernel doesn't support the MS Type cover yet, so you need a USB keyboard for the initial install. Also note that at one point the keyboard wasn't working, and I couldn't see it in lsusb output. After a cold boot it worked fine.
=== Steps ===
Preparation:
* Copy the ISO to the USB stick as explained [[https://nixos.org/nixos/manual/sec-installation.html#sec-booting-from-usb in the manual]]. Note that if you just dd the image onto the USB stick, it will boot without changes
* With Windows Disk Management, shrink the windows disk so you have room for your installation. Use the free space to create a new partition without a filesystem or drive letter.
* Check out [[https://github.com/cransom/surface-pro-3-nixos this expression and set of patches]] and add it to support newer versions of the Type Cover as well as enable the touch screen.
* Reboot the Surface and furiously tap Esc until you end up in the BIOS screen. There, turn off secure boot (don't delete the keys), and change the boot order to USB + SSD. Save.
* You should now be in the NixOS installer
* Attach the USB stick and keyboard if the Type Cover doesn't work. The NixOS manual is at alt+F8
Installation:
* Using gdisk, print your partition table to find the empty partition you created. Find the EFI partition number (1 for me) and your new partition number (5 for me).
* Create your filesystem of choice on the partition, I picked btrfs: `mkfs.btrfs -L root /dev/disk/by-id/xxx-5` (xxx is the samsung ssd). Mount it on /mnt.
** With btrfs it's wise to put the nix store in its own subvolume: `btrfs subvol create /mnt/nix; btrfs subvol create /mnt/nix/store`
* We'll be using Gummiboot, which needs to access the EFI partition. `mkdir /mnt/boot; mount /dev/disk/by-id/xxx-1`
* Initialize your hardware configuration: `nixos-generate-config --root /mnt`
* Create your wifi credentials: `wpa_passphrase SSID PASS > /etc/wpa_supplicant.conf; cp /etc/wpa_supplicant.conf /mnt/etc`. Check that ifconfig gets an ip address.
* Edit /mnt/etc/configuration.nix, making sure that you have at least:
<nowiki>networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
boot.kernelPackages = pkgs.linuxPackages_latest;
# be able to use the type cover in the initrd
boot.kernelModules = [ "hid-microsoft" ];</nowiki>
* Install: `nixos-install`
If this completes successfully, you should be able to reboot, remove the USB stick, and NixOS should come up.
'''Note''': If using the hid-multitouch patch, you can boot windows as well as other profiles of NixOS without using a usb keyboard.

View File

@ -0,0 +1,9 @@
{ lib, ... }:
{
# to use the type cover in the initrd
boot.kernelModules = [ "hid-microsoft" ];
# TODO: reverse compat
networking.wireless.enable = lib.mkDefault true;
}

View File

@ -0,0 +1,8 @@
{
boot.kernelParams = [ "console=ttyS0,115200n8" ];
boot.loader.grub.extraConfig = "
serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
terminal_input serial
terminal_output serial
";
}

View File

@ -0,0 +1,87 @@
This config is for [Librem 13v3](https://puri.sm/products/librem-13/) and [15v3](https://puri.sm/products/librem-15/) Laptops from Purism.
Librem comes with Coreboot + SeaBIOS payload. That means EFI boot is not
possible. Use `fdisk` to partition hard drive, and GRUB as a bootloader:
```nix
{
boot.loader.grub = {
enable = true;
device = "/dev/sda";
version = 2;
};
}
```
## Adding a PureOS partition to the GRUB menu
I first assume that `boot.loader.grub.useOSProber = true;` should be sufficient.
However GRUB was not able to identify the disks correctly and it took me several
reinstallation till setting `boot.loader.grub.fsIdentifier= "provided";` and using
boot.loader.grub.extraEntries allowed me to dual boot NixOS and PureOS.
Be aware that each time the PureOS updates the /boot/grub/grub.cfg you will be unable
to boot into NixOS unless you patch grub.cfg manually again.
Therefore: If you want to be able to boot into your old PureOS distribution
add the following lines, assuming that you have a separate boot partition
Adapt linux version and the UUID to your disk!!
```nix
{
boot.loader.grub.useOSProber = false;
boot.loader.grub.fsIdentifier= "provided";
boot.loader.grub.extraEntries = ''
menuentry "PureOS with linux 4.19.0-5-amd64 on /dev/sdb2 " {
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 ef7a4dcf-8cc4-4870-b860-3ed64906f9b9
else
search --no-floppy --fs-uuid --set=root ef7a4dcf-8cc4-4870-b860-3ed64906f9b9
fi
linux /vmlinuz-4.19.0-5-amd64 root=UUID=43899f26-04f2-4ccb-b52a-c9441f1a1a6d ro quiet splash resume=UUID=923317f8-d8bb-4e1f-bca3-f36a556de609 # $vt_handoff
initrd /initrd.img-4.19.0-5-amd64
};
}
```
## Automatically lock the desktop when removing the librem key
The [instructions](https://docs.puri.sm/Librem_Key/Getting_Started/User_Manual.html#automatically-lock-the-desktop-when-removing-the-librem-key) to lock the screen after unplugging the [Librem Key](https://puri.sm/products/librem-key/#overview) don't work under NixOS.
This snippet works on my Librem 15v3 laptop running KDE without wayland and is using the xlock from the package xlockmore.
```nix
{ pkgs, services , systemd, ... }:
let
libremScreenSaver = pkgs.writeScriptBin "libremScreenSaver" ''
#!${pkgs.bash}/bin/bash
user=`ps aux | egrep "start_kdeinit|gdm-(wayland|x)-session"| head -n 1 | awk '{print $1}'`
if [ -n "$user" ]; then
sudo -u $user DISPLAY=:0 xlock 2>&1 | logger lockScreen for user $user
else
logger libremScreenSaver failed to find a user. Not running KDE?
fi
'';
in {
services.udev.path = [ pkgs.procps pkgs.logger pkgs.gawk pkgs.xlockmore ];
services.udev.extraRules = ''
ACTION=="remove", ENV{PRODUCT}=="316d/4c4b/101" RUN+="${pkgs.systemd}/bin/systemctl --no-block start lockScreen@%k.service"
'';
systemd.services."lockScreen@" = {
bindsTo = [ "dev-%i.device"] ;
path = [ pkgs.procps pkgs.logger pkgs.sudo pkgs.xlockmore pkgs.gawk ] ;
serviceConfig = {
Type = "oneshot"; # was simple
ExecStart = "${libremScreenSaver}/bin/libremScreenSaver %I";
};
};
}
```

Some files were not shown because too many files have changed in this diff Show More