diff --git a/azos-core b/azos-core index f6e8a71..3a5824c 160000 --- a/azos-core +++ b/azos-core @@ -1 +1 @@ -Subproject commit f6e8a71a5f9f96bea40cf6a1e76014efaad13db4 +Subproject commit 3a5824c7347b051f1493c80b97cb41aba97facee diff --git a/flake.lock b/flake.lock index 805efbe..0d51521 100644 --- a/flake.lock +++ b/flake.lock @@ -144,11 +144,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1770380644, - "narHash": "sha256-P7dWMHRUWG5m4G+06jDyThXO7kwSk46C1kgjEWcybkE=", + "lastModified": 1770689213, + "narHash": "sha256-N6JiSpfi0s8NjUTnjwo3c+YAmvYhCDzjCKCrTUC97xM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ae67888ff7ef9dff69b3cf0cc0fbfbcd3a722abe", + "rev": "49d75834011c94a120a9cb874ac1c4d8b7bfc767", "type": "github" }, "original": { diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix index a1cfc61..718f46a 100755 --- a/modules/home-manager/default.nix +++ b/modules/home-manager/default.nix @@ -19,5 +19,6 @@ # ./printing.nix ./libreoffice.nix ./hyprland-suite.nix + # ./gnuradio.nix ]; } diff --git a/modules/home-manager/gnuradio.nix b/modules/home-manager/gnuradio.nix new file mode 100755 index 0000000..881cca7 --- /dev/null +++ b/modules/home-manager/gnuradio.nix @@ -0,0 +1,29 @@ +{ + lib, + config, + pkgs, + ... +}: let + isEnabled = + config.azos.gnuradio.enable; +in { + options.azos.gnuradio.enable = lib.mkOption { + default = true; + example = true; + type = lib.types.bool; + }; + + config = lib.mkIf isEnabled { + home.packages = with pkgs; [ + gnuradio + uhd + gmp + boost + volk + libxcursor + cmake + pkg-config + spdlog + ]; + }; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 6d72a04..c1ce73b 100755 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -1,3 +1,3 @@ { - imports = [./audio.nix ./bluetooth.nix ./steam.nix]; + imports = [./audio.nix ./bluetooth.nix ./steam.nix ./virtualization.nix ]; } diff --git a/modules/nixos/virtualization.nix b/modules/nixos/virtualization.nix new file mode 100755 index 0000000..62fbb9e --- /dev/null +++ b/modules/nixos/virtualization.nix @@ -0,0 +1,42 @@ +{ + lib, + config, + pkgs, + ... +}: let + isEnabled = + config.azos.virtualization.enable; +in { + options.azos.virtualization.enable = lib.mkOption { + default = true; + example = true; + type = lib.types.bool; + }; + + config = lib.mkIf isEnabled { + virtualisation.libvirtd = { + enable = true; # start / run libvirtd as a system service + # optional: expose the default NAT network (virbr0) – libvirtd creates it + # automatically when the daemon is on, but we make sure the bridge is + # allowed through the firewall. + qemu = { + swtpm.enable = true; # (optional) enable software TPM for guests + }; + }; + environment.systemPackages = with pkgs; [ + # QEMU (KVM‑accelerated) + qemu_kvm # same as pkgs.qemu (but with KVM support explicitly enabled) + # CLI utilities + libvirt # provides virsh, virt-install, virt-manager (cli bits) + # GUI front‑end + virt-manager # graphical manager (uses libvirt + spice) + virt-viewer # Spice/VNC client that virt‑manager calls under the hood + ]; + + + services.spice-vdagentd.enable = true; # makes copy‑paste & auto‑resize work in Spice windows + networking.firewall.allowedTCPPorts = [ 5900 5901 ]; # Spice ports (adjust if you expose elsewhere) + networking.firewall.allowedUDPPorts = [ 5900 5901 ]; + + }; +} diff --git a/nixos/configuration-vm.nix b/nixos/configuration-vm.nix index cc475a1..f07f28c 100755 --- a/nixos/configuration-vm.nix +++ b/nixos/configuration-vm.nix @@ -86,7 +86,7 @@ # TODO: Add your SSH public key(s) here, if you plan on using SSH to connect ]; # TODO: Be sure to add any other groups you need (such as networkmanager, audio, docker, etc) - extraGroups = ["wheel"]; + extraGroups = ["wheel" "libvirtd" ]; }; };