Skip to content

Instantly share code, notes, and snippets.

@kuuote
Created March 11, 2025 16:24
Show Gist options
  • Save kuuote/f5fe9fab19ff05a623b9ed84b04a182e to your computer and use it in GitHub Desktop.
Save kuuote/f5fe9fab19ff05a623b9ed84b04a182e to your computer and use it in GitHub Desktop.
  • 日報
  • GCの対象から今使ってるnixpkgsのderivation達を外したいので nix-env の使い方をひたすら調べていた
    • nix-env -qa を走らせると nix build と同じような方法で渡したファイルを評価、値そのものあるいは、値がAttrSetならその要素からderivationを集める
      • この際、要素がAttrSetでかつ recurseForDerivations = true であれば(この値は lib.recurseIntoAttrs で生やせる)このAttrSetも再帰的に辿ってderivationを集めてくれる
    • トップレベルに生えてるalias(emacsPackages辺りがそう)は recurseForDerivations を外してあるので、nixpkgs側で収集する際は改めて生やしているらしい
      • ここで使われている
      • Nixのビルドの中で nix-env 叩くの思い付いた時「俺天才だわ」と思ってたけど、nixpkgsの中で既に行われていたでござる
  • ついでに command-not-found が使っているDBのデータがどこから来ているのかも調べた
    • programs側を見るとチャンネルのデータの中の programs.sqlite というファイルを使っていることとチャンネルのリリースファイルが nixexprs.tar.xz であることが書かれている
    • ここで、チャンネルリリースのスクリプトが全部nixpkgs内にあると思い込んでひたすらgrepをかけまくっていた模様
      • nixexprs という文字列はあるんだよな
    • 諦めてGitHub側で programs.sqlite user:NixOS したらあっさり出てきた
  • 金欠太郎なのに千葉行きの予定を入れてしまった
  • チャンネルのリリース掘ればstore pathの一覧が出てくることが判明した
    • hydraにAPIが生えてるらしい
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment