Files
malta-workshop/flake.nix
Michael Czechowski 4dacf94c67 refactor: replace WiFi service with declarative NetworkManager
- Remove unnecessary systemd.services.workshop-wifi-setup service
- Remove environment.etc."NetworkManager/workshop-wifi.env" file
- Add declarative networking.networkmanager.ensureProfiles configuration
- Remove redundant WiFi packages (wpa_supplicant, wirelesstools, iw)
- Update documentation to reflect automatic WiFi connection
- Clean up bash script references to old services

This simplifies the configuration and makes WiFi connection automatic on boot.
2025-09-17 08:57:19 +02:00

105 lines
2.6 KiB
Nix

{
description = "Workshop VM with Participant Containers + USB ISO";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
nixos-generators = {
url = "github:nix-community/nixos-generators";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
self,
nixpkgs,
nixos-generators,
}:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
# Common configuration
commonConfig =
{
isLiveIso ? false,
}:
import ./common.nix {
inherit pkgs isLiveIso;
};
in
{
packages.${system} = {
local-vm = self.nixosConfigurations.workshop-vm.config.system.build.vm;
live-iso = nixos-generators.nixosGenerate {
inherit system;
format = "iso";
modules = [
(commonConfig { isLiveIso = true; })
];
};
};
devShells.${system}.default = pkgs.mkShell {
packages = with pkgs; [
markdownlint-cli
jq
nixpkgs-fmt
qemu
];
};
nixosConfigurations.workshop-vm = nixpkgs.lib.nixosSystem {
inherit system;
modules = [
"${nixpkgs}/nixos/modules/virtualisation/qemu-vm.nix"
(commonConfig { isLiveIso = false; })
(
{
config,
pkgs,
lib,
...
}:
{
boot.loader.grub.enable = false;
boot.loader.generic-extlinux-compatible.enable = true;
# Enable networking for VM
networking.hostName = "workshop-vm";
networking.networkmanager.enable = true;
networking.firewall.enable = false;
# Hybrid console configuration - serial primary, GUI available
boot.kernelParams = [
"console=ttyS0,115200"
"console=tty1"
];
# VM specific settings
virtualisation.memorySize = 4096;
virtualisation.diskSize = 40000;
# Hybrid mode: GUI available but serial console primary
virtualisation.qemu.options = [
"-display"
"gtk"
"-monitor"
"stdio"
# Add port forwarding for SSH
"-netdev"
"user,id=net0,hostfwd=tcp::2222-:22"
"-device"
"virtio-net,netdev=net0"
];
# GUI session commands handled in common.nix
}
)
];
};
};
}