Immutable Desktop Linux for Anyone

EP 7: Tuesday, Jul 11, 2023
Episode Banner


Martin Wimpress 0:03
So I’ve had a go at making a Nix OS operating system that is an unholy abomination. But I think it could be the no compromise immutable Linux desktop for anyone

Alan Pope 0:19
is this mean, Ubuntu Matei has been consigned to the dustbin of history for, you

Martin Wimpress 0:24
know, bun to Marty’s still going on here. But as you know, and maybe some of the listeners know, I now work on Nix OS as the as my day job. And so I’ve been experimenting with lots of the Nix OS technologies in order to see what might be possible. And sort of in friendly competition with George Castro on what he’s doing with you blue, and also borrowing some ideas from him. And he’s borrowed some ideas from me. So this is kind of in reply to Episode Five, where Alan sort of made a case for maybe immutable Linux is actually the distribution model we should be looking for, for non technical users to have a safe and protected environment. So I thought, well, let’s try and make something like that, that can actually you could give to your friends and family. And you’re not handing them a foot gun when you provide them with this distribution. So this is not a distribution, because that’s not the way Nix OS. But it could be. So think of this as a prototype. And I was just gonna talk through sort of some of the ideas I’ve had and how I’ve glued this together and how they interact with one another. So obviously, Nix OS is at the base of this, I’m not going to go into a deep dive of Nix OS, but one of Nix OS his capabilities is that it is an immutable distribution. But it’s many of the other Nix, Nix OS features that I think round off the important capabilities that make this viable, because I don’t think the argument starts and stops with I have an immutable distribution, therefore, all things are safe. So what I’ve done here is taken a look at Nix OS itself, and use Nix to compose an operating system, but also used a tool called home manager. So not only is this a distribution and operating system, it’s also fully composed and configured. So the configuration file for the operating system takes care of everything to do with the boot, the kernel, the desktop environment, your applications, and how all of those things are configured. So you don’t need to go grubbing around in random places, you can’t anyway, because it’s immutable. But this configuration file is where all of those things are managed. And this is where I think there is some frustration from some people about what immutable Linux can be because they feel that immutable means inflexible. And with Nix OS, it’s actually extremely flexible to create anything you want. And this is one of the things I’ve been surprised by. And it’s actually possible to do very complicated things with Nix OS, or at least things that are more complicated in Debian and Ubuntu are way easier with Nix.

Alan Pope 3:26
It feels like whenever the subject of immutable desktops come up, and this being a new shiny thing that people have been called to do. There’s this kind of background harm of Nix OS people going through. Yeah. Been there done that we’ve been doing this for ages is that you know, is that I’m not decrying. They may well be right. But is that fair that this has been around for a while with NYX? And we’re just new to the game?

Martin Wimpress 3:51
Yeah. So Nyx, has been around for 20 years, and was designed to solve the problems that we’re encountering today, like 15 years ago. So it’s very interesting in that respect, that it had the foresight to think about where the software problems were headed, and how to solve those problems. So when we’ve arrived at this point, I think that’s why there’s a lot of interest in Nix and Nix OS now, because it’s solving very real problems that we’re facing. Yeah,

Mark Johnson 4:16
I actually remember, I think it follows them. There must have been something like 10 years ago, now, Nick’s had a stand and I got chatting to them. I think they were talking about something to do with voting systems at the time, but just talking to them about how it all fitted together. At that point, it seemed like this, you know, amazing, forward thinking thing, which no one else had even thought of, but now yeah, like you say, it comes along. It’s like, oh, yeah, they have actually been doing this for a long time.

Alan Pope 4:44
Indeed. The worry I have is my eyes glaze over the point. When you talk about a configuration file. We came a long way with Ubuntu in the you put a USB key in and you get a graphical installer and what you get on the disk is this same no matter what machine you put it in and inverted commas just works kind of thing. And I worry that you’re going to scare people off with the talk of configuration, or are we just early on in this process, and that will come the automated, easy installer will be something in the future.

