Cara Memasang Jupyter Notebook Di NixOS

Jupyter Notebook yang sebelumnya dikenal sebagai IPython Notebook merupakan antarmuka berbasis web dari python untuk menjalankan serangkaian perintah pertahap. Tujuannya untuk memudahkan pengguna untuk melakukan pembelajaran, penelitian, klarifikasi, dan visualisasi.

Jupyter Notebook diakses melalui web browser atau editor yang berbasis web seperti vscode atau vscodium. Umumnya tidak hanya jupyter-notebook saja yang perlu dipasang, tetapi pustaka pendukung lainnya untuk perhitungan komputasi dan visualisasi juga perlu dipasang. Misalnya pustaka numpy, scipy, pandas, scikit-learn, matplotlib atau seaborn untuk visualisasinya.

Faktanya, Jupyter Notebook juga mendukung banyak bahasa pemrograman lain seperti Julia, Python, Haskell, Ruby, dan R. Tetapi pada artikel ini Jupyter notebook yang dibahas adalah untuk bahasa pemrograman python.

jupyter notebook example

Gambar 1: Contoh tampilan Jupyter Notebook.

Jenis pemasangan

Terlebih penulis masih menggunakan modul native dari NixOS tanpa home-manager dan Flake, jadi pemasangan jupyter-notebook secara global di sistem NixOS dengan /etc/nixos/configuration.nix atau anda bisa memecahnya menjadi beberapa berkas konfigurasi nix.

Ada 2 cara untuk memasang Jupyter notebook secara global, yaitu:

  1. Pemasangan dari pustaka python.
  2. Pemasangan dari modul layanan systemd.

Cara yang pertama menjalankan manual layanan jupyter-notebook, menunggu beberapa saat untuk proses jupyter selesai kemudian baru bisa digunakan secara lokal via web browser. Modul tersebut dibundel dengan pustaka python lainnya.

Sedangkan cara yang kedua menjalankan jupyter-notebook secara otomatis saat komputer dinyalakan, sehingga langsung membuka port via web browser.

Cara pertama atau kedua tidak masalah, terlebih lagi modul tersebut tidak terduplikasi karena sistem di NixOS yang menggunakan symlink untuk integrasi antar paket. Bahkan penulis pun menggunakan kedua cara tersebut untuk mengetahui perbedaannya dan mempelajari deklarasi jupyter di Nix.

Pemasangan 1: Melalui pustaka dari python

Di dalam bagian python3.withPackages dan seterusnya, tambahkan ke dalam environment.systemPackages bersama nama paket sistem lainnya.

File:/etc/nixos/configuration.nix
  environment = {
    systemPackages = with pkgs; [
      (python3.withPackages ( # tambahkan di awal baris ini.
        ps:
          with ps; [
            jupyter
            jupyterlab
            matplotlib
            numpy
            pandas
            plotly
            seaborn
            scikit-learn
            scipy
            sympy
          ]
        )
      ) # sampai baris ini.
    ];
  };

Anda juga bisa menambahkan pustaka python lainnya yang dibutuhkan di repositori NixOS.

Konfigurasi ini dapat dilihat di repositori penulis (dotfiles cara 1).

Pemasangan 2: Melalui modul layanan systemd

Cara kedua ini menjalankan otomatis layanan jupyter sehingga pengguna dapat langsung membuka via web browser. Tambahkan konfigurasi layanan jupyter.

