Compare commits
11 commits
777f28b9b3
...
858cd526b5
Author | SHA1 | Date | |
---|---|---|---|
858cd526b5 | |||
ade851bf98 | |||
205d65754c | |||
feb035f3b4 | |||
b50da9d1d0 | |||
13e7874536 | |||
b075c76f75 | |||
ea75c7c4b0 | |||
0b8fa028a2 | |||
185a14fee8 | |||
c1a1a53fab |
12 changed files with 71 additions and 9 deletions
14
flake.lock
generated
14
flake.lock
generated
|
@ -825,11 +825,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752968690,
|
"lastModified": 1754696412,
|
||||||
"narHash": "sha256-8795clbksJi4RTEf9OI4+1rZ9FQsqxrl6/e3xTWcLfM=",
|
"narHash": "sha256-NphnpnnD5/hHiKRuSDeHnPSxaKf8SJjMaOL2xzXJqcs=",
|
||||||
"owner": "xunuwu",
|
"owner": "xunuwu",
|
||||||
"repo": "nvim-config",
|
"repo": "nvim-config",
|
||||||
"rev": "bbcffc07bdbf52ba359fb6e1c1678104525fc330",
|
"rev": "8c608d5359757b5b13a98a8fd41e7f65f4a0c080",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -846,11 +846,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1749197856,
|
"lastModified": 1754428097,
|
||||||
"narHash": "sha256-Vk9HO8RMe8fsDCzFQJlp4hAUDFMrduOMDmh6ZifiVHA=",
|
"narHash": "sha256-e+2gFKE+yyj72B/5K3QX9lPJ6PP42r/0hNcHoXkWuso=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "3943ddd64bf04e3631d39f110723f1aee27c3a82",
|
"rev": "a5f69e7dddf807af6478e566a73992bd52f11e4d",
|
||||||
"revCount": 7,
|
"revCount": 9,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.xunuwu.xyz/xun/xunuwu.xyz"
|
"url": "https://git.xunuwu.xyz/xun/xunuwu.xyz"
|
||||||
},
|
},
|
||||||
|
|
|
@ -11,7 +11,7 @@ in {
|
||||||
certs = {
|
certs = {
|
||||||
"${domain}" = {
|
"${domain}" = {
|
||||||
domain = "${domain}";
|
domain = "${domain}";
|
||||||
extraDomainNames = ["*.${domain}" "*.hopper.priv.${domain}"];
|
extraDomainNames = ["*.${domain}" "*.hopper.priv.${domain}" "*.s3-web.hopper.priv.${domain}"];
|
||||||
dnsProvider = "cloudflare";
|
dnsProvider = "cloudflare";
|
||||||
reloadServices = ["caddy.service"];
|
reloadServices = ["caddy.service"];
|
||||||
credentialFiles = {
|
credentialFiles = {
|
||||||
|
|
|
@ -49,6 +49,8 @@ in {
|
||||||
vaultwarden = mkPublicEntry "vw" "${bridge}:${toString config.services.vaultwarden.config.ROCKET_PORT}";
|
vaultwarden = mkPublicEntry "vw" "${bridge}:${toString config.services.vaultwarden.config.ROCKET_PORT}";
|
||||||
abs = mkPublicEntry "abs" "${bridge}:${toString config.services.audiobookshelf.port}";
|
abs = mkPublicEntry "abs" "${bridge}:${toString config.services.audiobookshelf.port}";
|
||||||
miniflux = mkPublicEntry "rss" "${bridge}:18632";
|
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}";
|
navidrome2 = mkPrivateEntry "navidrome" "${bridge}:${toString config.services.navidrome.settings.Port}";
|
||||||
slskd = mkPrivateEntry "slskd" "localhost:${toString config.services.slskd.settings.web.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}";
|
absPriv = mkPrivateEntry "abs" "${bridge}:${toString config.services.audiobookshelf.port}";
|
||||||
glances = mkPrivateEntry "glances" "${bridge}:${toString config.services.glances.port}";
|
glances = mkPrivateEntry "glances" "${bridge}:${toString config.services.glances.port}";
|
||||||
alertmanager = mkPrivateEntry "alerts" "${bridge}:${toString config.services.prometheus.alertmanager.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 = {
|
other = {
|
||||||
hostName = "*.${domain}:80";
|
hostName = "*.${domain}:80";
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
./audiobookshelf.nix
|
./audiobookshelf.nix
|
||||||
./caddy.nix
|
./caddy.nix
|
||||||
./dnsmasq.nix
|
./dnsmasq.nix
|
||||||
|
./garage.nix
|
||||||
./glances.nix
|
./glances.nix
|
||||||
./homepage.nix
|
./homepage.nix
|
||||||
./minecraft.nix
|
./minecraft.nix
|
||||||
|
|
32
hosts/hopper/profiles/lab/garage.nix
Normal file
32
hosts/hopper/profiles/lab/garage.nix
Normal 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";
|
||||||
|
}
|
|
@ -112,6 +112,13 @@
|
||||||
targets = ["rackserv:9615"];
|
targets = ["rackserv:9615"];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
job_name = "garage";
|
||||||
|
static_configs = lib.singleton {
|
||||||
|
targets = ["localhost:3903"];
|
||||||
|
};
|
||||||
|
}
|
||||||
];
|
];
|
||||||
exporters = {
|
exporters = {
|
||||||
node = {
|
node = {
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
inputs.hardware.nixosModules.gigabyte-b550
|
inputs.hardware.nixosModules.gigabyte-b550
|
||||||
];
|
];
|
||||||
|
|
||||||
|
hardware.i2c.enable = true;
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
initrd = {
|
initrd = {
|
||||||
|
|
|
@ -144,6 +144,7 @@
|
||||||
|
|
||||||
# system things
|
# system things
|
||||||
kdePackages.dolphin
|
kdePackages.dolphin
|
||||||
|
ddcui
|
||||||
|
|
||||||
# music
|
# music
|
||||||
puddletag
|
puddletag
|
||||||
|
|
|
@ -16,7 +16,7 @@ in {
|
||||||
certs = {
|
certs = {
|
||||||
"${domain}" = {
|
"${domain}" = {
|
||||||
domain = "${domain}";
|
domain = "${domain}";
|
||||||
extraDomainNames = ["*.${domain}"];
|
extraDomainNames = ["*.${domain}" "*.s3.${domain}"];
|
||||||
dnsProvider = "cloudflare";
|
dnsProvider = "cloudflare";
|
||||||
reloadServices = ["caddy.service"];
|
reloadServices = ["caddy.service"];
|
||||||
credentialFiles.CF_DNS_API_TOKEN_FILE = config.sops.secrets.cloudflare.path;
|
credentialFiles.CF_DNS_API_TOKEN_FILE = config.sops.secrets.cloudflare.path;
|
||||||
|
@ -45,6 +45,8 @@ in {
|
||||||
"vw.${domain}"
|
"vw.${domain}"
|
||||||
"abs.${domain}"
|
"abs.${domain}"
|
||||||
"rss.${domain}"
|
"rss.${domain}"
|
||||||
|
"s3.${domain}"
|
||||||
|
"*.s3.${domain}"
|
||||||
];
|
];
|
||||||
useACMEHost = domain;
|
useACMEHost = domain;
|
||||||
logFormat = "output file ${config.services.caddy.logDir}/access-hopper.log";
|
logFormat = "output file ${config.services.caddy.logDir}/access-hopper.log";
|
||||||
|
|
11
pkgs/audio-abtest/default.nix
Normal file
11
pkgs/audio-abtest/default.nix
Normal 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
|
||||||
|
''
|
|
@ -4,5 +4,6 @@
|
||||||
ida-pro = pkgs.callPackage ./ida-pro {};
|
ida-pro = pkgs.callPackage ./ida-pro {};
|
||||||
cartograph-cf = pkgs.callPackage ./cartograph-cf {};
|
cartograph-cf = pkgs.callPackage ./cartograph-cf {};
|
||||||
keyboard-state = pkgs.callPackage ./keyboard-state {};
|
keyboard-state = pkgs.callPackage ./keyboard-state {};
|
||||||
|
audio-abtest = pkgs.callPackage ./audio-abtest {};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,5 +20,6 @@
|
||||||
yt-dlp
|
yt-dlp
|
||||||
inotify-tools
|
inotify-tools
|
||||||
dig
|
dig
|
||||||
|
python3
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue