devbox icon indicating copy to clipboard operation
devbox copied to clipboard

NIXPKGS_ALLOW_UNFREE env var not working

Open eyevanovich opened this issue 1 year ago • 2 comments

What happened?

When trying to pull in a NUR flake that is unfree I am unable to get Devbox to accept NIXPKGS_ALLOW_UNFREE. This is due to the fact that the --impure flag is not being included during nix print-dev-env when using devbox shell.

More context can be found in this discord thread

Steps to reproduce

  1. devbox init
  2. debox add github:goreleaser/nur/ec67c3ebe81bd5614190e3dd4600089859d5b179#goreleaser-pro
  3. NIXPKGS_ALLOW_UNFREE=1 devbox shell

Command

shell

devbox.json

{
  "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.12.0/.schema/devbox.schema.json",
  "packages": [
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "github:goreleaser/nur/ec67c3ebe81bd5614190e3dd4600089859d5b179#goreleaser-pro"
  ],
  "env": {
    "GOBIN": "$PWD/bin",
    "PATH": "$PWD/bin:$PATH",
    "NIXPKGS_ALLOW_UNFREE": "1"
  },
  "shell": {
    "init_hook": [
      "task --silent env-setup"
    ],
    "scripts": {}
  }
}

Devbox version

0.12.0

Nix version

nix (Nix) 2.21.2

What system does this bug occur on?

macOS (Apple Silicon)

Debug logs

No response

eyevanovich avatar Jul 18 '24 22:07 eyevanovich

Similar issue with postgres timescaledb extension:

› NIXPKGS_ALLOW_UNFREE=1 devbox shell      
Info: Ensuring packages are installed.
✓ Computed the Devbox environment.
Error: nix: command error: nix --extra-experimental-features ca-derivations --option experimental-features 'nix-command flakes fetch-closure' print-dev-env --json path:/Users/vinnie/projects/devbox/.devbox/gen/flake: Package ‘timescaledb-2.14.2’ in /nix/store/5w3dp0m37794iffsbm9vd9f1xmmhda6i-source/pkgs/servers/sql/postgresql/ext/timescaledb.nix:38 has an unfree license (‘TSL’), refusing to evaluate.: exit code 1

In my case I got around it by using config.allowUnfree = true in the nix flake configuration I'm using following https://github.com/jetify-com/devbox/issues/912#issuecomment-1574274094

postgres/flake.nix

{
  description =
    "A flake that adds the timescaledb extension to Postgresql";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = { self, nixpkgs, flake-utils }:
    flake-utils.lib.eachDefaultSystem (system:
      let pkgs = import nixpkgs { system = system; config.allowUnfree = true; };
      in {
        packages = {
          # Return postgrsql with the timescaledb extension included.
          postgresql = pkgs.postgresql_16.withPackages (p: [ p.timescaledb ]);
        };

        defaultPackage = self.packages.postgresql;
      });
}

snipebin avatar Sep 10 '24 02:09 snipebin

Similar issue with PHP OCI Extension

{
  "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.12.0/.schema/devbox.schema.json",
  "packages": [
    "[email protected]",
    "php72Extensions.oci8@latest"
  ],
  "env": {
    "NIXPKGS_ALLOW_UNFREE": "1"
  },
  "shell": {
    "init_hook": [
      "echo 'Welcome to devbox!' > /dev/null"
    ],
    "scripts": {
      "test": [
        "echo \"Error: no test specified\" && exit 1"
      ]
    }
  }
}

Output of devbox shell

Error: nix: command error: nix --extra-experimental-features ca-derivations --option experimental-features 'nix-command flakes fetch-closure' print-dev-env --json path:/home/xxx/projects/xxx/xxx/.devbox/gen/flake: Package ‘oracle-instantclient-19.3.0.0.0’ in /nix/store/6spxbd5p43zgnx9hvsng5pjak11jmzwm-source/pkgs/development/libraries/oracle-instantclient/default.nix:118 has an unfree license (‘unfree’), refusing to evaluate.: exit code 1

fatrex avatar Sep 17 '24 13:09 fatrex