🚀

Rust製ツールまみれのdotfilesを始めた

2023/06/27に公開

dotfilesを始めました.いろいろ調べるきっかけになったので,紹介がてらメモを残します.

repo_fig

dotfiles

「まみれの」とか言いましたが,かなりすっきりしている自負ありです.全ては過去に記事を残した先人と,今も開発を続けるOSS Contributorsのおかげですね...

「そも,dotfilesとはなんぞや」という方はこちらへ

今回作ったdotfilesではRust製ツールをメインに採用してみました.
すごかったです.シンプルかつ強力な感じに...
top

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の間に差分が無いか確認するようにしました.表示は以下のような感じです.
success
failed

毎回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で導入した時に何が起こるかだけ紹介します.

1. .zshrcが一行になります

一行に、なります。

.zshrc
eval "$(sheldon source)"

ひゃあ。(まぁ私の場合は前述のAutosyncを達成するために多少記述しているんですが...)

「えっ,すごい!」と思った方は, 速やかに導入しなさい. 導入を急ぎましょう.

2. じゃあどこで管理するの?

plugins.tomlというファイルに書きます..zshrcにぐちゃぐちゃ追記していくよりも,見た目が遥かに,めちゃくちゃ,めちゃいいです.

一部を紹介↓

plugins.toml
:

[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触ったことなしです.
日本語でかなり網羅的に紹介してくれている記事がありました.感謝感激です.

他にも.



じゃ,例によって説明は上の記事に(殴






ご,ごめんなさいでした...

自分はもともとpyenvnvmを使ってたんですが,とりあえず辞めました.
一括でrtx-cliでいいです.

簡単にcommand例(備忘録)を並べておきます

  1. インストール
    rtx install node@lts
    rtx install python@3.8.10
    
  2. アンインストール
    rtx uninstall node@lts
    
  3. グローバルのバージョン固定
    rtx global python@3.8.10
    
  4. Current dir.以下のバージョン固定
    rtx local python@3.8.10
    
  5. インストール済みの一覧
    rtx ls
    
  6. 利用可能なバージョンの一覧
    rtx ls-remote node
    
  7. rtxがサポートするpluginの一覧
    rtx plugins ls -a
    
    因みにめちゃくちゃ多い↓
    rtx plugins
    669!?

なお,directoryごとのversion管理は.tool-versionsに書き込まれて管理されます.

Starship

きれい!!!
説明の余地なし!
導入待ったなし!
starship_screen
https://starship.rs/demo.webm

結び

Rustコミュニティすごい!
OSSすごい!
記事を書き残す先人みんなえらすぎ!

私のdotfilesからでも,大量のconfigが設定された大規模dotfilesからでもなんでもいいです!
とにかくforkしてカスタマイズしてあなた好みのdotfilesを作ろう!
そしてGitHubでもどこでもいいから公開して知見を共有してくれ~~~

それでは,
えぃt

(↑exitを打ち間違えたんですが,なんかいいなと思った(!?)のでそのままにしておきます)

GitHubで編集を提案

Discussion