Martin Wimpress 5:17
So the automated easy installer does exist. And in fact, the system I’ve put together has that baked into it. So my system produces an ISO image that boots to a desktop environment and automatically launches the installer, which is a Next Next, choose your desktop. Where are you What language do you want a fair, and that will instal Nix OS without dealing with configuration files. But what I have done is, is integrated the whole configuration piece in here as well. And the reason I’ve done this is because I wanted an operating system I could deploy because I can deploy it to my friends and families machines that I look after. And what I wanted to do was create the Ubuntu like experience, you know, it just works have have something that users boot into, it feels comfortable. They’re in command of their own destiny, but they haven’t been handed a time bomb, which they can break. So here is the raw ingredients. And as I say, I have deviated from the pure Nick’s path here because I feel like blending some technologies together gives us some interesting approaches.

Alan Pope 6:29
You will be ostracised from pure nickel club. Why

Martin Wimpress 6:31
don’t you Yes, there is this notion of impurity in Nicks. And this is absolutely an impure solution. I

Alan Pope 6:38
love it. Give it to me. So

Martin Wimpress 6:41
it’s Nix OS, I’ve chosen to use the Pantheon desktop as the desktop environment, which is the desktop environment from elementary OS. And that is presented pretty much as elementary OS presents its desktop environment. So if you’ve seen Elementary, you know what to expect. It’s basically that. And then I’ve cooked in some extra bits and pieces, like things like browsers, already configured with the appropriate security settings already enabled, because that’s one of the things you can do with next is actually configure the software as well as make it available. So I know all of these machines have all got secure settings by default, and all of the convenience tools that you would have on a desktop operating system. But as you pointed out, Alan, what you don’t want to do is then say by the way, here is this big collection of Nick’s files that you now have to edit if you want to add GIMP to your desktop configuration. Exactly, yeah. So what I have also done is I’ve integrated flat pack and flat hub into this installation. So when the session logs in, it makes sure that flat hub and the elementary app Centre are both enabled. And the elementary app centre graphical application is installed. And both of those app stores are configured to be in the user session rather than on the system itself. Right. So each user in their own home directory is where all of those applications getting stalled. And what that meant is when I gave my father in law, his refreshed laptop, he was able to go into the app centre and instal, for example, the Behringer application because they’ve got an 18 channel digital mixer in their little home studio. And that’s in flat hub. And he just hit instal. And it is an app store like experience. So they can go and get Spotify and Google Chrome and any other applications that they might want that are not pre installed, that happens outside of this Nick’s management, but in a way that you can still ensure there’s some isolation and that these applications are not treading on one another or disrupting the underlying system.

Alan Pope 9:05
Nice. That sounds pretty neat. Have you enabled automatic updates for flat pack and all that or not?

Martin Wimpress 9:12
No, I just let elementary the elementary notification system tell the user when updates are available. And they go in and hit the update button. Right?

Mark Johnson 9:21
And how our updates to the immutable part handled if there’s a security update or you know if you if there’s a new release of a major part of the system, you phone, Martin,

Martin Wimpress 9:34
you do. In fact, bone Martin is currently the solution. Now I’m working on something better than that. But quite literally, the solution is have a telephone conversation with me. And I have integrated into this thing, the ability to use it’s a tail scale like system, so I can SSH into their machines and I can run the updates as and when right and so you would edit the config file file for them if that config file needs editing, which actually it shouldn’t ever need updating because each configuration is specific to the machine, it’s been deployed on with some generic desktop and default applications. But then all of the other applications that they want, they instal via app centre, right?

Alan Pope 10:21
That does feel like a little bit of a step backwards. You have to have your man with a beard on hand in order to update your system. Yes, but I appreciate this is possibly early days. I know the fedora silverblue people will say we’ve had this for ages. But you know, it’s early days in, in some places for these new read only immutable or whatever you want to call them. Systems. Yeah.

Martin Wimpress 10:48
So there are mechanisms to do this with Nix, Nix OS. It’s just I haven’t figured out exactly how I want to tackle this just yet. And we work on interesting problems like this at work. And this is one of the things we’ve been discussing. So you know, maybe we’ll cook up something of our own as well at some point.

Mark Johnson 11:05
So what about a user like me who wants to take this system and then start running Docker containers and doing web development?

Martin Wimpress 11:12
That is a very good question. And this is where I say this is for anyone because what I’ve described so far, is an effort to solve Allen’s let’s give typical users a robust system, now into the rest of us who wants to do development. So what I’ve integrated into this is a tool called distro box, and distro box, in this case, on my implementation sits on top of pod man, which is a Docker compatible runtime. And with distro box, you can get any version of any popular distribution. And so what I do is I grab the current Ubuntu that I’m working on current Debian that I’m working on, maybe Alpine from time to time, bit of fedora. But the way distro box works is it automatically hooks up all of the sockets and services and home directory with your current user. So when you enter the container for say, Ubuntu that I’ve just created with distro box, my home directory, all of my settings, all of my NYX configuration, anything that’s managed within the container out of the container is all integrated. So it’s a completely seamless environment. So I stand up my various development environments for let’s call them foreign distributions using distro box. And sometimes I use my own wrapper for QEMU. Quick me for doing the same in virtual machines.

