nixos/preload: init
[NixPkgs.git] / nixos / modules / services / hardware / supergfxd.nix
blobf7af993d7238c556c5bc49e9a35dbcb68aa752bc
1 { config, lib, pkgs, ... }:
3 let
4   cfg = config.services.supergfxd;
5   json = pkgs.formats.json { };
6 in
8   options = {
9     services.supergfxd = {
10       enable = lib.mkEnableOption (lib.mdDoc "the supergfxd service");
12       settings = lib.mkOption {
13         type = lib.types.nullOr json.type;
14         default = null;
15         description = lib.mdDoc ''
16           The content of /etc/supergfxd.conf.
17           See https://gitlab.com/asus-linux/supergfxctl/#config-options-etcsupergfxdconf.
18         '';
19       };
20     };
21   };
23   config = lib.mkIf cfg.enable {
24     environment.systemPackages = [ pkgs.supergfxctl ];
26     environment.etc."supergfxd.conf" = lib.mkIf (cfg.settings != null) {
27       source = json.generate "supergfxd.conf" cfg.settings;
28       mode = "0644";
29     };
31     services.dbus.enable = true;
33     systemd.packages = [ pkgs.supergfxctl ];
34     systemd.services.supergfxd.wantedBy = [ "multi-user.target" ];
35     systemd.services.supergfxd.path = [ pkgs.kmod pkgs.pciutils ];
37     services.dbus.packages = [ pkgs.supergfxctl ];
38     services.udev.packages = [ pkgs.supergfxctl ];
39   };
41   meta.maintainers = pkgs.supergfxctl.meta.maintainers;