commit bd18a20251663774e7b0b63f8dd3e1c289efb547
parent 27b28e997bbc3ee395fae7e893e03248e5ae8999
Author: Daniel Barlow <dan@telent.net>
Date: Fri, 1 Jul 2022 22:14:51 +0000
some generally (I hope) useful config for the Pinephone
Diffstat:
2 files changed, 102 insertions(+), 0 deletions(-)
diff --git a/pinephone.nix 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
@@ -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
+''