summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYegor Timoshenko <yegortimoshenko@riseup.net>2018-08-24 18:58:18 +0300
committerGitHub <noreply@github.com>2018-08-24 18:58:18 +0300
commit2ca9f58d7e0248885532807bfe32e3503bf2abf4 (patch)
tree46fe2e5611386852fde4b8950db22634ebcfaec0
parent7b8ca6d8684fbe6eaff33bdc849048f47ca9feaf (diff)
parent23e4b913d35dc6132a23986817836f82ee20070d (diff)
Merge pull request #73 from NixOS/20180824.021016/swanky
Add Toshiba Chromebook 2 (swanky), Org -> Markdown
-rw-r--r--CONTRIBUTING.md (renamed from CONTRIBUTING.org)0
-rw-r--r--README.md61
-rw-r--r--README.org47
-rw-r--r--default.nix2
-rw-r--r--toshiba/swanky/README.md66
-rw-r--r--toshiba/swanky/default.nix30
6 files changed, 159 insertions, 47 deletions
diff --git a/CONTRIBUTING.org b/CONTRIBUTING.md
index fc6ed8a..fc6ed8a 100644
--- a/CONTRIBUTING.org
+++ b/CONTRIBUTING.md
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..251ff0b
--- /dev/null
+++ b/README.md
@@ -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
diff --git a/README.org b/README.org
deleted file mode 100644
index 1ed22ee..0000000
--- a/README.org
+++ /dev/null
@@ -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>~ |
-|-----------------------------+-----------------------------------------------|
diff --git a/default.nix b/default.nix
index c5eb0fa..17612ce 100644
--- a/default.nix
+++ b/default.nix
@@ -44,4 +44,6 @@ in
microsoft-surface-pro-3 = buildProfile ./microsoft/surface-pro/3;
pcengines-apu = buildProfile ./pcengines/apu;
+
+ toshiba-swanky = buildProfile ./toshiba/swanky;
}
diff --git a/toshiba/swanky/README.md b/toshiba/swanky/README.md
new file mode 100644
index 0000000..ab4c072
--- /dev/null
+++ b/toshiba/swanky/README.md
@@ -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 `/`.
diff --git a/toshiba/swanky/default.nix b/toshiba/swanky/default.nix
new file mode 100644
index 0000000..9504d14
--- /dev/null
+++ b/toshiba/swanky/default.nix
@@ -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";
+ });
+ }];
+}