This commit is contained in:
Buliway 2024-08-07 19:12:33 +03:00
parent 00917c258f
commit 4d57b6b6f4
17 changed files with 915 additions and 83 deletions

View file

@ -1,6 +1,15 @@
Это мои приватные дотсы Это мои приватные дотсы
Искать иконки для nerd шрифта можно [тут](https://www.nerdfonts.com/cheat-sheet). Железо, на котором это работает:
- CPU: i5 10400f
- GPU: AMD RX6600
- RAM: 32gb (2x16) ddr4 3200
- Motherboard: MSI Z590-A PRO
Чтоб узнать sha256 для гитхаб репы, пишем в терминал эту команду:
```sh
nix-prefetch-git link-to-git-repo
```
## Бинды ## Бинды
@ -16,7 +25,6 @@
| `Super + Esc` | Прошлый воркспейс. Желательно внутри одного монитора | | `Super + Esc` | Прошлый воркспейс. Желательно внутри одного монитора |
| `Super + ЛКМ` | Переместить окно | | `Super + ЛКМ` | Переместить окно |
| `Super + ПКМ` | Ресайзить окно | | `Super + ПКМ` | Ресайзить окно |
| `Super + Scroll` | Скролишь колесо вверх = +1 воркспейс. Если вниз, то -1 |
| `Super + Arrows` | Менять фокус приложения в указанном направлении | | `Super + Arrows` | Менять фокус приложения в указанном направлении |
| `Super + 0-9` | Переключить воркспейс на 1-10. Если они общие на все моники, то добавить F1-F12 для 11-22 | | `Super + 0-9` | Переключить воркспейс на 1-10. Если они общие на все моники, то добавить F1-F12 для 11-22 |
| `Super + Shift + 0-9` | Перекинуть активное окно на воркспейс. Желательно silent, чтоб меня не перекидывало к проге | | `Super + Shift + 0-9` | Перекинуть активное окно на воркспейс. Желательно silent, чтоб меня не перекидывало к проге |
@ -91,22 +99,38 @@
## Иконки ## Иконки
Искать иконки для nerd шрифта можно [тут](https://www.nerdfonts.com/cheat-sheet).
Соберу сюда список nerd иконок, которые могут пригодиться Соберу сюда список nerd иконок, которые могут пригодиться
 - CPU (мб не юзать, а писать текстом и cpu и gpu) CPU (мб не юзать, а писать текстом и cpu и gpu) - 
 - RAM
󰪛 - CapsLock RAM - 
 или 󰌌 - Клавиатура
   - Громкость CapsLock - 󰪛
󰃟 󰃞 󰃝 - Яркость
  󰸗 - Календарь Клавиатура -  или 󰌌
⏻ 󰐥  - Выключение пк
 󰀻  󰵆 - Приложения Громкость -   
 󰂯 󰂲 󰥰 󰦋 󰏳 󰦢 󰗾 󰗿 - Блютуз
󰈀  󰒍 - Network Яркость - 󰃟 󰃞 󰃝
  󱉧  - Clipboard
󰀦  󰀧 󰀨 󰅉 󰨱 󰵙  󰂚     - Оповещения (bell) Календарь -   󰸗
󰑓 󱄋 - Reload
Выключение пк - ⏻ 󰐥 
Приложения -  󰀻  󰵆
Блютуз -  󰂯 󰂲 󰥰 󰦋 󰏳 󰦢 󰗾 󰗿
Network - 󰈀  󰒍
Clipboard -   󱉧 
Оповещения (bell) - 󰀦  󰀧 󰀨 󰅉 󰨱 󰵙  󰂚    
Reload - 󰑓 󱄋
Wifi Wifi
 󰖩 󱚵 󱚽 󱚼 󰖪 󱛄  󰖩 󱚵 󱚽 󱚼 󰖪 󱛄
@ -131,3 +155,31 @@ Wifi
󰔄 - Температура по цельсию 󰔄 - Температура по цельсию
         
   
## Темы
У меня в vscode цвета отображаются. Так что я для себя сохраню цвета разных вариантов gruvbox
Цвет это название цвета. Потом идёт название gruvbox-имя
Я использую gruvbox-dark-medium
|Цвет |dark-hard|dark-medium|dark-pale|dark-soft|material-dark-hard|material-dark-medium|material-dark-soft|
|------|---------|-----------|---------|---------|------------------|--------------------|------------------|
|base00| #1d2021 | #282828 | #262626 | #32302f | #202020 | #292828 | #32302f |
|base01| #3c3836 | #3c3836 | #3a3a3a | #3c3836 | #2a2827 | #32302f | #3c3836 |
|base02| #504945 | #504945 | #4e4e4e | #504945 | #504945 | #504945 | #5a524c |
|base03| #665c54 | #665c54 | #8a8a8a | #665c54 | #5a524c | #665c54 | #7c6f64 |
|base04| #bdae93 | #bdae93 | #949494 | #bdae93 | #bdae93 | #bdae93 | #bdae93 |
|base05| #d5c4a1 | #d5c4a1 | #dab997 | #d5c4a1 | #ddc7a1 | #ddc7a1 | #ddc7a1 |
|base06| #ebdbb2 | #ebdbb2 | #d5c4a1 | #ebdbb2 | #ebdbb2 | #ebdbb2 | #ebdbb2 |
|base07| #fbf1c7 | #fbf1c7 | #ebdbb2 | #fbf1c7 | #fbf1c7 | #fbf1c7 | #fbf1c7 |
|base08| #fb4934 | #fb4934 | #d75f5f | #fb4934 | #ea6962 | #ea6962 | #ea6962 |
|base09| #fe8019 | #fe8019 | #ff8700 | #fe8019 | #e78a4e | #e78a4e | #e78a4e |
|base0A| #fabd2f | #fabd2f | #ffaf00 | #fabd2f | #d8a657 | #d8a657 | #d8a657 |
|base0B| #b8bb26 | #b8bb26 | #afaf00 | #b8bb26 | #a9b665 | #a9b665 | #a9b665 |
|base0C| #8ec07c | #8ec07c | #85ad85 | #8ec07c | #89b482 | #89b482 | #89b482 |
|base0D| #83a598 | #83a598 | #83adad | #83a598 | #7daea3 | #7daea3 | #7daea3 |
|base0E| #d3869b | #d3869b | #d485ad | #d3869b | #d3869b | #d3869b | #d3869b |
|base0F| #d65d0e | #d65d0e | #d65d0e | #d65d0e | #bd6f3e | #bd6f3e | #bd6f3e |

View file

@ -7,7 +7,7 @@
./file-managers/ranger/ranger.nix ./file-managers/ranger/ranger.nix
./file-managers/thunar/thunar.nix ./file-managers/thunar/thunar.nix
./file-managers/yazi/yazi.nix # ./file-managers/yazi/yazi.nix
./gui/vscode.nix ./gui/vscode.nix
@ -16,7 +16,7 @@
./obs/obs.nix ./obs/obs.nix
./terminal/alacritty.nix ./terminal/alacritty.nix
./terminal/fish.nix # ./terminal/fish.nix
./terminal/git.nix ./terminal/git.nix
./terminal/kitty.nix ./terminal/kitty.nix
./terminal/starship.nix ./terminal/starship.nix
@ -32,5 +32,6 @@
./default-apps.nix ./default-apps.nix
./symlinks.nix ./symlinks.nix
./mangohud.nix
]; ];
} }

View file

