Commit e97badfd authored by Philip Wilk's avatar Philip Wilk Committed by Bjørn Forsman
Browse files

nixos/ups: add package option

parent ea687641
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -359,7 +359,7 @@ let
          {
            MINSUPPLIES = 1;
            MONITOR = <generated from config.power.ups.upsmon.monitor>
            NOTIFYCMD = "''${pkgs.nut}/bin/upssched";
            NOTIFYCMD = "''${cfg.package}/bin/upssched";
            POWERDOWNFLAG = "/run/killpower";
            SHUTDOWNCMD = "''${pkgs.systemd}/bin/shutdown now";
          }
@@ -396,7 +396,7 @@ let
            type
          ]
        );
        NOTIFYCMD = lib.mkDefault "${pkgs.nut}/bin/upssched";
        NOTIFYCMD = lib.mkDefault "${cfg.package}/bin/upssched";
        POWERDOWNFLAG = lib.mkDefault "/run/killpower";
        SHUTDOWNCMD = lib.mkDefault "${pkgs.systemd}/bin/shutdown now";
      };
@@ -459,6 +459,8 @@ in
        Supplies, Power Distribution Units and Solar Controllers
      '';

      package = lib.mkPackageOption pkgs "nut" { };

      mode = lib.mkOption {
        default = "standalone";
        type = lib.types.enum [
@@ -577,7 +579,7 @@ in
    ];

    # For interactive use.
    environment.systemPackages = [ pkgs.nut ];
    environment.systemPackages = [ cfg.package ];
    environment.variables = envVars;

    networking.firewall = lib.mkIf cfg.openFirewall {
@@ -606,8 +608,8 @@ in
        serviceConfig = {
          Type = "forking";
          ExecStartPre = "${createUpsmonConf}";
          ExecStart = "${pkgs.nut}/sbin/upsmon -u ${cfg.upsmon.user}";
          ExecReload = "${pkgs.nut}/sbin/upsmon -c reload";
          ExecStart = "${cfg.package}/sbin/upsmon -u ${cfg.upsmon.user}";
          ExecReload = "${cfg.package}/sbin/upsmon -c reload";
          LoadCredential = lib.mapAttrsToList (
            name: monitor: "upsmon_password_${name}:${monitor.passwordFile}"
          ) cfg.upsmon.monitor;
@@ -633,8 +635,8 @@ in
          Type = "forking";
          ExecStartPre = "${createUpsdUsers}";
          # TODO: replace 'root' by another username.
          ExecStart = "${pkgs.nut}/sbin/upsd -u root";
          ExecReload = "${pkgs.nut}/sbin/upsd -c reload";
          ExecStart = "${cfg.package}/sbin/upsd -u root";
          ExecReload = "${cfg.package}/sbin/upsd -c reload";
          LoadCredential = lib.mapAttrsToList (
            name: user: "upsdusers_password_${name}:${user.passwordFile}"
          ) cfg.users;
@@ -655,7 +657,7 @@ in
        Type = "oneshot";
        RemainAfterExit = true;
        # TODO: replace 'root' by another username.
        ExecStart = "${pkgs.nut}/bin/upsdrvctl -u root start";
        ExecStart = "${cfg.package}/bin/upsdrvctl -u root start";
        Slice = "system-ups.slice";
      };
      environment = envVars;
@@ -677,7 +679,7 @@ in
      environment = envVars;
      serviceConfig = {
        Type = "oneshot";
        ExecStart = "${pkgs.nut}/bin/upsdrvctl shutdown";
        ExecStart = "${cfg.package}/bin/upsdrvctl shutdown";
        Slice = "system-ups.slice";
      };
    };
@@ -702,14 +704,14 @@ in
      "nut/upsmon.conf".source = "/run/nut/upsmon.conf";
    };

    power.ups.schedulerRules = lib.mkDefault "${pkgs.nut}/etc/upssched.conf.sample";
    power.ups.schedulerRules = lib.mkDefault "${cfg.package}/etc/upssched.conf.sample";

    systemd.tmpfiles.rules = [
      "d /var/state/ups -"
      "d /var/lib/nut 700"
    ];

    services.udev.packages = [ pkgs.nut ];
    services.udev.packages = [ cfg.package ];

    users.users.nutmon = lib.mkIf (cfg.upsmon.user == "nutmon") {
      isSystemUser = true;