{ config, inputs, lib, ... }: with lib; let cfg = config.custom.services.geoclue2; in { options.custom.services.geoclue2.enable = mkOption { default = false; }; config = mkIf cfg.enable { age.secrets = let secret = filename: { file = "${inputs.self}/secrets/${filename}"; owner = "geoclue"; group = "geoclue"; }; in { "desktop/geoclue2/geolocation" = secret "desktop/geoclue2/geolocation"; }; # https://gitlab.freedesktop.org/geoclue/geoclue # FIXME: geoclue2 relies on MLS, which is retired # https://github.com/NixOS/nixpkgs/issues/321121 # TODO: Use static source option when merged into unstable # https://github.com/NixOS/nixpkgs/pull/329654 services.geoclue2 = { enable = true; # Overriden by static source enable3G = false; enableCDMA = false; enableModemGPS = false; enableNmea = false; enableWifi = false; }; # Manually use static source from coordinates # https://github.com/NixOS/nixpkgs/issues/311595#issuecomment-2247989491 environment.etc = { "geolocation".source = config.age.secrets."desktop/geoclue2/geolocation".path; "geoclue/conf.d/00-config.conf".text = '' [static-source] enable=true ''; }; }; }