diff --git a/.gitignore b/.gitignore index 35a5fb5..b8937ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /result /.direnv /.gcroots +*.qcow2 diff --git a/flake.nix b/flake.nix index b6605e4..bbfa259 100644 --- a/flake.nix +++ b/flake.nix @@ -102,6 +102,7 @@ in { radish = mkConfiguration "radish"; + radish-vm = mkConfiguration "radish-vm"; freun-dev = mkConfiguration "freun-dev"; apu = mkConfiguration "apu"; }; diff --git a/home/modules/zed/default.nix b/home/modules/zed/default.nix index bff8eb5..ce3b42f 100644 --- a/home/modules/zed/default.nix +++ b/home/modules/zed/default.nix @@ -187,7 +187,7 @@ in }; edit_predictions = { enabled = true; - mode = "subtle"; + mode = "eager"; provider = "zed"; }; buffer_font_family = "Iosevka Nerd Font"; @@ -200,6 +200,11 @@ in "tsconfig.*.json" ]; }; + context_servers = { + browser-tools-context-server = { + npx_command = "${pkgs.nodejs}/bin/npx"; + }; + }; }; userKeymaps = [ { diff --git a/hosts/radish-vm/boot.nix b/hosts/radish-vm/boot.nix new file mode 100644 index 0000000..26c8166 --- /dev/null +++ b/hosts/radish-vm/boot.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: +{ + boot = { + loader.systemd-boot.enable = true; + loader.efi.canTouchEfiVariables = true; + loader.systemd-boot.configurationLimit = 10; + + kernelPackages = pkgs.linuxPackages_latest; + + tmp.useTmpfs = true; + + kernel.sysctl = { + "vm.max_map_count" = 262144; + }; + binfmt.emulatedSystems = [ "aarch64-linux" ]; + }; + + environment.systemPackages = with pkgs; [ + efibootmgr + ]; +} diff --git a/hosts/radish-vm/default.nix b/hosts/radish-vm/default.nix new file mode 100644 index 0000000..2ce118a --- /dev/null +++ b/hosts/radish-vm/default.nix @@ -0,0 +1,24 @@ +{ inputs, ... }: +let + inherit (inputs) + home-manager + ; +in +{ + imports = [ + ./hardware-configuration.nix + # Import most of the original radish config + ../radish/configuration.nix + ../radish/host.nix + ../radish/packages.nix + ../radish/containers.nix + ../radish/desktop.nix + ../radish/users.nix + ../radish/secrets.nix + # VM-specific overrides + ./boot.nix + ./hardware.nix + home-manager.nixosModules.home-manager + ../../home + ]; +} diff --git a/hosts/radish-vm/hardware-configuration.nix b/hosts/radish-vm/hardware-configuration.nix new file mode 100644 index 0000000..e3f6e61 --- /dev/null +++ b/hosts/radish-vm/hardware-configuration.nix @@ -0,0 +1,64 @@ +# VM Hardware Configuration Template +# This file will be generated during VM installation with `nixos-generate-config` +# But here's a template for common VM setups + +{ + lib, + modulesPath, + ... +}: + +{ + imports = [ + (modulesPath + "/profiles/qemu-guest.nix") + ]; + + # Boot configuration for VMs + boot = { + initrd = { + availableKernelModules = [ + "ahci" + "xhci_pci" + "virtio_pci" + "virtio_scsi" + "sr_mod" + "virtio_blk" + "vmw_pvscsi" + ]; + kernelModules = [ ]; + }; + kernelModules = [ ]; + extraModulePackages = [ ]; + }; + + networking = { + useDHCP = lib.mkDefault true; + }; + + hardware = { + graphics = { + enable = true; + }; + }; + + services = { + spice-vdagentd.enable = lib.mkDefault true; + qemuGuest.enable = lib.mkDefault true; + }; + + virtualisation = { + vmware.guest.enable = lib.mkDefault false; + virtualbox.guest.enable = lib.mkDefault false; + hypervGuest.enable = lib.mkDefault false; + vmVariant.virtualisation = { + memorySize = 8192; + cores = 4; + }; + }; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + + powerManagement = { + enable = lib.mkDefault false; + }; +} diff --git a/hosts/radish-vm/hardware.nix b/hosts/radish-vm/hardware.nix new file mode 100644 index 0000000..f957fcb --- /dev/null +++ b/hosts/radish-vm/hardware.nix @@ -0,0 +1,11 @@ +{ + ... +}: +{ + hardware.graphics = { + enable = true; + }; + + services.fstrim.enable = true; # Still useful for VM disk optimization + services.openssh.enable = true; +} diff --git a/hosts/radish/users.nix b/hosts/radish/users.nix index 98bc001..bd18f7d 100644 --- a/hosts/radish/users.nix +++ b/hosts/radish/users.nix @@ -6,6 +6,7 @@ isNormalUser = true; extraGroups = [ "wheel" ]; shell = pkgs.zsh; + initialPassword = "changeme"; }; users.users.moco = { @@ -13,6 +14,7 @@ isNormalUser = true; extraGroups = [ "wheel" ]; shell = pkgs.zsh; + initialPassword = "changeme"; subUidRanges = [ { startUid = 10000;