Skip to content

python # predefined undocumented variables? How/where to find those? #1086

@InLaw

Description

@InLaw

falke.nix

{
  # This example flake.nix is pretty generic and the same for all
  # examples, except when they define devShells or extra packages.
  description = "d2n Dream2nix example flake";

  # We import the latest commit of dream2nix main branch and instruct nix to
  # re-use the nixpkgs revision referenced by dream2nix.
  # This is what we test in CI with, but you can generally refer to any
  # recent nixpkgs commit here.
  inputs = {
    dream2nix.url = "github:nix-community/dream2nix";
    nixpkgs.follows = "dream2nix/nixpkgs";
  };

  outputs = {
    self,
    dream2nix,
    nixpkgs,
  }: 
  let
    # A helper that helps us define the attributes below for
    # all systems we care about.
    eachSystem = nixpkgs.lib.genAttrs [
      "aarch64-darwin"
      "aarch64-linux"
      "x86_64-darwin"
      "x86_64-linux"
    ];

    pkgs = import nixpkgs {
        system = "x86_64-linux";
      };

  in 
  {
    packages = eachSystem (system: {
      # For each system, we define our default package
      # by passing in our desired nixpkgs revision plus
      # any dream2nix modules needed by it.
      default = dream2nix.lib.evalModules {
        packageSets.nixpkgs = nixpkgs.legacyPackages.${system};

        modules = [
          # Import our actual package definiton as a dream2nix module from ./default.nix
          ./default.nix 
          {
            # Aid dream2nix to find the project root. This setup should also works for mono
            # repos. If you only have a single project, the defaults should be good enough.
            paths.projectRoot = ./.;
            # can be changed to ".git" or "flake.nix" to get rid of .project-root
            paths.projectRootFile = "flake.nix";
            paths.package = ./.;
            }
        ];
      };

    });

    devShells = eachSystem (system: {
      default = nixpkgs.legacyPackages.${system}.mkShell {
        # inherit from the dream2nix generated dev shell
        inputsFrom = [self.packages.${system}.default.devShell];
        # add extra packages
        packages = ( with nixpkgs.legacyPackages.${system} ; [
          python.pkgs.ipython
        ] ) ;
      };

    });
  };


}

python[.pkgs.ipython] is not defined before? The code should fail, no?
The code works and python is

  • error: Package ‘python-2.7.18.8’ in /nix/store/jyw83fn5spbdgzdj110620dm0zl43q2y-source/pkgs/development/interpreters/python/cpython/2.7/default.nix:341 is marked as insecure, refusing to evaluate.

default.nix

{
  config,
  lib,
  dream2nix,
  ...
}: 
let
  
in
{
  imports = [
    dream2nix.modules.dream2nix.WIP-python-pdm
  ];

  mkDerivation = {
    src = lib.cleanSourceWith { 
      src = lib.cleanSource ./.;
      filter = name: type:
        !(builtins.any (x: x) [
          (lib.hasSuffix ".nix" name)
          (lib.hasPrefix "." (builtins.baseNameOf name))
          (lib.hasSuffix "flake.lock" name)
        ]);
    };

  };
  pdm.lockfile = ./pdm.lock;
  pdm.pyproject = ./pyproject.toml; 

  buildPythonPackage = {
    pythonImportsCheck = [
      "my_tool"
    ];
  };
}

Where is python 2.7 defined?
How to show all other already defined variables?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions