Merge pull request #59424 from florianjacob/journalwatch
journalwatch: fix broken package, general maintenance
This commit is contained in:
commit
8d64ec7a17
2 changed files with 38 additions and 24 deletions
|
@ -4,6 +4,8 @@ with lib;
|
|||
let
|
||||
cfg = config.services.journalwatch;
|
||||
user = "journalwatch";
|
||||
# for journal access
|
||||
group = "systemd-journal";
|
||||
dataDir = "/var/lib/${user}";
|
||||
|
||||
journalwatchConfig = pkgs.writeText "config" (''
|
||||
|
@ -31,6 +33,17 @@ let
|
|||
|
||||
'') filterBlocks);
|
||||
|
||||
# can't use joinSymlinks directly, because when we point $XDG_CONFIG_HOME
|
||||
# to the /nix/store path, we still need the subdirectory "journalwatch" inside that
|
||||
# to match journalwatch's expectations
|
||||
journalwatchConfigDir = pkgs.runCommand "journalwatch-config"
|
||||
{ preferLocalBuild = true; allowSubstitutes = false; }
|
||||
''
|
||||
mkdir -p $out/journalwatch
|
||||
ln -sf ${journalwatchConfig} $out/journalwatch/config
|
||||
ln -sf ${journalwatchPatterns} $out/journalwatch/patterns
|
||||
'';
|
||||
|
||||
|
||||
in {
|
||||
options = {
|
||||
|
@ -199,33 +212,38 @@ in {
|
|||
|
||||
users.users.${user} = {
|
||||
isSystemUser = true;
|
||||
createHome = true;
|
||||
home = dataDir;
|
||||
# for journal access
|
||||
group = "systemd-journal";
|
||||
group = group;
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
# present since NixOS 19.09: remove old stateful symlink join directory,
|
||||
# which has been replaced with the journalwatchConfigDir store path
|
||||
"R ${dataDir}/config"
|
||||
];
|
||||
|
||||
systemd.services.journalwatch = {
|
||||
|
||||
environment = {
|
||||
# journalwatch stores the last processed timpestamp here
|
||||
# the share subdirectory is historic now that config home lives in /nix/store,
|
||||
# but moving this in a backwards-compatible way is much more work than what's justified
|
||||
# for cleaning that up.
|
||||
XDG_DATA_HOME = "${dataDir}/share";
|
||||
XDG_CONFIG_HOME = "${dataDir}/config";
|
||||
XDG_CONFIG_HOME = journalwatchConfigDir;
|
||||
};
|
||||
serviceConfig = {
|
||||
User = user;
|
||||
Group = group;
|
||||
Type = "oneshot";
|
||||
PermissionsStartOnly = true;
|
||||
# requires a relative directory name to create beneath /var/lib
|
||||
StateDirectory = user;
|
||||
StateDirectoryMode = 0750;
|
||||
ExecStart = "${pkgs.python3Packages.journalwatch}/bin/journalwatch mail";
|
||||
# lowest CPU and IO priority, but both still in best-effort class to prevent starvation
|
||||
Nice=19;
|
||||
IOSchedulingPriority=7;
|
||||
};
|
||||
preStart = ''
|
||||
chown -R ${user}:systemd-journal ${dataDir}
|
||||
chmod -R u+rwX,go-w ${dataDir}
|
||||
mkdir -p ${dataDir}/config/journalwatch
|
||||
ln -sf ${journalwatchConfig} ${dataDir}/config/journalwatch/config
|
||||
ln -sf ${journalwatchPatterns} ${dataDir}/config/journalwatch/patterns
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.timers.journalwatch = {
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
{ stdenv, buildPythonPackage, fetchurl, pythonOlder, systemd, pytest }:
|
||||
{ stdenv, buildPythonPackage, fetchFromGitHub, pythonOlder, systemd, pytest }:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "journalwatch";
|
||||
name = "${pname}-${version}";
|
||||
version = "1.1.0";
|
||||
disabled = pythonOlder "3.3";
|
||||
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/The-Compiler/${pname}/archive/v${version}.tar.gz";
|
||||
sha512 = "3hvbgx95hjfivz9iv0hbhj720wvm32z86vj4a60lji2zdfpbqgr2b428lvg2cpvf71l2xn6ca5v0hzyz57qylgwqzgfrx7hqhl5g38s";
|
||||
src = fetchFromGitHub {
|
||||
owner = "The-Compiler";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha512 = "11g2f1w9lfqw6zxxyg7qrqpb914s6w71j0gnpw7qr7cak2l5jlf2l39dlg30y55rw7jgmf0yg77wwzd0c430mq1n6q1v8w86g1rwkzb";
|
||||
};
|
||||
|
||||
# can be removed post 1.1.0
|
||||
|
@ -20,14 +20,10 @@ buildPythonPackage rec {
|
|||
|
||||
|
||||
doCheck = true;
|
||||
|
||||
checkInputs = [ pytest ];
|
||||
checkPhase = ''
|
||||
pytest test_journalwatch.py
|
||||
'';
|
||||
|
||||
buildInputs = [
|
||||
pytest
|
||||
];
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = [
|
||||
systemd
|
||||
|
|
Loading…
Reference in a new issue