<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>Jelle's Webpage</title><id>https://jlicht.nl/feed.xml</id><subtitle>Recent Posts</subtitle><updated>2026-05-14T15:12:55Z</updated><link href="https://jlicht.nl/feed.xml" rel="self" /><link href="https://jlicht.nl" /><entry><title>AGit in Magit</title><id>https://jlicht.nl/agit-in-magit.html</id><author><name>Jelle Licht</name><email>mail@jlicht.nl</email></author><updated>2025-07-01T12:14:00Z</updated><link href="https://jlicht.nl/agit-in-magit.html" rel="alternate" /><content type="html">&lt;p&gt;
The Guix project recently migrated &lt;sup&gt;&lt;a role=&quot;doc-backlink&quot; id=&quot;fnr.1&quot; href=&quot;#fn.1&quot; class=&quot;footref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; all of their repositories to
Codeberg &lt;sup&gt;&lt;a role=&quot;doc-backlink&quot; id=&quot;fnr.2&quot; href=&quot;#fn.2&quot; class=&quot;footref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. In order to facilitate making easy pull requests from
the comfort of Magit and Emacs, I've adapted the following Emacs Lisp
snippet, based on work by sarg &lt;sup&gt;&lt;a role=&quot;doc-backlink&quot; id=&quot;fnr.3&quot; href=&quot;#fn.3&quot; class=&quot;footref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;:
&lt;/p&gt;

