From 9bbe4cc23b713fb355935f522b159d5de234c368 Mon Sep 17 00:00:00 2001 From: Buliway Date: Sat, 10 Aug 2024 21:27:06 +0300 Subject: [PATCH] full ready, part 1 --- README.md | 61 +++++++++++++++++++- flake.lock | 17 ------ flake.nix | 14 ++++- modules/home-manager/browsers/firefox.nix | 28 --------- modules/home-manager/bundle.nix | 8 +-- modules/home-manager/default-apps.nix | 63 +++++++++++---------- modules/home-manager/gui/vscode.nix | 4 +- modules/home-manager/symlinks.nix | 2 +- modules/home-manager/terminal/alacritty.nix | 22 +------ modules/home-manager/terminal/kitty.nix | 8 +-- modules/home-manager/terminal/zsh.nix | 8 +-- modules/home-manager/wm/bspwm/bspwm.nix | 2 +- modules/home-manager/wm/bspwm/bspwmrc | 4 +- modules/home-manager/wm/dunst.nix | 25 +------- modules/home-manager/wm/rofi/rofi.nix | 3 +- modules/nixos/bundle.nix | 5 +- {nixos => modules/nixos}/filesystems.nix | 0 modules/nixos/hardware.nix | 44 ++++++-------- modules/nixos/sound.nix | 4 +- modules/nixos/stylix.nix | 13 +---- modules/nixos/virtmanager.nix | 15 ----- modules/nixos/virtualisation.nix | 54 ++++++++++++++++++ modules/nixos/xserver.nix | 46 +++------------ nixos/configuration.nix | 11 +++- nixos/hardware-configuration.nix | 40 ------------- nixos/home.nix | 4 +- nixos/packages.nix | 12 +--- 27 files changed, 221 insertions(+), 296 deletions(-) rename {nixos => modules/nixos}/filesystems.nix (100%) delete mode 100644 modules/nixos/virtmanager.nix create mode 100644 modules/nixos/virtualisation.nix delete mode 100644 nixos/hardware-configuration.nix diff --git a/README.md b/README.md index ad76045..ac15026 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Это мои приватные дотсы +Это мои дотсы Железо, на котором это работает: - CPU: i5 10400f @@ -16,6 +16,65 @@ nix-prefetch-git link font = lib.mkForce "JetBrainsMono Nerd Font 11"; ``` +Узнать localhost виртуалки, чтоб конектиться по ssh: +```sh +ip a +``` + +## Другие README файлы в этих дотсах + +- [Копия man page для bspwm с доп инфой](./modules/home-manager/wm/bspwm/bspwm.md) +- [Описание плагинов для mpv](./modules/home-manager/mpv/README.md) + +## Мини гайд по NixOS + +- Одинаковые вещи могут делаться разными способами. Это норма. По началу меня это бесило, когда читал чужие дотсы +- [Плейлист](https://www.youtube.com/playlist?list=PLko9chwSoP-15ZtZxu64k_CuTzXrFpxPE) с английскими видео. Мне больше всего понравились видео под номерами [16](https://youtu.be/a67Sv4Mbxmc), [18](https://youtu.be/b641h63lqy0), [21](https://youtu.be/rEovNpg7J0M), [27](https://youtu.be/ljHkWgBaQWU) и [28](https://youtu.be/JCeYq72Sko0). +- Пакеты искать [тут](https://search.nixos.org/packages). Параметры для сток NixOS [тут](https://search.nixos.org/options). Параметры для home-manager [тут](https://home-manager-options.extranix.com/?query=&release=master). Для моих конфигов надо обязательно искать в unstable ветке, ибо параметры могут отличаться. +- Для системной темы тут используется stylix. Все его параметры можно найти [тут](https://stylix.danth.me/options/nixos.html). + +## Процесс установки + +Сначала качаем nixos kde или nixos gnome вариант и устанавливаем систему через визуальный установщик. + +Дальше есть два способа. Оба нужны, чтоб заменить имя юзера на своё перед установкой моих дотсов. Для этого надо открыть файл `./nixos/configuration.nix` и заменить переменную `username` на ник своего юзера. + +### Первый способ + +Сделать форк этого репозитория. Внести нужные изменения. После установки NixOS временно включить гит и установить систему: +```sh +nix shell -p git +sudo nixos-rebuild boot --flake github:Buliway/nixos-dots --impure +``` +Параметр `boot` делает так, что настройки не применяются сразу. После установки надо будет перезапустить пк. Если хочешь проверить как оно заработает без ребута пк, то используй `switch` вместо `boot`. + +### Второй способ + +После установки NixOS временно включить гит, клонировать репозиторий, изменить нужный файл, ребилдить систему: +```sh +nix shell -p git +git clone https://github.com/Buliway/nixos-dots +nano ~/nixos-dots/nixos/configuration.nix +# Заменить переменную `username` на ник своего юзера +sudo nixos-rebuild boot --impure --flake ~/nixos-dots +``` +Параметр `boot` делает так, что настройки не применяются сразу. После установки надо будет перезапустить пк. Если хочешь проверить как оно заработает без ребута пк, то используй `switch` вместо `boot`. + +## После установки надо + +Это заметка для меня. Каждый ставит то, что ему надо + +- Включить подкачку на 64 гига в `/etc/nixos/hardware-configuration.nix` через такой синтаксис: +```nix + swapDevices = [ { + device = "/swapfile"; + size = 64*1024; # В мегабайтах + } ]; +``` +- Включить автомаунд бекап ссд и сделать симлинк на него в `~/backups` в файле `./modules/nixos/filesystems.nix` и раскомментировать импорт в `./nixos/configuration.nix`. +- Сделать симлинки на все нужные вещи в `./modules/home-manager/symlinks.nix`. Например браузеры я так бекаплю +- Раскомментировать нужные мне настройки звука в `./modules/nixos/sound.nix` + ## Бинды Клавиша `Super` это клавиша `Win` diff --git a/flake.lock b/flake.lock index 3f15bc7..75885cc 100644 --- a/flake.lock +++ b/flake.lock @@ -220,27 +220,10 @@ "type": "github" } }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1722869614, - "narHash": "sha256-7ojM1KSk3mzutD7SkrdSflHXEujPvW1u7QuqWoTLXQU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "883180e6550c1723395a3a342f830bfc5c371f6b", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, "root": { "inputs": { "home-manager": "home-manager", "nixpkgs": "nixpkgs", - "nixpkgs-stable": "nixpkgs-stable", "stylix": "stylix" } }, diff --git a/flake.nix b/flake.nix index ae94716..970a47c 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,7 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05"; + # nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05"; stylix = { url = "github:danth/stylix"; @@ -24,7 +24,17 @@ outputs = { self, nixpkgs, ... }@inputs: let system = "x86_64-linux"; # Не понимаю зачем, если это в hardware.nix указывается - pkgs = nixpkgs.legacyPackages.${system}; + # pkgs = nixpkgs.legacyPackages.${system}; + pkgs = import nixpkgs { + inherit system; + config = { + allowUnfree = true; + permittedInsecurePackages = [ + "python-2.7.18.8" + "electron-25.9.0" + ]; + }; + }; in { nixosConfigurations = { diff --git a/modules/home-manager/browsers/firefox.nix b/modules/home-manager/browsers/firefox.nix index a54740d..80eb972 100644 --- a/modules/home-manager/browsers/firefox.nix +++ b/modules/home-manager/browsers/firefox.nix @@ -12,34 +12,6 @@ # force = true; # }; - # bookmarks = [ - # { - # name = "wikipedia"; - # tags = [ "wiki" ]; - # keyword = "wiki"; - # url = "https://en.wikipedia.org/wiki/Special:Search?search=%s&go=Go"; - # } - # { - # name = "kernel.org"; - # url = "https://www.kernel.org"; - # } - # { - # name = "Nix sites"; - # toolbar = true; - # bookmarks = [ - # { - # name = "homepage"; - # url = "https://nixos.org/"; - # } - # { - # name = "wiki"; - # tags = [ "wiki" "nix" ]; - # url = "https://wiki.nixos.org/"; - # } - # ]; - # } - # ]; - # nativeMessagingHosts.ff2mpv = true; # Чтоб ff2mpv работал # settings = { diff --git a/modules/home-manager/bundle.nix b/modules/home-manager/bundle.nix index 5ca9f7a..75dd4ee 100644 --- a/modules/home-manager/bundle.nix +++ b/modules/home-manager/bundle.nix @@ -1,8 +1,8 @@ { imports = [ - ./browsers/chromium.nix - ./browsers/firefox.nix - ./browsers/librewolf.nix + # ./browsers/chromium.nix + # ./browsers/firefox.nix + # ./browsers/librewolf.nix ./browsers/lynx.nix ./file-managers/ranger/ranger.nix @@ -23,7 +23,7 @@ ./terminal/zellij.nix ./terminal/zsh.nix - # ./wm/bspwm/bspwm.nix + ./wm/bspwm/bspwm.nix ./wm/rofi/rofi.nix ./wm/dunst.nix ./wm/lockscreen.nix diff --git a/modules/home-manager/default-apps.nix b/modules/home-manager/default-apps.nix index 38831e7..587525b 100644 --- a/modules/home-manager/default-apps.nix +++ b/modules/home-manager/default-apps.nix @@ -60,25 +60,25 @@ "audio/x-mpegurl" = [ "mpv.desktop" ]; # Для .m3u. Это файл-плейлист "audio/x-opus+ogg" = [ "mpv.desktop" ]; # What's this? Why not "audio/ogg" and "audio/opus"? # Text - "text/*" = [ "nvim.desktop" ]; # Надо ли заменять это и всё что ниже на NixVim? - "text/css" = [ "nvim.desktop" ]; - "text/csv" = [ "nvim.desktop" ]; - "text/html" = [ "nvim.desktop" "librewolf.desktop" ]; - "text/javascript" = [ "nvim.desktop" ]; - "text/markdown" = [ "nvim.desktop" ]; - "text/plain" = [ "nvim.desktop" ]; - "text/x-asm" = [ "nvim.desktop" ]; - "text/x-c" = [ "nvim.desktop" ]; - "text/x-python" = [ "nvim.desktop" ]; - "application/json" = [ "nvim.desktop" ]; - "application/x-sh" = [ "nvim.desktop" ]; - "application/x-shellscript" = [ "nvim.desktop" ]; - "application/xml" = [ "nvim.desktop" ]; - "application/yaml" = [ "nvim.desktop" ]; + "text/*" = [ "nvim.desktop" "code.desktop" ]; # Надо ли заменять nvim и всё что ниже на NixVim? + "text/css" = [ "nvim.desktop" "code.desktop" ]; + "text/csv" = [ "nvim.desktop" "code.desktop" ]; + "text/html" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ]; + "text/javascript" = [ "nvim.desktop" "code.desktop" ]; + "text/markdown" = [ "nvim.desktop" "code.desktop" ]; + "text/plain" = [ "nvim.desktop" "code.desktop" ]; + "text/x-asm" = [ "nvim.desktop" "code.desktop" ]; + "text/x-c" = [ "nvim.desktop" "code.desktop" ]; + "text/x-python" = [ "nvim.desktop" "code.desktop" ]; + "application/json" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ]; + "application/x-sh" = [ "nvim.desktop" "code.desktop" ]; + "application/x-shellscript" = [ "nvim.desktop" "code.desktop" ]; + "application/xml" = [ "nvim.desktop" "code.desktop" ]; + "application/yaml" = [ "nvim.desktop" "code.desktop" ]; # Мб потом добавить для docs варианты и разные виды архивов и ebook # Other "application/pdf" = [ "org.gnome.Evince.desktop" ]; - "application/x-zerosize" = [ "nvim.desktop" ]; # Файл нулевого размера + "application/x-zerosize" = [ "nvim.desktop" "code.desktop" ]; # Файл нулевого размера "application/zip" = [ "ark.desktop" ]; "application/x-bittorrent" = [ "qbittorrent.desktop" ]; "x-scheme-handler/magnet" = [ "qbittorrent.desktop" ]; @@ -86,6 +86,7 @@ "x-scheme-handler/mailto" = [ "thunderbird.desktop" ]; "x-scheme-handler/jetbrains" = [ "jetbrains-toolbox.desktop" ]; }; + associations.added = { # Дополнительные приложения для нужного файла. Будет в меню "Открыть с помощью" # Images "image/*" = [ "imv.desktop" "qview.desktop" ]; @@ -100,21 +101,21 @@ "image/x-icon" = [ "imv.desktop" "qview.desktop" ]; "image/vnd.microsoft.icon" = [ "imv.desktop" "qview.desktop" ]; # Text - "text/*" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; # Надо ли заменять nvim и всё что ниже на NixVim? - "text/css" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; - "text/csv" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; - "text/html" = [ "nvim.desktop" "code.desktop" "codium.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ]; - "text/javascript" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; - "text/markdown" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; - "text/plain" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; - "text/x-asm" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; - "text/x-c" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; - "text/x-python" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; - "application/json" = [ "nvim.desktop" "code.desktop" "codium.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ]; - "application/x-sh" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; - "application/x-shellscript" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; - "application/xml" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; - "application/yaml" = [ "nvim.desktop" "code.desktop" "codium.desktop" ]; + "text/*" = [ "nvim.desktop" "code.desktop" ]; # Надо ли заменять nvim и всё что ниже на NixVim? + "text/css" = [ "nvim.desktop" "code.desktop" ]; + "text/csv" = [ "nvim.desktop" "code.desktop" ]; + "text/html" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ]; + "text/javascript" = [ "nvim.desktop" "code.desktop" ]; + "text/markdown" = [ "nvim.desktop" "code.desktop" ]; + "text/plain" = [ "nvim.desktop" "code.desktop" ]; + "text/x-asm" = [ "nvim.desktop" "code.desktop" ]; + "text/x-c" = [ "nvim.desktop" "code.desktop" ]; + "text/x-python" = [ "nvim.desktop" "code.desktop" ]; + "application/json" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ]; + "application/x-sh" = [ "nvim.desktop" "code.desktop" ]; + "application/x-shellscript" = [ "nvim.desktop" "code.desktop" ]; + "application/xml" = [ "nvim.desktop" "code.desktop" ]; + "application/yaml" = [ "nvim.desktop" "code.desktop" ]; }; }; } \ No newline at end of file diff --git a/modules/home-manager/gui/vscode.nix b/modules/home-manager/gui/vscode.nix index 67df958..aacdce4 100644 --- a/modules/home-manager/gui/vscode.nix +++ b/modules/home-manager/gui/vscode.nix @@ -1,6 +1,8 @@ { pkgs, ... }: { # https://nixos.wiki/wiki/Visual_Studio_Code programs.vscode = { enable = true; + + # Что-то из этого может пригодиться, если хочу ставить пакеты без декларативности # package = pkgs.vscode.fhs; # Почему в вики написано ".fhs", если пакет называется "-fhs"? # package = pkgs.vscode-with-extensions; # Мб это надо? @@ -34,8 +36,6 @@ ]; userSettings = { - # "workbench.colorTheme" = "Gruvbox Dark Medium"; - # "editor.fontFamily" = "JetBrainsMono Nerd Font"; "telemetry.telemetryLevel" = "off"; "update.showReleaseNotes" = false; }; diff --git a/modules/home-manager/symlinks.nix b/modules/home-manager/symlinks.nix index 6c4f3f2..37cdd46 100644 --- a/modules/home-manager/symlinks.nix +++ b/modules/home-manager/symlinks.nix @@ -2,7 +2,7 @@ let dir = "backups"; # Имя каталога для бекапов. Мб захочу поменять in { home.file = { # В .config этим нельзя кидать - # "${dir}".source = "/mnt/${dir}"; # Чтоб остальные симлинки были от ~/backups + # "${dir}".source = /mnt/${dir}; # Чтоб остальные симлинки были от ~/backups # Secrets # ".password-store".source = "~/${dir}/Backups/.password-store"; # Для утилиты pass diff --git a/modules/home-manager/terminal/alacritty.nix b/modules/home-manager/terminal/alacritty.nix index cb1d66c..1525a19 100644 --- a/modules/home-manager/terminal/alacritty.nix +++ b/modules/home-manager/terminal/alacritty.nix @@ -2,26 +2,10 @@ programs.alacritty = { # Минимализм enable = true; settings = { # https://alacritty.org/config-alacritty.html - window.pandding = { - x = 15; - y = 15; + window.padding = { + x = 5; + y = 5; }; - # font = let - # nerdFont = "JetBrainsMono Nerd Font"; - # in { - # normal = { - # family = nerdFont; - # }; - # bold = { - # family = nerdFont; - # }; - # italic = { - # family = nerdFont; - # }; - # bold_italic = { - # family = nerdFont; - # }; - # }; }; }; diff --git a/modules/home-manager/terminal/kitty.nix b/modules/home-manager/terminal/kitty.nix index 4765b91..d646514 100644 --- a/modules/home-manager/terminal/kitty.nix +++ b/modules/home-manager/terminal/kitty.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: { +{ programs.kitty = { # Быстрое отображение медиа, но кривой SSH enable = true; @@ -7,11 +7,5 @@ enableFishIntegration = true; enableZshIntegration = true; }; - - # font = { # Stylix сам укажет mono шрифт - # name = "JetBrainsMono Nerd Font"; - # package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}; - # size = 9; - # }; }; } \ No newline at end of file diff --git a/modules/home-manager/terminal/zsh.nix b/modules/home-manager/terminal/zsh.nix index 282aa2f..bb54b84 100644 --- a/modules/home-manager/terminal/zsh.nix +++ b/modules/home-manager/terminal/zsh.nix @@ -15,7 +15,7 @@ shellAliases = let flakeDir = "~/dots"; in { - rb = "sudo nixos-rebuild switch --flake ${flakeDir}"; # Применить новый конфиг + rb = "sudo nixos-rebuild switch --impure --flake ${flakeDir}"; # Применить новый конфиг # Можно назвать аналогом "sudo pacman -Su", не "Syu", репу не обновляет upg = "sudo nixos-rebuild switch --upgrade --flake ${flakeDir}"; # Обновить пакеты, но не репозиторий во fleke.lock @@ -43,7 +43,7 @@ oh-my-zsh = { # https://github.com/ohmyzsh/ohmyzsh enable = true; plugins = [ # Комментирую то, в надобности чего не уверен, но показалось интересным. Можно удалить - "alias-finder" # Напомнит, если у написанной команды есть алиас + "alias-finder" # Напомнит, если у написанной команды есть алиас (нет) "aliases" # "als" в терминале покажет все алиасы. Можно добавить слово для фильтрации "autoenv" # If a directory contains an .env file, it will automatically be executed when you cd into it "bgnotify" # Оповещения для долгих комманд. Make sure you have "notify-send" or "kdialog" installed @@ -85,8 +85,8 @@ "universalarchive" # Run "ua "" to compress into an archive file using #"vi-mode" # https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/vi-mode #"watson" # Completion for https://github.com/TailorDev/Watson (CLI to track your time) - "z" # Tracks your most visited directories and allows you to access them with very few keystrokes - #"zoxide" # Как "z", но быстрее и с более сложным и точным алгоритмом для ранжирования директорий + # "z" # Tracks your most visited directories and allows you to access them with very few keystrokes + "zoxide" # Как "z", но быстрее и с более сложным и точным алгоритмом для ранжирования директорий ]; }; }; diff --git a/modules/home-manager/wm/bspwm/bspwm.nix b/modules/home-manager/wm/bspwm/bspwm.nix index a979154..47dabb0 100644 --- a/modules/home-manager/wm/bspwm/bspwm.nix +++ b/modules/home-manager/wm/bspwm/bspwm.nix @@ -1,5 +1,5 @@ { # Управление окнами. В инете примерно ноль нормальной документации с описанием всех параметров. Проклинал - # xsession.windowManager.bspwm = { + # xsession.windowManager.bspwm = { # Походу не надо включать тут, если я симлинк ниже использую # enable = true; # }; diff --git a/modules/home-manager/wm/bspwm/bspwmrc b/modules/home-manager/wm/bspwm/bspwmrc index ef13beb..d24291a 100644 --- a/modules/home-manager/wm/bspwm/bspwmrc +++ b/modules/home-manager/wm/bspwm/bspwmrc @@ -18,14 +18,14 @@ # pgrep -x polybar > /dev/null || polybar & # Запускаем polybar если он не запущен # pgrep -x dunst > /dev/null || dunst & # Запускаем dunst если он не запущен -# ksnip & +ksnip & # nekoray & # obsidian & # planify & lxqt-policykit-agent & # Я ебал рот видеть инет в трее. Замени эту ёбань на rofi и отдельную кнопку в polybar -# nm-applet & +nm-applet & ######################### ## Настройки мониторов ## diff --git a/modules/home-manager/wm/dunst.nix b/modules/home-manager/wm/dunst.nix index f1be843..eefe5ce 100644 --- a/modules/home-manager/wm/dunst.nix +++ b/modules/home-manager/wm/dunst.nix @@ -43,34 +43,23 @@ progress_bar_max_width = 300; # Set the maximum width for the progress bar indicate_hidden = "yes"; # Show how many messages are currently hidden (because of notification_limit). - #transparency = 5; # Прозрачность от 0 до 100%. Требует композитор, например picom. Не вижу смысла его ставить padding = 6; # Padding between text and separator. horizontal_padding = 6; # Horizontal padding. text_icon_padding = 0; # Padding between text and icon. frame_width = 3; # Defines width in pixels of frame around the notification window. Set to 0 to disable. - # frame_color = "#8EC07C"; # Defines color of the frame around the notification window. sort = "no"; # Sort messages by urgency. + separator_height = 2; # Draw a line of "separator_height" pixel height between two notifications. Set to 0 to disable. # Don't remove messages, if the user is idle (no mouse or keyboard input) for longer than idle_threshold seconds. # Set to 0 to disable. # A client can set the 'transient' hint to bypass this. See the rules section for how to disable this if necessary idle_threshold = 0; - separator_height = 2; # Draw a line of "separator_height" pixel height between two notifications. Set to 0 to disable. - # Define a color for the separator. - # possible values are: - # * auto: dunst tries to find a color fitting to the background; - # * foreground: use the same color as the foreground; - # * frame: use the same color as the frame; - # * anything else will be interpreted as a X color. - # separator_color = "frame"; ############ ### Text ### ############ - # font = lib.mkForce "JetBrainsMono Nerd Font 11"; # Перезаписать шрифт от stylix - # The spacing between lines. # If the height is smaller than the font height, it will get raised to the font height. line_height = 3; @@ -213,30 +202,18 @@ urgency_low = { # IMPORTANT: colors have to be defined in quotation marks. # Otherwise the "#" and following would be interpreted as a comment. - # frame_color = "#3B7C87"; - # foreground = "#3B7C87"; - # background = "#191311"; - #background = "#2B313C"; timeout = 4; # Icon for notifications with low urgency, uncomment to enable #default_icon = /path/to/icon; }; urgency_normal = { - # frame_color = "#5B8234"; - # foreground = "#5B8234"; - # background = "#191311"; - #background = "#2B313C"; timeout = 6; # Icon for notifications with normal urgency, uncomment to enable #default_icon = /path/to/icon; }; urgency_critical = { - # frame_color = "#B7472A"; - # foreground = "#B7472A"; - # background = "#191311"; - #background = "#2B313C"; timeout = 8; # Icon for notifications with critical urgency, uncomment to enable #default_icon = /path/to/icon; diff --git a/modules/home-manager/wm/rofi/rofi.nix b/modules/home-manager/wm/rofi/rofi.nix index 03a96e2..25a03d0 100644 --- a/modules/home-manager/wm/rofi/rofi.nix +++ b/modules/home-manager/wm/rofi/rofi.nix @@ -10,7 +10,6 @@ { pkgs, ... }: { # Запускатор софта и не только programs.rofi = { # https://github.com/davatorium/rofi enable = true; - # font = "JetBrainsMono Nerd Font 10"; terminal = "${pkgs.alacritty}/bin/alacritty"; # Path to the terminal which will be used to run console applications location = "center"; # The location rofi appears on the screen. # cycle = true; # Whether to cycle through the results list. @@ -41,6 +40,6 @@ }; # xdg.configFile = { - # "rofi/pidor.rasi".source = config.rasi; + # "rofi/config.rasi".source = config.rasi; # }; } diff --git a/modules/nixos/bundle.nix b/modules/nixos/bundle.nix index 0d51372..e07a25f 100644 --- a/modules/nixos/bundle.nix +++ b/modules/nixos/bundle.nix @@ -1,12 +1,13 @@ { imports = [ - ./env.nix + # ./env.nix # Мб не надо, ибо редачу через home.nix? + # ./filesystems.nix ./hardware.nix ./locale.nix ./network.nix ./sound.nix ./stylix.nix - ./virtmanager.nix + ./virtualisation.nix ./xserver.nix ]; } \ No newline at end of file diff --git a/nixos/filesystems.nix b/modules/nixos/filesystems.nix similarity index 100% rename from nixos/filesystems.nix rename to modules/nixos/filesystems.nix diff --git a/modules/nixos/hardware.nix b/modules/nixos/hardware.nix index b44c0a7..62070da 100644 --- a/modules/nixos/hardware.nix +++ b/modules/nixos/hardware.nix @@ -4,20 +4,6 @@ { 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 = { @@ -32,18 +18,7 @@ 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 ]; }; @@ -51,6 +26,23 @@ keyboard.qmk.enable = true; # Еnable non-root access to the firmware of QMK keyboards. + # Список пакетов-драйверов, которые будут активированы лишь при нахождении подходящего оборудования + # firmware = with pkgs; []; + + # Мало раскомментить. Надо настроить при необходимости + # fancontrol = {}; + + # В стоке false. Не понял зачем надо, сохранил из интереса + # enableAllFirmware = true; + + # Whether to enable firmware with a license allowing redistribution. + # enableRedistributableFirmware = true; + + # Разные способы управлять яркостью экрана и подсветки для юзеров в группе video + # Подробности тут https://wiki.archlinux.org/title/Backlight#Backlight_utilities + # brillo.enable = true; + # acpilight.enable = true; + }; # HIP @@ -59,7 +51,7 @@ # "L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}" # ]; - boot.initrd.kernelModules = [ "amdgpu" ]; + # boot.initrd.kernelModules = [ "amdgpu" ]; # Мб не обязательно # Для AMD существует два драйвера Vulkan # Один официальный от AMD - amdvlk diff --git a/modules/nixos/sound.nix b/modules/nixos/sound.nix index 931a35d..1b2364e 100644 --- a/modules/nixos/sound.nix +++ b/modules/nixos/sound.nix @@ -14,8 +14,8 @@ "10-clock-rate" = { context.properties = { default.clock.rate = 48000; - # Ниже измени под свой пк. У меня цап поддерживает всё это. Можешь оставить только 48000, если не знаешь что ставить - default.clock.allowed-rates = [ 44100 48000 88200 96000 176400 192000 352800 384000 705600 768000 ]; + # Ниже измени под свой пк. У меня цап поддерживает всё это. Можешь закомментить, если не знаешь что ставить + # default.clock.allowed-rates = [ 44100 48000 88200 96000 176400 192000 352800 384000 705600 768000 ]; }; }; # Ниже настройки для минимальной задержки в играх (например osu!stable через wine) diff --git a/modules/nixos/stylix.nix b/modules/nixos/stylix.nix index 138aff8..d13241a 100644 --- a/modules/nixos/stylix.nix +++ b/modules/nixos/stylix.nix @@ -6,7 +6,7 @@ polarity = "dark"; # "light" or "either". Если "either", то он сам определяет что будет красивее base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-medium.yaml"; # Если хочешь генерить тему из обоев, то удали эту строку - image = config.lib.stylix.pixel "base0A"; # Вместо обоев будет заливка фона одним цветом из темы + image = config.lib.stylix.pixel "base00"; # Вместо обоев будет заливка фона одним цветом из темы #image = "./wallpaper.png" # Если хочешь норм обои, то просто укажи путь до изображения cursor = { @@ -17,17 +17,6 @@ fonts = { - # packages = with pkgs; [ - # noto-fonts # Шрифт от гугла, цель которого поддержка всех языков мира - # noto-fonts-cjk-serif # Отображение иероглифов. Версия с засечками - # # noto-fonts-cjk-sans # Отображение иероглифов. Версия без засечек - # carlito # Совместим с Calibri, разработан как его свободная альтернатива. Без засечек - # terminus_font - # inconsolata - # font-awesome - # liberation_ttf - # ]; - # Ширина символов одинаковая monospace = { # default = DejaVu Sans Mono package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}; diff --git a/modules/nixos/virtmanager.nix b/modules/nixos/virtmanager.nix deleted file mode 100644 index f2ba3d8..0000000 --- a/modules/nixos/virtmanager.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ pkgs, ... }: { # Работа с виртуальными машинами - - virtualisation.libvirtd = { # https://nixos.wiki/wiki/Libvirt - - enable = true; - - qemu = { - package = pkgs.qemu_full; - }; - }; - - # Network autostart - `virsh net-autostart default` в терминале - programs.virt-manager.enable = true; # https://nixos.wiki/wiki/Virt-manager - -} \ No newline at end of file diff --git a/modules/nixos/virtualisation.nix b/modules/nixos/virtualisation.nix new file mode 100644 index 0000000..1ab688a --- /dev/null +++ b/modules/nixos/virtualisation.nix @@ -0,0 +1,54 @@ +{ pkgs, ... }: { # Работа с виртуальными машинами + + virtualisation = { + # podman.enable = true; + # waydroid.enable = true; + + # docker = { + # enable = true; + # # daemon.settings = { + # # fixed-cidr-v6 = "fd00::/80"; + # # ipv6 = true; + # # }; + # rootless = { + # enable = true; + # # daemon.settings = { + # # fixed-cidr-v6 = "fd00::/80"; + # # ipv6 = true; + # # }; + # }; + # }; + + # spiceUSBRedirection.enable = true; # Connect USB devices to libvirt VMs, both local and remote. + libvirtd = { # https://nixos.wiki/wiki/Libvirt + enable = true; + qemu.package = pkgs.qemu_full; + }; + }; + + # Network autostart - `virsh net-autostart default` в терминале + programs.virt-manager.enable = true; # https://nixos.wiki/wiki/Virt-manager + + ################################################# + ## Это надо включить на виртуалке, не на хосте ## + ## Позволяет работать virtio драйверу ## + ## Мб на хосте надо в терминал spice-vdagent ## + ################################################# + + # The host must provide the needed virtio serial port under the special name org.qemu.guest_agent.0. + # https://wiki.libvirt.org/Qemu_guest_agent.html#setting-qemu-ga-up + # Ниже xml код для qemu. Но не работает. Я не смог заставить работать виртуалку на virtio + # + # + # + # + + # services = { + # openssh.enable = true; # Потом удали. Это ставится на виртуалку, чтоб к ней конект по ssh работал. + # qemuGuest.enable = true; # Time syncing and scripting + # spice-vdagentd.enable = true; # Clipboard sharing + # spice-webdavd.enable = true; # VirtFS alternative for directory sharing + # qemuGuest.package = pkgs.qemu_full; # Time syncing and scripting + # }; + +} \ No newline at end of file diff --git a/modules/nixos/xserver.nix b/modules/nixos/xserver.nix index 14739f9..523a030 100644 --- a/modules/nixos/xserver.nix +++ b/modules/nixos/xserver.nix @@ -3,7 +3,8 @@ # https://www.reddit.com/r/NixOS/comments/14dlvbr/sddm_theme/ -{ +{ pkgs, ... }: { + services.displayManager = { defaultSession = "none+bspwm"; # only effective for GDM, LightDM and SDDM }; @@ -25,46 +26,13 @@ windowManager.bspwm.enable = true; displayManager = { - # 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 = ""; - # }; - }; + # greeters = { + # tiny.enable = true; # Фул минималистичная тема без ничего + # # gtk.enable = true; # GTK тема с кучей настроек + # }; }; }; @@ -78,7 +46,7 @@ # 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 + # videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU # deviceSection = ''Option "TearFree" "True"''; }; } diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 589fe36..e257daf 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -12,11 +12,18 @@ in { inputs.home-manager.nixosModules.default ../modules/nixos/bundle.nix ./packages.nix - # ./filesystems.nix ]; + boot.kernelPackages = pkgs.linuxPackages_latest; # Ядро линуха, ласт версия + # boot.plymouth.enable = true; # Логотип загрузки вместо спама? + boot.loader = { - systemd-boot.enable = true; + # systemd-boot.enable = true; + grub = { + enable = true; + efiSupport = true; + device = "nodev"; # nodev позволяет не устанавливать grub в конкретное место, но видеть его ui + }; efi.canTouchEfiVariables = true; # kernelParams = [ # https://nixos.wiki/wiki/AMD_GPU#Dual_Monitors # "video=DP-3:1920x1080@165" diff --git a/nixos/hardware-configuration.nix b/nixos/hardware-configuration.nix deleted file mode 100644 index b8190e3..0000000 --- a/nixos/hardware-configuration.nix +++ /dev/null @@ -1,40 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - -{ - imports = - [ (modulesPath + "/profiles/qemu-guest.nix") - ]; - - boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { device = "/dev/disk/by-uuid/1f25a4af-ec4c-4b98-a17f-27b004c11bbf"; - fsType = "ext4"; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/770E-A86E"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; - - swapDevices = [ { - device = "/swapfile"; - size = 16*1024; - } ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; -} diff --git a/nixos/home.nix b/nixos/home.nix index 541a256..e4596d7 100644 --- a/nixos/home.nix +++ b/nixos/home.nix @@ -15,9 +15,7 @@ # Например, я читал, что если ставить vscode через configuration.nix, а не через пакеты юзера, # то не получится ставить расширения. Потому что там софт ставится от рута и vscode # будет пытаться установить расширения в каталог nix store, куда нельзя что либо ставить без рута. - packages = with pkgs; [ - - ]; + # packages = with pkgs; [ ]; sessionVariables = { EDITOR = "nvim"; diff --git a/nixos/packages.nix b/nixos/packages.nix index 9dbbe27..5f3750b 100644 --- a/nixos/packages.nix +++ b/nixos/packages.nix @@ -1,9 +1,4 @@ { pkgs, ... }: { - - nixpkgs.config = { - allowUnfree = true; - permittedInsecurePackages = ["python-2.7.18.8" "electron-25.9.0"]; - }; # https://nixos.wiki/wiki/Fonts fonts.packages = with pkgs; [ @@ -25,8 +20,6 @@ tumbler.enable = true; # Thumbnail support for Thunar file manager unclutter.enable = true; # Enable unclutter to hide your mouse cursor when inactive # greenclip.enable = true; # https://github.com/erebe/greenclip (использую clipmenu вместо этого) - openssh.enable = true; # Потом удали. Это ставится на виртуалку, чтоб к ней конект по ssh работал. - spice-vdagentd.enable = true; # Общий буфер обмена с виртуалкой # fstrim.enable = true; # Чистит ssd для норм производительности. Пока не пользуюсь # archisteamfarm = {}; # Фарм карточек стима афк. Простро раскомментить мало, надо настроить }; @@ -215,7 +208,7 @@ ffmpegthumbnailer # A lightweight video thumbnailer gnome-epub-thumbnailer # Thumbnailer for EPub and MOBI books nufraw-thumbnailer # Thumbnailer for .raw images from digital cameras - mcomix # Comic book reader and image viewer. Thumbnailer for .crb comicbook archives + # mcomix # Comic book reader and image viewer. Thumbnailer for .crb comicbook archives (требует mupdf, который крашит систему) 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, но мб пригодится и в других местах @@ -268,8 +261,8 @@ ## Games ## ########### - # steam # Мб не надо сюда писать, раз через programs.steam редачу # inputs.nix-gaming.packages.${pkgs.system}.osu-stable # osu!stable from nix-gaming + # steam # Мб не надо сюда писать, раз через programs.steam редачу # heroic # A Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac # lutris # Запускать игры не из стима bottles # Минималистичная альтернатива lutris @@ -321,5 +314,4 @@ libva-utils # Проверяет работоспособность VAAPI? clinfo # Проверяет работоспособность OpenCL? ]; - } \ No newline at end of file