Neovim in Dev Containers With Nix for Arm & Mac M1, M2, M3
Read full transcript 13 segments
-
hello good people of YouTube my name is hello good people of YouTube my name is Misha I'm a freelance devops engineer Misha I'm a freelance devops engineer Misha I'm a freelance devops engineer and my last video on how to use neovim and my last video on how to use neovim and my last video on how to use neovim with Dev containers has been doing quite with Dev containers has been doing quite with Dev containers has been doing quite well it has gotten 5.2k views and many well it has gotten 5.2k views and many well it has gotten 5.2k views and many of the comments were asking about my of the comments were asking about my of the comments were asking about my Nick setup so in the video I hinted that Nick setup so in the video I hinted that Nick setup so in the video I hinted that when running Dev containers on my arm when running Dev containers on my arm when running Dev containers on my arm Mac it didn't work it didn't this setup Mac it didn't work it didn't this setup Mac it didn't work it didn't this setup that I created didn't work when I was that I created didn't work when I was that I created didn't work when I was running them directly on my RAC and and running them directly on my RAC and and running them directly on my RAC and and I found a way to solve this by using the I found a way to solve this by using the I found a way to solve this by using the Nyx package manager so if that's Nyx package manager so if that's Nyx package manager so if that's interesting to you stay tuned I'm going interesting to you stay tuned I'm going interesting to you stay tuned I'm going to explain everything about it um so why to explain everything about it um so why to explain everything about it um so why won't this work well if you go to the won't this work well if you go to the won't this work well if you go to the Brew Brew Brew documentation here it says that arm is documentation here it says that arm is documentation here it says that arm is unsupported so you you can't run arm on unsupported so you you can't run arm on unsupported so you you can't run arm on you can't run home brew on Linux on arm you can't run home brew on Linux on arm you can't run home brew on Linux on arm you can run Brew on Mac OS on arm but you can run Brew on Mac OS on arm but you can run Brew on Mac OS on arm but not in Linux so when you're using a Dev not in Linux so when you're using a Dev not in Linux so when you're using a Dev container you are spinning up a Linux container you are spinning up a Linux container you are spinning up a Linux container on your Mac OS and therefore container on your Mac OS and therefore container on your Mac OS and therefore you are running within a Linux system on you are running within a Linux system on you are running within a Linux system on an arm chip and therefore you can't use an arm chip and therefore you can't use an arm chip and therefore you can't use Brew sorry if that's complicated but Brew sorry if that's complicated but Brew sorry if that's complicated but that's how that's what it is because I that's how that's what it is because I that's how that's what it is because I was just I had my my nice setup I was was just I had my my nice setup I was was just I had my my nice setup I was running it on my kubernetes cluster and running it on my kubernetes cluster and running it on my kubernetes cluster and my kubernetes cluster is just normal AMD my kubernetes cluster is just normal AMD my kubernetes cluster is just normal AMD uh 64 uh 64 uh 64 is just normal normal chips not arm
-
is just normal normal chips not arm is just normal normal chips not arm chips and then I was running my same Dev chips and then I was running my same Dev chips and then I was running my same Dev container on my Mac here using the container on my Mac here using the container on my Mac here using the docker provider and then did work so docker provider and then did work so docker provider and then did work so let's uh maybe I should explain a bit let's uh maybe I should explain a bit let's uh maybe I should explain a bit about providers in Dev pod so the devot about providers in Dev pod so the devot about providers in Dev pod so the devot CLI has this devot provider list and CLI has this devot provider list and CLI has this devot provider list and these are the the current providers I these are the the current providers I these are the the current providers I have configured in in Dev pod so you can have configured in in Dev pod so you can have configured in in Dev pod so you can have the docker provider and this is the have the docker provider and this is the have the docker provider and this is the kubernetes provider and this one points kubernetes provider and this one points kubernetes provider and this one points directly to my kubernetes home lab there directly to my kubernetes home lab there directly to my kubernetes home lab there are also providers for Azure for example are also providers for Azure for example are also providers for Azure for example where it will create a VM in Azure for where it will create a VM in Azure for where it will create a VM in Azure for you or or you have to point it to an you or or you have to point it to an you or or you have to point it to an existing VM and then your Dev pods run existing VM and then your Dev pods run existing VM and then your Dev pods run on that VM these are all different on that VM these are all different on that VM these are all different providers now my kubernetes provider is providers now my kubernetes provider is providers now my kubernetes provider is running on normal AMD chips so there I I running on normal AMD chips so there I I running on normal AMD chips so there I I had no problem but when I use the docker had no problem but when I use the docker had no problem but when I use the docker provider so I'm running the death pods provider so I'm running the death pods provider so I'm running the death pods on my local on my local on my local MacBook then it wouldn't work because MacBook then it wouldn't work because MacBook then it wouldn't work because Brew doesn't work and then I wasn't able Brew doesn't work and then I wasn't able Brew doesn't work and then I wasn't able to use neovim in my Dev container so I to use neovim in my Dev container so I to use neovim in my Dev container so I fixed it um I needed to fix this fixed it um I needed to fix this fixed it um I needed to fix this because sometimes I want to run because sometimes I want to run because sometimes I want to run environments that contain things that I environments that contain things that I environments that contain things that I don't want in my kubernetes cluster don't want in my kubernetes cluster don't want in my kubernetes cluster perhaps and I I was I wanted to have the perhaps and I I was I wanted to have the perhaps and I I was I wanted to have the freedom to be able to run these Dev pods freedom to be able to run these Dev pods freedom to be able to run these Dev pods with my DOT files on my Mac if I wanted
-
with my DOT files on my Mac if I wanted with my DOT files on my Mac if I wanted to so I I figured it out um I basically to so I I figured it out um I basically to so I I figured it out um I basically I needed a new way of installing neovim I needed a new way of installing neovim I needed a new way of installing neovim that's what it was all about but I also that's what it was all about but I also that's what it was all about but I also installed different packages so I needed installed different packages so I needed installed different packages so I needed a bit more like I could have written my a bit more like I could have written my a bit more like I could have written my whole like a a list for apt but I wanted whole like a a list for apt but I wanted whole like a a list for apt but I wanted something more generic that I could use something more generic that I could use something more generic that I could use in multiple containers well NYX had been in multiple containers well NYX had been in multiple containers well NYX had been recommended to me many times by many recommended to me many times by many recommended to me many times by many people they they said oh you will really people they they said oh you will really people they they said oh you will really like Nicks because they see my videos like Nicks because they see my videos like Nicks because they see my videos they see how I approach things and when they see how I approach things and when they see how I approach things and when I saw this I was immediately super I saw this I was immediately super I saw this I was immediately super excited but I very purposely waited with excited but I very purposely waited with excited but I very purposely waited with going into Nyx because I knew this was going into Nyx because I knew this was going into Nyx because I knew this was going to be a huge Rabbit Hole so uh NYX going to be a huge Rabbit Hole so uh NYX going to be a huge Rabbit Hole so uh NYX is a tool for system configuration and is a tool for system configuration and is a tool for system configuration and package package package management and I I live streamed when I management and I I live streamed when I management and I I live streamed when I went into it you can find it on the went into it you can find it on the went into it you can find it on the YouTube channel I spent like 4 hours YouTube channel I spent like 4 hours YouTube channel I spent like 4 hours digging into nxs and and what it's all digging into nxs and and what it's all digging into nxs and and what it's all about and I'm yeah super impressed by it about and I'm yeah super impressed by it about and I'm yeah super impressed by it I think it's an amazing tool and an I think it's an amazing tool and an I think it's an amazing tool and an amazing approach to things I love the amazing approach to things I love the amazing approach to things I love the fact that you can create declarative fact that you can create declarative fact that you can create declarative environments you can basically have your environments you can basically have your environments you can basically have your whole OS in code and you can use the Nyx whole OS in code and you can use the Nyx whole OS in code and you can use the Nyx shell to just run a temporary shell to just run a temporary shell to just run a temporary environment with a few packages you want environment with a few packages you want environment with a few packages you want to try out and it will download the to try out and it will download the to try out and it will download the packages for you and then you can exit packages for you and then you can exit packages for you and then you can exit the shell and then everything is gone it
-
the shell and then everything is gone it the shell and then everything is gone it is it is amazing but I I so I I I went is it is amazing but I I so I I I went is it is amazing but I I so I I I went through the the learn I went into how to through the the learn I went into how to through the the learn I went into how to install it the first steps and how it install it the first steps and how it install it the first steps and how it all works and very quickly I was all works and very quickly I was all works and very quickly I was starting to get very lost in the weeds starting to get very lost in the weeds starting to get very lost in the weeds and like it like NYX has its own entire and like it like NYX has its own entire and like it like NYX has its own entire language it is an entire programming language it is an entire programming language it is an entire programming language and language and language and it can do so much more than what I it can do so much more than what I it can do so much more than what I actually needed it for right I what I actually needed it for right I what I actually needed it for right I what I needed needed needed was um a tool that I can give a list of was um a tool that I can give a list of was um a tool that I can give a list of packages that will install those packages that will install those packages that will install those packages in Linux container environments packages in Linux container environments packages in Linux container environments that's what I needed to have and I that's what I needed to have and I that's what I needed to have and I really wanted to dive deeper into this really wanted to dive deeper into this really wanted to dive deeper into this and I was getting really distracted but and I was getting really distracted but and I was getting really distracted but and then in those moments I need to and then in those moments I need to and then in those moments I need to reset I need to EST Lish like what what reset I need to EST Lish like what what reset I need to EST Lish like what what am I actually trying to achieve here am I actually trying to achieve here am I actually trying to achieve here because this whole config management because this whole config management because this whole config management thing can be such a deep Rabbit Hole so thing can be such a deep Rabbit Hole so thing can be such a deep Rabbit Hole so I did the tutorial I I I did realize I did the tutorial I I I did realize I did the tutorial I I I did realize that the documentation is very dense that the documentation is very dense that the documentation is very dense it's it's pretty difficult to find what it's it's pretty difficult to find what it's it's pretty difficult to find what you need actually uh I started to get you need actually uh I started to get you need actually uh I started to get lost in the lost in the lost in the weeds but luckily I managed to find weeds but luckily I managed to find weeds but luckily I managed to find after a lot of digging and sort of after a lot of digging and sort of after a lot of digging and sort of fumbling around I found this build an fumbling around I found this build an fumbling around I found this build an environment enironment in I I will I environment enironment in I I will I environment enironment in I I will I will put the link in the description for will put the link in the description for will put the link in the description for this but this was sort of buried deep in
-
this but this was sort of buried deep in this but this was sort of buried deep in the documentation there was no the documentation there was no the documentation there was no clear there there was no clear way for clear there there was no clear way for clear there there was no clear way for me to search how to install a list of me to search how to install a list of me to search how to install a list of packages with NYX but I figured it out packages with NYX but I figured it out packages with NYX but I figured it out so this is how you can install a list of so this is how you can install a list of so this is how you can install a list of packages with NYX and this is what I packages with NYX and this is what I packages with NYX and this is what I implemented in my devbot setup so I will implemented in my devbot setup so I will implemented in my devbot setup so I will um I will show you how I've done um I will show you how I've done um I will show you how I've done it it it um I will go into this lab that I um I will go into this lab that I um I will go into this lab that I created this this directory I created in created this this directory I created in created this this directory I created in my my lab repo this contains a Dev my my lab repo this contains a Dev my my lab repo this contains a Dev container. Json so I'm just going to container. Json so I'm just going to container. Json so I'm just going to open that and here we see that I am it's open that and here we see that I am it's open that and here we see that I am it's a very simple one I am a very simple one I am a very simple one I am basically just pulling in a base Debian basically just pulling in a base Debian basically just pulling in a base Debian Dev container image from Dev container image from Dev container image from Microsoft and I am pulling in a Dev Microsoft and I am pulling in a Dev Microsoft and I am pulling in a Dev container feature that installs the Nyx container feature that installs the Nyx container feature that installs the Nyx package manager for me that's all I'm package manager for me that's all I'm package manager for me that's all I'm doing in this Dev container so let me doing in this Dev container so let me doing in this Dev container so let me just show you like this when you go to just show you like this when you go to just show you like this when you go to Dev containers and then Dev containers and then Dev containers and then images this is these are all the base images this is these are all the base images this is these are all the base images that you can get for Dev images that you can get for Dev images that you can get for Dev containers and if you go to SRC here you containers and if you go to SRC here you containers and if you go to SRC here you see all these different Bas Debian BAS see all these different Bas Debian BAS see all these different Bas Debian BAS Ubuntu there's go for go environments Ubuntu there's go for go environments Ubuntu there's go for go environments Java Python and so forth so this is Java Python and so forth so this is Java Python and so forth so this is where you get the base images from I
-
where you get the base images from I where you get the base images from I picked the Bas Debian and here they will picked the Bas Debian and here they will picked the Bas Debian and here they will show you how to use this image this this show you how to use this image this this show you how to use this image this this is what I is what I is what I used so I'm just pulling in a a a Dev used so I'm just pulling in a a a Dev used so I'm just pulling in a a a Dev container image that con that has a container image that con that has a container image that con that has a certain set of features already baked in certain set of features already baked in certain set of features already baked in and then I'm adding these features NYX and then I'm adding these features NYX and then I'm adding these features NYX so let me show you that um let's see uh so let me show you that um let's see uh so let me show you that um let's see uh containers dodev SL features this is the entire dodev SL features this is the entire list of features that you can install in list of features that you can install in list of features that you can install in your Dev containers and if you then your Dev containers and if you then your Dev containers and if you then search for NYX then here you see there search for NYX then here you see there search for NYX then here you see there is a feature to install the Nyx package is a feature to install the Nyx package is a feature to install the Nyx package manager so that's that's all this does manager so that's that's all this does manager so that's that's all this does it spins up a a base Debian image and it it spins up a a base Debian image and it it spins up a a base Debian image and it installs the dev container. Json it's it installs the dev container. Json it's it installs the dev container. Json it's it installs the Nyx pack manager so if I installs the Nyx pack manager so if I installs the Nyx pack manager so if I now go uh Dev pod now go uh Dev pod now go uh Dev pod up here so here's the command I'm going up here so here's the command I'm going up here so here's the command I'm going to use uh we will write devot up dot so in use uh we will write devot up dot so in the current directory provider Docker so the current directory provider Docker so the current directory provider Docker so I'm not using the kubernetes provider I'm not using the kubernetes provider I'm not using the kubernetes provider I'm using my the provider that's running I'm using my the provider that's running I'm using my the provider that's running on my Mac OS on my Mac OS on my Mac OS here and I'm pointing it to myt files here and I'm pointing it to myt files here and I'm pointing it to myt files devp pod. git devp pod. git devp pod. git repository now on my system I have repository now on my system I have repository now on my system I have configured this to be the default I configured this to be the default I configured this to be the default I don't have to do this every time I can don't have to do this every time I can don't have to do this every time I can just write this bit here until provider
-
just write this bit here until provider just write this bit here until provider Docker but I'm just doing it for the Docker but I'm just doing it for the Docker but I'm just doing it for the sake of completion here so when I run sake of completion here so when I run sake of completion here so when I run this it is going to create a Dev this it is going to create a Dev this it is going to create a Dev container and you see that it's container and you see that it's container and you see that it's installing now it's installing uh NYX installing now it's installing uh NYX installing now it's installing uh NYX packages you packages you packages you see now it it's installing NYX packages and it takes a a little moment but now and it takes a a little moment but now it's already done it's already done so it's already done it's already done so it's already done it's already done so if I do death pod LS now here I see my if I do death pod LS now here I see my if I do death pod LS now here I see my NYX demo def pod so defp pod NYX demo def pod so defp pod NYX demo def pod so defp pod sh and then NYX demo now I'm in sh and then NYX demo now I'm in sh and then NYX demo now I'm in my def contain now I'm in my my my defp my def contain now I'm in my my my defp my def contain now I'm in my my my defp in my def container that contains all of in my def container that contains all of in my def container that contains all of the packages that I have set up in my in the packages that I have set up in my in the packages that I have set up in my in my DOT file repo so for example you can my DOT file repo so for example you can my DOT file repo so for example you can see I'm in workspaces NYX demo and if I see I'm in workspaces NYX demo and if I see I'm in workspaces NYX demo and if I do cat at C OS release I'm running on do cat at C OS release I'm running on do cat at C OS release I'm running on Debian G Linux if I do that in a new Debian G Linux if I do that in a new Debian G Linux if I do that in a new shell here shell here shell here ccos release you won't get anything so ccos release you won't get anything so ccos release you won't get anything so I'm on Mac OS so I'm on Mac OS so I'm on Mac OS so here I'm in Debian and for example if I here I'm in Debian and for example if I here I'm in Debian and for example if I do do do rgi U rgi U rgi U then rip crab is being activated so like then rip crab is being activated so like then rip crab is being activated so like the the normal base Debian image does the the normal base Debian image does the the normal base Debian image does not contain rip crab but because I have not contain rip crab but because I have not contain rip crab but because I have that in my DOT files rip crab is already
-
that in my DOT files rip crab is already that in my DOT files rip crab is already here FCF is here and of course Vim is here FCF is here and of course Vim is here FCF is here and of course Vim is here or neovim if I do V now it will here or neovim if I do V now it will here or neovim if I do V now it will install my entire do my entire setup install my entire do my entire setup install my entire do my entire setup it's going to set up my Vim editor it's going to set up my Vim editor it's going to set up my Vim editor exactly as I like it and I can customize exactly as I like it and I can customize exactly as I like it and I can customize that using the lazy viim extras so how that using the lazy viim extras so how that using the lazy viim extras so how does this look like in that that dot does this look like in that that dot does this look like in that that dot files repo so here is this uh repo that files repo so here is this uh repo that files repo so here is this uh repo that I have do files Dev pod and this I have do files Dev pod and this I have do files Dev pod and this contains a few things but I Will Show contains a few things but I Will Show contains a few things but I Will Show You by using Bim so so do files files defp so here defp so here defp so here first of all we have my envm directory first of all we have my envm directory first of all we have my envm directory so that contains all of the so that contains all of the so that contains all of the configuration for for envm I have some configuration for for envm I have some configuration for for envm I have some scripts that I like to use there is the scripts that I like to use there is the scripts that I like to use there is the setup script but most importantly here setup script but most importantly here setup script but most importantly here is the config ni so let's check that out is the config ni so let's check that out is the config ni so let's check that out config n and this is what we saw in the config n and this is what we saw in the config n and this is what we saw in the documentation earlier over here which I documentation earlier over here which I documentation earlier over here which I will copy for you so this is build an will copy for you so this is build an will copy for you so this is build an environment this is what you uh Define environment this is what you uh Define environment this is what you uh Define here and here I just Define all of the here and here I just Define all of the here and here I just Define all of the packages that I want to have available packages that I want to have available packages that I want to have available in my Dev container at all times so I in my Dev container at all times so I in my Dev container at all times so I want go to be there Starship for my want go to be there Starship for my want go to be there Starship for my prompt FD rip grab lazy git Cube C K9s
-
prompt FD rip grab lazy git Cube C K9s prompt FD rip grab lazy git Cube C K9s all of that stuff I want to have in my all of that stuff I want to have in my all of that stuff I want to have in my Dev container at all times Dev container at all times Dev container at all times so then in my setup script here I'm so then in my setup script here I'm so then in my setup script here I'm doing a couple of things different ly doing a couple of things different ly doing a couple of things different ly from the previous one I showed again I'm from the previous one I showed again I'm from the previous one I showed again I'm creating the xtg config home. home. creating the xtg config home. home. creating the xtg config home. home. config and in there I'm creating a NYX config and in there I'm creating a NYX config and in there I'm creating a NYX packages packages packages directory I of course create my Nim directory I of course create my Nim directory I of course create my Nim directory and Sim link that to the dot directory and Sim link that to the dot directory and Sim link that to the dot files I set up my bachor C but here you files I set up my bachor C but here you files I set up my bachor C but here you see that I am creating this config ni see that I am creating this config ni see that I am creating this config ni file in the xtg config home/ n file in the xtg config home/ n file in the xtg config home/ n packages and then after after I've set packages and then after after I've set packages and then after after I've set up the file the files I just run one up the file the files I just run one up the file the files I just run one command NYX command NYX command NYX nfia NX packages. my nfia NX packages. my nfia NX packages. my packages that's it that's all it does so packages that's it that's all it does so packages that's it that's all it does so this command takes this config n and this command takes this config n and this command takes this config n and installs all of the packages that I installs all of the packages that I installs all of the packages that I Define in that file super Define in that file super Define in that file super simple so again config n this contains a simple so again config n this contains a simple so again config n this contains a list of files that I have or list of list of files that I have or list of list of files that I have or list of packages that I want to install and then packages that I want to install and then packages that I want to install and then in my setup script I put that file in in my setup script I put that file in in my setup script I put that file in the right place and I run this command the right place and I run this command the right place and I run this command to install all of the packages in the to install all of the packages in the to install all of the packages in the list very simple and and very similar to list very simple and and very similar to list very simple and and very similar to what I was doing with what I was doing with what I was doing with Brew so um why do this why not just do
-
Brew so um why do this why not just do Brew so um why do this why not just do uh why even bother with Dev containers uh why even bother with Dev containers uh why even bother with Dev containers why not why not just go for NX all the why not why not just go for NX all the why not why not just go for NX all the way well there are couple of things um way well there are couple of things um way well there are couple of things um first of all NYX seems to have a very first of all NYX seems to have a very first of all NYX seems to have a very high learning curve it it seemed I I high learning curve it it seemed I I high learning curve it it seemed I I spent four hours on it and this is what spent four hours on it and this is what spent four hours on it and this is what I came up with and still I don't really I came up with and still I don't really I came up with and still I don't really I don't really grasp um the refined more I don't really grasp um the refined more I don't really grasp um the refined more refined elements of of Nyx so high refined elements of of Nyx so high refined elements of of Nyx so high learning curve and secondly def learning curve and secondly def learning curve and secondly def containers have a specification so if I containers have a specification so if I containers have a specification so if I go to Def containers go to Def containers go to Def containers here Dev containers have a specification here Dev containers have a specification here Dev containers have a specification this is defined by Microsoft you can see this is defined by Microsoft you can see this is defined by Microsoft you can see here by Microsoft but it has a here by Microsoft but it has a here by Microsoft but it has a specification and therefore it is going specification and therefore it is going specification and therefore it is going to be applicable in a broad range of to be applicable in a broad range of to be applicable in a broad range of environments NYX environments NYX environments NYX OS you're not going likely to find NYX OS you're not going likely to find NYX OS you're not going likely to find NYX OS on in a large uh Enterprise or OS on in a large uh Enterprise or OS on in a large uh Enterprise or corporate environment right Dev corporate environment right Dev corporate environment right Dev containers however like vs code is now containers however like vs code is now containers however like vs code is now moving towards Dev containers completely moving towards Dev containers completely moving towards Dev containers completely so so so there's you can really see that vs code there's you can really see that vs code there's you can really see that vs code is going to be optimized for use with is going to be optimized for use with is going to be optimized for use with Dev Dev Dev containers which means that Dev containers which means that Dev containers which means that Dev containers are probably here to stay and containers are probably here to stay and containers are probably here to stay and that it's going to have a wide set of
-
that it's going to have a wide set of that it's going to have a wide set of applications it has a wide area where applications it has a wide area where applications it has a wide area where you can use it in it is much more likely you can use it in it is much more likely you can use it in it is much more likely that you are going to be working in a that you are going to be working in a that you are going to be working in a team team team where they are working with Dev where they are working with Dev where they are working with Dev containers and therefore the def containers and therefore the def containers and therefore the def container. Json instead of a full NX OS container. Json instead of a full NX OS container. Json instead of a full NX OS environment environment environment so my point is like if I'm working on a so my point is like if I'm working on a so my point is like if I'm working on a project and if I if I if I'm working on project and if I if I if I'm working on project and if I if I if I'm working on a say I'm I'm I start coding and I I a say I'm I'm I start coding and I I a say I'm I'm I start coding and I I want I want to be working on a project I want I want to be working on a project I want I want to be working on a project I want to be using that with my regular my want to be using that with my regular my want to be using that with my regular my own set of dot files in an easy manner own set of dot files in an easy manner own set of dot files in an easy manner now all I need for that project is to now all I need for that project is to now all I need for that project is to request to add this feature to the dev request to add this feature to the dev request to add this feature to the dev container. Json and I can pull in my container. Json and I can pull in my container. Json and I can pull in my entire opinionated way of running neovim entire opinionated way of running neovim entire opinionated way of running neovim in my Dev container with all of my in my Dev container with all of my in my Dev container with all of my configuration all the packages that I configuration all the packages that I configuration all the packages that I want I just need to ask submit a pull want I just need to ask submit a pull want I just need to ask submit a pull request add this feature into the dev request add this feature into the dev request add this feature into the dev container Json and everything container Json and everything container Json and everything works that's much more simp simple than works that's much more simp simple than works that's much more simp simple than U coming in and saying no I I I think we U coming in and saying no I I I think we U coming in and saying no I I I think we should move to Nix OS and you have to should move to Nix OS and you have to should move to Nix OS and you have to explain to everybody that everybody explain to everybody that everybody explain to everybody that everybody should start using nixos and nobody's should start using nixos and nobody's should start using nixos and nobody's want going to want to do it and it's want going to want to do it and it's want going to want to do it and it's going to be a super annoying discussion going to be a super annoying discussion going to be a super annoying discussion to have so this way you sort of to have so this way you sort of to have so this way you sort of circumvent that so if you are if you are circumvent that so if you are if you are circumvent that so if you are if you are going
-
going going to if you want to if you want your to if you want to if you want your to if you want to if you want your environment to be compatible with many environment to be compatible with many environment to be compatible with many different places if you want to use your different places if you want to use your different places if you want to use your neovim everywhere then I think this is a neovim everywhere then I think this is a neovim everywhere then I think this is a good route to go instead of going all in good route to go instead of going all in good route to go instead of going all in on NX West that's basically why I I do on NX West that's basically why I I do on NX West that's basically why I I do it and I think containers in general it and I think containers in general it and I think containers in general have a wider uh mode of application than have a wider uh mode of application than have a wider uh mode of application than than than than nixos that doesn't mean that I am not nixos that doesn't mean that I am not nixos that doesn't mean that I am not going to go deeper into nixos at some going to go deeper into nixos at some going to go deeper into nixos at some point I do want to build a full uh point I do want to build a full uh point I do want to build a full uh system sometime I I really enjoyed my system sometime I I really enjoyed my system sometime I I really enjoyed my Arch Linux build the when I was daily Arch Linux build the when I was daily Arch Linux build the when I was daily driving Linux and I am very intrigued by driving Linux and I am very intrigued by driving Linux and I am very intrigued by NYX so I I will do a full build of my NYX so I I will do a full build of my NYX so I I will do a full build of my own and just try it out but for now what own and just try it out but for now what own and just try it out but for now what I'm using it for is a simple package I'm using it for is a simple package I'm using it for is a simple package manager in my Dev containers and there manager in my Dev containers and there manager in my Dev containers and there is the Nyx OS packages repository so if is the Nyx OS packages repository so if is the Nyx OS packages repository so if I search for flux here then here you see I search for flux here then here you see I search for flux here then here you see flux CD there's the CLI and then I just flux CD there's the CLI and then I just flux CD there's the CLI and then I just add this to my list of packages and it's add this to my list of packages and it's add this to my list of packages and it's available to my to me in my Dev available to my to me in my Dev available to my to me in my Dev container I can also do this uh in in my container I can also do this uh in in my container I can also do this uh in in my Dev container there is dot Dev container there is dot Dev container there is dot files and if I go in my config n and do files and if I go in my config n and do files and if I go in my config n and do files and let's say I want to add files and let's say I want to add files and let's say I want to add another package so what package shall we
-
another package so what package shall we another package so what package shall we add uh let's see does it give any add uh let's see does it give any add uh let's see does it give any popular packages well let's I have no popular packages well let's I have no popular packages well let's I have no idea what fluxes is but let's say we idea what fluxes is but let's say we idea what fluxes is but let's say we want to add want to add want to add fluxes all I need to do then is to just fluxes all I need to do then is to just fluxes all I need to do then is to just run my DOT files setup script again and then it's going to install again and then it's going to install what I have added to my list of what I have added to my list of what I have added to my list of packages super easy so this way I can packages super easy so this way I can packages super easy so this way I can also very quickly modify my environment also very quickly modify my environment also very quickly modify my environment from container to container and add from container to container and add from container to container and add packages that I only want in that packages that I only want in that packages that I only want in that container so it is a very versatile way container so it is a very versatile way container so it is a very versatile way of managing your config in containerized of managing your config in containerized of managing your config in containerized environments while still retaining the environments while still retaining the environments while still retaining the ability to use neim so that's my my my ability to use neim so that's my my my ability to use neim so that's my my my current solution now I can run my Dev current solution now I can run my Dev current solution now I can run my Dev pods on Mac OS on kubernetes on arm pods on Mac OS on kubernetes on arm pods on Mac OS on kubernetes on arm everywhere it works super well uh it's everywhere it works super well uh it's everywhere it works super well uh it's going to be my solution for the time to going to be my solution for the time to going to be my solution for the time to come but I am also always looking to come but I am also always looking to come but I am also always looking to improve so if you have further improve so if you have further improve so if you have further suggestions or things I should look into suggestions or things I should look into suggestions or things I should look into please let me know in the comments and please let me know in the comments and please let me know in the comments and let me know if you enjoyed this let me know if you enjoyed this let me know if you enjoyed this video all the best of luck with your video all the best of luck with your video all the best of luck with your devbot setup see you next time
Summary
This tech analysis explains a common issue with using Dev containers on ARM Macs where Homebrew is unsupported, preventing Neovim setups from working in Linux environments. The main takeaway is that the Nix package manager is presented as the solution to overcome these limitations and successfully run Dev containers on ARM architecture.