summaryrefslogtreecommitdiffstats
path: root/lass/2configs/hass/pyscript/shell.nix
blob: 3cfac0275600dfd9c5815ad36ff7c07d09867733 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
{ pkgs ? import <nixpkgs> {} }: let

  hass_host = "styx.r";
  hass_token = builtins.readFile ./hass_token;

  mach-nix = import (builtins.fetchGit {
    url = "https://github.com/DavHau/mach-nix/";
    ref = "refs/tags/3.4.0";
  }) {
    pkgs = pkgs;
  };
  pyenv = mach-nix.mkPython {
    requirements = ''
      hass_pyscript_kernel
    '';
  };
  jupyter = import (builtins.fetchGit {
    url = https://github.com/tweag/jupyterWith;
    ref = "master";
  }) {};

  pyscriptKernel = {
    spec = pkgs.runCommand "pyscript" {} ''
      mkdir -p $out/kernels/pyscript
      cp ${kernel_json} $out/kernels/pyscript/kernel.json
      cp ${pyscript_conf} $out/kernels/pyscript/pyscript.conf
    '';
    runtimePackages = [ pyenv ];
  };

  kernel_json = pkgs.writeText "kernel.json" (builtins.toJSON {
    argv = [
      "${pyenv}/bin/python3" "-m" "hass_pyscript_kernel"
      "-f" "{connection_file}"
    ];
    display_name = "hass_pyscript";
    language = "python";
  });

  pyscript_conf = pkgs.writeText "pyscript.conf" ''
    [homeassistant]
    hass_host = ${hass_host}
    hass_url = http://''${hass_host}:8123
    hass_token = ${hass_token}
  '';

  jupyterEnvironment = jupyter.jupyterlabWith {
    kernels = [ pyscriptKernel ];
  };

in jupyterEnvironment.env