From 583dd62731c301eda567e81b14c536947be9cfa9 Mon Sep 17 00:00:00 2001 From: Kabbone Date: Tue, 9 Sep 2025 22:45:23 +0200 Subject: [PATCH] corosync-qnetd package and service module working --- modules/kabbone/corosync-qdevice.nix | 65 +++++++++++++++++++++++ packages/corosync-qdevice.nix | 79 ++++++++++++++++------------ packages/default.nix | 4 ++ 3 files changed, 113 insertions(+), 35 deletions(-) create mode 100644 modules/kabbone/corosync-qdevice.nix create mode 100644 packages/default.nix diff --git a/modules/kabbone/corosync-qdevice.nix b/modules/kabbone/corosync-qdevice.nix new file mode 100644 index 0000000..fbe3652 --- /dev/null +++ b/modules/kabbone/corosync-qdevice.nix @@ -0,0 +1,65 @@ +{ + lib, + config, + pkgs, + pkgs-kabbone, + ... +}: +let + cfg = config.services.corosync-qnetd; +in +{ + # interface + options.services.corosync-qnetd = { + enable = lib.mkEnableOption "corosync-qnetd"; + package = lib.mkPackageOption pkgs-kabbone "corosync-qdevice" { }; + + extraOptions = lib.mkOption { + type = with lib.types; listOf str; + default = [ ]; + description = "Additional options with which to start corosync-qnetd."; + }; + }; + + # implementation + + # implementation + config = lib.mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + + # environment.etc."corosync/corosync-qnetd.conf".text = '' + # totem { + # version: 2 + # secauth: on + # cluster_name: ${cfg.clusterName} + # transport: knet + # } + + + # logging { + # to_syslog: yes + # } + # ''; + + systemd.packages = [ cfg.package ]; + systemd.services.corosync-qnetd = { + serviceConfig = { + User = "coroqnetd"; + StateDirectory = "corosync-qnetd"; + StateDirectoryMode = "0700"; + }; + }; + + environment.etc."sysconfig/corosync-qnetd".text = lib.optionalString (cfg.extraOptions != [ ]) '' + COROSYNC-QNETD_OPTIONS="${lib.escapeShellArgs cfg.extraOptions}" + ''; + }; + + meta = { + #buildDocsInSandbox = false; + #doc = ./mautrix-whatsapp.md; + maintainers = with lib.maintainers; [ + kabbone + ]; + }; +} diff --git a/packages/corosync-qdevice.nix b/packages/corosync-qdevice.nix index 5e2989e..4838910 100644 --- a/packages/corosync-qdevice.nix +++ b/packages/corosync-qdevice.nix @@ -1,40 +1,49 @@ -#{ stdenv, fetchgit, corosync, nss } : -{ pkgs ? import {} }: -pkgs.stdenv.mkDerivation rec { - name = "corosync-qdevice"; - version = "3.0.3"; - src = pkgs.fetchFromGitHub { - owner = "corosync"; - repo = "corosync-qdevice"; - rev = "v${version}"; - sha256 = "sha256-9FyLhcGHNW73Xao7JiODzgyDKIynEAHJUlNppX+nPfw="; - }; - enableParallelBuilding = true; +{ + lib, + pkgs, + stdenv +} : +stdenv.mkDerivation rec { + pname = "corosync-qdevice"; + version = "3.0.3"; + src = pkgs.fetchFromGitHub { + owner = "corosync"; + repo = "corosync-qdevice"; + rev = "v${version}"; + sha256 = "sha256-9FyLhcGHNW73Xao7JiODzgyDKIynEAHJUlNppX+nPfw="; + }; + enableParallelBuilding = true; - nativeBuildInputs = with pkgs; [ - nss - autoconf - automake - libtool - pkg-config - libqb - corosync - systemd - ]; + nativeBuildInputs = with pkgs; [ + autoconf + automake + libtool + pkg-config + libqb + systemd + ]; -# buildInputs = with pkgs; [ -# corosync -# ]; + buildInputs = with pkgs; [ + corosync + nss + ]; - configurePhase = '' - ./autogen.sh - ./configure \ - --prefix=$out \ - --enable-systemd \ - --disable-upstart - ''; + configurePhase = '' + ./autogen.sh + ./configure \ + --prefix=$out \ + --enable-systemd \ + --disable-upstart + ''; - buildPhase = '' - make - ''; + buildPhase = '' + make + ''; + + meta = { + description = "daemon for quorum on clusters"; + homepage = "https://github.com/corosync/corosync-qdevice"; + platforms = lib.platforms.linux; + license = lib.licenses.gpl3; + }; } diff --git a/packages/default.nix b/packages/default.nix new file mode 100644 index 0000000..90f838c --- /dev/null +++ b/packages/default.nix @@ -0,0 +1,4 @@ +{ pkgs, ... }: +{ + corosync-qdevice = pkgs.callPackage ./corosync-qdevice.nix {}; +}