@ -1,13 +1,43 @@
{ { pkgs, ... }: { # https://nixos.wiki/wiki/Visual_Studio_Code
programs.vscode = { programs.vscode = {
enable = true; enable = true;
# package = pkgs.vscode.fhs; # Почему в вики написано ".fhs", если пакет называется "-fhs"?
# package = pkgs.vscode-with-extensions; # Мб это надо?
extensions = [
# Чтоб узнать sha256, я скачал расширение напрямую с сайта маркетплейса
# А потом в терминале написал "sha256sum filename"
# В оф репе юзают такой скрипт для установки расширений, не знаю поможет ли
# https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vscode/extensions/update_installed_exts.sh#L34
# Имя и паблишер берутся из ссылки. После "?itemName" идёт паблишер.нейм
extensions = with pkgs.vscode-extensions; [
eamodio.gitlens # GitLens - Git supercharged
jnoortheen.nix-ide # Nix language support - syntax highlighting, formatting, and error reporting.
sumneko.lua # Lua language server
naumovs.color-highlight # Highlight web colors in your editor
tamasfe.even-better-toml # Fully-featured TOML support
ms-python.python # Python language support
golang.go # Rich Go language support
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ # Руками с гита ставить
{ # https://marketplace.visualstudio.com/items?itemName=budparr.language-hugo-vscode
name = "language-hugo-vscode";
publisher = "budparr";
version = "1.3.1";
sha256 = "f5da7cfe02c06fc3899e6b0b55b380280619e7085abcf5b6024f9684ba846c99";
}
{ # https://marketplace.visualstudio.com/items?itemName=Codeium.codeium
name = "codeium";
publisher = "Codeium";
version = "1.11.9";
sha256 = "0e07e78e487418d0c5289eeb2c530dd7dd18f82612e46c8b177f2a1f95acb730";
}
]; ];
userSettings = { userSettings = {
# "workbench.colorTheme" = "Gruvbox Dark Medium";
"editor.fontFamily" = "JetBrainsMono Nerd Font"; "editor.fontFamily" = "JetBrainsMono Nerd Font";
"telemetry.telemetryLevel" = "off";
"update.showReleaseNotes" = false;
}; };
globalSnippets = {}; globalSnippets = {};

View file

@ -0,0 +1,67 @@
# Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more
# https://github.com/flightlessmango/MangoHud/blob/master/data/MangoHud.conf
# To enable the MangoHud overlay layer for Vulkan and OpenGL, run: `mangohud /path/to/app`
# For Lutris games, go to the System options in Lutris (make sure that advanced options are enabled)
# and add this to the Command prefix setting: `mangohud`
# For Steam games, you can add this as a launch option: `mangohud %command%`
# Or alternatively, add `MANGOHUD=1` to your shell profile (Vulkan only).
# OpenGL games may also need dlsym hooking. Add `--dlsym` to your command like `mangohud --dlsym %command%` for Steam.
# To enable mangohud with gamescope you need to install mangoapp. gamescope --mangoapp %command%
# Using normal mangohud with gamescope is not support.
# Затестить можно в терминале через команду MANGOHUD=1 vkcube
{
programs.mangohud = {
enable = true;
# enableSessionWide = true; # Sets environment variables so that MangoHud is started on any application that supports it.
};
home.file.".config/MangoHud/MangoHud.conf".text = ''
### pre defined presets
# -1 = default
# 0 = no display
# 1 = fps only
# 2 = horizontal view
# 3 = extended
# 4 = high detailed information
# preset=-1
cpu_temp
gpu_temp
gpu_mem_temp
swap
toggle_hud=Shift_R+F12
toggle_hud_position=Shift_R+F11
toggle_preset=Shift_R+F10
# toggle_fps_limit=Shift_L+F1
# toggle_logging=Shift_L+F2
# reload_cfg=Shift_L+F4
# upload_log=Shift_L+F3
background_alpha=0.0 # Hud transparency
alpha=0.8 # Hud alpfa
log_duration=300 # Set amount of time the logging will run for (in seconds)
# gamemode # Display GameMode running status
# vkbasalt # Display vkBasalt running status
# fsr # Display the status of FSR (only works in gamescope)
# throttling_status # Display GPU throttling status. Only shows if throttling is currently happening
# no_display # Disable / hide the hud by deafult
# battery = true;
### Limit the application FPS. Comma-separated list of one or more FPS values (e.g. 0,30,60). 0 means unlimited (unless VSynced)
# fps_limit=0
### early = wait before present, late = wait after present
# fps_limit_method=
### VSync [0-3] 0 = adaptive; 1 = off; 2 = mailbox; 3 = on
# vsync=-1
### OpenGL VSync [0-N] 0 = off; >=1 = wait for N v-blanks, N > 1 acts as a FPS limiter (FPS = display refresh rate / N)
# gl_vsync=-2
'';
}

View file

@ -16,6 +16,6 @@ in {
# ".local/share/osu-wine/osu!/collection.db" = "~/${dir}/Games/osu!/collection.db"; # ".local/share/osu-wine/osu!/collection.db" = "~/${dir}/Games/osu!/collection.db";
# ".local/share/osu-wine/osu!/osu!.buliway.cfg" = "~/${dir}/Games/osu!/osu!.buliway.cfg"; # ".local/share/osu-wine/osu!/osu!.buliway.cfg" = "~/${dir}/Games/osu!/osu!.buliway.cfg";
# Не знаю на счёт strawberry, obs, chatbox, planify, calibre и браузеров # Не знаю на счёт strawberry, obs, chatbox, planify, calibre, discord и браузеров
}; };
} }

View file

@ -16,12 +16,14 @@
pkgs = "nvim ${flakeDir}/nixos/packages.nix"; pkgs = "nvim ${flakeDir}/nixos/packages.nix";
v = "nvim"; v = "nvim";
t = "timer";
r = "ranger"; r = "ranger";
ff = "fastfetch"; ff = "fastfetch";
yt = "cd /mnt/backups/Media/yt-dlp"; # Бекапить YouTube yt = "cd /mnt/backups/Media/yt-dlp"; # Бекапить YouTube
qb = "cd /mnt/backups/Media/Music/Qobux/qdl"; # Бекапить музыку с Qobuz qb = "cd /mnt/backups/Media/Music/Qobux/qdl"; # Бекапить музыку с Qobuz
}; };
# Всё, что в комментах ниже, лишнее. Я нашёл норм способ. Пишем "nix-prefetch-git link" и получаем всю инфу
# Узнать rev - git ls-remote https://github.com/{owner}/{repo}.git HEAD # Узнать rev - git ls-remote https://github.com/{owner}/{repo}.git HEAD
# На гитхабе вроде можно просто на странице коммитов нажать ... и copy full SHA # На гитхабе вроде можно просто на странице коммитов нажать ... и copy full SHA
# Узнать sha256 - sudo nix-prefetch-url --unpack https://github.com/{owner}/{repo}/archive/{rev}.tar.gz # Узнать sha256 - sudo nix-prefetch-url --unpack https://github.com/{owner}/{repo}/archive/{rev}.tar.gz

View file

@ -4,8 +4,8 @@
enableCompletion = true; enableCompletion = true;
autosuggestion = { autosuggestion = {
enable = true; enable = true;
strategy = [ # Выбери только один из них strategy = [ # Выбери только один из них (а мб нет, сначала ищет историю, если пусто, то комплитит)
#"history" # Chooses the most recent match from history. "history" # Chooses the most recent match from history.
"completion" # Chooses a suggestion based on what tab-completion would suggest. (requires Zsh 3.1 or later) "completion" # Chooses a suggestion based on what tab-completion would suggest. (requires Zsh 3.1 or later)
]; ];
}; };
@ -26,6 +26,7 @@
pkgs = "nvim ${flakeDir}/nixos/packages.nix"; pkgs = "nvim ${flakeDir}/nixos/packages.nix";
v = "nvim"; v = "nvim";
t = "timer";
r = ". ranger"; # Зайти в ranger и чтоб при выходе я cd в каталог, из которого выходил r = ". ranger"; # Зайти в ranger и чтоб при выходе я cd в каталог, из которого выходил
ff = "fastfetch"; ff = "fastfetch";
yt = "cd /mnt/backups/Media/yt-dlp"; # Конфиги для бекапа YouTube yt = "cd /mnt/backups/Media/yt-dlp"; # Конфиги для бекапа YouTube