Alan Pope 12:44
So from that you can do anything, are there any limitations to what you can run? I mean, it has to be able to run inside Docker slash pod man. But there are limitations. I’m not a big Docker pod man user,

Martin Wimpress 12:58
not really know. I mean, if you want to test kernels, then yes, you want a virtual machine rather than a container. Yeah, I’ve chosen pod man because it has in it support. So it integrates with system D. So if you actually want to boot the container, you know, with a PID one, you can do that. And you can actually run like proper distributions inside it. But using that I’ve been able to move all of my Ubuntu and Debian development workflows into these containers. But it seamlessly just connects to my home directory, and all of my tooling is available, but you can even do things like instal I mean, you wouldn’t want to do this. You can, you could instal Spotify inside one of those containers, and the X socket, and the pole socket, and everything are all hooked up. So when you run Spotify, it’s running on that Ubuntu container. But it’s just a graphical application on the desktop at that point, neat. I guess Spotify is probably a bad example. But like if there was any thing that only had a specific way to be distributed, like MATLAB, or some, like writer software that wasn’t available in the next repositories isn’t as a flat pack, you know, has a weird thing that you have to download and instal? Yeah, then you could do that inside distro box, right? You could, yes. Nice. And you could, you know, choose to run that application from whichever distribution happens to have the version with the features that you write available. So I was doing some testing with the math, which is the Netflix video quality profiling tool. And there’s a static binary available of FFmpeg that’s got all of this built in. And that works fine on Ubuntu, but because Nix and the unusual way that it’s built, it didn’t execute on Nix. So I just ran that inhibin to container because I can still access all of the files I want to process because they’re all set in my home directory and all just readily available. So you Now I’ve just been able to mix and match where I’ve found little gaps like that.

Alan Pope 15:04
So are you drinking your own champagne right now?

Martin Wimpress 15:07
I am right now. Right now I am doing that very thing. Yes. So if

Alan Pope 15:11
this episode comes out, then that was probably successful.

Martin Wimpress 15:16
It was, and I’ll put a link in the show notes to my next configuration that makes all of this possible. And that’s a developing project. And if anyone’s interested in learning, then stop buying if you want to help improve things, then do that to

Mark Johnson 15:33
Linux matters is part of the late night Linux family. If you enjoy the show, please consider supporting us on the rest of the late night Linux team using the PayPal or Patreon links at Linux For $5 a month on Patreon, you can enjoy an ad free feed of our show, or for $10 get access to all the late night Linux shows ad free, you can get in touch with us via email show at Linux, or chat with other listeners in our telegram group. All the details are at Linux

Alan Pope 16:07
I have been flying steamed egg airlines. That doesn’t mean I’ve been playing aeroplane games on my Steam deck. It means I’ve been in an aeroplane with my Steam deck, specifically to aeroplanes. I went to America for a conference last week. And I thought, Ah, this is my first conference that I’ve been to, since I bought a steam deck, I should probably take it with me and I’ll be able to use it on the plane because it was a nine or 10 hour flight, I thought I’m going to get bored. And planes are notoriously small for getting laptops out. And I’m notoriously big for not having enough room near me in order to get the laptop out. So I need something else I can play with. So I thought I’ll take my Steam deck. So I asked on Mastodon, if anyone had any recommendations, like I don’t really have tonnes of games on my, on my Steam deck. I asked for additional recommendations of games, I could play offline specifically. And I got loads of recommendations. And I ended up buying for different games because there was the Steam Summer Sale on. And so I got four games for about 1215 pounds, something like that, which was pretty good deal, I thought and then made sure my Steam deck was fully charged. And I had all the updates downloaded, and then jumped on a plane and played some games.

Mark Johnson 17:30
So which games did you play? And how did it go after playing for let’s say about two hours and possibly getting a bit low on battery?

Alan Pope 17:40
Haha. So I got recommended for games, like I said, but I really only played one of them to death. And that was vampire survivors.

