summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doom/.config/doom/themes/noctalia-theme.el108
-rw-r--r--foot/.config/foot/themes/noctalia42
-rw-r--r--ghostty/.config/ghostty/themes/noctalia44
-rw-r--r--niri/.config/niri/noctalia.kdl22
-rw-r--r--nixos/modules/features/cli-tools/default.nix2
-rw-r--r--nixos/modules/features/vpn-utils/default.nix32
-rw-r--r--nixos/modules/system/services/default.nix7
-rw-r--r--nixos/modules/system/users/default.nix25
l---------nixos/result1
-rw-r--r--nixos/vpn-port-22-log.md125
-rw-r--r--starship/.config/starship.toml60
-rw-r--r--tmux/.config/tmux/tmux.conf (renamed from tmux/.tmux.conf)29
12 files changed, 211 insertions, 286 deletions
diff --git a/doom/.config/doom/themes/noctalia-theme.el b/doom/.config/doom/themes/noctalia-theme.el
index ed309c1..4f6b512 100644
--- a/doom/.config/doom/themes/noctalia-theme.el
+++ b/doom/.config/doom/themes/noctalia-theme.el
@@ -21,75 +21,75 @@
(deftheme noctalia "Theme using Template variables with quality of life improvements.")
;; Define all the color variables (replaced by template processor)
-(let* ((bg "#13140f")
- (err "#ffb4ab")
- (err-container "#93000a")
- (on-background "#e4e3db")
- (on-err "#690005")
- (on-err-container "#ffdad6")
- (on-primary "#243603")
+(let* ((bg "#fbfaf1")
+ (err "#ba1a1a")
+ (err-container "#ffdad6")
+ (on-background "#1b1c17")
+ (on-err "#ffffff")
+ (on-err-container "#93000a")
+ (on-primary "#ffffff")
(on-primary-container "#fffff4")
- (on-secondary "#2b331c")
- (on-secondary-container "#afb999")
- (on-surface "#e4e3db")
- (on-surface-variant "#c5c8b9")
- (on-tertiary "#003826")
+ (on-secondary "#ffffff")
+ (on-secondary-container "#5e684d")
+ (on-surface "#1b1c17")
+ (on-surface-variant "#45483d")
+ (on-tertiary "#ffffff")
(on-tertiary-container "#ffffff")
- (outline-color "#8f9284")
- (outline-variant "#45483d")
- (primary "#b7cf8b")
+ (outline-color "#75786b")
+ (outline-variant "#c5c8b9")
+ (primary "#4f642c")
(primary-container "#677d42")
- (secondary "#c1cbaa")
- (secondary-container "#414a31")
+ (secondary "#586247")
+ (secondary-container "#dde7c5")
(shadow "#000000")
- (surface "#13140f")
- (surface-container "#1f201b")
- (surface-container-high "#292a25")
- (surface-container-highest "#343530")
- (surface-container-low "#1b1c17")
- (surface-container-lowest "#0d0f0a")
- (surface-variant "#45483d")
- (tertiary "#92d4b5")
+ (surface "#fbfaf1")
+ (surface-container "#efeee6")
+ (surface-container-high "#e9e8e0")
+ (surface-container-highest "#e4e3db")
+ (surface-container-low "#f5f4ec")
+ (surface-container-lowest "#ffffff")
+ (surface-variant "#e1e4d4")
+ (tertiary "#26694f")
(tertiary-container "#418267")
;; Map success colors to tertiary (as used in other templates)
- (success "#92d4b5")
- (on-success "#003826")
+ (success "#26694f")
+ (on-success "#ffffff")
(success-container "#418267")
(on-success-container "#ffffff")
;; Map fixed colors to regular colors
- (primary-fixed "#b7cf8b")
+ (primary-fixed "#4f642c")
(primary-fixed-dim "#677d42")
- (secondary-fixed "#c1cbaa")
- (secondary-fixed-dim "#414a31")
- (tertiary-fixed "#92d4b5")
+ (secondary-fixed "#586247")
+ (secondary-fixed-dim "#dde7c5")
+ (tertiary-fixed "#26694f")
(tertiary-fixed-dim "#418267")
- (on-primary-fixed "#243603")
+ (on-primary-fixed "#ffffff")
(on-primary-fixed-variant "#fffff4")
- (on-secondary-fixed "#2b331c")
- (on-secondary-fixed-variant "#afb999")
- (on-tertiary-fixed "#003826")
+ (on-secondary-fixed "#ffffff")
+ (on-secondary-fixed-variant "#5e684d")
+ (on-tertiary-fixed "#ffffff")
(on-tertiary-fixed-variant "#ffffff")
;; Map inverse colors to surface variants
- (inverse-on-surface "#e4e3db")
- (inverse-primary "#b7cf8b")
- (inverse-surface "#13140f")
+ (inverse-on-surface "#1b1c17")
+ (inverse-primary "#4f642c")
+ (inverse-surface "#fbfaf1")
;; ANSI terminal colors
- (term0 "#45483d")
- (term1 "#ffb4ab")
- (term2 "#b7cf8b")
- (term3 "#c1cbaa")
- (term4 "#92d4b5")
- (term5 "#b7cf8b")
- (term6 "#c1cbaa")
- (term7 "#e4e3db")
- (term8 "#8f9284")
- (term9 "#ffb4ab")
- (term10 "#b7cf8b")
- (term11 "#c1cbaa")
- (term12 "#92d4b5")
- (term13 "#b7cf8b")
- (term14 "#c1cbaa")
- (term15 "#e4e3db"))
+ (term0 "#e1e4d4")
+ (term1 "#ba1a1a")
+ (term2 "#4f642c")
+ (term3 "#586247")
+ (term4 "#26694f")
+ (term5 "#667a3a")
+ (term6 "#6e7759")
+ (term7 "#1b1c17")
+ (term8 "#75786b")
+ (term9 "#ba1a1a")
+ (term10 "#4f642c")
+ (term11 "#586247")
+ (term12 "#26694f")
+ (term13 "#667a3a")
+ (term14 "#6e7759")
+ (term15 "#1b1c17"))
(custom-theme-set-faces
'noctalia
diff --git a/foot/.config/foot/themes/noctalia b/foot/.config/foot/themes/noctalia
index 8917d70..e4d9608 100644
--- a/foot/.config/foot/themes/noctalia
+++ b/foot/.config/foot/themes/noctalia
@@ -1,22 +1,22 @@
[colors-dark]
-foreground=e4e3db
-background=13140f
-regular0=45483d
-regular1=ffb4ab
-regular2=b7cf8b
-regular3=c1cbaa
-regular4=92d4b5
-regular5=b7cf8b
-regular6=c1cbaa
-regular7=e4e3db
-bright0=8f9284
-bright1=ffb4ab
-bright2=b7cf8b
-bright3=c1cbaa
-bright4=92d4b5
-bright5=b7cf8b
-bright6=c1cbaa
-bright7=e4e3db
-selection-foreground=c5c8b9
-selection-background=45483d
-cursor=13140f e4e3db
+foreground=1b1c17
+background=fbfaf1
+regular0=e1e4d4
+regular1=ba1a1a
+regular2=4f642c
+regular3=586247
+regular4=26694f
+regular5=667a3a
+regular6=6e7759
+regular7=1b1c17
+bright0=75786b
+bright1=ba1a1a
+bright2=4f642c
+bright3=586247
+bright4=26694f
+bright5=667a3a
+bright6=6e7759
+bright7=1b1c17
+selection-foreground=45483d
+selection-background=e1e4d4
+cursor=fbfaf1 1b1c17
diff --git a/ghostty/.config/ghostty/themes/noctalia b/ghostty/.config/ghostty/themes/noctalia
index 4979304..78e1c33 100644
--- a/ghostty/.config/ghostty/themes/noctalia
+++ b/ghostty/.config/ghostty/themes/noctalia
@@ -1,22 +1,22 @@
-palette = 0=#45483d
-palette = 1=#ffb4ab
-palette = 2=#b7cf8b
-palette = 3=#c1cbaa
-palette = 4=#92d4b5
-palette = 5=#b7cf8b
-palette = 6=#c1cbaa
-palette = 7=#e4e3db
-palette = 8=#8f9284
-palette = 9=#ffb4ab
-palette = 10=#b7cf8b
-palette = 11=#c1cbaa
-palette = 12=#92d4b5
-palette = 13=#b7cf8b
-palette = 14=#c1cbaa
-palette = 15=#e4e3db
-background = #13140f
-foreground = #e4e3db
-cursor-color = #e4e3db
-cursor-text = #13140f
-selection-background = #45483d
-selection-foreground = #c5c8b9
+palette = 0=#e1e4d4
+palette = 1=#ba1a1a
+palette = 2=#4f642c
+palette = 3=#586247
+palette = 4=#26694f
+palette = 5=#667a3a
+palette = 6=#6e7759
+palette = 7=#1b1c17
+palette = 8=#75786b
+palette = 9=#ba1a1a
+palette = 10=#4f642c
+palette = 11=#586247
+palette = 12=#26694f
+palette = 13=#667a3a
+palette = 14=#6e7759
+palette = 15=#1b1c17
+background = #fbfaf1
+foreground = #1b1c17
+cursor-color = #1b1c17
+cursor-text = #fbfaf1
+selection-background = #e1e4d4
+selection-foreground = #45483d
diff --git a/niri/.config/niri/noctalia.kdl b/niri/.config/niri/noctalia.kdl
index f818300..29c9247 100644
--- a/niri/.config/niri/noctalia.kdl
+++ b/niri/.config/niri/noctalia.kdl
@@ -1,15 +1,15 @@
layout {
focus-ring {
- active-color "#b7cf8b"
- inactive-color "#13140f"
- urgent-color "#ffb4ab"
+ active-color "#4f642c"
+ inactive-color "#fbfaf1"
+ urgent-color "#ba1a1a"
}
border {
- active-color "#b7cf8b"
- inactive-color "#13140f"
- urgent-color "#ffb4ab"
+ active-color "#4f642c"
+ inactive-color "#fbfaf1"
+ urgent-color "#ba1a1a"
}
shadow {
@@ -17,19 +17,19 @@ layout {
}
tab-indicator {
- active-color "#b7cf8b"
+ active-color "#4f642c"
inactive-color "#677d42"
- urgent-color "#ffb4ab"
+ urgent-color "#ba1a1a"
}
insert-hint {
- color "#b7cf8b80"
+ color "#4f642c80"
}
}
recent-windows {
highlight {
- active-color "#b7cf8b"
- urgent-color "#ffb4ab"
+ active-color "#4f642c"
+ urgent-color "#ba1a1a"
}
}
diff --git a/nixos/modules/features/cli-tools/default.nix b/nixos/modules/features/cli-tools/default.nix
index 054ddc1..ef13ddd 100644
--- a/nixos/modules/features/cli-tools/default.nix
+++ b/nixos/modules/features/cli-tools/default.nix
@@ -16,6 +16,8 @@
caligula
fetch
smartmontools
+ amneziawg-tools
+ amneziawg-go
];
# Cross-shell prompt; its config lives in the dotfiles repo, not NixOS.
diff --git a/nixos/modules/features/vpn-utils/default.nix b/nixos/modules/features/vpn-utils/default.nix
index 89b92e4..91f2594 100644
--- a/nixos/modules/features/vpn-utils/default.nix
+++ b/nixos/modules/features/vpn-utils/default.nix
@@ -8,24 +8,24 @@
programs.amnezia-vpn.enable = true;
- networking.wireguard.enable = true;
-
- boot.kernelModules = [ "wireguard" ];
-
environment.systemPackages = with pkgs; [
wireguard-tools
];
- systemd.services.wireguard-client = {
- description = "WireGuard client tunnel (wg)";
- after = [ "network-online.target" ];
- wants = [ "network-online.target" ];
- wantedBy = [ "multi-user.target" ];
- serviceConfig = {
- Type = "oneshot";
- RemainAfterExit = true;
- ExecStart = "${pkgs.wireguard-tools}/bin/wg-quick up wg";
- ExecStop = "${pkgs.wireguard-tools}/bin/wg-quick down wg";
- };
- };
+ # Throne's sing-box core resolves its underlying DNS by running
+ # `resolvectl -i <default-iface> dns` and fails to parse the empty
+ # per-link output (enp42s0 has no per-link DNS; ours is global Mullvad
+ # in services.resolved). Push the same Mullvad servers per-link so the
+ # resolvectl parse succeeds and proxy hostnames can be looked up.
+ networking.networkmanager.dispatcherScripts = [
+ {
+ type = "basic";
+ source = pkgs.writeText "link-dns.sh" ''
+ #!/bin/sh
+ if [ "$1" = "enp42s0" ] && { [ "$2" = "up" ] || [ "$2" = "dhcp4-change" ]; }; then
+ ${pkgs.systemd}/bin/resolvectl dns enp42s0 194.242.2.2 194.242.2.4 || true
+ fi
+ '';
+ }
+ ];
} \ No newline at end of file
diff --git a/nixos/modules/system/services/default.nix b/nixos/modules/system/services/default.nix
index 74ac531..571ae3a 100644
--- a/nixos/modules/system/services/default.nix
+++ b/nixos/modules/system/services/default.nix
@@ -14,4 +14,11 @@
SystemMaxUse=50M
MaxRetentionSec=1month
'';
+
+ # Cap core dumps so a crashing app can't fill the root partition with
+ # multi-GB crash dumps (e.g. java/electron segfaults).
+ systemd.coredump.settings.Coredump = {
+ ProcessSizeMax = "512M";
+ Storage = "external";
+ };
}
diff --git a/nixos/modules/system/users/default.nix b/nixos/modules/system/users/default.nix
index d795a64..d9ac254 100644
--- a/nixos/modules/system/users/default.nix
+++ b/nixos/modules/system/users/default.nix
@@ -24,7 +24,13 @@
];
};
- # ZSH + completion, oh-my-zsh, autosuggestions, and fzf key bindings.
+ # fzf -- proper key bindings + completion for zsh.
+ programs.fzf = {
+ fuzzyCompletion = true;
+ keybindings = true;
+ };
+
+ # ZSH + completion, oh-my-zsh, autosuggestions.
programs.zsh = {
enable = true;
enableCompletion = true;
@@ -35,8 +41,21 @@
strategy = [ "history" "completion" ];
};
interactiveShellInit = ''
- source ${pkgs.fzf}/share/fzf/key-bindings.zsh
- source ${pkgs.fzf}/share/fzf/completion.zsh
+ # Fish-style full-screen Ctrl+R history search.
+ export FZF_CTRL_R_OPTS="
+ --layout=reverse
+ --scheme=history
+ --height=100%
+ --border=sharp
+ --border-label=' Ctrl+R '
+ --highlight-line
+ --pointer=→
+ --info=inline-right
+ --header-first
+ --header='enter: accept · ctrl-/ : toggle preview'
+ --preview='echo {}' --preview-window=down:3:hidden:wrap
+ --bind=ctrl-/:toggle-preview
+ "
'';
shellAliases = {
ls = "eza -al --icons=auto";
diff --git a/nixos/result b/nixos/result
deleted file mode 120000
index 9748ece..0000000
--- a/nixos/result
+++ /dev/null
@@ -1 +0,0 @@
-/nix/store/i7vgmy988fpdbmxzsp6j0hg5aiz1mjdk-nixos-system-opus-26.11.20260730.1559d3d \ No newline at end of file
diff --git a/nixos/vpn-port-22-log.md b/nixos/vpn-port-22-log.md
deleted file mode 100644
index 1466296..0000000
--- a/nixos/vpn-port-22-log.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# Лог диагностики: исходящий порт 22 заблокирован
-
-> Отчёт о том, почему `git push` не работает ни с VPN, ни без него.
-> Чувствительные данные (ключи, preshared-key) удалены.
-
-## Вывод
-
-- **Без VPN:** российский провайдер режет исходящий порт 22 → `Network is unreachable`.
-- **С VPN (WireGuard):** сам провайдер VPN-сервиса **в целом запрещает исходящий порт 22**
- (порт 22 к `github.com`, `gitlab.com` и `git.sr.ht` — timeout, при этом порт 443 открыт ко всем).
-
-Итог: git по SSH (использует порт 22) не может соединиться ни в одном состоянии.
-
----
-
-## 1. Конфигурация интерфейса WireGuard (без секретов)
-
-Из `/etc/wireguard/wg.conf`:
-
-```ini
-[Interface]
-PrivateKey = [Скрыто]
-Address = 10.233.10.237/32
-DNS = 1.1.1.1, 8.8.4.4
-MTU = 1380
-
-[Peer]
-PublicKey = +ickp+Ceu/QcMW7pTA1is4ZcUSzglHuyuBRq0QeQ5D0=
-PresharedKey = [Скрыто]
-AllowedIPs = 0.0.0.0/0, ::/0
-PersistentKeepalive = 25
-Endpoint = nl01w-dp.kcufwfgnkr.net:62233
-```
-
-`AllowedIPs = 0.0.0.0/0` → туннель должен заворачивать весь трафик (все маршруты в таблице 52219).
-
----
-
-## 2. Состояние туннеля
-
-Интерфейс `wg` поднят, адрес и DNS настроены, маршрут по умолчанию через туннель существует:
-
-```text
-$ ip -brief addr
-enp42s0 UP 192.168.1.40/24 fd55:69a6:a86:0:.../64 ...
-throne-tun DOWN ...
-wg UP 10.233.10.237/32
-
-# специфичная для wg-QUICK таблица маршрутов:
-$ ip route show table 52219
-default dev wg proto static scope link metric 50
-
-# DNS на туннеле:
-$ resolvectl status wg
-Link 18 (wg) Current DNS Server: 1.1.1.1 DNS Servers: 1.1.1.1 8.8.4.4 Default Route: yes
-```
-
-IP-адрес в туннеле: `10.233.10.237/32`.
-
----
-
-## 3. Туннель работает (проверка `ping` через VPN)
-
-```text
-$ ping -c 2 1.1.1.1
-2 пакета передано, 2 получено, 0% потерь
-rtt min/avg/max/mdev = 114/115/118 ms ← задержка самого VPN
-```
-
----
-
-## 4. Порт 443 открыт (HTTPS работает)
-
-```text
-$ ssh -vv -p 443 git@git.sr.ht (только проверка соединения)
-Connecting to git.sr.ht [46.23.81.155] port 443
-banner: HTTP/1.1 400 Bad Request / Server: nginx
-→ порт 443 доступен (это обычный HTTPS/nginx, никакого SSH-сервиса на 443 у git.sr.ht нет)
-```
-
----
-
-## 5. Порт 22 заблокирова
-
-### 5.1 Без VPN — `Network is unreachable`
-
-```text
-$ ssh -p 22 git@git.sr.ht
-ssh: connect to host git.sr.ht port 22: Network is unreachable
-```
-
-### 5.2 С VPN — таймаут на исходящем 22
-
-```text
-$ /dev/tcp/46.23.81.155/22 → FAIL (connection timed out)
-$ ssh -4 -p 22 git@46.23.81.155 → Connection timed out
-$ /dev/tcp/140.82.121.4/22 (github.com:22) → FAILED
-$ /dev/tcp/172.65.251.78/22 (gitlab.com:22) → FAILED
-```
-
-Порт 22 таймаутится ко **всем** хостам через туннель, а порт 443 — открыт:
-
-```text
-$ /dev/tcp/172.65.251.78/443 (gitlab.com:443) → OPEN
-```
-
-### 5.3 DNS (спойлер: отвечал IPv6 без маршрута)
-
-```text
-$ getent hosts git.sr.ht
-2a03:6000:1813:1337::155 (IPv6 — без глобального маршрута)
-46.23.81.155 (IPv4 — нужный адрес)
-```
-
----
-
-## 6. Итоговая таблица
-
-| Состояние | git.sr.ht:22 | git.sr.ht:443 | Вердикт |
-|-----------|--------------|---------------|---------|
-| Без VPN | недоступен (ISP) | — | порт 22 режется провайдером |
-| С VPN | таймаут (VPN) | открыт | VPN-сервис запрещает исходящий 22 |
-
-**Причина:** VPN-сервис на стороне выхода `nl01w-dp.kcufwfgnkr.net`
-запрещает исходящие соединения по порту 22. Поэтому git-по-SSH не работает.
diff --git a/starship/.config/starship.toml b/starship/.config/starship.toml
index 7906683..ab1d1a7 100644
--- a/starship/.config/starship.toml
+++ b/starship/.config/starship.toml
@@ -52,40 +52,40 @@ deleted = ""
[palettes.noctalia]
# Standard colors
-blue = "#92d4b5"
-red = "#ffb4ab"
-green = "#b7cf8b"
-yellow = "#c1cbaa"
-cyan = "#c1cbaa"
-magenta = "#b7cf8b"
-white = "#e4e3db"
-black = "#45483d"
+blue = "#26694f"
+red = "#ba1a1a"
+green = "#4f642c"
+yellow = "#586247"
+cyan = "#6e7759"
+magenta = "#667a3a"
+white = "#1b1c17"
+black = "#e1e4d4"
# Extended palette (Catppuccin-compatible names)
-rosewater = "#c1cbaa"
-flamingo = "#ffb4ab"
-pink = "#b7cf8b"
-mauve = "#b7cf8b"
-maroon = "#ffb4ab"
-peach = "#c1cbaa"
-teal = "#c1cbaa"
-sky = "#c1cbaa"
-sapphire = "#92d4b5"
-lavender = "#b7cf8b"
+rosewater = "#586247"
+flamingo = "#ba1a1a"
+pink = "#667a3a"
+mauve = "#667a3a"
+maroon = "#ba1a1a"
+peach = "#586247"
+teal = "#6e7759"
+sky = "#6e7759"
+sapphire = "#26694f"
+lavender = "#667a3a"
# Text shades
-text = "#e4e3db"
-subtext1 = "#e4e3db"
-subtext0 = "#8f9284"
+text = "#1b1c17"
+subtext1 = "#1b1c17"
+subtext0 = "#75786b"
# Surface shades
-overlay2 = "#8f9284"
-overlay1 = "#8f9284"
-overlay0 = "#45483d"
-surface2 = "#45483d"
-surface1 = "#45483d"
-surface0 = "#13140f"
-base = "#13140f"
-mantle = "#13140f"
-crust = "#13140f"
+overlay2 = "#75786b"
+overlay1 = "#75786b"
+overlay0 = "#e1e4d4"
+surface2 = "#e1e4d4"
+surface1 = "#e1e4d4"
+surface0 = "#fbfaf1"
+base = "#fbfaf1"
+mantle = "#fbfaf1"
+crust = "#fbfaf1"
# <<< NOCTALIA STARSHIP PALETTE <<<
diff --git a/tmux/.tmux.conf b/tmux/.config/tmux/tmux.conf
index c68b67e..e4de091 100644
--- a/tmux/.tmux.conf
+++ b/tmux/.config/tmux/tmux.conf
@@ -1,3 +1,27 @@
+# Enable 256 color support
+set -g default-terminal "tmux-256color"
+set -ga terminal-overrides ",*:RGB"
+
+# Enable mouse support
+set -g mouse on
+
+# Enable clipboard
+set -g set-clipboard on
+# Change prefix from Ctrl-b to Ctrl-a
+unbind C-b
+set -g prefix C-a
+bind-key C-a send-prefix
+
+# Vim-style pane navigation
+bind h select-pane -L
+bind j select-pane -D
+bind k select-pane -U
+bind l select-pane -R
+
+# Split windows (opens in same directory)
+unbind %
+bind | split-window -h -c "#{pane_current_path}"
+
unbind '"'
bind - split-window -v -c "#{pane_current_path}"
@@ -33,9 +57,6 @@ set -g status-right "#[fg=${thm_blue},bg=${thm_bg},nobold,nounderscore,noitalics
# Statusline - left side (empty)
set -g status-left ""
-# Modes
-set -g clock-mode-colour "${thm_blue}"
-set -g mode-style "fg=${thm_blue} bg=${thm_black4} bold"
# Change from 0 based to 1 based because keyboard layout
set -g base-index 1
set -g pane-base-index 1
@@ -49,3 +70,5 @@ bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
unbind -T copy-mode-vi MouseDragEnd1Pane
+
+