Merge pull request #73 from NixOS/20180824.021016/swanky

Add Toshiba Chromebook 2 (swanky), Org -> Markdown
This commit is contained in:
Yegor Timoshenko 2018-08-24 18:58:18 +03:00 committed by GitHub
commit 2ca9f58d7e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 159 additions and 47 deletions

61
README.md Normal file
View file

@ -0,0 +1,61 @@
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 nixos-hardware
```
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
];
```
## Profiles
| Model | Path |
| --------------------------------- | ------------------------------------------ |
| [Acer Aspire 4810T][] | `<nixos-hardware/acer/aspire/4810t>` |
| Airis N990 | `<nixos-hardware/airis/n990>` |
| 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>` |
| [Dell XPS 15 9550][] | `<nixos-hardware/dell/xps/15-9550>` |
| [Inverse Path USB armory][] | `<nixos-hardware/inversepath/usbarmory>` |
| Lenovo IdeaPad Z510 | `<nixos-hardware/lenovo/ideapad/z510>` |
| Lenovo ThinkPad T410 | `<nixos-hardware/lenovo/thinkpad/t410>` |
| Lenovo ThinkPad T440p | `<nixos-hardware/lenovo/thinkpad/t440p>` |
| Lenovo ThinkPad T460s | `<nixos-hardware/lenovo/thinkpad/t460s>` |
| 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 X270 | `<nixos-hardware/lenovo/thinkpad/x270>` |
| [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>` |
| Supermicro A1SRi-2758F | `<nixos-hardware/supermicro/a1sri-2758f>` |
| Supermicro X10SLL-F | `<nixos-hardware/supermicro/x10sll-f>` |
| [Toshiba Chromebook 2 `swanky`][] | `<nixos-hardware/toshiba/swanky>` |
[Acer Aspire 4810T]: acer/aspire/4810t
[Apple MacBook Pro 10,1]: apple/macbook-pro/10-1
[Dell XPS 15 9550]: dell/xps/15-9550
[Inverse Path USB armory]: inversepath/usbarmory
[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
[Toshiba Chromebook 2 `swanky`]: toshiba/swanky

View file

@ -1,47 +0,0 @@
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 nixos-hardware
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 ];
** Profiles
|-----------------------------+-----------------------------------------------|
| Model | Path |
|-----------------------------+-----------------------------------------------|
| [[file:acer/aspire/4810t][Acer Aspire 4810T]] | ~<nixos-hardware/acer/aspire/4810t>~ |
| Airis N990 | ~<nixos-hardware/airis/n990>~ |
| Apple MacBook Air 4,X | ~<nixos-hardware/apple/macbook-air/4>~ |
| Apple MacBook Air 6,X | ~<nixos-hardware/apple/macbook-air/6>~ |
| [[file:apple/macbook-pro/10-1][Apple MacBook Pro 10,1]] | ~<nixos-hardware/apple/macbook-pro/10-1>~ |
| [[file:apple/macbook-pro/11-5][Apple MacBook Pro 11,5]] | ~<nixos-hardware/apple/macbook-pro/11-5>~ |
| Apple MacBook Pro 12,1 | ~<nixos-hardware/apple/macbook-pro/12-1>~ |
| [[file:dell/xps/15-9550][Dell XPS 15 9550]] | ~<nixos-hardware/dell/xps/15-9550>~ |
| [[file:inversepath/usbarmory][Inverse Path USB armory]] | ~<nixos-hardware/inversepath/usbarmory>~ |
| Lenovo IdeaPad Z510 | ~<nixos-hardware/lenovo/ideapad/z510>~ |
| Lenovo ThinkPad T410 | ~<nixos-hardware/lenovo/thinkpad/t410>~ |
| Lenovo ThinkPad T440p | ~<nixos-hardware/lenovo/thinkpad/t440p>~ |
| Lenovo ThinkPad T460s | ~<nixos-hardware/lenovo/thinkpad/t460s>~ |
| 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 X270 | ~<nixos-hardware/lenovo/thinkpad/x270>~ |
| [[file:lenovo/thinkpad/x1/6th-gen][Lenovo ThinkPad X1 6th gen.]] | ~<nixos-hardware/lenovo/thinkpad/x1/6th-gen>~ |
| [[file:microsoft/surface-pro/3][Microsoft Surface Pro 3]] | ~<nixos-hardware/microsoft/surface-pro/3>~ |
| PC Engines APU | ~<nixos-hardware/pcengines/apu>~ |
| [[file:raspberry-pi/2][Raspberry Pi 2]] | ~<nixos-hardware/raspberry-pi/2>~ |
| [[file:samsung/np900x3c][Samsung Series 9 NP900X3C]] | ~<nixos-hardware/samsung/np900x3c>~ |
| [[file:purism/librem/13v3][Purism Librem 13v3]] | ~<nixos-hardware/purism/librem/13v3>~ |
| Supermicro A1SRi-2758F | ~<nixos-hardware/supermicro/a1sri-2758f>~ |
| Supermicro X10SLL-F | ~<nixos-hardware/supermicro/x10sll-f>~ |
|-----------------------------+-----------------------------------------------|

