-
Notifications
You must be signed in to change notification settings - Fork 0
/
config-processor-hardware.nix
74 lines (71 loc) · 2.19 KB
/
config-processor-hardware.nix
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
# Copyright 2022-2024 TII (SSRC) and the Ghaf contributors
# SPDX-License-Identifier: Apache-2.0
#
{
self,
lib,
ghafOS,
}: {
sysconf,
}:
let
inherit (import ./utils {inherit lib self ghafOS;}) updateAttrs updateHostConfig addCustomLaunchers addSystemPackages importvm;
targetconf = if lib.hasAttr "extend" sysconf
then updateAttrs false (import (lib.path.append ./hardware sysconf.extend) ).sysconf sysconf
else sysconf;
name = targetconf.name;
system = "x86_64-linux";
target = variant: let
hostConfiguration = lib.nixosSystem {
inherit system;
specialArgs = {inherit lib; inherit ghafOS;};
modules =
[
ghafOS.inputs.nixos-generators.nixosModules.raw-efi
self.nixosModules.fmo-common
self.nixosModules.fmo-host
self.nixosModules.microvm
{
ghaf = {
# Enable all the default UI applications
profiles = {
x86 = {
enable = true;
vms = targetconf.vms;
};
#TODO clean this up when the microvm is updated to latest
release.enable = variant == "release";
debug.enable = variant == "debug";
};
};
boot.kernelParams = [
"intel_iommu=on,igx_off,sm_on"
"iommu=pt"
];
}
]
++ (addCustomLaunchers targetconf.launchers)
++ (addSystemPackages targetconf.systemPackages)
++ (importvm targetconf.vms)
++ (updateHostConfig targetconf)
++ (if lib.hasAttr "extraModules" targetconf then targetconf.extraModules else []);
};
in {
inherit hostConfiguration;
name = "${name}-${variant}";
package = hostConfiguration.config.system.build.${hostConfiguration.config.formatAttr};
};
targets = [
(target "debug")
(target "release")
];
in {
flake = {
nixosConfigurations =
builtins.listToAttrs (map (t: lib.nameValuePair t.name t.hostConfiguration) targets);
packages = {
x86_64-linux =
builtins.listToAttrs (map (t: lib.nameValuePair t.name t.package) targets);
};
};
}