Compare commits

...

27 Commits

Author SHA1 Message Date
3611243a7d wip
Some checks failed
Check Flake / check-flake (push) Failing after 1m12s
2023-09-30 23:12:41 -06:00
fa6e092c06 Update zoidberg keyfile
Some checks failed
Check Flake / check-flake (push) Failing after 6m52s
2023-09-04 17:18:42 -06:00
3a6dae2b82 Enable barrier for use system wide
Some checks failed
Check Flake / check-flake (push) Failing after 7m29s
2023-09-03 21:59:31 -06:00
62bb740634 Enable ROCm 2023-09-03 21:58:52 -06:00
577e0d21bc Xbox wireless controller support 2023-09-03 21:58:08 -06:00
b481a518f5 Samba mount 2023-09-03 21:57:24 -06:00
f93b2c6908 Steam login option 2023-09-03 21:56:37 -06:00
890b24200e Retroarch
Some checks failed
Check Flake / check-flake (push) Failing after 8m51s
2023-08-13 18:03:45 -06:00
d3259457de Use latest kernel so amdgpu doesn't crash 2023-08-12 23:17:26 -06:00
8eb42ee68b Add common user for kodi 2023-08-12 23:16:52 -06:00
9d4c48badb Use Barrier 2023-08-12 23:16:26 -06:00
9cf2b82e92 Update nixpkgs and cleanup
Some checks failed
Check Flake / check-flake (push) Failing after 10m41s
2023-08-12 19:40:22 -06:00
61ca918cca flake.lock: Update
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/2994d002dcff5353ca1ac48ec584c7f6589fe447' (2023-04-21)
  → 'github:ryantm/agenix/d8c973fd228949736dedf61b7f8cc1ece3236792' (2023-07-24)
• Added input 'agenix/home-manager':
    'github:nix-community/home-manager/32d3e39c491e2f91152c84f8ad8b003420eab0a1' (2023-04-22)
• Added input 'agenix/home-manager/nixpkgs':
    follows 'agenix/nixpkgs'
• Updated input 'deploy-rs':
    'github:serokell/deploy-rs/c2ea4e642dc50fd44b537e9860ec95867af30d39' (2023-04-21)
  → 'github:serokell/deploy-rs/724463b5a94daa810abfc64a4f87faef4e00f984' (2023-06-14)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/cfacdce06f30d2b68473a46042957675eebb3401' (2023-04-11)
  → 'github:numtide/flake-utils/919d646de7be200f3bf08cb76ae1f09402b6f9b4' (2023-07-11)
• Updated input 'nix-index-database':
    'github:Mic92/nix-index-database/e3e320b19c192f40a5b98e8776e3870df62dee8a' (2023-04-25)
  → 'github:Mic92/nix-index-database/6c626d54d0414d34c771c0f6f9d771bc8aaaa3c4' (2023-08-06)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/297187b30a19f147ef260abb5abd93b0706af238' (2023-04-30)
  → 'github:NixOS/nixpkgs/a4d0fe7270cc03eeb1aba4e8b343fe47bfd7c4d5' (2023-08-13)
2023-08-12 19:00:16 -06:00
ef61792da4 Add maestral
Some checks failed
Check Flake / check-flake (push) Failing after 30s
2023-08-12 18:27:24 -06:00
3dc97f4960 Enable kde scaling 2023-08-12 18:27:01 -06:00
f4a26a8d15 Enable zfs scrubbing 2023-08-12 18:26:13 -06:00
37782a26d5 Add pavucontrol-qt 2023-08-12 18:25:46 -06:00
1434bd2df1 Share userspace packages
Some checks failed
Check Flake / check-flake (push) Failing after 19s
2023-08-11 20:48:27 -06:00
e49ea3a7c4 Share userspace packages
Some checks failed
Check Flake / check-flake (push) Failing after 8s
2023-08-11 20:45:34 -06:00
9a6cde1e89 Get zoidberg ready
Some checks failed
Check Flake / check-flake (push) Failing after 1m34s
2023-08-11 19:51:42 -06:00
35972b6d68 Xbox controller support
Some checks failed
Check Flake / check-flake (push) Failing after 18s
2023-08-10 20:39:41 -06:00
b8021c1756 Samba mount for zoidberg
Some checks failed
Check Flake / check-flake (push) Failing after 18s
2023-08-10 19:45:11 -06:00
4b21489141 Increase boot timeout for zoidberg
Some checks failed
Check Flake / check-flake (push) Failing after 19s
2023-08-10 19:44:44 -06:00
a256ab7728 Rekey secrets 2023-08-10 19:44:20 -06:00
da7ebe7baa Add Zoidberg
Some checks failed
Check Flake / check-flake (push) Failing after 2m43s
2023-08-10 19:40:01 -06:00
1922bbbcfd Local arduino development 2023-08-10 18:05:45 -06:00
b17be86927 Cleanup 2023-08-10 18:04:46 -06:00
42 changed files with 367 additions and 260 deletions

View File

@ -12,16 +12,16 @@ env:
jobs:
check-flake:
runs-on: nixos
runs-on: ubuntu-latest
steps:
# - run: node --version
# - name: Install basic dependencies
# run: apt-get update && apt-get install -y --no-install-recommends sudo curl ca-certificates xz-utils
- run: node --version
- name: Install basic dependencies
run: apt-get update && apt-get install -y --no-install-recommends sudo curl ca-certificates xz-utils
# - name: Install Nix
# uses: https://github.com/cachix/install-nix-action@v20
# with:
# github_access_token: ${{ secrets.__GITHUB_TOKEN }}
- name: Install Nix
uses: https://github.com/cachix/install-nix-action@v20
with:
github_access_token: ${{ secrets.__GITHUB_TOKEN }}
- name: Install dependencies
run: nix profile install nixpkgs#nodejs-18_x
@ -31,8 +31,12 @@ jobs:
with:
fetch-depth: 0
# - name: Get ENV var names
# run: printenv | cut -d'=' -f1
- name: Get ENV var names
run: printenv | cut -d'=' -f1
- name: List files in the repository
run: |
ls ${{ gitea.workspace }}
- name: Check Flake
run: nix flake check --show-trace

