top-level/impure.nix: refactor by removing 'with builtins'

This commit is contained in:
Serhii Khoma 2021-12-16 18:46:43 +02:00
parent ce5d933f41
commit eea670e7b8

View File

@ -1,14 +1,13 @@
/* Impure default args for `pkgs/top-level/default.nix`. See that file /* Impure default args for `pkgs/top-level/default.nix`. See that file
for the meaning of each argument. */ for the meaning of each argument. */
with builtins;
let let
homeDir = builtins.getEnv "HOME"; homeDir = builtins.getEnv "HOME";
# Return x if it evaluates, or def if it throws an exception. # Return x if it evaluates, or def if it throws an exception.
try = x: def: let res = tryEval x; in if res.success then res.value else def; try = x: def: let res = builtins.tryEval x; in if res.success then res.value else def;
in in
@ -25,20 +24,20 @@ in
, # Fallback: The contents of the configuration file found at $NIXPKGS_CONFIG or , # Fallback: The contents of the configuration file found at $NIXPKGS_CONFIG or
# $HOME/.config/nixpkgs/config.nix. # $HOME/.config/nixpkgs/config.nix.
config ? let config ? let
configFile = getEnv "NIXPKGS_CONFIG"; configFile = builtins.getEnv "NIXPKGS_CONFIG";
configFile2 = homeDir + "/.config/nixpkgs/config.nix"; configFile2 = homeDir + "/.config/nixpkgs/config.nix";
configFile3 = homeDir + "/.nixpkgs/config.nix"; # obsolete configFile3 = homeDir + "/.nixpkgs/config.nix"; # obsolete
in in
if configFile != "" && pathExists configFile then import configFile if configFile != "" && builtins.pathExists configFile then import configFile
else if homeDir != "" && pathExists configFile2 then import configFile2 else if homeDir != "" && builtins.pathExists configFile2 then import configFile2
else if homeDir != "" && pathExists configFile3 then import configFile3 else if homeDir != "" && builtins.pathExists configFile3 then import configFile3
else {} else {}
, # Overlays are used to extend Nixpkgs collection with additional , # Overlays are used to extend Nixpkgs collection with additional
# collections of packages. These collection of packages are part of the # collections of packages. These collection of packages are part of the
# fix-point made by Nixpkgs. # fix-point made by Nixpkgs.
overlays ? let overlays ? let
isDir = path: pathExists (path + "/."); isDir = path: builtins.pathExists (path + "/.");
pathOverlays = try (toString <nixpkgs-overlays>) ""; pathOverlays = try (toString <nixpkgs-overlays>) "";
homeOverlaysFile = homeDir + "/.config/nixpkgs/overlays.nix"; homeOverlaysFile = homeDir + "/.config/nixpkgs/overlays.nix";
homeOverlaysDir = homeDir + "/.config/nixpkgs/overlays"; homeOverlaysDir = homeDir + "/.config/nixpkgs/overlays";
@ -46,25 +45,25 @@ in
# check if the path is a directory or a file # check if the path is a directory or a file
if isDir path then if isDir path then
# it's a directory, so the set of overlays from the directory, ordered lexicographically # it's a directory, so the set of overlays from the directory, ordered lexicographically
let content = readDir path; in let content = builtins.readDir path; in
map (n: import (path + ("/" + n))) map (n: import (path + ("/" + n)))
(builtins.filter (n: builtins.match ".*\\.nix" n != null || pathExists (path + ("/" + n + "/default.nix"))) (builtins.filter (n: builtins.match ".*\\.nix" n != null || builtins.pathExists (path + ("/" + n + "/default.nix")))
(attrNames content)) (builtins.attrNames content))
else else
# it's a file, so the result is the contents of the file itself # it's a file, so the result is the contents of the file itself
import path; import path;
in in
if pathOverlays != "" && pathExists pathOverlays then overlays pathOverlays if pathOverlays != "" && builtins.pathExists pathOverlays then overlays pathOverlays
else if pathExists homeOverlaysFile && pathExists homeOverlaysDir then else if builtins.pathExists homeOverlaysFile && builtins.pathExists homeOverlaysDir then
throw '' throw ''
Nixpkgs overlays can be specified with ${homeOverlaysFile} or ${homeOverlaysDir}, but not both. Nixpkgs overlays can be specified with ${homeOverlaysFile} or ${homeOverlaysDir}, but not both.
Please remove one of them and try again. Please remove one of them and try again.
'' ''
else if pathExists homeOverlaysFile then else if builtins.pathExists homeOverlaysFile then
if isDir homeOverlaysFile then if isDir homeOverlaysFile then
throw (homeOverlaysFile + " should be a file") throw (homeOverlaysFile + " should be a file")
else overlays homeOverlaysFile else overlays homeOverlaysFile
else if pathExists homeOverlaysDir then else if builtins.pathExists homeOverlaysDir then
if !(isDir homeOverlaysDir) then if !(isDir homeOverlaysDir) then
throw (homeOverlaysDir + " should be a directory") throw (homeOverlaysDir + " should be a directory")
else overlays homeOverlaysDir else overlays homeOverlaysDir