From 015e2eca70d8b24620f76df0013167b6c1a1c40c Mon Sep 17 00:00:00 2001 From: confus Date: Mon, 2 Mar 2026 20:42:51 +0100 Subject: [PATCH] nixos/devpi-server: add extraPackages option --- nixos/modules/services/misc/devpi-server.nix | 37 +++++++++++++++----- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/nixos/modules/services/misc/devpi-server.nix b/nixos/modules/services/misc/devpi-server.nix index 6d132a38bb71..c56c11ed2884 100644 --- a/nixos/modules/services/misc/devpi-server.nix +++ b/nixos/modules/services/misc/devpi-server.nix @@ -1,21 +1,25 @@ { - pkgs, - lib, config, + lib, + pkgs, ... }: + let + cfg = config.services.devpi-server; - + package = cfg.package.override { inherit (cfg) extraPackages; }; secretsFileName = "devpi-secret-file"; - stateDirName = "devpi"; - runtimeDir = "/run/${stateDirName}"; serverDir = "/var/lib/${stateDirName}"; + in + { + options.services.devpi-server = { + enable = lib.mkEnableOption "Devpi Server"; package = lib.mkPackageOption pkgs "devpi-server" { }; @@ -57,6 +61,20 @@ in description = "The port on which Devpi Server will listen."; }; + extraPackages = lib.mkOption { + default = (ps: [ ]); + defaultText = lib.literalExpression "ps: [ ]"; + example = lib.literalExpression '' + ps: with ps; [ devpi-web devpi-ldap ] + ''; + type = + with lib.types; + coercedTo (listOf lib.types.package) (v: (_: v)) (functionTo (listOf lib.types.package)); + description = '' + Plugins and extra Python packages to be available to devpi-server. + ''; + }; + openFirewall = lib.mkEnableOption "opening the default ports in the firewall for Devpi Server"; }; @@ -80,7 +98,7 @@ in # already initialized the package index, exit gracefully exit 0 fi - ${cfg.package}/bin/devpi-init --serverdir ${serverDir} '' + ${package}/bin/devpi-init --serverdir ${serverDir} '' + lib.optionalString cfg.replica "--role=replica --master-url=${cfg.primaryUrl}"; serviceConfig = { @@ -109,7 +127,7 @@ in [ "--role=master" ] ); in - "${cfg.package}/bin/devpi-server ${lib.concatStringsSep " " args}"; + "${package}/bin/devpi-server ${lib.concatStringsSep " " args}"; DynamicUser = true; StateDirectory = stateDirName; RuntimeDirectory = stateDirName; @@ -125,5 +143,8 @@ in }; }; - meta.maintainers = [ lib.maintainers.cafkafk ]; + meta.maintainers = with lib.maintainers; [ + cafkafk + confus + ]; }