make vm architecture agnostic

This commit is contained in:
Sean Kovacs 2026-01-06 11:03:26 -05:00
commit f6dbc88abb
Signed by: sckova
GPG key ID: 00F325187C68651A
7 changed files with 103 additions and 88 deletions

View file

@ -73,6 +73,10 @@
apple-silicon, apple-silicon,
... ...
}: let }: let
# All systems we want to support for the generic VM
supportedSystems = ["x86_64-linux" "aarch64-linux"];
# to run the vm:
# nixos-rebuild build-vm --flake ~/nix#$(nix eval --raw --impure --expr 'builtins.currentSystem')
mkNixosSystem = { mkNixosSystem = {
hostname, hostname,
system, system,
@ -83,7 +87,7 @@
inherit system; inherit system;
specialArgs = specialArgs =
{ {
inherit catppuccin; inherit catppuccin system;
} }
// extraSpecialArgs; // extraSpecialArgs;
modules = modules =
@ -144,47 +148,54 @@
nixvim.homeModules.nixvim nixvim.homeModules.nixvim
]; ];
}; };
in { in
nixosConfigurations = { {
peach = mkNixosSystem { nixosConfigurations =
hostname = "peach"; {
system = "aarch64-linux"; peach = mkNixosSystem {
extraModules = [ hostname = "peach";
apple-silicon.nixosModules.default system = "aarch64-linux";
{nixpkgs.overlays = [apple-silicon.overlays.apple-silicon-overlay];} extraModules = [
]; apple-silicon.nixosModules.default
}; {nixpkgs.overlays = [apple-silicon.overlays.apple-silicon-overlay];}
];
};
alien = mkNixosSystem { alien = mkNixosSystem {
hostname = "alien"; hostname = "alien";
system = "x86_64-linux"; system = "x86_64-linux";
extraSpecialArgs = { extraSpecialArgs = {
inherit nix-cachyos-kernel; inherit nix-cachyos-kernel;
};
};
}
// nixpkgs.lib.genAttrs supportedSystems (
system:
mkNixosSystem {
hostname = "vm-generic";
inherit system;
}
);
homeConfigurations = {
peach = mkHomeConfig {
user = "sckova";
hostname = "peach";
system = "aarch64-linux";
};
alien = mkHomeConfig {
user = "sckova";
hostname = "alien";
system = "x86_64-linux";
}; };
}; };
}
vm-aarch64 = mkNixosSystem { // nixpkgs.lib.genAttrs supportedSystems (
hostname = "vm-aarch64"; system:
system = "aarch64-linux"; mkHomeConfig {
}; user = "sckova";
}; hostname = "vm-generic";
inherit system;
homeConfigurations = { }
peach = mkHomeConfig { );
user = "sckova";
hostname = "peach";
system = "aarch64-linux";
};
alien = mkHomeConfig {
user = "sckova";
hostname = "alien";
system = "x86_64-linux";
};
vm-aarch64 = mkHomeConfig {
user = "sckova";
hostname = "vm-aarch64";
system = "aarch64-linux";
};
};
};
} }

View file

@ -2,10 +2,9 @@
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ {
config,
lib, lib,
pkgs, pkgs,
modulesPath, system,
... ...
}: { }: {
imports = []; imports = [];
@ -30,7 +29,12 @@
{device = "/dev/disk/by-label/swap";} {device = "/dev/disk/by-label/swap";}
]; ];
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; # Set platform from the system argument passed by the flake
hardware.parallels.enable = true; nixpkgs.hostPlatform = lib.mkDefault system;
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) ["prl-tools"];
# Enable Parallels tools only on aarch64
hardware.parallels.enable = lib.mkIf (system == "aarch64-linux") true;
nixpkgs.config.allowUnfreePredicate =
lib.mkIf (system == "aarch64-linux")
(pkg: builtins.elem (lib.getName pkg) ["prl-tools"]);
} }

View file

@ -235,13 +235,13 @@
then "dark" then "dark"
else "light"; else "light";
theme = { # theme = {
package = pkgs.kdePackages.breeze-gtk; # package = pkgs.kdePackages.breeze-gtk;
name = # name =
if config.userOptions.isDark # if config.userOptions.isDark
then "Breeze-Dark" # then "Breeze-Dark"
else "Breeze"; # else "Breeze";
}; # };
iconTheme = { iconTheme = {
name = name =

View file

@ -1,8 +1,6 @@
{ {
config, config,
pkgs, pkgs,
lib,
inputs,
catppuccin, catppuccin,
nix-cachyos-kernel, nix-cachyos-kernel,
... ...
@ -10,8 +8,9 @@
networking.hostName = "alien"; networking.hostName = "alien";
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
pkgs.ddcutil ddcutil
pkgs.mangohud mangohud
(bottles.override {removeWarningPopup = true;})
]; ];
# enable ddcutil # enable ddcutil

View file

@ -1,31 +0,0 @@
{
config,
pkgs,
lib,
catppuccin,
...
}: {
networking.hostName = "vm-aarch64";
boot.binfmt.emulatedSystems = [
"x86_64-linux"
"riscv64-linux"
];
catppuccin.accent = "green";
home-manager.users.sckova = {
imports = [catppuccin.homeModules.catppuccin];
};
services.spice-vdagentd.enable = true;
virtualisation.vmVariant = {
virtualisation = {
memorySize = 8192;
cores = 6;
};
};
security.sudo.wheelNeedsPassword = false;
}

View file

@ -0,0 +1,32 @@
{
config,
pkgs,
lib,
catppuccin,
...
}: {
networking.hostName = "vm";
# Enable emulation for architectures we're not currently running
boot.binfmt.emulatedSystems =
lib.optional (pkgs.stdenv.hostPlatform.system != "x86_64-linux") "x86_64-linux"
++ lib.optional (pkgs.stdenv.hostPlatform.system != "aarch64-linux") "aarch64-linux"
++ lib.optional (pkgs.stdenv.hostPlatform.system != "riscv64-linux") "riscv64-linux";
catppuccin.accent = "green";
home-manager.users.sckova = {
imports = [catppuccin.homeModules.catppuccin];
};
services.spice-vdagentd.enable = true;
virtualisation.vmVariant = {
virtualisation = {
memorySize = 8192;
cores = 6;
};
};
security.sudo.wheelNeedsPassword = false;
}