diff --git a/flake.lock b/flake.lock index 741ed8f..43e5c2f 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1749398372, - "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "lastModified": 1754091436, + "narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd", "type": "github" }, "original": { @@ -228,11 +228,11 @@ ] }, "locked": { - "lastModified": 1752544374, - "narHash": "sha256-ReX0NG6nIAEtQQjLqeu1vUU2jjZuMlpymNtb4VQYeus=", + "lastModified": 1753592768, + "narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=", "owner": "nix-community", "repo": "home-manager", - "rev": "2e00ed310c218127e02ffcf28ddd4e0f669fde3e", + "rev": "fc3add429f21450359369af74c2375cb34a2d204", "type": "github" }, "original": { @@ -300,11 +300,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1752659960, - "narHash": "sha256-AP/Gds8b1hhU50prgLjYSv5qpy9D8E6Xre/r/gb3K8M=", + "lastModified": 1754744872, + "narHash": "sha256-rcMHMs+dFWaDXev092gfxTfxHEWcUY/6SRV+cseNevQ=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "8e3f7bbada0cf637d23de4200c6e1a5a157de9cc", + "rev": "346fc31bcc4d2dbcc3e8ce8dbb622e4255ff54b7", "type": "github" }, "original": { @@ -333,11 +333,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1752656275, - "narHash": "sha256-tTRMyGxqHF5IkYcnvHbwCgRBRUBhvRapxtuUfrN/8Ic=", + "lastModified": 1754742008, + "narHash": "sha256-Tp0FG7VpLudVEC622d91z2hbdfPLCXxw0Nv43iNN4O0=", "owner": "YaLTeR", "repo": "niri", - "rev": "7b065f8618f63b7cf761ebe05a2cebd556113a6c", + "rev": "67361f88fd01974ebee4cf80f0e29c87d805cc39", "type": "github" }, "original": { @@ -364,11 +364,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1752436162, - "narHash": "sha256-Kt1UIPi7kZqkSc5HVj6UY5YLHHEzPBkgpNUByuyxtlw=", + "lastModified": 1754689972, + "narHash": "sha256-eogqv6FqZXHgqrbZzHnq43GalnRbLTkbBbFtEfm1RSc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dfcd5b901dbab46c9c6e80b265648481aafb01f8", + "rev": "fc756aa6f5d3e2e5666efcf865d190701fef150a", "type": "github" }, "original": { @@ -380,11 +380,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1752436162, - "narHash": "sha256-Kt1UIPi7kZqkSc5HVj6UY5YLHHEzPBkgpNUByuyxtlw=", + "lastModified": 1754689972, + "narHash": "sha256-eogqv6FqZXHgqrbZzHnq43GalnRbLTkbBbFtEfm1RSc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dfcd5b901dbab46c9c6e80b265648481aafb01f8", + "rev": "fc756aa6f5d3e2e5666efcf865d190701fef150a", "type": "github" }, "original": { @@ -395,11 +395,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1751984180, - "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", + "lastModified": 1754214453, + "narHash": "sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", + "rev": "5b09dc45f24cf32316283e62aec81ffee3c3e376", "type": "github" }, "original": { @@ -419,11 +419,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1752010420, - "narHash": "sha256-fboKrq2WeEC2Y4LaZNiiH2dptUYHtSbYhzE0FTN/u+M=", + "lastModified": 1754262585, + "narHash": "sha256-Yz5dJ0VzGRzSRHdHldsWQbuFYmtP3NWNreCvPfCi9CI=", "owner": "nix-community", "repo": "nixvim", - "rev": "a11133507a930dfd235324cdf776bdb5e6ddd717", + "rev": "ab1b5962e1ca90b42de47e1172e0d24ca80e6256", "type": "github" }, "original": { @@ -469,11 +469,11 @@ ] }, "locked": { - "lastModified": 1749730855, - "narHash": "sha256-L3x2nSlFkXkM6tQPLJP3oCBMIsRifhIDPMQQdHO5xWo=", + "lastModified": 1753771532, + "narHash": "sha256-Pmpke0JtLRzgdlwDC5a+aiLVZ11JPUO5Bcqkj0nHE/k=", "owner": "NuschtOS", "repo": "search", - "rev": "8dfe5879dd009ff4742b668d9c699bc4b9761742", + "rev": "2a65adaf2c0c428efb0f4a2bc406aab466e96a06", "type": "github" }, "original": { @@ -502,11 +502,11 @@ ] }, "locked": { - "lastModified": 1752544651, - "narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=", + "lastModified": 1754328224, + "narHash": "sha256-glPK8DF329/dXtosV7YSzRlF4n35WDjaVwdOMEoEXHA=", "owner": "Mic92", "repo": "sops-nix", - "rev": "2c8def626f54708a9c38a5861866660395bb3461", + "rev": "49021900e69812ba7ddb9e40f9170218a7eca9f4", "type": "github" }, "original": { @@ -536,11 +536,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1752599753, - "narHash": "sha256-8ppgjqbFc/697OXgMntMhk+kAQF4BHBog73oP6Xds8Y=", + "lastModified": 1754599117, + "narHash": "sha256-AzAYdZlat002vCjCKWdFpGi2xUaiOU4DtIPnv1nomD8=", "owner": "danth", "repo": "stylix", - "rev": "a35db84c7568c75f3ec665fdcd962cc9c52b6c0a", + "rev": "312dec38b2231b21f36903d1bdce96daa11548ff", "type": "github" }, "original": { @@ -718,11 +718,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1752338000, - "narHash": "sha256-Fxlp/yKtynug0jyuauAmvZU2SzHCfwlwWf85j+IvQ0U=", + "lastModified": 1754533920, + "narHash": "sha256-fCZ68Yud1sUCq6UNXj0SDyiBgVA8gJUE+14ZFGsFJG8=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "ba78881a68182ce338041846164cbfed0d70935c", + "rev": "e0d1dad25a158551ab58547b2ece4b7d5a19929c", "type": "github" }, "original": { @@ -736,11 +736,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1752293576, - "narHash": "sha256-84tAzrC/kioWRmG0jLt1HWRP/wHON7zjLtXCwWRNI/g=", + "lastModified": 1754540523, + "narHash": "sha256-Wgv2qVckt8q11/xErY7hYdLAPcoOnZ0BkMLqyXegCzQ=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "1a40cdcb093a0025631ef692caa53130f821dd77", + "rev": "451454de40a4433174153e823994fe2ecd3c869e", "type": "github" }, "original": { diff --git a/home/default.nix b/home/default.nix index 42e6273..8edb0ac 100644 --- a/home/default.nix +++ b/home/default.nix @@ -6,11 +6,10 @@ }: { imports = [ ./programs/neovim/. - ./programs/helix.nix ./programs/git.nix ./programs/lf/. ./programs/zsh.nix - ./programs/tmux.nix + ./programs/tmux/. ]; programs.home-manager.enable = true; diff --git a/home/desktop/hyprland/default.nix b/home/desktop/hyprland/default.nix index 7e7311d..81efc71 100644 --- a/home/desktop/hyprland/default.nix +++ b/home/desktop/hyprland/default.nix @@ -6,18 +6,11 @@ }: let modifier = config.windowManager.modifierKey; menu = config.programs.menu.dmenuCommand; - lock_cmd = "${config.programs.hyprlock.package}/bin/hyprlock"; - color = { - inherit (config.lib.stylix.colors) yellow red; - bg = config.lib.stylix.colors.base00; - fg = config.lib.stylix.colors.base07; - text = config.lib.stylix.colors.base05; - }; - rgb = color: "rgb(${color})"; in { imports = [ (import ../utils/waybar.nix) (import ../utils/display.nix) + (import ../utils/hypridle.nix) ../../workstation.nix ]; xdg.portal = { @@ -26,64 +19,6 @@ in { extraPortals = [pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-wlr]; }; - services.hypridle = { - enable = true; - settings = { - general = { - before_sleep_cmd = "rbw lock; hyprlock"; - after_sleep_cmd = "hyprctl dispatch dpms on"; - ignore_dbus_inhibit = false; - lock_cmd = "pidof ${lock_cmd} || ${lock_cmd}"; - }; - - listener = [ - { - timeout = 300; - on-timeout = "loginctl lock-session"; - } - { - timeout = 1200; - on-timeout = "hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - } - ]; - }; - }; - - programs.hyprlock = { - enable = true; - settings = lib.mkForce { - # https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/ - general = { - hide_cursor = true; - grace = 10; - ignore_empty_input = true; - }; - - background = [ - { - path = "screenshot"; - blur_passes = 3; - blur_size = 8; - } - ]; - - input-field = [ - { - dots_center = true; - fade_on_empty = true; - outline_thickness = 5; - shadow_passes = 2; - inner_color = rgb color.bg; - outer_color = rgb color.fg; - font_color = rgb color.text; - fail_color = rgb color.red; - check_color = rgb color.yellow; - } - ]; - }; - }; - wayland.windowManager.hyprland = { enable = true; systemd = { diff --git a/home/desktop/niri/default.nix b/home/desktop/niri/default.nix index db325d6..d2e1d76 100644 --- a/home/desktop/niri/default.nix +++ b/home/desktop/niri/default.nix @@ -4,6 +4,14 @@ config, ... }: { + imports = [ + (import ../utils/hypridle.nix) + (import ../utils/waybar.nix) + ../../workstation.nix + ]; + + programs.waybar.settings.mainBar.modules-left = ["niri/workspaces" "niri/window"]; + programs.fuzzel = { enable = true; settings = { @@ -15,13 +23,18 @@ }; services.hyprpaper.enable = true; systemd.user.services.hyprpaper.Unit.WantedBy = ["niri.service"]; + systemd.user.services.waybar.Unit.WantedBy = ["niri.service"]; + + home.packages = with pkgs; [brightnessctl]; services.mako.enable = true; + systemd.user.services.mako.Unit.WantedBy = ["niri.service"]; programs.niri = { settings = { input.keyboard = { xkb.layout = "us"; xkb.variant = "dvorak"; + xkb.options = "caps:escape"; }; input.mouse = { accel-profile = "flat"; @@ -29,11 +42,41 @@ input.focus-follows-mouse = { enable = true; }; + input.touchpad = { + dwt = true; # disable when typing + }; prefer-no-csd = true; spawn-at-startup = [ {command = [(lib.getExe pkgs.xwayland-satellite)];} - {command = [(lib.getExe config.services.mako.package)];} ]; + layout = { + preset-column-widths = [ + {proportion = 1.0;} + {proportion = 1.0 / 2.0;} + ]; + }; + environment = { + NIXOS_OZONE_WL = "1"; + DISPLAY = ":1"; + }; + outputs."DP-3" = { + mode = { + width = 1920; + height = 1080; + refresh = 143.855; + }; + variable-refresh-rate = true; + scale = 1.0; + }; + outputs."HDMI-A-1" = { + mode = { + width = 3840; + height = 2160; + refresh = 120.0; + }; + variable-refresh-rate = true; + scale = 2.5; + }; binds = with config.lib.niri.actions; { "Mod+Return".action.spawn = [(lib.getExe config.programs.terminal)]; "Mod+O".action.spawn = [(lib.getExe pkgs.cosmic-files)]; @@ -45,12 +88,14 @@ "Mod+Ctrl+WheelScrollRight".action = move-column-right; "Mod+Right".action = focus-column-right; + "Mod+Ctrl+Right".action = move-column-right; "Mod+L".action = focus-column-right; "Mod+Ctrl+L".action = move-column-right; "Mod+WheelScrollLeft".action = focus-column-left; "Mod+Ctrl+WheelScrollLeft".action = move-column-left; "Mod+Left".action = focus-column-left; + "Mod+Ctrl+Left".action = move-column-left; "Mod+H".action = focus-column-left; "Mod+Ctrl+H".action = move-column-left; @@ -60,17 +105,40 @@ "Mod+Comma".action = consume-or-expel-window-left; "Mod+Period".action = consume-or-expel-window-right; + "Mod+F".action = fullscreen-window; "Mod+Q".action = close-window; + "Mod+Shift+Escape".action = quit; + "Mod+Escape".action.spawn = lib.getExe config.programs.hyprlock.package; + "Mod+WheelScrollDown".action = focus-workspace-down; "Mod+WheelScrollUp".action = focus-workspace-up; "Mod+Ctrl+WheelScrollDown".action = move-column-to-workspace-down; "Mod+Ctrl+WheelScrollUp".action = move-column-to-workspace-up; - "Mod+M".action = maximize-column; + "Mod+J".action = focus-workspace-down; + "Mod+K".action = focus-workspace-up; + "Mod+Ctrl+J".action = move-column-to-workspace-down; + "Mod+Ctrl+K".action = move-column-to-workspace-up; + + "Mod+Down".action = focus-workspace-down; + "Mod+Up".action = focus-workspace-up; + "Mod+Ctrl+Down".action = move-column-to-workspace-down; + "Mod+Ctrl+Up".action = move-column-to-workspace-up; + + "Mod+M".action = switch-preset-column-width; "Mod+G".action = toggle-window-floating; "Print".action = screenshot; + + "XF86AudioRaiseVolume".action.spawn = ["raise-volume"]; + "XF86AudioLowerVolume".action.spawn = ["lower-volume"]; + + "XF86AudioMute".action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"]; + "XF86AudioMicMute".action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"]; + + "XF86MonBrightnessUp".action.spawn = ["brightness" "+10%"]; + "XF86MonBrightnessDown".action.spawn = ["brightness" "10%-"]; }; }; }; diff --git a/home/desktop/utils/hypridle.nix b/home/desktop/utils/hypridle.nix new file mode 100644 index 0000000..d0c0316 --- /dev/null +++ b/home/desktop/utils/hypridle.nix @@ -0,0 +1,72 @@ +{ + config, + lib, + ... +}: let + rgb = color: "rgb(${color})"; + lock_cmd = "${config.programs.hyprlock.package}/bin/hyprlock"; + color = { + inherit (config.lib.stylix.colors) yellow red; + bg = config.lib.stylix.colors.base00; + fg = config.lib.stylix.colors.base07; + text = config.lib.stylix.colors.base05; + }; +in { + services.hypridle = { + enable = true; + settings = { + general = { + before_sleep_cmd = "rbw lock; hyprlock"; + after_sleep_cmd = "hyprctl dispatch dpms on"; + ignore_dbus_inhibit = false; + lock_cmd = "pidof ${lock_cmd} || ${lock_cmd}"; + }; + + listener = [ + { + timeout = 300; + on-timeout = "loginctl lock-session"; + } + { + timeout = 1200; + on-timeout = "hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + } + ]; + }; + }; + + programs.hyprlock = { + enable = true; + settings = lib.mkForce { + # https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/ + general = { + hide_cursor = true; + grace = 10; + ignore_empty_input = true; + }; + + background = [ + { + path = "screenshot"; + blur_passes = 3; + blur_size = 8; + } + ]; + + input-field = [ + { + dots_center = true; + fade_on_empty = true; + outline_thickness = 5; + shadow_passes = 2; + inner_color = rgb color.bg; + outer_color = rgb color.fg; + font_color = rgb color.text; + fail_color = rgb color.red; + check_color = rgb color.yellow; + } + ]; + }; + }; +} diff --git a/home/desktop/utils/waybar.nix b/home/desktop/utils/waybar.nix index f03354f..02d90cb 100644 --- a/home/desktop/utils/waybar.nix +++ b/home/desktop/utils/waybar.nix @@ -7,9 +7,24 @@ layer = "bottom"; position = "top"; height = 36; - modules-right = ["mpris" "idle_inhibitor" "pulseaudio" "clock" "tray" "battery"]; + modules-right = ["mpris" "power-profiles-daemon" "cpu" "idle_inhibitor" "pulseaudio" "clock" "tray" "battery"]; + "cpu" = { + "format" = "{icon}"; + "format-icons" = ["▁" "▂" "▃" "▄" "▅" "▆" "▇" "█"]; + }; + "power-profiles-daemon" = { + "format" = "{icon}"; + "tooltip-format" = "Power profile: {profile}\nDriver: {driver}"; + "tooltip" = true; + "format-icons" = { + "default" = ""; + "performance" = ""; + "balanced" = ""; + "power-saver" = ""; + }; + }; clock = { - format = "📅 {:%a %b-%d %I:%M %p}"; + format = "📅 {:%a %b-%d, %I:%M %p}"; }; idle_inhibitor = { format = "{icon}"; diff --git a/home/programs/graphical.nix b/home/programs/graphical.nix index a9d9e5a..301b503 100644 --- a/home/programs/graphical.nix +++ b/home/programs/graphical.nix @@ -1,7 +1,11 @@ -{pkgs, inputs, user, ...}: { +{ + pkgs, + inputs, + user, + ... +}: { imports = [ ./mpv.nix - ./vscode.nix ]; home.packages = with pkgs; [ @@ -14,15 +18,10 @@ # tools inkscape - kdePackages.okular gimp3 libreoffice - dbeaver-bin - zed-editor - insomnia # entertainment - kdePackages.kasts shortwave youtube-music transmission_4-gtk @@ -73,5 +72,4 @@ enable = true; package = pkgs.brave; }; - } diff --git a/home/programs/scripts.nix b/home/programs/scripts.nix index 57cd89f..feff58e 100644 --- a/home/programs/scripts.nix +++ b/home/programs/scripts.nix @@ -187,7 +187,8 @@ in { { name = "raise-volume"; text = '' - ${my-deps.amixer} sset Master 5%+ && ${my-deps.amixer} sset Master unmute + wpctl "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+" -l 1.0 + notify-volume ''; hotkeys = [ {key = "bracketright";} @@ -196,12 +197,24 @@ in { key = "XF86AudioRaiseVolume"; } ]; - install = false; + install = true; + } + { + name = "notify-volume"; + text = '' + vol=$(wpctl get-volume "@DEFAULT_AUDIO_SINK@" | cut -d"." -f2) + + ${my-deps.notify-send} "Volume" -h "int:value:$vol" -h string:x-canonical-private-synchronous:volume -t 3000 + ''; + hotkeys = []; + install = true; } { name = "lower-volume"; text = '' ${my-deps.amixer} sset Master 5%- + + notify-volume ''; hotkeys = [ {key = "bracketleft";} @@ -210,7 +223,7 @@ in { key = "XF86AudioLowerVolume"; } ]; - install = false; + install = true; } { name = "skip-track"; diff --git a/home/programs/tmux.nix b/home/programs/tmux/default.nix similarity index 76% rename from home/programs/tmux.nix rename to home/programs/tmux/default.nix index 4d645ca..d964aae 100644 --- a/home/programs/tmux.nix +++ b/home/programs/tmux/default.nix @@ -1,4 +1,10 @@ { + pkgs, + lib, + ... +}: let + sessionizer = lib.getExe (pkgs.writeShellScriptBin "tmux-sessionizer" (lib.readFile ./sessionizer.sh)); +in { programs.tmux = { enable = true; baseIndex = 1; @@ -25,8 +31,12 @@ bind -n M-u copy-mode bind -n M-p previous-window bind -n M-n next-window + bind-key -r f run-shell "tmux neww ${sessionizer}" set-option -g renumber-windows on ''; }; + programs.zsh.initContent = '' + bindkey -s ^f "${sessionizer}\n" + ''; } diff --git a/home/programs/tmux/sessionizer.sh b/home/programs/tmux/sessionizer.sh new file mode 100644 index 0000000..33ac5fc --- /dev/null +++ b/home/programs/tmux/sessionizer.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +if [[ $# -eq 1 ]]; then + selected=$1 +else + selected=$(find ~/Documents/code ~/Documents/infra -mindepth 1 -maxdepth 1 -type d | fzf) +fi + +if [[ -z $selected ]]; then + exit 0 +fi + +selected_name=$(basename "$selected" | tr . _) +tmux_running=$(pgrep tmux) + +if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then + tmux new-session -s $selected_name -c $selected + exit 0 +fi + +if ! tmux has-session -t=$selected_name 2> /dev/null; then + tmux new-session -ds $selected_name -c $selected +fi + +if [[ -z $TMUX ]]; then + tmux attach -t $selected_name +else + tmux switch-client -t $selected_name +fi diff --git a/home/programs/work.nix b/home/programs/work.nix index 5830e43..65a96ff 100644 --- a/home/programs/work.nix +++ b/home/programs/work.nix @@ -5,6 +5,9 @@ }: let modifier = config.windowManager.modifierKey; in { + imports = [ + ./vscode.nix + ]; roles.email = { enable = true; email = "tristan.beedell@cryoserver.com"; diff --git a/home/workstation.nix b/home/workstation.nix index f4e68c0..2e9b0c2 100644 --- a/home/workstation.nix +++ b/home/workstation.nix @@ -28,6 +28,7 @@ playerctl quickemu devenv + bottles ]; services.udiskie = { diff --git a/nixos/services/samba.nix b/nixos/services/samba.nix index e1e0fb8..8c8cf05 100644 --- a/nixos/services/samba.nix +++ b/nixos/services/samba.nix @@ -21,7 +21,7 @@ "map to guest" = "bad user"; }; "Music" = { - "path" = "/mnt/storage/media/Public/"; + "path" = "/mnt/storage/media/Music"; "browseable" = "yes"; "read only" = "no"; "guest ok" = "yes"; diff --git a/pkgs/mpv-skipsilence.nix b/pkgs/mpv-skipsilence.nix index 33d6b1f..1391603 100644 --- a/pkgs/mpv-skipsilence.nix +++ b/pkgs/mpv-skipsilence.nix @@ -10,7 +10,7 @@ buildLua { src = fetchgit { url = "https://codeberg.org/ferreum/mpv-skipsilence.git"; - hash = "sha256-fg8vfeb68nr0bTBIvr0FnRnoB48/kV957pn22tWcz1g="; + hash = "sha256-+sOMWFFumJUk5gFE1iCTvWub3PWzYOkulXJLCGS4fYA="; }; passthru.updateScript = gitUpdater {};