View File

@ -13,13 +13,11 @@ in
};
config = mkIf cfg.enable {
# Use GRUB 2 for BIOS
boot.loader = {
timeout = 2;
grub = {
enable = true;
device = cfg.device;
version = 2;
useOSProber = true;
configurationLimit = 20;
theme = pkgs.nixos-grub2-theme;

View File

@ -10,14 +10,12 @@ in
};
config = mkIf cfg.enable {
# Use GRUB2 for EFI
boot.loader = {
efi.canTouchEfiVariables = true;
timeout = 2;
grub = {
enable = true;
device = "nodev";
version = 2;
efiSupport = true;
useOSProber = true;
# memtest86.enable = true;

View File

@ -17,38 +17,6 @@ let
"PREFIX=$(out)"
];
};
nvidia-vaapi-driver = pkgs.stdenv.mkDerivation rec {
pname = "nvidia-vaapi-driver";
version = "0.0.5";
src = pkgs.fetchFromGitHub {
owner = "elFarto";
repo = pname;
rev = "v${version}";
sha256 = "2bycqKolVoaHK64XYcReteuaON9TjzrFhaG5kty28YY=";
};
patches = [
./use-meson-v57.patch
];
nativeBuildInputs = with pkgs; [
meson
cmake
ninja
pkg-config
];
buildInputs = with pkgs; [
nv-codec-headers-11-1-5-1
libva
gst_all_1.gstreamer
gst_all_1.gst-plugins-bad
libglvnd
];
};
in
{
config = lib.mkIf cfg.enable {

View File

@ -52,6 +52,8 @@ in
jellyfin-media-player
joplin-desktop
config.inputs.deploy-rs.packages.${config.currentSystem}.deploy-rs
lxqt.pavucontrol-qt
barrier
# For Nix IDE
nixpkgs-fmt

View File

@ -20,5 +20,7 @@ in
# plasma5Packages.kmail-account-wizard
kate
];
services.xserver.desktopManager.plasma5.useQtScaling = true;
};
}

View File

@ -10,12 +10,13 @@ let
dart-code.flutter
golang.go
jnoortheen.nix-ide
ms-vscode.cpptools
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "platformio-ide";
publisher = "platformio";
version = "3.1.1";
sha256 = "fwEct7Tj8bfTOLRozSZJGWoLzWRSvYz/KxcnfpO8Usg=";
sha256 = "g9yTG3DjVUS2w9eHGAai5LoIfEGus+FPhqDnCi4e90Q=";
}
];

View File

@ -10,7 +10,6 @@
./matrix.nix
./zerobin.nix
./gitea.nix
./gitea-runner.nix
./privatebin/privatebin.nix
./radio.nix
./samba.nix

View File

@ -1,52 +0,0 @@
{ config, pkgs, lib, ... }:
let
cfg = config.services.gitea-runner;
in
{
options.services.gitea-runner = {
enable = lib.mkEnableOption "Enables gitea runner";
dataDir = lib.mkOption {
default = "/var/lib/gitea-runner";
type = lib.types.str;
description = lib.mdDoc "gitea runner data directory.";
};
};
config = lib.mkIf cfg.enable {
virtualisation.docker.enable = true;
users.users.gitea-runner = {
description = "Gitea Runner Service";
home = cfg.dataDir;
useDefaultShell = true;
group = "gitea-runner";
isSystemUser = true;
createHome = true;
extraGroups = [
"docker" # allow creating docker containers
];
};
users.groups.gitea-runner = { };
systemd.services.gitea-runner = {
description = "Gitea Runner";
serviceConfig = {
WorkingDirectory = cfg.dataDir;
User = "gitea-runner";
Group = "gitea-runner";
};
requires = [ "network-online.target" ];
after = [ "network.target" "network-online.target" ];
wantedBy = [ "multi-user.target" ];
path = with pkgs; [ gitea-actions-runner ];
script = ''
exec act_runner daemon
'';
};
};
}

91
flake.lock generated
View File

