nix flake develop

nix flake developついて

タグ


概要

  • nix flake developはnix flakeの一機能
  • nix-shellの代替
  • ソフトウェアの開発環境を構築するためのnix flakeの機能

nix flake developの使い方

  • プロジェクトのルートディレクトリにflake.nixを作成する
{
  description = "A simple Python project";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    flake-utils.url = "github:numtide/flake-utils";
    mach-nix.url = "github:davhau/mach-nix";
  };

  outputs = { self, nixpkgs, flake-utils, mach-nix, ... }:
  let
    pythonVersion = "python39";
  in
  flake-utils.lib.eachDefaultSystem (system:
    let
      pkgs = nixpkgs.legacyPackages.${system};
      glibcLocales = pkgs.glibcLocales;
      mach = mach-nix.lib.${system};

      pythonEnv = mach.mkPython {
        python = pythonVersion;
        # requirements = builtins.readFile ./requirements.txt;
        requirements = ''
          numpy
          pandas
          matplotlib
          seaborn
          jupyterlab
        '';
      };
    in
    {
      devShells.default = pkgs.mkShell {
        packages = [
          pythonEnv
          pkgs.glibcLocales
          pkgs.vim
          pkgs.git
          pkgs.gcc
        ];
        LOCALE_ARCHIVE = "${glibcLocales}/lib/locale/locale-archive";
        shellHook = ''
          export PYTHONPATH="${pythonEnv}/bin/python"
        '';
      };
    }
  );
}