Rust製ツールまみれのdotfilesを始めた
dotfilesを始めました.いろいろ調べるきっかけになったので,紹介がてらメモを残します.
dotfiles
「まみれの」とか言いましたが,かなりすっきりしている自負ありです.全ては過去に記事を残した先人と,今も開発を続けるOSS Contributorsのおかげですね...
「そも,dotfilesとはなんぞや」という方はこちらへ
今回作ったdotfilesではRust製ツールをメインに採用してみました.
すごかったです.シンプルかつ強力な感じに...
OSS Contributorsの方々に感謝感激する日々です.
- Sheldon: Rust製のshell plugin manager
- rtx-cli: Rust製のruntime manager
- Starship: Rust製のcross-shell prompt
これらのツールが気になるよ!という方はこのセクションまで飛んでください
機能紹介
Autosync
cf., dotfiles の更新忘れを防いで継続的に管理していく
上の記事にinspireされています.
今回はlogin shellでのみ自動でpullを行い,その他のshellが起動したときはlocalとremoteの間に差分が無いか確認するようにしました.表示は以下のような感じです.
毎回pullすればええやんと思うかもしれないんですが,pullって結構時間かかるんですよね...Zellijでpane分割を進める時に毎回数瞬待たされたりしたらイライラです.
Continuous Integration
Github ActionsのHostってMacOSもあるんですね.
とりあえずはUbuntu20.04とMacOSでinstall.sh
が成功するかをGitHub Actionsで確認しています.
Installer
作っている時にかなりシェルの復習になりました.
install.sh
は基本的にrustupなどのインストール,sheldonのインストール,starshipのインストール,font (UDEV Gothic)のインストール,そしてdotfilesのシンボリックリンクを張る操作を行います.
また,以下のoptionを受けつけます.
-
--link | -l
: シンボリックリンクを張る操作のみを行います. -
--extra | -e
:exa
など各種Rust製基本ツールやrtx-cliなどをインストールします.
導入したメインツール
Sheldon
作ってるときは気づいていなかったんですが,日本語記事があったので貼り付けておきます.
自分がconfigを書くうえでかなり参考にしたのはこちらです
えー,説明は上の記事にぶん投げることにしました(あ゛?)
ここでは,Sheldonで導入した時に何が起こるかだけ紹介します.
.zshrc
が一行になります
1. 一行に、なります。
eval "$(sheldon source)"
ひゃあ。(まぁ私の場合は前述のAutosyncを達成するために多少記述しているんですが...)
「えっ,すごい!」と思った方は, 速やかに導入しなさい. 導入を急ぎましょう.
2. じゃあどこで管理するの?
plugins.toml
というファイルに書きます..zshrc
にぐちゃぐちゃ追記していくよりも,見た目が遥かに,めちゃくちゃ,めちゃいいです.
一部を紹介↓
:
[plugins.zsh-completions]
github = 'zsh-users/zsh-completions'
apply = ['defer']
[plugins.zsh-syntax-highlighting]
github = 'zsh-users/zsh-syntax-highlighting'
apply = ['defer']
:
[plugins.rtx]
inline = 'eval "$(rtx activate zsh)"'
[plugins.starship]
inline = 'eval "$(starship init zsh)"'
rtx-cli
asdf
の高速なRust版です.ちなみに私はanyenv
触ったことなしです.
日本語でかなり網羅的に紹介してくれている記事がありました.感謝感激です.
他にも.
じゃ,例によって説明は上の記事に(殴
ご,ごめんなさいでした...
自分はもともとpyenv
とnvm
を使ってたんですが,とりあえず辞めました.
一括でrtx-cli
でいいです.
簡単にcommand例(備忘録)を並べておきます
- インストール
rtx install node@lts rtx install python@3.8.10
- アンインストール
rtx uninstall node@lts
- グローバルのバージョン固定
rtx global python@3.8.10
- Current dir.以下のバージョン固定
rtx local python@3.8.10
- インストール済みの一覧
rtx ls
- 利用可能なバージョンの一覧
rtx ls-remote node
- rtxがサポートするpluginの一覧因みにめちゃくちゃ多い↓
rtx plugins ls -a
669!?
なお,directoryごとのversion管理は.tool-versions
に書き込まれて管理されます.
Starship
結び
Rustコミュニティすごい!
OSSすごい!
記事を書き残す先人みんなえらすぎ!
私のdotfilesからでも,大量のconfigが設定された大規模dotfilesからでもなんでもいいです!
とにかくforkしてカスタマイズしてあなた好みのdotfilesを作ろう!
そしてGitHubでもどこでもいいから公開して知見を共有してくれ~~~
それでは,
えぃt
(↑exitを打ち間違えたんですが,なんかいいなと思った(!?)のでそのままにしておきます)
Discussion