Looking up values specified by `nixConfig` in `flake.nix` using `nix repl`

Is it possible to look up values specified by nixConfig in flake.nix using nix repl?

My problem : I’m trying out haskell.nix from input-output-hk. Following their guide, I did

nix flake init --template templates#haskell-nix --impure

Many files were generated including the following flake.nix.

{         
  # This is a template created by `hix init`       
  inputs.haskellNix.url = "github:input-output-hk/haskell.nix";
  inputs.nixpkgs.follows = "haskellNix/nixpkgs-unstable";     
  inputs.flake-utils.url = "github:numtide/flake-utils";      
  outputs = { self, nixpkgs, flake-utils, haskellNix }:      
    let                                            
      supportedSystems = [                             
        "x86_64-linux"                                       
        "x86_64-darwin"                           
        "aarch64-linux"                                     
        "aarch64-darwin"                                    
      ];                                           
    in                                                       
      flake-utils.lib.eachSystem supportedSystems (system:   
      let                                          
        overlays = [ haskellNix.overlay            
          (final: prev: {                                    
            hixProject =                               
              final.haskell-nix.hix.project {                
                src = ./.;                                    
                evalSystem = "x86_64-linux";
              };                                             
          })                                                 
        ];                                             
        pkgs = import nixpkgs { inherit system overlays; inherit (haskellNix) config; };
        flake = pkgs.hixProject.flake {};          
      in flake // {                                          
        legacyPackages = pkgs;                               
      });                                                    
                                                             
  # --- Flake Local Nix Configuration ----------------------------
  nixConfig = {                                              
    # This sets the flake to use the IOG nix cache.          
    # Nix should ask for permission before using it,         
    # but remove it here if you do not want it to.           
    extra-substituters = ["https://cache.iog.io"];           
    extra-trusted-public-keys = ["hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="];
    allow-import-from-derivation = "true";                   
  };           
}              

So, as the tutorial suggests doing nix flake show, I entered the command and the following error occurs.

error: cannot build '/nix/store/3a699dmzfdszpl58mbndav59z82m21aa-haskell-project-plan-to-nix-pkgs.drv' during evaluation because the option 'allow-import-from-derivation' is disabled

But as you can see from above flake.nix, allow-import-from-derivation is specified in nixConfig. I wanted to check whether the value is indeed set, but could not find a way to inspect it with nix repl!

By the way, I know that putting --allow-import-from-derivation after nix flake show solves the problem.
I want to learn how to find the root cause!

1 Like

nix flake show does not read the configuration from the flake.

Only build, shell, develop and run do IIRC.

nix flake show does not read the configuration from the flake.
Only build , shell , develop and run do IIRC.

Where can I find whether nix flake show reads the configuration from the flake? Is it in the nix code?

Also, do you have an answer to my question "Is it possible to look up values specified by nixConfig in flake.nix using nix repl"?

If you import flake.nix you should be able to see the exported configuration.

Though in general my stance about the nixConfig is, that it should get removed.

Or there should at least exist a setting that allows me to fully disable nix bugging me about settings I do not want to change forever!

If your flake requires IFD, I don’t want nix asking me if I do an exception for your flake. I want nix to just fail evaluation, and let it to me whether it’s worth it to enable IFD for just this one invocation.