merkaartor.nix (2551B)
1 { config, lib, pkgs, ... }: 2 3 with lib; 4 let 5 cfg = config.programs.merkaartor; 6 configDir = "${config.xdg.configHome}/Merkaartor"; 7 configFile = "${configDir}/Merkaartor.conf"; 8 domain = "org.merkaartor.Merkaartor"; 9 in 10 { 11 meta.maintainers = [ maintainers.sikmir ]; 12 13 options.programs.merkaartor = { 14 enable = mkEnableOption "OpenStreetMap editor"; 15 16 package = mkOption { 17 default = pkgs.merkaartor; 18 defaultText = literalExpression "pkgs.merkaartor"; 19 description = "Merkaartor package to install."; 20 type = types.package; 21 }; 22 23 user = mkOption { 24 default = ""; 25 description = "OSM user."; 26 type = types.str; 27 }; 28 29 password = mkOption { 30 default = ""; 31 description = "OSM password."; 32 type = types.str; 33 }; 34 }; 35 36 config = mkIf cfg.enable ( 37 mkMerge [ 38 { 39 home.packages = [ cfg.package ]; 40 } 41 42 ( 43 mkIf pkgs.stdenv.isLinux { 44 home.activation.createConfigFile = lib.hm.dag.entryBefore [ "writeBoundary" ] '' 45 $DRY_RUN_CMD mkdir -p ${configDir} 46 $DRY_RUN_CMD touch ${configFile} 47 ''; 48 } 49 ) 50 51 ( 52 mkIf (cfg.user != "" && cfg.password != "") { 53 home.activation.setupCredentials = lib.hm.dag.entryAfter [ "writeBoundary" ] 54 ( 55 if pkgs.stdenv.isDarwin then '' 56 $DRY_RUN_CMD /usr/bin/defaults write ${domain} OsmServers.1.url https://api.openstreetmap.org/api 57 $DRY_RUN_CMD /usr/bin/defaults write ${domain} OsmServers.1.selected true 58 $DRY_RUN_CMD /usr/bin/defaults write ${domain} OsmServers.1.user ${cfg.user} 59 $DRY_RUN_CMD /usr/bin/defaults write ${domain} OsmServers.1.password ${cfg.password} 60 $DRY_RUN_CMD /usr/bin/defaults write ${domain} OsmServers.size 1 61 '' else '' 62 $DRY_RUN_CMD ${pkgs.crudini}/bin/crudini $VERBOSE_ARG --set ${configFile} OsmServers 1\\\\url https://api.openstreetmap.org/api 63 $DRY_RUN_CMD ${pkgs.crudini}/bin/crudini $VERBOSE_ARG --set ${configFile} OsmServers 1\\\\selected true 64 $DRY_RUN_CMD ${pkgs.crudini}/bin/crudini $VERBOSE_ARG --set ${configFile} OsmServers 1\\\\user ${cfg.user} 65 $DRY_RUN_CMD ${pkgs.crudini}/bin/crudini $VERBOSE_ARG --set ${configFile} OsmServers 1\\\\password ${cfg.password} 66 $DRY_RUN_CMD ${pkgs.crudini}/bin/crudini $VERBOSE_ARG --set ${configFile} OsmServers size 1 67 '' 68 ); 69 } 70 ) 71 ] 72 ); 73 }