From bd18a20251663774e7b0b63f8dd3e1c289efb547 Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Fri, 1 Jul 2022 22:14:51 +0000 Subject: [PATCH] some generally (I hope) useful config for the Pinephone --- pinephone.nix | 59 ++++++++++++++++++++++++++++++++++++++++++++++ refresh-bootfs.nix | 43 +++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 pinephone.nix create mode 100644 refresh-bootfs.nix diff --git a/pinephone.nix b/pinephone.nix new file mode 100644 index 0000000..37f8298 --- /dev/null +++ b/pinephone.nix @@ -0,0 +1,59 @@ +{ config, lib, pkgs, ... }: + +# configuration.nix contains settings applicable to _my_ pinephone +# pinephone.nix contains settings applicable to eufon on pinephones. +# module.nix contains settings applicable to eufon generally + +{ + config = { + powerManagement = { + enable = true; + cpuFreqGovernor = "ondemand"; + }; + mobile.boot.stage-1.firmware = [ + config.mobile.device.firmware + ]; + hardware.sensor.iio.enable = true; + hardware.firmware = [ config.mobile.device.firmware ]; + + services.fwupd = { + enable = true; + }; + + environment.systemPackages = + let refresh-bootfs = (import ./refresh-bootfs.nix { inherit config pkgs lib; }); + in with pkgs; [ + dtc + file + refresh-bootfs + ]; + + environment.etc."fwupd/remotes.d/testing.conf" = { + mode = "0644"; + text = '' + [fwupd Remote] + + Enabled=true + Title=Linux Vendor Firmware Service (testing) + MetadataURI=https://cdn.fwupd.org/downloads/firmware-testing.xml.gz + ReportURI=https://fwupd.org/lvfs/firmware/report + OrderBefore=lvfs,fwupd + AutomaticReports=false + ApprovalRequired=false + ''; + }; + + nixpkgs = { + config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "pine64-pinephone-firmware" + ]; + + }; +# boot.loader.generic-extlinux-compatible.enable = lib.mkForce true; + hardware.opengl = { + enable = true; + driSupport = true; + }; + + }; +} diff --git a/refresh-bootfs.nix b/refresh-bootfs.nix new file mode 100644 index 0000000..8cde483 --- /dev/null +++ b/refresh-bootfs.nix @@ -0,0 +1,43 @@ +{ config, pkgs, lib, ... }: + +# nixos/mobile-nixos don't currently (June 2022) update the kernel and +# initrd used by the bootloader when nixos-rebuild is run. This is a +# workaround until they do. Mount your boot filesystem somewhere +# and run "refresh-bootfs /path/to/mounted/bootfs" after switching +# configuration + +let + inherit (config.mobile.outputs) recovery stage-0; + inherit (pkgs) writeScriptBin buildPackages imageBuilder runCommandNoCC; + + kernel = stage-0.mobile.boot.stage-1.kernel.package; + kernel_file = "${kernel}/${if kernel ? file then kernel.file else pkgs.stdenv.hostPlatform.linux-kernel.target}"; + # bootscr = runCommandNoCC "boot.scr" { + # nativeBuildInputs = [ + # buildPackages.ubootTools + # ]; + # } '' + # mkimage -C none -A arm64 -T script -d {bootcmd} $out + # ''; + +in writeScriptBin "refresh-bootfs" '' + #!${pkgs.runtimeShell} + test -n "$1" || exit 1 + test -d "$1" || exit 1 + cd $1 + test -f ./boot.scr || exit 1 + mkdir -vp mobile-nixos/{boot,recovery} + ( + cd mobile-nixos/boot + cp -v ${stage-0.mobile.outputs.initrd} stage-1 + cp -v ${kernel_file} kernel + cp -vr ${kernel}/dtbs dtbs + ) + ( + cd mobile-nixos/recovery + cp -v ${recovery.mobile.outputs.initrd} stage-1 + cp -v ${kernel_file} kernel + cp -vr ${kernel}/dtbs dtbs + ) + # cp -v {bootscr} ./boot.scr +''