@ -3,16 +3,17 @@
"agenix": {
"inputs": {
"darwin": "darwin",
"home-manager": "home-manager",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1682101079,
"narHash": "sha256-MdAhtjrLKnk2uiqun1FWABbKpLH090oeqCSiWemtuck=",
"lastModified": 1690228878,
"narHash": "sha256-9Xe7JV0krp4RJC9W9W9WutZVlw6BlHTFMiUP/k48LQY=",
"owner": "ryantm",
"repo": "agenix",
"rev": "2994d002dcff5353ca1ac48ec584c7f6589fe447",
"rev": "d8c973fd228949736dedf61b7f8cc1ece3236792",
"type": "github"
},
"original": {
@ -21,29 +22,6 @@
"type": "github"
}
},
"archivebox": {
"inputs": {
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1648612759,
"narHash": "sha256-SJwlpD2Wz3zFoX2mIYCQfwIOYHaOdeiWGFeDXsLGM84=",
"ref": "refs/heads/master",
"rev": "39d338b9b24159d8ef3309eecc0d32a2a9f102b5",
"revCount": 2,
"type": "git",
"url": "https://git.neet.dev/zuckerberg/archivebox.git"
},
"original": {
"type": "git",
"url": "https://git.neet.dev/zuckerberg/archivebox.git"
}
},
"blobs": {
"flake": false,
"locked": {
@ -117,11 +95,11 @@
]
},
"locked": {
"lastModified": 1682063650,
"narHash": "sha256-VaDHh2z6xlnTHaONlNVHP7qEMcK5rZ8Js3sT6mKb2XY=",
"lastModified": 1686747123,
"narHash": "sha256-XUQK9kwHpTeilHoad7L4LjMCCyY13Oq383CoFADecRE=",
"owner": "serokell",
"repo": "deploy-rs",
"rev": "c2ea4e642dc50fd44b537e9860ec95867af30d39",
"rev": "724463b5a94daa810abfc64a4f87faef4e00f984",
"type": "github"
},
"original": {
@ -151,11 +129,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1681202837,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"type": "github"
},
"original": {
@ -164,6 +142,27 @@
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1682203081,
"narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nix-index-database": {
"inputs": {
"nixpkgs": [
@ -171,11 +170,11 @@
]
},
"locked": {
"lastModified": 1682417654,
"narHash": "sha256-XtUhq1GTRzV7QebHkxjd7Z58E6lVEk6Iv1/pF/GnBB4=",
"lastModified": 1691292840,
"narHash": "sha256-NA+o/NoOOQhzAQwB2JpeKoG+iYQ6yn/XXVxaGd5HSQI=",
"owner": "Mic92",
"repo": "nix-index-database",
"rev": "e3e320b19c192f40a5b98e8776e3870df62dee8a",
"rev": "6c626d54d0414d34c771c0f6f9d771bc8aaaa3c4",
"type": "github"
},
"original": {
@ -186,16 +185,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1682818264,
"narHash": "sha256-EPr900C3WaYulOdWRF3BMQrjF2Ao5Jf8xUOnFvZDTXE=",
"lastModified": 1695825837,
"narHash": "sha256-4Ne11kNRnQsmSJCRSSNkFRSnHC4Y5gPDBIQGjjPfJiU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "297187b30a19f147ef260abb5abd93b0706af238",
"rev": "5cfafa12d57374f48bcc36fda3274ada276cf69e",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"ref": "nixos-23.05",
"repo": "nixpkgs",
"type": "github"
}
@ -215,18 +214,6 @@
"type": "indirect"
}
},
"nixpkgs-hostapd-pr": {
"flake": false,
"locked": {
"narHash": "sha256-35+g1EJMcDFhb3UP15fyR1aD4AX1ifz2EqaYItITZ7U=",
"type": "file",
"url": "https://github.com/NixOS/nixpkgs/pull/222536.patch"
},
"original": {
"type": "file",
"url": "https://github.com/NixOS/nixpkgs/pull/222536.patch"
}
},
"radio": {
"inputs": {
"flake-utils": [
@ -271,13 +258,11 @@
"root": {
"inputs": {
"agenix": "agenix",
"archivebox": "archivebox",
"dailybuild_modules": "dailybuild_modules",
"deploy-rs": "deploy-rs",
"flake-utils": "flake-utils",
"nix-index-database": "nix-index-database",
"nixpkgs": "nixpkgs",
"nixpkgs-hostapd-pr": "nixpkgs-hostapd-pr",
"radio": "radio",
"radio-web": "radio-web",
"simple-nixos-mailserver": "simple-nixos-mailserver"

View File

@ -1,8 +1,6 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/master";
# nixpkgs-patch-howdy.url = "https://github.com/NixOS/nixpkgs/pull/216245.diff";
# nixpkgs-patch-howdy.flake = false;
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
flake-utils.url = "github:numtide/flake-utils";
@ -26,11 +24,6 @@
dailybuild_modules.inputs.nixpkgs.follows = "nixpkgs";
dailybuild_modules.inputs.flake-utils.follows = "flake-utils";
# archivebox
archivebox.url = "git+https://git.neet.dev/zuckerberg/archivebox.git";
archivebox.inputs.nixpkgs.follows = "nixpkgs";
archivebox.inputs.flake-utils.follows = "flake-utils";
# nixos config deployment
deploy-rs.url = "github:serokell/deploy-rs";
deploy-rs.inputs.nixpkgs.follows = "nixpkgs";
@ -39,9 +32,6 @@
# prebuilt nix-index database
nix-index-database.url = "github:Mic92/nix-index-database";
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
nixpkgs-hostapd-pr.url = "https://github.com/NixOS/nixpkgs/pull/222536.patch";
nixpkgs-hostapd-pr.flake = false;
};
outputs = { self, nixpkgs, ... }@inputs:
@ -60,7 +50,6 @@
simple-nixos-mailserver.nixosModule
agenix.nixosModules.default
dailybuild_modules.nixosModule
archivebox.nixosModule
nix-index-database.nixosModules.nix-index
({ lib, ... }: {
config = {
@ -86,7 +75,7 @@
name = "nixpkgs-patched";
src = nixpkgs;
patches = [
inputs.nixpkgs-hostapd-pr
./patches/gamepadui.patch
];
};
patchedNixpkgs = nixpkgs.lib.fix (self: (import "${patchedNixpkgsSrc}/flake.nix").outputs { self = nixpkgs; });

View File

@ -6,5 +6,21 @@
];
networking.hostName = "phil";
services.gitea-runner.enable = true;
services.gitea-actions-runner.instances.inst = {
enable = true;
name = config.networking.hostName;
url = "https://git.neet.dev/";
tokenFile = "/run/agenix/gitea-actions-runner-token";
labels = [
# provide a debian base with nodejs for actions
"debian-latest:docker://node:18-bullseye"
# fake the ubuntu name, because node provides no ubuntu builds
"ubuntu-latest:docker://node:18-bullseye"
# provide native execution on the host
#"native:host"
];
};
virtualisation.docker.enable = true;
age.secrets.gitea-actions-runner-token.file = ../../secrets/gitea-actions-runner-token.age;
}

View File

@ -8,8 +8,8 @@
systemRoles = [
"server"
"gitea-runner"
"nix-builder"
"gitea-actions-runner"
];
hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBlgRPpuUkZqe8/lHugRPm/m2vcN9psYhh5tENHZt9I2";

View File

@ -9,6 +9,9 @@
services.tor.enable = true;
services.tor.client.enable = true;
# don't use remote builders
nix.distributedBuilds = lib.mkForce false;
# services.howdy.enable = true;
hardware.openrazer.enable = true;
@ -27,6 +30,7 @@
# Wally Flashing rules for the Moonlander and Planck EZ
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666", SYMLINK+="stm32_dfu"
'';
services.udev.packages = [ pkgs.platformio ];
users.groups.plugdev = {
members = [ "googlebot" ];
};
@ -52,4 +56,9 @@
de.enable = true;
de.touchpad.enable = true;
networking.firewall.allowedTCPPorts = [
# barrier
24800
];
}

View File

@ -92,7 +92,7 @@ in
radios = {
# 2.4GHz
wlp4s0 = {
hwMode = "g";
band = "2g";
noScan = true;
channel = 6;
countryCode = "US";
@ -124,15 +124,15 @@ in
# authentication.saePasswordsFile = "/run/agenix/hostapd-pw-experimental-tower";
# };
};
extraConfig = ''
he_oper_centr_freq_seg0_idx=8
vht_oper_centr_freq_seg0_idx=8
'';
settings = {
he_oper_centr_freq_seg0_idx = 8;
vht_oper_centr_freq_seg0_idx = 8;
};
};
# 5GHz
wlan1 = {
hwMode = "a";
band = "5g";
noScan = true;
channel = 128;
countryCode = "US";
@ -164,10 +164,10 @@ in
# authentication.saePasswordsFile = "/run/agenix/hostapd-pw-experimental-tower";
# };
};
extraConfig = ''
vht_oper_centr_freq_seg0_idx=114
he_oper_centr_freq_seg0_idx=114
'';
settings = {
vht_oper_centr_freq_seg0_idx = 114;
he_oper_centr_freq_seg0_idx = 114;
};
};
};
};

