Skip to content

kunihir0/gini

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gini: QEMU/KVM Deployment System

A modular system for deploying macOS virtual machines using QEMU/KVM.

Rust Coverage Coverage

Overview

Gini is a modular system built on an "Everything is a Plugin" architecture that enables flexible, customizable deployment of macOS virtual machines on Linux systems using QEMU/KVM. The system is designed to be extensible, allowing for easy creation of custom plugins to modify or enhance functionality.

Architecture

graph TD
    A[Gini Kernel] --> B[Plugin Manager]
    A --> C[Stage Manager]
    A --> D[UI Bridge]
    A --> E[Storage Manager]
    A --> F[Event System]
    B --> G[Core Plugins]
    B --> H[Third-Party Plugins]
    
    style A fill:#f96,stroke:#333,stroke-width:2px
    style B fill:#9cf,stroke:#333,stroke-width:2px
Loading

Key Components

  • Kernel: Core application lifecycle and component management system
  • Plugin System: Manages loading, registration, and initialization of plugins
  • Event System: Provides asynchronous event dispatching and handling
  • Stage Manager: Orchestrates execution of stages in the correct order with dependency resolution
  • Storage System: Abstract interface for working with file system
  • UI Bridge: Minimal abstraction layer for interfacing with user interfaces

Prerequisites

  • A functional Linux system
  • QEMU/KVM properly configured
  • (Optional) VFIO configured for GPU passthrough
  • LVM for VM storage

Getting Started

See the setup guide for detailed instructions on setting up your development environment.

Documentation

Developer Guides

Project Status

Check our Implementation Status Tracker for detailed information about the current state of implementation, planned features, and development timeline.

Repository Structure

gini/                            # Project Root
├── crates/                      # Workspace members
│   ├── gini-core/               # Core library crate
│   │   └── src/
│   │       ├── event/           # Event system
│   │       ├── kernel/          # Core application kernel
│   │       ├── plugin_system/   # Plugin infrastructure
│   │       ├── stage_manager/   # Stage management system
│   │       ├── storage/         # Storage management
│   │       ├── ui_bridge/       # Minimal UI abstraction layer
│   │       └── utils/           # Core utilities
│   └── gini/                    # Binary crate
│       └── src/
│           └── main.rs          # Application entry point
├── docs/                        # Documentation
└── plugins/                     # Plugin directory
    └── examples/                # Example plugins

About

A platform agnostic kvm/libvirt setup automation

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages