From a8f304b0755c6d2b1ac0040c94bcba1e223bdcbf Mon Sep 17 00:00:00 2001 From: Evie Litherland-Smith Date: Thu, 13 Jul 2023 12:41:00 +0100 Subject: [PATCH] Move all host specific things out of flake.nix Go back to single, re-designed waybar for all screens --- Makefile | 17 +- flake.lock | 30 +-- flake.nix | 179 +++--------------- home/desktop/hyprland/default.nix | 2 +- home/desktop/hyprland/hyprland.conf | 2 + home/desktop/waybar/default.nix | 28 +++ home/desktop/waybar/main.nix | 35 ---- home/desktop/waybar/modules/clock.compact.nix | 2 - home/desktop/waybar/modules/clock.nix | 3 +- .../waybar/modules/hyprland_window.nix | 4 + .../waybar/modules/network.compact.nix | 7 +- home/desktop/waybar/modules/separator.nix | 3 + home/desktop/waybar/style.css | 50 ++++- hosts/Legion/configuration.nix | 2 + hosts/Legion/home.nix | 8 + hosts/Ronin/configuration.nix | 2 + hosts/Ronin/home.nix | 9 +- hosts/Vanguard/configuration.nix | 20 ++ hosts/Vanguard/home.nix | 28 +++ hosts/common.nix | 22 ++- hosts/desktop.nix | 44 +++++ 21 files changed, 256 insertions(+), 241 deletions(-) delete mode 100644 home/desktop/waybar/main.nix create mode 100644 home/desktop/waybar/modules/hyprland_window.nix create mode 100644 home/desktop/waybar/modules/separator.nix create mode 100644 hosts/Legion/home.nix create mode 100644 hosts/Vanguard/home.nix create mode 100644 hosts/desktop.nix diff --git a/Makefile b/Makefile index 2e7701f3..8a147a56 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,13 @@ test: sudo nixos-rebuild test --flake . + make hyprland + make waybar + +switch: + sudo nixos-rebuild switch --flake . + make hyprland + make waybar build: sudo nixos-rebuild build --flake . @@ -9,11 +16,15 @@ build: debug: sudo nixos-rebuild build --flake . --show-trace --refresh -switch: - sudo nixos-rebuild switch --flake . - lock: nix flake lock --update-input nixpkgs --update-input home-manager update: nix flake update --refresh --commit-lock-file + +hyprland: + -hyprctl reload + +waybar: + -pkill -9 waybar + -hyprctl dispatch exec waybar diff --git a/flake.lock b/flake.lock index b7e83d4f..56feb367 100644 --- a/flake.lock +++ b/flake.lock @@ -115,7 +115,7 @@ "inputs": { "flake-parts": "flake-parts_3", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs" }, "locked": { "lastModified": 1686721748, @@ -176,7 +176,9 @@ "hyprland": { "inputs": { "hyprland-protocols": "hyprland-protocols", - "nixpkgs": "nixpkgs", + "nixpkgs": [ + "nixpkgs" + ], "wlroots": "wlroots", "xdph": "xdph" }, @@ -265,11 +267,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1688500189, - "narHash": "sha256-djYYiY4lzJOlXOnTHytH6BUugrxHDZjuGxTSrU4gt4M=", + "lastModified": 1686501370, + "narHash": "sha256-G0WuM9fqTPRc2URKP9Lgi5nhZMqsfHGrdEbrLvAPJcg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "78419edadf0fabbe5618643bd850b2f2198ed060", + "rev": "75a5ebf473cd60148ba9aec0d219f72e5cf52519", "type": "github" }, "original": { @@ -298,22 +300,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1686501370, - "narHash": "sha256-G0WuM9fqTPRc2URKP9Lgi5nhZMqsfHGrdEbrLvAPJcg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "75a5ebf473cd60148ba9aec0d219f72e5cf52519", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1688918189, "narHash": "sha256-f8ZlJ67LgEUDnN7ZsAyd1/Fyby1VdOXWg4XY/irSGrQ=", @@ -334,7 +320,7 @@ "home-manager": "home-manager", "hyprland": "hyprland", "neovim-nightly-overlay": "neovim-nightly-overlay", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", "wallpapers": "wallpapers" } }, diff --git a/flake.nix b/flake.nix index d9fd22f0..b4a131e6 100644 --- a/flake.nix +++ b/flake.nix @@ -12,177 +12,44 @@ url = "github:nix-community/neovim-nightly-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; - hyprland.url = "github:hyprwm/Hyprland"; + hyprland = { + url = "github:hyprwm/Hyprland"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = inputs: let - home-manager-config = { - imports = [inputs.home-manager.nixosModules.home-manager]; - home-manager = { - useGlobalPkgs = true; - useUserPackages = false; - extraSpecialArgs = {inputs = inputs;}; - users.root = { - imports = [./home/env/bash.nix ./home/env/starship.nix]; - home = { - username = "root"; - homeDirectory = "/root"; - stateVersion = "22.11"; - }; - }; - }; - }; - services = {pkgs, ...}: { - environment.systemPackages = with pkgs; [ - gsettings-desktop-schemas - pavucontrol - pamixer - pulseaudio - grim - slurp - ]; - security.pam.services.swaylock = {}; - programs.thunar = { - enable = true; - plugins = with pkgs.xfce; [ - thunar-archive-plugin - thunar-volman - ]; - }; - services = { - blueman.enable = true; - gvfs.enable = true; - tumbler.enable = true; - }; - }; - chromium = { - programs.chromium = { - enable = true; - extensions = [ - "cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin - "fnaicdffflnofjppbagibeoednhnbjhg" # Floccus - "nngceckbapebfimnlniiiahkandclblb" # Bitwarden - "dphilobhebphkdjbpfohgikllaljmgbn" # Simplelogin - ]; - extraOpts = { - "BrowserSignin" = 0; - "SyncDisabled" = true; - "PasswordManagerEnabled" = false; - "SpellcheckEnabled" = true; - "SpellcheckLanguage" = ["en-GB"]; - }; - defaultSearchProviderSearchURL = "https://duckduckgo.com/?q={searchTerms}"; - defaultSearchProviderEnabled = true; - }; - }; waybar-experimental-overlay = final: prev: { waybar = prev.waybar.overrideAttrs (oldAttrs: { mesonFlags = oldAttrs.mesonFlags ++ ["-Dexperimental=true"]; }); }; + system = "x86_64-linux"; + specialArgs = {inputs = inputs;}; + pkgs = import inputs.nixpkgs { + system = system; + config.allowUnfree = true; + overlays = [ + waybar-experimental-overlay + inputs.neovim-nightly-overlay.overlay + ]; + }; in { nixosConfigurations = { Legion = inputs.nixpkgs.lib.nixosSystem { - pkgs = import inputs.nixpkgs { - system = "x86_64-linux"; - config.allowUnfree = true; - }; - modules = [ - home-manager-config - ./hosts/Legion - ./services/Legion.nix - { - home-manager.users.xenia = { - imports = [./home/personal.nix]; - home = { - username = "xenia"; - homeDirectory = "/home/xenia"; - stateVersion = "22.11"; - }; - }; - } - ]; + specialArgs = specialArgs; + pkgs = pkgs; + modules = [./hosts/Legion]; }; Vanguard = inputs.nixpkgs.lib.nixosSystem { - pkgs = import inputs.nixpkgs { - system = "x86_64-linux"; - config.allowUnfree = true; - overlays = [ - waybar-experimental-overlay - inputs.neovim-nightly-overlay.overlay - ]; - }; - modules = [ - home-manager-config - services - chromium - inputs.hyprland.nixosModules.default - ./hosts/Vanguard - ./services/sshd - ./services/syncthing/Vanguard.nix - ({pkgs, ...}: { - hardware.steam-hardware.enable = true; - programs = { - xwayland.enable = true; - hyprland.enable = true; - gamescope = { - enable = true; - capSysNice = true; - }; - steam = { - enable = true; - remotePlay.openFirewall = true; - gamescopeSession.enable = true; - }; - }; - home-manager.users.xenia = { - imports = [ - inputs.hyprland.homeManagerModules.default - ./home/personal.nix - ./home/desktop/hyprland - ./home/desktop/waybar/main.nix - ./home/gui - ]; - home = { - username = "xenia"; - homeDirectory = "/home/xenia"; - stateVersion = "22.11"; - }; - programs.neovim.package = pkgs.neovim-nightly; - xdg.configFile."hypr/hyprpaper.conf".text = '' - preload = ${inputs.wallpapers.outputs.default} - wallpaper = ,${inputs.wallpapers.outputs.default} - ''; - xdg.configFile."hypr/display.conf".text = '' - monitor=DP-1,highrr,auto,1 - monitor=DP-2,highrr,auto,1 - monitor=HDMI-1,highres,auto,2 - monitor=HDMI-2,highres,auto,2 - ''; - xdg.configFile."hypr/autostart.conf".text = '' - exec-once=gamescope -w 1920 -h 1080 -W 3840 -H 2160 -U -f --hdr-enabled -e -- steam -gamepadui - ''; - }; - }) - ]; + specialArgs = specialArgs; + pkgs = pkgs; + modules = [./hosts/Vanguard]; }; Ronin = inputs.nixpkgs.lib.nixosSystem { - pkgs = import inputs.nixpkgs { - system = "x86_64-linux"; - config.allowUnfree = true; - overlays = [ - waybar-experimental-overlay - inputs.neovim-nightly-overlay.overlay - ]; - }; - modules = [ - home-manager-config - services - chromium - inputs.hyprland.nixosModules.default - ./hosts/Ronin - ./services/syncthing/Ronin.nix - ]; + specialArgs = specialArgs; + pkgs = pkgs; + modules = [./hosts/Ronin]; }; }; homeConfigurations = { diff --git a/home/desktop/hyprland/default.nix b/home/desktop/hyprland/default.nix index 0e3a2b72..1c5f37ac 100644 --- a/home/desktop/hyprland/default.nix +++ b/home/desktop/hyprland/default.nix @@ -1,8 +1,8 @@ { - inputs, pkgs, lib, config, + inputs, ... }: let configure-gtk = pkgs.writeTextFile { diff --git a/home/desktop/hyprland/hyprland.conf b/home/desktop/hyprland/hyprland.conf index 5bb0afe9..ef22a9e1 100644 --- a/home/desktop/hyprland/hyprland.conf +++ b/home/desktop/hyprland/hyprland.conf @@ -56,6 +56,8 @@ decoration { shadow_render_power = 3 } +blurls = waybar + animations { enabled = yes bezier = myBezier, 0.05, 0.9, 0.1, 1.05 diff --git a/home/desktop/waybar/default.nix b/home/desktop/waybar/default.nix index 187aeffa..803f3c40 100644 --- a/home/desktop/waybar/default.nix +++ b/home/desktop/waybar/default.nix @@ -7,5 +7,33 @@ programs.waybar = { enable = true; style = ./style.css; + settings.main = { + layer = "top"; + position = "top"; + "modules-left" = [ + "wlr/workspaces" + ]; + "modules-center" = []; + "modules-right" = [ + "pulseaudio" + "bluetooth" + "network" + "backlight" + "battery" + "tray" + "clock" + ]; + "wlr/workspaces" = import ./modules/wlr_workspaces.nix; + cpu = import ./modules/cpu.nix; + memory = import ./modules/memory.nix; + temperature = import ./modules/temperature.nix; + clock = import ./modules/clock.compact.nix; + pulseaudio = import ./modules/pulseaudio.nix; + bluetooth = import ./modules/bluetooth.compact.nix; + network = import ./modules/network.compact.nix; + backlight = import ./modules/backlight.nix; + battery = import ./modules/battery.compact.nix; + tray = import ./modules/tray.nix; + }; }; } diff --git a/home/desktop/waybar/main.nix b/home/desktop/waybar/main.nix deleted file mode 100644 index 0f5dd221..00000000 --- a/home/desktop/waybar/main.nix +++ /dev/null @@ -1,35 +0,0 @@ -{...}: { - imports = [./default.nix]; - programs.waybar.settings.main = { - layer = "top"; - position = "top"; - "modules-left" = [ - "wlr/workspaces" - "cpu" - "memory" - "temperature" - ]; - "modules-center" = [ - "clock" - ]; - "modules-right" = [ - "pulseaudio" - "bluetooth" - "network" - "backlight" - "battery" - "tray" - ]; - "wlr/workspaces" = import ./modules/wlr_workspaces.nix; - cpu = import ./modules/cpu.nix; - memory = import ./modules/memory.nix; - temperature = import ./modules/temperature.nix; - clock = import ./modules/clock.nix; - pulseaudio = import ./modules/pulseaudio.nix; - bluetooth = import ./modules/bluetooth.nix; - network = import ./modules/network.nix; - backlight = import ./modules/backlight.nix; - battery = import ./modules/battery.nix; - tray = import ./modules/tray.nix; - }; -} diff --git a/home/desktop/waybar/modules/clock.compact.nix b/home/desktop/waybar/modules/clock.compact.nix index 06915502..d67ca909 100644 --- a/home/desktop/waybar/modules/clock.compact.nix +++ b/home/desktop/waybar/modules/clock.compact.nix @@ -1,8 +1,6 @@ let clock = import ./clock.nix; in { - format = "{:%R 󰅐 }"; - format-alt = "{:%A %Y-%m-%d 󰃭 }"; tooltip-format = clock.tooltip-format; calendar = clock.calendar; actions = clock.actions; diff --git a/home/desktop/waybar/modules/clock.nix b/home/desktop/waybar/modules/clock.nix index 6e9bf147..3532080e 100644 --- a/home/desktop/waybar/modules/clock.nix +++ b/home/desktop/waybar/modules/clock.nix @@ -1,5 +1,6 @@ { - format = "{:%A %Y-%m-%d 󰃭 | %R 󰅐 }"; + format = "{:%R 󰅐 }"; + # format-alt = "{:%A %Y-%m-%d 󰃭 }"; tooltip-format = "{calendar}"; calendar = { mode = "month"; diff --git a/home/desktop/waybar/modules/hyprland_window.nix b/home/desktop/waybar/modules/hyprland_window.nix new file mode 100644 index 00000000..e363c929 --- /dev/null +++ b/home/desktop/waybar/modules/hyprland_window.nix @@ -0,0 +1,4 @@ +{ + format = "{title}"; + separate-outputs = true; +} diff --git a/home/desktop/waybar/modules/network.compact.nix b/home/desktop/waybar/modules/network.compact.nix index 7a33953c..6c7b49e9 100644 --- a/home/desktop/waybar/modules/network.compact.nix +++ b/home/desktop/waybar/modules/network.compact.nix @@ -1,8 +1,9 @@ { - format-wifi = "({signalStrength}%) 󰖩"; + format-icons = ["󰤟" "󰤢" "󰤥" "󰤨"]; + format-wifi = "{icon}"; format-ethernet = "󰈁"; - tooltip-format = "{essid}"; - format-linked = "(No IP) 󰈁"; + tooltip-format = "{essid} ({signalStrength}%)"; + format-linked = "󰈂"; format-disconnected = "󰈂"; on-click = "nm-connection-editor"; } diff --git a/home/desktop/waybar/modules/separator.nix b/home/desktop/waybar/modules/separator.nix new file mode 100644 index 00000000..aae63517 --- /dev/null +++ b/home/desktop/waybar/modules/separator.nix @@ -0,0 +1,3 @@ +{ + format = " | "; +} diff --git a/home/desktop/waybar/style.css b/home/desktop/waybar/style.css index afcf6263..b723ec14 100644 --- a/home/desktop/waybar/style.css +++ b/home/desktop/waybar/style.css @@ -31,25 +31,55 @@ * { border: none; - border-radius: 10px; + border-radius: 0px; + margin: 0px; background: transparent; color: @text; font-family: "FiraCode Nerd Font"; font-size: 18px; } -.modules-left, -.modules-center, -.modules-right { - background: @base; - border: 3px solid @mauve; - color: @text; +window { + border-bottom: 3px solid @surface2; } tooltip { - background: rgba(43, 48, 59, 0.5); - border: 3px solid rgba(100, 114, 125, 0.5); + background: @base; + border: 3px solid @mauve; + border-radius: 10px; } + tooltip label { - color: white; + font-size: 24px; +} + +.modules-left, +.modules-center, +.modules-right { + margin-left: 20px; + margin-right: 20px; +} + +#workspaces, +#cpu, +#memory, +#temperature, +#clock, +#pulseaudio, +#bluetooth, +#network, +#backlight, +#battery, +#tray { + margin: 0px; + padding-left: 10px; + padding-right: 10px; +} + +#workspaces button { + border-bottom: 3px solid transparent; +} + +#workspaces button.active { + border-bottom: 3px solid @mauve; } diff --git a/hosts/Legion/configuration.nix b/hosts/Legion/configuration.nix index a085a860..e064ff6b 100644 --- a/hosts/Legion/configuration.nix +++ b/hosts/Legion/configuration.nix @@ -6,6 +6,7 @@ # Include the results of the hardware scan. ./hardware-configuration.nix ../common.nix + ../../services/Legion.nix ]; # Use the systemd-boot EFI boot loader. @@ -32,6 +33,7 @@ shell = pkgs.fish; openssh.authorizedKeys.keys = import ../../auth/authorized_keys.nix; }; + home-manager.users.xenia = import ./home.nix; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions diff --git a/hosts/Legion/home.nix b/hosts/Legion/home.nix new file mode 100644 index 00000000..99686fcc --- /dev/null +++ b/hosts/Legion/home.nix @@ -0,0 +1,8 @@ +{...}: { + imports = [./home/personal.nix]; + home = { + username = "xenia"; + homeDirectory = "/home/xenia"; + stateVersion = "22.11"; + }; +} diff --git a/hosts/Ronin/configuration.nix b/hosts/Ronin/configuration.nix index 733afe62..6f158309 100644 --- a/hosts/Ronin/configuration.nix +++ b/hosts/Ronin/configuration.nix @@ -11,6 +11,8 @@ in { # Include the results of the hardware scan. ./hardware-configuration.nix ../common.nix + ../desktop.nix + ../../services/syncthing/Ronin.nix ]; # Bootloader. boot.loader.systemd-boot.enable = true; diff --git a/hosts/Ronin/home.nix b/hosts/Ronin/home.nix index 6ed09d36..bc564e23 100644 --- a/hosts/Ronin/home.nix +++ b/hosts/Ronin/home.nix @@ -6,11 +6,10 @@ imports = [ inputs.hyprland.homeManagerModules.default # ../../pkgs/eww-hyprland - ../../home/work.nix ../../home/desktop/hyprland - ../../home/desktop/waybar/main.nix - ../../home/desktop/waybar/compact.nix + ../../home/desktop/waybar ../../home/gui + ../../home/work.nix ]; home = { username = "elitherl"; @@ -22,10 +21,6 @@ # enable = true; # package = pkgs.eww-wayland; # }; - programs.waybar.settings = { - main."output" = "DP-5"; - compact."output" = ["eDP-1" "DP-3"]; - }; xdg.configFile."hypr/display.conf".text = '' monitor=desc:Iiyama North America PLB2403WS 0574281251316,1920x1200@60,0x185,1 monitor=desc:Dell Inc. DELL U2417H 5K9YD872FY1L,1920x1080@60,1920x0,1,transform,1 diff --git a/hosts/Vanguard/configuration.nix b/hosts/Vanguard/configuration.nix index 449f2e21..594c4971 100644 --- a/hosts/Vanguard/configuration.nix +++ b/hosts/Vanguard/configuration.nix @@ -11,6 +11,9 @@ in { # Include the results of the hardware scan. ./hardware-configuration.nix ../common.nix + ../desktop.nix + ../../services/sshd + ../../services/syncthing/Vanguard.nix ]; # Bootloader. @@ -26,6 +29,22 @@ in { system.autoUpgrade.allowReboot = false; environment.systemPackages = with pkgs; [mesa]; + # Config for steam + hardware.steam-hardware.enable = true; + programs = { + xwayland.enable = true; + hyprland.enable = true; + gamescope = { + enable = true; + capSysNice = true; + }; + steam = { + enable = true; + remotePlay.openFirewall = true; + gamescopeSession.enable = true; + }; + }; + users.users.xenia = { isNormalUser = true; description = "Evie Litherland-Smith"; @@ -33,6 +52,7 @@ in { shell = pkgs.fish; openssh.authorizedKeys.keys = import ../../auth/authorized_keys.nix; }; + home-manager.users.elitherl = import ./home.nix; services.greetd = { enable = true; diff --git a/hosts/Vanguard/home.nix b/hosts/Vanguard/home.nix new file mode 100644 index 00000000..e0003f14 --- /dev/null +++ b/hosts/Vanguard/home.nix @@ -0,0 +1,28 @@ +{ + pkgs, + inputs, + ... +}: { + imports = [ + inputs.hyprland.homeManagerModules.default + ./home/personal.nix + ./home/desktop/hyprland + ./home/desktop/waybar/main.nix + ./home/gui + ]; + home = { + username = "xenia"; + homeDirectory = "/home/xenia"; + stateVersion = "22.11"; + }; + programs.neovim.package = pkgs.neovim-nightly; + xdg.configFile."hypr/display.conf".text = '' + monitor=DP-1,highrr,auto,1 + monitor=DP-2,highrr,auto,1 + monitor=HDMI-1,highres,auto,2 + monitor=HDMI-2,highres,auto,2 + ''; + xdg.configFile."hypr/autostart.conf".text = '' + exec-once=gamescope -w 1920 -h 1080 -W 3840 -H 2160 -U -f --hdr-enabled -e -- steam -gamepadui + ''; +} diff --git a/hosts/common.nix b/hosts/common.nix index 65037f09..9d890dbe 100644 --- a/hosts/common.nix +++ b/hosts/common.nix @@ -1,4 +1,9 @@ -{pkgs, ...}: { +{ + pkgs, + inputs, + ... +}: { + imports = [inputs.home-manager.nixosModules.home-manager]; nix = { settings.experimental-features = ["nix-command" "flakes"]; gc = { @@ -100,4 +105,19 @@ pulse.enable = true; }; programs.noisetorch.enable = true; + + # Home manager common configuration + home-manager = { + useGlobalPkgs = true; + useUserPackages = false; + extraSpecialArgs = {inputs = inputs;}; + users.root = { + imports = [../home/env/bash.nix ../home/env/starship.nix]; + home = { + username = "root"; + homeDirectory = "/root"; + stateVersion = "22.11"; + }; + }; + }; } diff --git a/hosts/desktop.nix b/hosts/desktop.nix new file mode 100644 index 00000000..84851dc3 --- /dev/null +++ b/hosts/desktop.nix @@ -0,0 +1,44 @@ +{pkgs, inputs, ...}: { + imports = [inputs.hyprland.nixosModules.default]; + environment.systemPackages = with pkgs; [ + gsettings-desktop-schemas + pavucontrol + pamixer + pulseaudio + grim + slurp + ]; + security.pam.services.swaylock = {}; + services = { + blueman.enable = true; + gvfs.enable = true; + tumbler.enable = true; + }; + programs = { + thunar = { + enable = true; + plugins = with pkgs.xfce; [ + thunar-archive-plugin + thunar-volman + ]; + }; + chromium = { + enable = true; + extensions = [ + "cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin + "fnaicdffflnofjppbagibeoednhnbjhg" # Floccus + "nngceckbapebfimnlniiiahkandclblb" # Bitwarden + "dphilobhebphkdjbpfohgikllaljmgbn" # Simplelogin + ]; + extraOpts = { + "BrowserSignin" = 0; + "SyncDisabled" = true; + "PasswordManagerEnabled" = false; + "SpellcheckEnabled" = true; + "SpellcheckLanguage" = ["en-GB"]; + }; + defaultSearchProviderSearchURL = "https://duckduckgo.com/?q={searchTerms}"; + defaultSearchProviderEnabled = true; + }; + }; +}