Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .chezmoidata.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
is_linux: {{ eq .chezmoi.os "linux" }}
is_darwin: {{ eq .chezmoi.os "darwin" }}
35 changes: 35 additions & 0 deletions .chezmoiignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{{- if eq .chezmoi.os "darwin" }}
# Linux??GUI?systemd??
etc/
private_dot_config/hypr/
private_dot_config/foot/
private_dot_config/gammastep/
private_dot_config/gtk-3.0/
private_dot_config/swaync/
private_dot_config/waybar/
private_dot_config/wofi/
private_dot_config/xdg-desktop-portal/
private_dot_config/private_fcitx5/
private_dot_config/cursor-flags.conf
private_dot_config/electron-flags.conf
private_dot_config/electron27-flags.conf
private_dot_config/executable_brave-browser.desktop

# Linux???????
dot_local/bin/executable_hypr_auto_perfmonitor.sh
dot_local/bin/executable_hypr_perfmodeswitch.sh
dot_local/bin/executable_fix-brave-pwa.sh
dot_local/bin/executable_integrate-appimage.sh
dot_local/bin/executable_uninstall-appimage.sh
dot_local/bin/executable_swaync_launcher.sh
dot_local/bin/executable_unified_launcher.sh
dot_local/bin/lib_hypr_perfmode.sh
dot_local/bin/setup_sleep_backup.sh
dot_local/bin/executable_sleep_backup.sh
dot_local/share/applications/
dot_local/share/dark-mode.d/
dot_local/share/light-mode.d/

# Linux??????????
pkglist.txt
{{- end }}
36 changes: 33 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# dotfiles