File:/etc/nixos/configuration.nix
  services = {
    jupyter = {
      enable = true;
      group = "jupyter";
      user = "jupyter";
      password = "'argon2:$argon2id$v=19$m=10240,t=10,p=xxxxxxx... '"; # dienkripsi
      kernels = {
        python3 = let
          env = (pkgs.python3.withPackages (ps: with ps; [
                jupyterlab
                matplotlib
                numpy
                pandas
                plotly
                seaborn
                selenium
                scikit-learn
                scipy
                sympy
                statsmodels
              ]
          ));
        in {
          displayName = "Python for Machine Learning";
          argv = [
            "${env.interpreter}"
            "-m"
            "ipykernel_launcher"
            "-f"
            "{connection_file}"
          ];
          language = "python";
        };
      };
    };
  • group dan user sebaiknya tetap menggunakan jupyter.

  • password dapat diperoleh dengan menjalankan perintah dibawah ini di terminal.

    python -c 'from notebook.auth import passwd; print(passwd())'
    
  • Ganti password sesuai yang dikehendaki, salin dan tempelkan ke password =.

Konfigurasi diatas dapat dilihat di repositori (dotfiles: cara 2)

Selanjutnya beri hak akses user dan grup jupyter. Tambahkan jupyter ke dalam extraGroups milik pengguna.

File:/etc/nixos/configuration.nix
  users = {
    users = {
      # tambahkan grup jupyter
      jupyter = {
        group = "jupyter";
      };
      hervyqa = { # contoh username
        isNormalUser = true;
        description = "Hervy Qurrotul"; # contoh fullname
        extraGroups = [
          "jupyter" # tambahkan pengguna ke grup jupyter
          "audio"
          "disk"
          "input"
          "users"
          "video"
          "wheel"
          # ... dan grup opsional lainnya
        ];
      };
    };
  };

Konfigurasi di atas dapat dilihat di repositori (dotfiles: cara 2 konfigurasi grup).

Perbedaan dari cara sebelumnya:

  • Layanan jupyter.service akan berjalan otomatis saat komputer dinyalakan.
  • Dikarenakan menggunakan user jupyter dan grup jupyter, maka direktori proyek jupyter yang dibuat akan diletakkan di /var/lib/jupyter dengan hak akses jupyter:jupyter.
  • Hanya user jupyter saja yang bisa mengakses melalui web browser dengan kata sandi.

Ekstensi Jupyter Notebook VSCode

Sebagai pendukung di IDE editor (opsional), tambahkan beberapa ekstensi Jupyter Notebook di vscode atau vscodium.

  environment = {
    systemPackages = with pkgs; [
      (
        vscode-with-extensions.override {
          vscode = vscodium; # jika menggunakan vscodium
          vscodeExtensions = with vscode-extensions;
            [
              ms-pyright.pyright
              ms-python.python
              ms-toolsai.jupyter
              ms-toolsai.jupyter-keymap
              ms-toolsai.jupyter-renderers
              ms-toolsai.vscode-jupyter-cell-tags
              ms-toolsai.vscode-jupyter-slideshow
            ]
        }
      )
    ];
  };

Menjalankan Notebook melalui web browser

Setelah selesai mengkonfigurasi jupyter-notebook. Bangun ulang sistem NixOS.

sudo nixos-rebuild switch

Kemudian pengguna dapat membukanya melalui web browser.

jupyter notebook login

Gambar 2: Halaman login Jupyter Notebook.

Penutup

NixOS menggunakan deklarasi untuk konfigurasi sistem operasinya baik dari segi sistem root maupun user. Terlihat menyakitkan karena butuh konfigurasi yang cukup panjang, tetapi konfigurasi tersebut diperlukan sekali dan hasilnya dapat digunakan berulang-ulang di mesin yang berbeda.

Jupyter Notebook vs IDE lebih baik yang mana?

Bagi penulis keduanya terbaik, tergantung kebutuhan. Jupyter lebih disarankan untuk kebutuhan yang cepat dan sederhana. Sedangkan jika menggunakan IDE misalnya seperti Spyder IDE, VSCode, PyCharm tentu lebih memiliki keunggulan fitur spesifik. Kembali lagi kepada kebutuhan pengguna.

Demikian catatan dari penulis. Jika Anda mempunyai pertanyaan, saran, dan kritikan silahkan komentar dibawah ini atau bisa menyapa penulis via telegram @hervyqa . Sekian, semoga tulisan ini bermanfaat untuk pembaca semuanya. Aamiin.

Artikel lainnya

Aplikasi Rust yang Digunakan untuk Kebutuhan Alur Kerja di Terminal

Dalam tulisan ini menjelaskan secara singkat beberapa aplikasi CLI (command line interface) yang dibangun dengan bahasa pemrograman rust untuk memnudahkan alur-kerja dengan terminal.

Memilih Kanal Stabil atau Tak Stabil di NixOS?

NixOS memiliki beberapa kanal resmi dengan dua kategori yaitu kanal stabil (stable) atau tak stabil (unstable), dan kanal besar (large) atau kecil (small).

Cara Memasang R dan RStudio Di NixOS

Bahasa pemrograman R lebih dikenal sebagai bahasa pemrograman untuk statistika dan visualisasi grafis. Dibuat oleh Ross Ihaka dan Robert Gentleman di Universitas Auckland, dan sekarang dikembangkan oleh R Development Core Team.