diff --git a/flake.nix b/flake.nix index d2a79c0..22a7973 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,23 @@ { description = "My system configuration"; + nixConfig = { + extra-substituters = [ + "https://nix-community.cachix.org" + "https://cache.garnix.io" + "https://hyprland.cachix.org" + "https://ezkea.cachix.org" + "https://risdeveau.cachix.org" + ]; + extra-trusted-public-keys = [ + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "ezkea.cachix.org-1:ioBmUbJTZIKsHmWWXPe1FSFbeVe+afhfgqgTSNd34eI=" + "risdeveau.cachix.org-1:TsoFSVeLl7iKtUYGX7qsvKPjf2vbNLfLC5v3SAdU8r0=" + ]; + }; + inputs = { ayugram-desktop.url = "github:/ayugram-port/ayugram-desktop/release?submodules=1"; diff --git a/home-manager/data/ags/ags.nix b/home-manager/data/ags/ags.nix index f703b4f..9527797 100644 --- a/home-manager/data/ags/ags.nix +++ b/home-manager/data/ags/ags.nix @@ -10,6 +10,8 @@ echo \$surface0: \#${colors.base02}\; >> colors.scss echo \$fg: \#${colors.base05}\; >> colors.scss echo \$accent: \#${colors.base0B}\; >> colors.scss + + echo \#${colors.base0B} > accent.css ''; installPhase = '' @@ -17,5 +19,7 @@ mkdir $out cp $src/* $out -r mv colors.scss $out + mv accent.css $out ''; } + diff --git a/home-manager/data/ags/ags/style.scss b/home-manager/data/ags/ags/style.scss index 7e61e01..62194e8 100644 --- a/home-manager/data/ags/ags/style.scss +++ b/home-manager/data/ags/ags/style.scss @@ -67,8 +67,8 @@ window.Bar { background: $surface0; } } - - Media { + + .Media { &.playing { border: 2pt solid $accent; } @@ -91,7 +91,7 @@ window.Bar { .AudioSlider icon { margin-left: 8px; } - .Workspaces, .Layout, .Media, .SysTray, .AudioSlider, .Time { + .Workspaces, .Wifi, .Layout, .Media, .SysTray, .AudioSlider, .Battery, .Time { @extend %item; } } diff --git a/home-manager/data/ags/ags/widget/elements/Audio.tsx b/home-manager/data/ags/ags/widget/elements/Audio.tsx index eb44096..9d5b9de 100644 --- a/home-manager/data/ags/ags/widget/elements/Audio.tsx +++ b/home-manager/data/ags/ags/widget/elements/Audio.tsx @@ -1,16 +1,16 @@ import { bind } from "astal" +import { execAsync } from "astal/process" import Wp from "gi://AstalWp" -import {execAsync} from "astal/process" export default function Audio() { const speaker = Wp.get_default()?.audio.defaultSpeaker! - return - - + return } diff --git a/home-manager/data/ags/ags/widget/elements/Battery.tsx b/home-manager/data/ags/ags/widget/elements/Battery.tsx index 6dc6934..cfac651 100644 --- a/home-manager/data/ags/ags/widget/elements/Battery.tsx +++ b/home-manager/data/ags/ags/widget/elements/Battery.tsx @@ -1,14 +1,30 @@ -import { bind } from "astal" -import Battery from "gi://AstalBattery" +import { bind } from "astal"; +import Battery from "gi://AstalBattery"; +import accent from "../../accent.css"; export default function BatteryLevel() { - const bat = Battery.get_default() + const bat = Battery.get_default(); + const percent = bind(bat, "percentage").as(p => Math.floor(p * 100)); - return - - + return ( + ` + background-image: linear-gradient( + to right, + ${accent} 0%, + ${accent} ${p}%, + transparent ${p}%, + transparent 100% + ); + background-size: 100% 3px; + background-repeat: no-repeat; + background-position: bottom; + `)} + > + + + ); } diff --git a/home-manager/data/ags/ags/widget/elements/Wifi.tsx b/home-manager/data/ags/ags/widget/elements/Wifi.tsx index 11a0d32..44f9816 100644 --- a/home-manager/data/ags/ags/widget/elements/Wifi.tsx +++ b/home-manager/data/ags/ags/widget/elements/Wifi.tsx @@ -1,21 +1,6 @@ import { bind } from "astal" import Network from "gi://AstalNetwork" -import {execAsync} from "astal/process" - -/*export default function Wifi() { - const network = Network.get_default() - const wifi = bind(network, "wifi") - - return - {wifi.as(wifi => wifi && ( - - ))} - -}*/ +import { execAsync } from "astal/process" export default function Wifi() { const network = Network.get_default() @@ -23,10 +8,17 @@ export default function Wifi() { return {wifi.as(wifi => wifi && ( - ))} diff --git a/home-manager/data/ghostty.nix b/home-manager/data/ghostty.nix new file mode 100644 index 0000000..b518ce3 --- /dev/null +++ b/home-manager/data/ghostty.nix @@ -0,0 +1,11 @@ +{ + programs.ghostty = { + enable = true; + enableZshIntegration = true; + settings = { + confirm-close-surface = false; + copy-on-select = false; + title-report = true; + }; + }; +} diff --git a/home-manager/data/hyprland.nix b/home-manager/data/hyprland.nix index 7bb6568..6d595e4 100644 --- a/home-manager/data/hyprland.nix +++ b/home-manager/data/hyprland.nix @@ -138,10 +138,10 @@ bind = [ "$mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy" - "$mainMod, Return, exec, kitty" + "$mainMod, Return, exec, ghostty" "$mainMod, Q, killactive," "$mainMod, M, exit," - "$mainMod, E, exec, kitty -e sh -c yazi" + "$mainMod, E, exec, ghostty -e sh -c yazi" "$mainMod, F, togglefloating," "$mainMod, D, exec, wofi --show drun" "$mainMod, P, pseudo, # dwindle" @@ -209,10 +209,10 @@ ", XF86MonBrightnessUp, exec, brightnessctl set +5% " # Configuration files - ''$mainMod ALT, N, exec, kitty -e sh -c "rb"'' - ''$mainMod ALT, C, exec, kitty -e sh -c "conf"'' - ''$mainMod ALT, H, exec, kitty -e sh -c "$EDITOR ~/nix/home-manager/modules/wms/hyprland.nix"'' - ''$mainMod ALT, W, exec, kitty -e sh -c "$EDITOR ~/nix/home-manager/modules/wms/waybar.nix"'' + ''$mainMod ALT, N, exec, ghostty -e sh -c "rb"'' + ''$mainMod ALT, C, exec, ghostty -e sh -c "conf"'' + ''$mainMod ALT, H, exec, ghostty -e sh -c "$EDITOR ~/nix/home-manager/modules/wms/hyprland.nix"'' + ''$mainMod ALT, W, exec, ghostty -e sh -c "$EDITOR ~/nix/home-manager/modules/wms/waybar.nix"'' '', Print, exec, grim -g "$(slurp)" - | swappy -f -'' # Waybar @@ -226,7 +226,7 @@ # Skreens ''$mainMod SHIFT, S, exec, alacritty -e sh -c "screenshot"'' - '', F11, exec, kitty -e sh -c "hyprlock"'' + '', F11, exec, ghostty -e sh -c "hyprlock"'' ]; diff --git a/home-manager/data/kitty.nix b/home-manager/data/kitty.nix deleted file mode 100644 index 5ae52fc..0000000 --- a/home-manager/data/kitty.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ lib, pkgs, ... }: { - programs.kitty = { - enable = true; - settings = lib.mkDefault { - dynamic_background_opacity = "yes"; - background_opacity = 0.5; - background_blur = true; - background = "#1d2021"; - font_size = 13.0; - cursor_blink_interval = "0.5 ease-in-out"; - }; - }; - programs.zsh.envExtra = "TERM=xterm-256color"; -} diff --git a/home-manager/data/pkgs.nix b/home-manager/data/pkgs.nix index 1c9d25d..5e3ae36 100644 --- a/home-manager/data/pkgs.nix +++ b/home-manager/data/pkgs.nix @@ -2,13 +2,13 @@ imports = [ ./hyprland.nix ./ags.nix - #./waybar.nix ./style.nix ./git.nix ./mako.nix ./yazi.nix ./sleepMode.nix - ./kitty.nix + ./ghostty.nix ./home-aps.nix + ./zed-idea.nix ]; } diff --git a/home-manager/data/waybar.nix b/home-manager/data/waybar.nix deleted file mode 100644 index be8c961..0000000 --- a/home-manager/data/waybar.nix +++ /dev/null @@ -1,415 +0,0 @@ -{ pkgs, config, ...}: { -home.packages = [ pkgs.pulsemixer ]; - wayland.windowManager.hyprland.settings.windowrule = [ - "float, ^(pulsemixer)" - "float, ^(nmtui)" - ]; - - wayland.windowManager.hyprland.settings.exec-once = [ "waybar" ]; - - programs.waybar = - let - colors = config.lib.stylix.colors; - in { - enable = true; - - settings = { - mainBar = { - layer = "top"; - position = "top"; - margin = "9 13 -10 18"; - - modules-left = ["hyprland/workspaces" "hyprland/language" "keyboard-state" "hyprland/submap"]; - modules-center = ["mpris" "wlr/taskbar"]; - modules-right = ["group/system" "battery" "pulseaudio" "clock" "tray"]; - - "hyprland/workspaces" = { - disable-scroll = true; - }; - - "wlr/taskbar" = { - on-click = "activate"; - on-click-middle = "close"; - on-click-right = "minimize"; - }; - - "group/system" = { - orientation = "inherit"; - drawer = { - transition-duration = 500; - transition-left-to-right = false; - }; - modules = [ - "network" - "custom/mem" - "cpu" - "temperature" - "backlight" - ]; - }; - - - "hyprland/language" = { - format-en = "US"; - format-ru = "RU"; - min-length = 5; - tooltip = false; - }; - - "keyboard-state" = { - capslock = true; - format = "{icon}"; - format-icons = { - locked = "CUPS"; - unlocked = ""; - }; - }; - - "clock" = { - tooltip = false; - format = "{:%a, %d %b %R}"; - }; - - "custom/weather" = { - format = "{}"; - tooltip = true; - interval = 1800; - exec = "python3 $HOME/.config/waybar/scripts/wttr.py"; - return-type = "json"; - }; - - "pulseaudio" = { - # scroll-step = 1; # %, can be a float - reverse-scrolling = 1; - format = "{volume}% {icon} {format_source}"; - format-bluetooth = "{volume}% {icon} {format_source}"; - format-bluetooth-muted = " {icon} {format_source}"; - format-muted = " {format_source}"; - format-source = "{volume}% "; - format-source-muted = ""; - format-icons = { - headphone = ""; - hands-free = ""; - headset = ""; - phone = ""; - portable = ""; - car = ""; - default = ["" "" ""]; - }; - on-click = "alacritty --class pulsemixer -e pulsemixer"; - min-length = 13; - }; - - "custom/mem" = { - format = "{} "; - interval = 3; - exec = "free -h | awk '/Mem:/{printf $3}'"; - tooltip = false; - }; - - "cpu" = { - interval = 2; - format = "{usage}% "; - min-length = 6; - }; - - "temperature" = { - # thermal-zone = 2; - # hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input"; - critical-threshold = 80; - # format-critical = "{temperatureC}°C {icon}"; - format = "{temperatureC}°C {icon}"; - format-icons = ["" "" "" "" ""]; - tooltip = false; - }; - - "network" = { - format = "{ifname}"; - format-wifi = "{essid} ({signalStrength}%) "; - format-ethernet = "{ifname} "; - format-disconnected = ""; - tooltip-format = "{ifname}"; - tooltip-format-wifi = "{essid} ({signalStrength}%) "; - tooltip-format-ethernet = "{ifname} "; - tooltip-format-disconnected = "Disconnected"; - max-length = 50; - on-click = "alacritty --class nmtui -e sh -c nmtui"; - }; - - "backlight" = { - device = "intel_backlight"; - format = "{percent}% {icon}"; - format-icons = [""]; - min-length = 7; - }; - - battery = { - states = { - warning = 30; - critical = 15; - }; - format = "{capacity}%"; - format-charging = "{capacity}% {time}"; - format-plugged = "{capacity}%"; - format-alt = "{time}"; - format-time = "{H}:{m}"; - }; - - mpris = { - format = "{title}"; - format-len = "20"; - }; - - tray = { - icon-size = 16; - spacing = 0; - }; - - }; - }; - - style = /*css*/ - '' -* { - border: none; - border-radius: 0; - /* `otf-font-awesome` is required to be installed for icons */ - font-family: JetBrains Mono; - font-weight: bold; - min-height: 20px; -} -window#waybar { - background: transparent; -} -window#waybar.hidden { - opacity: 0.2; -} -#workspaces { - margin-right: 8px; - border-radius: 10px; - transition: none; - background: #${colors.base00}; -} -#workspaces button { - transition: none; - color: #${colors.base04}; - background: transparent; - padding: 5px; - font-size: 18px; -} -#workspaces button.persistent { - font-size: 12px; -} -/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ -#workspaces button:hover { - transition: none; - box-shadow: inherit; - text-shadow: inherit; - border-radius: inherit; - color: #${colors.base05}; -} -#workspaces button.active { - background: #${colors.base02}; - color: #${colors.base05}; - border-radius: inherit; -} -#taskbar { - border-radius: 10px; - color: #${colors.base05}; - background: #${colors.base00}; -} -#taskbar button { - transition: none; - background: transparent; - border-radius: 10px; - padding: 8px; - margin: 0px; -} -#taskbar button:hover { - transition: none; - box-shadow: inherit; - text-shadow: inherit; - border-radius: inherit; - background: #${colors.base02}; -} -#taskbar button.active { - background: #${colors.base0B}; -} -#language { - padding: 8px 0px 8px 8px; - border-radius: 10px 0px 0px 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#keyboard-state { - margin-right: 8px; - padding: 8px 8px 8px 0px; - border-radius: 0px 10px 10px 0px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#custom-pacman { - padding-left: 16px; - padding-right: 8px; - border-radius: 10px 0px 0px 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#custom-mail { - margin-right: 8px; - padding-right: 16px; - border-radius: 0px 10px 10px 0px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#submap { - padding-left: 16px; - padding-right: 16px; - border-radius: 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#clock { - margin-right: 8px; - padding-left: 16px; - padding-right: 16px; - border-radius: 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#network { - margin-right: 8px; - padding-left: 16px; - padding-right: 16px; - border-radius: 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#network.disconnected { - color: #${colors.base00}; - background-color: #${colors.base08}; -} -#custom-weather { - padding-right: 16px; - border-radius: 0px 10px 10px 0px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#pulseaudio { - margin-right: 8px; - padding-left: 16px; - padding-right: 16px; - border-radius: 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#pulseaudio.muted { - background-color: #${colors.base08}; - color: #${colors.base01}; -} -#custom-mem { - margin-right: 8px; - padding-left: 16px; - padding-right: 16px; - border-radius: 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#cpu { - margin-right: 8px; - padding-left: 16px; - padding-right: 16px; - border-radius: 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#temperature { - margin-right: 8px; - padding-left: 16px; - padding-right: 16px; - border-radius: 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#temperature.critical { - background-color: #${colors.base08}; -} -#backlight { - margin-right: 8px; - padding-left: 16px; - padding-right: 16px; - border-radius: 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#battery { - margin-right: 8px; - padding-left: 16px; - padding-right: 16px; - border-radius: 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#battery.charging { - color: #${colors.base00}; - background-color: #${colors.base0B}; -} -#battery.warning:not(.charging) { - background-color: #${colors.base09}; - color: black; -} -#battery.critical:not(.charging) { - background-color: #${colors.base08}; - color: #${colors.base05}; - animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; -} -#tray { - padding-left: 16px; - padding-right: 16px; - border-radius: 10px; - transition: none; - color: #${colors.base05}; - background: #${colors.base00}; -} -#mpris{ - background: #${colors.base00}; - border-radius: 10px; - color: #${colors.base05}; - padding: 0px 8px; - margin: 0px 8px; -} -#mpris.playing { - background-color: #${colors.base0B}; - color: #${colors.base01}; -} -#mpris.paused { - background-color: #${colors.base0A}; - color: #${colors.base01}; -} -@keyframes blink { - to { - background-color: #${colors.base05}; - color: #${colors.base00}; - } -} - ''; - }; -} diff --git a/home-manager/data/yazi.nix b/home-manager/data/yazi.nix index 3ea2c9f..151ef92 100644 --- a/home-manager/data/yazi.nix +++ b/home-manager/data/yazi.nix @@ -2,14 +2,14 @@ yazi-plugins = pkgs.fetchFromGitHub { owner = "yazi-rs"; repo = "plugins"; - rev = "07258518f3bffe28d87977bc3e8a88e4b825291b"; - hash = "sha256-axoMrOl0pdlyRgckFi4DiS+yBKAIHDhVeZQJINh8+wk="; + rev = "864a0210d9ba1e8eb925160c2e2a25342031d8d3"; + hash = "sha256-m3709h7/AHJAtoJ3ebDA40c77D+5dCycpecprjVqj/k="; }; starship = pkgs.fetchFromGitHub { owner = "Rolv-Apneseth"; repo = "starship.yazi"; - rev = "d1cd0a38aa6a2c2e86e62a466f43e415f781031e"; - sha256 = "sha256-XiEsykudwYmwSNDO41b5layP1DqVa89e6Emv9Qf0mz0="; + rev = "6fde3b2d9dc9a12c14588eb85cf4964e619842e6"; + sha256 = "sha256-+CSdghcIl50z0MXmFwbJ0koIkWIksm3XxYvTAwoRlDY="; }; in { programs.yazi = { @@ -30,7 +30,7 @@ in { plugins = { chmod = "${yazi-plugins}/chmod.yazi"; full-border = "${yazi-plugins}/full-border.yazi"; - max-preview = "${yazi-plugins}/max-preview.yazi"; + # max-preview = "${yazi-plugins}/max-preview.yazi"; starship = starship; }; @@ -55,6 +55,11 @@ in { on = [ "" ]; run = ''shell '${lib.getExe pkgs.xdragon} -x -i -T "$@"' --confirm''; } + { + on = [ "g" "" ]; + run = ''cd /mnt/D''; + desc = "Goto D drive"; + } ]; }; }; diff --git a/home-manager/data/zed-idea.nix b/home-manager/data/zed-idea.nix new file mode 100644 index 0000000..c7547c3 --- /dev/null +++ b/home-manager/data/zed-idea.nix @@ -0,0 +1,29 @@ +{pkgs, lib, ... }: + +{ + programs.zed-editor = { + enable = true; + + userSettings = { + lsp.clangd = { + binary.path = "${pkgs.clang-tools}/bin/clangd"; + settings = { + arguments = [ + "--background-index" + "--header-insertion=never" + # Отключаем диагностику ошибок + "--enable-config" # Требуется для кастомных настроек + ]; + # Конфиг clangd (переопределяет аргументы) + config = { + Diagnostics = { + Enable = false; # Полное отключение диагностики + }; + }; + }; + }; + }; + }; + + home.packages = with pkgs; [ clang-tools ]; +} diff --git a/home-manager/zsh.nix b/home-manager/zsh.nix index 686ddb3..208c6ca 100644 --- a/home-manager/zsh.nix +++ b/home-manager/zsh.nix @@ -84,6 +84,7 @@ screenshot="grimblast save area ~/screenshot_$(date +\%Y-\%m-\%d_\%H-\%M-\%S).png"; screenshot_c = "grimblast copy area"; loginPostgresql = "sudo -u postgres psql"; + startShell = "nix-shell . --run zsh"; }; initExtra = '' diff --git a/nixos/hosts/usconfig/configuration.nix b/nixos/hosts/usconfig/configuration.nix index dee3a6b..2aef41d 100644 --- a/nixos/hosts/usconfig/configuration.nix +++ b/nixos/hosts/usconfig/configuration.nix @@ -14,7 +14,8 @@ ./models/env.nix ]; - #home.packages = [ pkgs.callPackage ./pockets/thingsboard.nix {} ]; + + #home.packages = [ pkgs.callPackage ./pockets/thingsboard.nix {} ]; # Bootloader. boot.loader.systemd-boot.enable = true; @@ -127,6 +128,8 @@ "flakes" ]; + nix.settings.trusted-users = [ "kirill" ]; + # List packages installed in system profile. To search, run: # $ nix search wget diff --git a/nixos/hosts/usconfig/pockets.nix b/nixos/hosts/usconfig/pockets.nix index ee4567a..21630e6 100644 --- a/nixos/hosts/usconfig/pockets.nix +++ b/nixos/hosts/usconfig/pockets.nix @@ -10,7 +10,8 @@ }; environment.systemPackages = with pkgs; [ - vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + texmaker + libreoffice wget home-manager pkgs.opera @@ -19,8 +20,7 @@ pkgs.git lazygit #terminals - kitty - alacritty + ghostty #fprAGS @@ -29,7 +29,6 @@ pkgs.wofi pkgs.google-chrome pkgs.libsForQt5.kolourpaint - pkgs.waybar grimblast tree slurp @@ -58,21 +57,20 @@ # IDES jetbrains.idea-community + #Utiles + postman + # Code - vscode + zed-editor nodejs #C/C++ - gcc - gdb - cmake qtcreator #java - openjfx + gradle openjdk - maven - + #DB postgresql dbgate @@ -98,6 +96,9 @@ #Usb mouting and acsess udisks + + #virtualization + qemu ]; fonts.packages = with pkgs; [