Mark Johnson 17:51
I knew you were gonna say that. Because I also own vampire survivors.

Alan Pope 17:55
Someone I’ll come back to that. But someone else suggested, they looked at my Steam profile and saw what games were in it and said, Oh, you haven’t clocked up much time in phase, you should probably play that. Which I thought was, you know, a bit weird, but also excellent. And I also got a short hike, goto Roberto Gato, Roboto, I think, and I got a couple of others, which I didn’t play much of one was Pony Island, which are the four that I picked up. And I pretty much played vampire survivors, most of the flight. And the battery life wasn’t a problem. Because even though it was like a nine hour flight, I get a little bit fatigued playing games for a long period. And so I didn’t try and play for the whole flight, it wouldn’t have worked anyway, I don’t know how long the battery lasts. But vampire survivors is not a particularly power hungry game. You know, it’s a 2d pixel art style, Horde, romp, whatever you call it. And I also took a spare battery with me it was a recommendation that Martin sent about a year ago when he was buying a ThinkPad. He said, Oh, get this battery, you can power your laptop off of it. And I’ve never powered my laptop off of that battery. But I have power my Steam deck off

Mark Johnson 19:07
of it. We’re not talking about a double A battery. This is like a power bank kind of factory.

Alan Pope 19:12
It is a monster power bank. Yes. 100 Watts monster power bank that has a little display that tells you how much capacity and time it’s got left. Anyway, I played that game on and off all the way there. And I permanently had the steam deck attached to the battery. And I had the Simulink bad bluetooth headphones. And that was great because it blotted out some of the airline noise while I was playing the games and the thumping soundtrack in vampire survivors is very good distraction from the fact that you’re sat on a plane

Mark Johnson 19:44
and how did you sort of position yourself while you were playing? Did you have it rested on something or were you holding it up in front of your face and how how do you find it as an actual sort of handheld on the go device?

Alan Pope 19:57
So a couple of things worth noting. I managed to You get an empty seat next to me on both the flight out there and on the flight back, which meant I could have the battery and the case and the steam deck on the seat next to me when I wasn’t playing with it, which meant I could just pick it up and use it. For some of the time I just had it in my hands like looking down, but I got a bit of a crick in my neck. So the table on the planes that I was on, it’s one of those half tables that you flipped down and then fold out again. And so I just had it half out. And it also meant that having an empty chair next to me meant I could put my in flight red wine on the chair, the table next to me, and use the table in front of me for Holding, holding my hands. I think that’s what I did most of the time was just have my fists rested on the table in front of me playing the steam deck. And it was it was glorious. It was great. I it really helped pass the time quite a bit. But I didn’t I didn’t use it for the whole flight. Obviously, I watched a film and I ate and sneezed a bit and had some drink and chat to people. But yeah, it was great. I’d highly recommend it if you if you do a lot of flying. And you like a bit of PC gaming, get a steam deck.

Martin Wimpress 21:05
So I know you’ve got smaller handheld games devices where you’re not tempted to use any of those in preference to the steam deck.

Alan Pope 21:13
I’m glad you asked. I did actually take my Miyu Mini with me and did not get it out once I really yep, I tend to do all my emulation on the smaller handheld devices like the Wii U and the clockwork pie. And I don’t do any emulation on the Steam deck. I only do native PC stuff on on the Steam deck. But I didn’t play with the Miyu at all. I just played with the steam deck. And I was

Martin Wimpress 21:36
quite happy. Interesting. So knowing what you know now, would you buy another smaller retro orientated handheld?

Alan Pope 21:46
Yeah, because I don’t take my Steam deck everywhere. And sometimes if I’m on a train, for example, I might pull out the EU or if I’m waiting for one of the kids or something, I might pull it out and have a play with that. But I’m not going to cut my Steam deck around everywhere because it’s just a bit of a hassle. Because quite big and cumbersome. But for flights is perfect. Yep. I might buy another mini computing device. Because the me You mean he has a tiny screen and my eyes are getting bad. I came home with a slightly bigger screen. But yeah, I’m well happy with it. And I’ll I’ll continue to take it on plate.

Mark Johnson 22:20
I usually take mine with me when I go on visits to the office for work. So we go down to Brighton for a few days at a time. So it’s excellent to take on the train and also to have in my hotel room. Like I don’t want to take another laptop for gaming. I just have the steam deck and then whip that out and sit at the desk in the hotel and play with it in the evenings. It’s really good for that.

