From 60eef49dc2041eae13e2254c320e9c6d692d04cc Mon Sep 17 00:00:00 2001 From: Thiago Sposito Date: Sun, 24 Aug 2025 08:49:55 -0300 Subject: [PATCH] feat: update to use hyprland and than back to gnome (wayland) * add Waybar configs under `home-manager/hyprland/config/` * extend Hyprland config with wallpaper, blur, animations, and new keybindings * adjust common configs: Keychron (remove redundant xserver enable) and NVIDIA (add `videoDrivers = [ "nvidia" ]`) * update `hosts/Nixstation` with GNOME desktop, GDM, Wacom config, and disable Hyprland * add `home-manager/gnome/default.nix` with dconf, extensions, icons, and packages * switch `home-manager/home.nix` from Hyprland to GNOME and update packages and Kitty config --- home-manager/gnome/default.nix | 39 ++++++++++ home-manager/home.nix | 30 ++++--- .../hyprland/config/waybar_config.json | 58 ++++++++++++++ home-manager/hyprland/config/waybar_style.css | 48 ++++++++++++ home-manager/hyprland/default.nix | 78 ++++++++++++------- hosts/Nixstation/default.nix | 53 ++++++++++--- hosts/common/keychron.nix | 2 - hosts/common/nvidia/default.nix | 3 + 8 files changed, 260 insertions(+), 51 deletions(-) create mode 100644 home-manager/gnome/default.nix diff --git a/home-manager/gnome/default.nix b/home-manager/gnome/default.nix new file mode 100644 index 0000000..08f4582 --- /dev/null +++ b/home-manager/gnome/default.nix @@ -0,0 +1,39 @@ +{ pkgs, ... }: + +{ + + dconf.settings = { + + "org/gnome/shell" = { + disable-user-extensions = false; + favorite-apps = [ + "org.gnome.Settings.desktop" + "org.gnome.Nautilus.desktop" + "firefox.desktop" + "org.gnome.Calendar.desktop" + "code.desktop" + "kitty.desktop" + ]; + + enabled-extensions = [ + "" + "trayIconsReloaded@selfmade.pl" + "Vitals@CoreCoding.com" + "sound-output-device-chooser@kgshank.net" + "space-bar@luchrioh" + "Forge@forge-ext" + ]; + }; + }; + + home.packages = with pkgs; [ + gnomeExtensions.pop-shell + gnomeExtensions.forge + gnomeExtensions.tray-icons-reloaded + gnomeExtensions.vitals + gnomeExtensions.sound-output-device-chooser + gnomeExtensions.space-bar + nordzy-icon-theme + + ]; +} \ No newline at end of file diff --git a/home-manager/home.nix b/home-manager/home.nix index 7a4bf3a..c3af14b 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -1,12 +1,9 @@ -{ config -, inputs -, lib -, pkgs +{ pkgs , ... }: { imports = [ - ./hyprland + ./gnome ./vim.nix ./zsh.nix ]; @@ -14,9 +11,6 @@ nixpkgs = { config = { allowUnfree = true; - config.permittedInsecurePackages = [ - "libsoup-2.74.3" - ]; # Workaround for https://github.com/nix-community/home-manager/issues/2942 # nixpkgs.config.allowUnfreePredicate = # pkg: @@ -40,11 +34,15 @@ hwinfo hydralauncher inkscape + wl-clipboard + kanshi keymapp lazygit libinput librespot luarocks + nerd-fonts.gohufont + nerd-fonts.fira-code nil nixpkgs-fmt nordic @@ -57,9 +55,12 @@ statix stylua sysbench + swaybg transmission_4 uget unzip + wl-clipboard + zed-editor ]; username = "thiago"; }; @@ -99,19 +100,24 @@ kitty = { enable = true; keybindings = { + # splitting + "ctrl+shift+enter" = "new_window"; + "ctrl+shift+\\" = "new_window --location=hsplit"; + # resizing "ctrl+alt+left" = "resize_window narrower"; "ctrl+alt+right" = "resize_window wider"; "ctrl+alt+up" = "resize_window taller"; "ctrl+alt+down" = "resize_window shorter"; + }; settings = { hide_window_decorations = "titlebar-only"; - font_size = 16; - font = "ComicShannsMono Nerd Font Mono"; + font_size = 18; + font_family="GohuFont 14 Nerd Font Mono"; inactive_text_alpha = "0.6"; - background_blur = 16; - background_opacity = 0.0; + # background_blur = 32; + background_opacity = 1.0; }; themeFile = "Nord"; }; diff --git a/home-manager/hyprland/config/waybar_config.json b/home-manager/hyprland/config/waybar_config.json index e69de29..b00447b 100644 --- a/home-manager/hyprland/config/waybar_config.json +++ b/home-manager/hyprland/config/waybar_config.json @@ -0,0 +1,58 @@ +{ + "layer": "top", + "position": "right", + "exclusive": true, + "modules-left": [ + "hyprland/workspaces", + "hyprland/window" + ], + "modules-center": [ + "clock", + "temperature" + ], + "modules-right": [ + "pulseaudio", + "battery", + "network", + "tray" + ], + "clock": { + "format": "{:%d/%m %H:%M}", + "interval": 1 + }, + "temperature": { + "hwmon-path-abs": "/sys/class/hwmon/hwmon1/temp1_input", + "format": " {temperatureC}°C", + "critical-threshold": 90, + "format-icons": [ + "", + "", + "" + ] + }, + "battery": { + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% ⚡", + "format-icons": [ + "", + "", + "", + "", + "" + ] + }, + "network": { + "format-wifi": " {essid}", + "format-ethernet": " {ipaddr}", + "format-disconnected": " " + }, + "pulseaudio": { + "format": "{volume}% {icon}", + "format-muted": "", + "format-icons": [ + "", + "", + "" + ] + } +} \ No newline at end of file diff --git a/home-manager/hyprland/config/waybar_style.css b/home-manager/hyprland/config/waybar_style.css index e69de29..44e4d4a 100644 --- a/home-manager/hyprland/config/waybar_style.css +++ b/home-manager/hyprland/config/waybar_style.css @@ -0,0 +1,48 @@ +* { + color: #ffffff; +} + +window#waybar { + background: transparent; +} + +#workspaces { + flex-wrap: wrap; + max-width: 120px; +} + +#workspaces button { + background: #ff00ff; + border-radius: 0; + width: 40px; + height: 40px; + margin: 2px; + padding: 0; + flex: 0 0 40px; +} + +#workspaces button.active { + background: #ff00ff; + border: 2px solid #ffffff; +} + +#window { + background: transparent; +} + +#clock, +#battery, +#network, +#pulseaudio, +#tray, +#temperature { + background: transparent; +} + +#pulseaudio.muted { + background: transparent; +} + +#network.disconnected { + background: transparent; +} \ No newline at end of file diff --git a/home-manager/hyprland/default.nix b/home-manager/hyprland/default.nix index e6bb1f7..419e25c 100644 --- a/home-manager/hyprland/default.nix +++ b/home-manager/hyprland/default.nix @@ -1,4 +1,4 @@ -_: { +{lib, ...}: { home.sessionVariables = { fileManager = "thunar"; menu = "fuzzel --show drun"; @@ -14,17 +14,33 @@ _: { }; home.file = { ".config/fuzzel/fuzzel.ini".text = builtins.readFile ./config/fuzzel.ini; - ".config/waybar/config".text = builtins.readFile ./config/waybar_config.json; - ".config/waybar/style.css".text = builtins.readFile ./config/waybar_style.css; + # ".config/waybar/config".text = builtins.readFile ./config/waybar_config.json; + # ".config/waybar/style.css".text = builtins.readFile ./config/waybar_style.css; + ".config/hyprland/wallpaper/e-villa.png" = { + source = builtins.fetchurl { + url = "https://ipfs.io/ipfs/bafybeibsjbhleghcc4zdgarmsftd6jt27rb73g3mlbuup3cmuedw54uyqa"; + sha256 = "0gxa45qigjcjb12v243jv37nji5dax6rn5y6l823f0a2s2hfkqm5"; + }; + force = true; + }; + }; + services.hyprpaper.enable = true; + services.hyprpaper.settings = { + preload = [ "/home/thiago/.config/hyprland/wallpaper/hydra.jpg" ]; + wallpaper = [ "HDMI-A-1,/home/thiago/.config/hyprland/wallpaper/hydra.jpg" ]; }; wayland.windowManager.hyprland = { enable = true; settings = { "$mod" = "SUPER"; - layerrule = "ignorezero, waybar"; + layerrule =[ + "ignorezero, waybar" + "blur, waybar" + ]; bind = [ "$mod, q, exec, kitty" + "$mod, f, exec, firefox" "$mod, c, killactive," "$mod, m, exit," "$mod, e, exec, $fileManager" @@ -64,9 +80,10 @@ _: { "$mod, mouse_up, workspace, e-1" ]; + bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" + "$mod, mouse:272, movewindow" # Hold $mod and left mouse button to move window + "$mod, mouse:273, resizewindow" # Hold $mod and right mouse button to resize window ]; bindel = [ @@ -91,14 +108,12 @@ _: { ]; monitor = [ ",preferred,auto,auto" - "HDMI-A-2,1920x1080@50,0x0,1" - "eDP-1,2560x1600@60,1920x0,2" ]; general = { - gaps_in = 2; - gaps_out = 3; - border_size = 1; + gaps_in = 3; + gaps_out = 6; + border_size = 0; resize_on_border = true; allow_tearing = false; layout = "dwindle"; @@ -106,8 +121,10 @@ _: { decoration = { rounding = 2; + fullscreen_opacity = 1.0; active_opacity = 1.0; - inactive_opacity = 0.9; + inactive_opacity = 0.95; + shadow = { enabled = true; range = 4; @@ -116,14 +133,16 @@ _: { }; blur = { enabled = true; - size = 17; - passes = 1; + size = 4; + passes = 4; vibrancy = 0.1696; + vibrancy_darkness = 0.08; + # noise = 0.002; }; }; animations = { - enabled = "yes, please :)"; + enabled = true; bezier = [ "easeOutQuint,0.23,1,0.32,1" "easeInOutCubic,0.65,0.05,0.36,1" @@ -131,29 +150,32 @@ _: { "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" + "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" + "workspaces, 1, 1.94, almostLinear, fade" + "workspacesIn, 1, 1.21, almostLinear, fade" "workspacesOut, 1, 1.94, almostLinear, fade" ]; }; dwindle = { pseudotile = true; + default_split_ratio = 0.618; preserve_split = true; + smart_split = true; }; master = { diff --git a/hosts/Nixstation/default.nix b/hosts/Nixstation/default.nix index 50e20da..614c61e 100644 --- a/hosts/Nixstation/default.nix +++ b/hosts/Nixstation/default.nix @@ -17,12 +17,42 @@ loader.systemd-boot.enable = true; loader.efi.canTouchEfiVariables = true; }; + environment.etc."libwacom/intuos4-4x6.tablet".text = '' + # Wacom + # Intuos4 Small + [Device] + Name=Wacom Intuos4 4x6 + DeviceMatch=usb:056a:00b8 + Class=Intuos4 + Width=6 + Height=4 + Layout=intuos4-4x6.svg + IntegratedIn= + Styli=0x802;0x804;0x806;0x80a;0x80c;0x902;0x90a;0x100802;0x100804;0x10080a;0x10080c;0x100902;0x10090a;0x120802;0x140802;0x14080a;0x160802;0x16080a; + + [Features] + Reversible=true + Stylus=true + Ring=true + Buttons=7 + StatusLEDs=Ring + + [Buttons] + Left=A;B;C;D;E;F;G + + Ring=A + RingNumModes=4 + ''; environment = { systemPackages = with pkgs; [ act btrfs-progs cudatoolkit networkmanagerapplet + libwacom + wacomtablet + gnome-tweaks + gnome-session ]; variables = { @@ -82,15 +112,26 @@ # }; dconf.enable = true; hyprland = { - enable = true; + enable = false; withUWSM = true; xwayland.enable = true; }; virt-manager.enable = true; }; - # security.pam.services.gdm.enableGnomeKeyring = true; + security.pam.services.gdm.enableGnomeKeyring = true; security.rtkit.enable = true; services = { + xserver = { + enable = true; + desktopManager.gnome.enable = true; + displayManager.gdm = { + enable = true; + wayland = true; + }; + displayManager.defaultSession = "gnome"; + }; + + udev.packages = [ pkgs.libwacom ]; avahi = { enable = true; nssmdns4 = true; @@ -109,13 +150,7 @@ flatpak.enable = true; - greetd = { - enable = true; - settings.default_session = { - command = "${pkgs.hyprland}/bin/Hyprland"; - user = "thiago"; - }; - }; + pipewire = { enable = true; diff --git a/hosts/common/keychron.nix b/hosts/common/keychron.nix index b203ff0..f831fde 100644 --- a/hosts/common/keychron.nix +++ b/hosts/common/keychron.nix @@ -2,8 +2,6 @@ { services.xserver = { - enable = true; - xkb = { layout = "custom-br"; variant = ""; diff --git a/hosts/common/nvidia/default.nix b/hosts/common/nvidia/default.nix index 5689e61..7799ed2 100644 --- a/hosts/common/nvidia/default.nix +++ b/hosts/common/nvidia/default.nix @@ -39,6 +39,9 @@ ]; }); }; + xserver = { + videoDrivers = [ "nvidia" ]; + }; }; nixpkgs.config.cudaSupport = true; environment.systemPackages = with pkgs; [