From b0f78fba37123df5c047ef1c682cd9da346318f2 Mon Sep 17 00:00:00 2001 From: Anthony Roussel Date: Sat, 6 Apr 2024 23:41:28 +0200 Subject: [PATCH 1/5] nixosTests.oddjobd: init --- nixos/tests/all-tests.nix | 1 + nixos/tests/oddjobd.nix | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 nixos/tests/oddjobd.nix diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index c5af2ce1fccb..20c7edbd2678 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -652,6 +652,7 @@ in { nzbget = handleTest ./nzbget.nix {}; nzbhydra2 = handleTest ./nzbhydra2.nix {}; ocis = handleTest ./ocis.nix {}; + oddjobd = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./oddjobd.nix {}; oh-my-zsh = handleTest ./oh-my-zsh.nix {}; ollama = handleTest ./ollama.nix {}; ombi = handleTest ./ombi.nix {}; diff --git a/nixos/tests/oddjobd.nix b/nixos/tests/oddjobd.nix new file mode 100644 index 000000000000..cc2d4079eebc --- /dev/null +++ b/nixos/tests/oddjobd.nix @@ -0,0 +1,23 @@ +import ./make-test-python.nix ({ pkgs, lib, ... }: { + name = "oddjobd"; + meta.maintainers = [ lib.maintainers.anthonyroussel ]; + + nodes.machine = { ... } : { + environment.systemPackages = [ + pkgs.oddjob + ]; + + programs.oddjobd.enable = true; + }; + + testScript = '' + start_all() + + machine.wait_for_unit("oddjobd.service") + machine.wait_for_file("/run/oddjobd.pid") + + with subtest("send oddjob listall request"): + result = machine.succeed("oddjob_request -s com.redhat.oddjob -o /com/redhat/oddjob -i com.redhat.oddjob listall") + assert ('(service="com.redhat.oddjob",object="/com/redhat/oddjob",interface="com.redhat.oddjob",method="listall")' in result) + ''; +}) From 9a03f2ca1322c4661636056de084505397103c11 Mon Sep 17 00:00:00 2001 From: Anthony Roussel Date: Sat, 6 Apr 2024 23:42:02 +0200 Subject: [PATCH 2/5] nixos/oddjobd: enable oddjob dbus service --- nixos/modules/programs/oddjobd.nix | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/nixos/modules/programs/oddjobd.nix b/nixos/modules/programs/oddjobd.nix index 08bb8b268473..9b19c160b2c0 100644 --- a/nixos/modules/programs/oddjobd.nix +++ b/nixos/modules/programs/oddjobd.nix @@ -4,26 +4,28 @@ let cfg = config.programs.oddjobd; in { - options.programs.oddjobd = { - enable = lib.mkEnableOption "oddjob"; - package = lib.mkPackageOption pkgs "oddjob" {}; + options = { + programs.oddjobd = { + enable = lib.mkEnableOption "oddjob"; + package = lib.mkPackageOption pkgs "oddjob" {}; + }; }; config = lib.mkIf cfg.enable { - systemd.packages = [ cfg.package ]; - systemd.services.oddjobd = { - wantedBy = [ "multi-user.target"]; - after = [ "network.target"]; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" "dbus.service" ]; description = "DBUS Odd-job Daemon"; enable = true; documentation = [ "man:oddjobd(8)" "man:oddjobd.conf(5)" ]; serviceConfig = { - Type = "dbus"; - BusName = "org.freedesktop.oddjob"; - ExecStart = "${lib.getBin cfg.package}/bin/oddjobd"; + Type = "simple"; + PIDFile = "/run/oddjobd.pid"; + ExecStart = "${lib.getBin cfg.package}/bin/oddjobd -n -p /run/oddjobd.pid -t 300"; }; }; + + services.dbus.packages = [ cfg.package ]; }; meta.maintainers = with lib.maintainers; [ SohamG ]; From e3cd9db7924a6506a3fe6cba8df5ed7f8eb33980 Mon Sep 17 00:00:00 2001 From: Anthony Roussel Date: Sun, 7 Apr 2024 00:30:09 +0200 Subject: [PATCH 3/5] oddjob: add nixosTests to passthru.tests --- pkgs/os-specific/linux/oddjob/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/os-specific/linux/oddjob/default.nix b/pkgs/os-specific/linux/oddjob/default.nix index bcbea9086488..ac2f3ce4e328 100644 --- a/pkgs/os-specific/linux/oddjob/default.nix +++ b/pkgs/os-specific/linux/oddjob/default.nix @@ -4,6 +4,7 @@ , autoreconfHook , dbus , libxml2 +, nixosTests , pam , pkg-config , systemd @@ -49,6 +50,13 @@ stdenv.mkDerivation rec { --replace "globals.selinux_enabled" "FALSE" ''; + # Requires a dbus-daemon environment + doCheck = false; + + passthru.tests = { + inherit (nixosTests) oddjobd; + }; + meta = with lib; { description = "Odd Job Daemon"; homepage = "https://pagure.io/oddjob"; From f42230b64c9bb0badf684199841340a19c708882 Mon Sep 17 00:00:00 2001 From: Anthony Roussel Date: Sun, 7 Apr 2024 00:30:21 +0200 Subject: [PATCH 4/5] oddjob: move oddjobd.service SystemD service to lib/systemd/system --- pkgs/os-specific/linux/oddjob/default.nix | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pkgs/os-specific/linux/oddjob/default.nix b/pkgs/os-specific/linux/oddjob/default.nix index ac2f3ce4e328..ce1dd2a26567 100644 --- a/pkgs/os-specific/linux/oddjob/default.nix +++ b/pkgs/os-specific/linux/oddjob/default.nix @@ -1,4 +1,5 @@ { lib +, fetchpatch , fetchurl , stdenv , autoreconfHook @@ -19,6 +20,14 @@ stdenv.mkDerivation rec { hash = "sha256-SUOsMH55HtEsk5rX0CXK0apDObTj738FGOaL5xZRnIM="; }; + patches = [ + # Define SystemD service location using `with-systemdsystemunitdir` configure flag + (fetchpatch { + url = "https://pagure.io/oddjob/c/f63287a35107385dcb6e04a4c742077c9d1eab86.patch"; + hash = "sha256-2mmw4pJhrIk4/47FM8zKH0dTQJWnntHPNmq8VAUWqJI="; + }) + ]; + nativeBuildInputs = [ autoreconfHook pkg-config @@ -31,18 +40,12 @@ stdenv.mkDerivation rec { systemd ]; - postPatch = '' - substituteInPlace configure.ac \ - --replace 'SYSTEMDSYSTEMUNITDIR=`pkg-config --variable=systemdsystemunitdir systemd 2> /dev/null`' "SYSTEMDSYSTEMUNITDIR=${placeholder "out"}" \ - --replace 'SYSTEMDSYSTEMUNITDIR=`pkg-config --variable=systemdsystemunitdir systemd`' "SYSTEMDSYSTEMUNITDIR=${placeholder "out"}" - ''; - configureFlags = [ "--prefix=${placeholder "out"}" "--sysconfdir=${placeholder "out"}/etc" "--with-selinux-acls=no" "--with-selinux-labels=no" - "--disable-systemd" + "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system" ]; postConfigure = '' From d30b2fe2d29aeda62e116543f244d73373152a84 Mon Sep 17 00:00:00 2001 From: Anthony Roussel Date: Sun, 7 Apr 2024 00:01:51 +0200 Subject: [PATCH 5/5] oddjob: format with nixfmt-rfc-style, remove `with lib;` --- pkgs/os-specific/linux/oddjob/default.nix | 41 ++++++++++++----------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/pkgs/os-specific/linux/oddjob/default.nix b/pkgs/os-specific/linux/oddjob/default.nix index ce1dd2a26567..1ade48c89697 100644 --- a/pkgs/os-specific/linux/oddjob/default.nix +++ b/pkgs/os-specific/linux/oddjob/default.nix @@ -1,14 +1,15 @@ -{ lib -, fetchpatch -, fetchurl -, stdenv -, autoreconfHook -, dbus -, libxml2 -, nixosTests -, pam -, pkg-config -, systemd +{ + autoreconfHook, + dbus, + fetchpatch, + fetchurl, + lib, + libxml2, + nixosTests, + pam, + pkg-config, + stdenv, + systemd, }: stdenv.mkDerivation rec { @@ -16,8 +17,8 @@ stdenv.mkDerivation rec { version = "0.34.7"; src = fetchurl { - url = "https://pagure.io/oddjob/archive/${pname}-${version}/oddjob-${pname}-${version}.tar.gz"; - hash = "sha256-SUOsMH55HtEsk5rX0CXK0apDObTj738FGOaL5xZRnIM="; + url = "https://pagure.io/oddjob/archive/${pname}-${version}/oddjob-${pname}-${version}.tar.gz"; + hash = "sha256-SUOsMH55HtEsk5rX0CXK0apDObTj738FGOaL5xZRnIM="; }; patches = [ @@ -33,9 +34,9 @@ stdenv.mkDerivation rec { pkg-config ]; - buildInputs =[ - libxml2 + buildInputs = [ dbus + libxml2 pam systemd ]; @@ -60,12 +61,12 @@ stdenv.mkDerivation rec { inherit (nixosTests) oddjobd; }; - meta = with lib; { + meta = { + changelog = "https://pagure.io/oddjob/blob/oddjob-${version}/f/ChangeLog"; description = "Odd Job Daemon"; homepage = "https://pagure.io/oddjob"; - changelog = "https://pagure.io/oddjob/blob/oddjob-${version}/f/ChangeLog"; - license = licenses.bsd0; - platforms = platforms.linux; - maintainers = with maintainers; [ SohamG ]; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ SohamG ]; + platforms = lib.platforms.linux; }; }