From 348cedab1a0cba95bb441178e55f1e1e2ef68777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Mon, 3 Nov 2025 15:43:47 +0100 Subject: [PATCH] Refactor testvm into reusable nixosModule for multiple architectures This extracts the testvm configuration into a shared nixosModules.testvm module that can be reused across different architectures. The module is now used by both testvm-x86_64 and testvm-aarch64 nixosConfigurations, eliminating code duplication. Additionally, nixosConfigurations have been moved to the top-level flake outputs to follow Nix conventions, rather than being nested inside eachDefaultSystem. The virtwl proxy reference now uses ${pkgs.system} instead of hardcoded x86_64-linux to support both architectures. --- flake.nix | 90 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/flake.nix b/flake.nix index 62ecfee..a24f2f0 100644 --- a/flake.nix +++ b/flake.nix @@ -9,6 +9,40 @@ }; outputs = { self, nixpkgs, flake-utils, virtwl, ... }: { + nixosModules.testvm = { pkgs, ... }: { + system.stateVersion = "25.11"; + + fonts.packages = [ pkgs.adwaita-fonts pkgs.dejavu_fonts ]; + environment.systemPackages = [ + pkgs.fastfetch + pkgs.htop + virtwl.packages.${pkgs.system}.proxy + pkgs.wayland-utils + pkgs.weston + pkgs.waycheck + pkgs.vulkan-tools + pkgs.glmark2 + pkgs.mesa-demos + pkgs.xorg.xeyes + pkgs.xterm + # pkgs.vkquake # build broken: Program 'spirv-remap' not found + pkgs.veloren + pkgs.kdePackages.kate + pkgs.adwaita-icon-theme + pkgs.amberol + pkgs.bustle + pkgs.d-spy + pkgs.gnome-text-editor + pkgs.firefox + pkgs.ffmpeg-full + pkgs.mpv + pkgs.libva-utils + pkgs.tailscale + pkgs.zerotierone + pkgs.localsend + ]; + }; + nixosModules.default = { pkgs, lib, utils, config, ... }: let useTTY = { TTYPath = "/dev/hvc0"; @@ -217,6 +251,22 @@ hardware.graphics.enable = true; hardware.graphics.package = self.packages.${pkgs.system}.mesa; }; + + nixosConfigurations.testvm-x86_64 = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + self.nixosModules.default + self.nixosModules.testvm + ]; + }; + + nixosConfigurations.testvm-aarch64 = nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + modules = [ + self.nixosModules.default + self.nixosModules.testvm + ]; + }; } // flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { @@ -311,45 +361,5 @@ patches = old.patches ++ [ ./radvmmio.patch ]; # already merged to git }); - nixosConfigurations.testvm = nixpkgs.lib.nixosSystem { - inherit system; - modules = [ - self.nixosModules.default - ({ ... }: { - system.stateVersion = "25.11"; - - fonts.packages = [ pkgs.adwaita-fonts pkgs.dejavu_fonts ]; - environment.systemPackages = [ - pkgs.fastfetch - pkgs.htop - virtwl.packages.x86_64-linux.proxy - pkgs.wayland-utils - pkgs.weston - pkgs.waycheck - pkgs.vulkan-tools - pkgs.glmark2 - pkgs.mesa-demos - pkgs.xorg.xeyes - pkgs.xterm - # pkgs.vkquake # build broken: Program 'spirv-remap' not found - pkgs.veloren - pkgs.kdePackages.kate - pkgs.adwaita-icon-theme - pkgs.amberol - pkgs.bustle - pkgs.d-spy - pkgs.gnome-text-editor - pkgs.firefox - pkgs.ffmpeg-full - pkgs.mpv - pkgs.libva-utils - pkgs.tailscale - pkgs.zerotierone - pkgs.localsend - ]; - }) - ]; - }; - }); }