Merge pull request #15 from sleeyax/feat/vm-host

Add `vm` host (see #13)
This commit is contained in:
Frost-Phoenix 2024-05-19 22:07:03 +02:00 committed by GitHub
commit 89a27c5d15
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 66 additions and 2 deletions

View file

@ -60,6 +60,11 @@
modules = [ (import ./hosts/laptop) ];
specialArgs = { host="laptop"; inherit self inputs username ; };
};
vm = nixpkgs.lib.nixosSystem {
inherit system;
modules = [ (import ./hosts/vm) ];
specialArgs = { host="vm"; inherit self inputs username ; };
};
};
};
}

26
hosts/vm/default.nix Normal file
View file

@ -0,0 +1,26 @@
{ pkgs, config, lib, ... }:
{
imports = [
./hardware-configuration.nix
./../../modules/core
];
# kvm/qemu doesn't use UEFI firmware mode by default.
# so we force-override the setting here
# and configure GRUB instead.
boot.loader.systemd-boot.enable = lib.mkForce false;
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda";
boot.loader.grub.useOSProber = false;
# allow local remote access to make it easier to toy around with the system
services.openssh = {
enable = true;
ports = [22];
settings = {
PasswordAuthentication = true;
AllowUsers = null;
PermitRootLogin = "yes";
};
};
}

View file

@ -0,0 +1,31 @@
# 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 = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/631775ef-6851-4fe7-997f-189372f87437";
fsType = "ext4";
};
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.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View file

@ -63,7 +63,7 @@ set_username() {
}
get_host() {
echo -en "Choose a ${GREEN}host${NORMAL}, either [${YELLOW}D${NORMAL}]esktop or [${YELLOW}L${NORMAL}]aptop: "
echo -en "Choose a ${GREEN}host${NORMAL} - [${YELLOW}D${NORMAL}]esktop, [${YELLOW}L${NORMAL}]aptop or [${YELLOW}V${NORMAL}]irtual machine: "
read -n 1 -r
echo
@ -71,8 +71,10 @@ get_host() {
HOST='desktop'
elif [[ $REPLY =~ ^[Ll]$ ]]; then
HOST='laptop'
elif [[ $REPLY =~ ^[Vv]$ ]]; then
HOST='vm'
else
echo "Invalid choice. Please select either 'D' for desktop or 'L' for laptop."
echo "Invalid choice. Please select 'D' for desktop, 'L' for laptop or 'V' for virtual machine."
exit 1
fi