Noisemaker

From NixOS Wiki
Revision as of 10:42, 31 July 2020 by imported>Raboof (document how to build noisemaker)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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')

    1. Next steps

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