View File

@ -9,9 +9,24 @@
# system.autoUpgrade.enable = true;
# gitea runner and allow it to build ARM derivations
services.gitea-runner.enable = true;
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
# gitea runner and allow it to build ARM derivationsFV
services.gitea-actions-runner.instances.inst = {
enable = true;
name = config.networking.hostName;
url = "https://git.neet.dev/";
tokenFile = "/run/agenix/gitea-actions-runner-token";
labels = [
# provide a debian base with nodejs for actions
"debian-latest:docker://node:18-bullseye"
# fake the ubuntu name, because node provides no ubuntu builds
"ubuntu-latest:docker://node:18-bullseye"
# provide native execution on the host
#"native:host"
];
};
virtualisation.docker.enable = true;
age.secrets.gitea-actions-runner-token.file = ../../../secrets/gitea-actions-runner-token.age;
boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; # todo: still needed?
nix.gc.automatic = lib.mkForce false; # allow the nix store to serve as a build cache
# binary cache

View File

@ -31,6 +31,8 @@
boot.initrd.luks.devices."enc-pv4".device = "/dev/disk/by-uuid/e2c7402a-e72c-4c4a-998f-82e4c10187bc";
# mounts
services.zfs.autoScrub.enable = true;
services.zfs.trim.enable = true;
fileSystems."/" =
{
device = "rpool/nixos/root";

View File

@ -10,6 +10,7 @@
"server"
"pia"
"binary-cache"
"gitea-actions-runner"
];
hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAwiXcUFtAvZCayhu4+AIcF+Ktrdgv9ee/mXSIhJbp4q";

View File

@ -0,0 +1,79 @@
{ config, pkgs, lib, ... }:
{
imports = [
./hardware-configuration.nix
];
de.enable = true;
# Login DE Option: Steam
programs.steam.gamescopeSession.enable = true;
# programs.gamescope.capSysNice = true;
# Login DE Option: Kodi
services.xserver.desktopManager.kodi.enable = true;
services.xserver.desktopManager.kodi.package =
(
pkgs.kodi.passthru.withPackages (kodiPackages: with kodiPackages; [
jellyfin
joystick
])
);
services.mount-samba.enable = true;
# Login DE Option: RetroArch
services.xserver.desktopManager.retroarch.enable = true;
services.xserver.desktopManager.retroarch.package = pkgs.retroarchFull;
# wireless xbox controller support
hardware.xone.enable = true;
boot.kernelModules = [ "xone-wired" "xone-dongle" ];
hardware.enableRedistributableFirmware = true;
hardware.enableAllFirmware = true;
hardware.opengl.extraPackages = with pkgs; [
rocm-opencl-icd
rocm-opencl-runtime
];
systemd.tmpfiles.rules = [
"L+ /opt/rocm/hip - - - - ${pkgs.hip}"
];
systemd.services.barrier-sddm = {
description = "Barrier mouse/keyboard share";
requires = [ "display-manager.service" ];
after = [ "network.target" "display-manager.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Restart = "always";
RestartSec = 10;
# todo use user/group
};
path = with pkgs; [ barrier doas ];
script = ''
# Wait for file to show up. "display-manager.service" finishes a bit too soon
while ! [ -e /run/sddm/xauth_* ]; do sleep 1; done;
export XAUTHORITY=$(ls /run/sddm/xauth_*)
# Disable crypto is fine because tailscale is E2E encrypting better than barrier could anyway
barrierc -f --disable-crypto --name zoidberg ray.koi-bebop.ts.net
'';
};
users.users.cris = {
isNormalUser = true;
hashedPassword = "$y$j9T$LMGwHVauFWAcAyWSSmcuS/$BQpDyjDHZZbvj54.ijvNb03tr7IgX9wcjYCuCxjSqf6";
uid = 1001;
packages = with pkgs; [
maestral
maestral-gui
] ++ config.users.users.googlebot.packages;
};
# Dr. John A. Zoidberg
users.users.john = {
isNormalUser = true;
hashedPassword = "";
uid = 1002;
};
}

View File

