This commit is contained in:
Robin Appelman 2025-08-06 21:29:39 +02:00
commit b241199af9
7 changed files with 84 additions and 77 deletions

View file

@ -1,17 +1,17 @@
{ config
, lib
, pkgs
, ...
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.services.dispenser;
format = pkgs.formats.toml { };
format = pkgs.formats.toml {};
configFile = format.generate "dispenser.toml" (filterAttrs (n: v: v != null) {
inherit (cfg) server vultr dyndns schedule;
digital_ocean = cfg.digitalocean;
});
in
{
in {
options.services.dispenser = {
enable = mkEnableOption "Enables the dispenser service";
@ -168,7 +168,7 @@ in
config = mkIf cfg.enable {
systemd.services.dispenser = {
wantedBy = [ "multi-user.target" ];
wantedBy = ["multi-user.target"];
serviceConfig = {
ExecStart = "${cfg.package}/bin/dispenser ${configFile}";
@ -193,7 +193,7 @@ in
RestrictAddressFamilies = "AF_INET AF_INET6";
RestrictRealtime = true;
ProtectProc = "noaccess";
SystemCallFilter = [ "@system-service" "~@resources" "~@privileged" ];
SystemCallFilter = ["@system-service" "~@resources" "~@privileged"];
IPAddressDeny = "localhost link-local multicast";
};
};
@ -201,7 +201,7 @@ in
environment.systemPackages = [
(pkgs.writeShellApplication {
name = "dispenser-cli";
runtimeInputs = [ cfg.package ];
runtimeInputs = [cfg.package];
text = ''
${cfg.package}/bin/dispenser ${configFile} "$@"

View file

@ -1,3 +1,3 @@
final: prev: {
dispenser = final.callPackage ./package.nix { };
dispenser = final.callPackage ./package.nix {};
}

View file

@ -1,34 +1,33 @@
{ stdenv
, rustPlatform
, libsodium
, pkg-config
, lib
, rust-bin
,
}:
let
{
stdenv,
rustPlatform,
libsodium,
pkg-config,
lib,
rust-bin,
}: let
inherit (lib.sources) sourceByRegex;
inherit (builtins) fromTOML readFile;
src = sourceByRegex ../. [ "Cargo.*" "(src)(/.*)?" ];
src = sourceByRegex ../. ["Cargo.*" "(src)(/.*)?"];
cargoPackage = (fromTOML (readFile ../Cargo.toml)).package;
in
rustPlatform.buildRustPackage rec {
pname = cargoPackage.name;
inherit (cargoPackage) version;
rustPlatform.buildRustPackage rec {
pname = cargoPackage.name;
inherit (cargoPackage) version;
inherit src;
inherit src;
buildInputs = [
libsodium
];
buildInputs = [
libsodium
];
nativeBuildInputs = [
pkg-config
];
nativeBuildInputs = [
pkg-config
];
doCheck = false;
doCheck = false;
cargoLock = {
lockFile = ../Cargo.lock;
};
}
cargoLock = {
lockFile = ../Cargo.lock;
};
}