aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-02-04 19:44:46 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-02-04 19:44:46 +0100
commite18e720bb41cbc43645a9e77b1262dd3d08b4e71 (patch)
treeb67cc4761c733d6cb63f748de6acc6b86f1b4b06
parentdocs(README.md): Init (diff)
downloadnixos-server-e18e720bb41cbc43645a9e77b1262dd3d08b4e71.zip
modules/nix-sync: Actually enable
This includes the obvious changes, ensuring that it follows our current best-practices.
Diffstat (limited to '')
-rw-r--r--hosts/by-name/server2/configuration.nix4
-rw-r--r--hosts/by-name/server2/websites.nix (renamed from modules/by-name/ni/nix-sync/hosts.nix)14
-rw-r--r--modules/by-name/co/constants/module.nix2
-rw-r--r--modules/by-name/ni/nix-sync/module.nix60
4 files changed, 60 insertions, 20 deletions
diff --git a/hosts/by-name/server2/configuration.nix b/hosts/by-name/server2/configuration.nix
index 95f0ade..6909bdd 100644
--- a/hosts/by-name/server2/configuration.nix
+++ b/hosts/by-name/server2/configuration.nix
@@ -55,6 +55,10 @@
"source.foss-syndicate.org" = "https://git.foss-syndicate.org/vhack.eu/nixos-server";
};
};
+ nix-sync = {
+ enable = true;
+ domains = import ./websites.nix {};
+ };
nixconfig.enable = true;
openssh.enable = true;
persist = {
diff --git a/modules/by-name/ni/nix-sync/hosts.nix b/hosts/by-name/server2/websites.nix
index 98dbbf1..57c4a6d 100644
--- a/modules/by-name/ni/nix-sync/hosts.nix
+++ b/hosts/by-name/server2/websites.nix
@@ -11,38 +11,38 @@
in [
{
domain = "vhack.eu";
- url = "https://codeberg.org/vhack.eu/website.git";
+ repositoryUrl = "https://codeberg.org/vhack.eu/website.git";
}
{
domain = "b-peetz.de";
- url = "https://codeberg.org/bpeetz/b-peetz.de.git";
+ repositoryUrl = "https://codeberg.org/bpeetz/b-peetz.de.git";
}
# Trinitrix
{
domain = "trinitrix.vhack.eu";
- url = "https://codeberg.org/trinitrix/website.git";
+ repositoryUrl = "https://codeberg.org/trinitrix/website.git";
}
# WKD
{
domain = "openpgpkey.b-peetz.de";
- url = "https://codeberg.org/vhack.eu/gpg_wkd.git";
+ repositoryUrl = "https://codeberg.org/vhack.eu/gpg_wkd.git";
extraSettings = extraWkdSettings;
}
{
domain = "openpgpkey.s-schoeffel.de";
- url = "https://codeberg.org/vhack.eu/gpg_wkd.git";
+ repositoryUrl = "https://codeberg.org/vhack.eu/gpg_wkd.git";
extraSettings = extraWkdSettings;
}
{
domain = "openpgpkey.sils.li";
- url = "https://codeberg.org/vhack.eu/gpg_wkd.git";
+ repositoryUrl = "https://codeberg.org/vhack.eu/gpg_wkd.git";
extraSettings = extraWkdSettings;
}
{
domain = "openpgpkey.vhack.eu";
- url = "https://codeberg.org/vhack.eu/gpg_wkd.git";
+ repositoryUrl = "https://codeberg.org/vhack.eu/gpg_wkd.git";
extraSettings = extraWkdSettings;
}
]
diff --git a/modules/by-name/co/constants/module.nix b/modules/by-name/co/constants/module.nix
index b344fcd..fed14d3 100644
--- a/modules/by-name/co/constants/module.nix
+++ b/modules/by-name/co/constants/module.nix
@@ -25,6 +25,7 @@
nscd = 330;
sshd = 331;
systemd-oom = 332;
+ nix-sync = 334;
redis-peertube = 990;
peertube = 992; # TODO Sort correctly
mastodon = 996;
@@ -47,6 +48,7 @@
sshd = 331;
systemd-oom = 332;
resolvconf = 333; # This group is not matched to an user?
+ nix-sync = 334;
systemd-coredump = 151; # matches systemd-coredump user
redis-peertube = 990;
peertube = 992;
diff --git a/modules/by-name/ni/nix-sync/module.nix b/modules/by-name/ni/nix-sync/module.nix
index de096b9..1413920 100644
--- a/modules/by-name/ni/nix-sync/module.nix
+++ b/modules/by-name/ni/nix-sync/module.nix
@@ -1,43 +1,40 @@
{
config,
lib,
+ modulesPath,
...
}: let
cfg = config.vhack.nix-sync;
mkNixSyncRepository = {
domain,
- root ? "",
- url,
- extraSettings ? {},
+ repositoryUrl,
+ extraSettings,
}: {
name = "${domain}";
value = {
- path = "/etc/nginx/websites/${domain}/${root}";
- uri = "${url}";
+ path = "/etc/nginx/websites/${domain}";
+ uri = "${repositoryUrl}";
inherit extraSettings;
};
};
- nixSyncRepositories = builtins.listToAttrs (builtins.map mkNixSyncRepository domains);
+ nixSyncRepositories = builtins.listToAttrs (builtins.map mkNixSyncRepository cfg.domains);
mkVirtHost = {
domain,
- root ? "",
- url,
- extraSettings ? {},
+ repositoryUrl,
+ extraSettings,
}: {
name = "${domain}";
value =
lib.recursiveUpdate {
forceSSL = true;
enableACME = true;
- root = "/etc/nginx/websites/${domain}/${root}";
+ root = "/etc/nginx/websites/${domain}";
}
extraSettings;
};
- virtHosts = builtins.listToAttrs (builtins.map mkVirtHost domains);
-
- domains = import ./hosts.nix {};
+ virtHosts = builtins.listToAttrs (builtins.map mkVirtHost cfg.domains);
in {
imports = [
./internal_module.nix
@@ -47,6 +44,38 @@ in {
enable = lib.mkEnableOption ''
a website git ops solution.
'';
+
+ domains = lib.mkOption {
+ type = lib.types.listOf (lib.types.submodule {
+ options = {
+ domain = lib.mkOption {
+ type = lib.types.str;
+ example = "b-peetz.de";
+ description = ''
+ The fully qualified domain to use as base of this website.
+ '';
+ };
+ repositoryUrl = lib.mkOption {
+ type = lib.types.str;
+ example = "b-peetz.de";
+ description = ''
+ The url used for the source git repository, which is deployed at this domain.
+ '';
+ };
+ extraSettings = lib.mkOption {
+ type =
+ lib.types.submodule (import (modulesPath + "/services/web-servers/nginx/vhost-options.nix") {inherit config lib;});
+ example = {
+ locations."/.well-known/openpgpkey/hu/".extraConfig = "default_type application/octet-stream";
+ };
+ default = {};
+ description = ''
+ Extra configuration to add to the nginx virtual host.
+ '';
+ };
+ };
+ });
+ };
};
config = lib.mkIf cfg.enable {
@@ -66,5 +95,10 @@ in {
vhack.nginx.enable = true;
services.nginx.virtualHosts = virtHosts;
+
+ users = {
+ users.nix-sync.uid = config.vhack.constants.ids.uids.nix-sync;
+ groups.nix-sync.gid = config.vhack.constants.ids.gids.nix-sync;
+ };
};
}