@ -0,0 +1,46 @@
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[
(modulesPath + "/installer/scan/not-detected.nix")
];
# boot
efi.enable = true;
boot.loader.timeout = lib.mkForce 15;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ "dm-snapshot" ];
# kernel
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
boot.kernelPackages = pkgs.linuxPackages_latest;
# disks
remoteLuksUnlock.enable = true;
boot.initrd.luks.devices."enc-pv" = {
device = "/dev/disk/by-uuid/04231c41-2f13-49c0-8fce-0357eea67990";
allowDiscards = true;
# Fetch key from USB drive
keyFileSize = 4096;
keyFile = "/dev/disk/by-id/usb-Mass_Storage_Device_121220160204-0:0";
fallbackToPassword = true;
};
fileSystems."/" =
{
device = "/dev/disk/by-uuid/39ee326c-a42f-49f3-84d9-f10091a903cd";
fsType = "btrfs";
};
fileSystems."/boot" =
{
device = "/dev/disk/by-uuid/954B-AB3E";
fsType = "vfat";
};
swapDevices =
[{ device = "/dev/disk/by-uuid/44e36954-9f1c-49ae-af07-72b240f93a95"; }];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -0,0 +1,14 @@
{
hostNames = [
"zoidberg"
];
arch = "x86_64-linux";
systemRoles = [
"personal"
"media-center"
];
hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHvdC1EiLqSNVmk5L1p7cWRIrrlelbK+NMj6tEBrwqIq";
}

13
patches/gamepadui.patch Normal file
View File

@ -0,0 +1,13 @@
diff --git a/nixos/modules/programs/steam.nix b/nixos/modules/programs/steam.nix
index 29c449c16946..f6c728eb7f0c 100644
--- a/nixos/modules/programs/steam.nix
+++ b/nixos/modules/programs/steam.nix
@@ -11,7 +11,7 @@ let
in
pkgs.writeShellScriptBin "steam-gamescope" ''
${builtins.concatStringsSep "\n" exports}
- gamescope --steam ${toString cfg.gamescopeSession.args} -- steam -tenfoot -pipewire-dmabuf
+ gamescope --steam ${toString cfg.gamescopeSession.args} -- steam -gamepadui -steamdeck -pipewire-dmabuf &> /tmp/steamlog
'';
gamescopeSessionFile =

Binary file not shown.

View File

