Skip to content

manuelbb-upb/nix-matlab-ld

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Note This README is a big ToDo.

This flake provides tools for working with Python, Matlab and Julia on NixOs with nix-ld enabled. For Matlab to work, we also need envfs.

Python

We largely follow the wiki to patch python to use LD_LIBRARY_PATH according to NIX_LD_LIBRARY_PATH. If you use this package, rebuilds will take some time.

Likewise, we patch poetry to use our custom python package. Rebuilds will take even longer.

I have deactivated unit test by default to speed up builds.

Note pkgs.replaceDependency might actually safe us from compile time hell, especially for large packages like torch.

Matlab

Implementation

Initially inspired by nix-matlab, I wanted to see if we can get away without an FHS. It appears we can.

We also have a very hacky python package for the patched python. In constrast to nix-matlab, we don't copy engine code to the nix store manually. Instead, a shim package is generated, with a .pth file pointing at the matlab install location. Moreover, we exploit the fact that import lines in the .pth file are executed to install an import hook that generates the architecture file on import.

Install

Use nix develop with this flake to launch a shell and then install Matlab from that shell. Afterwards, make sure you set the environment variable MATLAB_INSTALL_DIR to point to the install location. In my home-manager I have

home.sessionVariables = {
  MATLAB_INSTALL_DIR = "$HOME/bins/MATLAB/R2024b";
};

Issues

  • Wayland: For me, the dev shell could launch the installer just fine in Wayland.
    If you encounter issues, see the arch wiki.
  • GUI not starting: This nearly drove me crazy, because journalctl gave messages indicating GPU issues.
    But it was an incompatible library shipped with Matlab (R2024b).
      cd ${MATLAB_INSTALL_DIR}/sys/os/glnxa64
      mv libstdc++.so.6 libstdc++.so.6.distlink
    

Julia

Here we draw inspiration from scientific-fhs to download the julia binaries.

But we don't do any standard mkDerivation patching etc. Instead we wrap the executable to use (nearly) empty LD_LIBRARY_PATH and to have NIX_LD set correctly.

ToDo

  • clean-up
  • examples in README
  • flake templates

About

Tools for science and research on NixOS with nix-ld.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published