add netcup-dns, start Jinja-Compose, refactor

This commit is contained in:
Daniel Langbein 2023-10-02 13:11:30 +02:00
parent 971f5ab0b6
commit e5ca975988
Signed by: langfingaz
GPG Key ID: 6C47C753F0823002
4 changed files with 100 additions and 10 deletions

View File

@ -22,8 +22,7 @@ in
../../modules/home-manager.nix ../../modules/home-manager.nix
# NUR. # NUR.
../../modules/nur.nix ../../modules/nur.nix
# Device specific. ./host-specific.nix
#../../modules/yodaNas.nix
../../modules/base.nix ../../modules/base.nix
../../modules/base-headless.nix ../../modules/base-headless.nix
@ -66,10 +65,4 @@ in
boot.kernelParams = []; boot.kernelParams = [];
boot.kernelPackages = pkgs.linuxPackages; boot.kernelPackages = pkgs.linuxPackages;
# TODO: For "/" this cfg resides in base.nix
fileSystems = {
"/mnt/data".options = [ "compress=zstd" "noatime" "commit=120" ];
"/mnt/backup".options = [ "compress=zstd" "noatime" "commit=120" ];
};
} }

View File

@ -0,0 +1,98 @@
{ config, pkgs, ... }:
let
my-python-packages = ps: with ps; [
# netcup-dns is not (yet) packaged, thus we build it from PyPI
(
buildPythonPackage rec {
pname = "netcup-dns";
version = "0.2.0";
# https://nixos.wiki/wiki/Packaging/Python#Fix_Missing_setup.py
format = "pyproject";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-tZKPe02tHrTelyw30BQsJhdZpmDsggZ0rr4ag0eHtng=";
};
propagatedBuildInputs = [
# Dependencies
pkgs.python3Packages.requests
pkgs.python3Packages.nc-dnsapi
# Build dependencies
build
twine
];
}
)
];
in
{
# TODO: For "/" this cfg resides in base.nix
fileSystems = {
"/mnt/data".options = [ "compress=zstd" "noatime" "commit=120" ];
"/mnt/backup".options = [ "compress=zstd" "noatime" "commit=120" ];
};
# Install netcup-dns.
environment.systemPackages = [
(pkgs.python3.withPackages my-python-packages)
];
# Configure netcup-dns.
# Create file `/etc/netcup-dns/netcup-dns-95191.json`.
deployment.keys."netcup-dns-95191.json" = {
keyFile = ../../secrets/netcup-dns.json;
destDir = "/etc/netcup-dns";
user = "netcup-dns";
group = "netcup-dns";
};
# Create netcup-dns daemon user.
users.users.netcup-dns = {
isSystemUser = true;
group = "netcup-dns";
description = "netcup-dns daemon";
};
users.groups.netcup-dns = {};
# Create netcup-dns timer.
systemd.timers."netcup-dns" = {
wantedBy = [ "timers.target" ];
partOf = [ "netcup-dns.service" ];
# https://man.archlinux.org/man/systemd.timer.5
timerConfig = {
OnCalendar = "3m";
AccuracySec = "15s";
RandomizedDelaySec = "15s";
Persistent = true;
};
};
systemd.services."netcup-dns" = {
serviceConfig = {
Type = "oneshot";
PrivateTmp = true;
User = "netcup-dns";
Nice = 19;
IOSchedulingClass = "idle";
#ExecStart = "/run/current-system/sw/bin/netcup-dns";
#ExecStart = "${my-python-packages}/bin/netcup-dns";
ExecStart = "${pkgs.python3.withPackages my-python-packages}/bin/netcup-dns";
};
# path = with pkgs; [
# my-python-packages
# ];
};
# Start Jinja-Compose project during boot.
# To few the log, run
# journalctl -b -u Jinja-Compose -f
#
systemd.services."Jinja-Compose" = {
description = "Start Jinja-Compose project";
path = with pkgs; [
# The `docker-compose` helper script is written in `bash` (!)
bash
docker
];
script = ''
/mnt/data/docker-compose/docker-compose up -d --wait
'';
# Start after login.
wantedBy = [ "multi-user.target" ];
};
}

View File

@ -22,8 +22,7 @@ in
../../modules/home-manager.nix ../../modules/home-manager.nix
# NUR. # NUR.
../../modules/nur.nix ../../modules/nur.nix
# Device specific. ./host-specific.nix
../../modules/yodaYoga.nix
../../modules/base.nix ../../modules/base.nix
../../modules/base-headless.nix ../../modules/base-headless.nix