@ -1,10 +1,11 @@
age-encryption.org/v1
-> ssh-ed25519 hPp1nw 4fyRGsaEo25EOj/VwPsF0tayghF0URctont4/re6OmY
rs09DCSb2bd/v45a7ABxfLo+Sz3OPLkRzfnP5Tmgi0g
-> ssh-ed25519 dMQYog seRjdySBF1GISaSUWqZNvoW4INDUCxvBKJOgvGeyX1Q
fe6JE5f9A48ujVtuc0QZ7e7pWW+Tu0yyQEyexTvQWAQ
-> Uqf![<-grease O}' _h*Y~ .@=$H,~W
jDlO5MEGPDjJ44cAWuJaTeADbG+wz5PTqq9Pw75QV3Exrsb8/PNGOrUZKuSTCCl3
g/z3ZHelBBqHp16ZTc+LSxDYgvnEfWMPZKo4mxgu
--- GTBCzHJYUKbpcgq7+0HzBpqvo0F7TNSPjFKqdRDUYDk
ÈÚú¡T+ñ—êtµ(פÉF ÆS<C386>/R±+¢¼Н‘âLÃÝcÁ‰·1 â<> ÕwÝøº.iFd#TJ±clbâH€5(öï6)®y¯" Ãà¼Î¿ž<C2BF>±º7!Õñ?(Qb “]x(åÛ°Å1ÿðÃZsaôï<15>ûþå
-> ssh-ed25519 hPp1nw eORh0m8mAPd3H/wjnHocuh/xheMuhLgWyzepL9RNii0
154IPIdkb8WpYgX/fj5jraQY5mN7udg3iaZ3VJB+3X8
-> ssh-ed25519 dMQYog 0eg1j3jL736OwjeMB55z52A6P34mSEYL6ulrn72blj0
UdFKIbrzAKCzZhYfH41z64cwkQRp1RZztYgknIEfoDc
-> K/&@p'&{-grease yb~ xHlc7m _t xm{3f
Gi2UGm5YXyByJuH6rRRBle/D5T7GS4FDt7Kv8aBKe8dfwUCu65OcvoaXzjm08EKA
m0yx
--- f79zGG5kBOul/cF0NJu1+f/NmaI0h/JcuHDano/1ghU
UĄ÷7°ĺóʤď1mĺÔE\{^Ł$źŐ Cx~2"±8¶Ćő?&öó°„ÂË‹(áä±
…aÝŔyßÝěĄ<EFBFBD>g¬â†řÇ CYX}’Ö -žWóiŢýŢ WZĚă'wŚNVVce9u±nÜXŔ)¤|(w´-{Ľ]ý«gŢX˘(~Ő®ĽC¤l

View File

@ -1,9 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 6AT2/g q8AlvC9Dt+b8320A4BP92FghOoPyKttivfrsxqG6DGM
GWz2QJY3QFc748DjHrybNxyAS/BmDgzIU8yoRFGbLjA
-> ssh-ed25519 dMQYog i/6mNjO8XZGAxnN1SxJGr5uD+hzCIrh28+N7cvvXZGA
hC+J+F9hVs8HZjLhCQ6RnGAHRE45G+p1oBPnwB+nBtE
-> ]d^>n#.%-grease Qe6&35Kb ,",Wb`% 0SRX@d
yXZqn1+E675gpQyFGk/c15Sc1/iwjI/6VrOE1RTcp0gJcsbtVv4kgYCkY+mK
--- ykoio7g3wxV3VDvo2d3p/Y39NCh+cWPh7uL+Go30BLY
i“˜Q+€hnïI¼_MßGrrf¯EE~µ(fFyâÿé&ȃ>sÀX<C380>ú¤9~<7E>ä*Ç~ŽBãÕ4R¯ü=;’Â{Ý´+^<5E>P…¨ûrFza·C䢞î4V
-> ssh-ed25519 6AT2/g MmInWcw6GlfzvN9kxFtTVWMX+UX9PHO5V35TzRcmex0
dSMoGNuJMpRwyWTAnjHpO9mJBCxsJ77M5fWA0F1gR6s
-> ssh-ed25519 dMQYog ua3OPiErZcVRNGf/uxv7PiBBFOKAUkaSSIV4UCMu5Wc
L8kYIzyEXcAxAlPQbqasgiaQi7JARhja6vM6WzvdMrs
-> CIn-grease !G{f,9h( Hjn\ \hTpE MAP<)J
0u+eQDvbxgI6aDT7xqdwOX3A34E2T4Ft9bSF6KBpHqucHib9tA5lJHgtXwgkpa/P
nbaJDnRWbM/AL7nnT7XpdLVO2r7w2ish4ALBgPvXxH/0iUXqvQk1B/E
--- +aKXbSfk6VkxqtTn+fI8VhcgO7Dw0jNSUJOJlqCbEGM
á? Þ÷Ùþq}` ¿Žiämó<>.6Û{I ¿þÌÛ°È„ csjRDþ¿“Á­çì$ŸZ̓ ”PîðßËŠj¡0—·ÅĉÑ;ˆ{þ÷Œ¬CJx/*÷<>

View File

@ -0,0 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 hPp1nw H88561/4YspJuLV0lOA7mfeHjwL291W/N3HWmiq8E0M
mqLeaNk2B2OUZo4NEDLicpSN9Qw1NAsLOSCb3Ar+iXA
-> ssh-ed25519 dMQYog CUuZSrofDHbBLtxgc4kg2h3Qgs99c3oudBGGV0iP/24
9D/ZjZqJh8XeUo/UFA6ojcJIlwUqYSg+Itx2vREXdas
-> p-grease #!rAT w\]efbQ
/WNOqhMfFrl1holyeok7pf/joMso1LtjbB00BeUGecVdkDhj71TxLgc+5tor/3D/
FC65ymMPL2t1j/G+qcow19X6bjWkytY
--- XDThYXsCIJLrOEBXbKwpnRSzvcBuVp+NiQ2Uung74fk
—L93%g\šqcÃÂZÏ÷ÆH\ 7ß—Ü<E28094>€Liµ¹W â]¶ÇT=ÒHjl%—HÁfW=ð jþí£³Î“Ë­ÂáJ 1a<31>Kéþ

Binary file not shown.

Binary file not shown.

View File

@ -1,9 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 VyYH/Q X+fXLJz227KkBLu45rb9mUkkIpENSMtZeEJjl6qj5Xw
AFAFnvsiogoMMwsAJO0DDoaizL9lmCLsF4QHDjmubr0
-> ssh-ed25519 dMQYog P84+7TBcMFSALTn6FR/aXyqFE9DfOzp38ImkdWj7nE0
PqOn1OL9Zt0x1pBIYOSKkkS//mbk1OX5pnDGp+OLYeI
-> @?-grease
3JvpmcTxdTgvv6vPL8dXEwjR+g
--- aMYF1SbC+p01YWmg24+Ih78VPQcwzGU/P1cEfgRvXV8
ź @$™sžQÂĽz<15>Ź®xkĘNfŰuŐ;§ż ÎvI0•ŞÇÎ^4.?, 8…çî
-> ssh-ed25519 VyYH/Q evYn+9ipH4t4cT2lZOiwnGqSkU+bbdVw80S0rgAqt00
Vr24AqHOqH5DQYYlyS0X+k6TnczKHRDGZCeoLOJkybE
-> ssh-ed25519 dMQYog 23GqNi0N24EtnRV25Ick+aurPOngZ2Zd279LmZH15WY
FEo0GyymjnPrSjf608SyCH22FvaqEixyVcbXdQ+Z3zA
-> (Rd{ky@}-grease D f/KA]Pe
8Ip1fddb0BYUwg62FSmUBp7O+TILFaCtWHcxheEyUlXPoY9TGTaySl6Znw9Mksde
q2aAHn8
--- ibLXcq9R/5X2jFKBABgsUcDiBjjuoA9SrCuFbGOiNBI
¸Ó;ù½XôóÀ m£h޲ý%펗+6â×k@nWÃäT®0 %¡£vìï

View File

@ -1,10 +1,9 @@
age-encryption.org/v1
-> ssh-ed25519 VyYH/Q biHhTmstx4FJmstCt7pYUjQlwZpgbFkZVlpzQu2Lf1w
K2lHbhdETesM86K6fKk91/2Z0LRQcwVtnXxYOtVCCaE
-> ssh-ed25519 dMQYog cyeabgOaV3nLPdLYs4G1g41bMAEBnHlEXoeW+A7NLFw
FRGdlHVQ81JjjYQ/PRoAq+JRMZ28rSBEUko8VHKNeDM
-> cyfV-grease +X51me hk_`YB> 6DFo`? V
/EoPdwBCc9S2GafKdhDnPZE06kxZBlzAob0Eb2qEMuwzVJF+7LesiK0ilpSrzdPU
cVN1ka2+k4pH7os/QUuu6oW9r3SxCw
--- FJOYm8/TVXlxV+9Ih376xWyJlKz2uk8KzPoY5FpIJjo
C`Ń” -“ÝţoYIEś_.y<>XăÝČËiţëµFŘW±…ЍIm5ŽA“ő*÷}Ŕßękî”ţ9űzë
-> ssh-ed25519 VyYH/Q 64dqV1h1JUR4j42fb1I5jhXGaY/qZeSKm1rBzQgbbw8
pJnxiMQ736hEEx674n1mZGzgLhRISKjZnHKh7NoVGVQ
-> ssh-ed25519 dMQYog z95pFmJuZTdFphdWJwLK7NSNQC0PqXw+aFtzt17xv0I
IET4jLrUiJAXsvOWkh2jWGdDgnib7fW90389V7P4C0w
-> 2-grease \vwS,
mEdgxTI1rxUMuAOhUUoitN0tfN4c6BU
--- Efo4U1RV0Mcd2th5AoXpy8XL2LejIH4GaOKBPCSuQEE
ÍCLd… Š~²ù1Öš£t/W%iΧ_¡v<C2A1>Æ#©<>¢;"øY¦x-©ôšuçÙ0gçûéN*^(Û,|

View File

@ -1,10 +1,11 @@
age-encryption.org/v1
-> ssh-ed25519 6AT2/g yTW46JmDIftcOqogIDjheXJf2sw/dG2WEJxfCXU/LDk
0Co5/Rn22kmdcPr61ZOrmZJbPFHx2wJ8/YkbDjcjqKo
-> ssh-ed25519 dMQYog RtZT0PwVL4kxUHilOhH2GBp8Z9WfyBkaxB62pjKpHA4
muMlIt8VYQftMYacfdnQFeejfWpKTEG5gxbFNy97GTc
-> 4|)`7yq-grease P#\5k8 +f
jMegn6ATsj2Ai9B5Xmy+tay1nppwxvF1IGJH+hLNanYMsTIDZypM6UsNdzYQ/3mw
VZ9ooy8TKUgAJ7jsd6IrKw
--- tLaPQWJA0Hh5MrxfhaySURgY02K16IlzvsxKpOWGva0
5?lヌ'シ!ケコ<EFBDB9><EFBDBA>キ匪Nxス+<2B>A9゚ムリl/グ諟ホ|旙<>Sオ&コサ、<>Q;_<>K
-> ssh-ed25519 6AT2/g UG+Ub0bZK74/Ifa/YkZOc6B3cPl6oI7M4Ev1zxkFEh0
z71vjnEqhL3kuLePbP0nKQNwU0mrCOO386wLdUhH5tU
-> ssh-ed25519 dMQYog t8H6XoIhhE4H9g4913sWgZ5BaYK04uk7Mj0FYnOdtTo
U4Ygto4z3l4dcCsnGxnRo1YGBl6YZ5y5pnVBJXCSrOc
-> Bad-grease <$Y
1xw
--- wiGO0H6gfd+3D/+V/rMNLGkDk6FPFUihXi43J82LAkg
³8>`®Às«»pú¨€¿U#ü™º¯KV%jbwïxN¸@
Žî@œª€
Ow\º(@@Tòìèzá

View File

@ -1,10 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 6AT2/g hXS7zxzYhlu5GrUAEAnaO+CizpbifjDxIwoAK55cjV0
xU7Z52cjARU8tmd1AJ9v8+QTQzfL/mNxP/f/bJAzYvo
-> ssh-ed25519 dMQYog 8PEp5TmEOumhWUZvko42sOKpkqOCW9/zCrMqn+fJ2ws
wJo8x6+hyU8iJkTqGVecZ88hG661F3ZvEvVqpJzox5w
-> x-grease tdW'\ +(>9 da%@^H6
q04xwjRaNOBfNhAvik762vJHio/qTfR6qQW4QsD+wzEidRYRggNdQwTl+G4jkWAu
fx0xZeiI5qVm6WG8lg
--- pHx5BdqI3HubR9wAtPyfMaYbr8uqRwOS1qFJhtC4wuM
Èv°ºg9sÉÉ¡§6:`Nlëªø`.•ÓÍPebÅSNn<>å­Ä8C<<3C>¥a=-¨Gò.ªfHm<48>»æUëçPGpS}µxýùã#ÎT
-> ssh-ed25519 6AT2/g ZfG2BGntlwCXJgQsYqvoPsQe5Y0JLLs4Vanm2NEciV4
iEBfqquq6Kqnmj6djNQHSMlpyiFP+TM/mXSa+X4jJJ8
-> ssh-ed25519 dMQYog r5DtWLdIDn58h5bwpvBMMP2VK/sm0B+qW1p8kpkVC38
N1ABWvmnHjipSd/2XaNPDPOzB4hzmwmOhOACfAeHYOY
-> PfP*-grease >7 7pu;\o@ g
ZduZJ2nqJZ0RQXwxBjDZdQ49Q1xO2bTM0TSPbC/5WbIwPlBeN79CT46lSi/l+evk
UE6c9mUXNZvNdeUyyLzonENN0YSVW0ikQtRdKZwBsM0OTYWBGxkKx2fmasW3nQ
--- VPIFJ2C3BP6OZGP5rZC3Gzu7D0hhNcF23OMM6d/9Jmo
xÆ2¹id5̬=J¬¦;S«³F`ù¬.Åi(Û“¬÷°øZjÉ`뢓>«ÁøÙÔ˜‰&ÃM§:\g¿!£áÂ^ñDhr,[J²}

