diff --git a/hosts/ymir/home.nix b/hosts/ymir/home.nix index 0e188fd..a390ef2 100644 --- a/hosts/ymir/home.nix +++ b/hosts/ymir/home.nix @@ -29,6 +29,7 @@ crony.mangohud.enable = true; crony.gaming.enable = true; crony.flatpak.enable = true; + crony.wayland.enable = true; # DO NOT CHANGE ALSO home.stateVersion = "24.11"; # Please read the comment before changing. diff --git a/modules/linux/home-manager/default.nix b/modules/linux/home-manager/default.nix index 6df193e..68f7ded 100644 --- a/modules/linux/home-manager/default.nix +++ b/modules/linux/home-manager/default.nix @@ -15,8 +15,10 @@ ./newsboat.nix ./xdg-user-dirs.nix ./qutebrowser.nix + ./wayland.nix ]; + crony.wayland.enable = lib.mkDefault false; crony.qutebrowser.enable = lib.mkDefault true; crony.mangohud.enable = lib.mkDefault false; crony.nnn.enable = lib.mkDefault true; diff --git a/modules/linux/home-manager/hyprland.nix b/modules/linux/home-manager/hyprland.nix index 3ee56b5..a8829a7 100644 --- a/modules/linux/home-manager/hyprland.nix +++ b/modules/linux/home-manager/hyprland.nix @@ -78,243 +78,6 @@ in { }; config = lib.mkIf config.crony.hyprland.enable { - home.packages = with pkgs; [ - (writeShellScriptBin "tofi-pass" '' - tofi --hide-input true --prompt-text 'Password: ' --require-match false --hidden-character '.' < /dev/null - '') - cliphist - wl-clipboard - ]; - - # Enable and setup tofi - programs.tofi = { - enable = true; - settings = { - anchor = "top"; - width = "100%"; - height = "34"; - horizontal = true; - history = false; - require-match = false; - terminal = "foot"; - outline-width = 0; - border-width = 0; - min-input-width = 120; - result-spacing = 15; - padding-top = 4; - padding-bottom = 0; - padding-left = 5; - padding-right = 5; - }; - }; - - # Install foot - programs.foot.enable = true; - - # Setup and enable mako - services.mako = { - enable = true; - settings = { - default-timeout = 5000; - layer = "overlay"; - width = 200; - }; - }; - - # Enable hyprpaper - services.hyprpaper.enable = true; - - # Enable hypridle - services.hypridle = { - enable = true; - settings = { - general = { - lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances. - before_sleep_cmd = "loginctl lock-session"; # lock before suspend. - after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display. - }; - - listener = [ - { - timeout = 10; # 10 sec - on-timeout = "pidof hyprlock && hyprctl dispatch dpms off"; # Turn off screen if hyprlock is running - on-resume = "hyprctl dispatch dpms on"; # Turn on screen when activiy is detected after timeout has fired - } - { - timeout = 300; # 5min - on-timeout = "loginctl lock-session"; # lock screen when timeout has passed - } - { - timeout = 310; # 5min and 10 sec - on-timeout = "hyprctl dispatch dpms off"; # Turn off screen if hyprlock is running - on-resume = "hyprctl dispatch dpms on"; # Turn on screen when activiy is detected after timeout has fired - } - ]; - }; - }; - - # Enable hyprlock - programs.hyprlock = { - enable = true; - settings = { - general = { - disable_loading_bar = true; - grace = 0; - hide_cursor = true; - no_fade_in = false; - }; - - image = { - path = "$HOME/.face"; - size = 150; - border_size = 4; - border_color = "rgb(d5c4a1)"; - position = "0, 385"; - halign = "center"; - valign = "center"; - }; - - label = [ - { - text = "$TIME"; - font_size = 90; - color = "rgb(d5c4a1)"; - position = "0, 245"; - halign = "center"; - valight = "center"; - } - { - text = ''cmd[update:43200000] date +"%Y %m %d"''; - font_size = 25; - color = "rgb(d5c4a1)"; - position = "0, -225"; - halign = "center"; - valign = "center"; - } - ]; - }; - }; - - # Disable stylix to add full css, I only need it to add colors - stylix.targets.waybar.addCss = false; - - # Enable and install waybar - programs.waybar = { - enable = true; - style = '' - .modules-left { - padding-left: 10px; - } - - #workspaces { - background-color: @base01; - margin: 0.25em; - border-radius: 1em; - } - #workspaces button { - padding: 0 0.5em; - color: @base06; - } - - #workspaces button.empty { - color: @base03; - } - - #workspaces button.visible { - color: @base06; - } - - #workspaces button.active { - color: @base0D; - } - - #window { - color: @base0D; - padding: 0 1em; - } - - #cpu, - #memory, - #temperature, - #battery, - #disk, - #clock { - color: @base00; - background-color: @base0D; - margin: 0.25em; - border-radius: 0.5em; - padding: 0 0.5em; - } - - #tray { - background-color: @base00; - } - - .modules-right { - padding-right: 10px; - } - ''; - settings = { - mainBar = { - height = 34; - modules-left = [ - "hyprland/workspaces" - "hyprland/window" - ]; - modules-center = [ - ]; - modules-right = [ - "cpu" - "memory" - "temperature" - "disk" - "battery" - "clock" - "tray" - ]; - "hyprland/workspaces" = { - persistent-workspaces = { - "*" = [1 2 3 4 5 6 7 8 9]; - }; - }; - disk = { - path = "/"; - unit = "GB"; - format = "󰋊 {percentage_used}%"; - }; - tray = { - spacing = 10; - }; - clock = { - format = " {:%Y.%m.%d %H:%M}"; - }; - cpu = { - format = " {usage}%"; - }; - memory = { - format = " {}%"; - }; - temperature = { - critical-threshold = 80; - hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input"; - format = " {temperatureC}°C"; - }; - battery = { - states = { - warning = 30; - critical = 15; - }; - - format = "{icon} {capacity}%"; - format-full = "{icon} {capacity}%"; - format-charging = " {icon} {capacity}%"; - format-plugged = " {capacity}%"; - format-icons = [" " " " " " " " " "]; - }; - }; - }; - }; - # Setup and enable hyprland wayland.windowManager.hyprland = { enable = true; diff --git a/modules/linux/home-manager/wayland.nix b/modules/linux/home-manager/wayland.nix new file mode 100644 index 0000000..81857f4 --- /dev/null +++ b/modules/linux/home-manager/wayland.nix @@ -0,0 +1,249 @@ +{ + config, + pkgs, + lib, + ... +}: { + options = { + crony.wayland.enable = lib.mkEnableOption "ENable and configure wayland software."; + }; + + config = lib.mkIf config.crony.wayland.enable { + home.packages = with pkgs; [ + (writeShellScriptBin "tofi-pass" '' + tofi --hide-input true --prompt-text 'Password: ' --require-match false --hidden-character '.' < /dev/null + '') + cliphist + wl-clipboard + ]; + + # Enable and setup tofi + programs.tofi = { + enable = true; + settings = { + anchor = "top"; + width = "100%"; + height = "34"; + horizontal = true; + history = false; + require-match = false; + terminal = "foot"; + outline-width = 0; + border-width = 0; + min-input-width = 120; + result-spacing = 15; + padding-top = 4; + padding-bottom = 0; + padding-left = 5; + padding-right = 5; + }; + }; + + # Install foot + programs.foot.enable = true; + + # Setup and enable mako + services.mako = { + enable = true; + settings = { + default-timeout = 5000; + layer = "overlay"; + width = 200; + }; + }; + + # Enable hyprpaper + services.hyprpaper.enable = true; + + # Enable hypridle + services.hypridle = { + enable = true; + settings = { + general = { + lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances. + before_sleep_cmd = "loginctl lock-session"; # lock before suspend. + after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display. + }; + + listener = [ + { + timeout = 10; # 10 sec + on-timeout = "pidof hyprlock && hyprctl dispatch dpms off"; # Turn off screen if hyprlock is running + on-resume = "hyprctl dispatch dpms on"; # Turn on screen when activiy is detected after timeout has fired + } + { + timeout = 300; # 5min + on-timeout = "loginctl lock-session"; # lock screen when timeout has passed + } + { + timeout = 310; # 5min and 10 sec + on-timeout = "hyprctl dispatch dpms off"; # Turn off screen if hyprlock is running + on-resume = "hyprctl dispatch dpms on"; # Turn on screen when activiy is detected after timeout has fired + } + ]; + }; + }; + + # Enable hyprlock + programs.hyprlock = { + enable = true; + settings = { + general = { + disable_loading_bar = true; + grace = 0; + hide_cursor = true; + no_fade_in = false; + }; + + image = { + path = "$HOME/.face"; + size = 150; + border_size = 4; + border_color = "rgb(d5c4a1)"; + position = "0, 385"; + halign = "center"; + valign = "center"; + }; + + label = [ + { + text = "$TIME"; + font_size = 90; + color = "rgb(d5c4a1)"; + position = "0, 245"; + halign = "center"; + valight = "center"; + } + { + text = ''cmd[update:43200000] date +"%Y %m %d"''; + font_size = 25; + color = "rgb(d5c4a1)"; + position = "0, -225"; + halign = "center"; + valign = "center"; + } + ]; + }; + }; + + # Disable stylix to add full css, I only need it to add colors + stylix.targets.waybar.addCss = false; + + # Enable and install waybar + programs.waybar = { + enable = true; + style = '' + .modules-left { + padding-left: 10px; + } + + #workspaces { + background-color: @base01; + margin: 0.25em; + border-radius: 1em; + } + #workspaces button { + padding: 0 0.5em; + color: @base06; + } + + #workspaces button.empty { + color: @base03; + } + + #workspaces button.visible { + color: @base06; + } + + #workspaces button.active { + color: @base0D; + } + + #window { + color: @base0D; + padding: 0 1em; + } + + #cpu, + #memory, + #temperature, + #battery, + #disk, + #clock { + color: @base00; + background-color: @base0D; + margin: 0.25em; + border-radius: 0.5em; + padding: 0 0.5em; + } + + #tray { + background-color: @base00; + } + + .modules-right { + padding-right: 10px; + } + ''; + settings = { + mainBar = { + height = 34; + modules-left = [ + "hyprland/workspaces" + "hyprland/window" + ]; + modules-center = [ + ]; + modules-right = [ + "cpu" + "memory" + "temperature" + "disk" + "battery" + "clock" + "tray" + ]; + "hyprland/workspaces" = { + persistent-workspaces = { + "*" = [1 2 3 4 5 6 7 8 9]; + }; + }; + disk = { + path = "/"; + unit = "GB"; + format = "󰋊 {percentage_used}%"; + }; + tray = { + spacing = 10; + }; + clock = { + format = " {:%Y.%m.%d %H:%M}"; + }; + cpu = { + format = " {usage}%"; + }; + memory = { + format = " {}%"; + }; + temperature = { + critical-threshold = 80; + hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input"; + format = " {temperatureC}°C"; + }; + battery = { + states = { + warning = 30; + critical = 15; + }; + + format = "{icon} {capacity}%"; + format-full = "{icon} {capacity}%"; + format-charging = " {icon} {capacity}%"; + format-plugged = " {capacity}%"; + format-icons = [" " " " " " " " " "]; + }; + }; + }; + }; + }; +}