diff --git a/README.md b/README.md index 9d82d83..9797308 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,3 @@ # dotfiles -my hyprland dotfiles - -![screenshot](https://git.pablusha.ru/admin/dotfiles/raw/branch/main/screenshot.png) - -# ❗️ ВАЖНО - -**автоматической установки дотов нет (и я хз будет ли она, ибо мне лень), конфиги я писал для себя, а не для общего пользования, поэтому, пожалуйста, если у вас что-то не работает - ищите проблему сами, не надо писать об этом мне (у меня-то все работает) :3** \ No newline at end of file +my NixOS & hyprland dotfiles diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..f822f08 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,75 @@ +{ config, lib, pkgs, ... }: + +{ + imports = + [ + ./hardware-configuration.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "okroshka"; + + networking.networkmanager.enable = true; + + time.timeZone = "Europe/Moscow"; + + services.pipewire = { + enable = true; + pulse.enable = true; + }; + + users.users.pablusha = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + }; + + environment.systemPackages = with pkgs; [ + curl + wget + git + btop + htop + psmisc + zip + unzip + ]; + + services.gvfs.enable = true; + + # nvidia + + nixpkgs.config.allowUnfree = true; + + hardware.graphics = { + enable = true; + }; + + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = false; + powerManagement.finegrained = false; + open = false; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.production; + }; + + # hyprland section + + programs.hyprland = { + enable = true; + withUWSM = false; + xwayland.enable = true; + }; + + xdg.portal = { + enable = true; + extraPortals = with pkgs; [ xdg-desktop-portal-hyprland ]; + }; + + system.stateVersion = "25.11"; +} + diff --git a/home-manager/art.jpg b/home-manager/art.jpg new file mode 100644 index 0000000..a4b8b76 Binary files /dev/null and b/home-manager/art.jpg differ diff --git a/home-manager/fastfetch.jsonc b/home-manager/fastfetch.jsonc new file mode 100644 index 0000000..d8f46be --- /dev/null +++ b/home-manager/fastfetch.jsonc @@ -0,0 +1,69 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "modules": [ + "title", + { + "type": "separator", + "string": "+-", + "length": 18 + }, + { + "type": "os", + "format": "{pretty-name}", + "key": "os " + }, + { + "type": "shell", + "key": "sh ", + "format": "{exe-name}" + }, + { + "type": "wm", + "key": "wm ", + "format": "{pretty-name}" + }, + { + "type": "terminalfont", + "key": "fnt", + "format": "{}" + }, + { + "type": "cpu", + "key": "cpu", + "format": "{name}" + }, + { + "type": "gpu", + "key": "gpu", + "format": "{name}" + }, + { + "type": "memory", + "key": "mem", + "format": "{used} / {total}" + }, + { + "type": "swap", + "key": "swp", + "format": "{used} / {total}" + }, + { + "type": "disk", + "key": "dsk", + "format": "{size-used} / {size-total}" + }, + "break", + { + "type": "colors", + "symbol": "circle" + }, + ], + "logo": { + "source": "~/.config/fastfetch/art.jpg", + "height": 13, + "position": "left" + }, + "display": { + "separator": " " + } +} diff --git a/home-manager/home.nix b/home-manager/home.nix new file mode 100644 index 0000000..3b8b359 --- /dev/null +++ b/home-manager/home.nix @@ -0,0 +1,184 @@ +{config, lib, pkgs, ...}: + +{ + home.username = "pablusha"; + home.homeDirectory = "/home/pablusha"; + home.stateVersion = "25.11"; + programs.home-manager.enable = true; + + nixpkgs.config.allowUnfree = true; + + home.packages = with pkgs; [ + telegram-desktop + mako + swww + pkgs.nerd-fonts.monaspace + xdg-user-dirs + gnome-themes-extra + prismlauncher + qt6Packages.qt6ct + qt5ct + ncdu + audacious + gcc + python3 + python3Packages.pip + xfce.thunar + xfce.tumbler + lf + hyprshot + gthumb + imv + xarchiver + glib + nftables + remmina + qemu + obsidian + krita + blender + vlc + cava + ]; + + imports = [ + ./syncthing.nix + ]; + + # theme & cursor + + home.pointerCursor = { + enable = true; + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 22; + gtk.enable = true; + }; + + dconf.settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + gtk-theme = "Adwaita-dark"; + }; + }; + + gtk = { + font.name = "DejaVu Sans 10"; + enable = true; + theme = { + name = "Adwaita-dark"; + package = pkgs.gnome-themes-extra; + }; + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + }; + }; + + qt = { + enable = true; + platformTheme.name = "qt6ct"; + }; + + # hyprland + + wayland.windowManager.hyprland = { + enable = true; + extraConfig = builtins.readFile ./hyprland.conf; + }; + + # waybar + + programs.waybar.enable = true; + xdg.configFile."waybar/config.jsonc".source = ./waybar_config.jsonc; + xdg.configFile."waybar/style.css".source = ./waybar_style.css; + xdg.configFile."waybar/colors.css".source = ./waybar_colors.css; + + # kitty + + programs.kitty.enable = true; + xdg.configFile."kitty/kitty.conf".source = ./kitty.conf; + xdg.configFile."kitty/colors.conf".source = ./kitty_colors.conf; + + # firefox + + programs.firefox = { + enable = true; + languagePacks = [ "en-US" "ru-RU"]; + + policies = { + AppAutoUpdate = false; + BackgroundAppUpdate = false; + + DisableFirefoxAccounts = true; + DisableSetDesktopBackground = true; + DisablePocket = true; + DisableTelemetry = true; + DisableFormHistory = true; + }; + }; + + # wofi + + programs.wofi.enable = true; + xdg.configFile."wofi/config".source = ./wofi_config; + xdg.configFile."wofi/style.css".source = ./wofi_style.css; + + # obs studio + + programs.obs-studio = { + enable = true; + + package = pkgs.obs-studio.override { + cudaSupport = true; + }; + + plugins = with pkgs.obs-studio-plugins; [ + obs-pipewire-audio-capture + wlrobs + obs-backgroundremoval + obs-gstreamer + ]; + }; + + # vim + + programs.vim = { + enable = true; + + extraConfig = '' + set background=dark + + set number + set smartindent + set tabstop=4 + set shiftwidth=4 + set expandtab + set nowrap + set rnu + + set hidden + set nobackup + set nowritebackup + set cmdheight=2 + ''; + }; + + # bash + + programs.bash.enable = true; + programs.bash.initExtra = '' + export PS1="[\\u@\\h:\\w]\\$ " + ''; + + # fastfetch + + programs.fastfetch.enable = true; + + xdg.configFile."fastfetch/config.jsonc".source = ./fastfetch.jsonc; + xdg.configFile."fastfetch/art.jpg".source = ./art.jpg; + + # vscode + + programs.vscode.enable = true; +} diff --git a/home-manager/hyprland.conf b/home-manager/hyprland.conf new file mode 100644 index 0000000..57af92d --- /dev/null +++ b/home-manager/hyprland.conf @@ -0,0 +1,157 @@ +# MONITORS + +monitor = DVI-D-1, 1920x1080, 0x0, 1 +monitor = HDMI-A-1, 3240x2160, 1920x0, 2 + +# ENV + +$terminal = kitty +$fileManager = thunar +$menu = wofi --show drun --normal-window + +env = LIBVA_DRIVER_NAME,nvidia +env = __GLX_VENDOR_LIBRARY_NAME,nvidia +env = HYPRCURSOR_THEME,Bibata-Modern-Classic + +env = XCURSOR_SIZE,22 +env = HYPRCURSOR_SIZE,22 + +env = QT_QPA_PLATFORMTHEME,qt6ct +env = QT_QPA_PLATFORM,wayland +env = XDG_MENU_PREFIX,plasma- + +# WINDOW RULES + +layerrule = blur, wofi + +# AUTOSTART + +exec-once = waybar & swww-daemon & mako +exec-once = hyprctl setcursor Bibata-Modern-Classic 22 + +# DECO + +general { + gaps_in = 4 + gaps_out = 8 + + border_size = 0 + + allow_tearing = false + layout = dwindle +} + +decoration { + rounding = 8 + + + blur { + enabled = true + size = 4 + passes = 3 + } + + shadow { + enabled = false + } +} + +misc { + force_default_wallpaper = 0 + disable_hyprland_logo = true +} + +# ANIMATIONS + +animations { + # https://wiki.hyprland.org/Configuring/Animations/ + + bezier = easeOutQuint,0.23,1,0.32,1 + bezier = easeInOutCubic,0.65,0.05,0.36,1 + bezier = linear,0,0,1,1 + bezier = almostLinear,0.5,0.5,0.75,1.0 + bezier = quick,0.15,0,0.1,1 + bezier = easeInOut,0.66,0,0.61,1 + + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + animation = windows, 1, 4.79, easeOutQuint + animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsOut, 1, 1.49, linear, popin 87% + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = fade, 1, 3.03, quick + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + animation = workspaces, 1, 3, easeInOut, slide + animation = workspacesIn, 1, 2, easeInOut, slide + animation = workspacesOut, 1, 2, easeInOut, slide +} + +dwindle { + pseudotile = true + preserve_split = true +} + +# INPUT + +input { + follow_mouse = 1 + kb_layout = us, ru + kb_options = grp:alt_shift_toggle +} + +# BINDS + +$mainMod = SUPER + +bind = $mainMod, Q, exec, $terminal +bind = $mainMod, W, killactive, +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, R, exec, $menu +bind = $mainMod, Z, togglesplit, +bind = $mainMod, X, togglefloating, +bind = $mainMod, c, exec, hyprctl dispatch centerwindow +bind = $mainMod, F, fullscreen, 0 +bind = $mainMod, S, exec, hyprshot -m region -z +bind = $mainMod, D, exec, hyprshot -m output -z +bind = $mainMod, A, exec, hyprshot -m window -z + +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow +bind = , mouse:275, workspace, e-1 +bind = , mouse:276, workspace, e+1 diff --git a/home-manager/kitty.conf b/home-manager/kitty.conf new file mode 100644 index 0000000..e26c943 --- /dev/null +++ b/home-manager/kitty.conf @@ -0,0 +1,14 @@ +include colors.conf + +background_opacity 0.8 +font_size 10.0 +confirm_os_window_close 0 +window_padding_width 10 +cursor_shape beam + +# BEGIN_KITTY_FONTS +font_family family="MonaspiceAr Nerd Font" +bold_font auto +italic_font auto +bold_italic_font auto +# END_KITTY_FONTS diff --git a/home-manager/kitty_colors.conf b/home-manager/kitty_colors.conf new file mode 100644 index 0000000..ce541d9 --- /dev/null +++ b/home-manager/kitty_colors.conf @@ -0,0 +1,32 @@ +cursor #888888 +cursor_text_color #444444 + +foreground #cccccc +background #111111 +selection_foreground #000000 +selection_background #aaaaaa +url_color #888888 + +color0 #1a1a1a +color8 #333333 + +color1 #888888 +color9 #aaaaaa + +color2 #777777 +color10 #999999 + +color3 #666666 +color11 #888888 + +color4 #888888 +color12 #aaaaaa + +color5 #777777 +color13 #999999 + +color6 #666666 +color14 #888888 + +color7 #e0e0e0 +color15 #ffffff diff --git a/home-manager/waybar_colors.css b/home-manager/waybar_colors.css new file mode 100644 index 0000000..6bfb1dc --- /dev/null +++ b/home-manager/waybar_colors.css @@ -0,0 +1,4 @@ +@define-color background #111111; +@define-color tertiary #aeaeae; +@define-color primary #53dbca; +@define-color secondary #82d5c9; diff --git a/home-manager/waybar_config.jsonc b/home-manager/waybar_config.jsonc new file mode 100644 index 0000000..a2ecb08 --- /dev/null +++ b/home-manager/waybar_config.jsonc @@ -0,0 +1,50 @@ +{ + "height": 0, + "spacing": 8, + "modules-left": [ + "clock", + "custom/separator", + "custom/phone", + "network" + ], + "modules-center": [ + "hyprland/workspaces", + ], + "modules-right": [ + "cpu", + "memory", + "custom/separator", + "pulseaudio", + "custom/separator", + "hyprland/language", + "tray", + ], + "hyprland/language": { + "format": "{}", + "format-ru": "ru", + "format-en": "en", + }, + "hyprland/workspaces": { + "all-outputs": true, + }, + "custom/separator": { + "format": "|" + }, + "network": { + "interface": "enp2s0", + "format": "dn {bandwidthDownBytes} up {bandwidthUpBytes}", + "interval": 5, + }, + "tray": { + "icon-size": 13, + "spacing": 8 + }, + "cpu": { + "interval": 5, + "format": "cpu {usage}%" + }, + "memory": { + "interval": 5, + "format": "mem {percentage}%" + } +} diff --git a/home-manager/waybar_style.css b/home-manager/waybar_style.css new file mode 100644 index 0000000..361f359 --- /dev/null +++ b/home-manager/waybar_style.css @@ -0,0 +1,55 @@ +@import "colors.css"; + +* { + font-family: FontAwesome, MonaspiceAr Nerd Font Mono, monospace; + font-size: 13px; + font-weight: 600; +} + +window#waybar { + all:unset; +} + +.modules-left { + margin: 4px 0px 0px 8px; + padding: 6px 12px 6px 12px; + background: alpha(@background, 0.7); + border-radius: 8px; +} + +.modules-center { + margin: 4px 0px 0px 0px; + padding: 6px 12px 6px 12px; + background: alpha(@background, 0.7); + border-radius: 8px; +} + +.modules-right { + margin: 4px 8px 0px 0px; + padding: 6px 12px 6px 12px; + background: alpha(@background, 0.7); + border-radius: 8px; +} + +#workspaces button { + all: unset; + padding: 0px 5px; + transition: all .2s ease; +} + +#workspaces button.active { + color: @tertiary; +} + +#workspaces button:hover { + text-decoration: underline; + transition: all 1s ease; +} + +#network { + color: @primary; +} + +#pulseaudio { + color: @secondary; +} diff --git a/home-manager/wofi_config b/home-manager/wofi_config new file mode 100644 index 0000000..f2e425b --- /dev/null +++ b/home-manager/wofi_config @@ -0,0 +1,13 @@ +[config] +allow_images=true +width=700 +show=drun +prompt=Search +height=400 +term=kitty +hide_scroll=true +print_command=true +insensitive=true +columns=1 +no_actions=true +image_size=30 diff --git a/home-manager/wofi_style.css b/home-manager/wofi_style.css new file mode 100644 index 0000000..680ba88 --- /dev/null +++ b/home-manager/wofi_style.css @@ -0,0 +1,39 @@ +* { + all:unset; + font-family: MonaspiceAr Nerd Font Mono, monospace; + font-weight: 600; + font-size: 18px; +} + +window { + all:unset; + background: rgba(17, 17, 17, 0.7); + border-radius: 4px; +} + +#text { + margin: 5px; +} + +#entry { + padding: 4px; +} + +#entry:selected { + color: #aeaeae; + background: #444444; + border-radius: 4px; +} + +#input * { + padding: 10px; + border: none; + outline: none; +} + +#scroll { + margin: 0px; + padding: 10px; + border: none; +} +