View File

@ -1,11 +1,13 @@
age-encryption.org/v1
-> ssh-ed25519 6AT2/g J3H9xUUwUMB7VkHHGtsZaCm/GiyqTFUrEmsuwcrgrhE
tn+zbj5cISZzkUzJcu7JlaqhE4Dr4fhczSJU2kV91AU
-> ssh-ed25519 hPp1nw 370YNPQn4mqeHjOvnIXkm+BzbrRNHkFICJaJhHCSHDQ
WLhDRA8jp50aKkY8t9GvyAHoLxYQD2Bhw3y01hwhoOA
-> ssh-ed25519 dMQYog 1dwQN8hmbLY54OnRTXtcwAXHoYLLNV0IK/rQQ9ZgV2A
gP2HQinVYW72oJRFW69qAeF/iNEEtJqya1iRMOugNKk
-> ~-grease 2%p4s G:$f41y " vZ87PA*|
+hI029392lrjxlsXUI8opFVcUK+JOjgBYGMH
--- juX+tgNpNr8it5QnbcBkR9u88vZkC47L5fIlZQNxPYg
,J}¸œ}Y§˜B%ˆo~3M×½HÊ—]ºˆû©ðÔ¤žËn0cVs(´;axc#o™Üüv'kˆù#]o<>N`ÆœøÁ´Ì¿<C38C>˜¼û p<>ÒšKàøk†0(
-> ssh-ed25519 6AT2/g gPeZnJ8arK6xAGnEK9uTcGfwBI1pYjjv6VX4o9EBIns
sKFfqnafLachTKE93Pb7gsZ5gdKis64N64BK5128LKg
-> ssh-ed25519 hPp1nw e2taazZ3R6EBCbgh6Gg0Dc9p1K7zp5R7n9LIkWF/Wj8
+/VkcMDL1HNJhbc6/OxpiUe1dlO0lrc1hgkD/RrYXjY
-> ssh-ed25519 dMQYog znMKkv1O7F/EeAyvTfULUn/pWdai2NI0uBfWn/02xg0
45W9s4Vo8J+xOTGec9h6s0ra9ZSUA6JkorAAyqqlPfg
-> T/!XI-grease GJ_O'
mAOW54Txa2H9WdEMog0g1XQjkC5z0wQIoqNlnbsjCSvM1UaPiiu6vJOJKCmJb1Z6
3wyLN6lCIjkR
--- yX7lzKnDkn+KkRVTumffcd/SJSznR5n6JtUgWkSSohk
ãQô^àèyW; â§]Š+u>¥3wŒ¨oêM:ã™øêúÀöŸÃ9,xv×KÁÜXT-K8rÔ(@Ø-|³
:PÈ<50>‡*H6€'¹&Ôi

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,8 +1,8 @@
age-encryption.org/v1
-> ssh-ed25519 dMQYog yPsN2a4x6jsVoICJQrP5sJEiZEuLFcPMAAUOWIlAFAw
A4cPt0h2miu6maXCZqNDi3eBH+wz089PkTedPgjhVGQ
-> )0CM-grease {H^$`
z45BS81IhE6Xqdtz/idIzEExM7T8Sb7zl6NH6ODSJ7p6nRM
--- 9P/MF94zA5XDi+jwUMKHqVFqGCgGaYMaryevwvI5gsk
˝čá=¸,ööîóŁ oáŻH¸uVĘ·Hăźč25ę˙Ťî1&ŁC‰IŠä.áDs!ĄÍh?öPuo$"Ş­-m}Ń!úi<•'
wT»Ľ÷Ŕ([U˙H6¦Úď9×67Z_ÄĹ·ł…ܱŔ”Rü?„{^ÄH/{C©ůd?nđ˘ă÷śČ
-> ssh-ed25519 dMQYog 82ZRseC994TzEUg20LuFD4kToykRtk7NISGrolHJO1Y
rbSPACXEjLSHKYpZzGNGTKIjFSFCsoXA3Y8CIcPv8rg
-> z/-grease zQd~R\dJ
SeA2ve/+W285dHnBIfGbOFPLt4/ORrI6HeGeTnkackymUAh23+Ur581Duhjo3T3B
j53tPUXXTwuXKpd4Ga0xpmr44Yo
--- /mQNdS7QAVSNQQ1RRjD9dxMYFjI6UBgqHIA+hvHRPOU
Ëć:^˝AqĎvR­k Ŕa<C594>cu\éůëľ:ă멏<C2A9>jzç¶Ö˙'ÉDÚ¬=éŢ_îĐoĂYgfîL\ÇN`)Šdkó„<E2809E>ižbHߏ$°¨}2”)X<>Ú<EFBFBD>ÓS=8`ŞaÄ\»Uȇ’‚¸Óµ¸şľąÇß?¤<LęŢä€Ń;·

View File

@ -29,7 +29,7 @@ with roles;
# cloud
"nextcloud-pw.age".publicKeys = nextcloud;
"smb-secrets.age".publicKeys = personal;
"smb-secrets.age".publicKeys = personal ++ media-center;
# services
"searx.age".publicKeys = nobody;
@ -43,4 +43,7 @@ with roles;
# backups
"backblaze-s3-backups.age".publicKeys = personal ++ server;
"restic-password.age".publicKeys = personal ++ server;
# gitea actions runner
"gitea-actions-runner-token.age".publicKeys = gitea-actions-runner;
}

Binary file not shown.

Binary file not shown.

View File

@ -1,10 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 6AT2/g xp04CsJvlYhBZS5W/MSDLWGiNCegAjg4XPv43wU5u0g
i6q0YgKOFGaHOKVYMppNtcvjCFfHHqOS9M+oh2mqc1M
-> ssh-ed25519 dMQYog Mk90WFb+fYCFV7afu3+VbuAtOlvRAgpJGFGqn4ZWGjE
wHeScgV248lHiL0B/QEraD4QOBudezhJPrppY50u7S8
-> G/9-grease
0hCyP7pGu5xkk4eWJTpLWy6f8Zuo8wmgBSNFK7bgzfYdW29mdOrO2Ey3Oa2Gvtji
rze9v27gMUFRXOqPHNmaSjAneCwtcqTMReV+LZr9q9FN6qZnzAE
--- /SN6cSyrvbDEHTiIvv4MdoVkIjz3yZkvtr2SVBE1rRk
=„ñ1fJ…XÍô~ÃÝÆD¬c¹aFâ¨@ݹc=89;¿sôv®Ï ú´‘
-> ssh-ed25519 6AT2/g 3xkROcKh6I/oVGRwnvJ9Dy36JvYmsJQZq2DBvYC4Dz4
JunaGg8zg2SJZmBnuV0ZcDSc8vsMHgTd1RbDn8giy+Y
-> ssh-ed25519 dMQYog JG8QC1thl+CMlxoI1Y+ZUj0dQ3FXF4cquk7tdzfaS0E
zW7jyrXhVvyIq7HXfcRqkyZdg/wkWwNfPk5KbI2jH7I
-> $"v%-grease `Xo|a eIFIq 7hBk?8%1
ZoNiAXY1HE1GEQPd1aJirTitFgXf3HKcV2H6HxRpzWysUd1DGOsF/jScUO36JgIP
sY8FA22PjyUv7g
--- zFpfG3JQpSmE108GMEWLjGWMJe7cXVn3NN9vs8iDY3E
8f,ÕªÒÅðÚÏ*}V¥Æ@j†3ÿïCèM*@}ìy2Øì9€Éè ìN|yæ