grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / hardware / argonone.nix
blobb767388128c851e561afa13e12d7f9d953cfb60a
1 { config, lib, pkgs, ... }:
3 let
4   cfg = config.services.hardware.argonone;
5 in
7   options.services.hardware.argonone = {
8     enable = lib.mkEnableOption "the driver for Argon One Raspberry Pi case fan and power button";
9     package = lib.mkOption {
10       type = lib.types.package;
11       default = pkgs.argononed;
12       defaultText = lib.literalExpression "pkgs.argononed";
13       description = ''
14         The package implementing the Argon One driver
15       '';
16     };
17   };
19   config = lib.mkIf cfg.enable {
20     hardware.i2c.enable = true;
21     hardware.deviceTree.overlays = [
22       {
23         name = "argononed";
24         dtboFile = "${cfg.package}/boot/overlays/argonone.dtbo";
25       }
26       {
27         name = "i2c1-okay-overlay";
28         dtsText = ''
29           /dts-v1/;
30           /plugin/;
31           / {
32             compatible = "brcm,bcm2711";
33             fragment@0 {
34               target = <&i2c1>;
35               __overlay__ {
36                 status = "okay";
37               };
38             };
39           };
40         '';
41       }
42     ];
43     environment.systemPackages = [ cfg.package ];
44     systemd.services.argononed = {
45       description = "Argon One Raspberry Pi case Daemon Service";
46       wantedBy = [ "multi-user.target" ];
47       serviceConfig = {
48         Type = "forking";
49         ExecStart = "${cfg.package}/bin/argononed";
50         PIDFile = "/run/argononed.pid";
51         Restart = "on-failure";
52       };
53     };
54   };
56   meta.maintainers = with lib.maintainers; [ misterio77 ];