# The entrypoint for our custom library set. # # Take note, this is modularly included as part of the environment so we cannot # have any functions or references that could make the evaluation go in an # infinite recursion such as a function that generates a valid nixpkgs module. # If you have to add those functions, you'll have to add them in configUtils. { pkgs }: let inherit (pkgs) lib; in pkgs.lib.makeExtensible (self: let callLib = file: import file { inherit pkgs lib self; }; in { trivial = callLib ./trivial.nix; data = callLib ./data.nix; math = callLib ./math.nix; # For future references, these are the only attributes that are going to be # exported as part of nixpkgs overlay. fetchers = callLib ./fetchers; builders = callLib ./builders; # foodogsquared's version of a standard environment. Basically just an # extended version of nixpkgs' version that went overboard with # developer-oriented dependencies. stdenv = with pkgs; [ direnv cookiecutter oils-for-unix nushell ipcalc ] ++ lib.optional stdenv.isLinux [ gdb moreutils meson ninja pkg-config man-pages man-pages-posix neovim ] ++ (import "${pkgs.path}/pkgs/stdenv/generic/common-path.nix" { inherit pkgs; }); inherit (self.builders) makeXDGMimeAssociationList makeXDGPortalConfiguration makeXDGDesktopEntry buildHugoSite buildFDSEnv; inherit (self.trivial) countAttrs filterAttrs'; inherit (self.data) importYAML renderTeraTemplate renderMustacheTemplate; inherit (self.fetchers) fetchInternetArchive fetchUgeeDriver; } // lib.optionalAttrs (builtins ? fetchTree) { flake = callLib ./flake.nix; inherit (self.flake) importFlakeMetadata fetchTree fetchInput; })