No description
Find a file
Chad Nelson 55dc43c035 init push
Finished configuring the init/shell commands

Updated readme

Fixed issue with missing /boot/efi directory

Added new config module for setting/retrieving vm configs

Updated machine setup

Fixed issue with missing files

added config to docs section

added x86_64 support

fixed issue with x86_64 update and updated README

Added some content to README

Added markdown export of org file

Updated readme to reflect the need for guile-next

Removed guile from install example

exported changes to md

Updated README

fixed issue with sed compatibility (bsd/gnu)

regenerated readme markdown

Removed readme markdown file for org alternative

Updated project license

updated autocompile to include for now

updated script

updated script

updated script

updated msg script

updated license

updated to test

testing

testing

testing

testing

testing

testing

testing

testing

testing

testing

testing
2025-02-28 10:17:59 -07:00
build-aux init push 2025-02-28 10:17:59 -07:00
doc init push 2025-02-28 10:17:59 -07:00
msg init push 2025-02-28 10:17:59 -07:00
scripts init push 2025-02-28 10:17:59 -07:00
.gitignore init push 2025-02-28 10:17:59 -07:00
AUTHORS init push 2025-02-28 10:17:59 -07:00
ChangeLog init push 2025-02-28 10:17:59 -07:00
configure.ac init push 2025-02-28 10:17:59 -07:00
COPYING init push 2025-02-28 10:17:59 -07:00
guix.scm init push 2025-02-28 10:17:59 -07:00
HACKING init push 2025-02-28 10:17:59 -07:00
hall.scm init push 2025-02-28 10:17:59 -07:00
Makefile.am init push 2025-02-28 10:17:59 -07:00
NEWS init push 2025-02-28 10:17:59 -07:00
pre-inst-env.in init push 2025-02-28 10:17:59 -07:00
README init push 2025-02-28 10:17:59 -07:00
README.org init push 2025-02-28 10:17:59 -07:00

MacOS Subsystem for Guix

Overview

MSG is an attempt to create a native-like experience for Guix on MacOS, using methods inspired by others like Podman/Docker/Lima. It uses Qemu with a prebuilt installer image to create a customized local Guix instance (supported on Intel and Apple Silicon based Macs). The base image is pretty barebones and is meant to be customized to your liking. To get a good idea of whats included you can reference the /etc/config.scm file within the built image.

F.A.Q

  • Q: Why does the cli generate the image locally instead of downloading a complete pre-built image like Podman?

    • A: This is due to the final image requiring the admin account to be setup with the same UID as the host MacOS user. Podman accomplishes this by passing configuration values in it's ignition file, which are used to initialize the CoreOS image with the correct values on it's first run. Guix doesn't currently support a similar initialization method, so the image must be regenerated after the config has been updated with the correct values (UID, etc…). This is unlikely to change in the near future, unless Guix ends up adding some sort of similar functionality.
  • Q: What are the long term goals of this project?

    • A: I would like for this project to accomplish a few goals.

      1. Be able to fully replace docker/podman desktop on MacOS
      2. Give users a way to manage their MacOS dotfiles using Guix Home
      3. Improve GUI application performance with X11/Xquartz
      4. Introduce a MSG Desktop GUI to accompany the cli

Requirements

These can be installed by running:

brew install autoconf automake libtool wget qemu texinfo guile-next

Installation

  1. First clone this repository with:

    git clone https://pagure.io/MSG/msg-cli.git msg
    cd msg
  2. Build and install the cli using:

    autoreconf -vif && ./configure && make && sudo make install
  3. Make sure to add the correct env vars set for guile-next/msg.

    export GUILE_LOAD_PATH=/opt/homebrew/share/guile/site/3.0
    export GUILE_LOAD_COMPILED_PATH=/opt/homebrew/lib/guile/3.0/site-ccache
    export GUILE_SYSTEM_EXTENSIONS_PATH=/opt/homebrew/lib/guile/3.0/extensions
    
    export GUILE_LOAD_PATH=$GUILE_LOAD_PATH:/usr/local/share/guile/site/3.0/
    export GUILE_LOAD_COMPILED_PATH=$GUILE_LOAD_COMPILED_PATH:/usr/local/lib/guile/3.0/site-ccache/
    export GUILE_SYSTEM_EXTENSIONS_PATH=$GUILE_SYSTEM_EXTENSIONS_PATH:/usr/local/lib/guile/3.0/extensions
    export PATH=/usr/local/bin:$PATH

Usage

  • msg machine (command)

    • init: initializes a new MSG instance
    • reinit: reinitializes an MSG instance (is destructive!)
    • start: starts the initialized MSG instance
    • stop: stops the running instance
  • msg shell

    • Creates an ssh connection to the running instance