View file

@ -44,4 +44,6 @@ in
microsoft-surface-pro-3 = buildProfile ./microsoft/surface-pro/3; microsoft-surface-pro-3 = buildProfile ./microsoft/surface-pro/3;
pcengines-apu = buildProfile ./pcengines/apu; pcengines-apu = buildProfile ./pcengines/apu;
toshiba-swanky = buildProfile ./toshiba/swanky;
} }

66
toshiba/swanky/README.md Normal file
View file

@ -0,0 +1,66 @@
# Toshiba Chromebook 2 `swanky`
There might be a way to install NixOS without hardware modifications (via
enabled developer mode and SeaBIOS boot on Ctrl+L), however I'd highly
recommend replacing Google's Coreboot payload with Tianocore: that allows for
proper virtualization, suspend, removes annoying developer mode screen, and
generally just works much better.
These instructions carry some risk of bricking your device, since you'll be
reflashing BIOS. Risk is rather low, but please for the love of god make a BIOS
backup and store it someplace safe. That's the only way to reinstall ChromeOS
back after this procedure (BIOS image has licensing info), and it's much easier
to use a known good state to unbrick the laptop if things go wrong.
If you ever get unlucky, you can unbrick your device using Raspberry Pi,
some cables and a SOIC clip, see:
http://sicarul.com/how-to-un-brick-your-toshiba-chromebook-2-gandof-without-invoking-any-demons/
## Enable developer mode
This will wipe all user data and settings from the laptop.
Power off, then hold ESC + Refresh (F3) and abruptly press power button. You
should see "Chrome OS is missing or damaged" message. Press Ctrl+D. Press enter
at the next screen, then press Ctrl+D again. Wait until the laptop boots into
ChromeOS, then power it off.
## Disable hardware-backed BIOS write protection
Follow the first part of the guide at:
https://github.com/brendenyule/NativeToshibaCB2Guide/wiki/Remove-Write-Protect
Ignore SeaBIOS section. I also used some ductape over #5 to make sure that
metallic motherboard shield would not re-enable write protection.
## Flash Coreboot + Tianocore BIOS
Prepare a FAT32-formatted flash drive for BIOS backup in advance.
Go through ChromeOS installation dialogues until you have network access and
are able to log into a guest session. Open Chrome, press Ctrl+Alt+T to open
`crosh`, type in `shell` to get a real shell. Then, run:
```
$ cd ~
$ curl -LO https://mrchromebox.tech/firmware-util.sh
$ sudo bash firmware-util.sh
```
Choose "Install/Update Full ROM Firmware" option and follow instructions.
Do not skip BIOS backup!
Documentation: https://mrchromebox.tech/#fwscript
## Enable hardware-backed BIOS write protection
This is a cool security feature, so after flashing Coreboot + Tianocore BIOS
and making sure new BIOS works, consider re-enabling BIOS protection. Just put
in the missing screw #5.
## Install NixOS
`dd` an image on a flash drive, partition the drive, etc. On some later models,
you can swap SSD with any other 2242 M.2 SATA SSD, but on `swanky`, you have
to live with what you have (16GB eMMC). I recommend `256MB` for EFI partition,
and the rest for `/`.

View file

@ -0,0 +1,30 @@
{ lib, pkgs, ... }:
let
ucm = pkgs.fetchzip {
url = "https://github.com/plbossart/UCM/archive/2050ca78a4d1a853d1ba050b591f42e6f97adfc0.tar.gz";
sha256 = "1rs4mpz3b965nmz0yhy6j4ga3fdz320qnpkd7d61nvpv9c3i6zwj";
};
in
{
imports = [
../../common/cpu/intel
../../common/pc/laptop
];
# Sound only properly works out of the box on 4.18+ kernels.
boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
# Required for screen brightness control:
boot.kernelParams = [ "acpi_backlight=vendor" ];
# Sound requires a custom UCM config:
system.replaceRuntimeDependencies = [{
original = pkgs.alsaLib;
replacement = pkgs.alsaLib.overrideAttrs (super: {
postFixup = "cp -r ${ucm}/chtmax98090 $out/share/alsa/ucm";
});
}];
}