Compare commits
7 Commits
64490404ed
...
e3265f95ad
Author | SHA1 | Date | |
---|---|---|---|
e3265f95ad | |||
72b7d257dc | |||
866535045f | |||
95a96882b0 | |||
f981ff5bf6 | |||
2fc002db23 | |||
13fcaa6622 |
40
flake.lock
40
flake.lock
@ -20,11 +20,11 @@
|
|||||||
},
|
},
|
||||||
"emacs": {
|
"emacs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1647827912,
|
"lastModified": 1648981401,
|
||||||
"narHash": "sha256-q3sEAJe+nAlWp0kVSqPdGSvhwG9+i1Ppm+BMNnU76Ok=",
|
"narHash": "sha256-7+L/vxg1g5QRl4XKPO5+awlubD5iRgqY7LG4Ag9Pasw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "emacs-overlay",
|
"repo": "emacs-overlay",
|
||||||
"rev": "ccb4f7c6af0b2dc5c02aec6f28d5cffb199087c4",
|
"rev": "8704d61679ea1025fa16f612579f80263c96c321",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -56,11 +56,11 @@
|
|||||||
},
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1644229661,
|
"lastModified": 1648297722,
|
||||||
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
|
"narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
|
"rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -134,11 +134,11 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1647821523,
|
"lastModified": 1648917498,
|
||||||
"narHash": "sha256-NAIY357pAOcxK6bAt83kKEJ2LxZhLCiPIlmQ2iTQbk4=",
|
"narHash": "sha256-fdyVHsP6XeyCk9FRyjV6Wv+7qiOzWxykGXdNixadvyg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "835797f3a4a59459a316ae8d4ab91fa59faf61a4",
|
"rev": "cfab869fcebc56710be6ec3aca76036b25c04a0d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -267,11 +267,11 @@
|
|||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1647447644,
|
"lastModified": 1648141026,
|
||||||
"narHash": "sha256-Di7ZCXjQKEys+jxgl8Mp7a8nowRSeAbzH8c9QNYkw2k=",
|
"narHash": "sha256-h8e3+5EZFbYHTMb0DN2ACuQTJBNHpqigvmEV1w2WIuE=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "32f61571b486efc987baca553fb35df22532ba63",
|
"rev": "feceb4d24f582817d8f6e737cd40af9e162dee05",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -299,8 +299,8 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"narHash": "sha256-ulGq3W5XsrBMU/u5k9d4oPy65pQTkunR4HKKtTq0RwY=",
|
"narHash": "sha256-rjwoxrk16zfrcO5Torh6CbAd5GHsHrXw+EwxOvh9AUI=",
|
||||||
"path": "/nix/store/f71alr07xb2swc37fiqjr5h416qcs6wr-source",
|
"path": "/nix/store/33zgpp4aj1qyfwnlaspj8mypvv0sjpyw-source",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -326,11 +326,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1647800324,
|
"lastModified": 1648632716,
|
||||||
"narHash": "sha256-rjwoxrk16zfrcO5Torh6CbAd5GHsHrXw+EwxOvh9AUI=",
|
"narHash": "sha256-kCmnDeiaMsdhfnNKjxdOzwRh2H6eQb8yWAL+nNabC/Y=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9bc841fec1c0e8b9772afa29f934d2c7ce57da8e",
|
"rev": "710fed5a2483f945b14f4a58af2cd3676b42d8c8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -445,11 +445,11 @@
|
|||||||
},
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1647843981,
|
"lastModified": 1649000089,
|
||||||
"narHash": "sha256-Ug5krnnJc/OVkLpnEhfBRoosLXJ6HYnHa2nw7cppHXw=",
|
"narHash": "sha256-aY1kwpteyXJ6nT3FibGBpeSIvVHI/6Wskh48HpQpFig=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nur",
|
"repo": "nur",
|
||||||
"rev": "0367c3938355bf4b92b9ad15acd4658b46b6b23a",
|
"rev": "1221f32068c2401276c023d91ae7e9fe26f95926",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
miku = mkSystem {
|
miku = mkSystem {
|
||||||
|
bluray = true;
|
||||||
hostConfigFile = ./hosts/miku.nix;
|
hostConfigFile = ./hosts/miku.nix;
|
||||||
};
|
};
|
||||||
mashu = mkSystem {
|
mashu = mkSystem {
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
newsflash
|
newsflash
|
||||||
sublime-music
|
sublime-music
|
||||||
anki
|
anki
|
||||||
|
gnome-podcasts
|
||||||
#psst
|
#psst
|
||||||
|
|
||||||
# Proprietary stuff (yikes)
|
# Proprietary stuff (yikes)
|
||||||
@ -48,6 +49,7 @@
|
|||||||
|
|
||||||
ptw = {
|
ptw = {
|
||||||
programs = {
|
programs = {
|
||||||
|
bluray.enable = true;
|
||||||
mpv = {
|
mpv = {
|
||||||
primaryScreen = "C27F398";
|
primaryScreen = "C27F398";
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -70,7 +72,7 @@
|
|||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
gamemode.enable = true;
|
gamemode.enable = true;
|
||||||
#gnome.enable = true;
|
gnome.enable = true;
|
||||||
input-remapper = {
|
input-remapper = {
|
||||||
enable = false;
|
enable = false;
|
||||||
postStartCommand = "${pkgs.input-remapper}/bin/input-remapper-control --command start --preset NOOP --device \"Razer Razer Tartarus V2\"";
|
postStartCommand = "${pkgs.input-remapper}/bin/input-remapper-control --command start --preset NOOP --device \"Razer Razer Tartarus V2\"";
|
||||||
|
@ -75,6 +75,9 @@ in {
|
|||||||
git-crypt
|
git-crypt
|
||||||
gnupg
|
gnupg
|
||||||
python3
|
python3
|
||||||
|
unzip
|
||||||
|
file
|
||||||
|
ripgrep
|
||||||
|
|
||||||
# General utilities
|
# General utilities
|
||||||
bandwhich bottom latencytop
|
bandwhich bottom latencytop
|
||||||
|
@ -15,6 +15,7 @@ Idea: Make miku.nix, mashu.nix, ... have the following structure
|
|||||||
{
|
{
|
||||||
hostConfigFile
|
hostConfigFile
|
||||||
, architecture ? "x86_64-linux"
|
, architecture ? "x86_64-linux"
|
||||||
|
, bluray ? false
|
||||||
}: let
|
}: let
|
||||||
pkgs = inputs.nixpkgs;
|
pkgs = inputs.nixpkgs;
|
||||||
config = pkgs.lib;
|
config = pkgs.lib;
|
||||||
@ -43,7 +44,9 @@ in inputs.nixpkgs.lib.nixosSystem {
|
|||||||
emacs.overlay
|
emacs.overlay
|
||||||
(import ../packages)
|
(import ../packages)
|
||||||
(import ../overlays/simple.nix)
|
(import ../overlays/simple.nix)
|
||||||
|
]
|
||||||
|
++ lib.optional bluray (import ../overlays/bluray.nix)
|
||||||
|
++ [
|
||||||
# Always keep sandbox.nix as the last overlay
|
# Always keep sandbox.nix as the last overlay
|
||||||
(import ../overlays/sandbox.nix)
|
(import ../overlays/sandbox.nix)
|
||||||
];
|
];
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
./programs/plasma
|
./programs/plasma
|
||||||
./programs/office
|
./programs/office
|
||||||
./programs/gaming
|
./programs/gaming
|
||||||
|
./programs/bluray
|
||||||
|
|
||||||
# Services
|
# Services
|
||||||
./services/kanshi
|
./services/kanshi
|
||||||
|
15
modules/programs/bluray/default.nix
Normal file
15
modules/programs/bluray/default.nix
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{ pkgs, config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.ptw.programs.bluray;
|
||||||
|
in {
|
||||||
|
options.ptw.programs.bluray = {
|
||||||
|
enable = lib.mkEnableOption "Enable bluray playback and decoding. Will rebuild a lot of packages";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
nixpkgs.config.overlays = [
|
||||||
|
(import ../../../overlays/bluray.nix)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
@ -1,12 +1,14 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
mkAnime4kShader = shader: "${pkgs.anime4k}/usr/share/shaders/${shader}";
|
||||||
|
mkDefaultShader = shader: "${pkgs.mpv-shader-pack}/usr/share/shaders/${shader}";
|
||||||
makeMpvProfile = { shader, additional ? {} }: {
|
makeMpvProfile = { shader, additional ? {} }: {
|
||||||
glsl-shaders = "${pkgs.anime4k}/usr/share/shaders/${shader}";
|
glsl-shaders = shader;
|
||||||
scale = "ewa_lanczossharp";
|
scale = "ewa_lanczossharp";
|
||||||
cscale = "ewa_lanczossharp";
|
cscale = "ewa_lanczossharp";
|
||||||
gpu-context = "wayland";
|
gpu-context = "wayland";
|
||||||
gpu-api = "opengl";
|
gpu-api = "vulkan";
|
||||||
hwdec = "vaapi";
|
hwdec = "vaapi";
|
||||||
vo = "gpu";
|
vo = "gpu";
|
||||||
video-sync = "display-resample";
|
video-sync = "display-resample";
|
||||||
@ -15,8 +17,7 @@ let
|
|||||||
} // additional // (if config.ptw.programs.mpv != "" then {
|
} // additional // (if config.ptw.programs.mpv != "" then {
|
||||||
# Make mpv pop up on the primary screen
|
# Make mpv pop up on the primary screen
|
||||||
screen-name = config.ptw.programs.mpv.primaryScreen;
|
screen-name = config.ptw.programs.mpv.primaryScreen;
|
||||||
fs-screen-name = config.ptw.programs.mpv.primaryScreen;
|
fs-screen-name = config.ptw.programs.mpv.primaryScreen;} else {});
|
||||||
} else {});
|
|
||||||
cfg = config.ptw.programs.mpv;
|
cfg = config.ptw.programs.mpv;
|
||||||
in {
|
in {
|
||||||
options.ptw.programs.mpv = {
|
options.ptw.programs.mpv = {
|
||||||
@ -40,13 +41,19 @@ in {
|
|||||||
defaultProfiles = [ "anime" ];
|
defaultProfiles = [ "anime" ];
|
||||||
profiles = {
|
profiles = {
|
||||||
anime = (makeMpvProfile {
|
anime = (makeMpvProfile {
|
||||||
shader = "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
||||||
additional = {
|
additional = {
|
||||||
fullscreen = "";
|
fullscreen = "";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
"anime-denoise" = (makeMpvProfile {
|
anime-denoise = (makeMpvProfile {
|
||||||
shader = "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
||||||
|
});
|
||||||
|
non-anime = (makeMpvProfile {
|
||||||
|
shader = mkDefaultShader "FSRCNNX_x2_8-0-4-1.glsl";
|
||||||
|
});
|
||||||
|
non-anime-strong = (makeMpvProfile {
|
||||||
|
shader = mkDefaultShader "FSRCNNX_x2_16-0-4-1.glsl";
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -42,7 +42,6 @@ in {
|
|||||||
libsForQt5.bismuth
|
libsForQt5.bismuth
|
||||||
#kde-rounded-corners
|
#kde-rounded-corners
|
||||||
index-fm
|
index-fm
|
||||||
#kasts-git
|
|
||||||
rsibreak
|
rsibreak
|
||||||
kalendar
|
kalendar
|
||||||
kate
|
kate
|
||||||
|
29
overlays/bluray.nix
Normal file
29
overlays/bluray.nix
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
final: prev:
|
||||||
|
|
||||||
|
let
|
||||||
|
overrideWithAACS = pkgName: prev."${pkgName}".overrideAttrs (old: {
|
||||||
|
buildInputs = with prev; old.buildInputs ++ [ libaacs ];
|
||||||
|
});
|
||||||
|
in {
|
||||||
|
libbluray = prev.libbluray.override {
|
||||||
|
withAACS = true;
|
||||||
|
withBDplus = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
mpvUnwrapped = prev.mpvUnwrapped.overrideAttrs (old: {
|
||||||
|
buildInputs = with prev; old.buildInputs ++ [ libaacs ];
|
||||||
|
});
|
||||||
|
|
||||||
|
vlc = prev.vlc.overrideAttrs (old: {
|
||||||
|
buildInputs = with prev; old.buildInputs ++ [ libaacs ];
|
||||||
|
});
|
||||||
|
|
||||||
|
handbrake = prev.handbrake.overrideAttrs (old: {
|
||||||
|
buildInputs = with prev; old.buildInputs ++ [ libaacs ];
|
||||||
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
mpvUnwrapped = overrideWithAACS "mpvUnwrapped";
|
||||||
|
handbrake = overrideWithAACS "handbrake";
|
||||||
|
*/
|
||||||
|
}
|
@ -1,15 +1,6 @@
|
|||||||
final: prev:
|
final: prev:
|
||||||
|
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
mpv = prev.wrapMpv mpv {
|
|
||||||
# Prevent the need for prefixing mpv with DRI_PRIME=1
|
|
||||||
extraMakeWrapperArgs = [
|
|
||||||
"--set" "DRI_PRIME" "1"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
|
|
||||||
gajim = prev.gajim.overrideAttrs (old: {
|
gajim = prev.gajim.overrideAttrs (old: {
|
||||||
# Enable notification sounds
|
# Enable notification sounds
|
||||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [ prev.gsound ];
|
propagatedBuildInputs = old.propagatedBuildInputs ++ [ prev.gsound ];
|
||||||
@ -68,18 +59,6 @@ final: prev:
|
|||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
# TODO: Remove once upstream has a new version tagged
|
|
||||||
kasts-git = prev.libsForQt5.kasts.overrideAttrs (old: {
|
|
||||||
src = let
|
|
||||||
commit = "b39be0118ef6ff587b433af185c584f3d5bcec30";
|
|
||||||
in builtins.fetchTarball {
|
|
||||||
url = "https://invent.kde.org/plasma-mobile/kasts/-/archive/${commit}/kasts-${commit}.tar.gz";
|
|
||||||
sha256 = "06myymbwj89357cpg7phha1x8q84mlhcy4f44pdkqmg7lkd5a6df";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = old.buildInputs ++ [ prev.taglib prev.libsForQt5.qtkeychain ];
|
|
||||||
});
|
|
||||||
|
|
||||||
xournalpp-git = prev.xournalpp.overrideAttrs (old: {
|
xournalpp-git = prev.xournalpp.overrideAttrs (old: {
|
||||||
version = "1.1.1";
|
version = "1.1.1";
|
||||||
src = prev.fetchFromGitHub {
|
src = prev.fetchFromGitHub {
|
||||||
|
@ -25,6 +25,7 @@ in {
|
|||||||
evdev-proxy = prev.callPackage ./tools/virtualisation/evdev-proxy {};
|
evdev-proxy = prev.callPackage ./tools/virtualisation/evdev-proxy {};
|
||||||
virtiofsd = prev.callPackage ./tools/virtualisation/virtiofsd {};
|
virtiofsd = prev.callPackage ./tools/virtualisation/virtiofsd {};
|
||||||
anime4k = prev.callPackage ./misc/video/anime4k {};
|
anime4k = prev.callPackage ./misc/video/anime4k {};
|
||||||
|
mpv-shader-pack = prev.callPackage ./misc/video/mpv-shader-pack {};
|
||||||
anime-dl = prev.callPackage ./tools/video/animedl {
|
anime-dl = prev.callPackage ./tools/video/animedl {
|
||||||
pySmartDL = pySmartDL;
|
pySmartDL = pySmartDL;
|
||||||
cfscrape = cfscrape;
|
cfscrape = cfscrape;
|
||||||
|
@ -16,10 +16,10 @@ stdenv.mkDerivation rec {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A High-Quality Real Time Upscaler for Anime Video ";
|
description = "A High-Quality Real Time Upscaler for Anime Video";
|
||||||
homepage = "A High-Quality Real Time Upscaler for Anime Video ";
|
homepage = "https://bloc97.github.io/Anime4K/";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = [ ];
|
maintainers = [ ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.all;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
25
packages/misc/video/mpv-prescalers/default.nix
Normal file
25
packages/misc/video/mpv-prescalers/default.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{ stdenv, lib, fetchFromGitHub }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "mpv-prescalers";
|
||||||
|
version = "20211110";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "bjin";
|
||||||
|
repo = "mpv-prescalers";
|
||||||
|
rev = "cc02ed95c1fe05b72bc21d41257c4c085e6e409b";
|
||||||
|
sha256 = "1gc1ka9i7xzxq58175q5svhvp8vr27hy477r4z4nkhp9q1cqj19d";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
find . -type f -iname '*.hook' -exec install -Dm 644 {} -t $out/usr/share/shaders/ \;
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "prescalers for mpv, as user shaders";
|
||||||
|
homepage = "https://github.com/bjin/mpv-prescalers";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
maintainers = [ ];
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
30
packages/misc/video/mpv-shader-pack/default.nix
Normal file
30
packages/misc/video/mpv-shader-pack/default.nix
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{ stdenv, lib, fetchFromGitHub }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "mpv-shader-pack";
|
||||||
|
version = "2.0.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "iwalton3";
|
||||||
|
repo = "default-shader-pack";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "10383h2qq35whj3v1vs34yyqiflxjf1vlv2p4l6jrmljwpjpcj4k";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
# Packaged by the anime4k package
|
||||||
|
rm shaders/Anime4K_*.glsl
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
find ./shaders -type f -exec install -Dm 644 {} -t $out/usr/share/shaders/ \;
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Preconfigured set of MPV shaders and configurations for MPV Shim media clients.";
|
||||||
|
homepage = "https://github.com/iwalton3/default-shader-pack";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
maintainers = [ ];
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user