NixOS + Haskell + SDL2

インストールしたてのNixOS で Haskell を使ひ SDL2 を利用して 何かつくりたい と思ったとき 最低限(だと思ふ)やることを 列挙する

stack を入れる

おそらく どのやうなインストール方法をしたとしても 何らかのターミナルと nano といふエディタが使へるはずだ
私の場合は XTerm といふターミナルが入ってゐた
ターミナルを開き

sudo nano /etc/nixos/configuration.nix

と入力してEnterキーを押す
はじめに設定してゐたパスワードを入れて 編集画面に入る

environment.systemPackages =  

などと書かれたところを見つけて
次のやうに 中身に haskellPakages.stack を書く(エディタとしてvimも追加したい人は追加する)

environment.systemPackages = with pkgs; [
    vim
    haskellPackages.stack
];

次に 下のやうにコマンドを打ちこむ

sudo nixos-rebuild switch --upgrade  

ここで 一旦再起動してもよいのだが
このままでも stack のプロジェクトを書くことができる
もし stack といふコマンドが認識されてゐないなら

nix-shell -p haskellPackages.stack

としてEnter
プロンプトの部分が
[nix-shell: なんとかかんとか]
になってる筈

stack new myproject

などとして プロジェクトを立ちあげる (myproject はプロジェクト名なので なんでもいい)

cd myproject

として プロジェクトフォルダの中にはいる

stack.yaml を編集する

sdl2を使ふ設定は stack.yaml といふファイルに書く

nano stack.yaml

(vimをエディタで使ふ人は vi stack.yaml)
一番下の行に(別に途中でもいいけれど)
次を追加する

nix:
  enable: true
  packages: [pkg-config, SDL2, SDL2_image, SDL2_ttf, SDL2_gfx, SDL2_mixer, libtiff, harfbuzz, freetype, libwebp, glib, pcre2, libsndfile, libpulseaudio, alsa-lib, jack2]

package.yaml を編集する

次に package.yaml を編集する
sdl2 単体の他に sdl2-ttf(フォント関係) sdl2-image(イメージ関連) sdl2-mixer(音関連) sdl2-gfx(描画補助関連) を入れたいばあいはそれも記述する
場所は dependencies: といふところの下

dependencies:
- base >= 4.7 && < 5   --(もともと書いてあるやつ)
- sdl2
- sdl2-ttf
- sdl2-image
- sdl2-gfx
- sdl2-mixer

あとは app フォルダにある Main.hs ファイルを編集したりして
sdl2を使ったコードなんかを書き myprojectフォルダ(はじめに作ったやつ)直下で

stack run

をすれば ちゃんとコードが書かれてゐるなら 實行できる筈
おおまかだけど だいたい こんなとこかな〜