From c6722b86bfb34159c130606ff2ce46ef741c3b17 Mon Sep 17 00:00:00 2001 From: Niklaus Giger Date: Mon, 23 Mar 2020 20:19:54 +0100 Subject: Document librem laptop 15v3 --- README.md | 2 +- purism/librem/13v3/README.md | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8567028..1d9234f 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ See code for all available configurations. | PC Engines APU | `` | | [Raspberry Pi 2][] | `` | | [Samsung Series 9 NP900X3C][] | `` | -| [Purism Librem 13v3][] | `` | +| [Purism Librem 13v3/15v3][] | `` | | Supermicro A1SRi-2758F | `` | | Supermicro X10SLL-F | `` | | [Toshiba Chromebook 2 `swanky`][] | `` | diff --git a/purism/librem/13v3/README.md b/purism/librem/13v3/README.md index 8009eb3..2ecb6bd 100644 --- a/purism/librem/13v3/README.md +++ b/purism/librem/13v3/README.md @@ -1,3 +1,6 @@ +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: @@ -10,3 +13,40 @@ possible. Use `fdisk` to partition hard drive, and GRUB as a bootloader: }; } ``` + +## 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 + }; +} +``` -- cgit v1.2.3 From 9238b5f06e1bdac913554b5eb4666cb11d506d82 Mon Sep 17 00:00:00 2001 From: Niklaus Giger Date: Mon, 23 Mar 2020 20:21:11 +0100 Subject: Automatically lock the desktop when removing the librem key --- purism/librem/13v3/README.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/purism/librem/13v3/README.md b/purism/librem/13v3/README.md index 2ecb6bd..b4bae0b 100644 --- a/purism/librem/13v3/README.md +++ b/purism/librem/13v3/README.md @@ -50,3 +50,38 @@ Adapt linux version and the UUID to your disk!! }; } ``` + +## 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"; + }; + }; +} +``` -- cgit v1.2.3 From 12bb72aa6bac6634ca17c5664fda84e29995f763 Mon Sep 17 00:00:00 2001 From: Niklaus Giger Date: Thu, 26 Mar 2020 10:35:01 +0100 Subject: Create separate directories for librem 13v3 and 15v3 --- README.md | 4 +++- purism/librem/15v3 | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) create mode 120000 purism/librem/15v3 diff --git a/README.md b/README.md index 1d9234f..8210ed1 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,8 @@ See code for all available configurations. | PC Engines APU | `` | | [Raspberry Pi 2][] | `` | | [Samsung Series 9 NP900X3C][] | `` | -| [Purism Librem 13v3/15v3][] | `` | +| [Purism Librem 13v3][] | `` | +| [Purism Librem 15v3][] | `` | | Supermicro A1SRi-2758F | `` | | Supermicro X10SLL-F | `` | | [Toshiba Chromebook 2 `swanky`][] | `` | @@ -97,6 +98,7 @@ See code for all available configurations. [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 ## How to contribute a new device profile diff --git a/purism/librem/15v3 b/purism/librem/15v3 new file mode 120000 index 0000000..feb0d06 --- /dev/null +++ b/purism/librem/15v3 @@ -0,0 +1 @@ +13v3/ \ No newline at end of file -- cgit v1.2.3