I fully support this correction, and I’m glad I know more than I did before. Thanks!
- 2 Posts
- 125 Comments
NixOS (and GuixSD) is a whole operating system. But base guix and Nix is a package manager that you can install into any existing distro and use for as many or as few packages as you want.
So you can give it a shot in roughly no time, is what I’m saying.
The main difference between the full system ones and the package manager ones is obviously that it manages system level packages and the kernel, but also that they have configuration systems setup to run daemons and manage system config. But other than that it’s just the same paradigm as the package manager version.
Yeah! I was just coming here to recommend GuixSD or NixOS! Not because they’re normal, but because they’re not, and you have an opportunity to screw around 😅
Fedora and Debian are different but also pretty similar. Arch or Gentoo are more different. The atomics like bazzite and silverblue are even more different. And then there’s NixOS and GuixSD that are basically a completely different paradigm of how to setup a system. And that might be frustrating if it doesn’t work for you, but as a test computer go wild! Heck, try NixOS and GuixSD to experience their differences from each other!
The only other thing I might recommend for a challenge is something like Linux From Scratch where you don’t have any distro and you just build everything yourself. Definitely not recommended for normal people! It’s a project rather than something you can just try out for a weekend. And it may be frustrating, who knows. But if you’re into that kind of thing it may be enlightening!
Listen, I use guix so I’m not against you, but claiming that Guile, or even any scheme / lisp, is a transferable skill is a stretch 😛
As a software developer for 20 years, configuring guix is the only time I’ve encountered guile. And the only time I’ve used any kind of lisp is when I forced myself to during a coding challenge or advent of code thing, just for interest’s sake.
So again, I know what you’re saying, but for me, deep in the industry, guile might as well be a bespoke language for configuring guix 😅
All of her facial features are a bit bigger on the left, like her nose. I wonder if it’s a focal length thing like this dude?
Yeaaaaaaah, I wasn’t sure whether or not to put that somewhere or not, and eventually decided not. I devalued all env vars, which I would feel like I had to move up to get into the PATH. I love the path, and I do agree with you that is important for understanding how the system really works, and how you can add your own commands, but I guess I figure that’s a good Shell 201. For someone who wants to start using it, and isn’t sure what a grep is or why a cat is involved, I figure they’re not yet primed to care where these things live on their disk.
But soon after, for sure! And obviously others can disagree with me.
Before you get too lost, I want to write a tiny intro:
The terminal (also called shell and sometimes command prompt, even though these are technically different things) is a place where you run commands.
If you open one right now and type
ls(that is a lower case L), and then hit enter, it will list the files in your current folder. And it spits that out as text, which will be important later. So that’s the gist,lsis a program that does something, and you type the name of it to run it, and it outputs its result as text.Most commands have “flags”, which are options you give it when you run it.
ls -lislsrun with the “l” flag (also lower case L). If you run that you’ll see it lists more information per file this time. The mnemonic here is “l for long”. There are lots of flags, and you can usually combine them with a single dash, sols -lthis the same asls -l -t -h, which lists extra data, sorts by time, and uses human readable units like “3GB” instead of 3096432764 bytes.There are also “long flags” that start with two dashes by convention. These would look like
ls -l --time --human-readablewhich does the same thing as before, but is more readable but less compact. Long options don’t combine the way short options do, so you need to separate them with spaces.Some flags need values. Like
ls -l --sort sizewhich is usually the same asls -l --sort=sizebut confusingly not the same asls -l --sort = size(note the spaces) which makes sense if you know how these things work, but for now you just need to accept.Commands also have “arguments”, which are not flags. Sometimes also called “parameters”. So for
lsup until now we’ve been just listing the current folder over and over, butlscan list any folder, likels Documentsorls Downloads, and that can be combined with flags, usually before the arguments, likels -lth Downloads.Okay, so that’s flags and arguments, but you may be wondering how do you know what flags are available and what they do? Two main options!
The first is called a “man page”, man being short for manual. Man itself is a command that opens essentially instructions for a command, in the terminal itself, and you can use the arrow keys to go up and down and “q” to quit. Try
man lsto see what is it’s got for you. You usually don’t need to read it to to bottom and understand everything, you normally just go looking for something in particular. You can also use/in man to search for something, like/sortto look for the word sort. And thennandNgo forward and back searching for the next and previous hit for that search. Alsoman -k searchwill search through the man pages looking for things that match, in this case, the term “search” and list you commands. You may want that for being like “there’s gotta be a way to do this, but I don’t know what the command is!”. Also man pages are sorted into sections, and contains more than just commands. So you only care a out the things in section 1 for now.The second way to get help is that most commands, but not all, will have a
-hor--helpflag that tells them to list their own help as output instead of what they normally do. Sols --helplists the options it supports.Quoting! You may have noticed the shell is sensitive to spaces. So imagine you had a folder with a space in the name. If you ran
ls My Folder, it would break that into two arguments,MyandFolder, and would try to find you the contents of both of those two folders, which would fail because they don’t exist! So to fix that we have two options: quoting and escaping. You can wrap it in quotes likels "My Folder"to tell the shell “this is all one unit, don’t break it up”, or you can “escape” the space by putting a backslash before it, likels My\ Folderto tell it “this next space isn’t a splitting one, so please include it in the argument”. The backslash won’t be there by the timelssees it, it’s just telling the shell how to split the arguments.And then pipes! Pipes are the killer feature of the shell, as they allow you to take the output of one command and make it the input of the next. And some commands are built with this in mind. Like
grep, which can search its input for things that match the pattern given as its argument. Likels Downloads | grep pdf, which will take the list of files we’re used to seeinglsoutput to us, and instead feed that togrepwhich will filter it down to just the pdfs. There’s a lot you can do with these pipelines, because you could then take the output ofgrepand pipe it to something else to further process it, etc.So that’s nowhere near everything, not even close, but it’s hopefully enough to be able to wander around the big wide world and know what the heck people are talking about, and at least how to read what you’re seeing.
Quick note! The command
rmmeans remove. It deletes files, and it doesn’t use a trash can or anything, they’re just gone. So be very careful with that one! And if some jackass out there tries to get you to runrm -rf /or some equivalent, DON’T DO IT. That stands for “remove” with the flags “recursive”, which means descend into child folders and keep going, and “force” which means delete things even if you shouldn’t. Then it has the argument of “/” which is the root of your filesystem, meaning a recursive operation on that will effect every file on your computer. So essentially this command deletes all files on your machine. Bad. 😅Here’s some quick notes to give words to other things you might see and have trouble looking up!
ls $HOME: the thing after theis an “environment variable”, which is some value your shell has stored and allows you to inject into the command. You can run theenvcommand to see what variables there currently areecho blahis a command that just outputs its args (argument is such a long word). It’s useful for injecting words into a pipeline, or outputting environment variables, likeecho $HOMEls ~/Pictures: The “tilde” is just a shortcut for your home folder, so it’s actually the same asls "$HOME/Pictures", but it’s so common to do things relative to your homedir, that it’s a shortcut.ls | less: the less command is great, because it takes its input and presents it in an interactive scrollable thing sometimes called a “pager”. This is actually whatmanuses to present its pages, so the same arrow keys andqapplies, but you can take any output and put it inlessls `echo Documents`orls $(echo Documents)are two equivalent ways of running a command in a subshell, and then having the result be itself and argument for the outer command. Soechospits out “Documents” as its output, but not to us. That output is then an argument tols, which just runs likels Documents. This is different than a pipe, but is a other way commands can be linked together to form larger units. The first one is called “back-ticks” by the way.sudo whoami:sudois a command that “does” something as “super user”. S U DO. It’s used to escalate your privileges. So maybe a normal user can’t install packages, butsudo whatevercan. The sudo command just asks your password and gets you access, the runs the rest of the command as-is. You’ll see this a lot in instructions people give.
I think that’s enough to get off the ground? Good luck!
psycotica0@lemmy.cato
Linux@programming.dev•Linux 6.19 Gets Rid Of The Kernel's "Genocide" Function
2·2 days agoThe world tells me I’m white, but if I had to name my skin I’d say it’s pretty clearly pink 😛
psycotica0@lemmy.cato
Linux@programming.dev•Linux 6.19 Gets Rid Of The Kernel's "Genocide" Function
442·3 days agoI know it doesn’t matter, and is fully a side issue to this post, but I hate that “blacklist” gets brought into this. It’s never been used to be “a list of black people” or something; that wasn’t the original meaning, and that’s not the modern intention. It’s just a word that sounds like maybe it could have been racist in origin, but it wasn’t. And that one makes me grumpy just as an annoying word person.
The real hot take was that we used the term black and white for people at all! If we could go back to the past and make it so we call it, like, Affo and Euro or something, whatever, it would have cleared up a lot of unrelated term confusion.
I mean, if we could go back and change things there’s maybe some other stuff that would be more important to change… but among the changes I would make are those!
psycotica0@lemmy.cato
Selfhosted@lemmy.world•How to integrate user-compiled docker services with Dockge?English
31·4 days agoI might even recommend naming it or tagging it with your name or something similarly identifiable, like ‘local/whatever’ so that 18-month-from-now-you will remember you built this one locally and to update it yourself from source, rather than being like “where the hell did this come from and why can’t I find it now!? Did they remove the repo? Why!?”
psycotica0@lemmy.cato
Selfhosted@lemmy.world•How to integrate user-compiled docker services with Dockge?English
5·4 days agoI’ll admit I don’t use dockge, so it’s possible I’m misunderstanding…
But I think if you have a source folder on the box, separate from the one you keep your compose files in, you can run:
docker build -t someName:someVersion .and that will build the image. Then in your normal docker compose folder you just specify the image as matching whatever you built it as, and docker won’t pull images it already has, so it’ll just use the one you already built.
So yeah this source folder is different from the compose folder, but you don’t have source folders for all the stuff you didn’t build, so this shouldn’t really be that different. And the compose part doesn’t care where the images came from once you have them.
Yeah, I think this person thinks the word “funicular” is just an old word for train or trolley. Imagine being them… so sad…
I think the classic answer would be Mailman. But I hope someone else has a better answer 😛
psycotica0@lemmy.cato
Showerthoughts@lemmy.world•Transliterated country names into Chinese Language use pre-existing characters that already has its own meaning, therefore native Chinese speakers have a subconcious impression based on country names.
9·4 days agoFor sure, and the Pacific Ocean is vast. So you go East and find Japan, and then for a long time it’s understood that there’s nothing off Japan’s east coast, and they’re the eastern edge of the world. So they’re the land of the rising sun. Seems fair!
The “where I live” part is key. Because very likely this person is in SF, where they cannot buy a luxurious house cash with that money, and where cost of living eats surprisingly far into that stupid high number.
But notably, this is why all the normal people who don’t make a half million dollars a year can’t live in SF! 😅
psycotica0@lemmy.cato
Programmer Humor@programming.dev•When you have to checkout the master branch
30·5 days agoI always assumed the name was more of a reference to audio Master Recordings.
It’s the original tapes or whatever that all copies are derived from. It’s also where the term “remastering” comes from, as in “we went in and rebuilt a new master from the individual tracks, and this is the new master now”, versus just making another copy of the master for a re-release.
Yeah, typically per year. And usually it’s called Total Compensation because some of it is in salary, some in stock, some in stock options, sometimes even some kinds of perks, etc.
So all of that gets balled up into Total Compensation, which is different than annual salary
psycotica0@lemmy.cato
Technology@lemmy.world•I Went All-In on AI. The MIT Study Is Right.English
107·6 days agoI can least kinda appreciate this guy’s approach. If we assume that AI is a magic bullet, then it’s not crazy to assume we, the existing programmers, would resist it just to save our own jobs. Or we’d complain because it doesn’t do things our way, but we’re the old way and this is the new way. So maybe we’re just being whiny and can be ignored.
So he tested it to see for himself, and what he found was that he agreed with us, that it’s not worth it.
Ignoring experts is annoying, but doing some of your own science and getting first-hand experience isn’t always a bad idea.
I’ve played a bunch of Valheim with friends, but I can’t do it by myself. The openness is cool, but I can’t grind, so any kind of survival or crafting game becomes tedious so fast.
It seems like fun when other people do it, but it just doesn’t happen for me. Oh well!





😛
I mean, pushing pennies up my nose is a transferable skill in that I could push pennies up anyone else’s nose, and I could even make a whole TV career out of a show where I push pennies up people’s noses on the street.
So I’ll instead amend my statement to say that guile isn’t a common or often sought after skill. 😉