python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / misc / dwm-status.nix
blobde3e28c41d27d29d3d9e2c07b81590584ef6e7e7
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.services.dwm-status;
8   order = concatMapStringsSep "," (feature: ''"${feature}"'') cfg.order;
10   configFile = pkgs.writeText "dwm-status.toml" ''
11     order = [${order}]
13     ${cfg.extraConfig}
14   '';
19   ###### interface
21   options = {
23     services.dwm-status = {
25       enable = mkEnableOption (lib.mdDoc "dwm-status user service");
27       package = mkOption {
28         type = types.package;
29         default = pkgs.dwm-status;
30         defaultText = literalExpression "pkgs.dwm-status";
31         example = literalExpression "pkgs.dwm-status.override { enableAlsaUtils = false; }";
32         description = lib.mdDoc ''
33           Which dwm-status package to use.
34         '';
35       };
37       order = mkOption {
38         type = types.listOf (types.enum [ "audio" "backlight" "battery" "cpu_load" "network" "time" ]);
39         description = lib.mdDoc ''
40           List of enabled features in order.
41         '';
42       };
44       extraConfig = mkOption {
45         type = types.lines;
46         default = "";
47         description = lib.mdDoc ''
48           Extra config in TOML format.
49         '';
50       };
52     };
54   };
57   ###### implementation
59   config = mkIf cfg.enable {
61     services.upower.enable = elem "battery" cfg.order;
63     systemd.user.services.dwm-status = {
64       description = "Highly performant and configurable DWM status service";
65       wantedBy = [ "graphical-session.target" ];
66       partOf = [ "graphical-session.target" ];
68       serviceConfig.ExecStart = "${cfg.package}/bin/dwm-status ${configFile}";
69     };
71   };