{ 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;
    };

  };
}