Noisemaker

From NixOS Wiki
Revision as of 12:27, 31 July 2020 by imported>Mic92 (fix markup)

https://noisemaker.readthedocs.io/en/latest/

At the time of writing noisemaker is still on tensorflow 1.3, which isn't available for python 3.7 (only up to 3.6, https://pypi.org/project/tensorflow/1.3.0/#files). Let's just use tensorflow 2 instead (https://github.com/aayars/py-noisemaker/pull/4):

 $ git clone git@github.com:aayars/py-noisemaker py-noisemaker
 $ cd py-noisemaker
 $ hub remote add raboof
 $ git fetch raboof
 $ git checkout tensorflow2

Right now nixpkgs contains tensorflow 2.1.0 but has it disabled for python 3.8 (as it's not officially supported upstream either). 'python3 -m venv venv' doesn't seem to work with python 3.7, so I'm sticking with 3.8.

noisemaker wants exactly version 6.2.0 of Pillow. The pillow in nixpkgs is a different version, so this will be fetched and built with setup.py. To make sure it can correctly find the C libraries it uses, we use fshUserEnv and add some development headers:

    { pkgs ? import <nixpkgs> {} }:
    
    let
      my-python-packages = python-packages: with python-packages; [
      ];
    in
    (pkgs.buildFHSUserEnv {
      name = "noisemaker";

      targetPkgs = pkgs: [
        (pkgs.python3.withPackages my-python-packages)
        pkgs.zlib.dev
        pkgs.libjpeg.dev
        pkgs.gcc
      ];
    }).env

Then create noisemaker in a venv:

 $ python3 -m venv venv
 $ source venv/bin/activate
 $ python3 setup.py develop

Add a newer tensorflow from pip:

$ pip install tensorflow

And run noisemaker:

$ noisemaker

(this will generate 'noise.png')

Next steps

It'd be nice to package noisemaker more 'nix natively'. Looking into installing tensorflow from nix instead of pip.