at 25.11-pre 1.1 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7let 8 cfg = config.services.pacemaker; 9in 10{ 11 # interface 12 options.services.pacemaker = { 13 enable = lib.mkEnableOption "pacemaker"; 14 15 package = lib.mkPackageOption pkgs "pacemaker" { }; 16 }; 17 18 # implementation 19 config = lib.mkIf cfg.enable { 20 assertions = [ 21 { 22 assertion = config.services.corosync.enable; 23 message = '' 24 Enabling services.pacemaker requires a services.corosync configuration. 25 ''; 26 } 27 ]; 28 29 environment.systemPackages = [ cfg.package ]; 30 31 # required by pacemaker 32 users.users.hacluster = { 33 isSystemUser = true; 34 group = "pacemaker"; 35 home = "/var/lib/pacemaker"; 36 }; 37 users.groups.pacemaker = { }; 38 39 systemd.tmpfiles.rules = [ 40 "d /var/log/pacemaker 0700 hacluster pacemaker -" 41 ]; 42 43 systemd.packages = [ cfg.package ]; 44 systemd.services.pacemaker = { 45 wantedBy = [ "multi-user.target" ]; 46 serviceConfig = { 47 StateDirectory = "pacemaker"; 48 StateDirectoryMode = "0700"; 49 }; 50 }; 51 }; 52}