mirror of
https://github.com/elwrcl/copnix.git
synced 2026-10-31 22:28:03 +03:00
138 lines
4.3 KiB
Nix
138 lines
4.3 KiB
Nix
{ pkgs, inputs, ... }:
|
|
|
|
let
|
|
ocPath = "/boot/EFI/OC";
|
|
|
|
oceanixPkgs = import pkgs.path {
|
|
localSystem = pkgs.stdenv.hostPlatform;
|
|
inherit (pkgs) config;
|
|
overlays = [ inputs.oceanix.overlays.default ];
|
|
};
|
|
|
|
ocResources = pkgs.fetchzip {
|
|
url = "https://github.com/acidanthera/OcBinaryData/archive/refs/heads/master.zip";
|
|
sha256 = "sha256-B5CABp0Y2dAVuw7185suaUuryl3iII4QNBVBttivQ7Y=";
|
|
};
|
|
|
|
ocConfig = inputs.oceanix.lib.OpenCoreConfig {
|
|
pkgs = oceanixPkgs;
|
|
modules = [
|
|
(
|
|
{ ... }:
|
|
{
|
|
oceanix.opencore.settings = {
|
|
UEFI.Output.ProvideConsoleGop = true;
|
|
UEFI.Output.Resolution = "1366x768";
|
|
UEFI.Output.TextRenderer = "BuiltinGraphics";
|
|
|
|
UEFI.Audio = {
|
|
AudioCodec = 0;
|
|
AudioDevice = "PciRoot(0x0)/Pci(0x1b,0x0)";
|
|
AudioOutMask = 1;
|
|
AudioSupport = true;
|
|
ResetTrafficClass = true;
|
|
DisconnectHda = false;
|
|
MaximumGain = -10;
|
|
MinimumAssistGain = -30;
|
|
MinimumAudibleGain = -128;
|
|
PlayChime = "Enabled";
|
|
SetupDelay = 0;
|
|
};
|
|
|
|
UEFI.AppleInput = {
|
|
AppleEvent = "Builtin";
|
|
CustomDelays = false;
|
|
GraphicsInputMirroring = true;
|
|
KeyInitialDelay = 50;
|
|
KeySubsequentDelay = 5;
|
|
PointerPollMask = -1;
|
|
PointerPollMin = 10;
|
|
PointerPollMax = 80;
|
|
PointerSpeedDiv = 1;
|
|
PointerSpeedMul = 1;
|
|
};
|
|
|
|
Misc.Boot.PickerMode = "External";
|
|
Misc.Boot.PickerVariant = "Acidanthera\\Syrah";
|
|
Misc.Boot.PickerAttributes = 144;
|
|
Misc.Boot.Timeout = 15;
|
|
Misc.Boot.HideAuxiliary = true;
|
|
|
|
Misc.Debug = {
|
|
AppleDebug = true;
|
|
ApplePanic = true;
|
|
DisableWatchDog = true;
|
|
DisplayLevel = 2147483650;
|
|
Target = 3;
|
|
};
|
|
|
|
Misc.Security.SecureBootModel = "Disabled";
|
|
Misc.Security.ScanPolicy = 0;
|
|
Misc.Security.Vault = "Optional";
|
|
UEFI.Quirks.DisableSecurityPolicy = true;
|
|
UEFI.Quirks.ReleaseUsbOwnership = true;
|
|
|
|
PlatformInfo.Automatic = true;
|
|
PlatformInfo.UpdateSMBIOSMode = "Create";
|
|
PlatformInfo.Generic = {
|
|
SystemProductName = "MacBookPro9,2";
|
|
SystemSerialNumber = "C02J19YCDTY3";
|
|
SystemUUID = "8FF32D62-EC2E-46D1-A6D3-D1A5748F5F7B";
|
|
MLB = "C02227802QXF1YJ1M";
|
|
};
|
|
|
|
UEFI.Drivers = {
|
|
"OpenRuntime.efi" = {
|
|
Enabled = true;
|
|
};
|
|
"OpenCanopy.efi" = {
|
|
Enabled = true;
|
|
};
|
|
"OpenLinuxBoot.efi" = {
|
|
Enabled = true;
|
|
};
|
|
"AudioDxe.efi" = {
|
|
Enabled = true;
|
|
};
|
|
};
|
|
Misc.Entries = [ ];
|
|
};
|
|
}
|
|
)
|
|
];
|
|
};
|
|
|
|
in
|
|
{
|
|
system.activationScripts.opencoreConfig = {
|
|
text = ''
|
|
echo "--- Kopurando In1t ---"
|
|
|
|
if [ ! -d "${ocPath}" ] || ! ${pkgs.diffutils}/bin/diff -r "${ocConfig.efiPackage}/EFI/OC" "${ocPath}" >/dev/null 2>&1; then
|
|
echo "diffs are detected, writing EFI files..."
|
|
rm -rf ${ocPath}
|
|
mkdir -p ${ocPath}
|
|
cp -rf ${ocConfig.efiPackage}/EFI/OC/* ${ocPath}/
|
|
mkdir -p ${ocPath}/Resources
|
|
cp -rf ${ocResources}/Resources/* ${ocPath}/Resources/
|
|
else
|
|
echo "EFI is already up to date."
|
|
fi
|
|
|
|
BOOT_DEV=$(${pkgs.util-linux}/bin/findmnt -n -o SOURCE /boot)
|
|
|
|
if [ -n "$BOOT_DEV" ]; then
|
|
TARGET_DISK=$(echo "$BOOT_DEV" | ${pkgs.gnused}/bin/sed -E 's/p?[0-9]+$//')
|
|
PART_NUM=$(echo "$BOOT_DEV" | ${pkgs.gnugrep}/bin/grep -oE '[0-9]+$')
|
|
|
|
if ! ${pkgs.efibootmgr}/bin/efibootmgr | ${pkgs.gnugrep}/bin/grep -q "OpenCore_Copland"; then
|
|
echo "Registering OpenCore on $TARGET_DISK (partition $PART_NUM)..."
|
|
${pkgs.efibootmgr}/bin/efibootmgr -c -d "$TARGET_DISK" -p "$PART_NUM" -L "OpenCore_Copland" -l "\EFI\OC\OpenCore.efi"
|
|
fi
|
|
else
|
|
echo "Error: Could not find mount point for /boot!"
|
|
fi
|
|
'';
|
|
};
|
|
}
|