Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b54be988cc |
156 changed files with 1583 additions and 1934 deletions
96
.sops.yaml
96
.sops.yaml
|
|
@ -1,96 +0,0 @@
|
||||||
keys:
|
|
||||||
- &admin_age_fi age1tf38ae8yzzzmtjp5cjyemf0a8cksq62dz0x0hsntyhsjk5pq6s6q3v9nm7
|
|
||||||
- &host_age_coturn age1vnrtarxwmqxflh2sxe2s49ldfzkve268hx62x4ltv38h3emv8dqspu028l
|
|
||||||
- &host_age_forgejo age1d5y8dx3e8pksvxr8fv8f02v0y7qg7kuwpxpmxksp7xlvrcpfju5sdz6guk
|
|
||||||
- &host_age_ikiwiki age1st5axcrn2s09effsjp6gl89rnwd967y007pzpzamlqydrpf7yeeqjwtnx0
|
|
||||||
- &host_age_jellyfin age10huhyn3va02zjysyanf8fd6lpfvjv3k3u6qymanz9jtcmfp3kqfskth7yt
|
|
||||||
- &host_age_keycloak age15kluaw2krucmc0j98zfk0s5tkwqer0ax6jva458zukzrgnqjqc9q7s88yd
|
|
||||||
- &host_age_lifeline age1pmx78vda0c2qnn8epvkavl26e2939uj65608fdq959ds60d58ucsqwxsua
|
|
||||||
- &host_age_mail-1 age1hny8kwx0uymselgas25q558ruxxdv7lgtu9d5rnd6x9w3nysk4zqumzzrp
|
|
||||||
- &host_age_mastodon age1r60mmmeulm33h0trc0y870dml5hzhglyjv4wecyjy2858pg8u47s793r30
|
|
||||||
- &host_age_matrix age1g60l5mu08xrwfw7uptwcwde8kp9dacs4ltqv2ndjskpy8z5sqakqssxxq5
|
|
||||||
- &host_age_metrics age1lrtengtdc0nzpagr8fkp5mwqda66jqr0s2h3wsxcdscmalp8n3js3r0e3n
|
|
||||||
- &host_age_metrics-nekomesh age1rh7zgp445t39c7tmh84r30e9edju8gmtn84u7rjwhmyntzkugucq5x0xse
|
|
||||||
- &host_age_nextcloud age1lvlmct30jtg7p4qpf8evtjlld6g74q2ckh803hd3ynr7cz7zlceq84flwu
|
|
||||||
- &host_age_searx age17h3js5v8s5vezcankky6kqxcrvtfxanmvhp3axmnqs4y9s2lr9yqvc6zrn
|
|
||||||
- &host_age_torrent age1m37wtvp7fpavaygn2jc6kq2gtuvgvf0jgwwhd3p5862djv5segqs97mg7c
|
|
||||||
- &host_age_valkyrie age1guqc5pnajp2whkla6vws4yqnpe5hq4z89w6te3n5yql5pugzfqlqczjlee
|
|
||||||
creation_rules:
|
|
||||||
- path_regex: config/hosts/coturn/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_coturn
|
|
||||||
- path_regex: config/hosts/forgejo/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_forgejo
|
|
||||||
- path_regex: config/hosts/ikiwiki/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_ikiwiki
|
|
||||||
- path_regex: config/hosts/jellyfin/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_jellyfin
|
|
||||||
- path_regex: config/hosts/keycloak/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_keycloak
|
|
||||||
- path_regex: config/hosts/lifeline/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_lifeline
|
|
||||||
- path_regex: config/hosts/mail-1/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_mail-1
|
|
||||||
- path_regex: config/hosts/mastodon/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_mastodon
|
|
||||||
- path_regex: config/hosts/matrix/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_matrix
|
|
||||||
- path_regex: config/hosts/metrics/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_metrics
|
|
||||||
- path_regex: config/hosts/metrics-nekomesh/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_metrics-nekomesh
|
|
||||||
- path_regex: config/hosts/nextcloud/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_nextcloud
|
|
||||||
- path_regex: config/hosts/searx/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_searx
|
|
||||||
- path_regex: config/hosts/torrent/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_torrent
|
|
||||||
- path_regex: config/hosts/valkyrie/.*
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *admin_age_fi
|
|
||||||
- *host_age_valkyrie
|
|
||||||
stores:
|
|
||||||
yaml:
|
|
||||||
indent: 2
|
|
||||||
|
|
@ -35,13 +35,13 @@
|
||||||
parted
|
parted
|
||||||
tmux
|
tmux
|
||||||
nano
|
nano
|
||||||
ssh-to-age
|
|
||||||
tcpdump
|
tcpdump
|
||||||
];
|
];
|
||||||
|
|
||||||
security.acme = {
|
security.acme = {
|
||||||
defaults.email = "acme@grzb.de";
|
defaults.email = "acme@grzb.de";
|
||||||
acceptTerms = true;
|
acceptTerms = true;
|
||||||
|
preliminarySelfsigned = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Print the ed25519 public ssh host key to console when booting
|
# Print the ed25519 public ssh host key to console when booting
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
min-port = 49200;
|
min-port = 49200;
|
||||||
max-port = 49500;
|
max-port = 49500;
|
||||||
use-auth-secret = true;
|
use-auth-secret = true;
|
||||||
static-auth-secret-file = "/run/secrets/static-auth-secret";
|
static-auth-secret-file = "/secrets/static-auth-secret.secret";
|
||||||
realm = "turn.nekover.se";
|
realm = "turn.nekover.se";
|
||||||
cert = "${config.security.acme.certs."turn.nekover.se".directory}/fullchain.pem";
|
cert = "${config.security.acme.certs."turn.nekover.se".directory}/fullchain.pem";
|
||||||
pkey = "${config.security.acme.certs."turn.nekover.se".directory}/key.pem";
|
pkey = "${config.security.acme.certs."turn.nekover.se".directory}/key.pem";
|
||||||
|
|
@ -42,11 +42,4 @@
|
||||||
total-quota=1200
|
total-quota=1200
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets."static-auth-secret" = {
|
|
||||||
mode = "0440";
|
|
||||||
owner = "turnserver";
|
|
||||||
group = "turnserver";
|
|
||||||
restartUnits = [ "coturn.service" ];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,5 @@
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
./acme.nix
|
./acme.nix
|
||||||
./coturn.nix
|
./coturn.nix
|
||||||
./sops.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
11
config/hosts/coturn/secrets.nix
Normal file
11
config/hosts/coturn/secrets.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{ keyCommandEnv,... }:
|
||||||
|
{
|
||||||
|
deployment.keys."static-auth-secret.secret" = {
|
||||||
|
keyCommand = keyCommandEnv ++ [ "pass" "coturn/static-auth-secret" ];
|
||||||
|
destDir = "/secrets";
|
||||||
|
user = "turnserver";
|
||||||
|
group = "turnserver";
|
||||||
|
permissions = "0640";
|
||||||
|
uploadAt = "pre-activation";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
static-auth-secret: ENC[AES256_GCM,data:af5cjUSeiCEtYki85h+XoJW5FKY4X18i6zOBZnH64Ju/LwA/yUemA8co17TG5cQnc/sw1pz6LySL2DOq/Gj42g==,iv:Yne84/VLN0jCSulA5OQ0UKbQWkqWBmHYogDuAngAp48=,tag:wJ/4yGnbypjTo/akV3P9ZA==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLMXRScDR1NzhzZGRXYUZQ
|
|
||||||
ZGpRYUlOUWZTVHQvdUlrSG5SRWM2ME9sdUVZCldCZkZ0SXdqUjBVNlRnckg3N0dS
|
|
||||||
S0s2NkRnQys2SGJKSTdiUWlnbTg1dkEKLS0tIGthb0FESjAyMjlEbnV4S0lPOHda
|
|
||||||
S1ZBOWdTSmNRQXMvUGJnd05sK1Q2Qk0KHseEBDVLeSWHdgrYyITRuJyp3orrjwwS
|
|
||||||
04ORMniHR7ymHzRPvm3oX/jkFD0iJEmk8clgm/Gcn2AQ7xXeJO7Vnw==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
recipient: age1tf38ae8yzzzmtjp5cjyemf0a8cksq62dz0x0hsntyhsjk5pq6s6q3v9nm7
|
|
||||||
- enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmemxWRnFLMFVEcVZCb3BT
|
|
||||||
MStWU21kcnF5enpleWt3dFdaMHo3RzJGaENNClU2M2tmdE0zd2pXWUJHQkV5Mkhi
|
|
||||||
a0lIbHJmWDN6UXhVeTZId3RhcEd5TWcKLS0tIFRlSUNQN0pGYmtiOGxJS0pJY0tQ
|
|
||||||
YjFzS205QklRZWdPbklIRzVzbFFPT2sKCXra+DUchbomy9pe2HJAbhAF1mstgUcv
|
|
||||||
NalettWmuLXe2B0WjC9fAy2AAJS6kysEbUh960suzSPLTqTce0MGfA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
recipient: age1vnrtarxwmqxflh2sxe2s49ldfzkve268hx62x4ltv38h3emv8dqspu028l
|
|
||||||
lastmodified: "2026-05-16T23:13:15Z"
|
|
||||||
mac: ENC[AES256_GCM,data:PxX20JAaYhj3DE1KjakVmVucL7jjZU0vh5vnSNmKLgqedJiV2ZqEXpF4s1WPgYTY723aLiWDLw/8kTF/VmvMs8zOdGSkIhojWIWFE6I2yq1MjlawXuUhGpe6C1XGQ+w0KTqzyJLxyIsUSH24GqPHmLRMStE7bYdr0a4lRBHEyqE=,iv:6tXoqhG1XqDAz4SZSIxFCi01Be76/dV4vFPwv3lkcps=,tag:ytLoh7gJ+Iuqv5AwhDElrw==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.13.0
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
sops = {
|
|
||||||
defaultSopsFile = ./secrets.yaml;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -5,6 +5,5 @@
|
||||||
./forgejo.nix
|
./forgejo.nix
|
||||||
./redis.nix
|
./redis.nix
|
||||||
./nginx.nix
|
./nginx.nix
|
||||||
./sops.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
{ pkgs, ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
services.forgejo = {
|
services.forgejo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.forgejo;
|
|
||||||
database.type = "postgres";
|
database.type = "postgres";
|
||||||
lfs.enable = true;
|
mailerPasswordFile = "/secrets/forgejo-mailer-password.secret";
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
DEFAULT = {
|
DEFAULT = {
|
||||||
|
|
@ -18,7 +17,6 @@
|
||||||
ROOT_URL = "https://git.nekover.se/";
|
ROOT_URL = "https://git.nekover.se/";
|
||||||
# LOCAL_ROOT_URL is apparently what Forgejo uses to access itself.
|
# LOCAL_ROOT_URL is apparently what Forgejo uses to access itself.
|
||||||
# Doesn't need to be set.
|
# Doesn't need to be set.
|
||||||
OFFLINE_MODE = true;
|
|
||||||
};
|
};
|
||||||
admin = {
|
admin = {
|
||||||
DISABLE_REGULAR_ORG_CREATION = false;
|
DISABLE_REGULAR_ORG_CREATION = false;
|
||||||
|
|
@ -36,10 +34,11 @@
|
||||||
DEFAULT_USER_VISIBILITY = "limited";
|
DEFAULT_USER_VISIBILITY = "limited";
|
||||||
DEFAULT_KEEP_EMAIL_PRIVATE = true;
|
DEFAULT_KEEP_EMAIL_PRIVATE = true;
|
||||||
ENABLE_BASIC_AUTHENTICATION = false;
|
ENABLE_BASIC_AUTHENTICATION = false;
|
||||||
ENABLE_NOTIFY_MAIL = true;
|
};
|
||||||
|
repo = {
|
||||||
|
DEFAULT_REPO_UNITS = "repo.code,repo.issues,repo.pulls";
|
||||||
};
|
};
|
||||||
repository = {
|
repository = {
|
||||||
DEFAULT_REPO_UNITS = "repo.code";
|
|
||||||
ENABLE_PUSH_CREATE_USER = true;
|
ENABLE_PUSH_CREATE_USER = true;
|
||||||
ENABLE_PUSH_CREATE_ORG = true;
|
ENABLE_PUSH_CREATE_ORG = true;
|
||||||
};
|
};
|
||||||
|
|
@ -61,13 +60,5 @@
|
||||||
HOST = "redis+socket:///run/redis-forgejo/redis.sock";
|
HOST = "redis+socket:///run/redis-forgejo/redis.sock";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
secrets.mailer.PASSWD = "/run/secrets/forgejo-mailer-password";
|
|
||||||
};
|
|
||||||
|
|
||||||
sops.secrets."forgejo-mailer-password" = {
|
|
||||||
mode = "0440";
|
|
||||||
owner = "forgejo";
|
|
||||||
group = "forgejo";
|
|
||||||
restartUnits = [ "forgejo.service" ];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
set_real_ip_from 10.202.41.100; # IPv4 from web-public-2
|
set_real_ip_from 10.202.41.100;
|
||||||
set_real_ip_from 10.203.10.3; # IPv6 from valkyrie
|
|
||||||
real_ip_header proxy_protocol;
|
real_ip_header proxy_protocol;
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
||||||
13
config/hosts/forgejo/secrets.nix
Normal file
13
config/hosts/forgejo/secrets.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{ keyCommandEnv, ... }:
|
||||||
|
{
|
||||||
|
deployment.keys = {
|
||||||
|
"forgejo-mailer-password.secret" = {
|
||||||
|
keyCommand = keyCommandEnv ++ [ "pass" "mail/forgejo-nekover-se" ];
|
||||||
|
destDir = "/secrets";
|
||||||
|
user = "forgejo";
|
||||||
|
group = "forgejo";
|
||||||
|
permissions = "0640";
|
||||||
|
uploadAt = "pre-activation";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
forgejo-mailer-password: ENC[AES256_GCM,data:bFUrFyE/reeTtKZCrb1T1CG8Ng9QbDwZo9AdxU67i8uNmKcn93k3dqY70tSqBTAc9hpsXyW3UTKnPpk+ffb0mw==,iv:p16td5KV0rTmrrtX8FMojotEa+2oiFmVizkc6mt9QyI=,tag:czg/IlNLkx75m2iSddUkUw==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFNjVaNlFWeG9vMW4vM2R3
|
|
||||||
bWQyVk9jN1VkUUczbTBzUmdpZ2NyWlV4aVFjCmZwa0lDcXUzVDM4d1Mwa1B4Qm9q
|
|
||||||
WjVKMXJBRVNtc0JzcmE0Y20zdCtzM3cKLS0tIEJWanpwZHdPMGJiL0lkME9yVGQ1
|
|
||||||
a3ZvRGV3VENIbmlubG16MWF3SkdyQ00KZj5vuzVyCqbLH5gnQjhRpOfHtIB3RVZC
|
|
||||||
m+VdnnAFIfShrxwfOekVavffaHmG3PWS7RUKoeZNSdtz1ScuwfazPw==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
recipient: age1tf38ae8yzzzmtjp5cjyemf0a8cksq62dz0x0hsntyhsjk5pq6s6q3v9nm7
|
|
||||||
- enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYOEdadnQvSW1mcE9hSmFL
|
|
||||||
aFlqdHpTejNZRXJCbTh4WjQyQXVobitaa2hFCjV1RU9UOGlqaXhIckNLMmYwb0s2
|
|
||||||
eHY2VVpiQThzQUNuS1FLbFd3V2NGZk0KLS0tIGdOK3VEOUlNcldBQ1haRHhVS0cw
|
|
||||||
N3ZoNWlVK2trVkJLQlhnaHFueFdqVEkK800paYmP1opnW7o2V8f2zzWNR5tOVYGs
|
|
||||||
fl+SA7hE7uTpRrrGfuZq0jQgWOaeAbJ3+PzRuSrVlrXdWIyipcZM2Q==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
recipient: age1d5y8dx3e8pksvxr8fv8f02v0y7qg7kuwpxpmxksp7xlvrcpfju5sdz6guk
|
|
||||||
lastmodified: "2026-05-17T00:50:59Z"
|
|
||||||
mac: ENC[AES256_GCM,data:I3a9s9i6sFVTRQIAj94YZNyxQsDIWIvRhy9M/e6iMYpvoQyxFvMD3xAE0NQ1uX1QgMoi+6njTc8AmTXFJvSfoiqtVfHQH+HkLPMR27DZUY6kgZGMvUVswioSKfaF8fZxGEyWRPAuTDlynfOsGpr4Tqt5U8NBiYL1FDD6CPALaiY=,iv:RUbSPPTR6cTWwzvbnQRA/f9AjjjOpQUiEBrWvxqCpTQ=,tag:GcGsBgxWU/AXm06FkUI1LA==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.13.0
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
sops = {
|
|
||||||
defaultSopsFile = ./secrets.yaml;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
51
config/hosts/hydra/configuration.nix
Normal file
51
config/hosts/hydra/configuration.nix
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
boot = {
|
||||||
|
loader.grub = {
|
||||||
|
enable = true;
|
||||||
|
device = "/dev/vda";
|
||||||
|
};
|
||||||
|
|
||||||
|
binfmt.emulatedSystems = [
|
||||||
|
"armv6l-linux"
|
||||||
|
"armv7l-linux"
|
||||||
|
"aarch64-linux"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = "hydra";
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [ 8443 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.builder = {
|
||||||
|
isNormalUser = true;
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK/plZfxF/RtB+pJsUYx9HUgRcB56EoO0uj+j3AGzZta root@cherry"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKeIiHkHA5c6/jZx+BB28c5wchdzlFI7R1gbvNmPyoOg root@kiara"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
trusted-users = [ "builder" ];
|
||||||
|
allowed-uris = "http:// https://";
|
||||||
|
};
|
||||||
|
buildMachines = [
|
||||||
|
{
|
||||||
|
hostName = "localhost";
|
||||||
|
systems = [
|
||||||
|
"x86_64-linux"
|
||||||
|
"armv6l-linux"
|
||||||
|
"armv7l-linux"
|
||||||
|
"aarch64-linux"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "23.05";
|
||||||
|
}
|
||||||
9
config/hosts/hydra/default.nix
Normal file
9
config/hosts/hydra/default.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./configuration.nix
|
||||||
|
./hydra.nix
|
||||||
|
./nix-serve.nix
|
||||||
|
./nginx.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
14
config/hosts/hydra/hydra.nix
Normal file
14
config/hosts/hydra/hydra.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
services.hydra = {
|
||||||
|
enable = true;
|
||||||
|
hydraURL = "https://hydra.nekover.se";
|
||||||
|
listenHost = "localhost";
|
||||||
|
port = 3001;
|
||||||
|
useSubstitutes = true;
|
||||||
|
notificationSender = "hydra@robot.grzb.de";
|
||||||
|
extraConfig = "
|
||||||
|
binary_cache_public_uri = https://nix-cache.nekover.se
|
||||||
|
";
|
||||||
|
};
|
||||||
|
}
|
||||||
42
config/hosts/hydra/nginx.nix
Normal file
42
config/hosts/hydra/nginx.nix
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts = {
|
||||||
|
"hydra.nekover.se" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
listen = [{
|
||||||
|
addr = "0.0.0.0";
|
||||||
|
port = 80;
|
||||||
|
}];
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:3001";
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
listen 0.0.0.0:8443 http2 ssl proxy_protocol;
|
||||||
|
|
||||||
|
set_real_ip_from 10.202.41.100;
|
||||||
|
real_ip_header proxy_protocol;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"nix-cache.nekover.se" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
listen = [ {
|
||||||
|
addr = "0.0.0.0";
|
||||||
|
port = 80;
|
||||||
|
}];
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:5005";
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
listen 0.0.0.0:8443 http2 ssl proxy_protocol;
|
||||||
|
|
||||||
|
set_real_ip_from 10.202.41.100;
|
||||||
|
real_ip_header proxy_protocol;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
9
config/hosts/hydra/nix-serve.nix
Normal file
9
config/hosts/hydra/nix-serve.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
services.nix-serve = {
|
||||||
|
enable = true;
|
||||||
|
port = 5005;
|
||||||
|
bindAddress = "localhost";
|
||||||
|
secretKeyFile = "/secrets/signing-key.secret";
|
||||||
|
};
|
||||||
|
}
|
||||||
11
config/hosts/hydra/secrets.nix
Normal file
11
config/hosts/hydra/secrets.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{ keyCommandEnv, ... }:
|
||||||
|
{
|
||||||
|
deployment.keys."signing-key.secret" = {
|
||||||
|
keyCommand = keyCommandEnv ++ [ "pass" "hydra/signing-key" ];
|
||||||
|
destDir = "/secrets";
|
||||||
|
user = "root";
|
||||||
|
group = "root";
|
||||||
|
permissions = "0640";
|
||||||
|
uploadAt = "pre-activation";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,5 @@
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
./ikiwiki.nix
|
./ikiwiki.nix
|
||||||
./nginx.nix
|
./nginx.nix
|
||||||
./sops.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue