- 今日は一日体調が悪かった。睡眠が不規則すぎる
- ランチパックはオーブンで焼くと美味い
- :%!xxx-fmtをいい感じにスクリプトでやるという記事を書いた
- Vimでフォーマットをいい感じにやる方法の紹介をした
- the engineer’s paradiseでゴミ箱の話をしていたらgtrashなるツールを作者に推されたので入れてみた
- ファイルシステムをちゃんと見てくれるのがtrash-cliしか無かったので代替欲しいとずっと思ってたのでわいわいしてる
- Nixのpipe-operatorsはいいぞみたいな話をしていた。Lispのlet*やスレッドマクロなどもそうだけど、ネストを減らせるのはありがたい
- fzfをいい感じにVimから利用したい
- →helixがnucleoというfzfと同じアルゴリズムで動くマッチングライブラリを公開している
- →wasmにしてdenopsから使えるようにできそう?
- →そういやどれくらいの実装コストで達成できるのか試してないな?
- みたいな流れでwasm生成できる環境を作ろうとしていた
- コーディングそっちのけでNixでRustコードをwasmにコンパイルする環境を組んでいた
- ドキュメントにはcrossSystem使えって書いてあるが、使おうとするとstdenvごとビルドし直そうとするので大量のビルドが走ってつらくてやめた
- fenix入れてみたけどでかいデータ降ってきたしこれ維持するのなんか嫌だとなった
- よく考えたらrustc-wasm32がrustcへのエイリアスになってるんだから何かハックしたらビルドできるんちゃうのん?と思った
nixos-rebuildの結果を利用してswitchとか行うツールを作った- suidを利用して特権で動くプログラムは初めて作ったけどいい経験になった
- 改めてプログラムの中でsetuidしないと特権伝播しないとかね
- suid無いNixOSでどうやってるんだろうと思ってたけど、wrapper作って起動時に展開してた
- 処理はこのへん
- 結局sudoersに書けばええやんとなったのでシェルスクリプトで書き直してsudoers書いた
- suidを利用して特権で動くプログラムは初めて作ったけどいい経験になった
- Nixの設定リポジトリにflake-parts突っ込んだ
- 単純な設定だとあんまり旨味無いけどついでにリファクタリングしてる
- これ書いててbulletいじるのがしんどいのでhydra導入して最適化してみた
- いい感じに機能している
- home-managerでNixOSかどうかを判定できることに気付いたので仕込んでみた
- NixOS moduleを使うとhome-manager側のmoduleの引数に
nixosConfigが含まれるので、これがあるかどうかを調べる- この際
nixosConfig ? nullのようにconfig自体にアクセスする手段を取るとconfigに影響するオプションを触る際にinfinite recursionで死ぬので、引数そのものに@argsを付けてargs ? "nixosConfig"のように取るとよい
- この際
- NixOS moduleを使うとhome-manager側のmoduleの引数に
- Nix Flakesの参照で<nixpkgs>を固定する方法という記事を書いた
- 何も意識しなくても
nix-コマンド群が使えるようになるので便利
- 何も意識しなくても
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| description = "latte PoC"; | |
| outputs = | |
| { | |
| nixpkgs, | |
| ... | |
| }: | |
| let | |
| inherit (nixpkgs) lib; |
- natsukiumさんから
nix replでソースファイルの位置を辿る方法を聞いて、どうやっているんだろうと思いながら調べていたら気付いたらnixpkgsのtop level mattributeを辿るdduソースを作っていた- 今の所Nixでソースファイルの位置を取得する方法は3つある
__curPosを参照すると__curPosの位置を指すAttrSetが取れる- なんとこれ文法規則レベルでやっている
builtins.unsafeGetAttrPosを叩くとAttrSetのattributeが定義された場所が取得できる- 返ってくるのはattributeの中身ではなくattributeそのものの場所なので、後付けで使うのには向いていない
- こちらは
stdenv.mkDerivationの中でmeta.positionの中身を埋めるのに使われている- ソースはここ
- 関数は宣言した時に位置を保存しているらしく、replに打ち込んだりtraceしたりすると位置が表示されるものの、文字列にしたりはできない
- 今の所Nixでソースファイルの位置を取得する方法は3つある