From ec54db28a3a216f03dac818ad2d5ecb57c295a80 Mon Sep 17 00:00:00 2001 From: Faris Date: Sun, 10 May 2026 00:03:59 +0100 Subject: [PATCH] WIP: HYPRLAND --- config/common.nix | 2 +- config/desktop.nix | 20 +- config/gnome.nix | 1 - config/hyprland.nix | 29 + flake.lock | 83 ++- flake.nix | 6 +- home/common.nix | 87 ++- home/hyprland.nix | 1300 +++++++++++++++++++++++------------- hosts/desktop/settings.nix | 4 +- 9 files changed, 1016 insertions(+), 516 deletions(-) create mode 100644 config/hyprland.nix diff --git a/config/common.nix b/config/common.nix index cb02563..bc4bf13 100644 --- a/config/common.nix +++ b/config/common.nix @@ -96,7 +96,7 @@ noto-fonts-cjk-sans noto-fonts-color-emoji corefonts - fira-mono + nerd-fonts.jetbrains-mono font-awesome_5 ]; diff --git a/config/desktop.nix b/config/desktop.nix index 2c95cd8..74cd4ca 100644 --- a/config/desktop.nix +++ b/config/desktop.nix @@ -7,10 +7,12 @@ hardware.graphics = { enable = true; }; + + qt.style = "adwaita-dark"; + qt.platformTheme = "gnome"; #hyprland - programs.hyprland.enable = true; - security.pam.services.hyprlock = {}; + services.displayManager.gdm.enable = true; # use sddm until gnome 50 due to https://github.com/systemd/systemd/issues/39259 hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = true; @@ -57,8 +59,19 @@ plymouth.enable = true; # Allow higher virtual memory for games kernel.sysctl."vm.max_map_count" = 2147483642; + initrd.systemd.enable = true; # LUKS login prompt + consoleLogLevel = 3; + initrd.verbose = false; + kernelParams = [ + "quiet" + "udev.log_level=3" + "systemd.show_status=auto" + "rd.udev.log_level=3" + ]; }; + + #services.udev.packages = [ pkgs.via ]; nixpkgs.overlays = [ @@ -71,6 +84,8 @@ }) ]; + services.mullvad-vpn.enable = true; + environment.systemPackages = with pkgs; [ audacity brave @@ -96,7 +111,6 @@ monero-gui moonlight-qt nvtopPackages.nvidia - vscodium dconf-editor via kdePackages.kdenlive diff --git a/config/gnome.nix b/config/gnome.nix index 280d54f..6ca951d 100644 --- a/config/gnome.nix +++ b/config/gnome.nix @@ -1,7 +1,6 @@ { # Enable the GNOME Desktop Environment. - services.displayManager.gdm.enable = true; # use sddm until gnome 50 due to https://github.com/systemd/systemd/issues/39259 services.desktopManager.gnome.enable = false; environment.systemPackages = with pkgs; [ diff --git a/config/hyprland.nix b/config/hyprland.nix new file mode 100644 index 0000000..4c5418a --- /dev/null +++ b/config/hyprland.nix @@ -0,0 +1,29 @@ +{ pkgs, ...}: + +{ + + programs.hyprland.enable = true; + security.pam.services.hyprlock = {}; + + #wifi + networking.wireless.iwd.enable = true; + + services.gnome.sushi.enable = true; # image previews in nautilus + + environment.systemPackages = with pkgs; [ + glib # gsettings + gsettings-desktop-schemas # gsettings + dconf # gsettings + impala # wifi + grim # screenshots + slurp # screenshot selection + wl-clipboard # copy to clipboard + libnotify # enables "notify-send" + nautilus + bluetui # bluetooth + wiremix # mixer + ]; + + services.udisks2.enable = true; # udiskie automount USB + +} \ No newline at end of file diff --git a/flake.lock b/flake.lock index 8ee5dd0..0b6d2c8 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,23 @@ { "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -42,6 +60,25 @@ "type": "github" } }, + "lazyvim": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1777781853, + "narHash": "sha256-O8/iGqnlzGYnLaJppG546jYjcz2BREC2tdxDQiHkeBk=", + "owner": "pfassina", + "repo": "lazyvim-nix", + "rev": "695c69b63a4b2a536a5615636de3c6991ed4b3ea", + "type": "github" + }, + "original": { + "owner": "pfassina", + "repo": "lazyvim-nix", + "type": "github" + } + }, "nix-darwin": { "inputs": { "nixpkgs": [ @@ -81,16 +118,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1777428379, - "narHash": "sha256-ypxFOeDz+CqADEQNL72haqGjvZQdBR5Vc7pyx2JDttI=", - "owner": "nixos", + "lastModified": 1777954456, + "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "755f5aa91337890c432639c60b6064bb7fe67769", + "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-25.11", + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -111,15 +148,47 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1777428379, + "narHash": "sha256-ypxFOeDz+CqADEQNL72haqGjvZQdBR5Vc7pyx2JDttI=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "755f5aa91337890c432639c60b6064bb7fe67769", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "home-manager": "home-manager", "home-manager-unstable": "home-manager-unstable", + "lazyvim": "lazyvim", "nix-darwin": "nix-darwin", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 787b1ff..4fbb243 100644 --- a/flake.nix +++ b/flake.nix @@ -11,10 +11,11 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.11"; nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; + lazyvim.url = "github:pfassina/lazyvim-nix"; }; outputs = - { self, nixpkgs, home-manager, home-manager-unstable, nix-darwin, ... }@inputs: + { self, nixpkgs, home-manager, home-manager-unstable, nix-darwin, lazyvim, ... }@inputs: { nixosConfigurations.desktop = nixpkgs.lib.nixosSystem { specialArgs = { @@ -26,6 +27,7 @@ ./config/common.nix ./config/linux.nix ./config/desktop.nix + ./config/hyprland.nix ./hosts/desktop/hardware.nix ./hosts/desktop/settings.nix home-manager.nixosModules.home-manager @@ -33,6 +35,7 @@ home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.extraSpecialArgs = { + inherit lazyvim; inherit inputs; hostname = "nixos-desktop"; }; @@ -40,6 +43,7 @@ imports = [ ./home/common.nix ./home/desktop.nix + ./home/hyprland.nix ]; }; } diff --git a/home/common.nix b/home/common.nix index 38dc50b..0a34fbc 100644 --- a/home/common.nix +++ b/home/common.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ...}: +{ config, pkgs, lazyvim, ...}: { home.sessionVariables = { @@ -7,6 +7,9 @@ BROWSER = "brave"; }; + + imports = [ lazyvim.homeManagerModules.default ]; + programs = { mpv = { @@ -28,44 +31,74 @@ ''; }; - neovim = { - enable = true; - viAlias = true; - vimAlias = true; - extraConfig = '' - set nocompatible - syntax on - set fileformat=unix - set encoding=utf8 - set number relativenumber - set wrap - set tabstop=4 - set shiftwidth=4 - set softtabstop=4 - set smarttab - set autoindent - set colorcolumn=80 - highlight ColorColumn ctermbg=8 + lazyvim.enable = true; - set clipboard=unnamed,unnamedplus - set list listchars=tab:>-,trail:_,extends:>,precedes:<,nbsp:~ - set showbreak=> + # neovim = { + # enable = true; + # viAlias = true; + # vimAlias = true; + # plugins = [ + # pkgs.vimPlugins.LazyVim + # { + # plugin = pkgs.vimPlugins.LazyVim; + # } + # ]; + # extraConfig = '' + # set nocompatible + # syntax on - let mapleader=" " + # set fileformat=unix + # set encoding=utf8 + # set number relativenumber + # set wrap - "# disable macro mode - map q - ''; - }; + # set tabstop=4 + # set shiftwidth=4 + # set softtabstop=4 + # set smarttab + # set autoindent + # set colorcolumn=80 + # highlight ColorColumn ctermbg=8 + + # set clipboard=unnamed,unnamedplus + # set list listchars=tab:>-,trail:_,extends:>,precedes:<,nbsp:~ + # set showbreak=> + + # let mapleader=" " + + # "# disable macro mode + # map q + # ''; + # }; tmux = { enable = true; historyLimit = 10000; mouse = true; extraConfig = '' + # Status bar + set -g status-position top + set -g status-interval 5 + set -g status-left-length 30 + set -g status-right-length 50 + set -g window-status-separator "" + set -gw automatic-rename on + set -gw automatic-rename-format '#{b:pane_current_path}' + # theme + set -g status-style "bg=default,fg=default" + set -g status-left "#[fg=black,bg=blue,bold] #S #[bg=default] " + set -g status-right "#[fg=blue]#{?pane_in_mode,COPY ,}#{?client_prefix,PREFIX ,}#{?window_zoomed_flag,ZOOM ,}#[fg=brightblack]#h " + set -g window-status-format "#[fg=brightblack] #I:#W " + set -g window-status-current-format "#[fg=blue,bold] #I:#W " + set -g pane-border-style "fg=brightblack" + set -g pane-active-border-style "fg=blue" + set -g message-style "bg=default,fg=blue" + set -g message-command-style "bg=default,fg=blue" + set -g mode-style "bg=blue,fg=black" + setw -g clock-mode-colour blue ''; }; diff --git a/home/hyprland.nix b/home/hyprland.nix index 15d243b..deaf9ff 100644 --- a/home/hyprland.nix +++ b/home/hyprland.nix @@ -1,3 +1,12 @@ +{ pkgs, hostname, ... }: +let + nix_background = "rgb(16, 15, 15)"; + nix_text = "rgb(206, 205, 195)"; + nix_accent = "rgb(67, 133, 190)"; # blue + nix_inactive = "rgb(64, 62, 60)"; + nix_alert = "rgb(209, 77, 65)"; # red + nix_recording = "rgb(218, 112, 44)"; # orange +in { home.pointerCursor = { gtk.enable = true; @@ -7,541 +16,882 @@ size = 20; }; -# gtk = { -# enable = true; -# theme = { -# package = pkgs.flat-remix-gtk; -# name = "Flat-Remix-GTK-Grey-Darkest"; -# }; -# -# iconTheme = { -# package = pkgs.adwaita-icon-theme; -# name = "Adwaita"; -# }; -# -# font = { -# name = "Sans"; -# size = 11; -# }; -# }; + # gtk = { + # enable = true; + # }; - home.packages = with pkgs; [ - grim #screenshots - slurp #screenshot selection - wl-clipboard # copy to clipboard - glib # gsettings - gsettings-desktop-schemas # gsettings - ]; + services.udiskie.enable = true; # automount USB - programs.kitty.enable = true; + programs.alacritty = { + enable = true; + theme = "flexoki"; + settings = { + font = { + normal = { + family = "JetBrainsMono Nerd Font"; + style = "Regular"; + }; + bold = { + family = "JetBrainsMono Nerd Font"; + style = "Bold"; + }; + italic = { + family = "JetBrainsMono Nerd Font"; + style = "Italic"; + }; + size = 9; + }; - services.mako.enable = true; - - dconf.settings = { - "org/gnome/desktop/interface" = { - color-scheme = "prefer-dark"; + window = { + padding.x = 14; + padding.y = 14; + decorations = "None"; + }; }; }; + + programs.kitty = { + enable = true; + shellIntegration.enableZshIntegration = true; + font.name = "JetBrains Mono Nerd Font"; + themeFile = "Catppuccin-Mocha"; + settings = { + background_opacity = 0.9; + }; + }; + + services.hyprpaper = { + enable = true; + settings = { + + preload = [ + "~/Downloads/wall.jpg" + ]; + wallpaper = [ + "DP-2,~/Downloads/wall.jpg" + "HDMI-A-1,~/Downloads/wall.jpg" + ]; + }; + }; + + services.dunst = { + enable = true; + settings = { + global = { + + width = "(300, 300)"; + height = "(75, 75)"; + font = "JetBrains Mono Nerd Font 14"; + offset = "(40, 40)"; + frame-color = nix_inactive; + background = nix_background; + foreground = nix_text; + timeout = 5; + }; + + urgency_critical = { + frame-color = nix_alert; + timeout = 0; + }; + + }; + }; + + # services.mako = { + # enable = true; + # settings = { + # default-timeout = 5; + # ignore-timeout = 1; + # width = "300"; + # height = "300"; + # border-color = "#89b4fa"; + # background-color = "#1e1e2e"; + # font = "JetBrains Mono Nerd Font 14"; + # border-size = 3; + # + # "mode=do-not-disturb" = { + # invisible = 1; + # }; + # + # "urgency=low" = { + # default-timeout = 5; + # }; + # + # "urgency=normal" = { + # default-timeout = 10; + # }; + # + # "urgency=high" = { + # border-color = "#f38ba8"; + # }; + # }; + # }; + + # services.swaync = { + # enable = true; + # style = '' + # .notification { + # border-radius: 0px; + # background-color: "#1e1e2e"; + # color: "#cdd6f4"; + # border-color: "#89b4fa"; + # } + # ''; + # + # }; + + dconf = { + enable = true; + settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + }; + }; + }; + programs.waybar = { #systemd.enable = true; - #systemd.target = "hyprland-session.target"; + #systemd.target = "hyprland-session.target"; enable = true; - style = '' - @define-color background #1a1a2e; - @define-color foreground #e0e0e0; + style = '' + * { - /* background-color: @background; */ - /* color: @foreground; */ - + background-color: ${nix_background}; + color: ${nix_text}; + border: none; - padding: 0px; + border-radius: 0; min-height: 0; - font-family: "DejaVu Sans", "Font Awesome 5 Free"; - font-weight: normal; - font-size: 12px; - } - #waybar > .horizontal { - padding-top: 2px; - } - - window#waybar { - background-color: @background; - color: @foreground; - border-bottom: 2px solid alpha(@foreground, 0.9); - transition-property: background-color; - transition-duration: .5s; - border-left: 2px solid alpha(@foreground, 0.9); - border-right: 2px solid alpha(@foreground, 0.9); - border-radius: 2px; - } - - #window { - text-shadow: 0px 0px 2px alpha(@foreground, 0.4); + font-family: 'JetBrainsMono Nerd Font'; + font-size: 14px; /* up from 12px */ } - - #workspaces { - background: transparent; - margin: 3px 0px; - padding: 10px 6px; - margin-left: -6px; - margin-top: 0px; - margin-bottom: 0px; + .modules-left { + margin-left: 8px; } - + + .modules-right { + margin-right: 8px; + } + #workspaces button { - min-width: 8px; - min-height: 8px; - padding: 1; - margin: 0 6px; - border-radius: 2px; - background-color: alpha(@foreground, 0.75); - transition: all 0.15s ease-in-out; - } - - #workspaces button.active, - #workspaces button:hover { - background-color: @foreground; - min-width: 25px; - border-radius: 2px; - transition: all 0.15s ease-in-out; + all: initial; + padding: 0 6px; + margin: 0 1.5px; + min-width: 9px; } + #workspaces button.empty { - opacity: 0.45; + opacity: 0.5; } - - - #workspaces button label { - font-size: 0px; - } - - #workspaces button { - /* margin-top: 1px; */ - /* margin-bottom: -1px; */ - font-size: 12.5px; - background: @foreground; - font-weight: 800; - } - ''; - settings = { - mainBar = { - modules-left = [ "hyprland/workspaces" ]; - modules-center = [ "hyprland/window" ]; - modules-right = [ "tray" "idle_inhibitor" "privacy" "pulseaudio" "clock" ]; - clock = { - format = "{:%a %b %d %H:%M}"; - }; + #cpu, + #battery, + #pulseaudio, + #custom-power, + #idle_inhibitor, + #bluetooth, + #language { + min-width: 12px; + margin: 0 7.5px; + } - idle_inhibitor = { + #tray { + margin-right: 16px; + } + + #bluetooth { + margin-right: 17px; + } + + #network { + margin-right: 13px; + } + + #custom-expandn { + margin-right: 18px; + } + + tooltip { + padding: 2px; + } + + #custom-update { + font-size: 10px; + } + + #clock { + margin-left: 8.75px; + } + + #custom-weather { + margin-left: 7.5px; + margin-right: 7.5px; + } + + #custom-weather.unavailable { + min-width: 0; + margin: 0; + padding: 0; + } + + .hidden { + opacity: 0; + } + + #privacy { + min-width: 12px; + margin-left: 5px; + margin-right: 0; + font-size: 10px; + padding-bottom: 1px; + } + + #privacy.active { + color: #a55555; + } + + #idle_inhibitor.active { + color: #a55555; + } + ''; + settings = { + mainBar = { + height = 26; + spacing = 4; + modules-left = [ "hyprland/workspaces" ]; + modules-center = [ + "clock" + "idle_inhibitor" + ]; + modules-right = [ + "group/minimized" + "hyprland/language" + "bluetooth" + "network" + "pulseaudio" + "custom/power" + "privacy" + ]; + + "hyprland/workspaces" = { + on-click = "activate"; format = "{icon}"; - format-icons = { - activated = ""; - deactivated = ""; - }; - }; + format-icons = { + default = ""; + "1" = "1"; + "2" = "2"; + "3" = "3"; + "4" = "4"; + "5" = "5"; + "6" = "6"; + "7" = "7"; + "8" = "8"; + "9" = "9"; + "10" = "0"; + "active" = "󰝤"; + }; + persistent-workspaces = { + "DP-2" = [ + "1" + "2" + "3" + ]; + "HDMI-A-1" = [ + "4" + "5" + "6" + ]; + }; + }; - pulseaudio = { - format = "{icon}"; - format-muted = ""; - format-icons = { - default = ["" ""]; - }; - on-scroll-up = "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 10%+"; - on-scroll-down = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%-"; - on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; - }; - }; - }; + tray = { + #spacing = 10; + }; + + "hyprland/language" = { + format = "{}"; + format-en = "󱌯"; + format-ar = "󱌨"; + on-click = "hyprctl switchxkblayout monsgeek-monsgeek-keyboard next"; + }; + + "custom/power" = { + format = "⏻"; + on-click = "hyprlock & systemctl suspend"; + }; + + "custom/expand" = { + tooltip = false; + format = ""; + }; + + "group/minimized" = { + orientation = "horizontal"; + modules = [ + "custom/expand" + "tray" + ]; + drawer = { + transition-left-to-right = false; + transition-duration = 200; + children-class = "minimized"; + }; + }; + + bluetooth = { + format = ""; + format-disabled = ""; + format-connected = ""; + tooltip-format = "{controller_alias}\t{controller_address}"; + tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{device_enumerate}"; + tooltip-format-enumerate-connected = "{device_alias}\t{device_address}"; + on-click = "alacritty --title bluetui -e bluetui"; + }; + + mpris = { + format = "{player_icon}"; + }; + + network = { + format = ""; + format-wifi = ""; + format-ethernet = ""; + tooltip-format = "{ifname} via {gwaddr} 󰊗"; + tooltip-format-wifi = "{essid} ({signalStrength}%) "; + tooltip-format-ethernet = "{ipaddr}/{cidr}\n{ifname} "; + tooltip-format-disconnected = "Disconnected"; + on-click = "alacritty --title impala -e impala"; + }; + + clock = { + format = "{:%a %b %d %H:%M}"; + tooltip-format = "{calendar}"; + }; + + idle_inhibitor = { + format = "{icon}"; + format-icons = { + activated = ""; + deactivated = ""; + }; + }; + + pulseaudio = { + format = "{icon}"; + format-muted = ""; + format-icons = { + headphone = ""; + headset = ""; + default = [ + "" + "" + "" + ]; + }; + on-scroll-up = "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"; + on-scroll-down = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"; + on-click = "alacritty --title wiremix -e wiremix"; + on-right-click = "set-mute @DEFAULT_AUDIO_SINK@ toggle"; + tooltip-format = "{desc} - {volume}%"; + }; + }; + }; + }; + services.walker = { + enable = true; + systemd.enable = true; + settings = { + app_launch_prefix = ""; + as_window = false; + close_when_open = false; + disable_click_to_close = false; + force_keyboard_focus = false; + hotreload_theme = false; + locale = ""; + monitor = ""; + terminal_title_flag = ""; + theme = "default"; + timeout = 0; + }; + }; + programs.rofi = { + enable = true; + font = "JetBrains Mono 14"; + plugins = [ + pkgs.rofimoji + ]; + }; + programs.hyprlock = { + enable = true; + settings = { + background = { + color = nix_background; + }; + + input-field = { + size = "650, 100"; + position = "0, 0"; + halign = "center"; + valign = "center"; + fade_on_emtpy = false; + font_color = nix_text; + outer_color = nix_inactive; + inner_color = nix_background; + check_color = nix_accent; + fail_color = nix_alert; + font_family = "JetBrains Mono Nerd Font"; + + placeholder_text = "Enter Password"; + fail_text = "$FAIL ($ATTEMPTS)"; + rounding = 0; + + }; + }; }; - programs.wofi.enable = true; - programs.hyprlock.enable = true; services.hypridle = { enable = true; - settings = { + settings = { general = { lock_cmd = "pidof hyprlock || hyprlock"; - }; + }; - listener = [ - { - timeout = 300; - on-timeout = "loginctl lock-session & hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - } - { - timeout = 900; - on-timeout = "systemctl suspend"; - on-resume = "hyprctl dispatch dpms on"; - } - ]; - }; + listener = [ + { + timeout = 300; + on-timeout = "loginctl lock-session & hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + } + { + timeout = 900; + on-timeout = "systemctl suspend"; + on-resume = "hyprctl dispatch dpms on"; + } + ]; + }; }; wayland.windowManager.hyprland = { enable = true; - plugins = [ - pkgs.hyprlandPlugins.hyprbars - ]; - settings = { - # This is an example Hyprland config file for Nix. - # Refer to the wiki for more information. - # https://wiki.hypr.land/Configuring/ - # https://wiki.hypr.land/Nix/ - # https://wiki.hypr.land/Nix/Hyprland-on-NixOS/ - # https://wiki.hypr.land/Nix/Hyprland-on-Home-Manager/ - - # Please note not all available settings / options are set here. - # For a full list, see the wiki - - # You can split this configuration into multiple files - # Create your files separately and then link them to this file like this: - # source = ~/.config/hypr/myColors.conf - # todo: make the line above nix-ish - - - ################ - ### MONITORS ### - ################ - - # See https://wiki.hypr.land/Configuring/Monitors/ - #monitor = ",preferred,auto,auto"; - monitor = - if ( hostname == "nixos-desktop" ) - then [ - "DP-2, 2560x1440@180,0x0,1,vrr,1,bitdepth,10" - "HDMI-A-1, 1920x1080@75,2560x0,1,vrr,1" - ] - else [ - ",preferred,auto,auto" - ]; - - - - ################### - ### MY PROGRAMS ### - ################### - - # See https://wiki.hypr.land/Configuring/Keywords/ - - # Set programs that you use - - "$terminal" = "kitty"; - "$fileManager" = "dolphin"; - "$menu" = "wofi --show drun"; - "$browser" = "brave"; - - - ################# - ### AUTOSTART ### - ################# - - # Autostart necessary processes (like notifications daemons, status bars, etc.) - # Or execute your favorite apps at launch like this: - - exec-once = [ - "waybar" - "steam -silent" - - #"[workspace 1 silent]$browser" - #"[workspace 3 silent]proton-mail" - #"[workspace 2 silent]signal-desktop" - #"[workspace 2 silent]steam" - ]; - - - ############################# - ### ENVIRONMENT VARIABLES ### - ############################# - - # See https://wiki.hypr.land/Configuring/Environment-variables/ - - env = [ - "XCURSOR_SIZE,24" - "HYPRCURSOR_SIZE,24" + plugins = [ + #pkgs.hyprlandPlugins.hyprbars ]; + settings = { + # This is an example Hyprland config file for Nix. + # Refer to the wiki for more information. + # https://wiki.hypr.land/Configuring/ + # https://wiki.hypr.land/Nix/ + # https://wiki.hypr.land/Nix/Hyprland-on-NixOS/ + # https://wiki.hypr.land/Nix/Hyprland-on-Home-Manager/ + # Please note not all available settings / options are set here. + # For a full list, see the wiki - ################### - ### PERMISSIONS ### - ################### + # You can split this configuration into multiple files + # Create your files separately and then link them to this file like this: + # source = ~/.config/hypr/myColors.conf + # todo: make the line above nix-ish - # See https://wiki.hypr.land/Configuring/Permissions/ - # Please note permission changes here require a Hyprland restart and are not applied on-the-fly - # for security reasons + ################ + ### MONITORS ### + ################ - # ecosystem = { - # enforce_permissions = 1; - # }; + # See https://wiki.hypr.land/Configuring/Monitors/ + #monitor = ",preferred,auto,auto"; + monitor = + if (hostname == "nixos-desktop") then + [ + "DP-2, 2560x1440@180,0x0,1,vrr,1,bitdepth,10" + "HDMI-A-1, 1920x1080@75,2560x0,1,vrr,1" + ] + else + [ + ",preferred,auto,auto" + ]; - permission = [ - "/usr/(bin|local/bin)/grim, screencopy, allow" - "/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow" - # "/usr/(bin|local/bin)/hyprpm, plugin, allow" - ]; + ################### + ### MY PROGRAMS ### + ################### + # See https://wiki.hypr.land/Configuring/Keywords/ - ##################### - ### LOOK AND FEEL ### - ##################### + # Set programs that you use - # Refer to https://wiki.hypr.land/Configuring/Variables/ + "$terminal" = "alacritty"; + "$fileManager" = "dolphin"; + "$menu" = "walker"; + "$browser" = "brave"; - # https://wiki.hypr.land/Configuring/Variables/#general - general = { - gaps_in = 5; - gaps_out = 20; + ################# + ### AUTOSTART ### + ################# - border_size = 2; + # Autostart necessary processes (like notifications daemons, status bars, etc.) + # Or execute your favorite apps at launch like this: - "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; - "col.inactive_border" = "rgba(595959aa)"; + exec-once = [ + "waybar" + "steam -silent" + "webcord --start-minimized" - # Set to true enable resizing windows by clicking and dragging on borders and gaps - resize_on_border = false; - - # Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on - allow_tearing = false; - - layout = "dwindle"; - }; - - # https://wiki.hypr.land/Configuring/Variables/#decoration - decoration = { - rounding = 10; - rounding_power = 2; - - # Change transparency of focused and unfocused windows - active_opacity = 1.0; - inactive_opacity = 1.0; - - shadow = { - enabled = true; - range = 4; - render_power = 3; - color = "rgba(1a1a1aee)"; - }; - - # https://wiki.hypr.land/Configuring/Variables/#blur - blur = { - enabled = true; - size = 3; - passes = 1; - - vibrancy = 0.1696; - }; - }; - - # https://wiki.hypr.land/Configuring/Variables/#animations - animations = { - enabled = "yes, please :)"; - - # Default animations, see https://wiki.hypr.land/Configuring/Animations/ for more - - 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" + #"[workspace 1 silent]$browser" + #"[workspace 3 silent]proton-mail" + #"[workspace 2 silent]signal-desktop" + #"[workspace 2 silent]steam" ]; - 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" - "zoomFactor, 1, 7, quick" + ############################# + ### ENVIRONMENT VARIABLES ### + ############################# + + # See https://wiki.hypr.land/Configuring/Environment-variables/ + + env = [ + "XCURSOR_SIZE,24" + "HYPRCURSOR_SIZE,24" ]; - }; - # Ref https://wiki.hypr.land/Configuring/Workspace-Rules/ - # "Smart gaps" / "No gaps when only" - # uncomment all if you wish to use that. - # workspace = [ - # "w[tv1], gapsout:0, gapsin:0" - # "f[1], gapsout:0, gapsin:0" - # ]; - # windowrule = [ - # "bordersize 0, floating:0, onworkspace:w[tv1]" - # "rounding 0, floating:0, onworkspace:w[tv1]" - # "bordersize 0, floating:0, onworkspace:f[1]" - # "rounding 0, floating:0, onworkspace:f[1]" - # ]; + ################### + ### PERMISSIONS ### + ################### - # See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more - dwindle = { - pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below - preserve_split = true; # You probably want this - }; + # See https://wiki.hypr.land/Configuring/Permissions/ + # Please note permission changes here require a Hyprland restart and are not applied on-the-fly + # for security reasons - # See https://wiki.hypr.land/Configuring/Master-Layout/ for more - master = { - new_status = "master"; - }; + # ecosystem = { + # enforce_permissions = 1; + # }; - # https://wiki.hypr.land/Configuring/Variables/#misc - misc = { - force_default_wallpaper = -1; # Set to 0 or 1 to disable the anime mascot wallpapers - disable_hyprland_logo = false; # If true disables the random hyprland logo / anime girl background. :( - }; + permission = [ + "/usr/(bin|local/bin)/grim, screencopy, allow" + "/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow" + # "/usr/(bin|local/bin)/hyprpm, plugin, allow" + ]; + ##################### + ### LOOK AND FEEL ### + ##################### - ############# - ### INPUT ### - ############# + # Refer to https://wiki.hypr.land/Configuring/Variables/ - # https://wiki.hypr.land/Configuring/Variables/#input - input = { - kb_layout = "us"; - kb_variant = ""; - kb_model = ""; - kb_options = ""; - kb_rules = ""; + # https://wiki.hypr.land/Configuring/Variables/#general + general = { + gaps_in = 10; + gaps_out = 20; - follow_mouse = 1; + border_size = 3; - sensitivity = 0; # -1.0 - 1.0, 0 means no modification. + # these need to have variables + "col.active_border" = "0x4385BEFF"; + "col.inactive_border" = "0x403E3CFF"; - touchpad = { - disable_while_typing = false; + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = false; + + # Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on + allow_tearing = false; + + layout = "dwindle"; + }; + + group = { + "col.border_active" = "rgb(4385be)"; + "col.border_inactive" = "rgb(403e3c)"; + "col.border_locked_active" = -1; + "col.border_locked_inactive" = -1; + + groupbar = { + font_size = 12; + font_family = "monospace"; + font_weight_active = "ultraheavy"; + font_weight_inactive = "normal"; + + indicator_height = 0; + indicator_gap = 5; + height = 22; + gaps_in = 5; + gaps_out = 0; + + text_color = "rgb(ffffff)"; + text_color_inactive = "rgba(ffffff90)"; + "col.active" = "rgb(100f0f)"; + "col.inactive" = "rgb(403e3c)"; + + gradients = true; + gradient_rounding = 0; + gradient_round_only_edges = false; + }; + }; + + # https://wiki.hypr.land/Configuring/Variables/#decoration + decoration = { + rounding = 0; + rounding_power = 2; + + # Change transparency of focused and unfocused windows + active_opacity = 1.0; + inactive_opacity = 1.0; + + shadow = { + enabled = true; + range = 4; + render_power = 3; + color = "rgba(1a1a1aee)"; + }; + + # https://wiki.hypr.land/Configuring/Variables/#blur + blur = { + enabled = true; + size = 8; + passes = 1; + noise = 0.2; + + vibrancy = 0.1696; + }; + }; + + layerrule = [ + "blur, notifications" + "ignorezero, notifications" + ]; # add blur to notifications + + # https://wiki.hypr.land/Configuring/Variables/#animations + animations = { + enabled = "yes, please :)"; + + # Default animations, see https://wiki.hypr.land/Configuring/Animations/ for more + + 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" + "zoomFactor, 1, 7, quick" + ]; + }; + + # Ref https://wiki.hypr.land/Configuring/Workspace-Rules/ + # "Smart gaps" / "No gaps when only" + # uncomment all if you wish to use that. + # workspace = [ + # "w[tv1], gapsout:0, gapsin:0" + # "f[1], gapsout:0, gapsin:0" + # ]; + # windowrule = [ + # "bordersize 0, floating:0, onworkspace:w[tv1]" + # "rounding 0, floating:0, onworkspace:w[tv1]" + # "bordersize 0, floating:0, onworkspace:f[1]" + # "rounding 0, floating:0, onworkspace:f[1]" + # ]; + + # See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more + dwindle = { + pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true; # You probably want this + }; + + # See https://wiki.hypr.land/Configuring/Master-Layout/ for more + master = { + new_status = "master"; + }; + + # https://wiki.hypr.land/Configuring/Variables/#misc + misc = { + force_default_wallpaper = 0; # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = true; # If true disables the random hyprland logo / anime girl background. :( + background_color = nix_background; + }; + + ############# + ### INPUT ### + ############# + + # https://wiki.hypr.land/Configuring/Variables/#input + input = { + kb_layout = "us,ara"; + kb_variant = ""; + kb_model = ""; + kb_options = "grp:alt_space_toggle"; + kb_rules = ""; + + follow_mouse = 1; + + sensitivity = 0; # -1.0 - 1.0, 0 means no modification. + + touchpad = { + disable_while_typing = false; natural_scroll = false; + }; }; + + # https://wiki.hypr.land/Configuring/Variables/#gestures + #gestures = { + # workspace_swipe = false; + #}; + + # Example per-device config + # See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more + device = { + name = "epic-mouse-v1"; + sensitivity = -0.5; + }; + + ################### + ### KEYBINDINGS ### + ################### + + # See https://wiki.hypr.land/Configuring/Keywords/ + "$mainMod" = "SUPER"; # Sets "Windows" key as main modifier + + bind = [ + # Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more + "$mainMod, Return, exec, $terminal" + "$mainMod, Q, killactive," + "alt, F4, killactive," + "$mainMod SHIFT, Q, exit," + "$mainMod, E, exec, $fileManager" + "$mainMod, V, togglefloating," + "$mainMod, F, fullscreen, 1" + "$mainMod, W, exec, $browser" + "$mainMod, space, exec, $menu" + #"$mainMod, P, pseudo," # dwindle + "$mainMod, T, togglesplit," # dwindle + "$mainMod SHIFT, L, exec, hyprlock" + "$mainMod SHIFT, F, workspaceopt, allfloat" + "$mainMod, G, togglegroup," + "$mainMod SHIFT, S, exec, grim -g \"$(slurp)\" - | wl-copy" + + # Move focus with mainMod + arrow keys + "$mainMod, h, movefocus, l" + "$mainMod, l, movefocus, r" + "$mainMod, k, movefocus, u" + "$mainMod, j, movefocus, d" + "$mainMod, Tab, cyclenext" + "$mainMod, Tab, bringactivetotop" + + # Switch workspaces with mainMod + [0-9] + "$mainMod, 1, workspace, 1" + "$mainMod, 2, workspace, 2" + "$mainMod, 3, workspace, 3" + "$mainMod, 4, workspace, 4" + "$mainMod, 5, workspace, 5" + "$mainMod, 6, workspace, 6" + "$mainMod, 7, workspace, 7" + "$mainMod, 8, workspace, 8" + "$mainMod, 9, workspace, 9" + "$mainMod, 0, workspace, 10" + + # Move active window to a workspace with mainMod + SHIFT + [0-9] + "$mainMod SHIFT, 1, movetoworkspace, 1" + "$mainMod SHIFT, 2, movetoworkspace, 2" + "$mainMod SHIFT, 3, movetoworkspace, 3" + "$mainMod SHIFT, 4, movetoworkspace, 4" + "$mainMod SHIFT, 5, movetoworkspace, 5" + "$mainMod SHIFT, 6, movetoworkspace, 6" + "$mainMod SHIFT, 7, movetoworkspace, 7" + "$mainMod SHIFT, 8, movetoworkspace, 8" + "$mainMod SHIFT, 9, movetoworkspace, 9" + "$mainMod SHIFT, 0, movetoworkspace, 10" + + # Example special workspace (scratchpad) + "$mainMod, N, togglespecialworkspace, notes" + "$mainMod SHIFT, N, movetoworkspace, special:notes" + + "$mainMod, grave, workspace, name:games" + "$mainMod SHIFT, grave, movetoworkspace, name:games" + + # Scroll through existing workspaces with mainMod + scroll + "$mainMod, mouse_down, workspace, e+1" + "$mainMod, mouse_up, workspace, e-1" + ]; + + # Move/resize windows with mainMod + LMB/RMB and dragging + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + + # Laptop multimedia keys for volume and LCD brightness + bindel = [ + ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ",XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+" + ",XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-" + ]; + + # Requires playerctl + bindl = [ + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPause, exec, playerctl play-pause" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioPrev, exec, playerctl previous" + ]; + + ############################## + ### WINDOWS AND WORKSPACES ### + ############################## + + # See https://wiki.hypr.land/Configuring/Window-Rules/ for more + # See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules + + windowrule = [ + # Example windowrule + # "float,class:^(kitty)$,title:^(kitty)$" + # Ignore maximize requests from apps. You'll probably like this. + "suppressevent maximize, class:.*" + + # Fix some dragging issues with XWayland + "nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0" + + "float, title:^(bluetui)$" + "center, title:^(bluetui)$" + "float, title:^(impala)$" + "center, title:^(impala)$" + "float, title:^(wiremix)$" + "center, title:^(wiremix)$" + + "workspace name:games silent, class:$games" + "noanim, class:$games" + "noblur, class:$games" + "noshadow, class:$games" + "noborder, class:$games" + "rounding 0, class:$games" + "fullscreen, class:$games" + "immediate, class:$games" + ]; + + "$games" = + "^(steam_app_.*|lutris_game_class|minigalaxy|playnite_game_class|gamescope|chiaki|moonlight|com\.moonlight_stream\.Moonlight|.*[Ww]ine.*)$"; + workspace = [ + "name:1,monitor:DP-2" + "name:games,monitor:DP-2" + "name:4,monitor:HDMI-A-1" + ]; + }; - - # https://wiki.hypr.land/Configuring/Variables/#gestures - #gestures = { - # workspace_swipe = false; - #}; - - # Example per-device config - # See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more - device = { - name = "epic-mouse-v1"; - sensitivity = -0.5; - }; - - - ################### - ### KEYBINDINGS ### - ################### - - # See https://wiki.hypr.land/Configuring/Keywords/ - "$mainMod" = "SUPER"; # Sets "Windows" key as main modifier - - bind = [ - # Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more - "$mainMod, Return, exec, $terminal" - "$mainMod, Q, killactive," - "alt, F4, killactive," - "$mainMod SHIFT, Q, exit," - "$mainMod, E, exec, $fileManager" - "$mainMod, V, togglefloating," - "$mainMod, F, fullscreen, 1" - "$mainMod, W, exec, $browser" - "$mainMod, space, exec, $menu" - #"$mainMod, P, pseudo," # dwindle - "$mainMod, T, togglesplit," # dwindle - "$mainMod SHIFT, L, exec, hyprlock" - "$mainMod SHIFT, F, workspaceopt, allfloat" - "$mainMod, M, togglegroup," - "$mainMod SHIFT, S, exec, grim -g \"$(slurp)\" - | wl-copy" - - # Move focus with mainMod + arrow keys - "$mainMod, h, movefocus, l" - "$mainMod, l, movefocus, r" - "$mainMod, k, movefocus, u" - "$mainMod, j, movefocus, d" - "$mainMod, Tab, cyclenext" - "$mainMod, Tab, bringactivetotop" - - # Switch workspaces with mainMod + [0-9] - "$mainMod, 1, workspace, 1" - "$mainMod, 2, workspace, 2" - "$mainMod, 3, workspace, 3" - "$mainMod, 4, workspace, 4" - "$mainMod, 5, workspace, 5" - "$mainMod, 6, workspace, 6" - "$mainMod, 7, workspace, 7" - "$mainMod, 8, workspace, 8" - "$mainMod, 9, workspace, 9" - "$mainMod, 0, workspace, 10" - - # Move active window to a workspace with mainMod + SHIFT + [0-9] - "$mainMod SHIFT, 1, movetoworkspace, 1" - "$mainMod SHIFT, 2, movetoworkspace, 2" - "$mainMod SHIFT, 3, movetoworkspace, 3" - "$mainMod SHIFT, 4, movetoworkspace, 4" - "$mainMod SHIFT, 5, movetoworkspace, 5" - "$mainMod SHIFT, 6, movetoworkspace, 6" - "$mainMod SHIFT, 7, movetoworkspace, 7" - "$mainMod SHIFT, 8, movetoworkspace, 8" - "$mainMod SHIFT, 9, movetoworkspace, 9" - "$mainMod SHIFT, 0, movetoworkspace, 10" - - # Example special workspace (scratchpad) - "$mainMod, N, togglespecialworkspace, notes" - "$mainMod SHIFT, N, movetoworkspace, special:notes" - - # Scroll through existing workspaces with mainMod + scroll - "$mainMod, mouse_down, workspace, e+1" - "$mainMod, mouse_up, workspace, e-1" - ]; - - # Move/resize windows with mainMod + LMB/RMB and dragging - bindm = [ - "$mainMod, mouse:272, movewindow" - "$mainMod, mouse:273, resizewindow" - ]; - - # Laptop multimedia keys for volume and LCD brightness - bindel = [ - ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" - ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" - ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" - ",XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+" - ",XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-" - ]; - - # Requires playerctl - bindl = [ - ", XF86AudioNext, exec, playerctl next" - ", XF86AudioPause, exec, playerctl play-pause" - ", XF86AudioPlay, exec, playerctl play-pause" - ", XF86AudioPrev, exec, playerctl previous" - ]; - - ############################## - ### WINDOWS AND WORKSPACES ### - ############################## - - # See https://wiki.hypr.land/Configuring/Window-Rules/ for more - # See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules - - windowrule = [ - # Example windowrule - # "float,class:^(kitty)$,title:^(kitty)$" - # Ignore maximize requests from apps. You'll probably like this. - "suppressevent maximize, class:.*" - - # Fix some dragging issues with XWayland - "nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0" - ]; - workspace = "name:1,monitor:DP-2"; }; - }; -} \ No newline at end of file +} diff --git a/hosts/desktop/settings.nix b/hosts/desktop/settings.nix index b02b604..ff75e3a 100644 --- a/hosts/desktop/settings.nix +++ b/hosts/desktop/settings.nix @@ -44,12 +44,14 @@ services.pipewire = { hardware.nvidia = { modesetting.enable = true; - powerManagement.enable = true; + powerManagement.enable = false; powerManagement.finegrained = false; open = false; package = config.boot.kernelPackages.nvidiaPackages.stable; }; + hardware.opengl.enable = true; + # this fixes the sleep/wake issue systemd.services."systemd-suspend" = { serviceConfig = {