mirror of
https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git
synced 2026-05-20 21:41:12 +02:00
Compare commits
8 Commits
8db3034baf
...
userweb-se
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c6a812334 | ||
|
|
5e50b617fb | ||
|
|
258c5a7b25 | ||
|
|
b9eda3dc56 | ||
|
|
2fcaf5893f | ||
|
|
b009da31af | ||
|
|
e9a267e2a3 | ||
|
|
338c2f2531 |
@@ -6,7 +6,7 @@
|
|||||||
(fp /base)
|
(fp /base)
|
||||||
|
|
||||||
./services/nfs-mounts.nix
|
./services/nfs-mounts.nix
|
||||||
./services/userweb.nix
|
./services/userweb
|
||||||
];
|
];
|
||||||
|
|
||||||
systemd.network.networks."30-ens18" = values.defaultNetworkConfig // {
|
systemd.network.networks."30-ens18" = values.defaultNetworkConfig // {
|
||||||
|
|||||||
@@ -7,9 +7,26 @@ let
|
|||||||
# https://nixos.org/manual/nixpkgs/stable/#ssec-php-user-guide-installing-with-extensions
|
# https://nixos.org/manual/nixpkgs/stable/#ssec-php-user-guide-installing-with-extensions
|
||||||
phpEnv = pkgs.php.buildEnv {
|
phpEnv = pkgs.php.buildEnv {
|
||||||
extensions = { all, ... }: with all; [
|
extensions = { all, ... }: with all; [
|
||||||
|
bz2
|
||||||
|
curl
|
||||||
|
decimal
|
||||||
|
gd
|
||||||
imagick
|
imagick
|
||||||
opcache
|
mysqli
|
||||||
protobuf
|
mysqlnd
|
||||||
|
pgsql
|
||||||
|
posix
|
||||||
|
protobuf sqlite3
|
||||||
|
uuid
|
||||||
|
xml
|
||||||
|
xsl
|
||||||
|
zlib
|
||||||
|
zstd
|
||||||
|
|
||||||
|
pdo
|
||||||
|
pdo_mysql
|
||||||
|
pdo_pgsql
|
||||||
|
pdo_sqlite
|
||||||
];
|
];
|
||||||
|
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
@@ -25,38 +42,15 @@ let
|
|||||||
pkgs.irssi
|
pkgs.irssi
|
||||||
pkgs.nix.libs.nix-perl-bindings
|
pkgs.nix.libs.nix-perl-bindings
|
||||||
|
|
||||||
AlgorithmDiff
|
|
||||||
AnyEvent
|
|
||||||
AnyEventI3
|
|
||||||
ArchiveZip
|
|
||||||
CGI
|
CGI
|
||||||
CPAN
|
|
||||||
CPANPLUS
|
|
||||||
DBDPg
|
DBDPg
|
||||||
DBDSQLite
|
DBDSQLite
|
||||||
|
DBDmysql
|
||||||
DBI
|
DBI
|
||||||
EmailAddress
|
|
||||||
EmailSimple
|
|
||||||
Env
|
|
||||||
Git
|
Git
|
||||||
HTMLMason
|
|
||||||
HTMLParser
|
|
||||||
HTMLTagset
|
|
||||||
HTTPDAV
|
|
||||||
HTTPDaemon
|
|
||||||
ImageMagick
|
ImageMagick
|
||||||
JSON
|
JSON
|
||||||
LWP
|
TemplateToolkit
|
||||||
MozillaCA
|
|
||||||
PathTiny
|
|
||||||
Switch
|
|
||||||
SysSyslog
|
|
||||||
TestPostgreSQL
|
|
||||||
TextPDF
|
|
||||||
TieFile
|
|
||||||
Tk
|
|
||||||
URI
|
|
||||||
XMLLibXML
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
# https://nixos.org/manual/nixpkgs/stable/#python.buildenv-function
|
# https://nixos.org/manual/nixpkgs/stable/#python.buildenv-function
|
||||||
@@ -70,102 +64,88 @@ let
|
|||||||
ignoreCollisions = true;
|
ignoreCollisions = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sendmailWrapper = pkgs.writeShellApplication {
|
||||||
|
name = "sendmail";
|
||||||
|
runtimeInputs = [ ];
|
||||||
|
text = ''
|
||||||
|
args=("$@")
|
||||||
|
|
||||||
|
if [[ "''${PWD:-}" =~ ^/home/pvv/[^/]+/([^/]+) ]] && [[ "''${BASH_REMATCH[1]}" != "pvv" ]]; then
|
||||||
|
# Prepend -fusername to the argument list, so bounces go to the user
|
||||||
|
args=("-f''${BASH_REMATCH[1]}" "''${args[@]}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec '${lib.getExe pkgs.system-sendmail}' "''${args[@]}"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
# https://nixos.org/manual/nixpkgs/stable/#sec-building-environment
|
# https://nixos.org/manual/nixpkgs/stable/#sec-building-environment
|
||||||
fhsEnv = pkgs.buildEnv {
|
fhsEnv = pkgs.buildEnv {
|
||||||
name = "userweb-env";
|
name = "userweb-env";
|
||||||
|
ignoreCollisions = true;
|
||||||
paths = with pkgs; [
|
paths = with pkgs; [
|
||||||
bash
|
bash
|
||||||
|
|
||||||
|
sendmailWrapper
|
||||||
|
|
||||||
perlEnv
|
perlEnv
|
||||||
pythonEnv
|
pythonEnv
|
||||||
|
|
||||||
phpEnv
|
phpEnv
|
||||||
]
|
]
|
||||||
++ (with phpEnv.packages; [
|
++ (with phpEnv.packages; [
|
||||||
# composer
|
# composer
|
||||||
])
|
])
|
||||||
++ [
|
++ [
|
||||||
|
# Useful packages for homepages
|
||||||
|
exiftool
|
||||||
|
gnuplot
|
||||||
|
ikiwiki-full
|
||||||
|
imagemagick
|
||||||
|
jhead
|
||||||
|
ruby
|
||||||
|
sbcl
|
||||||
|
sourceHighlight
|
||||||
|
|
||||||
|
# Missing packages from tom
|
||||||
|
# blosxom
|
||||||
|
# pyblosxom
|
||||||
|
# mediawiki (TODO: do people host their own mediawikis in userweb?)
|
||||||
|
# nanoblogger
|
||||||
|
|
||||||
|
# Version control
|
||||||
|
cvs
|
||||||
|
rcs
|
||||||
|
git
|
||||||
|
|
||||||
|
# Compression/Archival
|
||||||
|
bzip2
|
||||||
|
gnutar
|
||||||
|
gzip
|
||||||
|
lz4
|
||||||
|
unzip
|
||||||
|
xz
|
||||||
|
zip
|
||||||
|
zstd
|
||||||
|
|
||||||
|
# Other tools you might expect to find on a normal system
|
||||||
acl
|
acl
|
||||||
aspell
|
|
||||||
autoconf
|
|
||||||
autotrash
|
|
||||||
bazel
|
|
||||||
bintools
|
|
||||||
bison
|
|
||||||
bsd-finger
|
|
||||||
catdoc
|
|
||||||
ccache
|
|
||||||
clang
|
|
||||||
cmake
|
|
||||||
coreutils-full
|
coreutils-full
|
||||||
curl
|
curl
|
||||||
devcontainer
|
|
||||||
diffutils
|
diffutils
|
||||||
emacs
|
|
||||||
# exiftags
|
|
||||||
exiftool
|
|
||||||
ffmpeg
|
|
||||||
file
|
file
|
||||||
findutils
|
findutils
|
||||||
gawk
|
gawk
|
||||||
gcc
|
|
||||||
glibc
|
|
||||||
gnugrep
|
gnugrep
|
||||||
gnumake
|
gnumake
|
||||||
gnupg
|
gnupg
|
||||||
gnuplot
|
|
||||||
gnused
|
gnused
|
||||||
gnutar
|
|
||||||
gzip
|
|
||||||
html-tidy
|
|
||||||
imagemagick
|
|
||||||
inetutils
|
|
||||||
iproute2
|
|
||||||
jhead
|
|
||||||
less
|
less
|
||||||
libgcc
|
man
|
||||||
lndir
|
|
||||||
mailutils
|
|
||||||
man # TODO: does this one want a mandb instance?
|
|
||||||
meson
|
|
||||||
more
|
|
||||||
mpc
|
|
||||||
mpi
|
|
||||||
mplayer
|
|
||||||
ninja
|
|
||||||
nix
|
|
||||||
openssh
|
|
||||||
openssl
|
|
||||||
patchelf
|
|
||||||
pkg-config
|
|
||||||
ppp
|
|
||||||
procmail
|
|
||||||
procps
|
|
||||||
qemu
|
|
||||||
rc
|
|
||||||
rhash
|
|
||||||
rsync
|
|
||||||
ruby # TODO: does this one want systemwide packages?
|
|
||||||
salt
|
|
||||||
sccache
|
|
||||||
sourceHighlight
|
|
||||||
spamassassin
|
|
||||||
strace
|
|
||||||
subversion
|
|
||||||
system-sendmail
|
|
||||||
systemdMinimal
|
|
||||||
texliveMedium
|
|
||||||
tmux
|
|
||||||
unzip
|
|
||||||
util-linux
|
util-linux
|
||||||
valgrind
|
|
||||||
vim
|
vim
|
||||||
wget
|
wget
|
||||||
which
|
which
|
||||||
wine
|
|
||||||
xdg-utils
|
xdg-utils
|
||||||
zip
|
|
||||||
zstd
|
|
||||||
];
|
];
|
||||||
|
|
||||||
extraOutputsToInstall = [
|
extraOutputsToInstall = [
|
||||||
@@ -175,6 +155,10 @@ let
|
|||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
imports = [
|
||||||
|
./mail.nix
|
||||||
|
];
|
||||||
|
|
||||||
services.httpd = {
|
services.httpd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
adminAddr = "drift@pvv.ntnu.no";
|
adminAddr = "drift@pvv.ntnu.no";
|
||||||
@@ -231,6 +215,25 @@ in
|
|||||||
AllowOverride All
|
AllowOverride All
|
||||||
Require all granted
|
Require all granted
|
||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
|
<DirectoryMatch "^/home/pvv/.*/web-docs/(${lib.concatStringsSep "|" [
|
||||||
|
"\\.git"
|
||||||
|
"\\.hg"
|
||||||
|
"\\.svn"
|
||||||
|
"\\.ssh"
|
||||||
|
"\\.env"
|
||||||
|
"\\.envrc"
|
||||||
|
"\\.bzr"
|
||||||
|
"\\.venv"
|
||||||
|
"CVS"
|
||||||
|
"RCS"
|
||||||
|
".*\\.swp"
|
||||||
|
".*\\.bak"
|
||||||
|
".*~"
|
||||||
|
]})(/|$)">
|
||||||
|
AllowOverride All
|
||||||
|
Require all denied
|
||||||
|
</DirectoryMatch>
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
34
hosts/temmie/services/userweb/mail.nix
Normal file
34
hosts/temmie/services/userweb/mail.nix
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
services.postfix.enable = lib.mkForce false;
|
||||||
|
|
||||||
|
services.nullmailer = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
me = config.networking.fqdn;
|
||||||
|
remotes = "mail.pvv.ntnu.no smtp --port=25";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.sockets.userweb-sendmail-sandbox-proxy = {
|
||||||
|
wantedBy = [ "sockets.target" ];
|
||||||
|
listenStreams = [ "/run/userweb-sendmail-sandbox-proxy.sock" ];
|
||||||
|
socketConfig = {
|
||||||
|
# Accept = true;
|
||||||
|
SocketUser = "httpd";
|
||||||
|
SocketGroup = "httpd"; # TODO: is wwwrun(54) in this group?
|
||||||
|
SocketMode = "0660";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.userweb-sendmail-sandbox-proxy = {
|
||||||
|
serviceConfig = {
|
||||||
|
User = "root";
|
||||||
|
Group = "root";
|
||||||
|
Sockets = [
|
||||||
|
"userweb-sendmail-sandbox-proxy.socket"
|
||||||
|
];
|
||||||
|
ExecStart = "${lib.getExe pkgs.hello}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -83,7 +83,7 @@ def get_newest_commit(project_name: str, tracking_branch: str) -> str:
|
|||||||
content = requests.get(f"{BASE_WEB_URL}/{project_name}/+log/refs/heads/{tracking_branch}/").text
|
content = requests.get(f"{BASE_WEB_URL}/{project_name}/+log/refs/heads/{tracking_branch}/").text
|
||||||
soup = bs4.BeautifulSoup(content, features="html.parser")
|
soup = bs4.BeautifulSoup(content, features="html.parser")
|
||||||
try:
|
try:
|
||||||
a = soup.find('li').findChild('a')
|
a = soup.find('li').find('a')
|
||||||
commit_sha = a['href'].split('/')[-1]
|
commit_sha = a['href'].split('/')[-1]
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
print(f"ERROR: Could not parse page for {project_name}:")
|
print(f"ERROR: Could not parse page for {project_name}:")
|
||||||
|
|||||||
Reference in New Issue
Block a user