Alan Pope 22:42
Yeah, absolutely. I would have the phone playing podcasts. Listening to that while playing games in the hotel room absolutely works perfectly.

Mark Johnson 22:53
You may remember on a previous episode, I spoke about developing a gnome extension. Well, I have now published a gnome extension. Oh, get you. So at the time of recording, you can go to And you can search for advanced sound recorder. And if you’re running GNOME, and you have the relevant browser extension and other bit of software that you need running, you can just click the switch to turn it on on the website, which is quite clever. And then it actually instals it and run it. And I just wanted to talk a bit about what the experience of publishing an extension to the website was like,

Martin Wimpress 23:32
before we get into the publishing. Can I ask you did you change your application tool? Because when we last spoke you were using PAC CTL to dump JSON and parse JSON, did you stick with that solution? Or did you find in air quotes, official way to get at that stuff.

Mark Johnson 23:50
As it stands, the version that’s published is almost exactly as it was last time, we spoke with a few minor modifications that I’ll mention towards the end. Alright. So publishing a no extension was a much nicer experience than developing it. I’d love to say, there is quite extensive documentation that covers the review process, which starts with just some sort of general guidelines and things to think about. Plus some really specific examples of things you should do and not do like. There’s an initialization routine, there’s an enable and a disable routine that you get as part of every extension, and it tells you what you should and shouldn’t be doing in those quite clearly. So you don’t want to be loading your entire extension. When it just runs the init routine. You only want to do that once you enable it, things like that. They also provide some notes on the coding style you should follow and an ES lint file to automatically apply that coding style and tell you anyway you violated it, which were all really helpful stuff to do. Another thing that I wanted to do was when you create your metadata file in your extension, you tell it which versions of GNOME Shell it supports and I’m running Ubuntu, Jammie jellyfish, which doesn’t run the latest version of GNOME, it runs a couple of versions back. So I wanted to also know if it ran on, okay on the latest versions of GNOME, so I went trying to work out a good way of doing this. And there is a distribution called gnome OS, which if you go to, you can get like a nightly build of gnome OS, which has the latest version of gnome on. But I didn’t just want to test it on a subversion. I also wanted the version in between. So I did a bit of hunting around and found that if you go to OS, you can actually find an archive of ISO files to run previous versions. And it literally just boots into GNOME Shell no frills, that’s all it does. It’s not designed to be a distribution that you use. It’s just for testing things on gnome. So I managed to run that in a VM and then download my extension, I basically cloned it off GitHub while I was still developing and ran it that threw up some interesting edge cases, because bearing in mind that the the audio devices that you get in a VM aren’t necessarily the same as the ones that you get on an actual desktop. So for example, I control the volume by looking for the year the left channel, and it was a mono output in the VM, so I had to account for that. Also, the latest version of nowhere is is now running pipe wire. So things are a little bit different then stuff that’s just running Pulseaudio, I think he’s running Pulseaudio as well as pipe wire. So I could still use the PA CTL commands to actually do what I needed to do. But I had to take into account the fact that it was running pipe by with a

Alan Pope 26:40
PA CTL commands pre installed everywhere that you might instal this extension.

Mark Johnson 26:44
Yes, they were all they were already on. No mo s at least. So I didn’t have any trouble there. I suppose maybe I should have some sort of detection there just to flag if they I mean, basically it will. I think if you tried to do it, then in the extension manager in Nome, it would show you an error when it tries to initialise and enumerate the, the interfaces that you’ve got. So yes, maybe it would be nice if there was a user friendly warning, if that happened. So with all this tested, basically, you package everything up as a zip file, and you upload it to Nome not extensions to org, there’s a page there called add yours, and you upload a zip file and tick a thing to say, yes, it’s GPL, two licenced and whatever. I had a really weird issue with this, where I couldn’t get it to work in a confined browser. It kept on basically not submitting the form. And I actually got some help, I raised that issue on the gnome git lab, and someone there was trying to help me debug it. And I had no idea what was going on, because I had no idea what was going on. And then I tried it in Edge, which was installed from a Deb package, and everything just worked. So I haven’t had that happen on any other websites. But it was just a very bizarre experience.

