現状の dot ファイルのたぐいをメモするついでに人に見せる形でまとめておこうと思う。
自分の思想として「フレームワークよりライブラリー」というのがあるので、プロシージャーの形で定型処理をまとめておいて実際の dot ファイルはプロシージャーを呼び出すようにしている。
Bash
Linux ではデフォルトのことが多い Bash を使っている。
リポジトリーをクローンしてきたところに各種 example を置いてあるので、それをコピーしてきて随時そのマシンに合わせて書き換える。
cd mv .profile .profile.back mv .bashrc .bashrc.back mv .bash_logout .bash_logout.back dot_files='path/to/this/repo' cp "$dot_files/bash/.bash_profile.example" .bash_profile cp "$dot_files/bash/.bashrc.example" .bashrc cp "$dot_files/bash/.bash_logout.example" .bash_logout # edit .bash_profile .bashrc .bash_logout
.bash_profile
.bash_profile はこんな感じ。
# dotfiles リポジトリーのディレクトリーを指定する dot_files=. # ここでプロシージャーを定義してあるライブラリーをロードする # shellcheck source=/dev/null source "$dot_files/sh/lib.sh" # shellcheck source=/dev/null source "$dot_files/bash/lib.bash" # ~/.bin とかを PATH に追加 add_local_bin # shellcheck source=/dev/null source "$HOME/.bashrc" # X 環境なら setup_sands # SSH エージェントを起動 # WSL2 の場合は Windows で起動してあるエージェントにつなぎに行くようにしてある(が、ちょっとバグってる # くわしくは https://kakkun61.hatenablog.com/entry/2022/06/28/WSL2_%E3%81%AE_SSH_Agent_%E7%9B%86%E6%A0%BD start_ssh_agent # start_ssh_agent_wsl # もろもろ設定のための環境変数の定義 setup_gpg setup_git_env setup_saml2aws
.bash_logout は SSH エージェントの後始末だけ。
.bashrc
.bashrc はこんな感じ。
# この辺は .bash_profile と一緒 dot_files=. # shellcheck source=/dev/null source "$dot_files/sh/lib.sh" # shellcheck source=/dev/null source "$dot_files/bash/lib.bash" # もろもろ設定 # 環境変数の定義したり eval したり source したり setup_nix setup_less setup_prompt "$dot_files" setup_dircolors setup_bashmarks "$dot_files" setup_fuck setup_bash_config setup_ls setup_shellcheck setup_direnv setup_git_completion "$dot_files"
使ってるツール
あんまり多くは使ってないが使ってるのは次のような感じ。
- fuck
- 「それはまちがいだからこう実行しなおしてね」というエラーのときに
fuck
と打てばよくなる
- 「それはまちがいだからこう実行しなおしてね」というエラーのときに
- direnv
- nix と連携してる
- nix
- バージョン違いの C ライブラリーとかインストールして管理できる
- shellcheck
- 一応シェルスクリプトのリントしてる
PowerShell
しごとでないときは Windows で PowerShell を使っている。
PowerShell には標準でパッケージマネージャーが付いてくるので外部ライブラリーを入れるのが簡単。
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingInvokeExpression', '', Justification = 'For the fuck')] param () # dotfiles リポジトリーのディレクトリーを指定する $dotFiles = '.' # 自前ライブラリーをインポート . $dotFiles\pwsh\lib.ps1 # 外部ライブラリーをインポート Import-Module Posh-Git Import-Module posh-sshell Import-Module PSBookmark Import-Module psake Import-Module ghcman Import-Module path-switcher Import-Module code-page Import-DotenvModule # SSH エージェントの起動 Start-SshAgent -Quiet # 環境変数の設定とかローカルの ps1 ファイルのインポートとか Initialize-Chocolatey Initialize-Python # the fuck Invoke-Expression "$(thefuck --alias)" # prompt Set-Item -Path Function:\prompt -Value (Get-Prompt) -Options ReadOnly # arduino . $dotFiles\lib\arduino-cli\completion.ps1
使ってるツール
- Posh-Git
- プロンプトに Git の情報を表示したり
- posh-sshell
- SSH エージェントの管理
- PSBookmark
- ディレクトリーにブックマーク付ける
- psake
- PowerShell 版の Make みたいな
- ghcman
- GHC の管理(自作)
- path-switcher
- PATH の管理用ユーティリティー(自作)
- code-page
NixOS
この年末年始に NixOS 機が1つできたのでそれは当然 /etc/nixos/configuration.nix で管理しているが、home-manager までは手が出ていない。