
# Table of Contents

1.  [MSG (Mac Subsystem for Guix)](#msg-mac-subsystem-for-guix)
    1.  [Description](#description)
2.  [!!!!Currently only compatible with M1/M2 Macs](#currently-only-compatible-with-m1m2-macs)
    1.  [README (WIP)](#readme-wip)
        1.  [Prerequisites:](#prerequisites)
        2.  [Installation](#installation)
        3.  [Available Commands (after adding bashrc/zshrc options)](#available-commands-after-adding-bashrczshrc-options)
        4.  [Notes:](#notes)
        5.  [Discord:](#discord)
        6.  [Interested in supporting the project?](#interested-in-supporting-the-project)


<a id="msg-mac-subsystem-for-guix"></a>

# MSG (Mac Subsystem for Guix)


<a id="description"></a>

## Description

MSG is an attempt to create a native-like experience for GUIX on MacOS,
using methods inspired by others like Podman/Docker/Lima.


<a id="currently-only-compatible-with-m1m2-macs"></a>

# !!!!Currently only compatible with M1/M2 Macs


<a id="readme-wip"></a>

## README (WIP)


<a id="prerequisites"></a>

### Prerequisites:

-   qemu
-   wget
-   git
-   xquartz (optional for GUI applications)


<a id="installation"></a>

### Installation

1.  clone the project using
    `git clone https://pagure.io/MSG/msg-qemu.git ~/.guix`

2.  copy Guix.app from ~/.guix to your Applications folder

3.  Run the guix application (this will take a minute to download the
    most recent image)

4.  add these lines to your shell rc file (bashrc/zshrc) to access the
    guix environment from MacOS :
    
        alias guix="ssh -i $HOME/.guix/ssh-cert/msg_rsa admin@127.0.0.1 -p 9001 'guix'" 
        alias guix-env='f(){ ssh -i $HOME/.guix/ssh-cert/msg_rsa admin@127.0.0.1 -p 9001 /home/admin/.guix-profile/bin/$@;  unset -f f; }; f'
        alias guix-app='f(){ ssh -X -i $HOME/.guix/ssh-cert/msg_rsa admin@127.0.0.1 -p 9001 /home/admin/.guix-profile/bin/$@;  unset -f f; }; f'
        alias guix-shell="ssh -i $HOME/.guix/ssh-cert/msg_rsa admin@127.0.0.1 -p 9001"

5.  Make sure to restart your terminal or source your shellrc file after
    editing it (e.g `source ~/.bashrc`)


<a id="available-commands-after-adding-bashrczshrc-options"></a>

### Available Commands (after adding bashrc/zshrc options)

-   guix : A straight passthrough to the guix application
-   guix-shell: Connect to the vm over ssh
-   guix-env : Can be used to pass cli commands interactively
-   guix-app : Used to passthrough X11 applications from the vm to macos
    using xquartz


<a id="notes"></a>

### Notes:

-   Currently `guix-env sudo guix system reconfigure /etc/config.scm` is
    not supported. You must use `guix-shell` to ssh into the environment
    and then run `sudo guix system reconfigure /etc/config.scm`
-   The host home directory is mounted as /mnt/macos in the virtual
    environment
-   The default user/credentials are admin/admin
-   For xquartz to be able to display X11 apps forwarded from the vm, you
    must open xquartz and go to Top
    Menu->Xquartz->Settings->Security->Enable 'Allow connections from
    network clients'
-   If xquartz is enabled, you can use the .app files under ~/.guix/apps
    to launch guix programs from macos


<a id="discord"></a>

### Discord:

Feel free to join the discord server and ask questions/share your
experiences! <https://discord.gg/TqMDT6Gf6W>


<a id="interested-in-supporting-the-project"></a>

### Interested in supporting the project?

Liberapay : <https://liberapay.com/SuperKamiGuru/donate>

