nix machine / user configurations

Compare changes

Choose any two refs to compare.

Changed files
+107 -55
_sources
dns
hosts
trimounts
modules
secrets
+4 -4
_sources/generated.json
···
},
"blog": {
"cargoLocks": null,
-
"date": "2025-12-01",
+
"date": "2025-12-07",
"extract": null,
"name": "blog",
"passthru": null,
···
"fetchSubmodules": false,
"leaveDotGit": false,
"name": null,
-
"rev": "b42a0251ec0648d7f9dc0b3033811a5fa4168d39",
-
"sha256": "sha256-uPNpQxAYAwXHrWCo2VncbjT6OJbAX80jFdcslu8q7dQ=",
+
"rev": "ab573fb4fa69204bf3f891abb49205e6bf5b4c8f",
+
"sha256": "sha256-Ee2NczojZbFfimKF51W6T0wCv3sNmdliPAKFetOJZ4I=",
"sparseCheckout": [],
"type": "git",
"url": "https://tangled.org/@ptr.pet/endpoint"
},
-
"version": "b42a0251ec0648d7f9dc0b3033811a5fa4168d39"
+
"version": "ab573fb4fa69204bf3f891abb49205e6bf5b4c8f"
},
"clickee-proxy": {
"cargoLocks": null,
+4 -4
_sources/generated.nix
···
};
blog = {
pname = "blog";
-
version = "b42a0251ec0648d7f9dc0b3033811a5fa4168d39";
+
version = "ab573fb4fa69204bf3f891abb49205e6bf5b4c8f";
src = fetchgit {
url = "https://tangled.org/@ptr.pet/endpoint";
-
rev = "b42a0251ec0648d7f9dc0b3033811a5fa4168d39";
+
rev = "ab573fb4fa69204bf3f891abb49205e6bf5b4c8f";
fetchSubmodules = false;
deepClone = false;
leaveDotGit = false;
sparseCheckout = [ ];
-
sha256 = "sha256-uPNpQxAYAwXHrWCo2VncbjT6OJbAX80jFdcslu8q7dQ=";
+
sha256 = "sha256-Ee2NczojZbFfimKF51W6T0wCv3sNmdliPAKFetOJZ4I=";
};
-
date = "2025-12-01";
+
date = "2025-12-07";
};
clickee-proxy = {
pname = "clickee-proxy";
+70 -38
dns/dnsconfig.js
···
var DSP_CLOUDFLARE = NewDnsProvider("cloudflare");
+
var DSP_BUNNY = NewDnsProvider("bunny_dns");
var REG_NONE = NewRegistrar("none");
-
var WOLUMONDE_IP = "23.88.101.188";
-
var DZWONEK_IP = "94.237.26.47";
-
var TRIMOUNTS_IP = "159.195.58.28";
+
var DZWONEK_IP4 = "94.237.26.47";
+
var DZWONEK_IP6 = "2a04:3542:1000:910:6898:1dff:fea1:4b4b";
+
var DZWONEK_IPS = [DZWONEK_IP4, DZWONEK_IP6];
+
var TRIMOUNTS_IP4 = "159.195.58.28";
+
var TRIMOUNTS_IP6 = "2a0a:4cc0:c1:e83d::b00b";
+
var TRIMOUNTS_IPS = [TRIMOUNTS_IP4, TRIMOUNTS_IP6];
+
+
function host(name, ips, opts) {
+
if (opts)
+
return [
+
A(name, ips[0], opts),
+
AAAA(name, ips[1], opts),
+
];
+
else
+
return [
+
A(name, ips[0]),
+
AAAA(name, ips[1]),
+
];
+
}
+
+
function hosts(_names, ips, opts) {
+
var names = [];
+
if (typeof _names === "string")
+
names.push(_names);
+
else
+
names = _names;
+
+
var records = [];
+
_.each(names, function (name) {
+
_.each(host(name, ips, opts), function (r) {
+
records.push(r);
+
});
+
});
+
return records;
+
}
+
+
function TRIMOUNTS(names, opts) {
+
return hosts(names, TRIMOUNTS_IPS, opts);
+
}
+
function DZWONEK(names, opts) {
+
return hosts(names, DZWONEK_IPS, opts);
+
}
+
+
function IGNORE_ACME() {
+
return IGNORE_NAME("_acme-challenge");
+
}
D(
"gaze.systems",
REG_NONE,
-
DnsProvider(DSP_CLOUDFLARE),
+
DnsProvider(DSP_BUNNY),
DefaultTTL(1),
-
A("@", TRIMOUNTS_IP, CF_PROXY_OFF, TTL(60)),
-
A("doc", TRIMOUNTS_IP, CF_PROXY_OFF),
-
A("pmart", TRIMOUNTS_IP, CF_PROXY_OFF),
-
// A("webhook", WOLUMONDE_IP, CF_PROXY_OFF),
-
A("dash", TRIMOUNTS_IP, CF_PROXY_OFF), // perses
-
A("knot", TRIMOUNTS_IP, CF_PROXY_OFF, TTL(60)),
-
A("spindle", TRIMOUNTS_IP, CF_PROXY_OFF, TTL(60)),
-
A("id", TRIMOUNTS_IP, CF_PROXY_OFF),
-
// atp
-
A("guestbook", TRIMOUNTS_IP, CF_PROXY_OFF),
-
// dzwonek
-
A("vpn", DZWONEK_IP, CF_PROXY_OFF),
-
// A("meow", WOLUMONDE_IP, CF_PROXY_OFF),
-
// thing
-
// TXT("id", "a data endpoint for entity with serial id /90008/."),
-
// TXT("id", "entity linked here uses it/they pronouns. it can be referred to as /dusk/ or /dawn/."),
-
// TXT("id", "this one is not a human, try to refer to it in third person. use /this one/, /this thing/, etc."),
-
// TXT("id", "try connecting to https://gaze.systems/about for more information."),
+
TRIMOUNTS(
+
[
+
"@", "doc", "pmart", "dash", "id",
+
"knot", "spindle",
+
"guestbook",
+
],
+
CF_PROXY_OFF,
+
),
+
DZWONEK("vpn", CF_PROXY_OFF),
// github pages
CNAME("dev", "90-008.github.io."),
// fastmail
···
MX("@", 10, "in1-smtp.messagingengine.com."),
MX("@", 20, "in2-smtp.messagingengine.com."),
TXT("@", "v=spf1 include:spf.messagingengine.com ?all"),
-
TXT("_dmarc", "v=DMARC1; p=none;"),
+
TXT("_dmarc", "v=DMARC1; p=reject;"),
// resend
MX("send.poke", 10, "feedback-smtp.us-east-1.amazonses.com."),
TXT(
···
// atproto
TXT("_atproto.eris", "did=did:plc:bxjnsrfzozl365rsdo5yvuz5", TTL(60)),
TXT("_atproto.drew", "did=did:plc:vo6ie3kd6xvpjlof4pnb2zzp", TTL(60)),
+
IGNORE_ACME(),
);
D(
···
REG_NONE,
DnsProvider(DSP_CLOUDFLARE),
DefaultTTL(1),
-
A("@", TRIMOUNTS_IP, CF_PROXY_ON),
+
TRIMOUNTS("@", CF_PROXY_ON),
TXT("@", "a data endpoint for entity with serial id /90008/."),
TXT(
"@",
···
"@",
"try connecting to https://gaze.systems/about for more information.",
),
-
// atproto
-
// TXT("_atproto", "did=did:plc:dfl62fgb7wtjj3fcbb72naae"),
-
IGNORE_NAME("_acme-challenge"),
+
IGNORE_ACME(),
);
D(
"poor.dog",
REG_NONE,
-
DnsProvider(DSP_CLOUDFLARE),
+
DnsProvider(DSP_BUNNY),
DefaultTTL(1),
-
A("@", TRIMOUNTS_IP, CF_PROXY_OFF),
+
TRIMOUNTS("@", CF_PROXY_OFF),
TXT("@", "v=spf1 -all"),
TXT("_dmarc", "v=DMARC1; p=reject;"),
TXT("_atproto", "did=did:plc:dfl62fgb7wtjj3fcbb72naae", TTL(60)),
-
IGNORE_NAME("_acme-challenge"),
+
IGNORE_ACME(),
);
var EMAIL_TTL = 86400;
···
D(
"ptr.pet",
REG_NONE,
-
DnsProvider(DSP_CLOUDFLARE),
+
DnsProvider(DSP_BUNNY),
DefaultTTL(1),
-
A("@", TRIMOUNTS_IP, CF_PROXY_OFF),
-
A("nucleus", DZWONEK_IP, CF_PROXY_OFF),
-
A("trill", DZWONEK_IP, CF_PROXY_OFF),
+
TRIMOUNTS("@", CF_PROXY_OFF),
+
DZWONEK(["nucleus", "trill"], CF_PROXY_OFF),
// atproto
TXT("_atproto", "did=did:plc:dfl62fgb7wtjj3fcbb72naae"),
TXT("_atproto.nil", "did=did:plc:dumbmutt4po52ept2tczimje"),
···
),
// mta-sts
-
A("mta-sts", TRIMOUNTS_IP, CF_PROXY_OFF),
+
TRIMOUNTS("mta-sts", CF_PROXY_OFF),
TXT("_mta-sts", "v=STSv1; id=20250930T1945", TTL(EMAIL_TTL)),
// autoconfig
-
A("autoconfig", TRIMOUNTS_IP, CF_PROXY_OFF),
-
A("autodiscover", TRIMOUNTS_IP, CF_PROXY_OFF),
+
TRIMOUNTS(["autoconfig", "autodiscover"], CF_PROXY_OFF),
// autodiscovery
SRV(
···
SRV("_imaps._tcp", 0, 1, 993, "imap.migadu.com.", TTL(EMAIL_TTL)),
SRV("_pop3s._tcp", 0, 1, 995, "pop.migadu.com.", TTL(EMAIL_TTL)),
-
IGNORE_NAME("_acme-challenge"),
+
IGNORE_ACME(),
);
+3 -3
hosts/trimounts/modules/nginx.nix
···
users.users.nginx.extraGroups = [ "acme" ];
-
age.secrets.cfDnsEditToken.file = ../../../secrets/cloudflareDnsEdit.age;
+
age.secrets.bunnyApiKey.file = ../../../secrets/bunnyApiKey.age;
security.acme = {
acceptTerms = true;
defaults = {
group = "nginx";
email = (import "${inputs.self}/personal.nix").emails.primary;
-
dnsProvider = "cloudflare";
+
dnsProvider = "bunny";
credentialFiles = {
-
CF_DNS_API_TOKEN_FILE = config.age.secrets.cfDnsEditToken.path;
+
BUNNY_API_KEY_FILE = config.age.secrets.bunnyApiKey.path;
};
};
certs."poor.dog" = { };
+21
secrets/bunnyApiKey.age
···
+
age-encryption.org/v1
+
-> ssh-rsa Abmvag
+
XNh6H/W0srZXbGmkLGQ/YpXfamisyK/duLeSftkcrXU67b5s8x40HUv1NaKr/QQt
+
7ZBvKfm+8YsKcmmXaIINOHl6/LQ6GTpWprN91VDxTGOGzpO/GmD8MOUk8zfJYh+D
+
3soDoZuuk1gr8Q7+f8AIrfT+x3QwHA2h3hCm3un3MqhmAicTTip2C3NFQhlsEwHi
+
DhgOJ1Wy9/lSXwIzhg62s8KDOQ4cBETA8PRvspWh8GsV1oLU/brk2itwUaj0P8xA
+
uQrQzo71rbUttXeGnW4yBZjzzGMJe5iHY3H4aQxjklC1yGpInDf3HGaO6X/yaZBx
+
vRx2YxwCH4AdhgVpllbZo2++uGX8mye6fu5Lap04+dXU+ubglEvDQ1uRDrbXML9/
+
PpRszgmu5z7k9u+qWI/aBywUChvVSy4TDWKcj2JAqvCuU7QYiEi6SKhIiDLNd/BQ
+
7aa/GHSUpUu6TnpRwuBF4l2g5+jO27hsNWb3nAm/SV5YHEVCn+Tr5PiRPxBK8Fa0
+
ngJjBK5r4ra+uGulwGn1uoM0jYVCl6EtjtKgLeP5cvbdLylKWRXRYxyL7XTxqmHb
+
oLJsVvxuF1pFiaUkAmMBctaYdMw9EVwV8vTp4/eebVe6pU0Lmxv5B0u5nDiWar5o
+
RQzfwfGhtOaE0PUQNqVz7VfdoIzCcUjqnJMwInh+XwU
+
-> ssh-ed25519 y5W/qA rZ2rTM2n2bPULAefeeUvEFwskCNIEh5KdkC7uEnBcXM
+
P75OaqdeAt3BVa/xprDvJ/bLoGLkU6qdteVvwD9fO8M
+
-> ssh-ed25519 LaQclg Bnt8Z3Cve0gG6ItbJq+1+fUT/ykFsngstap8ymEr1m4
+
filHMr3njOkRpbu4UwutvqxVLf8joTBvqs3JT1gu7kk
+
--- pkIfClG050A3Kp8c+HUQJDwlxM1BbFaCRx8Vp0++xbI
+
4๏ฟฝdc๏ฟฝ๏ฟฝ๏ฟฝ/\๏ฟฝฺฆ ๏ฟฝ@:e๏ฟฝ๏ฟฝ:e๏ฟฝo;๏ฟฝ
+
๏ฟฝE๏ฟฝd\W๏ฟฝ#m
+
๏ฟฝ๏ฟฝWA๏ฟฝ๏ฟฝ#๏ฟฝuaJ๏ฟฝ๏ฟฝT๏ฟฝ<๏ฟฝ๏ฟฝ๏ฟฝX๏ฟฝR๏ฟฝ๏ฟฝ๏ฟฝX๏ฟฝX"9 ๏ฟฝ๏ฟฝ๏ฟฝ)๏ฟฝ'U:7๏ฟฝ๏ฟฝ+๏ฟฝ,๏ฟฝhNฯ๏ฟฝUl\๏ฟฝ FSP8c
+5 -6
secrets/secrets.nix
···
let
yusdacra = builtins.readFile ./yusdacra.key.pub;
-
wolumonde = builtins.readFile ./wolumonde.key.pub;
dzwonek = builtins.readFile ./dzwonek.key.pub;
trimounts = builtins.readFile ./trimounts.key.pub;
develMobi = builtins.readFile ./develMobi.key.pub;
···
"nixGithubAccessToken.age".publicKeys = [ yusdacra ];
"websiteConfig.age".publicKeys = [
yusdacra
-
wolumonde
trimounts
];
"pdsConfig.age".publicKeys = [
yusdacra
-
wolumonde
trimounts
];
"clickeeProxyConfig.age".publicKeys = [
yusdacra
-
wolumonde
trimounts
];
"persesSecret.age".publicKeys = [
yusdacra
-
wolumonde
trimounts
];
"headscaleOidcSecret.age".publicKeys = [
···
"cloudflareDnsEdit.age".publicKeys = [
yusdacra
dzwonek
-
wolumonde
+
trimounts
+
];
+
"bunnyApiKey.age".publicKeys = [
+
yusdacra
+
dzwonek
trimounts
];
}