63 lines
1.6 KiB
Nix
63 lines
1.6 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
{
|
|
imports = [
|
|
./kernel
|
|
./mesa
|
|
./peripheral-firmware
|
|
./boot-m1n1
|
|
./sound
|
|
];
|
|
|
|
config =
|
|
let
|
|
cfg = config.hardware.asahi;
|
|
in {
|
|
nixpkgs.overlays = lib.mkBefore [ cfg.overlay ];
|
|
|
|
hardware.asahi.pkgs =
|
|
if cfg.pkgsSystem != "aarch64-linux"
|
|
then
|
|
import (pkgs.path) {
|
|
crossSystem.system = "aarch64-linux";
|
|
localSystem.system = cfg.pkgsSystem;
|
|
overlays = [ cfg.overlay ];
|
|
}
|
|
else pkgs;
|
|
};
|
|
|
|
options.hardware.asahi = {
|
|
pkgsSystem = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "aarch64-linux";
|
|
description = ''
|
|
System architecture that should be used to build the major Asahi
|
|
packages, if not the default aarch64-linux. This allows installing from
|
|
a cross-built ISO without rebuilding them during installation.
|
|
'';
|
|
};
|
|
|
|
pkgs = lib.mkOption {
|
|
type = lib.types.raw;
|
|
description = ''
|
|
Package set used to build the major Asahi packages. Defaults to the
|
|
ambient set if not cross-built, otherwise re-imports the ambient set
|
|
with the system defined by `hardware.asahi.pkgsSystem`.
|
|
'';
|
|
};
|
|
|
|
overlay = lib.mkOption {
|
|
type = lib.mkOptionType {
|
|
name = "nixpkgs-overlay";
|
|
description = "nixpkgs overlay";
|
|
check = lib.isFunction;
|
|
merge = lib.mergeOneOption;
|
|
};
|
|
default = import ../packages/overlay.nix;
|
|
defaultText = "overlay provided with the module";
|
|
description = ''
|
|
The nixpkgs overlay for asahi packages.
|
|
'';
|
|
};
|
|
};
|
|
}
|