commit d0401c8c078b181d33326bb36aaeabe1ae865d9d Author: fox Date: Sat Oct 11 19:10:48 2025 +0500 init diff --git a/README.md b/README.md new file mode 100644 index 0000000..8595746 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Error: гайдов на развертку системы не будет. diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..de7a3f4 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,221 @@ +{ config, lib, pkgs, modulesPath, ... }: { +imports = [ + ./disko.nix + (modulesPath + "/installer/scan/not-detected.nix") +]; + +# Загрузочная функция. +# Имеет параметры загрузчика, +# а так же настройки initrd. +boot = { + initrd = { + availableKernelModules = [ + "xhci_pci" + "ahci" + "ohci_pci" + "ehci_pci" + "usb_storage" + "usbhid" + "sd_mod" + "nvidia_drm" + "nvidia_modeset" + "nvidia" + "nvidia_uvm" + ]; + kernelModules = [ ]; + }; + kernelModules = [ "kvm-amd" ]; + extraModulePackages = [ ]; + loader = { + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot"; + }; + grub = { + efiSupport = true; + device = "nodev"; + useOSProber = true; + }; + }; + plymouth = { + enable = true; + theme = "bgrt"; + }; +}; + +# Настройка интернета. +# Указывание хоста, +# а так же включение интернета. +networking = { + hostName = "lenovo"; + networkmanager.enable = true; + useDHCP = lib.mkDefault true; +}; + +# Часовой пояс. +time.timeZone = "Asia/Yekaterinburg"; + +# Настройка локали. +# как и вся система, +# и консоль. +i18n.defaultLocale = "ru_RU.UTF-8"; +console = { + font = "cyr-sun16"; + keyMap = "ru"; +}; + +# Настройка пользователя. +# указание группы и оболочка. +users.users.fox = { + isNormalUser = true; + extraGroups = [ + "wheel" + "input" + "networkmanager" + "video" + "audio" + ]; + shell = pkgs.zsh; +}; + +# Автозагрузка оконного менеджера. +services.getty.autologinUser = "fox"; +environment.loginShellInit = '' + [[ "$(tty)" == /dev/tty1 ]] && Hyprland +''; + +# Включение защитных утилит. +# тот же sudo для авторизации +# по паролю. +security = { + polkit.enable = true; + sudo = { + enable = true; + extraRules = [{ + commands = [ + { + command = "${pkgs.systemd}/bin/reboot"; + options = [ "NOPASSWD" ]; + } + { + command = "${pkgs.systemd}/bin/poweroff"; + options = [ "NOPASSWD" ]; + }]; + groups = [ "wheel" ]; + }]; + }; +}; + +# Пакеты для всей системы. +# Содержат утилиты и шрифты. +environment = { + systemPackages = with pkgs; [ + # Для никс + nh + home-manager + + # Файлы/документы + neovim + git + tree + wget + unrar + + # Аналитика + fastfetch + btop + + # Компилятор + gcc + + # Для оборудования # + nvidia-vaapi-driver + nv-codec-headers + ffmpeg-full + + dmidecode + nodejs_24 + ]; +}; +fonts = { + packages = with pkgs; [ + cantarell-fonts + noto-fonts + noto-fonts-cjk-sans + noto-fonts-emoji + fira-code-symbols + fira-code + dejavu_fonts + jetbrains-mono + nerd-fonts.symbols-only + nerd-fonts.jetbrains-mono + ]; + fontconfig.defaultFonts.emoji = [ "Noto COlor Emoji" ]; +}; + +# Включение программ через функцию programs.xxxx. +programs = { + adb.enable = true; + gamemode.enable = true; + zsh.enable = true; + gamescope = { + enable = true; + capSysNice = true; + }; + steam = { + enable = true; + gamescopeSession.enable = false; + }; +}; + +# Системные настройки. +# Никс + система. +system.stateVersion = "25.05"; +nixpkgs = { + config.allowUnfree = true; + hostPlatform = lib.mkDefault "x86_64-linux"; +}; +nix.settings.experimental-features = [ "nix-command" "flakes" ]; + +# Сервисы +services = { + xserver.videoDrivers = [ "nvidia" ]; # + desktopManager = { + gnome.enable = true; + plasma6.enable = false; + }; +}; + +# Оборудование +hardware = { + pulseaudio = { + enable = true; + support32Bit = true; + }; + graphics.enable = true; + opengl.enable = true; + nvidia = { # + modesetting.enable = true; + powerManagement = { + enable = false; + finegrained = false; + }; + open = false; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; +}; + +systemd.services.amnezia = { # + enable = true; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Description = "AmneziaVPN-Service starter"; + Type = "simple"; + ExecStart = "${pkgs.amnezia-vpn}/bin/AmneziaVPN-service"; + }; +}; +virtualisation.vmware.host.enable = true; # + +} + diff --git a/disko.nix b/disko.nix new file mode 100644 index 0000000..f279efc --- /dev/null +++ b/disko.nix @@ -0,0 +1,50 @@ +{ inputs, ... }: { + # Импортирование flake модуля. + imports = [ inputs.disko.nixosModules.disko ]; + + # Функция disko. + disko.devices = { + disk = { + # Основные настройки. + # тип девайса и разделы. + default = { + device = "/dev/sda"; # Тип девайса, может быть /dev/nvme0p1... + type = "disk"; + content = { + type = "gpt"; + # Разделы дисков. + partitions = { + # Загрузочный раздел + ESP = { + type = "EF00"; + size = "1G"; # размер раздела + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + # Подкачка + # (на случай если 32 гб заполнятся ;>) + swap = { + size = "10G"; + content = { + type = "swap"; + }; + }; + # Системный раздел + root = { + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..0c2dccf --- /dev/null +++ b/flake.lock @@ -0,0 +1,112 @@ +{ + "nodes": { + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1757508292, + "narHash": "sha256-7lVWL5bC6xBIMWWDal41LlGAG+9u2zUorqo3QCUL4p4=", + "owner": "nix-community", + "repo": "disko", + "rev": "146f45bee02b8bd88812cfce6ffc0f933788875a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1757809953, + "narHash": "sha256-29mlXbfAJhz9cWVrPP4STvVPDVZFCfCOmaIN5lFJa+Y=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "17a10049486f6698fca32097d8f52c0c895542b0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "zen-browser", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1752603129, + "narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1757745802, + "narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "disko": "disko", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "zen-browser": "zen-browser" + } + }, + "zen-browser": { + "inputs": { + "home-manager": "home-manager_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1758601360, + "narHash": "sha256-pvkHU7dAKt4kFXWsIz9PyJiZCJkiO3wR2xPRccPwsfc=", + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "rev": "a3a511b4d7a2f1d729a10e97fd7cb038a41adbd4", + "type": "github" + }, + "original": { + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..388bf2c --- /dev/null +++ b/flake.nix @@ -0,0 +1,50 @@ +{ + description = "furry flake"; + + # Вход. + # Т.е указание к тем флейкам, + # которые необходимы. + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + disko = { + url = "github:nix-community/disko"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # Другие флейки + zen-browser = { + url = "github:0xc000022070/zen-browser-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + # Выход + # Т.е применение функций флейков на + # конфигурацию NixOS. + outputs = { self, nixpkgs, disko, home-manager, ... }@inputs: + # Переменные для быстрой смены параметра, + # И уборка повторяющиехся значений. + let + system = "x86_64-linux"; + host = "lenovo"; + nick = "fox"; + in { + # Применение входных флейков на системную конфигурацию. + nixosConfigurations.${host} = inputs.nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + modules = [ /home/fox/conf/configuration.nix disko.nixosModules.disko ]; + }; + + # Указание флейку home-manager, где что выполнять. + homeConfigurations.${nick} = inputs.home-manager.lib.homeManagerConfiguration { + pkgs = inputs.nixpkgs.legacyPackages.${system}; + extraSpecialArgs = { inherit inputs; }; + modules = [ /home/fox/conf/home/configuration.nix ]; + }; + }; +} + diff --git a/home/cli/fastfetch.nix b/home/cli/fastfetch.nix new file mode 100644 index 0000000..fa7c9d4 --- /dev/null +++ b/home/cli/fastfetch.nix @@ -0,0 +1,33 @@ +{ pkgs, ... }: { + programs.fastfetch = { + enable = true; + package = pkgs.fastfetch; + settings = { + logo.source = "nixos_small"; + display.separator = " :: "; + modules = [ + { + type = "os"; + key = "dis"; + } + { + type = "kernel"; + key = "krn"; + } + { + type = "uptime"; + key = "upt"; + } + { + type = "packages"; + key = "pks"; + } + { + type = "wm"; + key = "wdm"; + } + ]; + }; + }; +} + diff --git a/home/cli/neovim.nix b/home/cli/neovim.nix new file mode 100644 index 0000000..562ca15 --- /dev/null +++ b/home/cli/neovim.nix @@ -0,0 +1,16 @@ +{ pkgs, config, ... }: { + programs.neovim = { + enable = true; + package = pkgs.neovim-unwrapped; + defaultEditor = true; + extraPackages = with pkgs; [ + nil + ]; + plugins = with pkgs.vimPlugins; [ + lazy-nvim + nvim-lspconfig + nvim-tree-lua + ]; + }; +} + diff --git a/home/cli/zsh.nix b/home/cli/zsh.nix new file mode 100644 index 0000000..db6696a --- /dev/null +++ b/home/cli/zsh.nix @@ -0,0 +1,28 @@ +{ pkgs, ... }: { + programs.zsh = { + enable = true; + package = pkgs.zsh; + plugins = [{ + name = "zsh-autosuggestions"; + src = pkgs.zsh-autosuggestions; + } + { + name = "zsh-highlighting"; + src = pkgs.zsh-syntax-highlighting; + }]; + shellAliases = + let + args = "--impure --flake"; + flake = "/home/fox/conf"; + in { + "switch" = "sudo nixos-rebuild switch ${args} ${flake}#lenovo"; + "home-switch" = "home-manager switch ${args} ${flake}#fox"; + "clean-nix" = "sudo nix-collect-garbage -d"; + "un" = "adb shell pm uninstall -k"; + }; + initExtra = '' + export PROMPT="%m %2~ %B::%b " + ''; + }; +} + diff --git a/home/configuration.nix b/home/configuration.nix new file mode 100644 index 0000000..8d9224c --- /dev/null +++ b/home/configuration.nix @@ -0,0 +1,76 @@ +{ config, pkgs, inputs, ... }: { +imports = [ + # Пути к конфигурациям + ./desktop/hyprland.nix + ./desktop/hyprpaper.nix + ./desktop/eww.nix + ./kitty.nix + ./cli/neovim.nix + ./cli/zsh.nix + ./xdg.nix + ./cli/fastfetch.nix + + # Вызов inputs для определенного флейка + inputs.zen-browser.homeModules.beta +]; + +# Разрешение на установку проприетарных пакетов. +# Т.е автосоглашения со всеми пакетами при установке. +nixpkgs.config.allowUnfree = true; + +# Установка отдельных программ +programs = { + zen-browser.enable = true; +}; + +# Основная домашняя конфигурация +home = { + # Указание пользователя, его каталога. + username = "fox"; + homeDirectory = "/home/fox"; + stateVersion = "25.05"; + + # Пакеты устанавливающиеся только + # к этому пользователю. + packages = with pkgs; [ + # Интернет + telegram-desktop + transmission_4-gtk + filezilla + teams-for-linux + chromium + + # Игры/эмуляция + prismlauncher + wineWowPackages.stable + + # Дизайн/медия + krita + obs-studio + vlc + + # Работа с файлами + nemo + file-roller + + # Документы + obsidian + libreoffice + vscode + + # Остальное + pamixer + cava + pavucontrol + grim + rofi + adwaita-icon-theme + gnome-themes-extra + mako + amnezia-vpn + + kdePackages.kdenlive + haguichi + ]; + }; +} diff --git a/home/desktop/eww.nix b/home/desktop/eww.nix new file mode 100644 index 0000000..f334ba2 --- /dev/null +++ b/home/desktop/eww.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: { + programs.eww = { + enable = true; + package = pkgs.eww; + #configDir = "/home/fox/conf/home/desktop/eww_config"; + }; +} diff --git a/home/desktop/eww_config/avatar.png b/home/desktop/eww_config/avatar.png new file mode 100644 index 0000000..8269b12 Binary files /dev/null and b/home/desktop/eww_config/avatar.png differ diff --git a/home/desktop/eww_config/eww.scss b/home/desktop/eww_config/eww.scss new file mode 100644 index 0000000..becaa2b --- /dev/null +++ b/home/desktop/eww_config/eww.scss @@ -0,0 +1,62 @@ +// переменные цветов +$bg: #1a1a1a; +$fg: #fcfcfc; +$border: #000000; + +// настройка шрифтов +* { + font-family: JetBrains Mono NF; + font-size: 14; + font-weight: 700; +} + +// Основной модуль прозрачный +.bar { + background: transparent; +} + +// воссоздание такого же модуля бара +.bar1 { + background: $bg; + border: 1px solid $border; + border-radius: 12px; +} + +// Левая секция +.ws-number-class { + font-weight: 900; + margin: 0px 5px 0px 10px; + padding: 3px 5px 3px 5px; +} + +.ws-title-class { + margin: 0px 5px; + padding: 3px 5px 3px 5px; +} + +// Центральная секция +.date-class { + color: $fg; + padding: 3px 5px; +} + +// Правая секция +.right { + margin: 0px 9px; +} + +.volume-class { + margin: 0px 2px 0px 0px; +} + +.language-class { + padding: 0px 10px 0px 5px; +} + +.systray-class { + margin: 0px 9px; +} + + + + diff --git a/home/desktop/eww_config/eww.yuck b/home/desktop/eww_config/eww.yuck new file mode 100644 index 0000000..3afaa8e --- /dev/null +++ b/home/desktop/eww_config/eww.yuck @@ -0,0 +1,50 @@ +; Импорт скриптов +(defpoll TITLE :interval "0.1s" "/home/fox/.config/eww/title.sh") +(defpoll NUMBER :interval "0.1s" "/home/fox/.config/eww/number.sh") +(defpoll DATE :interval "40s" "date +'%H:%M %a, %b'") ;a, b +(defpoll VOLUME :interval "0.1s" "/home/fox/.config/eww/volume.sh") +(defpoll LANGUAGE :interval "0.1s" "/home/fox/.config/eww/language.sh") +(defpoll MUSIC :interval "0.1s" "/home/fox/.config/eww/music.sh") + +; Основной модуль +(defwindow bar + :monitor 0 + :geometry (geometry :x "0" + :y "15" + :width "680" + :height "45" + :anchor "bottom center") + :stacking "fg" + :exclusive true + :windowtype "dock" + :wm-ignore false + (box :class "bar1" (left) (center) (right))) + +; Левый модуль +(defwidget left [] + (box :orientation "h" + :valign "center" + :space-evenly "false" + (box :halign "center" :orientation "v" (label :class "ws-number-class" :text NUMBER)) + (box :halign "start" :orientation "v" (label :class "ws-title-class" :text TITLE)))) + +; Центральный модуль +(defwidget center [] + (box :orientation "h" + :halign "center" + :space-evenly "false" + (box (label :class "date-class" :text DATE)))) + +; Правый модуль +(defwidget right [] + (eventbox :onclick "exec kitty" + (box :orientation "h" + :halign "end" + :valign "center" + :space-evenly "false" + :class "right" + (box (systray :spacing 5 :icon-size 15 :class "systray-class")) + (box (label :class "language-class" :text LANGUAGE)) + (box (label :class "volume-class" :text VOLUME))))) + + diff --git a/home/desktop/eww_config/language.sh b/home/desktop/eww_config/language.sh new file mode 100755 index 0000000..000cbf5 --- /dev/null +++ b/home/desktop/eww_config/language.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +if hyprctl devices | grep -q "active keymap: Russian"; then + echo "ru" +else + echo "en" +fi + diff --git a/home/desktop/eww_config/music.sh b/home/desktop/eww_config/music.sh new file mode 100755 index 0000000..0738b5d --- /dev/null +++ b/home/desktop/eww_config/music.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +music=$(playerctl metadata --format "{{title}}" 2>/dev/null) + +max_length=15 + +if [ -z "$music" ]; then + echo ":: No playing ::" +else + if [ ${#music} -gt $max_length ]; then + echo "${music:0:$max_length}..." + else + echo "$music" + fi +fi + diff --git a/home/desktop/eww_config/number.sh b/home/desktop/eww_config/number.sh new file mode 100755 index 0000000..32c9aa4 --- /dev/null +++ b/home/desktop/eww_config/number.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +current_ws=$(hyprctl activeworkspace | grep "workspace ID" | awk '{print $3}' | head -n1) + +#echo "Workspace $current_ws" +echo " $current_ws" + diff --git a/home/desktop/eww_config/show.sh b/home/desktop/eww_config/show.sh new file mode 100755 index 0000000..2e671ff --- /dev/null +++ b/home/desktop/eww_config/show.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +file_bar="/home/fox/.cache/bar_opened" +file_power="/home/fox/.cache/power_opened" + +case $1 in + bar) + if [[ ! -f "$file_bar" ]] then + touch $file_bar + eww open bar + else + rm $file_bar + eww close bar + fi ;; + power) + if [[ ! -f "$file_power" ]] then + touch $file_power + eww open power + else + rm $file_power + eww close power + fi ;; +esac diff --git a/home/desktop/eww_config/title.sh b/home/desktop/eww_config/title.sh new file mode 100755 index 0000000..9371a79 --- /dev/null +++ b/home/desktop/eww_config/title.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +current_tl=$(hyprctl activewindow | grep -A1 "title" | tail -n1 | awk '{$1=""; print substr($0, 2)}') +air="" + +if [[ $current_tl != $air ]]; then + case $current_tl in + firefox) + echo " Browser" + ;; + kitty) + echo " Terminal" + ;; + org.telegram.desktop) + echo " Telegram" + ;; + obsidian) + echo " Obsidian" + ;; + *) + echo "$current_tl" + ;; + esac + else + echo "󰇄 Desktop" +fi + diff --git a/home/desktop/eww_config/volume.sh b/home/desktop/eww_config/volume.sh new file mode 100755 index 0000000..32a47f1 --- /dev/null +++ b/home/desktop/eww_config/volume.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +vol=$(pamixer --get-volume) + +echo " $vol " + diff --git a/home/desktop/grim.sh b/home/desktop/grim.sh new file mode 100755 index 0000000..aee6219 --- /dev/null +++ b/home/desktop/grim.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +screen_name="$(date +%F--%H-%M-%S).png" +screen_path="/home/fox/Pictures" +screen_full="$screen_path$screen_name" + + notify_name="Grim" + notify_title="Скриншот сохранён:" + notify_msg="[$screen_full]" + notify_btn="Открыть скриншот" + +screen_notify() { +notify_action="$(notify-send -a "$notify_name" "$notify_title" "$notify_msg" -i "$screen_full" --action="open=$notify_btn")" + if [[ "$notify_action" == "open" ]]; then + imv "$screen_full" + fi +} + +screen_full() { +grim $screen_full +screen_copy +screen_notify & +} + +screen_active() { + grim -g "$(slurp)" $screen_full +screen_copy +screen_notify & +} + +screen_area() { + grim -g "$(slurp)" $screen_full +screen_copy +screen_notify & +} + +screen_copy() { +wl-copy "$screen_full" +} + +case "$1" in + "-f") screen_full; exit ;; + "-a") screen_active; exit ;; + "-s") screen_area; exit ;; +esac diff --git a/home/desktop/hyprland.nix b/home/desktop/hyprland.nix new file mode 100644 index 0000000..42c7528 --- /dev/null +++ b/home/desktop/hyprland.nix @@ -0,0 +1,177 @@ +{ pkgs, ... }: { + wayland.windowManager.hyprland = { + enable = true; + package = pkgs.hyprland; + portalPackage = pkgs.xdg-desktop-portal-hyprland; + xwayland.enable = true; + settings = { + autogenerated = 0; + monitor = [ + "HDMI-A-1, 1920x1080@100, 0x0, 1" + ]; + + exec-once = [ + "hyprpaper" + "hyprctl setcursor Adwaita 24" + "eww open bar" + "rm menu.file" # Заглушка для опознания работы меню + ]; + + env = [ + "XCURSOR_SIZE,24" + "HYPRCURSOR_SIZE,24" + "QT_QPA_PLATFORMTHEME,qt6ct" + "XDG_CURRENT_DESKTOP='Hyprland'" + "XDG_SESSION_TYPE='wayland'" + "XDG_SESSION_DESKTOP='Hyprland'" + "QT_AUTO_SCREEN_SCALE_FACTOR='1'" + "QT_QPA_PLATFORM='wayland'" + "QT_QPA_PLATFORMTHEME='gtk3'" + "LIBVA_DRIVER_NAME,nvidia" + "__GLX_VENDOR_LIBRARY_NAME,nvidia" + "NVD_BACKEND,direct" + ]; + + #ignorezero, eww-bar + + general = { + gaps_in = 15; + gaps_out = 30; + + border_size = 0; + + resize_on_border = true; + allow_tearing = true; + layout = "dwindle"; + }; + + decoration = { + rounding = 15; + rounding_power = 2; + + active_opacity = 1.0; + inactive_opacity = 1.0; + + shadow = { + enabled = true; + range = 4; + render_power = 3; + color = "rgb(000000)"; + }; + + blur = { + enabled = true; + size = 6; + passes = 3; + + vibrancy = 0.3; + vibrancy_darkness = 0.3; + noise = 0.0; + contrast = 1.0; + brightness = 1.0; + + popups = true; + popups_ignorealpha = 0.4; + input_methods = true; + input_methods_ignorealpha = 0.4; + }; + }; + + animations = { + enabled = "yes, please :)"; + + bezier = [ + "easeOutQuint,0.23,1,0.32,1" + "easeInOutCubic,0.65,0.05,0.36,1" + "linear,0,0,1,1" + "almostLinear,0.5,0.5,0.75,1.0" + "quick,0.15,0,0.1,1" + ]; + + animation = [ + "global, 1, 10, default" + "border, 1, 5.39, easeOutQuint" + "windows, 1, 4.79, easeOutQuint" + "windowsIn, 1, 4.1, easeOutQuint, popin 87%" + "windowsOut, 1, 1.49, linear, popin 87%" + "fadeIn, 1, 1.73, almostLinear" + "fadeOut, 1, 1.46, almostLinear" + "fade, 1, 3.03, quick" + "layers, 1, 3.81, easeOutQuint" + "layersIn, 1, 4, easeOutQuint, fade" + "layersOut, 1, 1.5, linear, fade" + "fadeLayersIn, 1, 1.79, almostLinear" + "fadeLayersOut, 1, 1.39, almostLinear" + "workspaces, 1, 1.94, almostLinear, fade" + "workspacesIn, 1, 1.21, almostLinear, fade" + "workspacesOut, 1, 1.94, almostLinear, fade" + ]; + }; + + dwindle = { + pseudotile = true; + preserve_split = true; + }; + + layerrule = [ "ignorezero, wofi" "ignorealpha 0.5, wofi" "ignorezero, gtk-layer-shell" ]; + blurls = [ "gtk-layer-shell" ]; + windowrulev2 = [ "float, workspace:5" ]; + + misc = { + force_default_wallpaper = 0; + disable_hyprland_logo = true; + }; + + input = { + kb_layout = "us,ru"; + kb_options = "grp:alt_shift_toggle"; + follow_mouse = 1; + sensitivity = 1.3; + }; + + "$mod" = "SUPER"; + + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, redizewindow" + ]; + + bind = [ + "alt, l, exec, eww open lock-dialog" + "alt, g, exec, eww close bar" + "alt, m, exec, eww open bar" + + "$mod shift, q, exit" + "$mod ctrl, r, exec, eww open reboot-dialog" + "$mod ctrl, q, exec, eww open off-dialog" + "alt, l, exec, eww open lock-dialog-zopa" + + "$mod, c, killactive," + "$mod, s, togglefloating," + "$mod, t, pseudo," + "$mod, g, togglesplit" + + "alt, space, exec, rofi -show drun -config /home/fox/conf/home/desktop/rofi_config.rasi" + "$mod alt, g, exec, /home/fox/.config/eww/show.sh bar" + "alt, s, exec, grim $(xdg-user-dir PICTURES)/$(date +'%s_grim.png')" + + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + + "$mod SHIFT, 1, movetoworkspace, 1" + "$mod SHIFT, 2, movetoworkspace, 2" + "$mod SHIFT, 3, movetoworkspace, 3" + "$mod SHIFT, 4, movetoworkspace, 4" + "$mod SHIFT, 5, movetoworkspace, 5" + "$mod SHIFT, 6, movetoworkspace, 6" + + "$mod, mouse_down, workspace, e+1" + "$mod, mouse_up, workspace, e-1" + ]; + }; + }; +} diff --git a/home/desktop/hyprpaper.nix b/home/desktop/hyprpaper.nix new file mode 100644 index 0000000..5b3c83f --- /dev/null +++ b/home/desktop/hyprpaper.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: { + services.hyprpaper = { + enable = true; + package = pkgs.hyprpaper; + settings = let + wallpaper = "/home/fox/conf/home/desktop/wallp.jpg"; + monitor-1 = "HDMI-A-1"; + monitor-2 = "DP-1"; + in { + preload = [ "${wallpaper}" ]; + wallpaper = [ + "${monitor-1},${wallpaper}" + "${monitor-2},${wallpaper}" + ]; + }; + }; +} diff --git a/home/desktop/rofi_config.rasi b/home/desktop/rofi_config.rasi new file mode 100644 index 0000000..cb2d812 --- /dev/null +++ b/home/desktop/rofi_config.rasi @@ -0,0 +1,98 @@ + +* { + bg: #1d1d1d; + fg: #fcfcfc; +} + +configuration { + modes: "drun"; + font: "JetBrainsMono Regular 10"; + location: 0; + xoffset: 0; + yoffset: 0; +} + +window { + background-color: @bg; + width: 400; + border-radius: 12px; + border: 1px solid; + border-color: #000000; +} + +mainbox { + background-color: @bg; + padding: 6px; + margin: 8px; + border-radius: 12px; +} + +inputbar { + background-color: #383838; + border: 2px solid; + border-color: #383838; + padding: 6px; + border-radius: 5px; +} + +prompt { + enabled: false; +} + +textbox-prompt-colon { + expand: false; + str: " "; + background-color: #383838; + text-color: @bg; +} + +entry { + background-color: #383838; + text-color: @fg; + cursor: text; + placeholder: "Search..."; + placeholder-color: @fg; +} + +listview { + columns: 1; + lines: 16; + dynamic: true; + scrollbar: false; + fixed-height: true; + fixed-columns: true; + background-color: @bg; + text-color: @fg; + margin: 5px 0px 0px 0px; + border: 1px solid; + border-color: @bg; +} + +element { + background-color: @bg; + text-color: @fg; + padding: 8px 3px; +} + +element normal.normal, +element alternate.normal, +message, +error-message { + background-color: @bg; + text-color: @fg; +} + +element selected.normal { + background-color: #2a2a2a; + text-color: @fg; + border-radius: 5px; + padding: 8px 4px; +} + +error-message, +textbox { + padding: 3px; + background-color: @bg; + text-color: @fg; +} + diff --git a/home/desktop/wallp.jpg b/home/desktop/wallp.jpg new file mode 100644 index 0000000..d845763 Binary files /dev/null and b/home/desktop/wallp.jpg differ diff --git a/home/gtk.nix b/home/gtk.nix new file mode 100644 index 0000000..7c1cbfc --- /dev/null +++ b/home/gtk.nix @@ -0,0 +1,16 @@ +# Настройка гтк на темную тему. +{ pkgs, ... }: { + dconf.settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + }; + }; + + gtk = { + enable = true; + theme = { + name = "Adwaita-dark"; + package = pkgs.gnome-themes-extra; + }; + }; +} diff --git a/home/kitty.nix b/home/kitty.nix new file mode 100644 index 0000000..8c0b95c --- /dev/null +++ b/home/kitty.nix @@ -0,0 +1,57 @@ +{ pkgs, ... }: { + programs.kitty = { + enable = true; + package = pkgs.kitty; + font = { + size = 10; + name = "JetBrainsMono NF"; + }; + settings = { + cursor_shape = "beam"; + window_padding_width = 6; + + background = "#1d1d1d"; + foreground = "#deddda"; + + selection_background = "#303030"; + selection_foreground = "#c0bfbc"; + + url_color = "#1a5fb4"; + + wayland_titlebar_color = "system"; + + cursor = "#deddda"; + cursor_text_color = "#1d1d1d"; + + active_border_color = "#4f4f4f"; + inactive_border_color = "#282828"; + bell_border_color = "#ed333b"; + visual_bell_color = "none"; + + active_tab_background = "#242424"; + active_tab_foreground = "#fcfcfc"; + inactive_tab_background = "#303030"; + inactive_tab_foreground = "#b0afac"; + tab_bar_background = "none"; + tab_bar_margin_color = "none"; + + color0 = "#1d1d1d"; + color1 = "#ed333b"; + color2 = "#57e389"; + color3 = "#ff7800"; + color4 = "#62a0ea"; + color5 = "#9141ac"; + color6 = "#5bc8af"; + color7 = "#deddda"; + + color8 = "#9a9996"; + color9 = "#f66151"; + color10 = "#8ff0a4"; + color11 = "#ffa348"; + color12 = "#99c1f1"; + color13 = "#dc8add"; + color14 = "#93ddc2"; + color15 = "#f6f5f4"; + }; + }; +} diff --git a/home/xdg.nix b/home/xdg.nix new file mode 100644 index 0000000..dd30ee4 --- /dev/null +++ b/home/xdg.nix @@ -0,0 +1,44 @@ +{ config, pkgs, ... }: { + # Основные параметры xdg. + # Настройка порталов. + xdg = { + enable = true; + portal = { + enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-hyprland ]; + config = { + common.default = "gtk"; + }; + }; + + # Указания скрытых домашних каталогов. + cacheHome = builtins.toPath "${config.home.homeDirectory}/.cache"; + configHome = builtins.toPath "${config.home.homeDirectory}/.config"; + dataHome = builtins.toPath "${config.home.homeDirectory}/.local/share"; + stateHome = builtins.toPath "${config.home.homeDirectory}/.local/state"; + + # Указания системных каталогов. + systemDirs = { + config = [ "/etc/xdg" ]; + data = [ "/usr/share" "/usr/local/share" ]; + }; + + # Указание пользовательских каталогов. + # null = не назначать каталог(т.е полностью убрать). + userDirs = { + enable = true; + createDirectories = true; + + desktop = builtins.toPath "${config.home.homeDirectory}/Desktop"; + documents = builtins.toPath "${config.home.homeDirectory}/Documents"; + download = builtins.toPath "${config.home.homeDirectory}/Downloads"; + pictures = builtins.toPath "${config.home.homeDirectory}/Pictures"; + videos = null; + music = null; + publicShare = null; + templates = null; + + }; + }; +} +