-
-
Notifications
You must be signed in to change notification settings - Fork 604
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: networkException <[email protected]>
- Loading branch information
1 parent
2a807ad
commit 98eaa5f
Showing
5 changed files
with
116 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
## NixOS on T2 Macs | ||
|
||
This is the `nixos-hardware` module of the [T2 Linux Project](https://t2linux.org). | ||
|
||
Overall, most features (WiFi, bluetooth, audio, touchbar, ...) of Macs are supported, [see this page](https://wiki.t2linux.org/state/) for a detailed list of things that work and things that don't/partially work. | ||
|
||
Following [this guide](https://wiki.t2linux.org/distributions/nixos/installation/) is the recommended way to install, as it incudes the extra things you have to do on a T2 Mac. | ||
|
||
You can consult the [wiki](https://wiki.t2linux.org/) for information specific to T2 Macs. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
{ pkgs, ... }: | ||
|
||
let | ||
audioFiles = pkgs.fetchFromGitHub { | ||
owner = "kekrby"; | ||
repo = "t2-better-audio"; | ||
rev = "e46839a28963e2f7d364020518b9dac98236bcae"; | ||
hash = "sha256-x7K0qa++P1e1vuCGxnsFxL1d9+nwMtZUJ6Kd9e27TFs="; | ||
}; | ||
|
||
overrideAudioFiles = package: pluginsPath: | ||
package.overrideAttrs (new: old: { | ||
preConfigurePhases = old.preConfigurePhases or [ ] ++ [ "postPatchPhase" ]; | ||
|
||
postPatchPhase = '' | ||
cp -r ${audioFiles}/files/{profile-sets,paths} ${pluginsPath}/alsa/mixer/ | ||
''; | ||
}); | ||
in | ||
{ | ||
# For keyboard and touchbar | ||
boot.kernelPackages = with pkgs; recurseIntoAttrs (linuxPackagesFor (callPackage ./pkgs/linux-t2.nix { })); | ||
boot.initrd.kernelModules = [ "apple-bce" ]; | ||
|
||
# For audio | ||
boot.kernelParams = [ "pcie_ports=compat" "intel_iommu=on" "iommu=pt" ]; | ||
services.udev.extraRules = builtins.readFile (pkgs.substitute { | ||
src = "${audioFiles}/files/91-audio-custom.rules"; | ||
replacements = [ "--replace" "/usr/bin/sed" "${pkgs.gnused}/bin/sed" ]; | ||
}); | ||
|
||
hardware.pulseaudio.package = overrideAudioFiles pkgs.pulseaudio "src/modules/"; | ||
|
||
services.pipewire = rec { | ||
package = overrideAudioFiles pkgs.pipewire "spa/plugins/"; | ||
|
||
wireplumber.package = pkgs.wireplumber.override { | ||
pipewire = package; | ||
}; | ||
}; | ||
|
||
powerManagement = { | ||
powerUpCommands = "${pkgs.kmod}/bin/modprobe apple_touchbar"; | ||
powerDownCommands = "${pkgs.kmod}/bin/rmmod apple_touchbar"; | ||
}; | ||
|
||
# After suspend, the inode for the backlight device has changed. This service | ||
# simply restarts upower to inform it of that change. | ||
systemd.services.fix-keyboard-backlight-after-suspend = { | ||
after = [ "suspend.target" ]; | ||
wantedBy = [ "suspend.target" ]; | ||
|
||
serviceConfig = { | ||
Type = "simple"; | ||
ExecStartPre = "${pkgs.coreutils}/bin/sleep 30"; | ||
ExecStart = "${pkgs.systemd}/bin/systemctl --no-block restart upower.service"; | ||
}; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
{ lib, buildLinux, fetchFromGitHub, fetchurl, ... } @ args: | ||
|
||
let | ||
patchRepo = fetchFromGitHub { | ||
owner = "t2linux"; | ||
repo = "linux-t2-patches"; | ||
rev = "13dee3659d1ef17c5ea588c8be629fe693045496"; | ||
hash = "sha256-jUmFruM3K65nfxu9uztkieZDGEiUfJavzQqwrjSPzLc="; | ||
}; | ||
|
||
version = "6.3.4"; | ||
majorVersion = with lib; (elemAt (take 1 (splitVersion version)) 0); | ||
in | ||
buildLinux (args // { | ||
inherit version; | ||
|
||
pname = "linux-t2"; | ||
# Snippet from nixpkgs | ||
modDirVersion = with lib; "${concatStringsSep "." (take 3 (splitVersion "${version}.0"))}"; | ||
|
||
src = fetchurl { | ||
url = "mirror://kernel/linux/kernel/v${majorVersion}.x/linux-${version}.tar.xz"; | ||
hash = "sha256-2GJ1KO1rOuYH0Ase9aRuDnBRrkCyhf1OgvT/C7craOg="; | ||
}; | ||
|
||
structuredExtraConfig = with lib.kernel; { | ||
APPLE_BCE = module; | ||
APPLE_GMUX = module; | ||
BRCMFMAC = module; | ||
BT_BCM = module; | ||
BT_HCIBCM4377 = module; | ||
BT_HCIUART_BCM = yes; | ||
BT_HCIUART = module; | ||
HID_APPLE_IBRIDGE = module; | ||
HID_APPLE = module; | ||
HID_APPLE_MAGIC_BACKLIGHT = module; | ||
HID_APPLE_TOUCHBAR = module; | ||
HID_SENSOR_ALS = module; | ||
SND_PCM = module; | ||
STAGING = yes; | ||
}; | ||
|
||
kernelPatches = lib.attrsets.mapAttrsToList (file: type: { name = file; patch = "${patchRepo}/${file}"; }) | ||
(lib.attrsets.filterAttrs (file: type: type == "regular" && lib.strings.hasSuffix ".patch" file) | ||
(builtins.readDir patchRepo)); | ||
} // (args.argsOverride or {})) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters