mirror of
https://github.com/Gerg-L/nixos.git
synced 2025-12-10 08:53:56 -05:00
155 lines
4.1 KiB
Nix
155 lines
4.1 KiB
Nix
_: {...}: {
|
|
sops.secrets = {
|
|
"website/sql_gitea" = {
|
|
mode = "0444";
|
|
};
|
|
"website/sql_nextcloud" = {
|
|
mode = "0444";
|
|
};
|
|
"website/nextcloud" = {
|
|
mode = "0444";
|
|
};
|
|
|
|
"website/ssl_key" = {
|
|
mode = "0444";
|
|
};
|
|
|
|
"website/ssl_cert" = {
|
|
mode = "0444";
|
|
};
|
|
};
|
|
containers."website" = {
|
|
ephemeral = true;
|
|
autoStart = true;
|
|
privateNetwork = true;
|
|
hostBridge = "bridge0";
|
|
localAddress = "192.168.1.11/24";
|
|
bindMounts = {
|
|
"/var" = {
|
|
hostPath = "/persist/website/var";
|
|
isReadOnly = false;
|
|
};
|
|
"/etc/ssh" = {
|
|
hostPath = "/persist/website/etc/ssh/";
|
|
isReadOnly = false;
|
|
};
|
|
"/secrets".hostPath = "/run/secrets/website";
|
|
};
|
|
config = {
|
|
pkgs,
|
|
config,
|
|
...
|
|
}: let
|
|
giteaPort = 3000;
|
|
in {
|
|
nixpkgs.config.allowUnfree = true;
|
|
environment.systemPackages = [pkgs.neovim];
|
|
networking = {
|
|
defaultGateway = "192.168.1.1";
|
|
nameservers = ["1.1.1.1" "1.0.0.1"];
|
|
firewall = {
|
|
allowedTCPPorts = [giteaPort 80 443 22];
|
|
};
|
|
};
|
|
systemd.services.setmacaddr = {
|
|
script = ''
|
|
/run/current-system/sw/bin/ip link set dev eth0 address 00:00:00:00:00:11
|
|
'';
|
|
wantedBy = ["basic.target"];
|
|
after = ["dhcpcd.service"];
|
|
};
|
|
system.stateVersion = "unstable";
|
|
services = {
|
|
gitea = {
|
|
enable = true;
|
|
appName = "Powered by NixOS";
|
|
domain = "git.gerg-l.com";
|
|
rootUrl = "https://git.gerg-l.com/";
|
|
httpPort = giteaPort;
|
|
settings = {
|
|
server = {
|
|
LANDING_PAGE = "/explore/repos";
|
|
};
|
|
ui = {
|
|
DEFAULT_THEME = "arc-green";
|
|
};
|
|
service = {
|
|
DISABLE_REGISTRATION = true;
|
|
};
|
|
};
|
|
database = {
|
|
type = "postgres";
|
|
passwordFile = "/secrets/sql_gitea";
|
|
};
|
|
};
|
|
nextcloud = {
|
|
enable = true;
|
|
package = pkgs.nextcloud26;
|
|
hostName = "next.gerg-l.com";
|
|
autoUpdateApps.enable = true;
|
|
enableBrokenCiphersForSSE = false;
|
|
config = {
|
|
dbtype = "pgsql";
|
|
dbhost = "/run/postgresql";
|
|
dbpassFile = "/secrets/sql_nextcloud";
|
|
adminpassFile = "/secrets/nextcloud";
|
|
adminuser = "admin-root";
|
|
defaultPhoneRegion = "IL";
|
|
};
|
|
};
|
|
postgresql = {
|
|
enable = true;
|
|
package = pkgs.postgresql_13;
|
|
ensureDatabases = [config.services.nextcloud.config.dbname];
|
|
ensureUsers = [
|
|
{
|
|
name = config.services.nextcloud.config.dbuser;
|
|
ensurePermissions."DATABASE ${config.services.nextcloud.config.dbname}" = "ALL PRIVILEGES";
|
|
}
|
|
];
|
|
authentication = ''
|
|
local gitea all ident map=gitea-users
|
|
'';
|
|
identMap = ''
|
|
gitea-users gitea gitea
|
|
'';
|
|
};
|
|
nginx = {
|
|
enable = true;
|
|
recommendedGzipSettings = true;
|
|
recommendedOptimisation = true;
|
|
recommendedProxySettings = true;
|
|
recommendedTlsSettings = true;
|
|
virtualHosts = let
|
|
template = {
|
|
forceSSL = true;
|
|
sslCertificate = "/secrets/ssl_cert";
|
|
sslCertificateKey = "/secrets/ssl_key";
|
|
};
|
|
in {
|
|
"git.gerg-l.com" =
|
|
template
|
|
// {
|
|
locations."/" = {
|
|
proxyPass = "http://localhost:${toString giteaPort}";
|
|
};
|
|
};
|
|
"next.gerg-l.com" = template;
|
|
};
|
|
};
|
|
openssh = {
|
|
enable = true;
|
|
settings = {
|
|
PermitRootLogin = "no";
|
|
PasswordAuthentication = false;
|
|
KbdInteractiveAuthentication = false;
|
|
};
|
|
};
|
|
};
|
|
systemd.services."nextcloud-setup" = {
|
|
requires = ["postgresql.service"];
|
|
after = ["postgresql.service"];
|
|
};
|
|
};
|
|
};
|
|
}
|