Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a5326cad04 |
@@ -1,70 +0,0 @@
|
|||||||
name: t3code update
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "50 6 * * *"
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update-t3code:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: install nix
|
|
||||||
uses: cachix/install-nix-action@v27
|
|
||||||
with:
|
|
||||||
nix_path: nixpkgs=channel:nixos-unstable
|
|
||||||
|
|
||||||
- name: check latest t3code release and update file
|
|
||||||
id: update
|
|
||||||
env:
|
|
||||||
FILE: modules/pkgs/t3code.nix
|
|
||||||
LATEST_RELEASE_URL: https://github.com/pingdotgg/t3code/releases/latest
|
|
||||||
DOWNLOAD_URL_TEMPLATE: https://github.com/pingdotgg/t3code/releases/download/v{version}/T3-Code-{version}-x86_64.AppImage
|
|
||||||
RELEASE_TAG_TEMPLATE: v{version}
|
|
||||||
shell: bash
|
|
||||||
run: bash .gitea/scripts/update-appimage-nix.sh
|
|
||||||
|
|
||||||
- name: create branch and commit
|
|
||||||
if: steps.update.outputs.updated == 'true'
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
version="${{ steps.update.outputs.version }}"
|
|
||||||
|
|
||||||
BRANCH="bot/t3code-${version}" \
|
|
||||||
FILE="modules/pkgs/t3code.nix" \
|
|
||||||
COMMIT_MESSAGE="update t3code to ${version}" \
|
|
||||||
bash .gitea/scripts/commit-update.sh
|
|
||||||
|
|
||||||
- name: open pull request
|
|
||||||
if: steps.update.outputs.updated == 'true'
|
|
||||||
env:
|
|
||||||
GITEA_TOKEN: ${{ secrets.tea_token || secrets.TEA_TOKEN }}
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
version="${{ steps.update.outputs.version }}"
|
|
||||||
previous_version="${{ steps.update.outputs.previous_version }}"
|
|
||||||
release_url="${{ steps.update.outputs.release_url }}"
|
|
||||||
|
|
||||||
pr_body=$(cat <<EOF
|
|
||||||
automated update of t3code appimage version and hash
|
|
||||||
|
|
||||||
## changelog
|
|
||||||
from \`${previous_version}\` to \`${version}\`
|
|
||||||
|
|
||||||
upstream release: ${release_url}
|
|
||||||
EOF
|
|
||||||
)
|
|
||||||
|
|
||||||
GITEA_API="https://gitea.unrail.xyz/api/v1/repos/thomas/nixos-config" \
|
|
||||||
BRANCH="bot/t3code-${version}" \
|
|
||||||
TITLE="update t3code to ${version}" \
|
|
||||||
BODY="$pr_body" \
|
|
||||||
bash .gitea/scripts/create-gitea-pr.sh
|
|
||||||
Generated
+7
-92
@@ -63,43 +63,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gsf": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": "nixpkgs_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1774464988,
|
|
||||||
"narHash": "sha256-F0pVG3ou+yN+jqQlFXMf27BCeShDuZcpoeHFSord8xk=",
|
|
||||||
"ref": "refs/heads/main",
|
|
||||||
"rev": "3bccad3870d1f7220c423f06d21ed9b91d1b90d1",
|
|
||||||
"revCount": 10,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitea.unrail.xyz/thomas/gotta-scroll-fast"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitea.unrail.xyz/thomas/gotta-scroll-fast"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -123,11 +86,11 @@
|
|||||||
},
|
},
|
||||||
"import-tree": {
|
"import-tree": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773693634,
|
"lastModified": 1772999353,
|
||||||
"narHash": "sha256-BtZ2dtkBdSUnFPPFc+n0kcMbgaTxzFNPv2iaO326Ffg=",
|
"narHash": "sha256-dPb0WxUhFaz6wuR3B6ysqFJpsu8txKDPZvS47AT2XLI=",
|
||||||
"owner": "vic",
|
"owner": "vic",
|
||||||
"repo": "import-tree",
|
"repo": "import-tree",
|
||||||
"rev": "c41e7d58045f9057880b0d85e1152d6a4430dbf1",
|
"rev": "545a4df146fce44d155573e47f5a777985acf912",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -136,21 +99,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maccel": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1771614512,
|
|
||||||
"narHash": "sha256-KzvNWDGVpoNcR9wcIOlwxr6Nwtgt9Hicck/0fswhi7U=",
|
|
||||||
"owner": "Gnarus-G",
|
|
||||||
"repo": "maccel",
|
|
||||||
"rev": "c7c1369d4bd4f240b38365cd43bd696d06635e4d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Gnarus-G",
|
|
||||||
"repo": "maccel",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754028485,
|
"lastModified": 1754028485,
|
||||||
@@ -169,27 +117,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774106199,
|
"lastModified": 1772773019,
|
||||||
"narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=",
|
"narHash": "sha256-E1bxHxNKfDoQUuvriG71+f+s/NT0qWkImXsYZNFFfCs=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6c9a78c09ff4d6c21d0319114873508a6ec01655",
|
"rev": "aca4d95fce4914b3892661bcb80b8087293536c6",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1774106199,
|
|
||||||
"narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "6c9a78c09ff4d6c21d0319114873508a6ec01655",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -203,10 +135,8 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"gsf": "gsf",
|
|
||||||
"import-tree": "import-tree",
|
"import-tree": "import-tree",
|
||||||
"maccel": "maccel",
|
"nixpkgs": "nixpkgs_2"
|
||||||
"nixpkgs": "nixpkgs_3"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
@@ -223,21 +153,6 @@
|
|||||||
"repo": "default",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"systems_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
@@ -10,8 +10,6 @@
|
|||||||
|
|
||||||
import-tree.url = "github:vic/import-tree";
|
import-tree.url = "github:vic/import-tree";
|
||||||
agenix.url = "github:ryantm/agenix";
|
agenix.url = "github:ryantm/agenix";
|
||||||
maccel.url = "github:Gnarus-G/maccel";
|
|
||||||
gsf.url = "git+https://gitea.unrail.xyz/thomas/gotta-scroll-fast";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
|
|||||||
@@ -1,11 +1,5 @@
|
|||||||
{config, ...}: let
|
{inputs, ...}: {
|
||||||
flakeConfig = config;
|
|
||||||
in {
|
|
||||||
flake.nixosModules.development = {pkgs, ...}: {
|
flake.nixosModules.development = {pkgs, ...}: {
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
|
|
||||||
users.users.${flakeConfig.username}.extraGroups = ["docker"];
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
nodejs_24
|
nodejs_24
|
||||||
go
|
go
|
||||||
@@ -18,8 +12,6 @@ in {
|
|||||||
lazygit
|
lazygit
|
||||||
pnpm
|
pnpm
|
||||||
ni
|
ni
|
||||||
code-cursor-fhs
|
|
||||||
codex
|
|
||||||
|
|
||||||
# LSPs and formatters (previously via Mason)
|
# LSPs and formatters (previously via Mason)
|
||||||
stylua
|
stylua
|
||||||
|
|||||||
+1
-49
@@ -14,13 +14,9 @@ in {
|
|||||||
}: let
|
}: let
|
||||||
smbSecretFile = ../../secrets/smb-credentials.age;
|
smbSecretFile = ../../secrets/smb-credentials.age;
|
||||||
hasSmbSecret = builtins.pathExists smbSecretFile;
|
hasSmbSecret = builtins.pathExists smbSecretFile;
|
||||||
|
|
||||||
gsfDevice = "/dev/input/by-id/usb-Ploopy_Corporation_Ploopy_Adept_Trackball_E6626067D39C532A0000000000000000-if02-event-mouse";
|
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.agenix.nixosModules.default
|
inputs.agenix.nixosModules.default
|
||||||
inputs.maccel.nixosModules.default
|
|
||||||
inputs.gsf.nixosModules.default
|
|
||||||
../../hardware-configuration.nix
|
../../hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -43,24 +39,7 @@ in {
|
|||||||
networking.hostName = "nixos";
|
networking.hostName = "nixos";
|
||||||
|
|
||||||
# Networking
|
# Networking
|
||||||
networking.networkmanager = {
|
networking.networkmanager.enable = true;
|
||||||
enable = true;
|
|
||||||
wifi.powersave = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# LocalSend
|
|
||||||
networking.firewall = {
|
|
||||||
allowedTCPPorts = [53317];
|
|
||||||
allowedUDPPorts = [53317];
|
|
||||||
};
|
|
||||||
|
|
||||||
# WebHID/VIA access on Linux (VIA needs hidraw access)
|
|
||||||
services.udev.extraRules = ''
|
|
||||||
# General VIA rule (matches vial docs/reddit workaround)
|
|
||||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
|
|
||||||
# Explicit Ploopy Adept (VID:PID 5043:5c47)
|
|
||||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="5043", ATTRS{idProduct}=="5c47", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Time zone
|
# Time zone
|
||||||
time.timeZone = "Europe/Lisbon";
|
time.timeZone = "Europe/Lisbon";
|
||||||
@@ -107,29 +86,6 @@ in {
|
|||||||
extraGroups = ["networkmanager" "wheel"];
|
extraGroups = ["networkmanager" "wheel"];
|
||||||
};
|
};
|
||||||
|
|
||||||
users.groups.maccel.members = [flakeConfig.username];
|
|
||||||
|
|
||||||
hardware.maccel = {
|
|
||||||
enable = true;
|
|
||||||
enableCli = true;
|
|
||||||
parameters = {
|
|
||||||
mode = "linear";
|
|
||||||
sensMultiplier = 1.0;
|
|
||||||
yxRatio = 1.0;
|
|
||||||
inputDpi = 1000.0;
|
|
||||||
angleRotation = 0.0;
|
|
||||||
acceleration = 0.3;
|
|
||||||
offset = 2.0;
|
|
||||||
outputCap = 2.0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.gsf = {
|
|
||||||
enable = true;
|
|
||||||
device = gsfDevice;
|
|
||||||
inputGroupUsers = [flakeConfig.username];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Programs
|
# Programs
|
||||||
|
|
||||||
# Allow unfree
|
# Allow unfree
|
||||||
@@ -176,9 +132,7 @@ in {
|
|||||||
"gid=1000"
|
"gid=1000"
|
||||||
"iocharset=utf8"
|
"iocharset=utf8"
|
||||||
"nofail"
|
"nofail"
|
||||||
"x-systemd.automount"
|
|
||||||
"_netdev"
|
"_netdev"
|
||||||
"noserverino"
|
|
||||||
"vers=3.0"
|
"vers=3.0"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
@@ -192,9 +146,7 @@ in {
|
|||||||
"gid=1000"
|
"gid=1000"
|
||||||
"iocharset=utf8"
|
"iocharset=utf8"
|
||||||
"nofail"
|
"nofail"
|
||||||
"x-systemd.automount"
|
|
||||||
"_netdev"
|
"_netdev"
|
||||||
"noserverino"
|
|
||||||
"vers=3.0"
|
"vers=3.0"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -19,28 +19,13 @@
|
|||||||
slack
|
slack
|
||||||
feishin
|
feishin
|
||||||
obsidian
|
obsidian
|
||||||
nextcloud-client
|
|
||||||
self.packages.${pkgs.stdenv.hostPlatform.system}.handy
|
self.packages.${pkgs.stdenv.hostPlatform.system}.handy
|
||||||
self.packages.${pkgs.stdenv.hostPlatform.system}.t3code
|
|
||||||
mpv
|
mpv
|
||||||
ffmpeg
|
ffmpeg
|
||||||
tmux
|
tmux
|
||||||
obs-studio
|
obs-studio
|
||||||
jjui
|
jjui
|
||||||
bat
|
bat
|
||||||
localsend
|
|
||||||
];
|
];
|
||||||
|
|
||||||
systemd.user.services.handy = {
|
|
||||||
description = "Handy";
|
|
||||||
wantedBy = ["graphical-session.target"];
|
|
||||||
partOf = ["graphical-session.target"];
|
|
||||||
after = ["graphical-session.target"];
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = "${self.packages.${pkgs.stdenv.hostPlatform.system}.handy}/bin/handy";
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartSec = 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
perSystem = {pkgs, ...}: {
|
perSystem = {pkgs, ...}: {
|
||||||
packages.handy = pkgs.appimageTools.wrapType2 rec {
|
packages.handy = pkgs.appimageTools.wrapType2 rec {
|
||||||
pname = "handy";
|
pname = "handy";
|
||||||
version = "0.8.0";
|
version = "0.7.10";
|
||||||
|
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://github.com/cjpais/Handy/releases/download/v${version}/Handy_${version}_amd64.AppImage";
|
url = "https://github.com/cjpais/Handy/releases/download/v${version}/Handy_${version}_amd64.AppImage";
|
||||||
hash = "sha256-PLcssfd6iMx51mglAJ7D4+67HFazwfhJMImgU9WiNDk=";
|
hash = "sha256-vBOcXCCJr9D0u0h27nN4XLPPngx4m+toAfi6O6Fuojk=";
|
||||||
};
|
};
|
||||||
|
|
||||||
extraInstallCommands = let
|
extraInstallCommands = let
|
||||||
@@ -17,7 +17,6 @@
|
|||||||
install -m 444 -D "$desktop_file" "$out/share/applications/${pname}.desktop"
|
install -m 444 -D "$desktop_file" "$out/share/applications/${pname}.desktop"
|
||||||
substituteInPlace "$out/share/applications/${pname}.desktop" \
|
substituteInPlace "$out/share/applications/${pname}.desktop" \
|
||||||
--replace 'Exec=AppRun' 'Exec=${pname}' || true
|
--replace 'Exec=AppRun' 'Exec=${pname}' || true
|
||||||
sed -i -E 's|^Exec=.*$|Exec=${pname}|g' "$out/share/applications/${pname}.desktop" || true
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d ${contents}/usr/share/icons ]; then
|
if [ -d ${contents}/usr/share/icons ]; then
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
perSystem = { pkgs, ... }: {
|
perSystem = { pkgs, ... }: {
|
||||||
packages.helium = pkgs.appimageTools.wrapType2 rec {
|
packages.helium = pkgs.appimageTools.wrapType2 rec {
|
||||||
pname = "helium";
|
pname = "helium";
|
||||||
version = "0.10.6.1";
|
version = "0.10.5.1";
|
||||||
|
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://github.com/imputnet/helium-linux/releases/download/${version}/${pname}-${version}-x86_64.AppImage";
|
url = "https://github.com/imputnet/helium-linux/releases/download/${version}/${pname}-${version}-x86_64.AppImage";
|
||||||
hash = "sha256-6xqNRaP3aqitEseexRVEEjKkJClC0j1HHZoRGQanhSk=";
|
hash = "sha256-c/ea8C1XjTkBo0/ujGHEbKWyCmRMxyuiuOzAO9AMf1o=";
|
||||||
};
|
};
|
||||||
|
|
||||||
extraInstallCommands = let
|
extraInstallCommands = let
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
{lib, ...}: {
|
|
||||||
perSystem = {pkgs, ...}: {
|
|
||||||
packages.t3code = pkgs.appimageTools.wrapType2 rec {
|
|
||||||
pname = "t3code";
|
|
||||||
version = "0.0.15";
|
|
||||||
|
|
||||||
src = pkgs.fetchurl {
|
|
||||||
url = "https://github.com/pingdotgg/t3code/releases/download/v${version}/T3-Code-${version}-x86_64.AppImage";
|
|
||||||
hash = "sha256-Z8y7SWH55+ZC7cRpgo0cdG273rbDiFS3pXQt3up7sDg=";
|
|
||||||
};
|
|
||||||
|
|
||||||
extraInstallCommands = let
|
|
||||||
contents = pkgs.appimageTools.extract {inherit pname version src;};
|
|
||||||
in ''
|
|
||||||
desktop_file=$(find ${contents} -name "*.desktop" | head -n1)
|
|
||||||
if [ -n "$desktop_file" ]; then
|
|
||||||
install -m 444 -D "$desktop_file" "$out/share/applications/${pname}.desktop"
|
|
||||||
substituteInPlace "$out/share/applications/${pname}.desktop" \
|
|
||||||
--replace 'Exec=AppRun' 'Exec=${pname}' \
|
|
||||||
--replace 'Exec=T3-Code' 'Exec=${pname}' \
|
|
||||||
--replace 'Exec=t3-code' 'Exec=${pname}' || true
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d ${contents}/usr/share/icons ]; then
|
|
||||||
cp -r ${contents}/usr/share/icons $out/share
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
description = "T3 Chat Desktop";
|
|
||||||
homepage = "https://t3.codes";
|
|
||||||
license = lib.licenses.mit;
|
|
||||||
platforms = ["x86_64-linux"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user