From 6fe4d10ac825ae70f1bc2478b94a86f326aee242 Mon Sep 17 00:00:00 2001
From: DerGrumpf
Date: Fri, 4 Apr 2025 09:45:57 +0200
Subject: [PATCH] Added: Qemu Host Config
---
flake.nix | 33 ++++++++++-
hosts/m920q/default.nix | 2 +-
hosts/qemu/default.nix | 80 +++++++++++++++++++++++++++
hosts/qemu/hardware-configuration.nix | 37 +++++++++++++
4 files changed, 149 insertions(+), 3 deletions(-)
create mode 100644 hosts/qemu/default.nix
create mode 100644 hosts/qemu/hardware-configuration.nix
diff --git a/flake.nix b/flake.nix
index 35406b2..0f84d01 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,5 +1,5 @@
{
- description = "NixOS configuration of Ryan Yin";
+ description = "NixOS configuration of DerGrumpf";
##################################################################################################################
#
@@ -44,13 +44,19 @@
home-manager,
...
}: {
+ packages.x86_64-linux.default = self.nixosConfigurations.iso.config.system.build.isoImage;
nixosConfigurations = {
iso = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
({ pkgs, modulesPath, ... }: {
imports = [ (modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix") ];
- environment.systemPackages = [ pkgs.neovim pkgs.git ];
+ environment.systemPackages = with pkgs; [
+ neovim
+ git
+ wget
+ curl
+ ];
})
];
};
@@ -77,6 +83,29 @@
}
];
};
+
+ qemu = let
+ username = "phil";
+ specialArgs = {inherit username;};
+ in
+ nixpkgs.lib.nixosSystem {
+ inherit specialArgs;
+ system = "x86_64-linux";
+
+ modules = [
+ ./hosts/m920q
+ ./users/${username}/nixos.nix
+
+ home-manager.nixosModules.home-manager
+ {
+ home-manager.useGlobalPkgs = true;
+ home-manager.useUserPackages = true;
+
+ home-manager.extraSpecialArgs = inputs // specialArgs;
+ home-manager.users.${username} = import ./users/${username}/home.nix;
+ }
+ ];
+ };
};
};
}
diff --git a/hosts/m920q/default.nix b/hosts/m920q/default.nix
index 5115f82..e85a153 100644
--- a/hosts/m920q/default.nix
+++ b/hosts/m920q/default.nix
@@ -8,7 +8,7 @@
imports =
[
../../modules/system.nix
- ../../modules/nix-settings.nix
+ ../../modules/nix-settings.nix
../../modules/vpn.nix
../../modules/fonts.nix
../../modules/firewall.nix
diff --git a/hosts/qemu/default.nix b/hosts/qemu/default.nix
new file mode 100644
index 0000000..4a9da96
--- /dev/null
+++ b/hosts/qemu/default.nix
@@ -0,0 +1,80 @@
+# Edit this configuration file to define what should be installed on
+# your system. Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, ... }:
+
+{
+ imports =
+ [
+ ../../modules/system.nix
+ ../../modules/nix-settings.nix
+ ../../modules/vpn.nix
+ ../../modules/fonts.nix
+ ../../modules/firewall.nix
+ ../../modules/localisation.nix
+ ../../modules/openssh.nix
+ ../../modules/pipewire.nix
+ ../../modules/podman.nix
+ ../../modules/services.nix
+ ../../modules/regreet/regreet.nix
+ ../../modules/plymouth.nix
+ ../../modules/file_managers/spacefm.nix
+
+# Include the results of the hardware scan.
+ ./hardware-configuration.nix
+ ];
+
+ # Bootloader.
+ boot.loader = {
+ grub = {
+ enable = true;
+ device = "nodev";
+ useOSProber = true;
+ efiSupport = true;
+ };
+ efi = {
+ canTouchEfiVariables = true;
+ efiSysMountPoint = "/boot/efi"; # ← use the same mount point here.
+ };
+ systemd-boot.enable = true;
+ };
+
+ networking.hostName = "nix-virtual"; # Define your hostname.
+ # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
+
+ # Configure network proxy if necessary
+ # networking.proxy.default = "http://user:password@proxy:port/";
+ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
+
+ # Enable networking
+ networking.networkmanager.enable = true;
+ networking.defaultGateway = "192.168.2.1";
+ networking.useDHCP = false;
+ networking.dhcpcd.enable = false;
+ networking.nameservers = [
+ "1.1.1.1"
+ "1.0.0.1"
+ "8.8.8.8"
+ "8.8.4.4"
+ ];
+
+ # for Nvidia GPU
+ #services.xserver.videoDrivers = ["nvidia"];
+ hardware.opengl.enable = true;
+ #hardware.nvidia = {
+ # package = config.boot.kernelPackages.nvidiaPackages.stable;
+ # modesetting.enable = true;
+ #};
+
+ # This value determines the NixOS release from which the default
+ # settings for stateful data, like file locations and database versions
+ # on your system were taken. It‘s perfectly fine and recommended to leave
+ # this value at the release version of the first install of this system.
+ # Before changing this value read the documentation for this option
+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
+ system.stateVersion = "25.05"; # Did you read the comment?
+
+}
+
+
diff --git a/hosts/qemu/hardware-configuration.nix b/hosts/qemu/hardware-configuration.nix
new file mode 100644
index 0000000..2222882
--- /dev/null
+++ b/hosts/qemu/hardware-configuration.nix
@@ -0,0 +1,37 @@
+# Do not modify this file! It was generated by ‘nixos-generate-config’
+# and may be overwritten by future invocations. Please make changes
+# to /etc/nixos/configuration.nix instead.
+{ config, lib, pkgs, modulesPath, ... }:
+
+{
+ imports =
+ [ (modulesPath + "/profiles/qemu-guest.nix")
+ ];
+
+ boot.initrd.availableKernelModules = [ "ata_piix" "floppy" "sd_mod" "sr_mod" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ "kvm-intel" ];
+ boot.extraModulePackages = [ ];
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-label/NIXROOT";
+ fsType = "ext4";
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-label/NIXBOOT";
+ fsType = "vfat";
+ options = [ "fmask=0022" "dmask=0022" ];
+ };
+
+ swapDevices = [ ];
+
+ # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+ # (the default) this is the recommended approach. When using systemd-networkd it's
+ # still possible to use this option, but it's recommended to use it in conjunction
+ # with explicit per-interface declarations with `networking.interfaces..useDHCP`.
+ networking.useDHCP = lib.mkDefault true;
+ # networking.interfaces.ens3.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+}