Skip to content

Improve aarch64-linux VM setup for lean configuration #111

@delafthi

Description

@delafthi

Goal

Create a lean, efficient aarch64-linux VM setup that's easy to deploy and maintain.

Current State

  • VM configuration at hosts/nixos/vm/
  • Using QEMU guest profile
  • BTRFS filesystem with compression and multiple subvolumes
  • GNOME desktop environment enabled (via linux configs)
  • SPICE agent support
  • Rosetta enabled for x86_64 emulation
  • Full home-manager configuration imported

Research Needed

VM Setup Method

  • Investigate easiest way to create/deploy the VM
    • nixos-generators for various VM formats?
    • Manual installation vs automated deployment?
    • Integration with virtualization platforms (QEMU, UTM, etc.)
  • Document the current setup process (if any)

GUI Decision

  • Determine if GUI is needed for intended use cases
    • Headless with SSH only?
    • Minimal window manager vs full desktop?
    • Keep GNOME but strip down?
  • Consider use cases:
    • Development testing?
    • CI/CD runner?
    • Desktop environment testing?

Lean Configuration

  • Review enabled services and remove unnecessary ones
  • Audit home-manager imports - do we need full darwin/linux configs?
  • Optimize for:
    • Boot time
    • Disk space
    • Memory usage
  • Consider:
    • Minimal package set
    • Stripping desktop environment if not needed
    • Removing unnecessary kernel modules
    • Optimizing BTRFS subvolume layout

Questions to Answer

  1. What is the primary purpose of this VM?
  2. Do we need GUI at all?
  3. What's the preferred workflow for creating/updating the VM?
  4. Should this be documented in a separate VM setup guide?

Potential Improvements

  • Add declarative VM image generation
  • Create lean profile variants (headless, minimal-gui, full-desktop)
  • Document quick-start guide for VM deployment
  • Optimize resource usage
  • Add scripts for easy VM lifecycle management

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions