Skip to content
Snippets Groups Projects
default.nix 1.74 KiB
Newer Older
  • Learn to ignore specific revisions
  • { 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)}
      ''