How to Add Package

Good day,

I’m trying to add Pianoteq to my nixos flake but I’m running into some issues

Pianoteq doesn’t show up in search (24.11 or unstable)

Despite this it’s in the nixpkgs repo and has been a for years

I’m confused by why the package isn’t showing up in search but when trying to add Pianoteq to my audio.nix file I get the error "A definition for option ‘…’ is not of type ‘package’

It seems to me like pianoteq itself is a collection of packages (for the different versions) but I can’t figure out, then how to add it to my packages

If anyone wants to see my flake it’s here: GitHub - JohnLRBrock/BeanyOS

It likely does not show in the search because it is unfree. But yes, it is a set of packages, and there’s a few to choose from, like standard_8. The list is here: nixpkgs/pkgs/applications/audio/pianoteq/default.nix at 30885c9744b9e9583c7e44d421d9e035cf6b7021 · NixOS/nixpkgs · GitHub

To add it to your system, choose one of those, and then put it in your package list. For example with standard_8:

{
  environment.systemPackages = with pkgs; [
    pianoteq.standard_8
  ];
}

It seems the standard and stage versions require a login to download the software, and it expects the environment variables NIX_MODARTT_USERNAME and NIX_MODARTT_PASSWORD to be set. This would require building with --impure. I think you can get around this by adding the 7z file to the store manually with “nix-store --add-fixed sha256 pianoteq_linux_v<version>.7z”. Note the filename matters.

No, unfree means hydra can’t build it, nothing to do with search. It doesn’t show up because it’s a package set that presumably isn’t marked for recursing into via lib.recurseIntoAttrs.

1 Like

Ah, that makes sense

so, when I try to use piantoteq.standard_8 it gives me error: attribute 'standard_8' missing, even if I set my username and password and build with --impure

For future explorers, I finally got the first error resolved

I used the repl by typing nix repl -f flake.nix into the terminal
Note that it takes a path to your flake but I was in the directory already so I could just name the flake.

Then in the repl you type :l <nixpkgs> to load all the nix packages.

Finally typing pkgs.pianoteq. and hitting tab shows the following options nix-repl> pkgs.pianoteq. pkgs.pianoteq.override pkgs.pianoteq.stage-6 pkgs.pianoteq.stage-trial pkgs.pianoteq.standard-trial pkgs.pianoteq.overrideDerivation pkgs.pianoteq.stage-7 pkgs.pianoteq.standard-8

Adding pianoteq.standard-8 to my config gives the following:

> Error: Downloading a personal Pianoteq instance requires the nix building process (nix-daemon in multi user mode) to have the NIX_MODARTT_USERNAME and NIX_MODARTT_PASSWORD env vars set.

As you said I need to set the environment variables but as some point you’re just happy to have a new set of errors