Skip to content

Instantly share code, notes, and snippets.

View kuuote's full-sized avatar
🙃
I may be slow to respond.

kuuote

🙃
I may be slow to respond.
View GitHub Profile

日報

  • skkeletonservがディスクの肥やしになっていたので雑に公開した
  • 車輪の再発明がてら、flake-compatもどきを作っていたけど、結構学びがあった
    • outputs = self // (flakeNix.outputs (inputs // { self = outputs; })); みたいな書き方をすると、outputsの呼び出しに渡されるselfが循環するので面白い
      • ここだけは書き方が分からなくて答えを見てしまった
  • ddu.vimの設定を詰めてた
    • waitのかけかたミスってて、中途半端に設定が適用された状態で立ち上がっていたので適切にかけるようにした

日報

  • nix-prefetch-jsrなるものを作った
    • @std/[email protected] みたいなパッケージ指定子を与えるとdeno使ってfetchしてキャッシュした上でNix式を生成してくれる
  • nix-prefetch-jsrを元にdeno.lockからvendorディレクトリを生成するNix式を吐くプログラムを書いた
    • 今の所jsrで完結するプログラムにしか適用できないけど、それなりに複雑なプログラムも動いた
  • 将来的にはdenopsプラグインをパッキングしたい

日報

Neovimの適当overrideがtree-sitterの更新によりぶっ壊れてあれこれしてる内に、 USE_BUNDLED によるビルドをしたら安定するんちゃうかということに気付いたため、Nix内で完結できないか試していた。
幸い cmake.deps/deps.txt にそのまま使える形で依存の記述があるので、Nixで使える形に変形してビルドが通ることを確認した。
ビルドにより時間がかかるようになったが、安心してアップデートをかけられるようになった。


公開したらnatsukiumさんよりdepsのビルドだけ別derivationにした方がいいとの指摘を頂いたので、そのように手直ししていた。
builtins.path を適用して、depsのビルドに必要なファイルだけ分離したらいいのだが、ここで小一時間バージョン上げると必ずリビルドが走るという問題にハマっていた。

@kuuote
kuuote / neovim.nix
Last active January 28, 2025 10:49
/cmake.deps/deps.txt を元にbundle取得することで、NeovimのソースツリーをそのままNixでビルドするやつ。NYSLでどうぞ
{
pkgs ? import <nixpkgs> { },
neovim ? import ./neovim-src.nix { inherit pkgs; },
}:
let
lib = pkgs.lib;
deps = lib.pipe "${neovim}/cmake.deps/deps.txt" [
builtins.readFile
(builtins.split "[\n]")
(builtins.filter builtins.isString)
@kuuote
kuuote / default.nix
Last active January 27, 2025 15:36
nix run https://gist.github.com/kuuote/45eb477611a960fecf561602b3769dd1/archive/eef9b05768805f27b90b94768d196330bb537ed4.zip で実行できます。C-x tでチュートリアルが走ります。
{
pkgs ? import <nixpkgs> { },
}:
let
emacs = pkgs.emacsPackages.withPackages (epkgs: [ epkgs.ddskk ]);
init-directory = pkgs.linkFarm ".emacs.d" {
"init.el" = ./init.el;
"skk.el" = pkgs.substituteAll {
src = ./skk.el;

日報

  • lexima.vim導入して括弧抜けのやつ設定してみた
  • 自分でプラグインマネージャを書いてみて気付いたけど、Fuzzy Finderでプラグインディレクトリにアクセスするやつに結構依存しているらしい
  • Melpaからddskk突っ込むとskk-setup.elが無いからskk-isearchが使えない問題をどうにかしたref
  • fzfをMRU等で使う際には --scheme history を指定するといいらしい
  • 八十八ヶ所巡礼を垂れ流してたら親がハマりかけてて驚いてる
  • Nixを使うと、dein.vimがやってるような具合で設定を切り出したりして繋ぎ合わせたり、プラグインディレクトリをマージしたりといったキャッシュ作成をソースからいい感じに行えるので楽しい

日報

  • VPSに突っ込んでたArch LinuxのNixパッケージがぶっ壊れてるので公式インストーラーで放り込むことにした
    • 過程で色々壊れて何度か構築かけ直したのでArch Linux難しいなという気持ちになった(NixOSが運用する分には楽すぎるだけである)
  • Nixのfetchgit完全に理解した
    • builtinsの方はめんどいので(ストアの外にキャッシュ作られる)とりあえずpkgsの方使えばよさげ
    • revision hash指定してfetchできるの知らなかった
  • Emacsのxrefのジャンプした後に光るやつの実装を探してた
    • とりあえず xref--show-pos-in-buf から呼ばれる xref-after-jump-hook に突っ込まれてるのを確認した
    • pulse.el というスクリプトに実装がある。細切れのタイマーを使ってぬるっとアニメーションさせてるらしい
  • NixでVimのパッケージマネージャを作ろう計画始めた

日報

  • Emacsのsh-modeで /usr/bin/env -S bash -u みたいなパターンが使えない件を掘っていたら auto-mode-interpreter-regexp に辿り付いた
    • 地獄みたいな正規表現が見える
    • /usr/bin/env bash は認識するのでこれがいい気がする
  • Magitのrebaseの味を覚えてしまったのでVimでも似たようなことをやりたくなってきた
  • ゴリラ.vimの最後の方だけ見ていたけど、同じ物を視聴しながらみんなでわいわい言うのは楽しいな
  • yt-dlpを動かすためにサクッと shell.nix を書いた。
    {
      pkgs ? import <nixpkgs> { },
        

日報

  • Elispで作るSECDマシンに着手してる
    • これとかこれとかこれとかこれとか読んでる
      • テキストエディタに思考を焼かれて以来ご無沙汰だったので、VMの実装を見るとテンション上がる心が残っていてよかった
    • 実装するLispはオリジナル仕様にするつもり。どうせElispのプリミティブしか使えないので
    • とりあえず定数だけ実装した
      • こういうのは小さくやっていくのがいい
    • Zennに記事も残そうと思っている
      • orgで書いてビルドしようと思っている
  • トイレの水が詰まって酷い目にあった。ラバーカップで優勝した

日報

  • Emacs
    • daemonで起動した際にorg-modeとmagitをpreloadすることにした
      • 気になるくらい読み込みが遅いのと、運用上頻繁に使ってるのでこうした
      • (daemonp) でdaemonかどうかの判断が可能
    • ddskkを起動しやすくした
      • 変換と無変換で有効無効を切り替えられるようにした
  • Nix
    • タスクを雑にシェルスクリプト作って実現していたのを1つのorgファイルにまとめた
      • org-babel-tangleを使って出力する