Newer
Older
{ pkgs, lib, makeWrapper, ... }:
let
python = pkgs.python3;
# This is a python envionment that has the dependencies
# for the development python scripts we use, and the
# helper library.
python-env = python.buildEnv.override {
extraLibs = [ python.pkgs.httpx ];
# Add `.pth` file pointing at the directory containg our helper library.
# This will get added to `sys.path` by `site.py`.
# See https://docs.python.org/3/library/site.html
postBuild = ''
echo ${lib.escapeShellArg ./pylib} > $out/${lib.escapeShellArg python.sitePackages}/tools.pth
'';
};
python-commands = [
./update-nixpkgs
./update-gitlab-repo
# This derivation creates a package that wraps our tools to setup an environment
# with there dependencies available.
pkgs.runCommand "ps_tools" {
nativeBuildInputs = [ makeWrapper ];
# Only display the help if we are running an interactive shell.
if [[ $- == *i* ]]; then
cat <<MOTD
Tools (pass --help for details):
${lib.concatStringsSep "\n" (map (path:
"- ${baseNameOf path}"
) python-commands)}
} ''
mkdir -p $out/bin
${lib.concatStringsSep "\n" (map (path:
let
baseName = baseNameOf path;
# We use toString so that we wrap the in-tree scripts, rather than copying
# them to the nix-store. This means that we don't need to run nix-shell again
# to pick up changes.
sourcePath = toString path;
in
# makeWrapper <executable> <wrapperfile> <args>
# See https://nixos.org/manual/nixpkgs/stable/#fun-makeWrapper
"makeWrapper ${python-env}/bin/python $out/bin/${baseName} --add-flags ${sourcePath}"
) python-commands)}
''