Files
nix/packages/docker/shlink-web-client/default.nix
Nikolaos Karaolidis 09fbf7150c Use overlay
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-08-17 21:24:31 +03:00

84 lines
1.6 KiB
Nix

{ pkgs, ... }:
let
shlink-web-client = pkgs.runCommandLocal "shlink-web-client" { } ''
mkdir -p $out/var/www
cp -r ${pkgs.shlink-web-client} $out/var/www/shlink-web-client
'';
nginxConfig = pkgs.writeTextDir "/etc/nginx/nginx.conf" ''
user root;
daemon off;
pid /var/run/nginx.pid;
events { }
http {
include ${pkgs.nginx}/conf/mime.types;
default_type application/octet-stream;
charset utf-8;
access_log off;
error_log /dev/stderr;
server {
listen 8080 default_server;
root /var/www/shlink-web-client;
index index.html;
location = / {
return 301 /web/;
}
location = /web {
return 301 /web/;
}
location /web/ {
alias /var/www/shlink-web-client/;
try_files $uri $uri/ /index.html;
}
}
}
'';
entrypoint = pkgs.writeTextFile {
name = "entrypoint";
executable = true;
destination = "/bin/entrypoint";
text = builtins.readFile ./entrypoint.sh;
};
in
pkgs.dockerTools.buildImage {
name = "shlink-web-client";
fromImage = import ../base { inherit pkgs; };
copyToRoot = pkgs.buildEnv {
name = "root";
paths = with pkgs; [
entrypoint
shlink-web-client
nginxConfig
nginx
];
pathsToLink = [
"/bin"
"/var"
"/etc"
];
};
runAsRoot = ''
mkdir -p /var/run /var/log/nginx
'';
config = {
Entrypoint = [ "entrypoint" ];
WorkingDir = "/var/www/shlink-web-client";
ExposedPorts = {
"8080/tcp" = { };
};
};
}