View file

@ -23,6 +23,9 @@
# obsidian & # obsidian &
# planify & # planify &
# Я ебал рот видеть инет в трее. Замени эту ёбань на rofi и отдельную кнопку в polybar
# nm-applet &
######################### #########################
## Настройки мониторов ## ## Настройки мониторов ##
######################### #########################

View file

@ -1,6 +1,458 @@
{ # Статус бар внизу # Про единицы измерения
# Если просто написать число, то это будет количество пробелом в прямом смысле. Размер зависит от шрифта
# Если указать pt (points), то это 1/72 часть дюйма, которая преобразуется в количество пикселей в зависимости от DPI монитора
# Если указывать px, то это пиксели, логично
# Интересные готовые скрипты для polybar https://github.com/polybar/polybar-scripts
# Указание цветов из темы stylix
# color0 = "${config.lib.stylix.colors.base00}";
# В случае с gruvbox это будет цвет "#282828"
# Ниже цвета просто dark-meduim, после него material-dark-medium
# base00: "#282828" "#292828"
# base01: "#3c3836" "#32302f"
# base02: "#504945" "#504945"
# base03: "#665c54" "#665c54"
# base04: "#bdae93" "#bdae93"
# base05: "#d5c4a1" "#ddc7a1"
# base06: "#ebdbb2" "#ebdbb2"
# base07: "#fbf1c7" "#fbf1c7"
# base08: "#fb4934" "#ea6962"
# base09: "#fe8019" "#e78a4e"
# base0A: "#fabd2f" "#d8a657"
# base0B: "#b8bb26" "#a9b665"
# base0C: "#8ec07c" "#89b482"
# base0D: "#83a598" "#7daea3"
# base0E: "#d3869b" "#d3869b"
# base0F: "#d65d0e" "#bd6f3e"
# Если в коммент коде цвет указан напрямую, то это дотсы zproger с левой темой
# Варианты кликов мыши
# click-left
# click-middle
# click-right
# scroll-up
# scroll-down
# double-click-left
# double-click-middle
# double-click-right
{ config, ... }: let
gruvbox = {
black = "#000000";
dark = "#1d1d1d";
disabled = "${config.lib.stylix.colors.base00}"; # #282828
red = "${config.lib.stylix.colors.base08}"; # #fb4934
red-alt = "#b22222";
orange = "${config.lib.stylix.colors.base09}"; # #fe8019
orange-mat = "#e78a4e";
yellow = "${config.lib.stylix.colors.base0A}"; # #fabd2f
yellow-mat = "#d8a657";
green = "${config.lib.stylix.colors.base0B}"; # #b8bb26
green-alt = "#98971a";
aqua = "${config.lib.stylix.colors.base0C}"; # #8ec07c
aqua-alt = "#689d6a";
blue = "#458588";
blue-alt = "${config.lib.stylix.colors.base0D}"; # #83a598
grey = "#313131";
dark-grey = "#222222";
cream = "${config.lib.stylix.colors.base07}"; # #fbf1c7
white = "#FFFFFF";
transparent = "#00000000";
Stransparent = "#CC000000";
};
in { # Статус бар внизу
services.polybar = { services.polybar = {
enable = true; enable = true;
settings = { # Или переимоневать в "config"? Не понял в чём разница
# "colors" = {};
"global/wm" = {
margin-bottom = 0;
};
# bottom это просто имя, это не говорит бару быть внизу, можно написать что угодно
"bar/bottom" = {
monitor = "polybar -M | cut -d ':' -f 1"; # содержит список мониторов
monitor-strict = false; # Require the monitor to be in connected state
monitor-exact = true; # Зачем? Нечёткий поиск мониторов, если они называются по разному с разными драйверами
bottom = true; # Put the bar at the bottom of the screen
fixed-center = true; # Мидл модуль будет по центру экрана. При false будет между левым и правым модулями
width = "100%"; # Ширина относительно ширины монитора
height = "20pt"; # Высота относительно высоты монитора. Не ебу что значит pt
offset-x = 0; # Offset the bar window in the x and/or y direction.
offset-y = 0; # Supports any percentage with offset relative to the monitor width or height
padding = 0; # Padding to add at the beginning/end of the bar. Можно юзать padding-{left,right}
enable-ipc = true; # Enable support for inter-process messaging
double-click-interval = 400; # If two clicks are received within this interval (ms), they are recognized as a double click.
module-margin = 1; # Margin to add before/after each module. Можно юзать module-margin-{left,right}
# separator = " "; # The separator will be inserted between the output of each module
# separator-foreground = gruvbox.transparent;
# background = gruvbox.transparent; # Фон бара
# foreground = gruvbox.cream; # Передний план
# border-color = gruvbox.transparent; # Цвет контура
# border-size = "3pt"; # Размер контура
# line-color = "#f00"; # Under-/overline argb color. Может быть {overline,underline}-color
# line-size = 0; # Under-/overline pixel size. Может быть {overline,underline}-size
# If you don't explicitly set the font-index for a tag,
# the bar will iterate the font list and pick the first one that is able to draw the character
font-0 = "JetBrainsMono Nerd Font";
modules-left = "bspwm title";
modules-center = "time";
modules-right = "cpu cpu-temp gpu-temp battery memory pulseaudio tray xkeyboard rofi";
# Restack the bar window and put it above the selected window manager's root
# Fixes the issue where the bar is being drawn on top of fullscreen window's
# Currently supported values:
# generic (Tries the ewmh strategy and falls back to the bottom strategy.
# This is a best-effort strategy and may change and be tweaked in
# the future, the individual strategies are available on their own)
# (New in version 3.6.0)
# (Changed in version 3.7.0: Tries the ewmh strategy instead of just the bottom strategy)
# bspwm (Moves the bar window above all bspwm root windows)
# bottom (Moves the bar window above the first window in the window stack.
# Works in xmonad, may not work on other WMs
# New in version 3.7.0)
# ewmh (Moves the bar above the window specified in _NET_SUPPORTING_WM_CHECK, if it is set
# New in version 3.7.0)
# i3 (requires `override-redirect = true`)
wm-restack = "bspwm";
};
"module/rofi" = {
type = "custom/text";
click-left = "exec rofi -show drun";
label = " ";
};
"module/bspwm" = { # Воркспейсы bspwm
type = "internal/bspwm";
pin-workspaces = true; # Only show workspaces defined on the same output as the bar
inline-mode = true; # Output mode flags after focused state label. Не понял что значит
enable-click = true; # Create click handler used to focus workspace
enable-scroll = false; # Create scroll handlers used to cycle workspaces
reverse-scroll = false; # Set the scroll cycle direction
occupied-scroll = true; # Only scroll through occupied workspaces
ws-icon-0 = "0;0";
ws-icon-1 = "1;1";
ws-icon-2 = "2;2";
ws-icon-3 = "3;3";
ws-icon-4 = "4;4";
ws-icon-5 = "5;5";
ws-icon-6 = "6;6";
ws-icon-7 = "7;7";
ws-icon-8 = "8;8";
ws-icon-9 = "9;9";
ws-icon-10 = "10;10";
format = "<label-state> <label-mode>"; # Это невозможно описать. Я сам не до конца понял
# label-mode = "%mode%";
# label-mode-padding = 1;
# label-mode-background = gruvbox.red-alt;
# label-mode-foreground = gruvbox.white;
# label-separator = "";
# label-separator-padding = 0;
# label-separator-foreground = gruvbox.transparen;
# label-focused = "%icon% %name%";
# label-focused-font = 5;
# label-focused-foreground = gruvbox.yellow;
# label-focused-underline = "#565c64";
# label-focused-padding = 1;
# label-focused-background = gruvbox.black;
# label-occupied = "%icon%";
# label-occupied-foreground = "#646870";
# label-occupied-background = "#2b2f37";
# label-occupied-padding = 1;
# label-empty = "%icon%";
# label-empty-foreground = gruvbox.yellow;
# label-empty-padding = 1;
# label-empty-background = "#2b2f37";
# label-unfocused = "%icon%";
# label-unfocused-font = 5;
# label-unfocused-foreground = gruvbox.cream;
# label-unfocused-background= gruvbox.black;
# label-unfocused-padding = 2;
# label-visible = "%icon%";
# label-visible-padding = 2;
# label-urgent = "%icon%";
# label-urgent-font = 5
# label-urgent-foreground = gruvbox.red-alt;
# label-urgent-background = gruvbox.black;
# label-urgent-padding = 2;
};
"module/title" = { # Отображение имени окна
type = internal/xwindow;
format-prefix = " ";
# format-prefix-foreground = gruvbox.yellow-mat;
# format-prefix-background = gruvbox.black;
# format-background = "#f00";
# format-foreground = "#000";
# format-padding = 4;
# label = "%title%";
label = "%class%";
label-maxlen = 60;
# label-foreground = gruvbox.cream;
# label-background = gruvbox.dark;
label-padding-left = 2;
label-padding-right = 2;
};
# %A: Полное название дня недели (например, "Monday")
# %d: День месяца в формате двух цифр (например, "01")
# %b или %B: Сокращённое или полное название месяца ("Jan", "January")
# %m: Месяц в формате двух цифр (например, "01" для января)
"module/time" = {
type = "internal/date";
interval = 1;
# format = "🕓 <label>";
# format-prefix = "  ";
# format-prefix-foreground = gruvbox.aqua;
# format-prefix-background = gruvbox.black;
# date = "%A %d %b %Y | %H:%M:%S";
date = "%d %B %Y";
time = "%H:%M:%S";
date-alt = "%d-%m-%Y"; # If defined, clicking will toggle between formats
# time-alt = "%H:%M:%S"; # If defined, clicking will toggle between formats
label = "%date% %time%";
# label-foreground = gruvbox.cream;
# label-background = gruvbox.dark;
# label-font = 3;
label-padding-left = 2;
label-padding-right = 2;
};
"module/xkeyboard" = {
type = internal/xkeyboard;
blacklist-0 = "num lock";
blacklist-1 = "scroll lock";
format = "<label-layout> <label-indicator>";
label-layout-padding = 1;
label-layout-foreground = "#fff";
label-indicator-on = "%name%";
# layout-icon-default = "some-icon";
layout-icon-0 = "RU";
layout-icon-1 = "EN";
label-indicator-on-capslock = "!";
label-indicator-off-capslock = "";
};
"module/tray" = {
type = "internal/tray";
format = <tray>;
# format-prefix = " 󱊖 ";
# format-prefix-foreground = gruvbox.orange;
# format-prefix-background = gruvbox.black;
tray-spacing = "8px";
# tray-size = "66%"; # relative to bar height, non-negative
format-padding = "5px";
# format-background = gruvbox.black;
# tray-background = gruvbox.black;
# tray-foreground = gruvbox.cream; # сам добавил
};
"module/pulseaudio" = {
type = "internal/pulseaudio";
format-volume-prefix = " ";
# format-volume-prefix-foreground = gruvbox.blue-alt;
# format-volume-prefix-background= gruvbox.black;
format-volume = "<label-volume>";
label-volume = "%percentage%%";
# label-volume-foreground= gruvbox.cream;
# label-volume-background= gruvbox.dark;
label-volume-padding-left=2;
label-volume-padding-right=2;
format-muted-prefix = " ";
# format-muted-foreground = gruvbox.orange;
# format-muted-background = gruvbox.black;
label-muted = "muted";
# label-muted-foreground = gruvbox.orange-mat;
# label-muted-background = gruvbox.dark;
label-muted-padding = 2;
};
"module/memory" = {
type = "internal/memory";
interval = 3;
# format-prefix = "  ";
# format-prefix-foreground = gruvbox.blue;
# format-prefix-background = gruvbox.black;
label = "RAM: %gb_used%/%gb_total% | SWAP: %gb_swap_used%/%gb_swap_total%";
# label-foreground = gruvbox.cream;
# label-background = gruvbox.dark;
label-padding-left = 2;
label-padding-right = 2;
};
"module/battery" = {
type = internal/battery;
full-at = 98;
low-at = 20;
battery = "BAT0";
adapter = "ADP1";
poll-interval = 5;
time-format = "%H:%M";
format-charging = "<animation-charging><label-charging>";
# format-charging-foreground = gruvbox.green;
# format-charging-background = gruvbox.black;
label-charging = "%percentage%%";
# label-charging-foreground = gruvbox.cream;
# label-charging-background = gruvbox.dark;
label-charging-padding= 2;
format-discharging = "<ramp-capacity><label-discharging>";
# format-discharging-foreground = gruvbox.green-alt;
# format-discharging-background = gruvbox.black;
label-discharging = "%percentage%%";
# label-discharging-foreground = gruvbox.cream;
# label-discharging-background = gruvbox.dark;
label-discharging-padding = 2;
format-full-prefix = " ";
# format-full-foreground = gruvbox.aqua;
# format-full-background = gruvbox.black;
label-full = "%percentage%%";
# label-full-foreground = gruvbox.cream;
# label-full-background = gruvbox.dark;
label-full-padding = 2;
label-low = "[ BATTERY LOW ] %percentage%%";
# label-low-foreground = gruvbox.black;
# label-low-background = gruvbox.red-alt;
label-low-padding = 2;
# Only applies if <ramp-capacity> is used
ramp-capacity-0 = " ";
ramp-capacity-1 = " ";
ramp-capacity-2 = " ";
ramp-capacity-3 = " ";
ramp-capacity-4 = " ";
ramp-capacity-0-padding = 3;
ramp-capacity-1-padding = 3;
ramp-capacity-2-padding = 3;
ramp-capacity-3-padding = 3;
ramp-capacity-4-padding = 3;
# ramp-capacity-0-foreground = gruvbox.red-alt;
# ramp-capacity-1-foreground = gruvbox.green-alt;
# ramp-capacity-2-foreground = gruvbox.green-alt;
# ramp-capacity-3-foreground = gruvbox.green-alt;
# ramp-capacity-4-foreground = gruvbox.green-alt;
# ramp-capacity-0-background = gruvbox.black;
# ramp-capacity-1-background = gruvbox.black;
# ramp-capacity-2-background = gruvbox.black;
# ramp-capacity-3-background = gruvbox.black;
# ramp-capacity-4-background = gruvbox.black;
# Only applies if <bar-capacity> is used
bar-capacity-width = 10;
# Only applies if <animation-charging> is used
animation-charging-0 = " ";
animation-charging-1 = " ";
animation-charging-2 = " ";
animation-charging-3 = " ";
animation-charging-4 = " ";
animation-charging-framerate = 750;
animation-charging-0-padding = 3;
animation-charging-1-padding = 3;
animation-charging-2-padding = 3;
animation-charging-3-padding = 3;
animation-charging-4-padding = 3;
# Animation-charging color
# animation-charging-0-foreground = gruvbox.green;
# animation-charging-1-foreground = gruvbox.green;
# animation-charging-2-foreground = gruvbox.green;
# animation-charging-3-foreground = gruvbox.green;
# animation-charging-4-foreground = gruvbox.green;
# animation-charging-0-background = gruvbox.black;
# animation-charging-1-background = gruvbox.black;
# animation-charging-2-background = gruvbox.black;
# animation-charging-3-background = gruvbox.black;
# animation-charging-4-background = gruvbox.black;
# Only applies if <animation-discharging> is used;
animation-discharging-0 = "[ ]";
animation-discharging-1 = "[ ]";
animation-discharging-2 = "[ ]";
animation-discharging-3 = "[ ]";
animation-discharging-4 = "[ ]";
animation-discharging-framerate = 500;
animation-discharging-0-padding = 1;
animation-discharging-1-padding = 1;
animation-discharging-2-padding = 1;
animation-discharging-3-padding = 1;
animation-discharging-4-padding = 1;
# Animation discharging color
# animation-discharging-0-foreground = gruvbox.cream;
# animation-discharging-1-foreground = gruvbox.cream;
# animation-discharging-2-foreground = gruvbox.cream;
# animation-discharging-3-foreground = gruvbox.cream;
# animation-discharging-4-foreground = gruvbox.cream;
# animation-discharging-0-background = gruvbox.green-alt;
# animation-discharging-1-background = gruvbox.green-alt;
# animation-discharging-2-background = gruvbox.green-alt;
# animation-discharging-3-background = gruvbox.green-alt;
# animation-discharging-4-background = gruvbox.green-alt;
animation-low-0 = "!";
animation-low-1 = "!!";
animation-low-framerate = 200;
};
"module/cpu" = {
type = "internal/cpu";
warn-percentage = 95;
label = "CPU %percentage%%";
label-warn = "CPU %percentage%%";
};
# Full path of temperature sysfs path
# Use `sensors` to find preferred temperature source, then run
# $ for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done
# to find path to desired file
# Default reverts to thermal zone setting
"module/cpu-temp" = {
type = "internal/temperature";
hwmon-path = "/sys/devices/platform/coretemp.0/hwmon/hwmon4/temp1_input";
warn-temperature = 80;
label = "%temperature-c% °C";
label-warn = "%temperature-c% °C";
# label-warn-foreground = "#f00";
};
"module/gpu-temp" = {
type = "internal/temperature";
hwmon-path = "/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/0000:03:00.0/hwmon/hwmon5/temp3_input";
warn-temperature = 80;
label = "GPU %temperature-c% °C";
label-warn = "GPU %temperature-c% °C";
# label-warn-foreground = "#f00";
};
};
}; };
} }

