Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot use withPackages #12

Open
asymmetric opened this issue Jul 3, 2023 · 6 comments
Open

Cannot use withPackages #12

asymmetric opened this issue Jul 3, 2023 · 6 comments
Labels
bug Something isn't working

Comments

@asymmetric
Copy link
Contributor

I have the following in my flake.nix:

devShells.default = pkgs.mkShell {

  packages = [
    (inputs.nixpkgs-python.packages.${system}."3.9.2".withPackages (ps: with ps; [ requests ]))
  ]

...
}

which fails to build:

error checking the existence of https://tarballs.nixos.org//:
curl: (6) Could not resolve host: tarballs.nixos.org

trying https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tar.xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: www.python.org
Warning: Problem : timeout. Will retry in 1 seconds. 3 retries left.
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: www.python.org
Warning: Problem : timeout. Will retry in 2 seconds. 2 retries left.
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: www.python.org
Warning: Problem : timeout. Will retry in 4 seconds. 1 retries left.
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: www.python.org
error: cannot download Python-3.9.2.tar.xz from any mirror

If I try adding matplotlib instead, the error is different:

error:
       … while calling the 'derivationStrict' builtin

         at //builtin/derivation.nix:9:12: (source not available)

       … while evaluating derivation 'market-maker-stats'
         whose name attribute is located at /nix/store/46i6y04hr6zq7054mg2svxgk9zzpsiqy-source/pkgs/stdenv/generic/make-derivation.nix:303:7

       … while evaluating attribute 'nativeBuildInputs' of derivation 'market-maker-stats'

         at /nix/store/46i6y04hr6zq7054mg2svxgk9zzpsiqy-source/pkgs/stdenv/generic/make-derivation.nix:347:7:

          346|       depsBuildBuild              = lib.elemAt (lib.elemAt dependencies 0) 0;
          347|       nativeBuildInputs           = lib.elemAt (lib.elemAt dependencies 0) 1;
             |       ^
          348|       depsBuildTarget             = lib.elemAt (lib.elemAt dependencies 0) 2;

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: function 'anonymous lambda' called with unexpected argument 'x11Support'

       at /nix/store/ysisn7pamb4plgr95w5szis24pfwihfd-source/self.nix:1:1:

            1| { nixpkgs-python, version }:
             | ^
            2|
@domenkozar
Copy link
Member

https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tar.xz

If I copy that to my browser it works. Do you have problems with networking?

@domenkozar
Copy link
Member

domenkozar commented Jul 16, 2023

@asymmetric could you provide exact steps and files how to reproduce it?

@domenkozar
Copy link
Member

Same issue as #14

@domenkozar domenkozar added the bug Something isn't working label Oct 3, 2023
@domenkozar
Copy link
Member

Should be fixed on main, can you try?

@asymmetric
Copy link
Contributor Author

I'm not currently using this anymore, so I won't be able to investigate further, but running nix develop with the following flake.nix errors with a different error:

  1. flake.nix
{
  inputs.nixpkgs.url = "github:nixos/nixpkgs";
  inputs.nixpkgs-python.url = "github:cachix/nixpkgs-python";
  outputs = inputs:
    let
      system = "x86_64-linux";
      pkgs = inputs.nixpkgs.legacyPackages.${system};
    in
    {
      devShells.${system}.default = pkgs.mkShell {
        packages = (inputs.nixpkgs-python.packages.${system}."3.9.2".withPackages (ps: with ps; [ requests ]));
      };
    };
}
  1. nix develop
