meta: Add network example

This is a working example of using the modules in our existing
configuration to start a network of virtual machines with
nixos-build-vms. Note that VMs take longer to start up in this case than
nixos-rebuild build-vm, and that said VMs may lack certain functionality
(such as dynamic resolution in GNOME) that would otherwise be present
with build-vm.

Although networks are certainly cute (and I'm glad that I feel familiar
with them thanks to my better understanding of Nix), they do seem less
convenient than nixos-rebuild build-vm and don't appear to support Nix
flakes. Networks therefore seem more useful for running multiple one-off
services that couldn't otherwise be ran in a container.
This commit is contained in:
Donovan Glover 2023-06-18 08:06:26 -04:00
parent 168134bcf3
commit bd7c1d553b
No known key found for this signature in database
GPG Key ID: EA7408A77AE1BE65
5 changed files with 52 additions and 24 deletions

View File

@ -10,5 +10,12 @@
./starship.nix
./stylix.nix
./thunar.nix
./user.nix
];
virtualisation.vmVariant = {
imports = [
./virtualization.nix
];
};
}

12
modules/user.nix Normal file
View File

@ -0,0 +1,12 @@
let VARIABLES = import ../src/variables.nix; in {
users = {
mutableUsers = false;
users."${VARIABLES.username}" = {
isNormalUser = true;
uid = 1000;
password = "user";
extraGroups = [ "wheel" "networkmanager" ];
};
};
}

View File

@ -0,0 +1,17 @@
{
virtualisation = {
memorySize = 8192;
cores = 4;
};
virtualisation.qemu.options = [
"-device virtio-vga-gl"
"-display sdl,gl=on,show-cursor=off"
"-full-screen"
"-audio pa,model=hda"
];
environment.sessionVariables = {
WLR_NO_HARDWARE_CURSORS = "1";
};
}

16
networks/default.nix Normal file
View File

@ -0,0 +1,16 @@
{
plasma = {
imports = [
../modules/virtualization.nix
../modules/user.nix
../modules/plasma.nix
];
};
gnome = {
imports = [
../modules/virtualization.nix
../modules/user.nix
../modules/gnome.nix
];
};
}

View File

@ -194,16 +194,6 @@ let VARIABLES = import ./variables.nix; in {
time.timeZone = "${VARIABLES.timezone}"; # Timezone
# user
users = {
mutableUsers = false;
users."${VARIABLES.username}" = {
isNormalUser = true;
uid = 1000;
password = "user";
extraGroups = [ "wheel" "networkmanager" ];
};
};
home-manager.users.user = {
home.username = VARIABLES.username;
@ -229,20 +219,6 @@ let VARIABLES = import ./variables.nix; in {
systemd.services.NetworkManager-wait-online.enable = false;
# virtualization
virtualisation.vmVariant = {
virtualisation = {
memorySize = 8192;
cores = 4;
};
virtualisation.qemu.options = [ "-device virtio-vga-gl" "-display sdl,gl=on,show-cursor=off" "-full-screen" "-audio pa,model=hda" ];
environment.sessionVariables = {
WLR_NO_HARDWARE_CURSORS = "1";
};
};
# mullvad-vpn
services.mullvad-vpn = {
enable = true;