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