View file

@ -34,11 +34,11 @@
}; };
}; };
# Заменил на greenclip, который включается как сервис в packages.nix # Мб заменю на greenclip, который включается как сервис в packages.nix
# services.clipmenu = { # https://github.com/cdown/clipmenu services.clipmenu = { # https://github.com/cdown/clipmenu
# enable = true; enable = true;
# launcher = "rofi"; launcher = "rofi";
# }; };
# home.file = { # home.file = {
# ".config/rofi".source = "config.rasi"; # ".config/rofi".source = "config.rasi";

View file

@ -1,28 +1,8 @@
# Можно запускать софт через "${pkgs.betterlockscreen}/bin/betterlockscreen -l dimblur"; # Можно запускать софт через "${pkgs.betterlockscreen}/bin/betterlockscreen -l dimblur";
# Но мне лень столько текста делать. И так сойдёт # Но мне лень столько текста делать. И так сойдёт
# Стандартный конфиг https://github.com/baskerville/bspwm/blob/master/examples/sxhkdrc
# Удалить потом
# toggleMute = "pamixer -t; dunstify \"t2\" -a \"$(if [ \"$(pamixer --get-mute)\" = \"true\" ]; then echo \" Muted\"; else echo \" Unmuted\"; fi)\" -r 91190 -t 8000";
# toggleMicMute = "pamixer --default-source -t; dunstify \"t2\" -a \"$(if [ \"$(pamixer --default-source --get-mute)\" = \"true\" ]; then echo \" Muted\"; else echo \" Unmuted\"; fi)\" -r 91190 -t 8000";
# "XF86AudioMute" = toggleMute; # Toggle mute
# "XF86AudioMicMute" = toggleMicMute; # Toggle microphone mute
# "XF86AudioLowerVolume" = "pamixer -d 5; dunstify \"t2\" -a \" Volume: $(pamixer --get-volume)\" -r 91190 -t 800"; # Decrease volume
# "XF86AudioRaiseVolume" = "pamixer -i 5; dunstify \"t2\" -a \" Volume: $(pamixer --get-volume)\" -r 91190 -t 800"; # Increase volume
let let
# dunstify = "dunstify \"t2\" -a";
# dunstifyMuteText = "\" = \"true\" ]; then echo \" Muted\"; else echo \" Unmuted\"; fi)\" -r 91190 -t 8000";
# dunstifyMute = "${dunstify} \"$(if [ \"$(pamixer --get-mute)${dunstifyMuteText}";
# dunstifyMicMute = "${dunstify} \"$(if [ \"$(pamixer --default-source --get-mute)${dunstifyMuteText}";
# dunstifyVolume = "${dunstify} \" Volume: $(pamixer --get-volume)\" -r 91190 -t 800";
# Выше нечитабельный ад, который превращается в это
# dunstify "t2" -a "$(if [ "$(pamixer --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000
# dunstify "t2" -a "$(if [ "$(pamixer --default-source --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000
# dunstify "t2" -a " Volume: $(pamixer --get-volume)" -r 91190 -t 800
# Это оповещения о состоянии мута и о громкости звука.
# Мб можно без экранирования сделать через ``такой синтаксис``
notifyMute = ''dunstify "t2" -a "$(if [ "$(pamixer --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000''; notifyMute = ''dunstify "t2" -a "$(if [ "$(pamixer --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000'';
notifyMicMute = ''dunstify "t2" -a "$(if [ "$(pamixer --default-source --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000''; notifyMicMute = ''dunstify "t2" -a "$(if [ "$(pamixer --default-source --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000'';
notifyVolume = ''dunstify "t2" -a " Volume: $(pamixer --get-volume)" -r 91190 -t 800''; notifyVolume = ''dunstify "t2" -a " Volume: $(pamixer --get-volume)" -r 91190 -t 800'';
@ -30,9 +10,12 @@ let
# -r 91190: Это идентификатор уведомления (notification ID). Уведомления с одинаковым ID будут заменять друг друга. # -r 91190: Это идентификатор уведомления (notification ID). Уведомления с одинаковым ID будут заменять друг друга.
# -t 800: Это время в миллисекундах, через которое уведомление будет автоматически закрыто. # -t 800: Это время в миллисекундах, через которое уведомление будет автоматически закрыто.
# Взято отсюда https://my-take-on.tech/2020/07/03/some-tricks-for-sxhkd-and-bspwm/
rofiClipmenu = "rofi clipmenu -location 1 -m -3 -no-show-icons -theme-str '* \{ font: 10px; \}' -theme-str 'listview \{ spacing: 0; \}' -theme-str 'window \{ width: 20em; \}'";
terminalFirst = "alacritty"; terminalFirst = "alacritty";
terminalSecond = "kitty"; terminalSecond = "kitty";
in { # https://github.com/baskerville/bspwm/blob/master/examples/sxhkdrc in {
services.sxhkd = { # Бинды системы https://manpages.org/sxhkd services.sxhkd = { # Бинды системы https://manpages.org/sxhkd
enable = true; enable = true;
@ -72,7 +55,7 @@ in { # https://github.com/baskerville/bspwm/blob/master/examples/sxhkdrc
"super + a" = "rofi -show drun"; # Applications. Запускатор софта "super + a" = "rofi -show drun"; # Applications. Запускатор софта
#"super + c" = ""; # Calculator имбовый. Можно даже написать `5600 USD to BTC` или `500 + 25%`. #"super + c" = ""; # Calculator имбовый. Можно даже написать `5600 USD to BTC` или `500 + 25%`.
#"super + p" = ""; # Passwords. Пароли из утилиты pass #"super + p" = ""; # Passwords. Пароли из утилиты pass
#"super + v" = ""; # История буфера обмена. Как ctrl+v, но через win. "super + v" = "${rofiClipmenu}"; # История буфера обмена. Как ctrl+v, но через win.
#"super + tab" = ""; # Как alt+tab, переключение окон. На нужный воркспейс само перекинет #"super + tab" = ""; # Как alt+tab, переключение окон. На нужный воркспейс само перекинет
#"super + alt + t" = ""; # Timer. Думаю сделать через утилиту timer #"super + alt + t" = ""; # Timer. Думаю сделать через утилиту timer
#"super + shift + n" = ""; # Notification history. История оповещений. Мб не делать #"super + shift + n" = ""; # Notification history. История оповещений. Мб не делать

View file

@ -1,6 +1,7 @@
{ {
imports = [ imports = [
./env.nix ./env.nix
./hardware.nix
./locale.nix ./locale.nix
./network.nix ./network.nix
./sound.nix ./sound.nix

View file

@ -0,0 +1,70 @@
# Часть настроек меняется в xserver.nix и network.nix
# Некоторые настройки под конкретное железо https://github.com/NixOS/nixos-hardware
{ pkgs, ... }: {
hardware = { # Параметры для 24.05 и unstable могут сильно отличаться
# Список пакетов-драйверов, которые будут активированы лишь при нахождении подходящего оборудования
# firmware = with pkgs; [];
# Мало раскомментить. Надо настроить при необходимости
# fancontrol = {};
# В стоке false. Не понял зачем надо, сохранил из интереса
# enableAllFirmware = true;
# Разные способы управлять яркостью экрана и подсветки для юзеров в группе video
# Подробности тут https://wiki.archlinux.org/title/Backlight#Backlight_utilities
# brillo.enable = true;
# acpilight.enable = true;
amdgpu = {
opencl.enable = true; # # Enable OpenCL support using ROCM runtime library.
amdvlk = {
enable = true; # Enable AMDVLK Vulkan driver.
support32Bit.enable = true; # Enable 32-bit driver support.
supportExperimental.enable = true; # Enable Experimental features support.
# settings = {}; # Runtime settings for AMDVLK to be configured /etc/amd/amdVulkanSettings.cfg.
};
};
graphics = { # hardware.opengl переименован в hardware.graphics в unstable ветке
enable = true;
enable32Bit = true; # install 32-bit drivers for 32-bit applications (such as Wine).
extraPackages = with pkgs; [ # Мб часть пакетов стоит удалить отсюда и закинуть в обычные пакеты
amdvlk # AMD Open Source Driver For Vulkan
vulkan-tools
dxvk # Чтоб wine игры запускались через vulkan, а не opengl (Direct3D 8/9/10/11)
vkd3d # Чтоб wine игры запускались через vulkan, а не opengl (Direct3D 12)
# vkbasalt # Баф Vulkan для улучшения визуальной графики игр https://github.com/DadSchoorse/vkBasalt
libva # VAAPI (Video Acceleration API)
libva-utils # VAAPI (Video Acceleration API)
rocmPackages.clr.icd # OpenCL
clinfo # Проверяет работает ли OpenCL?
];
# extraPackages32 = with pkgs; [ # 32 bit
# driversi686Linux.amdvlk # Vulkan support for 32-bit applications
# ];
};
opentabletdriver.enable = true; # Установить, настроить и добавить в автозапуск otd
keyboard.qmk.enable = true; # Еnable non-root access to the firmware of QMK keyboards.
};
# HIP
# Most software has the HIP libraries hard-coded. You can work around it on NixOS by using:
# systemd.tmpfiles.rules = [
# "L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
# ];
boot.initrd.kernelModules = [ "amdgpu" ];
# Для AMD существует два драйвера Vulkan
# Один официальный от AMD - amdvlk
# Второй начат сообществом и сейчас поддерживается Valve - radv
# В разных ситуациях разные драйверы будут лучше работать
# В некоторых играх лучше работает radv, в некоторых amdvlk
# environment.variables.AMD_VULKAN_ICD = "RADV";
}

View file

@ -1,10 +1,56 @@
{ # Не совсем понял как менять тему в sddm. Но мне оно не надо. Оставлю ссылки
# https://www.reddit.com/r/NixOS/comments/14sb6s2/sddm_themes_finally_did_a_dumb_workaround/
# https://www.reddit.com/r/NixOS/comments/14dlvbr/sddm_theme/
{ pkgs, ... }: {
services.xserver = { services.xserver = {
enable = true; enable = true;
windowManager.bspwm.enable = true; windowManager.bspwm.enable = true;
displayManager = { displayManager = {
sddm.enable = true; # Вход в систему # sddm = { # Display manager от kde
# enable = true; # Вход в систему
# theme = pkgs.sddm-sugar-dark; # https://github.com/MarianArlt/sddm-sugar-dark
# };
lightdm = { # Минималистичный display manager
enable = true;
# background = "./bg.png";
greeters = {
tiny.enable = true; # Фул минималистичная тема без ничего
# gtk = { # GTK тема с кучей настроек. Я поставил сток настройки как шаблон
# enable = true;
# cursorTheme = {
# size = 16;
# package = pkgs.adwaita-icon-theme;
# name = "Adwaita";
# };
# iconTheme = {
# package = pkgs.adwaita-icon-theme;
# name = "Adwaita";
# };
# theme = {
# package = pkgs.gnome-themes-extra;
# name = "Adwaita";
# };
# indicators = [
# "~host"
# "~spacer"
# "~clock"
# "~spacer"
# "~session"
# "~language"
# "~a11y"
# "~power"
# ];
# clock-format = "%H:%M:%S %d.%m.%y";
# extraConfig = "";
# };
};
};
defaultSession = "none+bspwm"; # only effective for GDM, LightDM and SDDM defaultSession = "none+bspwm"; # only effective for GDM, LightDM and SDDM
}; };
@ -26,7 +72,11 @@
}; };
}; };
# videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU # Мб видеодрайвер можно не указывать
# https://discourse.nixos.org/t/amd-gpu-optimal-settings/27648/3
# videoDrivers = [ "nvidia" ]; # https://nixos.wiki/wiki/Nvidia
videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
# deviceSection = ''Option "TearFree" "True"''; # deviceSection = ''Option "TearFree" "True"'';
}; };
} }

View file

@ -31,7 +31,7 @@ in {
users.${username} = { users.${username} = {
isNormalUser = true; isNormalUser = true;
description = username; description = username;
extraGroups = [ "networkmanager" "wheel" "input" "libvirtd" "storage" "docker" ]; extraGroups = [ "networkmanager" "wheel" "input" "libvirtd" "storage" "docker" "video" ];
# packages = with pkgs; []; # packages = with pkgs; [];
}; };
}; };

View file

@ -11,6 +11,10 @@
username = "buliway"; username = "buliway";
homeDirectory = "/home/buliway"; homeDirectory = "/home/buliway";
# Если с каким-то софтом будут проблемы, то можно перенести из "packages.nix" сюда
# Например, я читал, что если ставить vscode через configuration.nix, а не через пакеты юзера,
# то не получится ставить расширения. Потому что там софт ставится от рута и vscode
# будет пытаться установить расширения в каталог nix store, куда нельзя что либо ставить без рута.
packages = with pkgs; [ packages = with pkgs; [
]; ];

View file

@ -6,18 +6,20 @@
gvfs.enable = true; # Mount, trash, and other functionalities for Thunar file manager gvfs.enable = true; # Mount, trash, and other functionalities for Thunar file manager
tumbler.enable = true; # Thumbnail support for Thunar file manager tumbler.enable = true; # Thumbnail support for Thunar file manager
unclutter.enable = true; # Enable unclutter to hide your mouse cursor when inactive unclutter.enable = true; # Enable unclutter to hide your mouse cursor when inactive
greenclip.enable = true; # Clipboard manager. https://github.com/erebe/greenclip # greenclip.enable = true; # https://github.com/erebe/greenclip (использую clipmenu вместо этого)
openssh.enable = true; # Потом удали. Это ставится на виртуалку, чтоб к ней конект по ssh работал. openssh.enable = true; # Потом удали. Это ставится на виртуалку, чтоб к ней конект по ssh работал.
spice-vdagentd.enable = true; # Общий буфер обмена с виртуалкой spice-vdagentd.enable = true; # Общий буфер обмена с виртуалкой
#fstrim.enable = true; # Чистит ssd для норм производительности. Пока не пользуюсь # fstrim.enable = true; # Чистит ssd для норм производительности. Пока не пользуюсь
# archisteamfarm = {}; # Фарм карточек стима афк. Простро раскомментить мало, надо настроить
}; };
programs = { programs = {
mtr.enable = true; mtr.enable = true; # Объединяет функции утилит traceroute и ping
gnupg.agent = { gnupg.agent = {
enable = true; enable = true;
enableSSHSupport = true; enableSSHSupport = true;
}; };
thunar = { # Can't I use it with home-manager? WTF thunar = { # Can't I use it with home-manager? WTF
enable = true; enable = true;
plugins = with pkgs.xfce; [ plugins = with pkgs.xfce; [
@ -27,17 +29,78 @@
]; ];
}; };
xfconf.enable = true; # For Thunar configs xfconf.enable = true; # For Thunar configs
# Параметры запуска для игр, чтоб юзать все доступные бафы, что я сделал
# Параметр запуска без использования gamescope:
# mangohud gamemoderun %command%
# Параметр запуска с использованием gamescop:
# gamescope --mangoapp gamemoderun %command%
# Если надо печатать на русском языке, то добавать в начало LC_ALL="ru_RU.UTF-8"
# FSR в proton-ge включается только в фулскрине через WINE_FULLSCREEN_FSR=1
# Регулировать резкость можно через переменную окружения WINE_FULLSCREEN_FSR_STRENGTH=N,
# где N - это уровень резкости изображения от 0 до 5. Чем выше значение, тем меньше резкость.
# По умолчанию установлено значение "2", рекомендуют использовать значение "3".
steam = {
enable = true;
extraCompatPackages = with pkgs; [ # Доп версии протона. Должны иметь `steamcompattool` output
proton-ge-bin
];
# fontPackages = with pkgs; []; # Font packages to use in Steam
# extraPackages = with pkgs; []; # Additional
# protontricks.enable = true; # Running Winetricks commands for Proton-enabled games.
# remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
# dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
# localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
# Я хз надо ли оно мне. https://github.com/ValveSoftware/gamescope
# Помню как на Hyprland пытался этим fsr включить.
# Качество картинки было таким, будто я головой в анус залез
# Подробносни тут https://ventureo.codeberg.page/source/linux-gaming.html#gamescope
gamescopeSession = { # Run a GameScope driven Steam session from your display-manager
enable = true;
# args = []; # Arguments to be passed to GameScope for the session.
# env = {}; # Environmental variables to be passed to GameScope for the session.
};
# package = pkgs.steam.override {
# extraEnv = {
# MANGOHUD = true;
# OBS_VKCAPTURE = true;
# # RADV_TEX_ANISO = 16; # Улучшает качество текстур с драйвером radv?
# };
# extraPkgs = pkgs: with pkgs; [
# xorg.libXcursor xorg.libXi xorg.libXinerama xorg.libXScrnSaver
# libpng libpulseaudio libvorbis stdenv.cc.cc.lib
# libkrb5 keyutils
# ];
# extraLibraries = p: with p; [ atk ]; # почему тут with p, а не pkgs?
# extraLibraries = pkgs: with pkgs; [ gperftools pkgsi686Linux.gperftools ];
# };
};
# Оптимизация для игр. https://github.com/FeralInteractive/gamemode
gamemode.enable = true;
}; };
# Многое из этого продублировано в home-manager. Мне так удобней # Многое из этого продублировано в home-manager. Мне так удобней
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
######################
## Программирование ##
######################
# Это рекомендуют ставить не на всю систему, # Это рекомендуют ставить не на всю систему,
# а только на nix shell внутри проекта, где нужны эти пакеты # а только на nix shell внутри проекта, где нужны эти пакеты
go
rustup
# Архивы go # Go programming language
rustup # Управление версиями языка Rust
nil # Nix language server
hugo # Для моего блога
############
## Архивы ##
############
zip # Архивировать zip # Архивировать
unzip # Разархивировать unzip # Разархивировать
unrar # Разархивировать unrar # Разархивировать
@ -45,7 +108,10 @@
_7zz # Это пакет для 7z? _7zz # Это пакет для 7z?
bzip2 # .bz2 архивы bzip2 # .bz2 архивы
# Разное для терминала ##############
## Terminal ##
##############
wget wget
curl curl
git git
@ -65,8 +131,7 @@
playerctl # Command-line utility and library for controlling media players that implement MPRIS playerctl # Command-line utility and library for controlling media players that implement MPRIS
xdotool # Fake keyboard/mouse input, window management, and more. Автоматизация xdotool # Fake keyboard/mouse input, window management, and more. Автоматизация
zscroll # A text scroller for use with panels and shells https://github.com/noctuid/zscroll zscroll # A text scroller for use with panels and shells https://github.com/noctuid/zscroll
tokei # Показывает количество строк кода на разных языках внутри каталога
pass # Менеджер паролей в терминале pass # Менеджер паролей в терминале
btop # Монитор ресурсов в терминале btop # Монитор ресурсов в терминале
yt-dlp # Скачивать и смотреть медиа с разных сайтов yt-dlp # Скачивать и смотреть медиа с разных сайтов
@ -74,17 +139,20 @@
timer # A "sleep" with progress. Таймер на пельмени "timer 5m" timer # A "sleep" with progress. Таймер на пельмени "timer 5m"
libqalculate # Advanced calculator library libqalculate # Advanced calculator library
fastfetch # Пишешь в теримнал и кидаешь всем со словами I use nixos btw fastfetch # Пишешь в теримнал и кидаешь всем со словами I use nixos btw
# zsh-nix-shell # zsh plugin that lets you use zsh in nix-shell shell
alacritty # Минималистичный терминал. Основной у меня alacritty # Минималистичный терминал. Основной у меня
kitty # Самый быстрый протокол отображения медиа, но ssh через жопу работает kitty # Самый быстрый протокол отображения медиа, но ssh через жопу работает
# GUI #########
## GUI ##
#########
nekoray # VPN # TODO: Настройки надо сделать декларативными nekoray # VPN # TODO: Настройки надо сделать декларативными
ksnip # Скрины. Аналоги - Flameshot # TODO: Настройки надо сделать декларативными ksnip # Скрины. Аналоги - Flameshot # TODO: Настройки надо сделать декларативными
kdePackages.ark # Архиватор kdePackages.ark # Архиватор
qbittorrent # Торренты качать qbittorrent # Торренты качать
thunderbird # Почтовый клиент для своей почты thunderbird # Почтовый клиент для своей почты
opentabletdriver # Дрова на графический планшет # TODO: Настройки надо сделать декларативными?
screenkey # A screencast tool to display your keys screenkey # A screencast tool to display your keys
pavucontrol # PulseAudio Volume Control pavucontrol # PulseAudio Volume Control
# pwvucontrol # Pipewire Volume Control (Не знаю может ли полностью заменить pavucontrol) # pwvucontrol # Pipewire Volume Control (Не знаю может ли полностью заменить pavucontrol)
@ -92,17 +160,24 @@
brightnessctl # Brightness control for laptop brightnessctl # Brightness control for laptop
gcolor3 # GUI color picker gcolor3 # GUI color picker
xcolor # CLI color picker https://github.com/Soft/xcolor xcolor # CLI color picker https://github.com/Soft/xcolor
# goverlay # UI для редактирования конфигов. Мне для mangohud нужен
##############
## Browsers ##
##############
# Browsers
librewolf librewolf
firefox firefox
chromium chromium
ff2mpv # Open online videos in mpv ff2mpv # Open online videos in mpv
lynx # Текстовый браузер в терминале. Без картинок lynx # Текстовый браузер в терминале. Без картинок
# Docs ##########
## Docs ##
##########
evince # Смотреть документы (так же превью PDF файлов для Thunar) (не читает FB2) evince # Смотреть документы (так же превью PDF файлов для Thunar) (не читает FB2)
#papers # Я так понимаю это современная замена для evince под GTK4. Оба от gnome # papers # Я так понимаю это современная замена для evince под GTK4. Оба от gnome
libreoffice # Редактировать документы libreoffice # Редактировать документы
hunspell # Проверка орфографии для libreoffice hunspell # Проверка орфографии для libreoffice
hunspellDicts.ru_RU # Словарь для проверки орфографии hunspellDicts.ru_RU # Словарь для проверки орфографии
@ -110,7 +185,10 @@
calibre # Работа с ebook. Иногда даёт thumbnail в файловом менеджере calibre # Работа с ebook. Иногда даёт thumbnail в файловом менеджере
drawio # Desktop application for creating diagrams. Вроде даёт thumbnail в ranger drawio # Desktop application for creating diagrams. Вроде даёт thumbnail в ranger
# File managers ###################
## File managers ##
###################
yazi # Terminal file manager yazi # Terminal file manager
ranger # Terminal file manager ranger # Terminal file manager
xfce.thunar # GUI file manager (допы выше в `programs` и `services`) xfce.thunar # GUI file manager (допы выше в `programs` и `services`)
@ -122,7 +200,10 @@
f3d # Fast and minimalist 3D viewer using VTK. Thumbnailer for 3D files, including glTF, stl, step, ply, obj, fbx. f3d # Fast and minimalist 3D viewer using VTK. Thumbnailer for 3D files, including glTF, stl, step, ply, obj, fbx.
openscad # 3D model previews (stl, off, dxf, scad, csg). Этот именно для ranger, но мб пригодится и в других местах openscad # 3D model previews (stl, off, dxf, scad, csg). Этот именно для ranger, но мб пригодится и в других местах
# File support ##################
## File support ##
##################
kdePackages.kimageformats # Image format plugins for Qt 6 kdePackages.kimageformats # Image format plugins for Qt 6
kdePackages.qtimageformats # Plugins for additional image formats: TIFF, MNG, TGA, WBMP kdePackages.qtimageformats # Plugins for additional image formats: TIFF, MNG, TGA, WBMP
kdePackages.qtsvg # SVG support kdePackages.qtsvg # SVG support
@ -140,7 +221,10 @@
imath # EXR format support imath # EXR format support
openexr # High dynamic-range (HDR) image file format openexr # High dynamic-range (HDR) image file format
# Media ###########
## Media ##
###########
strawberry # Музыкальный плеер # TODO: Настройки надо сделать декларативными strawberry # Музыкальный плеер # TODO: Настройки надо сделать декларативными
obs-studio # Запись видео # TODO: Настройки надо сделать декларативными obs-studio # Запись видео # TODO: Настройки надо сделать декларативными
picard # Массовый редактор метаданных музыки picard # Массовый редактор метаданных музыки
@ -151,31 +235,63 @@
qview # Смотреть картинки 2. Если imv не может что-то открыть qview # Смотреть картинки 2. Если imv не может что-то открыть
viewnior # До перехода на wayland юзал его. Если сортирует лучше imv, то удалить imv viewnior # До перехода на wayland юзал его. Если сортирует лучше imv, то удалить imv
# Social ############
## Social ##
############
(pkgs.discord.override { # Discord (pkgs.discord.override { # Discord
withOpenASAR = true; # Оптимизатор дискрода? withOpenASAR = true; # Оптимизатор дискрода?
withVencord = true; # Имба плагины # TODO: Настройки надо сделать декларативными withVencord = true; # Имба плагины # TODO: Настройки надо сделать декларативными
}) })
telegram-desktop telegram-desktop
# Games ###########
# steam ## Games ##
# inputs.nix-gaming.packages.${pkgs.system}.osu-stable # osu!stable from nix-gaming ###########
# steam # Мб не надо сюда писать, раз через programs.steam редачу
# inputs.nix-gaming.packages.${pkgs.system}.osu-stable # osu!stable from nix-gaming
# heroic # A Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
# lutris # Запускать игры не из стима
bottles # Минималистичная альтернатива lutris
############
## Design ##
############
# Design
krita # Рисовать 1. Часто крашится krita # Рисовать 1. Часто крашится
gimp # Рисовать 2. Потом выберу что оставить gimp # Рисовать 2. Потом выберу что оставить
blender-hip # 3д графика и рендер видео blender-hip # 3д графика и рендер видео
# Productivity ##################
## Productivity ##
##################
obsidian # Заметки obsidian # Заметки
planify # Task manager planify # Task manager
# IDE (neovim мб не надо писать, он у меня необычный через nixvim flake) #########
vscode ## IDE ##
#########
# neovim # Мб не надо писать, он у меня необычный через nixvim flake
vscode # Мб надо в home.packages писать, чтоб расширения ставились без рута
# vscodium # VSCode без телеметрии и прочего кала. Не имеет обратной совместимости с расширениями vscode # vscodium # VSCode без телеметрии и прочего кала. Не имеет обратной совместимости с расширениями vscode
jetbrains-toolbox jetbrains-toolbox # Если геморрой, то качай IDE отдельно https://nixos.wiki/wiki/Jetbrains_Tools
# jetbrains.webstorm
# jetbrains.rust-rover
# jetbrains.pycharm-professional
# jetbrains.goland
# jetbrains.clion
helix # A Kakoune / Neovim inspired editor, written in Rust. helix # A Kakoune / Neovim inspired editor, written in Rust.
###########
## Other ##
###########
qmk # Прошивка для моих раздельных клавиатур
vial # GUI для qmk, если клавиатура поддерживает
]; ];
} }