home

My NixOS systems configurations.
Log | Files | Refs | LICENSE

commit adc77dfa346a1e19bbe9f5e6d35492817812a234
parent 0ff9ab27073ab98833a15d3c48aba8a45d5b214e
Author: Vincent Demeester <vincent@sbr.pm>
Date:   Fri, 12 Jan 2024 09:41:06 +0100

wayland: split sway and hyprland configuration

and make wakasu hyprland only.

Signed-off-by: Vincent Demeester <vincent@sbr.pm>

Diffstat:
Msystems/hosts/wakasu.nix | 2+-
Msystems/modules/desktop/hyprland.nix | 24+++++++++++++++++++++++-
Musers/vincent/desktop/hyprland.nix | 61+++++++++++++++++++++++++++++++++++++++++++++++--------------
Musers/vincent/desktop/sway.nix | 164-------------------------------------------------------------------------------
Musers/vincent/desktop/wayland.nix | 171++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
5 files changed, 241 insertions(+), 181 deletions(-)

diff --git a/systems/hosts/wakasu.nix b/systems/hosts/wakasu.nix @@ -95,7 +95,7 @@ in bluetooth.enable = true; }; desktop = { - wayland.sway.enable = true; + # wayland.sway.enable = true; wayland.hyprland.enable = true; }; dev = { diff --git a/systems/modules/desktop/hyprland.nix b/systems/modules/desktop/hyprland.nix @@ -11,12 +11,23 @@ in }; }; config = mkIf cfg.enable { + # Enable wayland desktop modules if not already + modules.desktop.wayland.enable = true; + + # Enable pipewire + modules.hardware.audio = { + enable = true; + pipewire.enable = true; + }; + + services.blueman.enable = config.modules.hardware.bluetooth.enable; + programs.hyprland.enable = true; xdg = { portal = { enable = true; - wlr.enable = true; + # wlr.enable = true; extraPortals = with pkgs; [ # xdg-desktop-portal-wlr # xdg-desktop-portal-gtk @@ -25,5 +36,16 @@ in gtkUsePortal = true; }; }; + # Allow swaylock to unlock the computer for us + security.pam.services.swaylock = { + text = "auth include login"; + }; + + # FIXME are those needed + programs.dconf.enable = true; + services.dbus = { + enable = true; + packages = [ pkgs.dconf pkgs.gcr ]; + }; }; } diff --git a/users/vincent/desktop/hyprland.nix b/users/vincent/desktop/hyprland.nix @@ -1,10 +1,6 @@ { config, lib, pkgs, ... }: { - home.packages = with pkgs; [ - qogir-icon-theme - cliphist - ]; xdg.configFile."hypr/hyprpaper.conf".text = '' preload = /home/vincent/desktop/pictures/lockscreen wallpaper = , /home/vincent/desktop/pictures/lockscreen @@ -30,19 +26,41 @@ "wl-paste -p --watch cliphist store" "${pkgs.hyprpaper}/bin/hyprpaper" "${pkgs.networkmanagerapplet}/bin/nm-applet --indicator" - # kanshi ? (systemctl --user restart kanshi) + "systemctl --user restart kanshi" ]; + general = { + gaps_in = 6; + gaps_out = 6; + border_size = 2; + "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + "col.inactive_border" = "rgba(595959aa)"; + layout = "master"; + allow_tearing = false; + }; + + decoration = { + rounding = 2; + + blur = { + enabled = true; + size = 3; + passes = 1; + }; + + drop_shadow = "yes"; + shadow_range = 4; + shadow_render_power = 3; + "col.shadow" = "rgba(1a1a1aee)"; + }; + + master = { + new_is_master = true; + orientation = "right"; + }; + animations = { - enabled = "yes"; - bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; - animation = [ - "windows, 1, 5, myBezier" - "windowsOut, 1, 7, default, popin 80%" - "border, 1, 10, default" - "fade, 1, 7, default" - "workspaces, 1, 6, default" - ]; + enabled = "no"; }; monitor = [ @@ -64,6 +82,11 @@ follow_mouse = 1; }; + # layerrule = [ + # "blur,notifications" + # "blur,wofi" + # ]; + "$mod" = "SUPER"; bind = [ "$mod, Return, exec, kitty" @@ -149,11 +172,21 @@ ", XF86AudioPrev, exec, playerctl previous" ", Cancel, exec, playerctl previous" + ", XF86MonBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 10%+" + ", XF86MonBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 10%-" + "Shift, XF86MonBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 1%+" + "Shift, XF86MonBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 1%-" + "$mod, F10, exec, ${pkgs.my.scripts}/bin/shot %d" "$mod SHIFT, F10, exec, ${pkgs.my.scripts}/bin/shotf %d" "$mod, F9, exec, ${pkgs.mako}/bin/makoctl mode -s do-not-disturb" "$mod SHIFT, F9, exec, ${pkgs.mako}/bin/makoctl mode -s default" + + "$mod, G, togglegroup" + "$mod, tab, changegroupactive" + + "$mod, b, exec, pkill --signal=SIGUSR1 waybar" ]; bindm = [ "$mod, mouse:273, resizewindow" diff --git a/users/vincent/desktop/sway.nix b/users/vincent/desktop/sway.nix @@ -242,173 +242,9 @@ in bindsym ${mod}+Shift+F9 exec ${pkgs.mako}/bin/makoctl mode -s default ''; }; - programs = { - waybar = { - enable = true; - # systemd.enable = true; - style = ./waybar.css; - settings = [{ - layer = "bottom"; - position = "bottom"; - mode = "hide"; - modules-left = [ "sway/workspaces" "hyprland/workspaces" "sway/mode" "custom/media" ]; - modules-center = [ "clock" "custom/notification" ]; - modules-right = [ "temperature" "pulseaudio" "backlight" "battery#bat0" "tray" ]; - ipc = true; - id = "mainBar"; - "clock" = { - "interval" = 30; - "format" = "{:<b>%H:%M</b>}"; - "tooltip-format" = "<big><b>{:%Y %B}</b></big>\n{calendar}"; - "format-alt" = "{:%A %d %B %Y}"; - }; - "battery#bat0" = { - "bat" = "BAT0"; - "states" = { - "warning" = 30; - "critical" = 15; - }; - "format" = "{icon} {capacity}"; - "format-charging" = " {capacity}"; - "format-plugged" = ""; - "format-alt" = "{icon} {time}"; - "format-full" = ""; - "format-icons" = [ "" "" "" "" "" ]; - }; - "custom/notification" = { - "tooltip" = false; - "format" = "{icon} "; - "format-icons" = { - "notification" = "<span foreground='red'></span>"; - "none" = ""; - "dnd-notification" = "<sup></sup>"; - "dnd-none" = ""; - }; - "return-type" = "json"; - # "exec-if" = "which swaync-client"; - "exec" = "swaync-client -swb"; - "on-click" = "swaync-client -t -sw"; - "on-click-right" = "swaync-client -d -sw"; - "escape" = true; - }; - "pulseaudio" = { - "format" = "{icon} {volume:2}% "; - "format-bluetooth" = "{icon}  {volume}% "; - "format-muted" = " "; - "format-icons" = { - "phone" = [ - " " - " " - " " - " " - ]; - "default" = [ - "" - "" - "" - ]; - }; - "scroll-step" = 10; - "on-click-right" = "${pkgs.pavucontrol}/bin/pavucontrol"; - "on-click" = "${pkgs.pamixer}/bin/pamixer -t"; - }; - "backlight" = { - "format" = "{icon} {percent}% "; - "format-icons" = [ - "" - "" - ]; - }; - }]; - }; - mako = { - enable = true; - font = "Ubuntu Mono 12"; - defaultTimeout = 5000; # 5s timeout - groupBy = "app-name,summary"; - extraConfig = '' - on-button-left=dismiss - on-button-middle=invoke-default-action - on-button-right=dismiss - - [mode=do-not-disturb] - invisible=1 - ''; - }; - kitty = { - enable = true; - settings = { - term = "xterm-256color"; - close_on_child_death = "yes"; - font_family = "Ubuntu Mono"; - }; - theme = "Tango Light"; - }; - }; - services = { - blueman-applet.enable = nixosConfig.modules.hardware.bluetooth.enable; - pasystray.enable = nixosConfig.modules.hardware.audio.enable; - udiskie.enable = true; - # network-manager-applet.enable = true; - gammastep = { - enable = true; - provider = "geoclue2"; - # longitude = "2.333333"; - # latitude = "48.866667"; - }; - kanshi = { - enable = true; - profiles = { - "home-undocked" = { - outputs = [ - # Output eDP-1 'AU Optronics 0xD291 Unknown' - { criteria = "eDP-1"; status = "enable"; position = "0,0"; mode = "1920x1200"; scale = 1.0; } - ]; - }; - "home-docked" = { - outputs = [ - # Old: Output eDP-1 'AU Optronics 0xD291 Unknown' - # Output eDP-1 'Unknown 0xD291 Unknown' - # Output DP-5 'LG Electronics LG ULTRAWIDE 0x0005D10C' (focused) - # { criteria = "LG Electronics LG ULTRAWIDE 0x0000D50C"; status = "enable"; position = "0,0"; mode = "3440x1440"; scale = 1.0; } - { criteria = "DP-5"; status = "enable"; position = "0,0"; mode = "3440x1440"; scale = 1.0; } - # Use it as a "shareable" screen when needed - { criteria = "eDP-1"; status = "enable"; position = "1460,1440"; mode = "1920x1200"; scale = 1.0; } - ]; - }; - }; - }; - swayidle = { - enable = true; - events = [ - { event = "before-sleep"; command = "${pkgs.swaylock}/bin/swaylock --daemonize -i $HOME/desktop/pictures/lockscreen"; } - { event = "lock"; command = "${pkgs.swaylock}/bin/swaylock --daemonize -i $HOME/desktop/pictures/lockscreen"; } - ]; - timeouts = [ - { timeout = 600; command = "${pkgs.swaylock}/bin/swaylock --daemonize -i $HOME/desktop/pictures/lockscreen"; } - { - timeout = 1200; - command = ''${pkgs.sway}/bin/swaymsg "output * dpms off"''; - resumeCommand = ''${pkgs.sway}/bin/swaymsg "output * dpms on"''; - } - ]; - }; - }; home.packages = with pkgs; [ - swaylock - swayidle swaybg - wf-recorder - wl-clipboard - wtype - mako swaynotificationcenter - wofi - waybar - slurp - grim - gnome.zenity - clipman # terminals # FIXME move this away, they work on both Xorg and Wayland/Sway alacritty diff --git a/users/vincent/desktop/wayland.nix b/users/vincent/desktop/wayland.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, nixosConfig, ... }: { home.pointerCursor = { @@ -8,4 +8,173 @@ name = "Qogir"; size = 24; }; + + programs = { + waybar = { + enable = true; + # systemd.enable = true; + style = ./waybar.css; + settings = [{ + layer = "bottom"; + position = "bottom"; + mode = "hide"; + modules-left = [ "sway/workspaces" "hyprland/workspaces" "sway/mode" "custom/media" ]; + modules-center = [ "clock" "custom/notification" ]; + modules-right = [ "temperature" "pulseaudio" "backlight" "battery#bat0" "tray" ]; + ipc = true; + id = "mainBar"; + "clock" = { + "interval" = 30; + "format" = "{:<b>%H:%M</b>}"; + "tooltip-format" = "<big><b>{:%Y %B}</b></big>\n{calendar}"; + "format-alt" = "{:%A %d %B %Y}"; + }; + "battery#bat0" = { + "bat" = "BAT0"; + "states" = { + "warning" = 30; + "critical" = 15; + }; + "format" = "{icon} {capacity}"; + "format-charging" = " {capacity}"; + "format-plugged" = ""; + "format-alt" = "{icon} {time}"; + "format-full" = ""; + "format-icons" = [ "" "" "" "" "" ]; + }; + "custom/notification" = { + "tooltip" = false; + "format" = "{icon} "; + "format-icons" = { + "notification" = "<span foreground='red'></span>"; + "none" = ""; + "dnd-notification" = "<sup></sup>"; + "dnd-none" = ""; + }; + "return-type" = "json"; + # "exec-if" = "which swaync-client"; + "exec" = "swaync-client -swb"; + "on-click" = "swaync-client -t -sw"; + "on-click-right" = "swaync-client -d -sw"; + "escape" = true; + }; + "pulseaudio" = { + "format" = "{icon} {volume:2}% "; + "format-bluetooth" = "{icon}  {volume}% "; + "format-muted" = " "; + "format-icons" = { + "phone" = [ + " " + " " + " " + " " + ]; + "default" = [ + "" + "" + "" + ]; + }; + "scroll-step" = 10; + "on-click-right" = "${pkgs.pavucontrol}/bin/pavucontrol"; + "on-click" = "${pkgs.pamixer}/bin/pamixer -t"; + }; + "backlight" = { + "format" = "{icon} {percent}% "; + "format-icons" = [ + "" + "" + ]; + }; + }]; + }; + mako = { + enable = true; + font = "Ubuntu Mono 12"; + defaultTimeout = 5000; # 5s timeout + groupBy = "app-name,summary"; + extraConfig = '' + on-button-left=dismiss + on-button-middle=invoke-default-action + on-button-right=dismiss + + [mode=do-not-disturb] + invisible=1 + ''; + }; + kitty = { + enable = true; + settings = { + term = "xterm-256color"; + close_on_child_death = "yes"; + font_family = "Ubuntu Mono"; + }; + theme = "Tango Light"; + }; + }; + services = { + blueman-applet.enable = nixosConfig.modules.hardware.bluetooth.enable; + pasystray.enable = nixosConfig.modules.hardware.audio.enable; + udiskie.enable = true; + # network-manager-applet.enable = true; + gammastep = { + enable = true; + provider = "geoclue2"; + # longitude = "2.333333"; + # latitude = "48.866667"; + }; + kanshi = { + enable = true; + profiles = { + "home-undocked" = { + outputs = [ + # Output eDP-1 'AU Optronics 0xD291 Unknown' + { criteria = "eDP-1"; status = "enable"; position = "0,0"; mode = "1920x1200"; scale = 1.0; } + ]; + }; + "home-docked" = { + outputs = [ + # Old: Output eDP-1 'AU Optronics 0xD291 Unknown' + # Output eDP-1 'Unknown 0xD291 Unknown' + # Output DP-5 'LG Electronics LG ULTRAWIDE 0x0005D10C' (focused) + # { criteria = "LG Electronics LG ULTRAWIDE 0x0000D50C"; status = "enable"; position = "0,0"; mode = "3440x1440"; scale = 1.0; } + { criteria = "DP-5"; status = "enable"; position = "0,0"; mode = "3440x1440"; scale = 1.0; } + # Use it as a "shareable" screen when needed + { criteria = "eDP-1"; status = "enable"; position = "1460,1440"; mode = "1920x1200"; scale = 1.0; } + ]; + }; + }; + }; + swayidle = { + enable = true; + events = [ + { event = "before-sleep"; command = "${pkgs.swaylock}/bin/swaylock --daemonize -i $HOME/desktop/pictures/lockscreen"; } + { event = "lock"; command = "${pkgs.swaylock}/bin/swaylock --daemonize -i $HOME/desktop/pictures/lockscreen"; } + ]; + timeouts = [ + { timeout = 600; command = "${pkgs.swaylock}/bin/swaylock --daemonize -i $HOME/desktop/pictures/lockscreen"; } + { + timeout = 1200; + command = ''${pkgs.sway}/bin/swaymsg "output * dpms off"''; + resumeCommand = ''${pkgs.sway}/bin/swaymsg "output * dpms on"''; + } + ]; + }; + }; + home.packages = with pkgs; [ + swaylock + swayidle + wf-recorder + wl-clipboard + wtype + mako + wofi + waybar + slurp + grim + gnome.zenity + clipman + qogir-icon-theme + cliphist + ]; }