Compare commits

..

11 commits

Author SHA1 Message Date
858cd526b5
add python3 to tools 2025-08-10 11:14:07 +02:00
ade851bf98
update nvim config 2025-08-09 01:40:39 +02:00
205d65754c
update to garage v2 2025-08-08 23:33:28 +02:00
feb035f3b4
prometheus metrics for garage 2025-08-08 23:30:43 +02:00
b50da9d1d0
fix private s3-web subdomain 2025-08-08 17:11:30 +02:00
13e7874536
update website lockfile 2025-08-05 23:09:24 +02:00
b075c76f75
enable i2c (monitor settings changing thing) on nixdesk 2025-07-30 03:27:42 +02:00
ea75c7c4b0
add garage on hopper 2025-07-30 03:00:28 +02:00
0b8fa028a2
update nvim config 2025-07-28 21:02:20 +02:00
185a14fee8
add audio-abtest script 2025-07-28 19:23:10 +02:00
c1a1a53fab
update website version 2025-07-28 04:41:01 +02:00
12 changed files with 71 additions and 9 deletions

14
flake.lock generated
View file

@ -825,11 +825,11 @@
]
},
"locked": {
"lastModified": 1752968690,
"narHash": "sha256-8795clbksJi4RTEf9OI4+1rZ9FQsqxrl6/e3xTWcLfM=",
"lastModified": 1754696412,
"narHash": "sha256-NphnpnnD5/hHiKRuSDeHnPSxaKf8SJjMaOL2xzXJqcs=",
"owner": "xunuwu",
"repo": "nvim-config",
"rev": "bbcffc07bdbf52ba359fb6e1c1678104525fc330",
"rev": "8c608d5359757b5b13a98a8fd41e7f65f4a0c080",
"type": "github"
},
"original": {
@ -846,11 +846,11 @@
]
},
"locked": {
"lastModified": 1749197856,
"narHash": "sha256-Vk9HO8RMe8fsDCzFQJlp4hAUDFMrduOMDmh6ZifiVHA=",
"lastModified": 1754428097,
"narHash": "sha256-e+2gFKE+yyj72B/5K3QX9lPJ6PP42r/0hNcHoXkWuso=",
"ref": "refs/heads/main",
"rev": "3943ddd64bf04e3631d39f110723f1aee27c3a82",
"revCount": 7,
"rev": "a5f69e7dddf807af6478e566a73992bd52f11e4d",
"revCount": 9,
"type": "git",
"url": "https://git.xunuwu.xyz/xun/xunuwu.xyz"
},

View file

@ -11,7 +11,7 @@ in {
certs = {
"${domain}" = {
domain = "${domain}";
extraDomainNames = ["*.${domain}" "*.hopper.priv.${domain}"];
extraDomainNames = ["*.${domain}" "*.hopper.priv.${domain}" "*.s3-web.hopper.priv.${domain}"];
dnsProvider = "cloudflare";
reloadServices = ["caddy.service"];
credentialFiles = {

View file

@ -49,6 +49,8 @@ in {
vaultwarden = mkPublicEntry "vw" "${bridge}:${toString config.services.vaultwarden.config.ROCKET_PORT}";
abs = mkPublicEntry "abs" "${bridge}:${toString config.services.audiobookshelf.port}";
miniflux = mkPublicEntry "rss" "${bridge}:18632";
s3 = mkPublicEntry "s3" "unix//run/garage/s3.sock";
s3-2 = mkPublicEntry "*.s3" "unix//run/garage/s3.sock";
navidrome2 = mkPrivateEntry "navidrome" "${bridge}:${toString config.services.navidrome.settings.Port}";
slskd = mkPrivateEntry "slskd" "localhost:${toString config.services.slskd.settings.web.port}";
@ -58,6 +60,8 @@ in {
absPriv = mkPrivateEntry "abs" "${bridge}:${toString config.services.audiobookshelf.port}";
glances = mkPrivateEntry "glances" "${bridge}:${toString config.services.glances.port}";
alertmanager = mkPrivateEntry "alerts" "${bridge}:${toString config.services.prometheus.alertmanager.port}";
s3-web = mkPrivateEntry "s3-web" "unix//run/garage/web.sock";
s3-web2 = mkPrivateEntry "*.s3-web" "unix//run/garage/web.sock";
other = {
hostName = "*.${domain}:80";

View file

@ -6,6 +6,7 @@
./audiobookshelf.nix
./caddy.nix
./dnsmasq.nix
./garage.nix
./glances.nix
./homepage.nix
./minecraft.nix

View file

@ -0,0 +1,32 @@
{
pkgs,
vars,
config,
...
}: {
services.garage = {
enable = true;
package = pkgs.garage_2_0_0;
settings = {
replication_factor = 1;
rpc_bind_addr = "[::]:8005";
rpc_secret = "4425f5c26c5e11581d3223904324dcb5b5d5dfb14e5e7f35e38c595424f5f1e6";
s3_api = {
api_bind_addr = "/run/garage/s3.sock";
s3_region = "garage";
root_domain = "s3.${vars.domain}";
};
s3_web = {
bind_addr = "/run/garage/web.sock";
root_domain = ".s3-web.hopper.priv.${vars.domain}";
};
admin.api_bind_addr = "127.0.0.1:3903";
};
};
systemd.services.garage.serviceConfig.RuntimeDirectory = "garage";
}

View file

@ -112,6 +112,13 @@
targets = ["rackserv:9615"];
};
}
{
job_name = "garage";
static_configs = lib.singleton {
targets = ["localhost:3903"];
};
}
];
exporters = {
node = {

View file

@ -12,6 +12,8 @@
inputs.hardware.nixosModules.gigabyte-b550
];
hardware.i2c.enable = true;
boot = {
kernelPackages = pkgs.linuxPackages_latest;
initrd = {

View file

@ -144,6 +144,7 @@
# system things
kdePackages.dolphin
ddcui
# music
puddletag

View file

@ -16,7 +16,7 @@ in {
certs = {
"${domain}" = {
domain = "${domain}";
extraDomainNames = ["*.${domain}"];
extraDomainNames = ["*.${domain}" "*.s3.${domain}"];
dnsProvider = "cloudflare";
reloadServices = ["caddy.service"];
credentialFiles.CF_DNS_API_TOKEN_FILE = config.sops.secrets.cloudflare.path;
@ -45,6 +45,8 @@ in {
"vw.${domain}"
"abs.${domain}"
"rss.${domain}"
"s3.${domain}"
"*.s3.${domain}"
];
useACMEHost = domain;
logFormat = "output file ${config.services.caddy.logDir}/access-hopper.log";

View file

@ -0,0 +1,11 @@
{writeShellScriptBin}:
writeShellScriptBin "audio-abtest" ''
track_1=$(shuf -i 0-1 -n 1)
track_2=$(( 1 - track_1 ))
ffmpeg -i "$1" -i "$2" -f lavfi -i color=c=black:s=100x100:r=3 \
-c:v libx264 -tune stillimage -b:v 100k \
-c:a copy \
-map $track_1:a:0 -map $track_2:a:0 -map 2:v:0 \
-shortest output.mkv
''

View file

@ -4,5 +4,6 @@
ida-pro = pkgs.callPackage ./ida-pro {};
cartograph-cf = pkgs.callPackage ./cartograph-cf {};
keyboard-state = pkgs.callPackage ./keyboard-state {};
audio-abtest = pkgs.callPackage ./audio-abtest {};
};
}

View file

@ -20,5 +20,6 @@
yt-dlp
inotify-tools
dig
python3
];
}