Alan Pope 27:50
It’s worth noting that gnome actually has an extensions application now. So you can instal the extensions application and you get a window in which there’s a button it looks it’s like a cut down version of an app store, where it shows you a list of all the extensions that are currently installed. And there’s a browse button where you can search and instal additional extensions. So you don’t necessarily have to go to and get it that way in a browser, you can just instal it. And I don’t know which version of gloworm that came with. But the one I’m running on 2304 Has it?

Mark Johnson 28:24
Yeah, I haven’t actually had a problem installing them through the browser, it was just uploading them as arising. Okay. But once I used an anchor via browser, it was fine. So once you have successfully upload it, it gets reviewed and approved, hopefully by a human who reviews it. And then it’s there for people to instal, which is quite neat. How many people have installed it so far. When I wrote my notes. 928 people.

Martin Wimpress 28:46
Wow, that’s not too shabby. Nice. Nice. You’ve made a popular thing. Yeah,

Mark Johnson 28:51
yeah. And then subsequent reviews are quite neat. So you just upload another zip file with all of your stuff in and it creates a new version for you. I think if you just change metadata rather than change any code, it just gets published. If you do change code, it then needs another review. But what it will do is look at what was in the last zip file that was approved and look was what was in the one you uploaded, and it’ll actually create a diff on the website, which you and the reviewer can both see. So it makes it easy to see what was changed and make sure you’re not trying to sneak in anything nasty. Nice.

Martin Wimpress 29:22
So you’ve talked there about testing on multiple different versions of go gnome? Does this imply that it’s wedged to known published versions, your extension won’t automatically roll over to whatever the next version of genome is and work there? Unless you specifically say it’s supported on that version? Or is that problem solved now?

Mark Johnson 29:46
I think when the next version of gnome comes out, I will have to update my metadata file to say it supports it for you to be able to instal it through the installation mechanisms you could I believe still down Load the zip file from the website and just plunk it in the right directory and it’ll run, I think. But yeah, your metadata has to specify which versions of GNOME Shell are supported, right? I don’t actually foresee any year from what from the experience I’ve had, I don’t foresee any actual compatibility issues. Because I mean, my extension is quite basic, I can’t see what they would do that would break it horribly in just a, you know, an incremental release of gnome. But we shall see what’s this

Alan Pope 30:28
space in a future episode where Mark explains how he has to update his extension, because it broke in gnome 50. Yes.

Mark Johnson 30:35
And I have done a little bit of further development. So particularly something that I came across when I was testing in the VMs was the way that it formats the list of interfaces was basically based on the length of the name of the device at the interfaces. And if you had no device name or a short name for the interface, then you ended up with a really, really tiny slider to control the volume. It was basically a whatever space was left afterwards, which could be basically no space at all. So I did want it to make it so they were all the same size. And then whatever space was left was sort of filled in between sort of short names and long names and so on. I didn’t quite manage to do that I did manage to make it so that they will be at least 200 pixels wide. But they might be wider than that. It turns out, as I found before developing no extensions isn’t terribly easy. And even as you know, I approach this from the mindset of well, it’s JavaScript and CSS. I’m a web developer for a living. This should be easy, right? But actually working out how the all of the elements next to each other sit and how they’re styled isn’t easy. There is a thing called Looking Glass, which lets you sort of Inspect Elements. But doing that on elements within a menu isn’t easy. either. I had to instal another name extension. And even though I found it difficult to get the information I needed, so I basically got it working well enough and left it ship it. Yes. So with that, where it is, for my purposes, I’m now going to call it feature complete, and say I’m done with developing no extensions for the time being. And so

Alan Pope 32:11
people can file issues where they have no,

Mark Johnson 32:15
you’re welcome to file issues on my GitHub, if you can submit a patch that actually shows me how you’re supposed to do things then even better.

Alan Pope 32:22
I like how I submitted a patch and you didn’t know I mentioned it and you’re like, oh, did you and it was a very simple patch. That was inconsequential. Yes. Thank you for that. No worries. No worries.

Martin Wimpress 32:33
Well, congratulations on publishing your extension mark. Well done you Yeah, well done. Thank you.

Show Notes

In this episode:

You can send your feedback via or the Contact Form. If you’d like to hang out with other listeners and share your feedback with the community you can join:

If you enjoy the show, please consider supporting us using Patreon or PayPal. For $5 a month on Patreon, you can enjoy an ad-free feed of Linux Matters, or for $10, get access to all the Late Night Linux family of podcasts ad-free.


Alan Pope
Mark Johnson
Martin Wimpress