Compare commits

...

11 Commits

Author SHA1 Message Date
arnie 9503c33f24 Mac things 2026-01-13 13:26:57 +01:00
arnie fa9c2115e9 Add claude code to mac 2026-01-02 23:28:02 +01:00
arnie b9b62ea3c3 Formatting and hammerspoon 2025-12-29 12:23:03 +01:00
arnie c34274413a Add session manager plugin 2025-12-29 12:21:57 +01:00
arnie 0a7d543ff4 Update darwin stuff 2025-12-29 10:16:31 +01:00
Arnie 4c7d1aabea Add tree 2025-12-14 21:57:38 +01:00
Arnie 43fe34151a Update becky 2025-12-14 20:10:10 +01:00
Arnie ebcc853148 Fix pinentry for linux 2025-12-08 16:05:39 +01:00
Arnie 524ccea715 Update flake 2025-12-08 16:05:28 +01:00
Arnie 5c15c6885d Update flakes 2025-11-09 21:35:53 +01:00
arnie 7e2ae203da veracode gov stage access 2025-09-04 17:03:40 +02:00
14 changed files with 406 additions and 188 deletions
+1
View File
@@ -52,6 +52,7 @@ in
git
coreutils
vim
flameshot
wireguard-tools
];
+1 -1
View File
@@ -6,11 +6,11 @@
# these need to be updated manually
homebrew.casks = [
"drawio"
"flameshot"
"ghostty"
"keepassxc"
"spotify"
"wireshark-chmodbpf"
"visual-studio-code"
];
system.primaryUser = "lcech";
Generated
+164 -25
View File
@@ -1,12 +1,18 @@
{
"nodes": {
"cl-nix-lite": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs",
"systems": "systems",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1728174978,
"narHash": "sha256-Grqqg+xuicANB85j0gNEXxi9SBKY7bzGeTuyi95eGcY=",
"lastModified": 1766810506,
"narHash": "sha256-I4BxozsEu205tA7jazufztI8ZQ5p7hcCnjqrSKPz9nI=",
"owner": "hraban",
"repo": "cl-nix-lite",
"rev": "31cfe6275c341eb3120a99f4b1c8516c49a29d87",
"rev": "038e341cede255a83a8f04af114dc95717461d32",
"type": "github"
},
"original": {
@@ -32,6 +38,24 @@
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1765835352,
"narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "a34fae9c08a15ad73f295041fec82323541400a9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": [
@@ -54,7 +78,7 @@
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
"systems": "systems_3"
},
"locked": {
"lastModified": 1731533236,
@@ -77,11 +101,11 @@
]
},
"locked": {
"lastModified": 1752093218,
"narHash": "sha256-+3rXu8ewcNDi65/2mKkdSGrivQs5zEZVp5aYszXC0d0=",
"lastModified": 1766980997,
"narHash": "sha256-oegDNAvyQwaG3GqSi4U5jpKM7SYHGESGVIuKMRV/lbw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "206ed3c71418b52e176f16f58805c96e84555320",
"rev": "7a7b43c7231a439d248179ba8d561dd6cd81799b",
"type": "github"
},
"original": {
@@ -98,14 +122,15 @@
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
"systems": "systems_2",
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1742156590,
"narHash": "sha256-aTM/2CrNN5utdVEQGsOA+kl4UozgH7VPLBQL5OXtBrg=",
"lastModified": 1766810876,
"narHash": "sha256-VPElWFQIiP31lXQXEom+L4sl85alZpZn33O4hewsP9k=",
"owner": "hraban",
"repo": "mac-app-util",
"rev": "341ede93f290df7957047682482c298e47291b4d",
"rev": "4747968574ea58512c5385466400b2364c85d2d0",
"type": "github"
},
"original": {
@@ -121,11 +146,11 @@
]
},
"locked": {
"lastModified": 1751313918,
"narHash": "sha256-HsJM3XLa43WpG+665aGEh8iS8AfEwOIQWk3Mke3e7nk=",
"lastModified": 1766784396,
"narHash": "sha256-rIlgatT0JtwxsEpzq+UrrIJCRfVAXgbYPzose1DmAcM=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "e04a388232d9a6ba56967ce5b53a8a6f713cdfcf",
"rev": "f0c8e1f6feb562b5db09cee9fb566a2f989e6b55",
"type": "github"
},
"original": {
@@ -142,11 +167,11 @@
]
},
"locked": {
"lastModified": 1752054764,
"narHash": "sha256-Ob/HuUhANoDs+nvYqyTKrkcPXf4ZgXoqMTQoCK0RFgQ=",
"lastModified": 1762090880,
"narHash": "sha256-fbRQzIGPkjZa83MowjbD2ALaJf9y6KMDdJBQMKFeY/8=",
"owner": "nix-community",
"repo": "nixGL",
"rev": "a8e1ce7d49a149ed70df676785b07f63288f53c5",
"rev": "b6105297e6f0cd041670c3e8628394d4ee247ed5",
"type": "github"
},
"original": {
@@ -157,11 +182,74 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1751949589,
"narHash": "sha256-mgFxAPLWw0Kq+C8P3dRrZrOYEQXOtKuYVlo9xvPntt8=",
"lastModified": 1766736597,
"narHash": "sha256-BASnpCLodmgiVn0M1MU2Pqyoz0aHwar/0qLkp7CjvSQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "f560ccec6b1116b22e6ed15f4c510997d99d5852",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1765674936,
"narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1761236834,
"narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1761236834,
"narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1766870016,
"narHash": "sha256-fHmxAesa6XNqnIkcS6+nIHuEmgd/iZSP/VXxweiEuQw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9b008d60392981ad674e04016d25619281550a9d",
"rev": "5c2bc52fb9f8c264ed6c93bd20afa2ff5e763dce",
"type": "github"
},
"original": {
@@ -181,11 +269,11 @@
]
},
"locked": {
"lastModified": 1748196248,
"narHash": "sha256-1iHjsH6/5UOerJEoZKE+Gx1BgAoge/YcnUsOA4wQ/BU=",
"lastModified": 1763909441,
"narHash": "sha256-56LwV51TX/FhgX+5LCG6akQ5KrOWuKgcJa+eUsRMxsc=",
"owner": "nix-community",
"repo": "plasma-manager",
"rev": "b7697abe89967839b273a863a3805345ea54ab56",
"rev": "b24ed4b272256dfc1cc2291f89a9821d5f9e14b4",
"type": "github"
},
"original": {
@@ -200,11 +288,26 @@
"mac-app-util": "mac-app-util",
"nix-darwin": "nix-darwin",
"nixgl": "nixgl",
"nixpkgs": "nixpkgs",
"nixpkgs": "nixpkgs_4",
"plasma-manager": "plasma-manager"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1689347925,
"narHash": "sha256-ozenz5bFe1UUqOn7f60HRmgc01BgTGIKZ4Xl+HbocGQ=",
@@ -219,7 +322,7 @@
"type": "github"
}
},
"systems_2": {
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@@ -233,6 +336,42 @@
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1766000401,
"narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1766000401,
"narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",
+18 -3
View File
@@ -52,7 +52,8 @@
function (
import nixpkgs {
inherit system;
config.allowUnfreePredicate = (pkg: builtins.elem (nixpkgs.lib.getName pkg) [ "nvidia" ]);
config.allowUnfreePredicate = (pkg: builtins.elem (nixpkgs.lib.getName pkg) [ "nvidia" "claude-code" ]);
config.allowUnfree = true;
}
)
);
@@ -81,7 +82,7 @@
inherit pkgs;
modules = [
inputs.plasma-manager.homeManagerModules.plasma-manager
inputs.plasma-manager.homeModules.plasma-manager
./home-manager/common.nix
./home-manager/becky-dingleberry.nix
];
@@ -106,7 +107,21 @@
(
{ ... }:
{
nixpkgs.overlays = [ overlay ];
nixpkgs.overlays = [
overlay
(
self: super:
let
nixpkgsWithFree = import nixpkgs {
system = "aarch64-darwin";
config.allowUnfree = true;
};
in
{
claude-code = nixpkgsWithFree.claude-code;
}
)
];
}
)
mac-app-util.darwinModules.default
+68 -13
View File
@@ -46,6 +46,7 @@ in
"application/xhtml+xml" = "userapp-Firefox-5T0SK2.desktop";
"application/x-extension-xhtml" = "userapp-Firefox-5T0SK2.desktop";
"application/x-extension-xht" = "userapp-Firefox-5T0SK2.desktop";
"x-scheme-handler/lmstudio" = "LM Studio.desktop";
};
enable = true;
};
@@ -54,8 +55,8 @@ in
# };
};
nixGL.packages = pkgs.nixgl;
nixGL.defaultWrapper = "nvidia";
targets.genericLinux.nixGL.packages = pkgs.nixgl;
targets.genericLinux.nixGL.defaultWrapper = "nvidia";
home.username = username;
@@ -65,7 +66,9 @@ in
home.packages = with pkgs; [
android-tools
android-udev-rules
direnv
nix-direnv
kdePackages.kdeconnect-kde
# TODO: Move from system to nix
# awscli2
# kubectl
@@ -73,6 +76,17 @@ in
tcpdump
];
home.file = {
"${homedir}/.gnupg/gpg-agent.conf" = {
text = ''
default-cache-ttl 34560000
max-cache-ttl 34560000
allow-loopback-pinentry
pinentry-program ${pkgs.pinentry-curses}/bin/pinentry
'';
};
};
xdg.configFile = lib.mkMerge [
{
"ghostty/config" = {
@@ -89,7 +103,7 @@ in
}
];
# TODO: Manual ghostty injection
# TODO: Manual ghostty injectionF
programs.bat.syntaxes.ghostty = {
src = pkgs.ghostty;
file = "share/bat/syntaxes/ghostty.sublime-syntax";
@@ -99,15 +113,11 @@ in
programs.git = {
enable = true;
userName = "Arnie";
userEmail = "i@cechis.cz";
ignores = [
".vscode"
".direnv"
".devenv"
".envrc"
];
extraConfig = {
settings = {
user = {
name = "Arnie";
email = "i@cechis.cz";
};
core = {
autocrlf = "input";
# TODO: Provide through nix
@@ -119,6 +129,37 @@ in
init.defaultBranch = "main";
};
ignores = [
".vscode"
".direnv"
".devenv"
".envrc"
];
signing = {
signByDefault = true;
key = "892F43F4";
};
};
# Generate key wth gpg --full-gen-key
# Kind of key: 10 ECC sign only, curve 25519
# Real name: <username>
# Email address: <email>
# Add to git: gpg --list-secret-keys --keyid-format SHORT
# get the bit after the key kind and put it in the signing.key in git config above
# gpg --armor --export <KEY> and add to git account
programs.gpg = {
enable = true;
settings = {
use-agent = true;
pinentry-mode = "loopback";
};
mutableKeys = false;
publicKeys = [ ];
};
# Can't use the nixgl wrapper due to GTK libraries
@@ -217,6 +258,19 @@ in
"Switch One Desktop to the Left" = "none";
"Edit Tiles" = "none";
# "MoveMouseToCenter" = "Meta+F6,Meta+F6,Move Mouse to Center";
"MoveMouseToCenter" = "none";
# "MoveMouseToFocus" = "Meta+F5,Meta+F5,Move Mouse to Focus";
"MoveMouseToFocus" = "none";
# "Switch to Screen 0" = "none,,Switch to Screen 0";
"Switch to Screen 0" = "Meta+Ctrl+Alt+0";
# "Switch to Screen 1" = "none,,Switch to Screen 1";
"Switch to Screen 1" = "Meta+Ctrl+Alt+1";
# "Switch to Screen 2" = "none,,Switch to Screen 2";
"Switch to Screen 2" = "Meta+Ctrl+Alt+2";
};
plasmashell = {
@@ -253,6 +307,7 @@ in
vysokyujezd = "${homedir}/storage/.life/stavby/vysoky-ujezd";
work = "/mnt/yosuke/share/arnie/work";
smarthome = "/mnt/yosuke/share/arnie/smarthome";
lab = "/mnt/storage/.lab";
# Hardware
v2-red = "${homedir}/storage/.hardware/3d-print/v2-red-V2-2201270017";
+2 -1
View File
@@ -15,8 +15,9 @@
awscli2
kubectl
nixd
yq
tree
viu
yq
];
# Let Home Manager install and manage itself.
+3 -1
View File
@@ -29,7 +29,9 @@
echo "Commands:"
echo -n '${
builtins.toJSON (
builtins.mapAttrs (s: value: value.description) self.devShells.${pkgs.system}.default.config.scripts
builtins.mapAttrs (
s: value: value.description
) self.devShells.${pkgs.stdenv.hostPlatform.system}.default.config.scripts
)
}' | \
${pkgs.jq}/bin/jq -r 'to_entries | map(" \(.key)\n" + " - \(if .value == "" then "no description provided" else .value end)") | "" + .[]'
@@ -12,31 +12,27 @@ return (function()
license = "MIT";
}
-- DELL S2722DGM: 0F6BDB5B-840D-40BE-AAC9-B467A78E057A
-- DELL S2722DGM: 394ACDEE-CA25-43C4-A533-D4EDF4A897AF
-- DELL S2721DGF: D3142823-261D-46EF-B9C2-5181C7FE2CA5
-- AV Receiver: B5A65BB6-E73E-4C3D-977C-33C86798AA5A
-- AV Receiver: B5845603-D54C-44B8-9B55-96F7E5F50646
local appScreenMap = {
Slack = {
desktop = 1,
screen = "0F6BDB5B-840D-40BE-AAC9-B467A78E057A",
screen = "394ACDEE-CA25-43C4-A533-D4EDF4A897AF",
fullscreen = true,
},
Cursor = {
Code = {
desktop = 1,
screen = "B5A65BB6-E73E-4C3D-977C-33C86798AA5A",
screen = "D3142823-261D-46EF-B9C2-5181C7FE2CA5",
fullscreen = true,
},
Notes = {
desktop = 2,
screen = "B5A65BB6-E73E-4C3D-977C-33C86798AA5A"
},
Spotify = {
desktop = 3,
screen = "B5A65BB6-E73E-4C3D-977C-33C86798AA5A",
desktop = 2,
screen = "D3142823-261D-46EF-B9C2-5181C7FE2CA5",
fullscreen = true,
},
["zoom.us"] = {
screen = "B5A65BB6-E73E-4C3D-977C-33C86798AA5A",
screen = "D3142823-261D-46EF-B9C2-5181C7FE2CA5",
fullscreen = true,
},
["Microsoft Outlook"] = {
+4 -4
View File
@@ -35,7 +35,7 @@ windowMove = function()
hs.hotkey.bind({ "ctrl", "alt", "cmd" }, "pad1", function()
-- DELL S2722DGM
local scr = getScreenById("0F6BDB5B-840D-40BE-AAC9-B467A78E057A")
local scr = getScreenById("394ACDEE-CA25-43C4-A533-D4EDF4A897AF")
if scr == nil then
return
end
@@ -63,7 +63,7 @@ windowMove = function()
hs.hotkey.bind({ "ctrl", "alt", "cmd" }, "pad3", function()
-- AV Receiver
local scr = getScreenById("B5A65BB6-E73E-4C3D-977C-33C86798AA5A")
local scr = getScreenById("B5845603-D54C-44B8-9B55-96F7E5F50646")
if scr == nil then
return
end
@@ -79,7 +79,7 @@ windowMove = function()
hs.hotkey.bind({ "ctrl", "alt", "cmd", "shift" }, "pad1", function()
-- DELL S2722DGM
local scr = getScreenById("0F6BDB5B-840D-40BE-AAC9-B467A78E057A")
local scr = getScreenById("394ACDEE-CA25-43C4-A533-D4EDF4A897AF")
if scr == nil then
return
end
@@ -109,7 +109,7 @@ windowMove = function()
hs.hotkey.bind({ "ctrl", "alt", "cmd", "shift" }, "pad3", function()
-- AV Receiver
local scr = getScreenById("B5A65BB6-E73E-4C3D-977C-33C86798AA5A")
local scr = getScreenById("B5845603-D54C-44B8-9B55-96F7E5F50646")
if scr == nil then
return
end
+17 -7
View File
@@ -32,11 +32,13 @@ in
home.stateVersion = "24.11";
home.packages = with pkgs; [
hammerspoon
pstree
watch
claude-code
colima
docker
hammerspoon
pstree
ssm-session-manager-plugin
watch
wireshark-qt
];
@@ -69,6 +71,9 @@ in
User becky
Hostname 10.196.196.5
IdentityFile ~/.ssh/id_ed25519_access
host gitlab.veracode-staging.us
IdentityFile ~/.ssh/id_rsa_fedramp
'';
};
@@ -96,8 +101,6 @@ in
programs.git = {
enable = true;
userName = gitUsername;
userEmail = gitEmail;
ignores = [
".vscode"
@@ -111,7 +114,10 @@ in
key = "5ABD6C5E";
};
extraConfig = {
settings = {
user.name = gitUsername;
user.email = gitEmail;
core = {
autocrlf = "input";
editor = "vim";
@@ -178,6 +184,7 @@ in
shellAliases = {
hammerspoon-config = "open -a ${pkgs.hammerspoon}/Applications/Hammerspoon.app/Contents/MacOS/Hammerspoon";
get-key = "${pkgs.writeShellScript "get-key" ''
set -e
scp dingleberry:/self/hintihint/keys/sum.key ${homedir}/hw.key
read -p "waiting for confirmation to delete the key"
rm ${homedir}/hw.key
@@ -192,12 +199,15 @@ in
fi
fi
if [[ $(dig +short myip.opendns.com @resolver1.opendns.com) == "185.142.210.84" ]]; then
if [[ "$(ipconfig getifaddr en0)" =~ "10.125.24" ]]; then
sudo wg-quick up /etc/wireguard/home.conf
else
sudo wg-quick up /etc/wireguard/home-remote.conf
fi
''}";
ssm = "${pkgs.writeShellScript "ssm" ''
aws --profile $1 --region ''${3:-us-east-1} ssm start-session --target $2
''}";
};
initContent = ''
+1 -2
View File
@@ -21,8 +21,7 @@ in
size = 10000;
};
shellAliases =
{
shellAliases = {
# use eval $(aws-export-credentials) to expose them to environment
aws-export-credentials = lib.mkDefault "${pkgs.awscli2}/bin/aws configure export-credentials --format env --profile";
+1 -1
View File
@@ -1,4 +1,4 @@
theme = "catppuccin-mocha"
theme = "Catppuccin Mocha"
window-width = 9999
window-height = 9999
+2 -2
View File
@@ -2,8 +2,8 @@
okta_org_url = https://govus-staging-veracode.okta.com
gimme_creds_server = appurl
aws_rolename = arn:aws-us-gov:iam::403885414333:role/Corp-Engineer
write_aws_creds = False
cred_profile = role
write_aws_creds = True
cred_profile = 403885414333-Corp-Engineer
okta_username = lcech@veracode.com
app_url = https://govus-staging-veracode.okta.com/home/amazon_aws/0oame0n0rGjDo9BvZ4h6/272
resolve_aws_alias = False
+5 -5
View File
@@ -560,11 +560,6 @@ in
];
programs.zsh.shellAliases = {
export-aws-govus-stage = ''${pkgs.writeShellScript "export-aws-govus-stage" ''
gimme-aws-creds --profile govus-stage
echo "export AWS_REGION=us-gov-west-1"
''}'';
veracode-find = ''${pkgs.writeShellScript "veracode-find" ''
for profile in $(aws configure list-profiles | grep -E '^(us|eu|old-world|longbow)-'); do
echo "=== $profile ==="
@@ -607,5 +602,10 @@ in
aws sso login --profile old-world-aws-devops &
aws sso login --profile longbow-SharedServices &
''}'';
veracode-login-govus-stage = ''${pkgs.writeShellScript "export-aws-govus-stage" ''
gimme-aws-creds --profile govus-stage
${pkgs.gnugrep}/bin/grep "^\[403885414333-Corp-Engineer\]" -A1 ${homedir}/.aws/credentials | ${pkgs.coreutils}/bin/tail -n 1 | ${pkgs.gnugrep}/bin/grep -q "region" || ${pkgs.gnused}/bin/sed -i '/^\[403885414333-Corp-Engineer\]$/a region = us-gov-west-1' ${homedir}/.aws/credentials
''}'';
};
}