Compare commits
50 Commits
b4bba876ae
...
trunk
| Author | SHA1 | Date | |
|---|---|---|---|
| 1f4494d333 | |||
| 85255adb2c | |||
| f251a6f5c7 | |||
| 1f84cf19c7 | |||
| 0e49c1b9ee | |||
| 3ff5251b15 | |||
| 007c66c007 | |||
| d37a0ce652 | |||
| 5ab6c9e4c8 | |||
| fccec4d504 | |||
| 8feda54866 | |||
| 7179e6f047 | |||
| 1da9d994de | |||
| e213c64481 | |||
| 49ac3c2bf5 | |||
| 8acebb13cc | |||
| ff08538bae | |||
| 494ac6cf57 | |||
| 4cfddd2c7e | |||
| 60509f93f0 | |||
| 96d8fd1129 | |||
| 39264279e0 | |||
| 07c9533255 | |||
| 015f416169 | |||
| 35d8c83423 | |||
| b488af297a | |||
| dbb5560793 | |||
| 7bcfef3ccf | |||
| a1fd3b3af2 | |||
| a45d9014dd | |||
| 80451e9430 | |||
| df1a77f73e | |||
| 6f51671dbb | |||
| a238d2b61c | |||
|
62dd3f5d7c
|
|||
| 8b8dc8cde8 | |||
| 3047ff97b4 | |||
| 1c963f5563 | |||
| c02f2853c1 | |||
| d73a561b9d | |||
| 7d97acfdfb | |||
| cfb55f980d | |||
| 1a67b02d7c | |||
| 0196b1d8b2 | |||
| d7a6a85841 | |||
| cc7aca0fce | |||
| 6b393c7e4f | |||
| c9bcda6043 | |||
| 7ce43bf8e7 | |||
| 5a451bcaa1 |
724
flake.lock
generated
724
flake.lock
generated
File diff suppressed because it is too large
Load Diff
29
flake.nix
29
flake.nix
@@ -4,14 +4,14 @@
|
|||||||
{
|
{
|
||||||
description = "blakes nix config";
|
description = "blakes nix config";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-25.05";
|
nixpkgs.url = "nixpkgs/nixos-25.11";
|
||||||
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
|
||||||
nix-darwin = {
|
nix-darwin = {
|
||||||
url = "github:LnL7/nix-darwin";
|
url = "github:nix-darwin/nix-darwin/master";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||||
};
|
};
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-25.05";
|
url = "github:nix-community/home-manager/release-25.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
home-manager-unstable = {
|
home-manager-unstable = {
|
||||||
@@ -32,6 +32,10 @@
|
|||||||
url = "github:nix-community/lanzaboote/v0.4.3";
|
url = "github:nix-community/lanzaboote/v0.4.3";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
watershot = {
|
||||||
|
url = "github:Kirottu/watershot";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
vpn-confinement = {
|
vpn-confinement = {
|
||||||
url = "github:Maroka-chan/VPN-Confinement";
|
url = "github:Maroka-chan/VPN-Confinement";
|
||||||
};
|
};
|
||||||
@@ -40,7 +44,7 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
autoaspm = {
|
autoaspm = {
|
||||||
url = "github:notthebee/AutoASPM";
|
url = "git+https://git.notthebe.ee/notthebee/AutoASPM.git";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
stylix = {
|
stylix = {
|
||||||
@@ -88,6 +92,16 @@
|
|||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
mew = nixpkgs-unstable.lib.nixosSystem {
|
||||||
|
system = systems.x86_64;
|
||||||
|
specialArgs = {inherit inputs stable_pkgs unstable_pkgs;};
|
||||||
|
modules = [
|
||||||
|
./hosts/nixos/mew/configuration.nix
|
||||||
|
./hosts/nixos/mew/disko.nix
|
||||||
|
inputs.home-manager-unstable.nixosModules.default
|
||||||
|
inputs.disko.nixosModules.disko
|
||||||
|
];
|
||||||
|
};
|
||||||
vaniville = nixpkgs.lib.nixosSystem {
|
vaniville = nixpkgs.lib.nixosSystem {
|
||||||
system = systems.x86_64;
|
system = systems.x86_64;
|
||||||
specialArgs = {inherit inputs stable_pkgs unstable_pkgs;};
|
specialArgs = {inherit inputs stable_pkgs unstable_pkgs;};
|
||||||
@@ -102,14 +116,15 @@
|
|||||||
system = systems.darwin;
|
system = systems.darwin;
|
||||||
specialArgs = {inherit inputs stable_pkgs unstable_pkgs nix-homebrew;};
|
specialArgs = {inherit inputs stable_pkgs unstable_pkgs nix-homebrew;};
|
||||||
modules = [
|
modules = [
|
||||||
./hosts/darwin/cen-it-07/configuration.nix
|
#./hosts/darwin/cen-it-07/configuration.nix
|
||||||
inputs.home-manager.darwinModules.default
|
inputs.home-manager.darwinModules.default
|
||||||
nix-homebrew.darwinModules.nix-homebrew
|
nix-homebrew.darwinModules.nix-homebrew
|
||||||
{
|
{
|
||||||
nix-homebrew = {
|
nix-homebrew = {
|
||||||
enable = true; # install homebrew
|
enable = true; # install homebrew
|
||||||
enableRosetta = true; # install homebrew for rosetta as well
|
enableRosetta = true; # install homebrew for rosetta as well
|
||||||
user = "blake"; # user owning homebrew prefix
|
autoMigrate = true;
|
||||||
|
user = "bhelderman"; # user owning homebrew prefix
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -26,11 +26,18 @@
|
|||||||
dates = [ "daily" ];
|
dates = [ "daily" ];
|
||||||
};
|
};
|
||||||
# the goats
|
# the goats
|
||||||
settings.experimental-features = lib.mkDefault [
|
settings = {
|
||||||
|
substituters = [
|
||||||
|
"https://cache.nixos.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
];
|
||||||
|
experimental-features = lib.mkDefault [
|
||||||
"nix-command"
|
"nix-command"
|
||||||
"flakes"
|
"flakes"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# allow proprietary packages
|
# allow proprietary packages
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
|
|||||||
70
hosts/nixos/froakie/disko.nix
Normal file
70
hosts/nixos/froakie/disko.nix
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
type = "disk";
|
||||||
|
device = ""; # disk id here
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ESP = {
|
||||||
|
size = "1G";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = [ "umask=0077" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
luks = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "luks";
|
||||||
|
name = "crypted";
|
||||||
|
# disable settings.keyFile if you want to use interactive password entry
|
||||||
|
#passwordFile = "/tmp/secret.key"; # Interactive
|
||||||
|
settings = {
|
||||||
|
allowDiscards = true;
|
||||||
|
#keyFile = "/tmp/secret.key";
|
||||||
|
};
|
||||||
|
#additionalKeyFiles = [ "/tmp/additionalSecret.key" ];
|
||||||
|
content = {
|
||||||
|
type = "btrfs";
|
||||||
|
extraArgs = [ "-f" ];
|
||||||
|
subvolumes = {
|
||||||
|
"@root" = {
|
||||||
|
mountpoint = "/";
|
||||||
|
mountOptions = [
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"@home" = {
|
||||||
|
mountpoint = "/home";
|
||||||
|
mountOptions = [
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"@nix" = {
|
||||||
|
mountpoint = "/nix";
|
||||||
|
mountOptions = [
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"@swap" = {
|
||||||
|
mountpoint = "/.swapvol";
|
||||||
|
swap.swapfile.size = "32G";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
113
hosts/nixos/mew/configuration.nix
Normal file
113
hosts/nixos/mew/configuration.nix
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
modulesPath,
|
||||||
|
inputs,
|
||||||
|
stable_pkgs,
|
||||||
|
unstable_pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
#./hardware-configuration.nix
|
||||||
|
../../nixos
|
||||||
|
../../../users/blake
|
||||||
|
../../../modules/desktop
|
||||||
|
../../../modules/system
|
||||||
|
];
|
||||||
|
|
||||||
|
# home grown nixos modules
|
||||||
|
system = {
|
||||||
|
secure_boot.enable = false;
|
||||||
|
cifs_mounts.enable = true;
|
||||||
|
udiskie.enable = true;
|
||||||
|
ssh.enable = true;
|
||||||
|
sops.enable = true;
|
||||||
|
japanese.enable = true;
|
||||||
|
yubikey.enable = true;
|
||||||
|
yubikey.lock_on_remove = false;
|
||||||
|
tailscale.enable = true;
|
||||||
|
syncthing.enable = true;
|
||||||
|
flatpak.enable = true;
|
||||||
|
graphics = {
|
||||||
|
enable = true;
|
||||||
|
vendor = "amd";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
desktop = {
|
||||||
|
pipewire.enable = true;
|
||||||
|
hypr.enable = true;
|
||||||
|
greetd.enable = true;
|
||||||
|
};
|
||||||
|
gaming = {
|
||||||
|
steam.enable = true;
|
||||||
|
lutris.enable = true;
|
||||||
|
proton_ge.enable = true;
|
||||||
|
gamemode.enable = true;
|
||||||
|
mangohud.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# import home grown host specific home-manager modules
|
||||||
|
home-manager.users.blake.imports = [
|
||||||
|
../../../users/blake/hosts/yveltal.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# fix power buttons
|
||||||
|
# move this to a laptops file at some point
|
||||||
|
services.logind.settings.Login = {
|
||||||
|
HandlePowerKey = "suspend-then-hibernate";
|
||||||
|
HandleLidSwitch = "suspend-then-hibernate";
|
||||||
|
};
|
||||||
|
# sets the delay before hibernation for ^
|
||||||
|
systemd.sleep.extraConfig = ''
|
||||||
|
HibernateDelaySec=1800
|
||||||
|
'';
|
||||||
|
|
||||||
|
# boot (systemd is growing on me)
|
||||||
|
boot = {
|
||||||
|
kernelModules = [ "kvm-amd" ];
|
||||||
|
extraModulePackages = [];
|
||||||
|
loader = {
|
||||||
|
systemd-boot.enable = true; # systemd your pretty cool ya know
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
systemd.enable = true; # better logging
|
||||||
|
availableKernelModules = ["xhci_pci" "thunderbolt" "vmd" "nvme" "usb_storage" "sd_mod" "ahci"];
|
||||||
|
kernelModules = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# setup hostname and networking stack
|
||||||
|
networking = {
|
||||||
|
hostName = "mew"; # hostname
|
||||||
|
useDHCP = lib.mkDefault true;
|
||||||
|
interfaces = {
|
||||||
|
wlp7s0.useDHCP = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [22];
|
||||||
|
allowedUDPPorts = [51820]; # wireguard
|
||||||
|
};
|
||||||
|
networkmanager = {
|
||||||
|
enable = true; # the goat
|
||||||
|
dns = "systemd-resolved"; # the backup dancer!
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.resolved = {
|
||||||
|
enable = true;
|
||||||
|
fallbackDns = ["1.1.1.1" "9.9.9.9"];
|
||||||
|
dnsovertls = "opportunistic";
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
|
||||||
|
system.stateVersion = "25.05"; # stays here : )
|
||||||
|
|
||||||
|
# hardware shit
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
70
hosts/nixos/mew/disko.nix
Normal file
70
hosts/nixos/mew/disko.nix
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/disk/by-id/nvme-MTFDHBA512TDV-1AZ1AABHA_UJUND0170FW7O0"; # disk id here
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ESP = {
|
||||||
|
size = "1G";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = [ "umask=0077" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
luks = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "luks";
|
||||||
|
name = "crypted";
|
||||||
|
# disable settings.keyFile if you want to use interactive password entry
|
||||||
|
#passwordFile = "/tmp/secret.key"; # Interactive
|
||||||
|
settings = {
|
||||||
|
allowDiscards = true;
|
||||||
|
#keyFile = "/tmp/secret.key";
|
||||||
|
};
|
||||||
|
#additionalKeyFiles = [ "/tmp/additionalSecret.key" ];
|
||||||
|
content = {
|
||||||
|
type = "btrfs";
|
||||||
|
extraArgs = [ "-f" ];
|
||||||
|
subvolumes = {
|
||||||
|
"@root" = {
|
||||||
|
mountpoint = "/";
|
||||||
|
mountOptions = [
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"@home" = {
|
||||||
|
mountpoint = "/home";
|
||||||
|
mountOptions = [
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"@nix" = {
|
||||||
|
mountpoint = "/nix";
|
||||||
|
mountOptions = [
|
||||||
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"@swap" = {
|
||||||
|
mountpoint = "/.swapvol";
|
||||||
|
swap.swapfile.size = "32G";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -14,6 +14,7 @@ in
|
|||||||
../../../modules/holocron
|
../../../modules/holocron
|
||||||
../../../modules/homelab
|
../../../modules/homelab
|
||||||
../../../modules/gameservers/minecraft_recpro
|
../../../modules/gameservers/minecraft_recpro
|
||||||
|
../../../modules/gameservers/minecraft_modded
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.blake.imports = [
|
home-manager.users.blake.imports = [
|
||||||
@@ -66,6 +67,7 @@ in
|
|||||||
};
|
};
|
||||||
gameservers = {
|
gameservers = {
|
||||||
minecraft_recpro.enable = true;
|
minecraft_recpro.enable = true;
|
||||||
|
minecraft_modded.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# boot (systemd is going on me)
|
# boot (systemd is going on me)
|
||||||
|
|||||||
@@ -21,9 +21,12 @@
|
|||||||
# home grown nixos modules
|
# home grown nixos modules
|
||||||
system = {
|
system = {
|
||||||
secure_boot.enable = true;
|
secure_boot.enable = true;
|
||||||
|
cifs_mounts.enable = true;
|
||||||
|
udiskie.enable = true;
|
||||||
ssh.enable = true;
|
ssh.enable = true;
|
||||||
sops.enable = true;
|
sops.enable = true;
|
||||||
yubikey.enable = true;
|
yubikey.enable = true;
|
||||||
|
yubikey.lock_on_remove = true;
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
syncthing.enable = true;
|
syncthing.enable = true;
|
||||||
flatpak.enable = true;
|
flatpak.enable = true;
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ in {
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
lutris
|
lutris
|
||||||
|
wine
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ in {
|
|||||||
gamescopeSession.enable = true; # requires setting launch option `gamescope <options> -- %command%`
|
gamescopeSession.enable = true; # requires setting launch option `gamescope <options> -- %command%`
|
||||||
remotePlay.openFirewall = true; # open ports for remote play
|
remotePlay.openFirewall = true; # open ports for remote play
|
||||||
#dedicatedServer.openFirewall = true; # open ports for source dedicated server
|
#dedicatedServer.openFirewall = true; # open ports for source dedicated server
|
||||||
|
protontricks.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ in {
|
|||||||
programs.hyprland.enable = true;
|
programs.hyprland.enable = true;
|
||||||
|
|
||||||
# give hyprlock perms to unlock
|
# give hyprlock perms to unlock
|
||||||
security.pam.services.hyprlock = {};
|
security.pam.services.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
156
modules/gameservers/minecraft_modded/default.nix
Normal file
156
modules/gameservers/minecraft_modded/default.nix
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
service = "minecraft_modded";
|
||||||
|
cfg = config.gameservers.${service};
|
||||||
|
sec = config.sops.secrets;
|
||||||
|
servers = {
|
||||||
|
cobblemon = {
|
||||||
|
data_dir = "/var/lib/gameservers/minecraft_modded/cobblemon";
|
||||||
|
start_file = "start.sh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
options.gameservers.${service} = {
|
||||||
|
enable = lib.mkEnableOption "enables ${service}";
|
||||||
|
url = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "mc.recoil.pro";
|
||||||
|
description = "set domain for ${service}";
|
||||||
|
};
|
||||||
|
data_dir = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "/var/lib/gameservers/${service}";
|
||||||
|
description = "set data directory for ${service}";
|
||||||
|
};
|
||||||
|
ids = lib.mkOption {
|
||||||
|
type = lib.types.int;
|
||||||
|
default = 25565;
|
||||||
|
description = "set uid and pid of ${service} user (matches port by default)";
|
||||||
|
};
|
||||||
|
backup = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "enable backups for ${service}";
|
||||||
|
};
|
||||||
|
motd = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
default = "velocity";
|
||||||
|
};
|
||||||
|
backup_repo = lib.mkOption {
|
||||||
|
type = lib.types.path;
|
||||||
|
default = "/holocron/archives/gameservers/minecraft/modded";
|
||||||
|
description = "path to take hourly backups to with borg!";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
# declare ${service} user
|
||||||
|
users.users.minecraft = lib.mkDefault {
|
||||||
|
description = "minecraft server user";
|
||||||
|
uid = lib.mkForce cfg.ids;
|
||||||
|
isSystemUser = true;
|
||||||
|
shell = pkgs.bash;
|
||||||
|
group = "minecraft";
|
||||||
|
extraGroups = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules =
|
||||||
|
lib.attrsets.mapAttrsToList (
|
||||||
|
name: cfg: "d ${cfg.data_dir} 0770 minecraft minecraft -"
|
||||||
|
)
|
||||||
|
servers;
|
||||||
|
|
||||||
|
# Create a systemd service per server running in tmux
|
||||||
|
systemd.services =
|
||||||
|
lib.attrsets.mapAttrs (name: srv: {
|
||||||
|
description = "minecraft_recpro: ${name}";
|
||||||
|
after = ["network.target"];
|
||||||
|
wants = ["network.target"];
|
||||||
|
serviceConfig = {
|
||||||
|
User = "minecraft";
|
||||||
|
Group = "minecraft";
|
||||||
|
WorkingDirectory = srv.data_dir;
|
||||||
|
UMask = "0007";
|
||||||
|
ExecStart = "${pkgs.openjdk21}/bin/java -Xms4G -Xmx12G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true @libraries/net/neoforged/neoforge/21.1.211/unix_args.txt";
|
||||||
|
#ExecStart = "${srv.data_dir}/${srv.start_file}";
|
||||||
|
Restart = "on-failure";
|
||||||
|
KillMode = "process";
|
||||||
|
};
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
})
|
||||||
|
servers;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [openjdk21 mcrcon];
|
||||||
|
|
||||||
|
# services.mysql = {
|
||||||
|
# enable = true;
|
||||||
|
# package = pkgs.mariadb;
|
||||||
|
# ensureDatabases = ["minecraft_recpro_db"];
|
||||||
|
# ensureUsers = [
|
||||||
|
# {
|
||||||
|
# name = "minecraft";
|
||||||
|
# ensurePermissions = {"minecraft_recpro_db.*" = "ALL PRIVILEGES";};
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
# initialScript = pkgs.writeText "minecraft_recpro-init.sql" ''
|
||||||
|
# CREATE USER IF NOT EXISTS 'minecraft_recpro'@'localhost' IDENTIFIED BY 'IKNOWTHISISBADIJUSTNEEDTHISTOWORKRNPLS';
|
||||||
|
# GRANT ALL PRIVILEGES ON minecraft_recpro_db.* TO 'minecraft_recpro'@'localhost';
|
||||||
|
# FLUSH PRIVILEGES;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
|
||||||
|
# open firewall
|
||||||
|
networking.firewall.allowedTCPPorts = [25778];
|
||||||
|
|
||||||
|
# sops.secrets = {
|
||||||
|
# "velocity_forwarding" = {
|
||||||
|
# owner = "minecraft";
|
||||||
|
# group = "minecraft";
|
||||||
|
# path = "/var/lib/gameservers/minecraft_recpro/velocity/forwarding.secret";
|
||||||
|
# mode = "0400";
|
||||||
|
# };
|
||||||
|
# "minecraft_recpro_db_passwd" = {
|
||||||
|
# owner = "mysql";
|
||||||
|
# group = "mysql";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
# backups minecraft_recpro with borg!
|
||||||
|
services.borgbackup.jobs.${service} = {
|
||||||
|
archiveBaseName = service;
|
||||||
|
repo = cfg.backup_repo;
|
||||||
|
paths = lib.flatten (
|
||||||
|
lib.attrValues (
|
||||||
|
lib.mapAttrs (_: srv:
|
||||||
|
[srv.data_dir]
|
||||||
|
++ (
|
||||||
|
if builtins.hasAttr "db_dump" srv
|
||||||
|
then [srv.db_dump]
|
||||||
|
else []
|
||||||
|
))
|
||||||
|
servers
|
||||||
|
)
|
||||||
|
);
|
||||||
|
compression = "auto,zstd";
|
||||||
|
#preHook = "systemctl start mysql-backup.service";
|
||||||
|
startAt = "*-*-* *:00:00";
|
||||||
|
group = "archives";
|
||||||
|
encryption.mode = "repokey-blake2";
|
||||||
|
encryption.passCommand = "cat ${config.sops.secrets."borg_passwd".path}";
|
||||||
|
extraArgs = ["--verbose" "--show-rc" "--umask" "0007"];
|
||||||
|
extraCreateArgs = ["--list" "--stats" "--filter" "AME"];
|
||||||
|
prune.keep = {
|
||||||
|
within = "1d"; # Keep all archives from the last day
|
||||||
|
hourly = 24;
|
||||||
|
daily = 7;
|
||||||
|
weekly = 12;
|
||||||
|
monthly = -1; # Keep at least one archive for each month
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -22,7 +22,7 @@ in {
|
|||||||
dataDir = "/var/lib/syncthing";
|
dataDir = "/var/lib/syncthing";
|
||||||
guiAddress = "0.0.0.0:2222";
|
guiAddress = "0.0.0.0:2222";
|
||||||
openDefaultPorts = true;
|
openDefaultPorts = true;
|
||||||
extraFlags = ["--no-default-folder"];
|
#extraFlags = ["--no-default-folder"];
|
||||||
key = sec."${service}/snowbelle/key".path;
|
key = sec."${service}/snowbelle/key".path;
|
||||||
cert = sec."${service}/snowbelle/cert".path;
|
cert = sec."${service}/snowbelle/cert".path;
|
||||||
settings = {
|
settings = {
|
||||||
@@ -31,11 +31,12 @@ in {
|
|||||||
"zygarde" = {id = "UYLTF52-VVKUR7F-JN33HQZ-RFNWGL3-JER52LA-GZD2LPJ-QIFEE7K-MNMZRQ5";};
|
"zygarde" = {id = "UYLTF52-VVKUR7F-JN33HQZ-RFNWGL3-JER52LA-GZD2LPJ-QIFEE7K-MNMZRQ5";};
|
||||||
"yveltal" = {id = "ZVSQ4WJ-7OICYOZ-3ECES4X-KH37IPB-TKHKUJG-BSEGXVM-AHYY5C3-VKG44AX";};
|
"yveltal" = {id = "ZVSQ4WJ-7OICYOZ-3ECES4X-KH37IPB-TKHKUJG-BSEGXVM-AHYY5C3-VKG44AX";};
|
||||||
"CEN-IT-07" = {id = "DPYKA4Z-3PX7JB2-FBEOXXX-SC7TLT2-QC5P2IR-SXOPJGX-QO3DMII-5B7UCA4";};
|
"CEN-IT-07" = {id = "DPYKA4Z-3PX7JB2-FBEOXXX-SC7TLT2-QC5P2IR-SXOPJGX-QO3DMII-5B7UCA4";};
|
||||||
|
"CEN-IT-00007" = {id = "XBPXGYU-DUJSLDH-6BDNF4D-CO2COC3-N3FM6W5-IHZOJBM-Z2N77RI-IVAV5AH";};
|
||||||
};
|
};
|
||||||
folders = {
|
folders = {
|
||||||
"holocron" = {
|
"holocron" = {
|
||||||
path = "/holocron/users/blake/holocron";
|
path = "/holocron/users/blake/holocron";
|
||||||
devices = ["lugia" "zygarde" "CEN-IT-07" "yveltal"];
|
devices = ["lugia" "zygarde" "CEN-IT-07" "CEN-IT-00007" "yveltal"];
|
||||||
id = "5voxg-c3he2";
|
id = "5voxg-c3he2";
|
||||||
versioning = {
|
versioning = {
|
||||||
type = "staggered";
|
type = "staggered";
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ in
|
|||||||
# add to caddy for reverse proxy
|
# add to caddy for reverse proxy
|
||||||
services.caddy.virtualHosts."${cfg.url}" = {
|
services.caddy.virtualHosts."${cfg.url}" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
tls ${sec."ssl_blakedheld_crt".path} ${sec."ssl_blakedheld_key".path}
|
tls internal
|
||||||
reverse_proxy 127.0.0.1:${toString cfg.port}
|
reverse_proxy 127.0.0.1:${toString cfg.port}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ in
|
|||||||
# add to caddy for reverse proxy
|
# add to caddy for reverse proxy
|
||||||
services.caddy.virtualHosts."${cfg.url}" = {
|
services.caddy.virtualHosts."${cfg.url}" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
tls ${sec."ssl_blakedheld_crt".path} ${sec."ssl_blakedheld_key".path}
|
tls internal
|
||||||
reverse_proxy 127.0.0.1:${toString cfg.port}
|
reverse_proxy 127.0.0.1:${toString cfg.port}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ in
|
|||||||
# add to caddy for reverse proxy
|
# add to caddy for reverse proxy
|
||||||
services.caddy.virtualHosts."${cfg.url}" = {
|
services.caddy.virtualHosts."${cfg.url}" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
tls ${sec."ssl_blakedheld_crt".path} ${sec."ssl_blakedheld_key".path}
|
tls internal
|
||||||
reverse_proxy 127.0.0.1:${toString cfg.port}
|
reverse_proxy 127.0.0.1:${toString cfg.port}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ in
|
|||||||
# add to caddy for reverse proxy
|
# add to caddy for reverse proxy
|
||||||
services.caddy.virtualHosts."${cfg.url}" = {
|
services.caddy.virtualHosts."${cfg.url}" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
tls ${sec."ssl_blakedheld_crt".path} ${sec."ssl_blakedheld_key".path}
|
tls internal
|
||||||
reverse_proxy 127.0.0.1:${toString cfg.port}
|
reverse_proxy 127.0.0.1:${toString cfg.port}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -83,8 +83,9 @@ in
|
|||||||
|
|
||||||
# add to caddy for reverse proxy
|
# add to caddy for reverse proxy
|
||||||
services.caddy.virtualHosts."${cfg.url}" = {
|
services.caddy.virtualHosts."${cfg.url}" = {
|
||||||
|
# tls ${sec."ssl_blakedheld_crt".path} ${sec."ssl_blakedheld_key".path}
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
tls ${sec."ssl_blakedheld_crt".path} ${sec."ssl_blakedheld_key".path}
|
tls internal
|
||||||
reverse_proxy 127.0.0.1:${toString cfg.port}
|
reverse_proxy 127.0.0.1:${toString cfg.port}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ in {
|
|||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
listen-address = "10.10.0.10"; # your LAN IP
|
listen-address = "10.10.0.10"; # your LAN IP
|
||||||
|
#interface = "enp89s0";
|
||||||
bind-interfaces = true;
|
bind-interfaces = true;
|
||||||
address = "/snowbelle.lan/10.10.0.10";
|
address = "/snowbelle.lan/10.10.0.10";
|
||||||
server = [ # upstream dns
|
server = [ # upstream dns
|
||||||
|
|||||||
@@ -94,8 +94,9 @@ in
|
|||||||
# SSH_ROOT_PATH = "${cfg.data_dir}/.ssh";
|
# SSH_ROOT_PATH = "${cfg.data_dir}/.ssh";
|
||||||
# SSH_CREATE_AUTHORIZED_KEYS_FILE = true;
|
# SSH_CREATE_AUTHORIZED_KEYS_FILE = true;
|
||||||
# actual git config
|
# actual git config
|
||||||
|
DEFAULT_BRANCH = "trunk";
|
||||||
ENABLE_PUSH_CREATE_USER = true;
|
ENABLE_PUSH_CREATE_USER = true;
|
||||||
|
DEFAULT_PUSH_CREATE_PRIVATE = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
database = {
|
database = {
|
||||||
|
|||||||
@@ -242,6 +242,13 @@ in
|
|||||||
cache = "5s";
|
cache = "5s";
|
||||||
template = "<div style=\"display:flex; align-items:center; gap:12px;\">\n <div style=\"width:40px; height:40px; flex-shrink:0; border-radius:4px; display:flex; justify-content:center; align-items:center; overflow:hidden;\">\n {{ if .JSON.Bool \"online\" }}\n <img src=\"{{ .JSON.String \"icon\" | safeURL }}\" width=\"64\" height=\"64\" style=\"object-fit:contain;\">\n {{ else }}\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" style=\"width:32px; height:32px; opacity:0.5;\">\n <path fill-rule=\"evenodd\" d=\"M1 5.25A2.25 2.25 0 0 1 3.25 3h13.5A2.25 2.25 0 0 1 19 5.25v9.5A2.25 2.25 0 0 1 16.75 17H3.25A2.25 2.25 0 0 1 1 14.75v-9.5Zm1.5 5.81v3.69c0 .414.336.75.75.75h13.5a.75.75 0 0 0 .75-.75v-2.69l-2.22-2.219a.75.75 0 0 0-1.06 0l-1.91 1.909.47.47a.75.75 0 1 1-1.06 1.06L6.53 8.091a.75.75 0 0 0-1.06 0l-2.97 2.97ZM12 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\" clip-rule=\"evenodd\" />\n </svg>\n {{ end }}\n </div>\n\n <div style=\"flex-grow:1; min-width:0;\">\n <a class=\"size-h4 block text-truncate color-highlight\">\n {{ .JSON.String \"host\" }}\n {{ if .JSON.Bool \"online\" }}\n <span\n style=\"width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-positive); display: inline-block; vertical-align: middle;\"\n data-popover-type=\"text\"\n data-popover-text=\"Online\"\n ></span>\n {{ else }}\n <span\n style=\"width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-negative); display: inline-block; vertical-align: middle;\"\n data-popover-type=\"text\"\n data-popover-text=\"Offline\"\n ></span>\n {{ end }}\n </a>\n\n <ul class=\"list-horizontal-text\">\n <li>\n {{ if .JSON.Bool \"online\" }}\n <span>{{ .JSON.String \"version.name_clean\" }}</span>\n {{ else }}\n <span>Offline</span>\n {{ end }}\n </li>\n {{ if .JSON.Bool \"online\" }}\n <li data-popover-type=\"html\">\n <div data-popover-html>\n {{ range .JSON.Array \"players.list\" }}{{ .String \"name_clean\" }}<br>{{ end }}\n </div>\n <p style=\"display:inline-flex;align-items:center;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"size-6\" style=\"height:1em;vertical-align:middle;margin-right:0.5em;\">\n <path fill-rule=\"evenodd\" d=\"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\" clip-rule=\"evenodd\" />\n </svg>\n {{ .JSON.Int \"players.online\" | formatNumber }}/{{ .JSON.Int \"players.max\" | formatNumber }} players\n </p>\n </li>\n {{ else }}\n <li>\n <p style=\"display:inline-flex;align-items:center;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"size-6\" style=\"height:1em;vertical-align:middle;margin-right:0.5em;opacity:0.5;\">\n <path fill-rule=\"evenodd\" d=\"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\" clip-rule=\"evenodd\" />\n </svg>\n 0 players\n </p>\n </li>\n {{ end }}\n </ul>\n </div>\n</div>";
|
template = "<div style=\"display:flex; align-items:center; gap:12px;\">\n <div style=\"width:40px; height:40px; flex-shrink:0; border-radius:4px; display:flex; justify-content:center; align-items:center; overflow:hidden;\">\n {{ if .JSON.Bool \"online\" }}\n <img src=\"{{ .JSON.String \"icon\" | safeURL }}\" width=\"64\" height=\"64\" style=\"object-fit:contain;\">\n {{ else }}\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" style=\"width:32px; height:32px; opacity:0.5;\">\n <path fill-rule=\"evenodd\" d=\"M1 5.25A2.25 2.25 0 0 1 3.25 3h13.5A2.25 2.25 0 0 1 19 5.25v9.5A2.25 2.25 0 0 1 16.75 17H3.25A2.25 2.25 0 0 1 1 14.75v-9.5Zm1.5 5.81v3.69c0 .414.336.75.75.75h13.5a.75.75 0 0 0 .75-.75v-2.69l-2.22-2.219a.75.75 0 0 0-1.06 0l-1.91 1.909.47.47a.75.75 0 1 1-1.06 1.06L6.53 8.091a.75.75 0 0 0-1.06 0l-2.97 2.97ZM12 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\" clip-rule=\"evenodd\" />\n </svg>\n {{ end }}\n </div>\n\n <div style=\"flex-grow:1; min-width:0;\">\n <a class=\"size-h4 block text-truncate color-highlight\">\n {{ .JSON.String \"host\" }}\n {{ if .JSON.Bool \"online\" }}\n <span\n style=\"width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-positive); display: inline-block; vertical-align: middle;\"\n data-popover-type=\"text\"\n data-popover-text=\"Online\"\n ></span>\n {{ else }}\n <span\n style=\"width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-negative); display: inline-block; vertical-align: middle;\"\n data-popover-type=\"text\"\n data-popover-text=\"Offline\"\n ></span>\n {{ end }}\n </a>\n\n <ul class=\"list-horizontal-text\">\n <li>\n {{ if .JSON.Bool \"online\" }}\n <span>{{ .JSON.String \"version.name_clean\" }}</span>\n {{ else }}\n <span>Offline</span>\n {{ end }}\n </li>\n {{ if .JSON.Bool \"online\" }}\n <li data-popover-type=\"html\">\n <div data-popover-html>\n {{ range .JSON.Array \"players.list\" }}{{ .String \"name_clean\" }}<br>{{ end }}\n </div>\n <p style=\"display:inline-flex;align-items:center;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"size-6\" style=\"height:1em;vertical-align:middle;margin-right:0.5em;\">\n <path fill-rule=\"evenodd\" d=\"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\" clip-rule=\"evenodd\" />\n </svg>\n {{ .JSON.Int \"players.online\" | formatNumber }}/{{ .JSON.Int \"players.max\" | formatNumber }} players\n </p>\n </li>\n {{ else }}\n <li>\n <p style=\"display:inline-flex;align-items:center;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"size-6\" style=\"height:1em;vertical-align:middle;margin-right:0.5em;opacity:0.5;\">\n <path fill-rule=\"evenodd\" d=\"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\" clip-rule=\"evenodd\" />\n </svg>\n 0 players\n </p>\n </li>\n {{ end }}\n </ul>\n </div>\n</div>";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
type = "custom-api";
|
||||||
|
title = "cobblemon";
|
||||||
|
url = "https://api.mcstatus.io/v2/status/java/cobblemon.recoil.pro";
|
||||||
|
cache = "5s";
|
||||||
|
template = "<div style=\"display:flex; align-items:center; gap:12px;\">\n <div style=\"width:40px; height:40px; flex-shrink:0; border-radius:4px; display:flex; justify-content:center; align-items:center; overflow:hidden;\">\n {{ if .JSON.Bool \"online\" }}\n <img src=\"{{ .JSON.String \"icon\" | safeURL }}\" width=\"64\" height=\"64\" style=\"object-fit:contain;\">\n {{ else }}\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" style=\"width:32px; height:32px; opacity:0.5;\">\n <path fill-rule=\"evenodd\" d=\"M1 5.25A2.25 2.25 0 0 1 3.25 3h13.5A2.25 2.25 0 0 1 19 5.25v9.5A2.25 2.25 0 0 1 16.75 17H3.25A2.25 2.25 0 0 1 1 14.75v-9.5Zm1.5 5.81v3.69c0 .414.336.75.75.75h13.5a.75.75 0 0 0 .75-.75v-2.69l-2.22-2.219a.75.75 0 0 0-1.06 0l-1.91 1.909.47.47a.75.75 0 1 1-1.06 1.06L6.53 8.091a.75.75 0 0 0-1.06 0l-2.97 2.97ZM12 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\" clip-rule=\"evenodd\" />\n </svg>\n {{ end }}\n </div>\n\n <div style=\"flex-grow:1; min-width:0;\">\n <a class=\"size-h4 block text-truncate color-highlight\">\n {{ .JSON.String \"host\" }}\n {{ if .JSON.Bool \"online\" }}\n <span\n style=\"width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-positive); display: inline-block; vertical-align: middle;\"\n data-popover-type=\"text\"\n data-popover-text=\"Online\"\n ></span>\n {{ else }}\n <span\n style=\"width: 8px; height: 8px; border-radius: 50%; background-color: var(--color-negative); display: inline-block; vertical-align: middle;\"\n data-popover-type=\"text\"\n data-popover-text=\"Offline\"\n ></span>\n {{ end }}\n </a>\n\n <ul class=\"list-horizontal-text\">\n <li>\n {{ if .JSON.Bool \"online\" }}\n <span>{{ .JSON.String \"version.name_clean\" }}</span>\n {{ else }}\n <span>Offline</span>\n {{ end }}\n </li>\n {{ if .JSON.Bool \"online\" }}\n <li data-popover-type=\"html\">\n <div data-popover-html>\n {{ range .JSON.Array \"players.list\" }}{{ .String \"name_clean\" }}<br>{{ end }}\n </div>\n <p style=\"display:inline-flex;align-items:center;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"size-6\" style=\"height:1em;vertical-align:middle;margin-right:0.5em;\">\n <path fill-rule=\"evenodd\" d=\"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\" clip-rule=\"evenodd\" />\n </svg>\n {{ .JSON.Int \"players.online\" | formatNumber }}/{{ .JSON.Int \"players.max\" | formatNumber }} players\n </p>\n </li>\n {{ else }}\n <li>\n <p style=\"display:inline-flex;align-items:center;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"size-6\" style=\"height:1em;vertical-align:middle;margin-right:0.5em;opacity:0.5;\">\n <path fill-rule=\"evenodd\" d=\"M7.5 6a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM3.751 20.105a8.25 8.25 0 0 1 16.498 0 .75.75 0 0 1-.437.695A18.683 18.683 0 0 1 12 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 0 1-.437-.695Z\" clip-rule=\"evenodd\" />\n </svg>\n 0 players\n </p>\n </li>\n {{ end }}\n </ul>\n </div>\n</div>";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ in {
|
|||||||
|
|
||||||
# --- gameservers ---
|
# --- gameservers ---
|
||||||
echo -e "''${headings}gameservers:''${reset}"
|
echo -e "''${headings}gameservers:''${reset}"
|
||||||
for service in velocity smp superflat bento; do
|
for service in velocity smp superflat bento cobblemon; do
|
||||||
status=$(systemctl is-active $service 2>/dev/null)
|
status=$(systemctl is-active $service 2>/dev/null)
|
||||||
if [ "$status" = "active" ]; then
|
if [ "$status" = "active" ]; then
|
||||||
printf "%-32s%s\n" " ''${active}[$service]''${reset}" "running"
|
printf "%-32s%s\n" " ''${active}[$service]''${reset}" "running"
|
||||||
|
|||||||
@@ -60,13 +60,11 @@ in {
|
|||||||
# enable the ${service} service
|
# enable the ${service} service
|
||||||
services.postfix = {
|
services.postfix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
relayHost = "smtp.gmail.com";
|
settings.main = {
|
||||||
relayPort = cfg.port;
|
relayhost = ["smtp.gmail.com:${toString cfg.port}"];
|
||||||
config = {
|
|
||||||
#smtp_use_tls = "yes";
|
|
||||||
smtp_tls_security_level = "may";
|
smtp_tls_security_level = "may";
|
||||||
smtp_sasl_auth_enable = "yes";
|
smtp_sasl_auth_enable = "yes";
|
||||||
smtp_sasl_security_options = "";
|
smtp_sasl_security_options = "noanonymous";
|
||||||
smtp_sasl_password_maps = "texthash:${config.sops.secrets."postfix_passwd".path}";
|
smtp_sasl_password_maps = "texthash:${config.sops.secrets."postfix_passwd".path}";
|
||||||
# optional: Forward mails to root (e.g. from cron jobs, smartd)
|
# optional: Forward mails to root (e.g. from cron jobs, smartd)
|
||||||
# to me privately and to my work email:
|
# to me privately and to my work email:
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ in
|
|||||||
# add to caddy for reverse proxy
|
# add to caddy for reverse proxy
|
||||||
services.caddy.virtualHosts."${cfg.url}" = {
|
services.caddy.virtualHosts."${cfg.url}" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
tls ${sec."ssl_blakedheld_crt".path} ${sec."ssl_blakedheld_key".path}
|
tls internal
|
||||||
reverse_proxy 127.0.0.1:${toString cfg.port}
|
reverse_proxy 127.0.0.1:${toString cfg.port}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
72
modules/system/cifs_mounts/default.nix
Normal file
72
modules/system/cifs_mounts/default.nix
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.system.cifs_mounts;
|
||||||
|
sec = config.sops.secrets;
|
||||||
|
in {
|
||||||
|
options.system.cifs_mounts = {
|
||||||
|
enable = lib.mkEnableOption "enables mounting holocron fileshare on the client side";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
cifs-utils
|
||||||
|
];
|
||||||
|
|
||||||
|
fileSystems."/media/holocron/blake" = {
|
||||||
|
device = "//10.10.0.10/users/blake";
|
||||||
|
fsType = "cifs";
|
||||||
|
options = [
|
||||||
|
"x-systemd.automount"
|
||||||
|
"noauto"
|
||||||
|
"_netdev"
|
||||||
|
"credentials=${sec."holocron_creds".path}"
|
||||||
|
"uid=1000"
|
||||||
|
"gid=1000"
|
||||||
|
"file_mode=0664"
|
||||||
|
"dir_mode=0775"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
fileSystems."/media/holocron/archives" = {
|
||||||
|
device = "//10.10.0.10/archives";
|
||||||
|
fsType = "cifs";
|
||||||
|
options = [
|
||||||
|
"x-systemd.automount"
|
||||||
|
"noauto"
|
||||||
|
"_netdev"
|
||||||
|
"credentials=${sec."holocron_creds".path}"
|
||||||
|
"uid=1000"
|
||||||
|
"gid=1000"
|
||||||
|
"file_mode=0664"
|
||||||
|
"dir_mode=0775"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
fileSystems."/media/holocron/media" = {
|
||||||
|
device = "//10.10.0.10/media";
|
||||||
|
fsType = "cifs";
|
||||||
|
options = [
|
||||||
|
"x-systemd.automount"
|
||||||
|
"noauto"
|
||||||
|
"_netdev"
|
||||||
|
"credentials=${sec."holocron_creds".path}"
|
||||||
|
"uid=1000"
|
||||||
|
"gid=1000"
|
||||||
|
"file_mode=0664"
|
||||||
|
"dir_mode=0775"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# manage secrets with sops
|
||||||
|
sops.secrets = {
|
||||||
|
"holocron_creds" = {
|
||||||
|
owner = "blake";
|
||||||
|
group = "blake";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -11,12 +11,15 @@
|
|||||||
./podman
|
./podman
|
||||||
./yubikey
|
./yubikey
|
||||||
./tailscale
|
./tailscale
|
||||||
|
./japanese
|
||||||
./vpns
|
./vpns
|
||||||
./vpn-confinement
|
./vpn-confinement
|
||||||
./syncthing
|
./syncthing
|
||||||
./graphics
|
./graphics
|
||||||
./flatpak
|
./flatpak
|
||||||
./secure_boot
|
./secure_boot
|
||||||
|
./cifs_mounts
|
||||||
|
./udiskie
|
||||||
];
|
];
|
||||||
|
|
||||||
system.ssh.enable = lib.mkDefault true;
|
system.ssh.enable = lib.mkDefault true;
|
||||||
|
|||||||
@@ -57,12 +57,10 @@ in {
|
|||||||
|
|
||||||
# enable amd vulkan (program will choose this or regular)
|
# enable amd vulkan (program will choose this or regular)
|
||||||
hardware.graphics.extraPackages = with pkgs; [
|
hardware.graphics.extraPackages = with pkgs; [
|
||||||
amdvlk
|
|
||||||
rocmPackages.clr.icd # enable open cl (compute framework like cuda)
|
rocmPackages.clr.icd # enable open cl (compute framework like cuda)
|
||||||
];
|
];
|
||||||
# ^ but 32 bit
|
# ^ but 32 bit
|
||||||
hardware.graphics.extraPackages32 = with pkgs; [
|
hardware.graphics.extraPackages32 = with pkgs; [
|
||||||
driversi686Linux.amdvlk
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# make hip work (extension on cli.icd ^)
|
# make hip work (extension on cli.icd ^)
|
||||||
|
|||||||
52
modules/system/japanese/default.nix
Normal file
52
modules/system/japanese/default.nix
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.system.japanese;
|
||||||
|
in {
|
||||||
|
options.system.japanese = {
|
||||||
|
enable = lib.mkEnableOption "enables japanese tools";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
# japanese input
|
||||||
|
i18n.inputMethod = {
|
||||||
|
enabled = "fcitx5";
|
||||||
|
|
||||||
|
fcitx5.addons = with pkgs; [
|
||||||
|
fcitx5-mozc
|
||||||
|
fcitx5-gtk
|
||||||
|
fcitx5-qt
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
fcitx5
|
||||||
|
fcitx5-configtool
|
||||||
|
];
|
||||||
|
|
||||||
|
# fonts for japanese
|
||||||
|
fonts = {
|
||||||
|
enableDefaultPackages = true;
|
||||||
|
packages = with pkgs; [
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk
|
||||||
|
noto-fonts-emoji
|
||||||
|
source-han-sans
|
||||||
|
source-han-serif
|
||||||
|
];
|
||||||
|
|
||||||
|
fontconfig = {
|
||||||
|
defaultFonts = {
|
||||||
|
serif = [ "Noto Serif CJK JP" ];
|
||||||
|
sansSerif = [ "Noto Sans CJK JP" ];
|
||||||
|
monospace = [ "Noto Sans Mono CJK JP" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -13,7 +13,7 @@ in
|
|||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
PasswordAuthentication = true;
|
PasswordAuthentication = false;
|
||||||
PermitRootLogin = "no";
|
PermitRootLogin = "no";
|
||||||
X11Forwarding = false;
|
X11Forwarding = false;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -34,13 +34,15 @@ in {
|
|||||||
"snowbelle" = {id = "6WQ6ATA-5AT4RUM-NW67PAL-N62CPNV-ALRFG3P-5BDRO22-HWFC2Q4-5S5BDA5";};
|
"snowbelle" = {id = "6WQ6ATA-5AT4RUM-NW67PAL-N62CPNV-ALRFG3P-5BDRO22-HWFC2Q4-5S5BDA5";};
|
||||||
"lugia" = {id = "BKKSFPH-YEOVVAB-DTT7KK3-UDKAEJ2-PC6ECG7-Y76ZIVP-JRYMMXS-RTZYVQ3";};
|
"lugia" = {id = "BKKSFPH-YEOVVAB-DTT7KK3-UDKAEJ2-PC6ECG7-Y76ZIVP-JRYMMXS-RTZYVQ3";};
|
||||||
"zygarde" = {id = "UYLTF52-VVKUR7F-JN33HQZ-RFNWGL3-JER52LA-GZD2LPJ-QIFEE7K-MNMZRQ5";};
|
"zygarde" = {id = "UYLTF52-VVKUR7F-JN33HQZ-RFNWGL3-JER52LA-GZD2LPJ-QIFEE7K-MNMZRQ5";};
|
||||||
|
"mew" = {id = "7ZC2NAS-QONQKAL-Z54NPMB-7TRXM6M-K7Z6PZD-FG4AI4H-V7SMFJN-JOYBHQO";};
|
||||||
"yveltal" = {id = "ZVSQ4WJ-7OICYOZ-3ECES4X-KH37IPB-TKHKUJG-BSEGXVM-AHYY5C3-VKG44AX";};
|
"yveltal" = {id = "ZVSQ4WJ-7OICYOZ-3ECES4X-KH37IPB-TKHKUJG-BSEGXVM-AHYY5C3-VKG44AX";};
|
||||||
"CEN-IT-07" = {id = "DPYKA4Z-3PX7JB2-FBEOXXX-SC7TLT2-QC5P2IR-SXOPJGX-QO3DMII-5B7UCA4";};
|
"CEN-IT-07" = {id = "DPYKA4Z-3PX7JB2-FBEOXXX-SC7TLT2-QC5P2IR-SXOPJGX-QO3DMII-5B7UCA4";};
|
||||||
|
"CEN-IT-00007" = {id = "XBPXGYU-DUJSLDH-6BDNF4D-CO2COC3-N3FM6W5-IHZOJBM-Z2N77RI-IVAV5AH";};
|
||||||
};
|
};
|
||||||
folders = {
|
folders = {
|
||||||
"holocron" = {
|
"holocron" = {
|
||||||
path = "/home/blake/holocron";
|
path = "/home/blake/holocron";
|
||||||
devices = ["lugia" "zygarde" "CEN-IT-07" "snowbelle"];
|
devices = ["lugia" "zygarde" "mew" "yveltal" "CEN-IT-07" "CEN-IT-00007" "snowbelle"];
|
||||||
id = "5voxg-c3he2";
|
id = "5voxg-c3he2";
|
||||||
versioning = {
|
versioning = {
|
||||||
type = "staggered";
|
type = "staggered";
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ in {
|
|||||||
"--accept-dns=true" # explicitly allow resolved
|
"--accept-dns=true" # explicitly allow resolved
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
systemd.services.tailscaled = {
|
||||||
|
after = [ "remote-fs.target" ]; # keep tailscale up until remote mounts are unmounted
|
||||||
|
};
|
||||||
|
|
||||||
# network config
|
# network config
|
||||||
networking.firewall.trustedInterfaces = ["tailscale0"];
|
networking.firewall.trustedInterfaces = ["tailscale0"];
|
||||||
|
|||||||
16
modules/system/udiskie/default.nix
Normal file
16
modules/system/udiskie/default.nix
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.system.udiskie;
|
||||||
|
in {
|
||||||
|
options.system.udiskie = {
|
||||||
|
enable = lib.mkEnableOption "enable udiskie for automount on nixos side";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.udisks2.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
/*
|
/*
|
||||||
# to enroll a yubikey (works like .ssh/known_hosts)
|
# to enroll a yubikey with pam (works like .ssh/known_hosts)
|
||||||
nix-shell -p pam_u2f
|
nix-shell -p pam_u2f
|
||||||
mkdir -p ~/.config/Yubico
|
mkdir -p ~/.config/Yubico
|
||||||
pamu2fcfg > ~/.config/Yubico/u2f_keys
|
pamu2fcfg > ~/.config/Yubico/u2f_keys
|
||||||
@@ -15,6 +15,9 @@ pamu2fcfg -n >> ~/.config/Yubico/u2f_keys (to add additional yubikeys)
|
|||||||
nix-shell -p pamtester
|
nix-shell -p pamtester
|
||||||
pamtester login <username> authenticate
|
pamtester login <username> authenticate
|
||||||
pamtester sudo <username> authenticate
|
pamtester sudo <username> authenticate
|
||||||
|
|
||||||
|
# to enroll yubikey with luks
|
||||||
|
`sudo systemd-cryptenroll --fido2-device=auto /dev/<disk>`
|
||||||
*/
|
*/
|
||||||
let
|
let
|
||||||
service = "yubikey";
|
service = "yubikey";
|
||||||
@@ -43,9 +46,18 @@ in {
|
|||||||
yubikey-manager
|
yubikey-manager
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# enable smartcard
|
||||||
|
services.pcscd.enable = true;
|
||||||
|
|
||||||
|
# enables it for everything
|
||||||
|
security.pam.u2f = lib.mkIf (cfg.mode == "u2f") {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# selectivlt edit what u2f is enabled for
|
||||||
security.pam.services = lib.mkIf (cfg.mode == "u2f") {
|
security.pam.services = lib.mkIf (cfg.mode == "u2f") {
|
||||||
login.u2fAuth = true;
|
#login.u2fAuth = true;
|
||||||
sudo.u2fAuth = true;
|
#sudo.u2fAuth = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
security.pam.yubico = lib.mkIf (cfg.mode == "challenge-response") {
|
security.pam.yubico = lib.mkIf (cfg.mode == "challenge-response") {
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ klefki_auth_map: ENC[AES256_GCM,data:u8OBLtT/,iv:THW21BDyhyFIjcwixsAnaAODofxbuQZ
|
|||||||
tailscale_authkey: ENC[AES256_GCM,data:SU0k3asrJd+WZ86VbC4w8TDJp+MqsbyagrzCfDcgTzO5yvBjpWAKbJ7A+VxgQvdu4+S2jMYbdrONPp3YbQ==,iv:VMYmGVk5GpUQApKKQYhdOw/cYCXrXxEZJJwHfQL4MjQ=,tag:7ruaoCDxuFQ7tE/JLJ37Xw==,type:str]
|
tailscale_authkey: ENC[AES256_GCM,data:SU0k3asrJd+WZ86VbC4w8TDJp+MqsbyagrzCfDcgTzO5yvBjpWAKbJ7A+VxgQvdu4+S2jMYbdrONPp3YbQ==,iv:VMYmGVk5GpUQApKKQYhdOw/cYCXrXxEZJJwHfQL4MjQ=,tag:7ruaoCDxuFQ7tE/JLJ37Xw==,type:str]
|
||||||
#ENC[AES256_GCM,data:bEbCic+ZDAA5ieNedCbiVbJrse17,iv:UwRYlis6NPB/RUcv+YnPxrGdbIcF4hrNiZt19YvWZNQ=,tag:m6PVlzPNnahX7X7KzMUj7A==,type:comment]
|
#ENC[AES256_GCM,data:bEbCic+ZDAA5ieNedCbiVbJrse17,iv:UwRYlis6NPB/RUcv+YnPxrGdbIcF4hrNiZt19YvWZNQ=,tag:m6PVlzPNnahX7X7KzMUj7A==,type:comment]
|
||||||
borg_passwd: ENC[AES256_GCM,data:XOMJtr+DRs7xn5Iclc49iTzK9cFJyc/fSXJjhdKa9jdN,iv:YB8z7zNYjh6NpSxQb1TfPxAYUdzThdVfNZIe6tO5grA=,tag:bO6kZ3cLJDL4IQoWmGvRdg==,type:str]
|
borg_passwd: ENC[AES256_GCM,data:XOMJtr+DRs7xn5Iclc49iTzK9cFJyc/fSXJjhdKa9jdN,iv:YB8z7zNYjh6NpSxQb1TfPxAYUdzThdVfNZIe6tO5grA=,tag:bO6kZ3cLJDL4IQoWmGvRdg==,type:str]
|
||||||
|
#ENC[AES256_GCM,data:ztRwuY0mTMDmwV5HqVR7Dmc+dCWcrVRtWZGEL1abE/WUcA==,iv:mmaWfHRiENJUGNhyUBFo1z7PdzVPH1OUZrVhkce6KV0=,tag:GKEvT0qkzTtimQXDueKPdw==,type:comment]
|
||||||
|
holocron_creds: ENC[AES256_GCM,data:2QXtXrN5w0UFn70GZOsYFPdtPwjLcuUdtkEam5aZ83N6LEDqPWJi,iv:kUS9pq5CX19vqHumc6QjY+Xpd4N+Ge7oCcQYtMFh+WM=,tag:IUA1ZVThF91EdHrwmS624g==,type:str]
|
||||||
#ENC[AES256_GCM,data:VdbMrwGKUKNJHw==,iv:OLwBh6KQXR/H8eRgp/hH8k3QfIkK/ydL735kx/dpc8E=,tag:N+v+ym6RMbvW4IckbiLK8Q==,type:comment]
|
#ENC[AES256_GCM,data:VdbMrwGKUKNJHw==,iv:OLwBh6KQXR/H8eRgp/hH8k3QfIkK/ydL735kx/dpc8E=,tag:N+v+ym6RMbvW4IckbiLK8Q==,type:comment]
|
||||||
syncthing:
|
syncthing:
|
||||||
gui_passwd: ENC[AES256_GCM,data:CicGIe5dT8lJVchCcE4wg3E8va3RYR8d53MISkE=,iv:8ziDDyQvU8ABaKKwYlcHmvm8Qybk4G+q5F0Ghqluu9w=,tag:YlyNPE04KD3detL1QUTrgQ==,type:str]
|
gui_passwd: ENC[AES256_GCM,data:CicGIe5dT8lJVchCcE4wg3E8va3RYR8d53MISkE=,iv:8ziDDyQvU8ABaKKwYlcHmvm8Qybk4G+q5F0Ghqluu9w=,tag:YlyNPE04KD3detL1QUTrgQ==,type:str]
|
||||||
@@ -15,6 +17,9 @@ syncthing:
|
|||||||
yveltal:
|
yveltal:
|
||||||
key: ENC[AES256_GCM,data:unUnEeDhCqHUZCJtGCbj5rmrLx+9GiUTl75K3HdkI94YfCLNYCBACYu2v/7FbNIEsjVoQEA5/gKEcUHzVq6LaHM2w9GSo6tjkegdzTUgbHBJf4ssJ38z5rQkMc7tbzsA0NUHBPklz1eyjkW96HQPD0REcwA3CIc=,iv:PZ7vfhIpwPpMz4P04bewNhRuahmpukasgYb8fL/EJBE=,tag:G1HDyPAVSdm/fwqTXTT3PQ==,type:str]
|
key: ENC[AES256_GCM,data:unUnEeDhCqHUZCJtGCbj5rmrLx+9GiUTl75K3HdkI94YfCLNYCBACYu2v/7FbNIEsjVoQEA5/gKEcUHzVq6LaHM2w9GSo6tjkegdzTUgbHBJf4ssJ38z5rQkMc7tbzsA0NUHBPklz1eyjkW96HQPD0REcwA3CIc=,iv:PZ7vfhIpwPpMz4P04bewNhRuahmpukasgYb8fL/EJBE=,tag:G1HDyPAVSdm/fwqTXTT3PQ==,type:str]
|
||||||
cert: ENC[AES256_GCM,data:yLq2dNjdMiRj4reyZWsSqZ+1rw4DTwKBZoQHzeKb8YBn63ub4TZPlnOjSTt2DwOQwrJDNhsaeGscZ6J7rLxF/rtH6YnR8XxQuOu/NNIcZ4m9EqhsXyznSx4Q+0gamUXujRgGRVH5FNrfiFoqP3VuNghoX+NLxfX0BcVruEjbmLUWVVzY0yS0ufzxegM8WFAxuKhcr1NlhBU65TxKUtbj4vcByzWHkfLGIb5ICnGeF/p9/FvpFSavw3nLdybDLJ6EKEeaxy6t984fkuotAvk54kLbF4yt0q5mjDxy0U6xtn1hg3x03IRAPjKDRdpDmzYf4XxykEb74JX9q2zjUhb2l1ORWcZu/uKvEiuZWDJRmJ4ypOiyZOCqTvY6s2iDhEjmMKxlNr2mhuz9Hn6b3KoQjePIEd1eS/VEmo09pEuUlhlAEziVcdnpeRyWlN2xpv4ps90gLxJ1Mj9nAZwRqFOQl0V4N5OBHEqMBE1nQv4afMpGX5QF2UotTpNfka+LdKwc1iHHtpHZYmG1/LVwz3jDv4XnVLdDWojFA/8eJIWVq1BsUTYSy+Q27bsoTX4iL0Y/OAHRzXZTqYc4aiAWJoaNTNgmagZ9C03SA6qePlGe/5azI3f54rC2m1/JDUtYW3IABHSFUaVnTdWnD4GDNSYRJIknyUwXR4sE3pRD979prmgtepOyETOAVgEeUVKz1leJZ2HyyhjFU41TL0IN/sl+YPD9bC3Nmw7OsxMFGPC4l5vn64DVp7HHRSKyJvZ5fG8s4nSzyZAKomkocOpKHEuQPyyerZpL1lne/m2B/y7/W2ouAGxcawZOSU6f74mn5wM=,iv:Ggag5SNUFkhMWS0u1kwkD5tGjiMv4i041bCESl5XOdc=,tag:pPISz0eBWzHcPHsC8dVG3g==,type:str]
|
cert: ENC[AES256_GCM,data:yLq2dNjdMiRj4reyZWsSqZ+1rw4DTwKBZoQHzeKb8YBn63ub4TZPlnOjSTt2DwOQwrJDNhsaeGscZ6J7rLxF/rtH6YnR8XxQuOu/NNIcZ4m9EqhsXyznSx4Q+0gamUXujRgGRVH5FNrfiFoqP3VuNghoX+NLxfX0BcVruEjbmLUWVVzY0yS0ufzxegM8WFAxuKhcr1NlhBU65TxKUtbj4vcByzWHkfLGIb5ICnGeF/p9/FvpFSavw3nLdybDLJ6EKEeaxy6t984fkuotAvk54kLbF4yt0q5mjDxy0U6xtn1hg3x03IRAPjKDRdpDmzYf4XxykEb74JX9q2zjUhb2l1ORWcZu/uKvEiuZWDJRmJ4ypOiyZOCqTvY6s2iDhEjmMKxlNr2mhuz9Hn6b3KoQjePIEd1eS/VEmo09pEuUlhlAEziVcdnpeRyWlN2xpv4ps90gLxJ1Mj9nAZwRqFOQl0V4N5OBHEqMBE1nQv4afMpGX5QF2UotTpNfka+LdKwc1iHHtpHZYmG1/LVwz3jDv4XnVLdDWojFA/8eJIWVq1BsUTYSy+Q27bsoTX4iL0Y/OAHRzXZTqYc4aiAWJoaNTNgmagZ9C03SA6qePlGe/5azI3f54rC2m1/JDUtYW3IABHSFUaVnTdWnD4GDNSYRJIknyUwXR4sE3pRD979prmgtepOyETOAVgEeUVKz1leJZ2HyyhjFU41TL0IN/sl+YPD9bC3Nmw7OsxMFGPC4l5vn64DVp7HHRSKyJvZ5fG8s4nSzyZAKomkocOpKHEuQPyyerZpL1lne/m2B/y7/W2ouAGxcawZOSU6f74mn5wM=,iv:Ggag5SNUFkhMWS0u1kwkD5tGjiMv4i041bCESl5XOdc=,tag:pPISz0eBWzHcPHsC8dVG3g==,type:str]
|
||||||
|
mew:
|
||||||
|
key: ENC[AES256_GCM,data:8i2thp667lKEXR0cIaEOLHPXWlhFS38FvbtHgni3i0dTBx9DYtJbGogNaWMlA8r2HzBHkG3Jg0nJs7IOrJWugnGLNLbvhdsxBswEndOBaed4vq+SSN6ssxdjjyFd38wlIZNZsytjPFhyRgDLJ+0rftcIQXPjBhU=,iv:IZ3zWD/ZpalOzSAJQubo/y4LcEzHMEcl+C4GB3Q/nac=,tag:IKEwIkuvHE6qrUoCEqI2Ug==,type:str]
|
||||||
|
cert: ENC[AES256_GCM,data:uvNZYmQnexXTr/Sz7vLQIJK93MmsoiJfCAL8/rLVQH0D+1nVaM472lqR5pP0qhLKuYhFUESxhAotVtqLpOWK1MfAxuk2RHv8mvbtIJkheRmsIWw7dAAABIkmgnelI03P2Tk2129I95vMM1lybu4W6m9VslwJF8X/4rCxshdbuz9mcjwxBpUEDr1V76DO3bgQUuPwizx17ON8gNd+NtRqPPaXlGrfLCFv1Fib3YFd7+WRkERki9ZO7Q0quY75G4Jseb28QaiM2BT7jfECJo4x7rMePMV303sIrF9paaUKTuSiCUsamLsi5Hwr907y2lHB9Gocwio7tnSRSRhHHcWLI8dQktzW7Flqs8+MZGZ1oJBQO7kQDefF1q4mddADimoqD9F1NsOiOmqqZRRB37alLGmRjeYBIlA6q/FgN9BAj9h0cG3oN1MUXPRGzDfggg5TLjBM2FbG/N3xgncZ2AzTPOcLtrtc0I2PYk3FFxgzpHWnjS2t7CQo/JxqdXbdy9nTHIqbrnKIQ/FtS7/p+cgQcU815UMsJm3qP+hPLCyNuziYq3Vt/X7C3eTnrqemXjEeJ/SJxb+Oul5GS1OL14dNsJllFNuj33Zep/hyQvHnf/HW7kXAfDqIP9zn85EFriAZEuaKwbHB2pkvbWKFxrpXJFhjnPFDKxGOjAmsLmil4paFKdt5hK7rp0mmoIMN+mMFbYx333llik0qk27yYTQwOR3eeCGqHODUU+izUT8NuQBezyxsEmEYu/YBcpatcYylwKgIFcC058oltsxlbxRg5Rrdk5FOqj7Uui0qwFXvYesz6Tiq/rGmcOPlcE5xw14=,iv:LePpzWGDTV1ONwt1uHUptMW1dO1SwwUKrtCEerc/DEc=,tag:a5B/7hmIxvLXU90Stcq7zA==,type:str]
|
||||||
#ENC[AES256_GCM,data:A0ITyGOGMIoyVOcn5JOi1RAtqUM=,iv:+wWpmFbeLiX/Ae53pj0QmnYY3MEzOMib4cqbePUKtGI=,tag:JHXvrN4bOH+oD3Q70pUuew==,type:comment]
|
#ENC[AES256_GCM,data:A0ITyGOGMIoyVOcn5JOi1RAtqUM=,iv:+wWpmFbeLiX/Ae53pj0QmnYY3MEzOMib4cqbePUKtGI=,tag:JHXvrN4bOH+oD3Q70pUuew==,type:comment]
|
||||||
pia_auth: ENC[AES256_GCM,data:rwAu4f5XVS4v4FCLj2zXAegIZeRPLIzUVv6TCrdfg9RGSDJYHgVAX0aFXCBQsDQju9RDycXmc9Id8IuyYN8=,iv:kEA4ADQyUI+zlQoZOKi81dw5BLE1oesqhVf6bfiLgB4=,tag:VHT2uPNW27F3KRM7ZhWdCw==,type:str]
|
pia_auth: ENC[AES256_GCM,data:rwAu4f5XVS4v4FCLj2zXAegIZeRPLIzUVv6TCrdfg9RGSDJYHgVAX0aFXCBQsDQju9RDycXmc9Id8IuyYN8=,iv:kEA4ADQyUI+zlQoZOKi81dw5BLE1oesqhVf6bfiLgB4=,tag:VHT2uPNW27F3KRM7ZhWdCw==,type:str]
|
||||||
#ENC[AES256_GCM,data:mbIgMJBhL8nWJzl8q2dFL8XtO1Xa1Q==,iv:caYHYp1boK9wRgCcQe40HTWT/HxAIvYe+HyaruI53Vc=,tag:S6wowhAHObEcs7z8FimZ1g==,type:comment]
|
#ENC[AES256_GCM,data:mbIgMJBhL8nWJzl8q2dFL8XtO1Xa1Q==,iv:caYHYp1boK9wRgCcQe40HTWT/HxAIvYe+HyaruI53Vc=,tag:S6wowhAHObEcs7z8FimZ1g==,type:comment]
|
||||||
@@ -30,6 +35,7 @@ minecraft_recpro_db_passwd: ENC[AES256_GCM,data:dPAkdEX0hBigo/lND2r3ShxnS4Jc5wTI
|
|||||||
mosquitto_hashed_passwd: ENC[AES256_GCM,data:k1Lnr8ZTDpzXMoRmRH61X41boX/D8Rm1KPh7x3/IHFo+XKIOUQns53iA+7e7Ohp8uWSthDlOk4SlRvTXdUNiEz7Zmw9LYwy7BHbwpNo2pFApAye1ORPrMrhMUkUfgBgc8oqPPyRXmmrOAFp6GBbRhg==,iv:D8wQL9iF0rqOte5X24kDTVjYUJXbZSLz0Ykbp0HqmYo=,tag:RUCgO1uKPIdumSo563cg1Q==,type:str]
|
mosquitto_hashed_passwd: ENC[AES256_GCM,data:k1Lnr8ZTDpzXMoRmRH61X41boX/D8Rm1KPh7x3/IHFo+XKIOUQns53iA+7e7Ohp8uWSthDlOk4SlRvTXdUNiEz7Zmw9LYwy7BHbwpNo2pFApAye1ORPrMrhMUkUfgBgc8oqPPyRXmmrOAFp6GBbRhg==,iv:D8wQL9iF0rqOte5X24kDTVjYUJXbZSLz0Ykbp0HqmYo=,tag:RUCgO1uKPIdumSo563cg1Q==,type:str]
|
||||||
mosquitto_passwd.yaml: ENC[AES256_GCM,data:9xwHiUaQ6zG/4rkRemXtbRJ/KEV4yajqyYlcXRR1eAQ2XijYOzitPjt53h3FPqp5rxl6dJerXNH5CiZZK3t1l339NxNseJFGVmIHitWJxNmGJMlG3M8r8Q==,iv:C6WWZuVkYaasB2pol3uf4Mc3d/lDEgt2pKX+dHl/Cr4=,tag:jYTC6RKF2TzDSwSUh6D8zQ==,type:str]
|
mosquitto_passwd.yaml: ENC[AES256_GCM,data:9xwHiUaQ6zG/4rkRemXtbRJ/KEV4yajqyYlcXRR1eAQ2XijYOzitPjt53h3FPqp5rxl6dJerXNH5CiZZK3t1l339NxNseJFGVmIHitWJxNmGJMlG3M8r8Q==,iv:C6WWZuVkYaasB2pol3uf4Mc3d/lDEgt2pKX+dHl/Cr4=,tag:jYTC6RKF2TzDSwSUh6D8zQ==,type:str]
|
||||||
#ENC[AES256_GCM,data:zmSByl0De3a39qLbS99oce7ORe2BBoPa+3I05/YYxL7iBeWCP3ZK,iv:6nUTBUFpNK7Mttckqu6Wk/QJ5cP4+iL+EH4ldaIuu9s=,tag:pc5UtjbNPsVOEMCdLKgGMA==,type:comment]
|
#ENC[AES256_GCM,data:zmSByl0De3a39qLbS99oce7ORe2BBoPa+3I05/YYxL7iBeWCP3ZK,iv:6nUTBUFpNK7Mttckqu6Wk/QJ5cP4+iL+EH4ldaIuu9s=,tag:pc5UtjbNPsVOEMCdLKgGMA==,type:comment]
|
||||||
|
#ENC[AES256_GCM,data:ZWlAWAthigdTlfHrQl1x8eSj+gv4Gj1poZfPViu1mVz/ZmUJFZyCSkdIg0CPdNNF38TE0iabBk+o7aHkFmIFz18hjVYAk4M2E034qg==,iv:jU+2E+XAILgFNyMkGZ1CMJ83q7V/yyEJwHXWw05RlHo=,tag:n8w0/ktmum5P31vMWJVxgA==,type:comment]
|
||||||
postfix_passwd: ENC[AES256_GCM,data:3ndIsTGPyAQELM8lptBK241a3p77fNijXma4souFKnyrkLBpZ4OP6KWuldFlWySpSG7Yme0by5gOzg==,iv:nYuJKeY4H3OfQleLo7gvheT5JHgXW3hGQvjHeEEN260=,tag:q952E/0QLC49O5Rwua0RWQ==,type:str]
|
postfix_passwd: ENC[AES256_GCM,data:3ndIsTGPyAQELM8lptBK241a3p77fNijXma4souFKnyrkLBpZ4OP6KWuldFlWySpSG7Yme0by5gOzg==,iv:nYuJKeY4H3OfQleLo7gvheT5JHgXW3hGQvjHeEEN260=,tag:q952E/0QLC49O5Rwua0RWQ==,type:str]
|
||||||
#ENC[AES256_GCM,data:UcpnHZj5xr8P64PzhWVKbFy8pvFM9GCz2mDoW/6iRVqgLTL0FSn6KXep/kfLEnYiqv5ZpsVZjjXsbI5VRJfBo7w4kzX661oDU8323DfQHDkbo2g=,iv:nEApgutl5kjfZkwi9WTOwatraM3+TQqFgk5gEMw0rwA=,tag:Q4gndL+6q7jHN02QCpJDjw==,type:comment]
|
#ENC[AES256_GCM,data:UcpnHZj5xr8P64PzhWVKbFy8pvFM9GCz2mDoW/6iRVqgLTL0FSn6KXep/kfLEnYiqv5ZpsVZjjXsbI5VRJfBo7w4kzX661oDU8323DfQHDkbo2g=,iv:nEApgutl5kjfZkwi9WTOwatraM3+TQqFgk5gEMw0rwA=,tag:Q4gndL+6q7jHN02QCpJDjw==,type:comment]
|
||||||
#ENC[AES256_GCM,data:3oMbbBSrbjrqsdiON1ENB8JeKW0=,iv:+/eL/51OA+VHbkWWSNzQId5BlxnMm+5NBA0uKw010Tk=,tag:vBJpCYmvFivBYIKatDWgHw==,type:comment]
|
#ENC[AES256_GCM,data:3oMbbBSrbjrqsdiON1ENB8JeKW0=,iv:+/eL/51OA+VHbkWWSNzQId5BlxnMm+5NBA0uKw010Tk=,tag:vBJpCYmvFivBYIKatDWgHw==,type:comment]
|
||||||
@@ -60,7 +66,7 @@ sops:
|
|||||||
U0tmdFBuZnJES3piOTZNV0VKQmQ0eVUKCWRQ/flLzmpC64WyLoipklZBmrkpYiUg
|
U0tmdFBuZnJES3piOTZNV0VKQmQ0eVUKCWRQ/flLzmpC64WyLoipklZBmrkpYiUg
|
||||||
PRu+itNolpPTHm96pe+P93g2iP0wgekG0cX21wkiU2xaLF3dY2FEIA==
|
PRu+itNolpPTHm96pe+P93g2iP0wgekG0cX21wkiU2xaLF3dY2FEIA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-11-05T05:51:29Z"
|
lastmodified: "2026-01-28T21:02:05Z"
|
||||||
mac: ENC[AES256_GCM,data:y4KF/ImqWzga34UIjn8ohvR4Ktu785vNgyxLDxJZOvqZNsShlgSBQ+EnJ6TgG3Ghyo6n3frcMBaZJLP4QJVqsoigUMqqOdhp3xxLRQSV5c5GbmKscW2q/xdkKqnqbANDWxQ4FWd7n/CfH+FDxtRoWgkptRzhpqYEdXxFRjzR5jo=,iv:KJYp8BmuXyuDkpRH/ZjahT8tG4NoG7Y4XFJ9Q4GntLg=,tag:sr9HQCuynFXwYT7Ulbyerg==,type:str]
|
mac: ENC[AES256_GCM,data:b9aX43ViObNX29DkVNHtwkQRm26PRe2rZYhDnL1ZYLLWyaO3OGP9+rM4vHT0lyuowQ6+Ur3IMPVpUSziXYLh3mtxr0hyYy5Y1miBuIxXYLBi3oLRTW1TgZdklzFDVL3c1GT4lXEh4q9KG3dP64r9/8dvjO2iRIosZ93/l0pIi3A=,iv:/gdNfVy8UiQsIRAHh2jiha5fL+wmfgp0srxt17Ry4Xs=,tag:YdVbvpBnQSaIarGIfiTzKQ==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.11.0
|
version: 3.11.0
|
||||||
|
|||||||
BIN
users/blake/assets/wallpapers/camp.png
Normal file
BIN
users/blake/assets/wallpapers/camp.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 MiB |
BIN
users/blake/assets/wallpapers/falcocartoon.png
Normal file
BIN
users/blake/assets/wallpapers/falcocartoon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 92 KiB |
BIN
users/blake/assets/wallpapers/floon smile.jpg
Normal file
BIN
users/blake/assets/wallpapers/floon smile.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
BIN
users/blake/assets/wallpapers/hairpin.png
Normal file
BIN
users/blake/assets/wallpapers/hairpin.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 MiB |
BIN
users/blake/assets/wallpapers/ikanaide.png
Normal file
BIN
users/blake/assets/wallpapers/ikanaide.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 297 KiB |
BIN
users/blake/assets/wallpapers/kitty.jpg
Normal file
BIN
users/blake/assets/wallpapers/kitty.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
@@ -19,6 +19,7 @@
|
|||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBrNHm/n7BrA8Vz0Lsc3fZQ5QJOm01InFvrzEDuD4BoD me@blakedheld.xyz"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBrNHm/n7BrA8Vz0Lsc3fZQ5QJOm01InFvrzEDuD4BoD me@blakedheld.xyz"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBK0AGJfZGyqW8/krvQV+PL7axcDW/EnKyHy9M8wryQx klefki"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBK0AGJfZGyqW8/krvQV+PL7axcDW/EnKyHy9M8wryQx klefki"
|
||||||
"ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBPdC9cCX8awvA19Ri65fvbYjZYe8X1Ef+nOZAIv92AS6u4SkJYqOvPYfqRHXORNDpbzjTV6nackyCKvV5EO4niv4MFIgdkEQwuVHcYX32/dOsWdDoeXBT/l2sFFM7JESwQ== blake@zygarde"
|
"ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBPdC9cCX8awvA19Ri65fvbYjZYe8X1Ef+nOZAIv92AS6u4SkJYqOvPYfqRHXORNDpbzjTV6nackyCKvV5EO4niv4MFIgdkEQwuVHcYX32/dOsWdDoeXBT/l2sFFM7JESwQ== blake@zygarde"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOVsjLEbnW/KeFXogppi0AP6ZbCZpObu7zFeRV/aLkP9 blake@lugia"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -30,7 +31,7 @@
|
|||||||
extraSpecialArgs = {inherit inputs;};
|
extraSpecialArgs = {inherit inputs;};
|
||||||
backupFileExtension = "bak";
|
backupFileExtension = "bak";
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = false;
|
||||||
users = {
|
users = {
|
||||||
"blake" = import ./home.nix;
|
"blake" = import ./home.nix;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
./git
|
./git
|
||||||
./xdg
|
./xdg
|
||||||
./nh
|
./nh
|
||||||
|
./udiskie
|
||||||
];
|
];
|
||||||
|
|
||||||
dots = {
|
dots = {
|
||||||
@@ -26,6 +27,7 @@
|
|||||||
git.enable = lib.mkDefault true;
|
git.enable = lib.mkDefault true;
|
||||||
xdg.enable = lib.mkDefault true;
|
xdg.enable = lib.mkDefault true;
|
||||||
nh.enable = lib.mkDefault true;
|
nh.enable = lib.mkDefault true;
|
||||||
|
udiskie.enable = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17,9 +17,11 @@ in {
|
|||||||
# configure git
|
# configure git
|
||||||
programs.${program} = {
|
programs.${program} = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userName = "blake";
|
settings = {
|
||||||
userEmail = "me@blakedheld.xyz";
|
user = {
|
||||||
extraConfig = {
|
name = "blake";
|
||||||
|
email = "me@blakedheld.xyz";
|
||||||
|
};
|
||||||
init.defaultBranch = "trunk";
|
init.defaultBranch = "trunk";
|
||||||
core.editor = "nvim";
|
core.editor = "nvim";
|
||||||
pull.rebase = true;
|
pull.rebase = true;
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ in {
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
programs.${program} = {
|
programs.${program} = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
scdaemonSettings = {
|
||||||
|
disable-ccid = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
services.gpg-agent = {
|
services.gpg-agent = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ set ignorecase true
|
|||||||
|
|
||||||
# shortcuts
|
# shortcuts
|
||||||
map gb cd /holocron
|
map gb cd /holocron
|
||||||
|
map gz cd %{{ [ -d /holocron ] && printf /holocron || printf /media/holocron }}
|
||||||
map gn cd ~/.nix
|
map gn cd ~/.nix
|
||||||
map gc cd ~/.config
|
map gc cd ~/.config
|
||||||
|
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ in {
|
|||||||
enable = true;
|
enable = true;
|
||||||
format = {
|
format = {
|
||||||
enable = true;
|
enable = true;
|
||||||
type = "alejandra";
|
type = ["alejandra"];
|
||||||
#type = "nixfmt";
|
#type = "nixfmt";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ in {
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
#enableDefaultConfig = true;
|
enableDefaultConfig = false;
|
||||||
matchBlocks = {
|
matchBlocks = {
|
||||||
"*" = {
|
"*" = {
|
||||||
identityFile = "${home_dir}/.ssh/id_blake";
|
identityFile = "${home_dir}/.ssh/id_blake";
|
||||||
|
|||||||
40
users/blake/dots/core/udiskie/default.nix
Normal file
40
users/blake/dots/core/udiskie/default.nix
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
program = "udiskie";
|
||||||
|
cfg = config.dots.${program};
|
||||||
|
home_dir = config.home.homeDirectory;
|
||||||
|
in {
|
||||||
|
options.dots.${program} = {
|
||||||
|
enable = lib.mkEnableOption "enables ${program}";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.${program} = {
|
||||||
|
enable = true;
|
||||||
|
automount = true;
|
||||||
|
notify = true;
|
||||||
|
tray = "auto";
|
||||||
|
settings = {
|
||||||
|
program_options = {
|
||||||
|
};
|
||||||
|
device_config = [
|
||||||
|
{
|
||||||
|
id_uuid = ["4E21-0000" "9EA2-A886"];
|
||||||
|
automount = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id_type = "ntfs";
|
||||||
|
skip = "true";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# add userspace tools
|
||||||
|
home.packages = with pkgs; [udiskie];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -45,10 +45,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
# misc env variables to get things out of ~ (<3 xdg-ninja)
|
# misc env variables to get things out of ~ (<3 xdg-ninja)
|
||||||
home.sessionVariables =
|
home.sessionVariables = {
|
||||||
if pkgs.system == "x86_64-darwin"
|
|
||||||
then {}
|
|
||||||
else {
|
|
||||||
GOPATH = "$XDG_DATA_HOME/go";
|
GOPATH = "$XDG_DATA_HOME/go";
|
||||||
_JAVA_OPTIONS = ''-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java'';
|
_JAVA_OPTIONS = ''-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ in {
|
|||||||
|
|
||||||
programs.${program} = {
|
programs.${program} = {
|
||||||
enable = true;
|
enable = true;
|
||||||
dotDir = ".config/zsh";
|
dotDir = "${config.xdg.configHome}/zsh";
|
||||||
|
#dotDir = ".config/zsh";
|
||||||
autocd = true;
|
autocd = true;
|
||||||
enableCompletion = true;
|
enableCompletion = true;
|
||||||
|
|
||||||
@@ -85,7 +86,7 @@ in {
|
|||||||
# --- git ---
|
# --- git ---
|
||||||
status = "git status";
|
status = "git status";
|
||||||
add = "git add";
|
add = "git add";
|
||||||
commit = "git commit -am";
|
commit = "git commit";
|
||||||
push = "git push";
|
push = "git push";
|
||||||
pull = "git pull";
|
pull = "git pull";
|
||||||
dotfiles = "/usr/bin/git --git-dir=${home_dir}/.dotfiles --work-tree=$HOME";
|
dotfiles = "/usr/bin/git --git-dir=${home_dir}/.dotfiles --work-tree=$HOME";
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
@@ -17,6 +18,7 @@ in {
|
|||||||
nwg-displays
|
nwg-displays
|
||||||
posy-cursors
|
posy-cursors
|
||||||
hyprpicker
|
hyprpicker
|
||||||
|
hyprshot
|
||||||
];
|
];
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
@@ -40,6 +42,7 @@ in {
|
|||||||
|
|
||||||
exec-once = [
|
exec-once = [
|
||||||
"hyprctl setcursor ${config.home.pointerCursor.name} ${toString config.home.pointerCursor.size}"
|
"hyprctl setcursor ${config.home.pointerCursor.name} ${toString config.home.pointerCursor.size}"
|
||||||
|
"waybar"
|
||||||
];
|
];
|
||||||
|
|
||||||
# --- input ---
|
# --- input ---
|
||||||
@@ -134,6 +137,7 @@ in {
|
|||||||
|
|
||||||
# screenshots
|
# screenshots
|
||||||
"$mainMod SHIFT, C, exec, hyprshot --mode region --output-folder ${home_dir}/pictures/screenshots"
|
"$mainMod SHIFT, C, exec, hyprshot --mode region --output-folder ${home_dir}/pictures/screenshots"
|
||||||
|
", Print, exec, hyprshot --mode output --output-folder ${home_dir}/pictures/screenshots"
|
||||||
|
|
||||||
# multimedia
|
# multimedia
|
||||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
@@ -285,7 +289,7 @@ in {
|
|||||||
{
|
{
|
||||||
monitor = "";
|
monitor = "";
|
||||||
path = "${home_dir}/.nix/users/blake/assets/pfps/pikacig.jpg";
|
path = "${home_dir}/.nix/users/blake/assets/pfps/pikacig.jpg";
|
||||||
size = 350;
|
size = 325;
|
||||||
border_color = lib.mkDefault "rgb(0047ab)";
|
border_color = lib.mkDefault "rgb(0047ab)";
|
||||||
rounding = -1;
|
rounding = -1;
|
||||||
position = "0, 85";
|
position = "0, 85";
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ in {
|
|||||||
waybar.addCss = false;
|
waybar.addCss = false;
|
||||||
nvf.transparentBackground = true;
|
nvf.transparentBackground = true;
|
||||||
qt.enable = true;
|
qt.enable = true;
|
||||||
|
librewolf.enable = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ in {
|
|||||||
programs.${program} = {
|
programs.${program} = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd = {
|
systemd = {
|
||||||
enable = true;
|
enable = false;
|
||||||
target = "graphical-session.target";
|
target = "graphical-session.target";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
20
users/blake/dots/programs/anki/default.nix
Normal file
20
users/blake/dots/programs/anki/default.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
program = "anki";
|
||||||
|
cfg = config.dots.${program};
|
||||||
|
in {
|
||||||
|
options.dots.${program} = {
|
||||||
|
enable = lib.mkEnableOption "enables ${program}";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
# just install package
|
||||||
|
home.packages = with pkgs; [anki];
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -14,7 +14,8 @@ in {
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
# just install package
|
# just install package
|
||||||
home.packages = with pkgs; [bitwarden-desktop bitwarden-cli];
|
home.packages = with pkgs; [bitwarden-desktop bitwarden-cli hakuneko ];
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ in {
|
|||||||
./_gaming
|
./_gaming
|
||||||
./_flatpak
|
./_flatpak
|
||||||
|
|
||||||
|
./anki
|
||||||
./thunderbird
|
./thunderbird
|
||||||
./libreoffice
|
./libreoffice
|
||||||
./gnucash
|
./gnucash
|
||||||
@@ -19,6 +20,7 @@ in {
|
|||||||
./bitwarden
|
./bitwarden
|
||||||
./zathura
|
./zathura
|
||||||
./discord
|
./discord
|
||||||
|
./yt-dlp
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -33,6 +35,7 @@ in {
|
|||||||
gaming.enable = lib.mkDefault true;
|
gaming.enable = lib.mkDefault true;
|
||||||
flatpak.enable = lib.mkDefault true;
|
flatpak.enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
anki.enable = lib.mkDefault true;
|
||||||
thunderbird.enable = lib.mkDefault true;
|
thunderbird.enable = lib.mkDefault true;
|
||||||
libreoffice.enable = lib.mkDefault true;
|
libreoffice.enable = lib.mkDefault true;
|
||||||
gnucash.enable = lib.mkDefault true;
|
gnucash.enable = lib.mkDefault true;
|
||||||
@@ -40,6 +43,7 @@ in {
|
|||||||
bitwarden.enable = lib.mkDefault true;
|
bitwarden.enable = lib.mkDefault true;
|
||||||
discord.enable = lib.mkDefault true;
|
discord.enable = lib.mkDefault true;
|
||||||
zathura.enable = lib.mkDefault true;
|
zathura.enable = lib.mkDefault true;
|
||||||
|
yt-dlp.enable = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
27
users/blake/dots/programs/yt-dlp/default.nix
Normal file
27
users/blake/dots/programs/yt-dlp/default.nix
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
program = "yt-dlp";
|
||||||
|
cfg = config.dots.${program};
|
||||||
|
in {
|
||||||
|
options.dots.${program} = {
|
||||||
|
enable = lib.mkEnableOption "enables ${program}";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
# enable with home-manager
|
||||||
|
programs.${program} = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
embed-thumbnail = true;
|
||||||
|
embed-subs = true;
|
||||||
|
sub-langs = "all";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -40,6 +40,10 @@ in
|
|||||||
# needed for macos, linux don't mind
|
# needed for macos, linux don't mind
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
nixpkgs.config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
};
|
||||||
|
|
||||||
# set up seperate key file just for me
|
# set up seperate key file just for me
|
||||||
sops = {
|
sops = {
|
||||||
defaultSopsFile = ./secrets/secrets.yaml;
|
defaultSopsFile = ./secrets/secrets.yaml;
|
||||||
|
|||||||
46
users/blake/hosts/froakie.nix
Normal file
46
users/blake/hosts/froakie.nix
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../dots
|
||||||
|
];
|
||||||
|
|
||||||
|
dots = {
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
wallpaper = ../assets/wallpapers/yveltal.jpg;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.enable = true;
|
||||||
|
|
||||||
|
kitty.enable = true;
|
||||||
|
librewolf.enable = true;
|
||||||
|
waybar.enable = true;
|
||||||
|
dunst.enable = true;
|
||||||
|
hypr.enable = true;
|
||||||
|
tofi.enable = true;
|
||||||
|
clipboard.enable = true;
|
||||||
|
cursor.enable = true;
|
||||||
|
|
||||||
|
btop.enable = true;
|
||||||
|
lf.enable = true;
|
||||||
|
nvf.enable = true;
|
||||||
|
zsh.enable = true;
|
||||||
|
ssh.enable = true;
|
||||||
|
gpg.enable = true;
|
||||||
|
git.enable = true;
|
||||||
|
xdg.enable = true;
|
||||||
|
|
||||||
|
libreoffice.enable = true;
|
||||||
|
gnucash.enable = true;
|
||||||
|
qalculate.enable = true;
|
||||||
|
bitwarden.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
48
users/blake/hosts/mew.nix
Normal file
48
users/blake/hosts/mew.nix
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../dots
|
||||||
|
];
|
||||||
|
|
||||||
|
dots = {
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
wallpaper = ../assets/wallpapers/yveltal.jpg;
|
||||||
|
#wallpaper = ../assets/wallpapers/hairpin.png;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.enable = true;
|
||||||
|
|
||||||
|
kitty.enable = true;
|
||||||
|
librewolf.enable = true;
|
||||||
|
waybar.enable = true;
|
||||||
|
dunst.enable = true;
|
||||||
|
hypr.enable = true;
|
||||||
|
tofi.enable = true;
|
||||||
|
clipboard.enable = true;
|
||||||
|
cursor.enable = true;
|
||||||
|
|
||||||
|
btop.enable = true;
|
||||||
|
lf.enable = true;
|
||||||
|
nvf.enable = true;
|
||||||
|
zsh.enable = true;
|
||||||
|
ssh.enable = true;
|
||||||
|
gpg.enable = true;
|
||||||
|
git.enable = true;
|
||||||
|
xdg.enable = true;
|
||||||
|
|
||||||
|
anki.enable = true;
|
||||||
|
libreoffice.enable = true;
|
||||||
|
gnucash.enable = true;
|
||||||
|
qalculate.enable = true;
|
||||||
|
bitwarden.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wallpaper = ../assets/wallpapers/yveltal.jpg;
|
wallpaper = ../assets/wallpapers/yveltal.jpg;
|
||||||
|
#wallpaper = ../assets/wallpapers/hairpin.png;
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.enable = true;
|
programs.enable = true;
|
||||||
@@ -37,6 +38,7 @@
|
|||||||
git.enable = true;
|
git.enable = true;
|
||||||
xdg.enable = true;
|
xdg.enable = true;
|
||||||
|
|
||||||
|
anki.enable = true;
|
||||||
libreoffice.enable = true;
|
libreoffice.enable = true;
|
||||||
gnucash.enable = true;
|
gnucash.enable = true;
|
||||||
qalculate.enable = true;
|
qalculate.enable = true;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#ENC[AES256_GCM,data:3JeFFtzO7nuVZmzPcLsP7h12BKbnyOb9/A==,iv:V6gzwAze1FVjmpf1dD8CqQpUpO9CqWfj+nHImXgz+Zw=,tag:iT6zE2X7DQmIT9d4Ds4XiA==,type:comment]
|
#ENC[AES256_GCM,data:3JeFFtzO7nuVZmzPcLsP7h12BKbnyOb9/A==,iv:V6gzwAze1FVjmpf1dD8CqQpUpO9CqWfj+nHImXgz+Zw=,tag:iT6zE2X7DQmIT9d4Ds4XiA==,type:comment]
|
||||||
blake_passwd: ENC[AES256_GCM,data:AfFql6/ghGhCDLOb4+QuAsDznz4hC4ilxZYCIH2sgBWX9tWXsUOgFw1k7CIhDoXIehz6YlTy0czekXPCqHL5gmIKRQTowU4svocw/Bl/Qz5CQ58RASB6YpnzOKTrwX7HCnu/ghpdMrcy2A==,iv:hMAkLcHjP0hiyCY4rhMU0Ae7jdYPa6MffEd2WGolbEo=,tag:p/6xmD8Te1RnFkp0zWw+ew==,type:str]
|
blake_passwd: ENC[AES256_GCM,data:AfFql6/ghGhCDLOb4+QuAsDznz4hC4ilxZYCIH2sgBWX9tWXsUOgFw1k7CIhDoXIehz6YlTy0czekXPCqHL5gmIKRQTowU4svocw/Bl/Qz5CQ58RASB6YpnzOKTrwX7HCnu/ghpdMrcy2A==,iv:hMAkLcHjP0hiyCY4rhMU0Ae7jdYPa6MffEd2WGolbEo=,tag:p/6xmD8Te1RnFkp0zWw+ew==,type:str]
|
||||||
#ENC[AES256_GCM,data:0HBVS2AYQ2VZXY4EbMLwiSjRNyWZ57bf,iv:20SLWXpbRTLk76g5mFrhg1Z9Qasv3NoSJbK/FOiIgtk=,tag:DbUffQwrDqzy2QO64uoUeg==,type:comment]
|
#ENC[AES256_GCM,data:0HBVS2AYQ2VZXY4EbMLwiSjRNyWZ57bf,iv:20SLWXpbRTLk76g5mFrhg1Z9Qasv3NoSJbK/FOiIgtk=,tag:DbUffQwrDqzy2QO64uoUeg==,type:comment]
|
||||||
klefki_auth_map: ENC[AES256_GCM,data:eQ==,iv:DwWh1mhnM4EcYW3XtryDJSq1kIGwDKgekN8+FQqDhoE=,tag:oMCQkNDnIYJZeNZxrRGB5w==,type:str]
|
klefki_auth_map: ENC[AES256_GCM,data:JOUluKyKlK4hbGmKVSNh61Gzp/OVsb1LVhAfqyBeQ0ChlQWJ5jzS+fSI4QaJz2KS3NWvHDP5I3Y4b51fUUPGleoBazPNGpPfRLDDCgI2ys+OiNOCtykUE8A9Rt83dlWhfnsjWzsa2gUGba/52qvjgzP9T5lejzS9U+WGdRX0xSITr2u96RXz6j0SWgHSlcrddINgSoNkMRmRctEQGLL39U5wdvRQM0CWJymPoH2IUVVhM/xw4vVUFH1YV4GtbI+pqOihtGfQFg==,iv:KRBDuozK7NUfYv8IDEE/zW+3EZQuI+KT9+N3HCg71LY=,tag:35Ox4fBaBfdGAsQ3J2a/4A==,type:str]
|
||||||
#ENC[AES256_GCM,data:bEbCic+ZDAA5ieNedCbiVbJrse17,iv:UwRYlis6NPB/RUcv+YnPxrGdbIcF4hrNiZt19YvWZNQ=,tag:m6PVlzPNnahX7X7KzMUj7A==,type:comment]
|
#ENC[AES256_GCM,data:bEbCic+ZDAA5ieNedCbiVbJrse17,iv:UwRYlis6NPB/RUcv+YnPxrGdbIcF4hrNiZt19YvWZNQ=,tag:m6PVlzPNnahX7X7KzMUj7A==,type:comment]
|
||||||
borg_passwd: ENC[AES256_GCM,data:XOMJtr+DRs7xn5Iclc49iTzK9cFJyc/fSXJjhdKa9jdN,iv:YB8z7zNYjh6NpSxQb1TfPxAYUdzThdVfNZIe6tO5grA=,tag:bO6kZ3cLJDL4IQoWmGvRdg==,type:str]
|
borg_passwd: ENC[AES256_GCM,data:XOMJtr+DRs7xn5Iclc49iTzK9cFJyc/fSXJjhdKa9jdN,iv:YB8z7zNYjh6NpSxQb1TfPxAYUdzThdVfNZIe6tO5grA=,tag:bO6kZ3cLJDL4IQoWmGvRdg==,type:str]
|
||||||
#ENC[AES256_GCM,data:en3kcMuSAicr6DR8y3V3,iv:Vw9YB+AqYwn2/ZP8FmbD1TsjHfxkCGpv7NLpoqZHEKM=,tag:jliaGGKQ7wex9e9gMSWFEQ==,type:comment]
|
#ENC[AES256_GCM,data:en3kcMuSAicr6DR8y3V3,iv:Vw9YB+AqYwn2/ZP8FmbD1TsjHfxkCGpv7NLpoqZHEKM=,tag:jliaGGKQ7wex9e9gMSWFEQ==,type:comment]
|
||||||
@@ -23,7 +23,7 @@ sops:
|
|||||||
U0tmdFBuZnJES3piOTZNV0VKQmQ0eVUKCWRQ/flLzmpC64WyLoipklZBmrkpYiUg
|
U0tmdFBuZnJES3piOTZNV0VKQmQ0eVUKCWRQ/flLzmpC64WyLoipklZBmrkpYiUg
|
||||||
PRu+itNolpPTHm96pe+P93g2iP0wgekG0cX21wkiU2xaLF3dY2FEIA==
|
PRu+itNolpPTHm96pe+P93g2iP0wgekG0cX21wkiU2xaLF3dY2FEIA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-11-11T23:01:41Z"
|
lastmodified: "2025-11-12T01:06:16Z"
|
||||||
mac: ENC[AES256_GCM,data:hcZynyaUVq9aCqN9l6EVloa5HaPB9tSMAXu+c8i++fTHIAwWCl9PLiJtkizfT/Ov5svjyCrC7yBF0asm6qB3CshiSGnAxIk8imDmdzvITu/6RbomCT0VeRcvcz7mfxQb4TYbuW1z3x2H4YOjAVHbaILjcANCI/jOOYENrmLheA0=,iv:/9+f4KGXq4BnB0uCV8D3BeaTNQjtttvGSvEVgcHr/f4=,tag:BHLU0JxijmyQ6d/MSpdjjQ==,type:str]
|
mac: ENC[AES256_GCM,data:kUWUwWHtGrbiKKr8gvhrhMhmWnxqRO2VNgP1LHxZ9ENpBqhtIj22o8D0BRr5WQHmtUISN1CPcEf13j/14rLVRyfLRvl/ofgrNmUboG4gbRPfUGov39gC+hmayeX3/vX9fTWBDThzWNBxNJgCj1k+nulw6c4XmQaPqYmE0/F+b7c=,iv:GZRbSCfI21LEqHWYEwC11G9jKtNGCtD534TRfmJiQns=,tag:Mwg8YLMGbsp3OC1K66Z3Wg==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.11.0
|
version: 3.11.0
|
||||||
|
|||||||
Reference in New Issue
Block a user