Kişisel CachyOS / Arch Linux, KDE Plasma & Niri/MangoWM masaüstü yapılandırmalarım, donanım optimizasyonlarım ve geliştirme ortamım.
Tüm sistem GNU Stow ile modüler paketler halinde yönetilmekte ve yenilenen JaKooLit tarzı interaktif install.sh betiği ile yeni sistem kurulumları güvenli ve seçici biçimde otomatikleştirilmektedir.
- 🚀 Hızlı Kurulum
- 🧩 Modüler Kurulum Seçenekleri
- 📦 Modüler Paket Yapısı (packages/)
- 📂 Dotfiles Dizin Yapısı & GNU Stow
- 🔐 Gizlilik & Manuel Yapılacaklar (Secrets)
- 🛠️ Donanım & Sistem Betikleri
- 🏗️ Yeni Paket Ekleme Rehberi
Yeni formatlanmış bir sisteme geçerken:
-
Temel Paketleri Kur:
# Arch / CachyOS: sudo pacman -Syu --needed git base-devel # Fedora: sudo dnf install -y git @development-tools # Ubuntu / Debian: sudo apt update && sudo apt install -y git build-essential
-
Repoyu Klonla:
git clone https://github.com/m24ih/dotfiles.git ~/Projects/dotfiles -
Otomatik Kurulumu Başlat:
cd ~/Projects/dotfiles chmod +x install.sh ./install.sh
Tip
JaKooLit Tarzı İnteraktif Sihirbaz: ./install.sh varsayılan olarak kullanıcı dostu, kategorize edilmiş interaktif bir sihirbaz başlatır. Her bileşen için akılcı varsayılanlarla [Y/n] veya [y/N] seçimi yapabilirsiniz. Tüm sorular tamamlandığında seçilen paket dosyaları, sembolik bağlar (stow) ve yapılandırma betikleri formatlı bir özet kutusunda gösterilerek onayınız istenir.
Note
Güvenli Simülasyon Modu (--dry-run): Sisteme herhangi bir paket yüklemeden veya dosya değiştirmeden önce planlanan tüm adımları güvenle simüle edebilirsiniz:
# İnteraktif seçimlerle simülasyon:
./install.sh --dry-run
# Varsayılan bileşenlerle simülasyon:
./install.sh --dry-run --defaultinstall.sh betiği hem tam interaktif bir sihirbaz olarak hem de komut satırı bayrakları ve modül argümanlarıyla tam otomatik olarak çalıştırılabilir:
# 1. Varsayılan İnteraktif Sihirbaz (JaKooLit tarzı soru akışı)
./install.sh
# 2. Güvenli Simülasyon Modu (Hiçbir sistem değişikliği yapmaz)
./install.sh --dry-run
# 3. Hızlı Varsayılan Kurulum (Soru sormadan 13 varsayılan [Y] bileşeni kurar)
./install.sh --default
# 4. Tam Kurulum (Soru sormadan tüm 22 bileşeni kurar)
./install.sh --all
# 5. Seçici Modül Kurulumu (Yalnızca belirtilen modülleri kurar)
./install.sh niri fish ghostty
# 6. Seçici Modül Simülasyonu
./install.sh --dry-run niri mango
# 7. Yardım Ekranı ve Kullanım Bilgisi
./install.sh --help| Bayrak | Kısa | Açıklama |
|---|---|---|
--dry-run |
-n |
Simülasyon Modu: Hiçbir paket kurmaz, dosya bağlamaz veya betik çalıştırmaz; 4 fazlı yürütme planını detaylı olarak ekrana yazdırır. |
--default |
-d |
Varsayılan Mod: Soru sormadan onaylanan 13 varsayılan modülü (ghostty, fish, zsh, nvim, browser, social, dev, productivity, media, networking, services, fonts, base_cli) doğrudan kurar. |
--all |
-a |
Tam Mod: Soru sormadan sistemdeki tüm 22 modülü eksiksiz olarak kurar. |
--help |
-h |
Yardım: Kullanım yönergelerini, tüm bayrakları ve desteklenen modül listesini yazdırır. |
<modül...> |
- | Pozisyonel Modül Argümanları: Sihirbazı atlayarak yalnızca argüman olarak verilen modülleri kurar (--dry-run ile birleştirilebilir). |
Kurulum motoru 5 ana kategoride toplam 22 modül destekler:
| Kategori | Modül | Varsayılan | Açıklama | Paket Listesi | Stow Paketi |
|---|---|---|---|---|---|
| Masaüstü & Pencere Yöneticileri | niri |
[y/N] |
Niri kaydırmalı (scrollable-tiling) Wayland compositor | packages/niri.txt |
niri |
mango |
[y/N] |
MangoWM hafif ve akıcı Wayland pencere yöneticisi | packages/mango.txt |
mango |
|
| Terminal Emülatörleri | ghostty |
[Y/n] |
Ghostty modern GPU hızlandırmalı terminal | packages/ghostty.txt |
ghostty |
kitty |
[y/N] |
Kitty GPU hızlandırmalı terminal emülatörü | packages/kitty.txt |
kitty |
|
| Kabuk, Editör & CLI | fish |
[Y/n] |
Fish kabuğu ve Starship çapraz komut istemi | packages/fish.txt |
fish, starship |
zsh |
[Y/n] |
Zsh kabuğu ve Oh My Zsh geliştirme ortamı | packages/zsh.txt |
zsh |
|
nvim |
[Y/n] |
Neovim modern metin editörü (Lazy.nvim ekosistemi) | packages/nvim.txt |
nvim |
|
base_cli |
[Y/n] |
Temel modern CLI araçları (bat, zoxide, btop, fastfetch vb.) |
packages/base_cli.txt |
btop, fastfetch, user-dirs |
|
| Uygulamalar & Üretkenlik | browser |
[Y/n] |
Vivaldi web tarayıcısı ve ortam iyileştirmeleri | packages/browser.txt |
vivaldi |
social |
[Y/n] |
İletişim araçları (Vesktop, Telegram, Signal, Teams) | packages/social.txt |
- | |
dev |
[Y/n] |
Geliştirici ortamı (VS Code, Docker, Node.js & Antigravity CLI) | packages/dev.txt |
antigravity |
|
productivity |
[Y/n] |
Üretkenlik & parola yönetimi (Obsidian, Proton Pass, KeePassXC) | packages/productivity.txt |
- | |
media |
[Y/n] |
Medya & indirme araçları (Haruna, OBS Studio, qBittorrent, Kdenlive) | packages/media.txt |
- | |
networking |
[Y/n] |
Ağ & VPN araçları (Tailscale, Cloudflare WARP, Syncthing, RustDesk) | packages/networking.txt |
ssh |
|
sunshine |
[y/N] |
Sunshine GameStream oyun ve ekran yayını sunucusu | packages/sunshine.txt |
sunshine, krfb |
|
flatpak |
[y/N] |
Flatpak paketleri kurulumu | packages/flatpak.txt |
- | |
| Donanım, Sistem & Fontlar | hardware |
[y/N] |
TLP güç yönetimi, dinamik pil tasarrufu ve UFW güvenlik duvarı | packages/hardware.txt |
power-management |
keychron |
[y/N] |
Keychron mekanik klavye Bluetooth & F-tuş optimizasyonları | - | - | |
fkeys |
[y/N] |
Apple klavye Fn/F-tuş davranış modu (F1-F12 standart düzen) | - | - | |
iwd |
[y/N] |
NetworkManager için iwd Wi-Fi backend geçişi (düşük jitter) | - | - | |
services |
[Y/n] |
Dağıtıma özel systemd sistem ve kullanıcı servisleri | - | systemd |
|
fonts |
[Y/n] |
JetBrains Mono Nerd Font ve sistem font önbelleği | - | - |
Note
Temel sistem paketlerini barındıran packages/base.txt (git, base-devel, stow, sudo, curl vb.), modül seçiminden bağımsız olarak her kurulum işleminde zorunlu temel katman olarak otomatik dahil edilir.
Tip
Etkileşimli Varsayılan Kabuk Seçici (prompt_default_shell): Kurulum sihirbazı sırasında Kabuk & Editör kategorisinin ardından varsayılan oturum kabuğu tercihi (fish, zsh, bash veya mevcut olanı koruma) sorulur. Seçilen kabuk kurulup doğrulandıktan sonra chsh -s ile otomatik olarak varsayılan oturum kabuğu olarak atanır ve gerekirse /etc/shells dosyasına eklenir.
Eski sistemdeki 1660 satırlık hantal, bakım zorluğu yaratan ve alt kütüphane bağımlılıklarıyla şişmiş monolitik packages.txt dosyası tamamen kaldırılarak yerine modüler ve temiz packages/*.txt dizin mimarisine geçilmiştir. Detaylı mimari açıklamalar ve paket ekleme kuralları için packages/README.md kılavuzunu inceleyebilirsiniz.
- Bağımlılık Temizliği: Dağıtım paket yöneticilerinin (
pacman/yay) dinamik olarak çözebildiği yüzlerce ikincil kütüphane velib*bağımlılığı listelerden temizlenmiş, yalnızca kullanıcı odaklı birincil uygulamalar tutulmuştur. - Seçici ve Esnek Kurulum: Tüm yazılımları zorunlu olarak kurmak yerine kullanıcı sadece ihtiyaç duyduğu kategorileri (örneğin sadece
niriveyadev) seçebilir. - Toplu ve Optimize Yürütme:
install.sh, seçilen tüm modüllerin.txtdosyalarını otomatik olarak birleştirir (sort -u) ve tek seferdeyayçağrısı yaparak paketleri mükerrer işlem yapmadan kurar.
| Paket Dosyası | Temsil Ettiği Kategori / Alan | Başlıca / Örnek Paketler |
|---|---|---|
packages/base.txt |
Temel Sistem Paketleri (Zorunlu temel katman) | git, base-devel, stow, which, curl, wget, sudo, xdg-user-dirs |
packages/base_cli.txt |
Modern CLI & Terminal Araçları | bat, zoxide, btop, fastfetch, duf, ripgrep, jq, topgrade, 7zip, eza, fzf, fd |
packages/browser.txt |
Web Tarayıcı | vivaldi, vivaldi-ffmpeg-codecs |
packages/dev.txt |
Geliştirici & Konteyner Ortamı | code, docker, docker-compose, lazydocker, dbeaver, nodejs, npm |
packages/fish.txt |
Fish Kabuğu & Eklentiler | fish, fisher, starship |
packages/ghostty.txt |
Ghostty Terminal Emülatörü | ghostty |
packages/hardware.txt |
Donanım & Güç Yönetimi | tlp, tlp-pd, tlp-rdw, tlpui, ufw |
packages/kitty.txt |
Kitty Terminal Emülatörü | kitty |
packages/mango.txt |
MangoWM Pencere Yöneticisi | mangowm, wlr-randr |
packages/media.txt |
Medya, Kayıt & İndirme | haruna, obs-studio, kdenlive, qbittorrent, freedownloadmanager |
packages/networking.txt |
Ağ, VPN & Uzak Erişim | tailscale, cloudflare-warp-bin, syncthing, rclone, rustdesk-bin |
packages/niri.txt |
Niri Scrollable Compositor | niri, fuzzel, xdg-desktop-portal-gnome, polkit-gnome |
packages/nvim.txt |
Neovim Editör & Bağımlılıkları | neovim, ripgrep, fd, tree-sitter |
packages/productivity.txt |
Üretkenlik & Parola Yönetimi | obsidian, proton-pass, calibre, keepassxc |
packages/social.txt |
İletişim & Sosyal Medya | vesktop, telegram-desktop, signal-desktop, teams-for-linux |
packages/sunshine.txt |
Sunshine GameStream Sunucusu (KDE Plasma) | sunshine, krfb |
packages/sunshine-mango.txt |
Sunshine GameStream Sunucusu (MangoWM) | sunshine, wlr-randr |
packages/flatpak.txt |
Flatpak Paketleri | com.github.tchx84.Flatseal |
packages/zsh.txt |
Zsh Kabuğu & Eklentiler | Zsh kabuğu, tamamlama ve eklentiler (zsh, fzf, zsh-completions, zsh-autosuggestions, zsh-syntax-highlighting, eza) |
Her paket kendi dizininde ~ (home) yapısını taklit eder. Özel notlar ve detaylı rehberler ilgili paketin kendi README.md dosyasında belgelenmiştir:
| Paket | Açıklama | Dokümantasyon |
|---|---|---|
antigravity/ |
Google Antigravity CLI (agy) ayarları & güvenlik politikası |
📖 İncele |
btop/ |
Sistem ve donanım izleme aracı | 📖 İncele |
fastfetch/ |
Sistem bilgi aracı & otomatik dağıtım logosu | 📖 İncele |
fish/ |
Fish shell yapılandırması, fonksiyonlar & alias'lar | 📖 İncele |
ghostty/ |
Modern GPU terminal emülatörü | 📖 İncele |
kitty/ |
Özelleştirilebilir terminal emülatörü | 📖 İncele |
mango/ |
MangoWM hafif ve akıcı Wayland pencere yöneticisi | 📖 İncele |
niri/ |
Niri scrollable tiling Wayland compositor | 📖 İncele |
nvim/ |
Neovim IDE yapılandırması (Lazy.nvim) | 📖 İncele |
power-management/ |
TLP donanım güç yönetimi & KDE Plasma dinamik güç tasarruf betikleri | 📖 İncele |
ssh/ |
SSH istemci ayarları & sunucu ağ erişim kısıtlamaları | 📖 İncele |
starship/ |
Çapraz kabuk (Cross-shell) komut istemi | 📖 İncele |
sunshine/ |
Sunshine GameStream, tablet 2. ekran & güç yönetimi (KDE Plasma) | 📖 İncele |
sunshine-mango/ |
Sunshine GameStream, tablet 2. ekran & IPC otomasyonu (MangoWM / wlroots) | 📖 İncele |
systemd/ |
Kullanıcı seviyesi systemd servisleri | 📖 İncele |
user-dirs/ |
Standart XDG kullanıcı dizinleri | 📖 İncele |
vivaldi/ |
Vivaldi CSS/JS modları & orta tık sekme onarımı | 📖 İncele |
zsh/ |
Zsh kabuğu (~/.zshrc ve ~/.config/zshrc.d/ modüler betikleri) |
📖 İncele |
Kurulum sonrası güvenlik nedeniyle depoda tutulmayan kişisel anahtarları 1Password üzerinden manuel olarak yerine koyun:
~/.config/rclone/rclone.conf(Cloud / Drive token'ları)~/.config/gh/hosts.yml(GitHub CLI oturum token'ı)~/.ssh/(SSH özel anahtarları ve~/.ssh/config.local)~/.config/sunshine/credentials/&sunshine_state.json(Sunshine SSL sertifikaları & cihaz eşleşmeleri)
Note
.gitignore dosyası; SSL sertifikalarını (.pem, .key), Sunshine kimliklerini (credentials/, sunshine_state.json), logları (*.log) ve secret dosyalarını repoya dahil etmeyecek şekilde yapılandırılmıştır.
Dotfiles deposu, donanım uyumluluğu ve ağ optimizasyonu için özel yardımcı betikler barındırır (tüm betiklerin yetki ve parametre detayları için scripts/README.md belgesini inceleyin):
scripts/setup_fkeys.sh: Apple/Fn tuş davranışlarını F1-F12 standart düzenine çevirir.scripts/setup_keychron.sh: Keychron kablosuz/kablolu klavye modu ve Bluetooth optimizasyonları.scripts/setup_ufw.sh: Güvenlik duvarını (Sunshine, SSH vb. izinleri) tek komutla kurar.scripts/setup_sshd.sh: SSH sunucusuna (sshd) ağ erişim kısıtlamalarını (/etc/ssh/sshd_config.d/) kurar.scripts/setup_services.sh: Dağıtıma göre systemd servislerini devreye alır.scripts/setup_fonts.sh: Nerd Font ve sistem yazı tiplerini kurar ve font önbelleğini günceller.scripts/setup_zsh.sh: Oh My Zsh ve 5 eklentiyi otomatik kurar.scripts/setup_npm.sh: Global npm dizini izinlerini ve ortam yolu yapılandırmasını ayarlar.scripts/setup_1password.sh: 1Password için özel tarayıcı izinlerini (/etc/1password/custom_allowed_browsers) yapılandırır.scripts/setup_warp.sh: Cloudflare WARP split tunnel kurallarını uygular.scripts/switch_to_iwd.sh: NetworkManager için iwd Wi-Fi backend geçişi sağlar.scripts/vivaldi_middle_click.sh: Wayland ortamında Vivaldi orta tık sekme açma davranışını düzeltir.scripts/install_flatpaks.sh:packages/flatpak.txtlistesindeki Flatpak uygulamalarını yükler.
Yeni bir aracın (örn: rofi) ayarlarını dotfiles sistemine dahil etmek için:
cd ~/Projects/dotfiles
# 1. Paket klasörünü ve taklit dizinini oluştur
mkdir -p rofi/.config
# 2. Mevcut yapılandırmayı taşı
mv ~/.config/rofi rofi/.config/
# 3. (Opsiyonel) Pakete özel README.md ekle
# Not: .stow-local-ignore sayesinde README.md dosyaları $HOME dizinine bağlanmaz.
# 4. Stow ile bağla
stow -R -t "$HOME" rofi
# 5. İlgili modülün packages/<modül>.txt listesine paket adını ekle
# veya install.sh / stow_all.sh bileşen kaydına dahil et
git add .
git commit -m "feat(rofi): add rofi configuration"