# Julia via juliaup in GUIX

**URL:** <https://discourse.julialang.org/t/julia-via-juliaup-in-guix/130586>\
**Category:** General Usage\
**Tags:** juliaup, guix\
**Created:** [July 9, 2025, 8:14pm UTC](https://discourse.julialang.org/t/julia-via-juliaup-in-guix/130586 "2025-07-09T20:14:13Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![dlakelan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlakelan/32/8491_2.png) [@dlakelan](https://discourse.julialang.org/u/dlakelan)\
**Post date:** [July 9, 2025, 8:14pm UTC](https://discourse.julialang.org/t/julia-via-juliaup-in-guix/130586/1 "2025-07-09T20:14:13Z")

</div>

Hey all, recently posted about using juliaup in NixOS. Now I’m investigating it in GUIX which is a similar OS but using guile scheme as the configuration language.

In GUIX you can run foreign compiled binaries in a container that has a “normal” FHS filesystem hierarchy using `guix shell --container --emulate-fhs`

here’s what’s working for me:

1. log into your machine, and at a minimum `guix install curl` and add ~/bin to PATH
2. install juliaup using the commands on [julialang.org](http://julialang.org)
3. create bin/juliacontainer in your home directory containing something similar to:

```julia-auto
#!/usr/bin/env bash

guix shell --container --emulate-fhs --preserve="(TERM)|(LANG)" --network --expose=/etc/bashrc=/etc/bashrc\
 --expose=/run/current-system/locale=/run/current-system/locale\
 --share=/home/dlakelan/.bash_profile=/home/dlakelan/.bash_profile\
 --share=/home/dlakelan/.bashrc=/home/dlakelan/.bashrc\
 --share=/home/dlakelan/.julia=/home/dlakelan/.julia\
 --share=/home/dlakelan/juliaprojects=/home/dlakelan/juliaprojects -m .config/guix/juliamanifest.scm 

```

1. write a manifest in .config/guix/juliamanifest.scm like this. This was the minimum to get comfortably into julia and debug stuff, feel free to add packages you want.

```julia-auto
(specifications->manifest
 (list "emacs-no-x" "curl" "wget" "git" "coreutils" "less" "bash"))

```

1. at your command line type `juliacontainer`
2. in the new shell type `bash` because I’m not sure why but it doesn’t read .bashrc etc
3. profit!

works for me!

# Method 2

Ok, so there’s an easier way… we just need to patch the ELF file to point to the proper library:

```julia-auto
patchelf --set-interpreter "$(patchelf --print-interpreter $(which sh))" .julia/juliaup/julia-1.11.5+0.x64.linux.gnu/bin/julia

```

and then you can run julia not in a special container… seems to work. but you’ll need to patch it every time you install a new version. Also, you might want to create a separate patched version and a `bin/julia` script that calls that patched version

---

<div class="post-metadata">

**Author:** ![zzkt](https://avatars.discourse-cdn.com/v4/letter/z/e8c25b/32.png) [@zzkt](https://discourse.julialang.org/u/zzkt)\
**Post date:** [April 22, 2026, 2:03pm UTC](https://discourse.julialang.org/t/julia-via-juliaup-in-guix/130586/2 "2026-04-22T14:03:54Z")

</div>

I tried this with 1.12.6 and looks like it’s working. I needed to patch a few more things to be able to add packages to a project, so just run the above command on everything in `bin` and `libexec` (just to be sure)

```julia-auto
patchelf --set-interpreter "$(patchelf --print-interpreter $(which sh))" ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/libexec/julia/*

```

```julia-auto
patchelf --set-interpreter "$(patchelf --print-interpreter $(which sh))" ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/bin/*

```
