char/flake
nixos flake
git clone https://git.t4t.associates/char/flake
a63f158
main
1{ lib , pkgs , unstable-pkgs , user-pkgs , ...} : 2let 3vmBase = import ../../modules/vm-base.nix ; 4in 5{ 6microvm . host . enable = true ; 7 8networking . useNetworkd = true ; 9networking . useDHCP = false ; 10networking . networkmanager . enable = lib . mkForce false ; 11 12systemd . network = { 13enable = true ; 14netdevs . "10-br0" = { 15netdevConfig = { 16Kind = "bridge" ; 17Name = "br0" ; 18}; 19}; 20networks . "10-lan" = { 21# en*: the physical NIC (verify on runestone via `ip link`). 22# vm-*: microvm tap interfaces, enslaved to the same bridge. 23matchConfig . Name = [ "en*" "vm-*" ]; 24networkConfig . Bridge = "br0" ; 25}; 26networks . "20-br0" = { 27matchConfig . Name = "br0" ; 28address = [ "10.11.0.2/16" ]; 29networkConfig . Gateway = "10.11.0.1" ; 30networkConfig . DNS = [ "10.11.0.1" ]; 31networkConfig . IPv6AcceptRA = true ; 32linkConfig . RequiredForOnline = "routable" ; 33}; 34}; 35 36systemd . tmpfiles . settings . "05-vm-workspace" = { 37"/x/vm" . d = { user = "charlotte" ; group = "users" ; mode = "0755" ; }; 38"/x/vm/lazuli" . d = { user = "charlotte" ; group = "users" ; mode = "0755" ; }; 39}; 40 41microvm . vms . lazuli = { 42pkgs = null ; 43specialArgs = { inherit unstable-pkgs user-pkgs ; }; 44config = { 45microvm . mem = lib . mkForce 16384 ; 46 47imports = [ 48../common/base.nix 49../common/dev.nix 50../common/locale.nix 51../lazuli/computer-use.nix 52../../modules/dotfiles.nix 53( vmBase { 54hostName = "lazuli" ; 55ipAddress = "10.11.1.1" ; 56tapId = "vm-lazuli" ; 57mac = "02:00:00:00:00:01" ; 58}) 59]; 60}; 61}; 62}