個人的な設定ファイルを[chezmoi](https://www.chezmoi.io/)で管理するリポジトリです。
主にEndeavourOS(Archベース)向けに最適化されています
**Linux(EndeavourOS/Arch)とmacOSの両環境に対応**しています

## 主な設定

### Linux(EndeavourOS/Arch)
- ディストリビューション: EndeavourOS / Arch Linux
- シェル: Zsh + Starship
- ウィンドウマネージャ: Hyprland
Expand All @@ -15,9 +16,16 @@
- 開発ツール: Docker, lazygit, lazydocker, atuin
- その他: git, SSH, waybar など

### macOS
- シェル: Zsh + Starship
- パッケージマネージャ: Homebrew
- エディタ: Neovim
- 開発ツール: mise, gh, ghq, fzf, atuin
- 1Password SSH Agent対応

## 使い方

### インストール
### インストール(Linux)

```bash
# chezmoiのインストール
Expand All @@ -27,6 +35,16 @@ paru -S chezmoi
chezmoi init --apply nagamine-git
```

### インストール(macOS)

```bash
# chezmoiのインストール(Homebrewがない場合は先にインストール)
brew install chezmoi

# リポジトリの取得と適用
chezmoi init --apply nagamine-git
```

### 更新

```bash
Expand All @@ -36,7 +54,19 @@ chezmoi apply -v

### パッケージ

必要なパッケージは `pkglist.txt` に記載されており、`run_onchange_setup.sh` 実行時に自動的にインストールされます。
**Linux**: 必要なパッケージは `pkglist.txt` に記載されており、`run_onchange_setup.sh` 実行時に自動的にインストールされます。

**macOS**: Homebrewで基本パッケージが自動インストールされます(git, neovim, tmux, fzf, ripgrep, gh等)。

## OS別の動作

このdotfilesはchezmoiのテンプレート機能を使用してOS別に動作を変更します:

- **Linux専用**: Hyprland設定、Waybar、fcitx5、keyd等のLinux GUI/システム設定
- **macOS専用**: Homebrew管理、macOS用PATH設定、1Password統合
- **共通**: Zsh設定、tmux設定、Neovim設定、開発ツール(mise, starship, sheldon等)

macOS環境では`.chezmoiignore`によりLinux専用ファイルが自動除外されます。

### tuigreet
/etc/greetd/config.toml
Expand Down
193 changes: 120 additions & 73 deletions dot_zshrc → dot_zshrc.tmpl
Original file line number Diff line number Diff line change
@@ -1,67 +1,57 @@
# Created by newuser for 5.9

# 基本的な環境変数
# ????????
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8
export EDITOR=nvim

{{- if eq .chezmoi.os "darwin" }}
# ============================================================
# macOS????
# ============================================================

# PATHの設定 - 一箇所にまとめてシンプル化
export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$HOME/.local/share/nvim-linux-x86_64/bin:$PATH"
# Homebrew????
if [[ $(uname -m) == "arm64" ]]; then
eval "$(/opt/homebrew/bin/brew shellenv)"
else
eval "$(/usr/local/bin/brew shellenv)"
fi

# PATH???
export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH"
export PATH="$PATH:$HOME/.local/share/mise/installs/python/*/bin"
export GOPATH="$HOME/go"
export PATH="$GOPATH/bin:$PATH"
export PATH="$PATH:/snap/bin"
export SSH_AUTH_SOCK="$HOME/.1password/agent.sock"
GPG_TTY=`tty`
export GPG_TTY
# export MISE_VERBOSE=1

# 補完
autoload -Uz compinit
compinit -i
# 1Password SSH Agent
export SSH_AUTH_SOCK="$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"

# 補完の設定
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # 大文字小文字を区別しない
zstyle ':completion:*' menu select # 補完メニューを有効化
zstyle ':completion:*' verbose yes # 補完の詳細を表示
# ?????????????macOS???pbcopy???
alias pbcopy='pbcopy'
alias pbpaste='pbpaste'

# プラグイン管理
eval "$(starship init zsh)"
# 通常のシェル: フルアクティベート
eval "$(mise activate zsh)"
eval "$(sheldon source)"
eval "$(atuin init zsh)"
{{- else if eq .chezmoi.os "linux" }}
# ============================================================
# Linux????
# ============================================================

# Starship
unset PROMPT_EOL_MARK

# コマンド履歴
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt hist_expire_dups_first
setopt hist_verify
setopt share_history
setopt extended_history

# historyコマンドで時刻を表示
alias history='fc -il 1'
# PATH??? - ?????????????
export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$HOME/.local/share/nvim-linux-x86_64/bin:$PATH"
export PATH="$PATH:$HOME/.local/share/mise/installs/python/*/bin"
export GOPATH="$HOME/go"
export PATH="$GOPATH/bin:$PATH"
export PATH="$PATH:/snap/bin"

# alias
alias vim='nvim'
alias svim='vim ~/.note.gpg'
# 1Password SSH Agent
export SSH_AUTH_SOCK="$HOME/.1password/agent.sock"

# ghqでクローンしたリポジトリへ簡単に移動するための関数
cgh() {
local dir
dir=$(ghq list | fzf --no-multi --exit-0 --query="$*" --preview="ls -FA1 $(ghq root)/{}")
[ -n "$dir" ] && cd "$(ghq root)/$dir" || return
}
# Wayland???????
alias pbcopy='wl-copy'
alias pbpaste='wl-paste'

# Cursorの実行
# Cursor???
code() {
# 既存のCursorプロセスをチェック
# ???Cursor?????????
if pgrep -f "cursor.*--no-sandbox" > /dev/null; then
echo "Cursor is already running. Opening new window..."
command /usr/bin/cursor "$@" --reuse-window
Expand All @@ -72,52 +62,42 @@ code() {
fi
}

# ls系コマンドの統合
alias ls='eza --icons --color=always'
alias ll='ls -l'
alias la='ls -la'
alias l='ls -l'
alias tree='ls --tree --git-ignore'
alias lmt='eza --tree --git-ignore --icons=never --classify'
alias supabase='npx supabase'
alias cursor='code'

# Distroboxコンテナ準備の共通処理
# Distrobox???????????
_ensure_kali_running() {
# Dockerサービスが起動しているか確認
# Docker??????????????
if ! systemctl is-active --quiet docker; then
echo " Starting Docker service..."
echo "? Starting Docker service..."
sudo systemctl start docker
fi

# Kaliコンテナが存在するか確認
# Kali????????????
if ! distrobox list | grep -q "^kali"; then
echo " Creating new Kali container (kali)..."
echo "? Creating new Kali container (kali)..."
distrobox create --name kali --image docker.io/kalilinux/kali-rolling:latest --home ~/distrobox/kali --additional-flags "--privileged"
fi

return 0
}

# Kaliコンテナ内でコマンドを実行するヘルパー関数
# Kali?????????????????????
_distrobox_kali_exec() {
_ensure_kali_running || return 1

# distroboxのenterコマンドでbashコマンドを実行
# distrobox?enter?????bash???????
distrobox enter kali -- bash -c "$@"
return $?
}

# Torを有効にしてKaliコンテナに入る(proxychains4使用)
# Tor??????Kali????????proxychains4???
k() {
_ensure_kali_running || return 1

echo " Entering Kali container with Tor (proxychains4)..."
echo "? Entering Kali container with Tor (proxychains4)..."
distrobox enter kali -- bash -c '
# systemd不要: ユーザーモードでTor起動(未起動なら)
# systemd??: ????????Tor?????????
if ! pgrep -x tor >/dev/null 2>&1; then
if ! command -v tor >/dev/null 2>&1; then
echo "[ERROR] tor が見つかりません。コンテナ内で: sudo apt-get update && sudo apt-get install -y tor proxychains4" >&2
echo "[ERROR] tor ???????????????: sudo apt-get update && sudo apt-get install -y tor proxychains4" >&2
exit 1
fi
mkdir -p "$HOME/.tor"
Expand All @@ -130,27 +110,94 @@ Sandbox 0
EOF
tor -f "$HOME/.tor/torrc-k" --RunAsDaemon 1 >/dev/null 2>&1 || { echo "[ERROR] Tor failed to start; opening normal shell (no proxy)"; exec /bin/bash --login; }
fi
# 以降のシェルを proxychains4 でラップ
# ??????? proxychains4 ????
exec proxychains4 -q /bin/bash --login
'
}

# 通常ネットワークモードでKaliコンテナに入る
# ????????????Kali???????
k_pub() {
_ensure_kali_running || return 1

echo " Entering Kali container with normal network..."
echo "? Entering Kali container with normal network..."
distrobox enter kali -- bash -c '
exec /bin/bash --login
'
}

alias pbcopy='wl-copy'
alias b='~/.local/bin/biz_start.sh '
source /home/tsuyoshi/.config/op/plugins.sh

{{- end }}

# ============================================================
# ?????OS???
# ============================================================

GPG_TTY=`tty`
export GPG_TTY
# export MISE_VERBOSE=1

# ??
autoload -Uz compinit
compinit -i

# ?????
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # ????????????
zstyle ':completion:*' menu select # ??????????
zstyle ':completion:*' verbose yes # ????????

# ???????
eval "$(starship init zsh)"
# ??????: ?????????
eval "$(mise activate zsh)"
eval "$(sheldon source)"
eval "$(atuin init zsh)"

# Starship
unset PROMPT_EOL_MARK

# ??????
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt hist_expire_dups_first
setopt hist_verify
setopt share_history
setopt extended_history

# history??????????
alias history='fc -il 1'

# alias
alias vim='nvim'
alias svim='vim ~/.note.gpg'

# ghq?????????????????????????
cgh() {
local dir
dir=$(ghq list | fzf --no-multi --exit-0 --query="$*" --preview="ls -FA1 $(ghq root)/{}")
[ -n "$dir" ] && cd "$(ghq root)/$dir" || return
}

# ls????????
alias ls='eza --icons --color=always'
alias ll='ls -l'
alias la='ls -la'
alias l='ls -l'
alias tree='ls --tree --git-ignore'
alias lmt='eza --tree --git-ignore --icons=never --classify'
alias supabase='npx supabase'
alias cursor='code'

{{- if eq .chezmoi.os "linux" }}
# 1Password CLI plugin?Linux?????
if [ -f /home/{{ .chezmoi.username }}/.config/op/plugins.sh ]; then
source /home/{{ .chezmoi.username }}/.config/op/plugins.sh
fi
{{- end }}

# pnpm
export PNPM_HOME="/home/tsuyoshi/.local/share/pnpm"
export PNPM_HOME="{{ .chezmoi.homeDir }}/.local/share/pnpm"
case ":$PATH:" in
*":$PNPM_HOME:"*) ;;
*) export PATH="$PNPM_HOME:$PATH" ;;
Expand Down
Loading