diff --git a/.gitignore b/.gitignore index 723ef36..e7dd6a3 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -.idea \ No newline at end of file +.idea +*.qcow2 +result diff --git a/home-manager/hyprland-settings.nix b/home-manager/hyprland-settings.nix index 189a470..9209d39 100644 --- a/home-manager/hyprland-settings.nix +++ b/home-manager/hyprland-settings.nix @@ -1,6 +1,10 @@ -{ user, pkgs, layout, variant, ... }: +{ config, osConfig, pkgs, inputs, lib, ... }: +with lib; +let + cfg = osConfig.custom.graphical.hyprland; +in { - home-manager.users.${user} = { + config = lib.mkIf cfg.enable { programs.swaylock.enable = true; wayland.windowManager.hyprland = { enable = true; @@ -38,8 +42,8 @@ # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input = { - kb_layout = layout; - kb_variant = variant; + kb_layout = osConfig.mainUser.layout; + kb_variant = osConfig.mainUser.variant; kb_model = ""; kb_options = ""; kb_rules = ""; @@ -155,7 +159,7 @@ "$mainMod, V, togglefloating" "$mainMod, I, exec, ${rofi} -show drun -show-icons" "$mainMod, S, exec, cat ~/songs | shuf -n 1 | sed \"s/^/b\.p /g\" | ${wl-copy}" - "$mainMod, R, exec, ${swww} img $(ls -d ~/Nextcloud/dinge/Bg/* | shuf -n 1)" + "$mainMod, R, exec, ${swww} img $(ls -d /synced/default/dinge/Bg/* | shuf -n 1)" " , Print, exec, ${grim} -g \"$(${slurp} -d)\" - | ${wl-copy}" "ALT, SPACE, exec, ${rofi} -show combi" " , XF86MonBrightnessUp, exec, ${brightnessctl} s +5%" @@ -230,7 +234,7 @@ exec-once = [ "${pkgs.swww}/bin/swww init; sleep 1;" - "${pkgs.swww} img $(ls -d ~/Nextcloud/dinge/Bg/* | shuf -n 1)" + "${pkgs.swww} img $(ls -d /synced/default/dinge/Bg/* | shuf -n 1)" "${pkgs.networkmanagerapplet}/bin/nm-applet --indicator &" "${pkgs.waybar}/bin/waybar &" #"${pkgs.dunst}/bin/dunst &" diff --git a/home-manager/hyprland-xwaylandvideobridge.nix b/home-manager/hyprland-xwaylandvideobridge.nix new file mode 100644 index 0000000..7cc18ea --- /dev/null +++ b/home-manager/hyprland-xwaylandvideobridge.nix @@ -0,0 +1,22 @@ +{ config, osConfig, pkgs, inputs, lib, ... }: +with lib; +let + cfg = osConfig.custom.graphical.hyprland.videobridge; +in +{ + config = lib.mkIf cfg.enable { + wayland.windowManager.hyprland.settings.windowrulev2 = [ + "opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$" + "noanim,class:^(xwaylandvideobridge)$" + "noinitialfocus,class:^(xwaylandvideobridge)$" + "maxsize 1 1,class:^(xwaylandvideobridge)$" + "noblur,class:^(xwaylandvideobridge)$" + ]; + + systemd.user.services.xwaylandvideobridge = { + Unit.Description = "XWaylandVideoBridge"; + Service.ExecStart = lib.getExe pkgs.xwaylandvideobridge; + Install.WantedBy = ["graphical-session.target"]; + }; + }; +} diff --git a/modules/collections/desktop.nix b/modules/collections/desktop.nix index 544c7ee..366cb61 100644 --- a/modules/collections/desktop.nix +++ b/modules/collections/desktop.nix @@ -30,6 +30,8 @@ wooting.enable = true; }; graphical = { + hyprland.enable = true; + hyprland.videobridge.enable = true; audio.enable = true; code.enable = true; emulators.enable = true; diff --git a/modules/collections/laptop.nix b/modules/collections/laptop.nix index 95e18a5..bc16360 100644 --- a/modules/collections/laptop.nix +++ b/modules/collections/laptop.nix @@ -21,6 +21,7 @@ code.enable = true; emulators.enable = true; gamemode.enable = true; + hyprland.enable = true; games.enable = true; ime.enable = true; shared.enable = true; diff --git a/modules/graphical/default.nix b/modules/graphical/default.nix index 171772f..eebc54b 100644 --- a/modules/graphical/default.nix +++ b/modules/graphical/default.nix @@ -7,6 +7,7 @@ ./gamemode.nix ./games.nix ./gnome.nix + ./hyprland.nix ./ime.nix ./lxqt.nix ./noise-supression.nix diff --git a/modules/graphical/hyprland.nix b/modules/graphical/hyprland.nix index 08a7904..1fecac4 100644 --- a/modules/graphical/hyprland.nix +++ b/modules/graphical/hyprland.nix @@ -1,82 +1,87 @@ { config, pkgs, lib, inputs, ... }: - +with lib; let - patchedWaybar = pkgs.unstable.waybar.overrideAttrs (oldAttrs: { - mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ]; - }); - - #patchedHyprland = pkgs.hyprland.overrideAttrs (oldAttrs: { - # version = "0.28.0"; - #}); + cfg = config.custom.graphical.hyprland; in { - imports = [ - (import ../../home-manager/hyprland-settings.nix ({ user="${config.mainUser.name}"; pkgs = pkgs; layout = config.mainUser.layout; variant = config.mainUser.variant; })) - ]; - - services.xserver = { - layout = config.mainUser.layout; - xkbVariant = config.mainUser.variant; - enable = true; - displayManager = lib.mkIf (!config.services.xserver.displayManager.gdm.enable) { - sddm.enable = true; - }; + options.custom.graphical.hyprland = { + enable = mkEnableOption "Enables hyprland"; }; - - environment.sessionVariables = { - # If your cursor becomes invisible - #WLR_NO_HARDWARE_CURSORS = "1"; - # Hint electron apps to use wayland - NIXOS_OZONE_WL = "1"; - WLR_NO_HARDWARE_CURSORS="1"; - #WLR_DRM_NO_ATOMIC="1"; - WLR_DRM_DEVICES = "/dev/dri/card0"; + options.custom.graphical.hyprland.videobridge = { + enable = mkEnableOption "Enables xwaylandvideobridge for hyprland"; }; - - hardware = { - # Opengl - opengl.enable = true; - - # Most wayland compositors need this - nvidia.modesetting.enable = true; + + config = let + patchedWaybar = pkgs.unstable.waybar.overrideAttrs (oldAttrs: { mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ]; }); + in mkIf cfg.enable { + services.xserver = { + layout = config.mainUser.layout; + xkbVariant = config.mainUser.variant; + enable = true; + displayManager = mkIf (!config.services.xserver.displayManager.gdm.enable) { + sddm.enable = true; + }; + }; + + environment.sessionVariables = { + # Hint electron apps to use wayland + NIXOS_OZONE_WL = "1"; + WLR_NO_HARDWARE_CURSORS="1"; + #WLR_DRM_NO_ATOMIC="1"; + #WLR_DRM_DEVICES = "/dev/dri/card0"; + LIBVA_DRIVER_NAME="nvidia"; + # black screen :( + #XDG_SESSION_TYPE = "wayland"; + GBM_BACKEND = "nvidia-drm"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + WLR_RENDERER_ALLOW_SOFTWARE="1"; + }; + + hardware = { + # Opengl + opengl.enable = true; + + # Most wayland compositors need this + nvidia.modesetting.enable = true; + }; + + xdg.portal.enable = true; + xdg.portal.extraPortals = lib.mkDefault [ pkgs.xdg-desktop-portal-gtk ]; + + programs.hyprland = { + enable = true; + package = pkgs.unstable.hyprland; + }; + + security.pam.services = { + swaylock = { + fprintAuth = false; + text = '' + auth include login + ''; + }; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + # hyprland stuff + patchedWaybar + dunst + swww + rofi-wayland + libnotify + networkmanagerapplet + wayland + wl-clipboard + #qt5.qtwayland + #qt6.qmake + #qt6.qtwayland + #waybar + #xdg-desktop-portal-hyprland + #xdg-desktop-portal-gtk + #xdg-utils + #xwayland + ]; }; - - xdg.portal.enable = true; - xdg.portal.extraPortals = lib.mkDefault [ pkgs.xdg-desktop-portal-gtk ]; - - programs.hyprland = { - enable = true; - package = pkgs.unstable.hyprland; - }; - - security.pam.services = { - swaylock = { - fprintAuth = false; - text = '' - auth include login - ''; - }; - }; - - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - # hyprland stuff - patchedWaybar - dunst - swww - rofi-wayland - libnotify - networkmanagerapplet - wayland - wl-clipboard - #qt5.qtwayland - #qt6.qmake - #qt6.qtwayland - #waybar - #xdg-desktop-portal-hyprland - #xdg-desktop-portal-gtk - #xdg-utils - #xwayland - ]; } diff --git a/modules/graphical/plasma.nix b/modules/graphical/plasma.nix index d9efd0b..e82489c 100644 --- a/modules/graphical/plasma.nix +++ b/modules/graphical/plasma.nix @@ -14,7 +14,7 @@ in xkb.layout = config.mainUser.layout; xkb.variant = config.mainUser.variant; displayManager.sddm.enable = true; - displayManager.sddm.settings.Wayland.SessionDir = "${pkgs.plasma5Packages.plasma-workspace}/share/wayland-sessions"; + #displayManager.sddm.settings.Wayland.SessionDir = "${pkgs.plasma5Packages.plasma-workspace}/share/wayland-sessions"; #displayManager.sddm.wayland.enable = true; libinput = { diff --git a/systems/vm/configuration.nix b/systems/vm/configuration.nix index a3cc6dd..1d29e00 100644 --- a/systems/vm/configuration.nix +++ b/systems/vm/configuration.nix @@ -16,7 +16,7 @@ settings.enable = true; }; graphical = { - plasma.enable = true; + hyprland.enable = true; shared.enable = true; }; }; diff --git a/users/kopatz/home.nix b/users/kopatz/home.nix index 8700ec6..df369a3 100644 --- a/users/kopatz/home.nix +++ b/users/kopatz/home.nix @@ -22,6 +22,8 @@ ../../home-manager/kitty.nix ../../home-manager/rofi.nix ../../home-manager/kde-path.nix + ../../home-manager/hyprland-settings.nix + ../../home-manager/hyprland-xwaylandvideobridge.nix ../../home-manager/firefox inputs.nix-colors.homeManagerModule ]; diff --git a/users/vm/home.nix b/users/vm/home.nix index 78621bb..aff81c4 100644 --- a/users/vm/home.nix +++ b/users/vm/home.nix @@ -7,6 +7,7 @@ imports = [ ../../home-manager/nvim.nix ../../home-manager/zsh.nix + ../../home-manager/hyprland-settings.nix inputs.nix-colors.homeManagerModule ]; }