summaryrefslogtreecommitdiff
path: root/pkgs/linux-postmarketos-allwinner.nix
blob: 78610f1b453aaccf7d8cb407f9fd86c1da3de2a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
{
  stdenv,
  lib,
  fetchurl,
  fetchFromCodeberg,
  linuxManualConfig,
  ...
}:

let pmaportsRev = "ecd710af96ac54650e945a268639f4a7cbc47960";
    pmaports = "https://gitlab.postmarketos.org/postmarketOS/pmaports/-/raw/${pmaportsRev}/device/community/linux-postmarketos-allwinner";
    patches = [
      { file = "0001-dts-add-dontbeevil-pinephone-devkit.patch";
        hash = "sha256-zNUKUmg2Nfyeep3QxV0TKxU8HKrRrHZ4oRsE0DO7f2s="; }
      { file = "0002-dts-add-pinetab-dev-old-display-panel.patch";
        hash = "sha256-TDlsfSeG5aPLKTKLEtKr/SMecVruWPW8vgcYUmRhMcs="; }
      { file = "0003-dts-pinetab-add-missing-ohci1.patch";
        hash = "sha256-7rQ0O8yabfSyAL/cvrh9fIC3tMOkEkE7BfUDSOd+Mc8="; }
      { file = "0004-dts-pinetab-make-audio-routing-consistent-with-pinep.patch";
        hash = "sha256-pt0zF7pEW2rtcI+HziOfOmCwoza2xKWZXrwUDai4OL8="; }
      { file = "0005-dts-pinephone-drop-modem-power-node.patch";
        hash = "sha256-aPkA5Zz2Dt0VcixVNoT43EEcTzFdahEiThNfkmJ8jn8="; }
      { file = "0006-drm-panel-simple-Add-Hannstar-TQTM070CB501.patch";
        hash = "sha256-9Dw9EXCB2TLzysQlqvnOenTqjF86tF14VjN9b4hMbrs="; }
      { file = "0007-ARM-dts-sun6i-Add-GoClever-Orion-70L-tablet.patch";
        hash = "sha256-LardzbENRbPjDZrfd+r5sTYBd4hfy0EbkISK1zlJT/U="; }
      { file = "0008-drm-panel-simple-Add-Hannstar-HSD070IDW1-A.patch";
        hash = "sha256-Ojb0+9yLyJzH2AM2ayvOdZKg7DFnMOvyp4sFALbJiOQ="; }
      { file = "0009-ARM-dts-sun6i-Add-Lark-FreeMe-70.2S-tablet.patch";
        hash = "sha256-IchiHgAUEwED/biPUmpJiT+SBeEoDhywBM7Vz7RVsBY="; }
      { file = "0010-eMMC-workaround.patch";
        hash = "sha256-ZlBH99pI74/1BkbAXUrrNyaUIvDqSKaI0FopA72Y6IQ="; }
      { file = "0011-arm64-dts-allwinner-orangepi-3-fix-ethernet.patch";
        hash = "sha256-MIx4plKsTxhJAthGATi1Fh0er8YuMNrPqGqFuIsHfTI="; }
    ];
    config-aarch64 = fetchurl {
      url = "${pmaports}/config-postmarketos-allwinner.aarch64";
      hash = "sha256-tr2J3pu+jquA7P0pp/G4FFq5sypxGEK/WYvCM0KVaS0=";
    };
    config-armv7 = fetchurl {
      url = "${pmaports}/config-postmarketos-allwinner.armv7";
      hash = "sha256-YIIhFtcKlX+PVC9SobCm4c4keSvE2BHQYZzm4x+xkSU=";
    };
in
linuxManualConfig rec {
  version = "6.18.3";

  src = fetchFromCodeberg {
    owner = "megi";
    repo = "linux";
    rev = "orange-pi-6.18-20260105-0049";
    hash = "sha256-Gb2L8t8DBnTHNeUtYSM2FC0DthlBIwjRzsXyVCH76Ms=";
  };

  kernelPatches = lib.map
    (patch: {
      name = (lib.replaceString ".patch" "" patch.file);
      patch = fetchurl {
        url = "${pmaports}/${patch.file}";
        hash = patch.hash;
      };
    })
    patches;

  configfile =
    if stdenv.hostPlatform.isAarch64 then config-aarch64
    else if stdenv.hostPlatform.isAarch32 then config-armv7
    else throw "Unsupported architecture: ${stdenv.hostPlatform.system}";
  allowImportFromDerivation = true;

  extraMeta = {
    description = "Kernel fork with Pine64 patches (megi's tree, slightly patched)";
    homepage = "https://megous.com/git/linux/";
    license = lib.licenses.gpl2Only;
    maintainers = [];
  };
}