error:
       … while calling the 'derivationStrict' builtin

         at /builtin/derivation.nix:9:12: (source not available)

       … while evaluating derivation 'nix-shell'
         whose name attribute is located at /nix/store/sf3hbz4qg3wkii2hx9lfixf4srkd89y1-source/pkgs/stdenv/generic/make-derivation.nix:352:7

       … while evaluating attribute 'nativeBuildInputs' of derivation 'nix-shell'

         at /nix/store/sf3hbz4qg3wkii2hx9lfixf4srkd89y1-source/pkgs/stdenv/generic/make-derivation.nix:396:7:

          395|       depsBuildBuild              = elemAt (elemAt dependencies 0) 0;
          396|       nativeBuildInputs           = elemAt (elemAt dependencies 0) 1;
             |       ^
          397|       depsBuildTarget             = elemAt (elemAt dependencies 0) 2;

       … while calling 'chooseDevOutputs'

         at /nix/store/sf3hbz4qg3wkii2hx9lfixf4srkd89y1-source/lib/attrsets.nix:1146:5:

         1145|     # List of packages to pick `dev` outputs from
         1146|     drvs:
             |     ^
         1147|     builtins.map getDev drvs;

       … from call site

         at /nix/store/sf3hbz4qg3wkii2hx9lfixf4srkd89y1-source/pkgs/stdenv/generic/make-derivation.nix:293:51:

          292|       (map (drv: drv.__spliced.buildBuild or drv) (checkDependencyList "depsBuildBuild" depsBuildBuild))
          293|       (map (drv: drv.__spliced.buildHost or drv) (checkDependencyList "nativeBuildInputs" nativeBuildInputs'))
             |                                                   ^
          294|       (map (drv: drv.__spliced.buildTarget or drv) (checkDependencyList "depsBuildTarget" depsBuildTarget))

       … while calling 'checkDependencyList''

         at /nix/store/sf3hbz4qg3wkii2hx9lfixf4srkd89y1-source/pkgs/stdenv/generic/make-derivation.nix:265:43:

          264|   checkDependencyList = checkDependencyList' [];
          265|   checkDependencyList' = positions: name: deps: flip imap1 deps (index: dep:
             |                                           ^
          266|     if isDerivation dep || dep == null || builtins.isString dep || builtins.isPath dep then dep

       … from call site

         at /nix/store/sf3hbz4qg3wkii2hx9lfixf4srkd89y1-source/pkgs/stdenv/generic/make-derivation.nix:265:49:

          264|   checkDependencyList = checkDependencyList' [];
          265|   checkDependencyList' = positions: name: deps: flip imap1 deps (index: dep:
             |                                                 ^
          266|     if isDerivation dep || dep == null || builtins.isString dep || builtins.isPath dep then dep

       … while calling 'flip'

         at /nix/store/sf3hbz4qg3wkii2hx9lfixf4srkd89y1-source/lib/trivial.nix:148:16:

          147|   */
          148|   flip = f: a: b: f b a;
             |                ^
          149|

       … from call site

         at /nix/store/sf3hbz4qg3wkii2hx9lfixf4srkd89y1-source/lib/trivial.nix:148:19:

          147|   */
          148|   flip = f: a: b: f b a;
             |                   ^
          149|

       … while calling 'imap1'

         at /nix/store/sf3hbz4qg3wkii2hx9lfixf4srkd89y1-source/lib/lists.nix:165:14:

          164|   */
          165|   imap1 = f: list: genList (n: f (n + 1) (elemAt list n)) (length list);
             |              ^
          166|

       error: value is a set while a list was expected

@genevieve-me
Copy link

genevieve-me commented Jan 31, 2024

I'm not currently using this anymore, so I won't be able to investigate further, but running nix develop with the following flake.nix errors with a different error:

I was getting hit by the same error, then realized I was using a flake based on a template that still was on nixpkgs nixos-23.05. Once I updated to 23.11, this seems to be working. Sample config:

Edit: Not really related to this issue, but just in case anyone tries the below code: My example actually must specify python 3.11.6 or below for the time being (which is the version in nixpkgs 23.11), because of some annoying issues with a bug in pytest-mock (which is a transitive dependency of practically everything). See:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
    nixpkgs-python.url = "github:cachix/nixpkgs-python";
    systems.url = "github:nix-systems/default";
    devenv.url = "github:cachix/devenv";
  };

  outputs = { self, nixpkgs, devenv, systems, nixpkgs-python, ... }@inputs:
    let forEachSystem = nixpkgs.lib.genAttrs (import systems);
    in {
      devShells = forEachSystem (system:
        let pkgs = nixpkgs.legacyPackages.${system};
        in {
          default = devenv.lib.mkShell {
            inherit inputs pkgs;
            modules = [{
              languages.python.enable = true;
              languages.python.version = "3.11.6";
              languages.python.venv.enable = true;
              packages = with pkgs; [
                postgresql
                playwright
                (nixpkgs-python.packages.${system}."3.11.6".withPackages (ps:
                  with ps; [
                    requests
                    pyyaml
                  ]))
              ];
              enterShell = ''pip install -r requirements.txt -e .'';
            }];
          };
        });
    };
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants