NixOSをデスクトップで運用する

使い始めて数週間経ったので、NixOSiが何者かなどは置いておいて、今の所の運用について。 システムの部分については/etc/nixos/configuration.nix/etc/nixos/hardware-configuration.nixに書く。 これに関してはインストール時にテンプレートが置かれているので特に苦労も無いと思う。 ハードウェア毎に設定をまとめたものが公開されているのでThinkpadの設定も一発で使える。 Archだと自分でWiki読んで設定するべきところがNixOSだとテンプレートをちょっと改変するだけで使えるのは(NixOSのチームによって十分サポートされていることについては)楽。 最新の定義使いたいときは/etc/nixpkgs/とかにクローンしておいてnixos-rebuild switch -I nixpkgs=/etc/nixpkgs/とすればいい。 github.com

Vimの設定やシェルの設定ファイルの管理にはhome-managerを使うと便利。 $XDG_CONFIG_HOME/nixpkgs/home.nixにコンフィグを書いて管理する。 github.com

ここに設定を置いていますが、多分他の方の設定ファイルを参考にしたほうが良いです。

辛さ

  • ldすら普通の位置に無い(それはそう)ので、ldが普通の位置にあることを仮定しているソフトウェアは動かない(それはそう)。Rustのcrossとか動かないです。
  • fcitxがgtk上で動かない。GTK_IM_MODULE_FILE辺りの設定の問題らしい。issueで報告あるので自分の環境だけではないっぽい。 alacritty上で書いてクリップボードにコピーしているけどこれは直したい。ただIMはそもそもうまく動かないものなのでNixOS特有の辛さではない。
  • pkg-configもそのままでは動かない。なので外部のライブラリに依存するRustのクレートとかビルドできない。$PKG_CONFIG_HOMEを手動で設定すれば動きます。

RustのcrossはNixOSで動かない

以上です。だと味気ないので原因を簡単に。 crossとはdockerコマンドをラップしてRustでのクロスコンパイルを簡単に実現できるツールなのだけど、 現行のcrossの実装ではライブラリ、ツールチェーンをホストの環境からイメージ内にマウントすることで実現しているのだが、これが問題になる。

ご存知のようにNixOSではldすらハッシュ付きで/nix/store/xxxxxx-みたいなパスに配置されており、 NixOSのrustupでもツールチェーンのインストール時にバイナリパッチで利用するldを書き換えてインストールするようにしてある。 なので存在しないldを読みに行こうとしてsh: 1: cargo: not foundなんて言われることになる。

幸いdocker in dockerはサポートされてあるのでdocker in dockerで使いましょう。 ホスト環境に依存しないdockerイメージにしてくれれば楽なんだけど……

netlifyでトップとしてindex.xhtmlを置く

github.ioはデフォルトでindex.xhtmlがあればトップページと解釈してくれるのですが、netlifyはそうなりません。 _redirecsを置いて//index.xhtmlに飛ばせば解決できます*1。書き換え(rewrite)なのでステータスコードは200です。

/ /index.xhtml 200

STMマイコンが動かない時に疑うこと

ショートっぽい

  • ショートしていないか
  • VCAPとVddが繋がっていないか

    書き込めない

  • VREFに電圧は印加されているか
  • 電源ラインは荒れ狂ってないか
  • SWDIO/SWCLKは正しく接続されているか
  • マイコンの向きは正しいか(左下の小さい円が1番ピンのマーク)

    書き込めたけど動かない

  • クロック設定は正しいか
  • NRSTはHIGHになっているか
  • CubeMXでSequence configurationはしたか( Toolsタブから開いてDisable Auto Refresh……とEnable Auto Refresh……をポチポチ切り替える)

今日まで

卒研発表が終わった。 私の研究は来年度にも引き継がれるのでドキュメント作成は残っているし、中止になった学会もオンラインでオーラル発表を出来るらしいのでまだ完全に終わったわけではないけれど、学会予稿に始まり3月までに文章だけで殆ど500コミットとかになっていたので一息ついた感覚がある。 後は頼まれたソフトウェアを1つ書いて業務を1つやればいいので大分タスクが片付いてきた。それ以上にスケジュールが無くなるほうが速いのが悩みどころではある。

パラサイトを観てきた。TLの話題的にちょっとタイムリーだったかも。 後はSHIROBAKOとMID SUMMERを観たい。メイドインアビスは原作を知っているので最悪観れなくても良い。 SHIROBAKOは絶対観たい。23話ガチ泣き勢としてはね。

心配していた筑波大学の入学手続きも無事出来ていたようで、今日宿舎入居の書類が届いた。 周りが余りに宿舎を避けるのでマリッジブルーみたいになっていたけどなんだかんだで期待してきている。 来年のこの時期には宿舎から出るのを心待ちにしているかもしれないけど。

新年の抱負

やらねばならない

  • 確定申告
  • 卒業
  • 労働
  • CPU
  • STEP->GCode

やりたい

  • 積読消化
  • 筑波でのバイト探し
  • EDA
  • WM
  • キーボード
  • オムライス

これらについて

色々あって個人事業主になってしまったので確定申告する必要がある。 収入自体は余裕で控除の範囲なのでそこまで危険ではないけど。 今年度内のタスクが多いのがしんどい。もう一つのバイトを減らした上でCPUはちょっと手を抜いたほうが良さそう。もう抜けるギリギリまで抜いているけど。

ありがたい事に沢山の人から本を頂いて、自分でも秋冬は結構本を買ってしまったので積読がタワーになりつつある。引っ越す前にもう読まない本の処分もやりたい。 バイトは頑張って探したほうが良さそう。どうも時給1000円台での技術バイトも蔓延っているらしくちょっと怖い。

本気(マジ)のオムライスを目指す