commit 168d2dc0ac539fb5f8f014a16a56fc6e9e94f5d3
parent 568d36744a20b45e898ece4fd478fa2076b3654b
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Tue, 12 Aug 2025 21:41:16 +0200
parent 568d36744a20b45e898ece4fd478fa2076b3654b
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Tue, 12 Aug 2025 21:41:16 +0200
flake: add `kairpodsd` package and homeManagerModule
3 files changed, 77 insertions(+), 0 deletions(-)
diff --git a/flake.nix b/flake.nix @@ -20,6 +20,7 @@ packages = forAllSystems (pkgs: { default = pkgs.airpodsctl; airpodsctl = pkgs.airpodsctl; + kairpodsd = pkgs.kairpodsd; }); devShells = forAllSystems (pkgs: { @@ -31,7 +32,10 @@ }; }); + homeManagerModules.kairpodsd = import ./kairpodsd/homeManagerModule.nix; + overlays.default = final: prev: { + kairpodsd = final.callPackage ./kairpodsd/package.nix {}; airpodsctl = final.buildGoModule (finalAttrs: { name = "airpodsctl"; src = "${inputs.self}/src";
diff --git a/kairpodsd/homeManagerModule.nix b/kairpodsd/homeManagerModule.nix @@ -0,0 +1,34 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.services.kairpodsd; + +in { + + options.services.kairpodsd = { + enable = lib.mkEnableOption { + type = lib.types.bool; + default = false; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.user.services.kairpodsd = { + Unit = { + Description = "kAirPods D-Bus Service"; + After = [ "graphical-session.target" ]; + }; + Service = { + Type = "dbus"; + BusName = "org.kairpods"; + ExecStart = lib.getExe pkgs.kairpodsd; + Restart = "on-failure"; + RestartSec = 5; + PrivateTmp = true; + NoNewPrivileges = true; + }; + Install.WantedBy = [ "default.target" ]; + }; + }; + +}
diff --git a/kairpodsd/package.nix b/kairpodsd/package.nix @@ -0,0 +1,39 @@ +{ + lib, + fetchFromGitHub, + unstable, + pkg-config, + dbus +}: + +unstable.rustPlatform.buildRustPackage (finalAttrs: { + pname = "kAirPodsd"; + version = "0.2.0"; + + src = "${fetchFromGitHub { + owner = "can1357"; + repo = "kAirPods"; + tag = "v${finalAttrs.version}"; + hash = "sha256-+FifFWwd4aAEk5ihDGVbTrW8f3AVnPZwBoPgM6VECu0="; + }}/service"; + + cargoHash = "sha256-y/WO0y3IPdhXOnsa+//HLXWEk7gs+MH0K62QUcnveiw="; + + buildType = "debug"; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + dbus + ]; + + meta = { + description = "Daemon from kAirPods"; + homepage = "https://github.com/can1357/kAirPods"; + mainProgram = "kairpodsd"; + license = lib.licenses.gpl3; + maintainers = [ ]; + }; +})