diff --git a/modules/home-manager/programs/josm.nix b/modules/home-manager/programs/josm.nix
index 377b006c19e3803ae234bb2e8f39ef50d23255f3..225bece05e312e532318bf09d7e446fe22347fe8 100644
--- a/modules/home-manager/programs/josm.nix
+++ b/modules/home-manager/programs/josm.nix
@@ -3,6 +3,12 @@
with lib;
let
cfg = config.programs.josm;
"${config.home.homeDirectory}/Library/Preferences/JOSM"
"${config.xdg.configHome}/JOSM";
in
{
meta.maintainers = [ maintainers.sikmir ];
@@ -16,9 +22,53 @@ defaultText = literalExample "pkgs.josm";
description = "JOSM package to install.";
type = types.package;
};
default = "";
description = "OAuth Access Token Key.";
type = types.str;
default = "";
description = "OAuth Access Token Secret.";
type = types.str;
};
{
home.packages = [ cfg.package ];
home.activation.createJOSMConfigFile = lib.hm.dag.entryBefore [ "writeBoundary" ] ''
. ${./josm/init-prefs.sh}
. ${./josm/upsert-tag.sh}
export PATH=${pkgs.xmlstarlet}/bin:$PATH
initPrefs ${cfg.package.version} ${configFile}
upsertTag josm.version ${cfg.package.version} ${configFile}
'';
}
(
mkIf (cfg.accessTokenKey != "") {
home.activation.setupAccessTokenKey = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
. ${./josm/upsert-tag.sh}
export PATH=${pkgs.xmlstarlet}/bin:$PATH
upsertTag oauth.access-token.key ${cfg.accessTokenKey} ${configFile}
'';
}
)
(
mkIf (cfg.accessTokenSecret != "") {
home.activation.setupAccessTokenSecret = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
. ${./josm/upsert-tag.sh}
export PATH=${pkgs.xmlstarlet}/bin:$PATH
upsertTag oauth.access-token.secret ${cfg.accessTokenSecret} ${configFile}
'';
}
)
}
diff --git a/modules/home-manager/programs/josm/init-prefs.sh b/modules/home-manager/programs/josm/init-prefs.sh
new file mode 100644
index 0000000000000000000000000000000000000000..11b9e28520d9a3feb326729db2d00cdad4e25cc7
--- /dev/null
+++ b/modules/home-manager/programs/josm/init-prefs.sh
@@ -0,0 +1,18 @@
+function initPrefs() {
-i "/preferences" -t attr -n "xmlns" -v "http://josm.openstreetmap.de/preferences-1.0" \
-i "/preferences" -t attr -n "version" -v "$version" \
$cfgfile
-N N="http://josm.openstreetmap.de/preferences-1.0" \
-u "/N:preferences/@version" -v "$version" \
$cfgfile
+}
diff --git a/modules/home-manager/programs/josm/upsert-tag.sh b/modules/home-manager/programs/josm/upsert-tag.sh
new file mode 100644
index 0000000000000000000000000000000000000000..98fbce88c2b99a9a5935672049e1b167ea71b3f0
--- /dev/null
+++ b/modules/home-manager/programs/josm/upsert-tag.sh
@@ -0,0 +1,15 @@
+function upsertTag() {
-N N="http://josm.openstreetmap.de/preferences-1.0" \
-d "//N:tag[@key='$key']" \
-s '/N:preferences' -t elem -n "tag" \
-i '$prev' -t attr -n "key" -v "$key" \
-a "/N:preferences/tag[@key='$key']" -t attr -n "value" -v "$value" \
$cfgfile
+}
application/octet-stream
This content has been proxied by September (3851b).