Skip to content
Snippets Groups Projects
default.nix 1.74 KiB
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
Tom Prince's avatar
Tom Prince committed
    ./update-github-repo
  # This derivation creates a package that wraps our tools to setup an environment
  # with there dependencies available.
pkgs.runCommand "ps_tools" {
  nativeBuildInputs = [ makeWrapper ];
  shellHook = ''
    # 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)}
  ''