&lt;div class=&quot;org-src-container&quot;&gt;
&lt;pre class=&quot;src src-elisp&quot;&gt;(transient-define-suffix magit-push-current-agit (source target args)
  &lt;span class=&quot;org-builtin&quot;&gt;:if&lt;/span&gt; #'magit-get-current-branch
  &lt;span class=&quot;org-builtin&quot;&gt;:description&lt;/span&gt; (&lt;span class=&quot;org-keyword&quot;&gt;lambda&lt;/span&gt; () (concat (magit-push--upstream-description) &lt;span class=&quot;org-string&quot;&gt;&amp;quot; (agit)&amp;quot;&lt;/span&gt;))
  (&lt;span class=&quot;org-keyword&quot;&gt;interactive&lt;/span&gt;
   (&lt;span class=&quot;org-keyword&quot;&gt;let&lt;/span&gt; ((source (&lt;span class=&quot;org-keyword&quot;&gt;or&lt;/span&gt; (magit-get-current-branch)
                     (&lt;span class=&quot;org-warning&quot;&gt;user-error&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&amp;quot;No branch is checked out&amp;quot;&lt;/span&gt;))))
     (list source
           (magit-get-upstream-branch source)
           (magit-push-arguments))))
  (magit-push-refspecs
   (magit-get &lt;span class=&quot;org-string&quot;&gt;&amp;quot;branch&amp;quot;&lt;/span&gt; source &lt;span class=&quot;org-string&quot;&gt;&amp;quot;remote&amp;quot;&lt;/span&gt;)
   (concat &lt;span class=&quot;org-string&quot;&gt;&amp;quot;HEAD&amp;quot;&lt;/span&gt;
           &lt;span class=&quot;org-string&quot;&gt;&amp;quot;:refs/for/&amp;quot;&lt;/span&gt;
           (magit-get-local-upstream-branch source)
           &lt;span class=&quot;org-string&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt;
           source)
   `(,@args
     ,@(&lt;span class=&quot;org-keyword&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;org-keyword&quot;&gt;or&lt;/span&gt; (member &lt;span class=&quot;org-string&quot;&gt;&amp;quot;--force&amp;quot;&lt;/span&gt; args)
               (member &lt;span class=&quot;org-string&quot;&gt;&amp;quot;--force-with-lease&amp;quot;&lt;/span&gt; args))
           '(&lt;span class=&quot;org-string&quot;&gt;&amp;quot;-o&amp;quot;&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&amp;quot;force-push=true&amp;quot;&lt;/span&gt;)
         '()))))
(transient-insert-suffix 'magit-push &lt;span class=&quot;org-string&quot;&gt;&amp;quot;p&amp;quot;&lt;/span&gt;
  '(&lt;span class=&quot;org-string&quot;&gt;&amp;quot;a&amp;quot;&lt;/span&gt; magit-push-current-agit))
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
This allows me to create a local branch from e.g. the upstream
&lt;code&gt;javascript-team&lt;/code&gt; branch, make some local changes, and open a Pull
Request targeting the upstream &lt;code&gt;javascript-team&lt;/code&gt; branch with a quick
&lt;code&gt;P a&lt;/code&gt; from my magit window.
&lt;/p&gt;

&lt;p&gt;
Some missing features include:
&lt;/p&gt;
&lt;ul class=&quot;org-ul&quot;&gt;
&lt;li&gt;honoring upstream PR templates&lt;/li&gt;
&lt;li&gt;dynamically choosing which upstream branch to target with a PR&lt;/li&gt;
&lt;li&gt;collaborating with others on PRs via AGit&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;footnotes&quot;&gt;Footnotes: &lt;/h2&gt;
&lt;div id=&quot;text-footnotes&quot;&gt;

&lt;div class=&quot;footdef&quot;&gt;&lt;sup&gt;&lt;a role=&quot;doc-backlink&quot; id=&quot;fn.1&quot; href=&quot;#fnr.1&quot; class=&quot;footnum&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div role=&quot;doc-footnote&quot; class=&quot;footpara&quot;&gt;&lt;p class=&quot;footpara&quot;&gt;
&lt;a href=&quot;https://guix.gnu.org/blog/2025/migrating-to-codeberg/&quot;&gt;Migrating to Codeberg&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;footdef&quot;&gt;&lt;sup&gt;&lt;a role=&quot;doc-backlink&quot; id=&quot;fn.2&quot; href=&quot;#fnr.2&quot; class=&quot;footnum&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div role=&quot;doc-footnote&quot; class=&quot;footpara&quot;&gt;&lt;p class=&quot;footpara&quot;&gt;
&lt;a href=&quot;https://codeberg.org/guix&quot;&gt;GNU Guix on Codeberg&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;footdef&quot;&gt;&lt;sup&gt;&lt;a role=&quot;doc-backlink&quot; id=&quot;fn.3&quot; href=&quot;#fnr.3&quot; class=&quot;footnum&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div role=&quot;doc-footnote&quot; class=&quot;footpara&quot;&gt;&lt;p class=&quot;footpara&quot;&gt;
&lt;a href=&quot;https://codeberg.org/guix/guix/issues/40#issuecomment-4872720&quot;&gt;sarg's magit configuration snippet&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</content></entry><entry><title>mpv in Emacs</title><id>https://jlicht.nl/mpv-in-emacs.html</id><author><name>Jelle Licht</name><email>mail@jlicht.nl</email></author><updated>2022-04-14T21:44:00Z</updated><link href="https://jlicht.nl/mpv-in-emacs.html" rel="alternate" /><content type="html">&lt;p&gt;
I have two humble requirements for mpv:
&lt;/p&gt;

&lt;ol class=&quot;org-ol&quot;&gt;
&lt;li&gt;Watch a video&lt;/li&gt;
&lt;li&gt;Stream music in the background&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
My venerable Lenovo T400 is suprisingly capable at decoding 1080p
video, but doing so has an impact on the responsiveness of the
system. An easy way to not do unnecessary work is of course to skip
decoding video when I am just listening to music in the background:
&lt;/p&gt;

&lt;div class=&quot;org-src-container&quot;&gt;
&lt;pre class=&quot;src src-bash&quot;&gt;mpv --no-video &amp;lt;url-or-path-to-video&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
During my Emacs craze in moving my workflow over to EXWM, I found out
that mpv is well supported in EMMS. As quite some of the music and
videos I enjoy can be found on streaming websites, this does add some
new conflicting requirements:
&lt;/p&gt;

&lt;ol class=&quot;org-ol&quot;&gt;
&lt;li&gt;Don't do video decoding for music streamed from e.g. youtube.com&lt;/li&gt;
&lt;li&gt;Definitely do video decoding for videos streamed from e.g. youtube.com&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
While EMMS offers &lt;code&gt;emms-player-mpv-parameters&lt;/code&gt;, this only works if I
choose to go with one of the two use-cases; Changing the parameters
only makes a difference before the mpv IPC server is started.
&lt;/p&gt;

&lt;p&gt;
With the help of the fine folks at #mpv on irc.freenode.net, I learned
that you can cycle many properties and options at runtime in mpv, one
of which is the &lt;code&gt;video&lt;/code&gt; setting. This leads us to the following snippet:
&lt;/p&gt;

&lt;div class=&quot;org-src-container&quot;&gt;
&lt;pre class=&quot;src src-elisp&quot;&gt;(&lt;span class=&quot;org-keyword&quot;&gt;defun&lt;/span&gt; &lt;span class=&quot;org-function-name&quot;&gt;jlicht/cycle-mpv-video&lt;/span&gt; ()
  (&lt;span class=&quot;org-keyword&quot;&gt;interactive&lt;/span&gt;)
  (&lt;span class=&quot;org-keyword&quot;&gt;and&lt;/span&gt; (fboundp 'emms-player-mpv-cmd)
       (emms-player-mpv-cmd '(cycle video))))
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
Quite short and self-explanatory; if mpv is currently running, it
toggles video output (and more importantly, the video decoding with
all that entails).
&lt;/p&gt;

&lt;p&gt;
 There is a drawback to this approach: if mpv is started with
&lt;code&gt;--no-video&lt;/code&gt;, it seems to prevent the video capability from being
loaded in the first place.
&lt;/p&gt;

&lt;p&gt;
Since EXWM is also a tiling window manager, it is annoying to have mpv
windows zooming around all over the place when watching several videos
in a playlist. Forcing mpv to unconditionally show a window makes this
a lot better:
&lt;/p&gt;
&lt;div class=&quot;org-src-container&quot;&gt;
&lt;pre class=&quot;src src-elisp&quot;&gt;(&lt;span class=&quot;org-keyword&quot;&gt;setq&lt;/span&gt; emms-player-mpv-parameters
      '(&lt;span class=&quot;org-string&quot;&gt;&amp;quot;--force-window&amp;quot;&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&amp;quot;--quiet&amp;quot;&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&amp;quot;--really-quiet&amp;quot;&lt;/span&gt; &lt;span class=&quot;org-string&quot;&gt;&amp;quot;--no-audio-display&amp;quot;&lt;/span&gt;))
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
This window will simply show a black screen if video output is toggled
off. This wouldn't be a post about Emacs without tying it all together
in surprisingly simple ways:
&lt;/p&gt;

&lt;div class=&quot;org-src-container&quot;&gt;
&lt;pre class=&quot;src src-elisp&quot;&gt;(&lt;span class=&quot;org-keyword&quot;&gt;defun&lt;/span&gt; &lt;span class=&quot;org-function-name&quot;&gt;play-or-queue-url&lt;/span&gt; (url &lt;span class=&quot;org-type&quot;&gt;&amp;amp;optional&lt;/span&gt; _)
  (&lt;span class=&quot;org-keyword&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;org-keyword&quot;&gt;and&lt;/span&gt; (boundp 'emms-player-playing-p) emms-player-playing-p)
      (emms-add-url url)
    (emms-play-url url)))

(&lt;span class=&quot;org-keyword&quot;&gt;setq&lt;/span&gt; browse-url-handler
      '((&lt;span class=&quot;org-string&quot;&gt;&amp;quot;https:\\/\\/www\\.youtu\\.*be.&amp;quot;&lt;/span&gt; . play-or-queue-url)))
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
There you have it: all my requirements met, even the conflicting
ones. As an added bonus, youtube links in emacs will now be
transparently added to a playlist in emms, such as the ones in Elfeed
RSS feeds.
&lt;/p&gt;
</content></entry><entry><title>Applying patch series with notmuch</title><id>https://jlicht.nl/applying-patch-series-with-notmuch.html</id><author><name>Jelle Licht</name><email>mail@jlicht.nl</email></author><updated>2022-01-07T13:18:00Z</updated><link href="https://jlicht.nl/applying-patch-series-with-notmuch.html" rel="alternate" /><content type="html">&lt;p&gt;
It might be the case that you &lt;span class=&quot;underline&quot;&gt;really&lt;/span&gt; like the patch-based workflow,
or perhaps you simply want to collaborate on a project where
maintainers insist on it. Either way, it makes sense to set up a
workflow that works for you.
&lt;/p&gt;

&lt;p&gt;
Dealing with patches is never fun, but it can be easy! I use &lt;a href=&quot;https://notmuchmail.org&quot;&gt;notmuch
mail&lt;/a&gt; and its Emacs interface &lt;a href=&quot;https://notmuchmail.org/notmuch-emacs/&quot;&gt;notmuch-emacs&lt;/a&gt; to read most of my email,
and the vast majority of projects I interact with use git for version
control.
&lt;/p&gt;

&lt;div class=&quot;org-src-container&quot;&gt;
&lt;pre class=&quot;src src-emacs-lisp&quot;&gt;(&lt;span class=&quot;org-keyword&quot;&gt;defun&lt;/span&gt; &lt;span class=&quot;org-function-name&quot;&gt;apply-open-guix-patches&lt;/span&gt; ()
  &lt;span class=&quot;org-doc&quot;&gt;&amp;quot;Apply all opened patches to my guix source checkout.&amp;quot;&lt;/span&gt;
  (&lt;span class=&quot;org-keyword&quot;&gt;interactive&lt;/span&gt;)
  (notmuch-show-pipe-message t &lt;span class=&quot;org-string&quot;&gt;&amp;quot;git -C ~/src/guix am --3way --signoff&amp;quot;&lt;/span&gt;))
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
You will most likely want to customize the command passed to
&lt;code&gt;notmuch-show-pipe-message&lt;/code&gt;. You could parse both the mailing list
header and other parts of the email to dynamically build the command
string: &lt;code&gt;notmuch-show-get-subject&lt;/code&gt; could be used to select a specific
branch and/or worktree to apply your patches to. An integration with
&lt;code&gt;project.el&lt;/code&gt; or &lt;code&gt;projectile&lt;/code&gt; would allow easy selection of which
'project' to apply your patches to.
&lt;/p&gt;

&lt;p&gt;
A patch-based workflow via email might feel antiquated in
&lt;code&gt;$CURRENT_YEAR&lt;/code&gt;, yet being able to understand, adapt and compose the
smaller building blocks tools you depend on is a positive quality that
extends to Emacs, git and email in general.
&lt;/p&gt;
</content></entry><entry><title>Android development with Guix System in 2021</title><id>https://jlicht.nl/android-development-with-guix-system-in-2021.html</id><author><name>Jelle Licht</name><email>mail@jlicht.nl</email></author><updated>2021-07-15T15:30:00Z</updated><link href="https://jlicht.nl/android-development-with-guix-system-in-2021.html" rel="alternate" /><content type="html">&lt;p&gt;
The majority of work shared in this post is based on work done by
Julien Lepiller and shared on &lt;a href=&quot;https://lepiller.eu/en/running-android-studio-on-guix.html&quot;&gt;their blog&lt;/a&gt;. Go read that first if you
want to understand what is happening here. Simply follow the
instructions under TLDR if understanding is optional, and you just
want to hit the ground running.
&lt;/p&gt;
&lt;div id=&quot;outline-container-orga77851a&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;orga77851a&quot;&gt;TLDR&lt;/h2&gt;
&lt;div id=&quot;text-orga77851a&quot; class=&quot;outline-text-2&quot;&gt;
&lt;p&gt;
See &lt;a href=&quot;../assets/android-manifest.scm&quot;&gt;manifest.scm&lt;/a&gt; for the manifest, and &lt;a href=&quot;../assets/android-container.sh&quot;&gt;container.sh&lt;/a&gt; for the
container script to launch Android Studio in a container using
Guix's environment subcommand.
&lt;/p&gt;

&lt;div class=&quot;org-src-container&quot;&gt;
&lt;pre class=&quot;src src-bash&quot;&gt;bash container.sh
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
Be aware that the container that Android Studio will run in is poked
full of holes to support kvm-powered emulation and communication
with usb-connected (Android) devices. 
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;outline-container-org664450e&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;org664450e&quot;&gt;Changes compared to Julien's approach&lt;/h2&gt;
&lt;div id=&quot;text-org664450e&quot; class=&quot;outline-text-2&quot;&gt;
&lt;p&gt;
The most straightforward changes I made related to adding dependencies
to the container manifest that are now required Android Studio
dependencies.
&lt;/p&gt;

&lt;p&gt;
I also made a guix package out of Android Studio itself. The
licensing situation is a bit of a mess, and weirdly enough there is
only one dependency that seems to be &lt;a href=&quot;https://www.savarese.org/oro/docs/OROMatcher/OROMatcherLicense.html&quot;&gt;non-free software&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
I also opened up some of the restraints on the container in which
Android Studio will be running; most of this has to do with getting
it to interact with Android devices connected over USB.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;outline-container-org2eeb63a&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;org2eeb63a&quot;&gt;Remaining challenges&lt;/h2&gt;
&lt;div id=&quot;text-org2eeb63a&quot; class=&quot;outline-text-2&quot;&gt;
&lt;p&gt;
The current guix package definition for Android Studio is based on
the &lt;a href=&quot;https://guix.gnu.org/manual/en/html_node/Build-Systems.html&quot;&gt; &lt;code&gt;copy-build-system&lt;/code&gt; &lt;/a&gt;, meaning that things are mostly just copied
over.
&lt;/p&gt;

&lt;p&gt;
Android Studio is one of those pieces of software that also
helpfully &lt;del&gt;phones home&lt;/del&gt; checks in at Google for updates; even worse,
since the store is mounted read-only, these updates can not even be
installed. It would be an improvement if we can disable or patch out
this functionality entirely&lt;sup&gt;&lt;a role=&quot;doc-backlink&quot; id=&quot;fnr.1&quot; href=&quot;#fn.1&quot; class=&quot;footref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;
&lt;/p&gt;

&lt;p&gt;
Starting a guix container by first building a profile, and only then
entering a container is a bit of a hassle. I might still look into
applying the same trick used to &lt;a href=&quot;https://gitlab.com/nonguix/nonguix/-/issues/93&quot;&gt;containerize Steam&lt;/a&gt; so the &amp;quot;Container
Shuffle&amp;quot; can be hidden in day-to-day usage.
&lt;/p&gt;


&lt;p&gt;
If you want to interact with USB-connected Android devices, make
sure these devices are already connected when starting Android
Studio: If you (re)connect a device while Studio is already running,
DDMS will start freaking out and the only thing you can then still
do is restart Studio.
&lt;/p&gt;

&lt;p&gt;
Finally, Android Studio is (and will always be) a Google project;
this practically also means that you will most likely be forced to
read through heaps of EULAs, licenses and all that to even get
started with the Android-equivalent of &amp;quot;Hello World&amp;quot;. The fabled
Someone should really look into getting it all to work using the
actual Free Software rebuilds of the Android SDKs. Even better if
they write a Guix package definitions for it as well.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;footnotes&quot;&gt;
&lt;h2 class=&quot;footnotes&quot;&gt;Footnotes: &lt;/h2&gt;
&lt;div id=&quot;text-footnotes&quot;&gt;

&lt;div class=&quot;footdef&quot;&gt;&lt;sup&gt;&lt;a role=&quot;doc-backlink&quot; id=&quot;fn.1&quot; href=&quot;#fnr.1&quot; class=&quot;footnum&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div role=&quot;doc-footnote&quot; class=&quot;footpara&quot;&gt;&lt;p class=&quot;footpara&quot;&gt;
The ideal here would be to create a &lt;a href=&quot;https://guix.gnu.org/manual/en/html_node/Invoking-guix-refresh.html&quot;&gt;Guix Updater&lt;/a&gt; for making
easy updates to the Android Studio Guix package expression.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</content></entry><entry><title>Guix, docker and Skopeo</title><id>https://jlicht.nl/guix-docker-and-skopeo.html</id><author><name>Jelle Licht</name><email>mail@jlicht.nl</email></author><updated>2021-07-10T21:52:00Z</updated><link href="https://jlicht.nl/guix-docker-and-skopeo.html" rel="alternate" /><content type="html">&lt;p&gt;
Docker is ubiquitous; regardless of its merits. Since &lt;a href=&quot;https://github.com/containers/image/commit/e9d81b0ce61c3292a1cb2ffc589db3fe0820fd32&quot;&gt;my commit to
containers/image&lt;/a&gt; got upstreamed, you can use Guix in combination with
Skopeo to create and share Docker images.
&lt;/p&gt;

&lt;div class=&quot;org-src-container&quot;&gt;
&lt;pre class=&quot;src src-bash&quot;&gt;guix install skopeo
skopeo copy --insecure-policy &lt;span class=&quot;org-sh-escaped-newline&quot;&gt;\&lt;/span&gt;
       docker-archive:/$(&lt;span class=&quot;org-sh-quoted-exec&quot;&gt;guix pack -f docker hello --entry-point=bin/hello&lt;/span&gt;) &lt;span class=&quot;org-sh-escaped-newline&quot;&gt;\&lt;/span&gt;
       &amp;lt;some-docker-url-to-push-to&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
That &lt;code&gt;--insecure-policy&lt;/code&gt; flag might seem worrying, but can be left out
by providing &lt;a href=&quot;https://github.com/containers/image/blob/main/docs/containers-policy.json.5.md&quot;&gt;your own policy file&lt;/a&gt; via the &lt;code&gt;--policy&lt;/code&gt; argument. On
distributions that are &lt;i&gt;not&lt;/i&gt; Guix System, it can probably be left out
entirely, as Skopeo comes with a policy installed to
&lt;code&gt;/etc/containers/policy.json&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
If the previous command complains abouts not being authorized to push
to your particular Docker URL, you might still need to set up your
Docker registry credentials. Have a look at the &lt;a href=&quot;https://github.com/containers/skopeo/blob/main/docs/skopeo-login.1.md&quot;&gt;skopeo-login&lt;/a&gt; command:
&lt;/p&gt;

&lt;div class=&quot;org-src-container&quot;&gt;
&lt;pre class=&quot;src src-bash&quot;&gt;skopeo login &amp;lt;some-docker-registry-url&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
</content></entry></feed>