Moving to a Linux distro for dev
I'm a long time Windows user who has experience with WSL. Last year, I needed a laptop for university, and out of laziness, opted for a Macbook since, although they're expensive as hell, are reasonably reliable.
Since using the mac, I've absolutely fallen in love with it over Windows. Note that I refer to the non-iOS specific aspects. After not touching my desktop for several months, I now see that I absolutely hate Windows even more. I would like to move my desktop to a Linux system some time in the future. However, my education is limited, and so I'm here to ask for help.
Currently, I'm a student in Mathematics and Computer Science. But outside that, I am, for the most part, a programmer. I rarely game, but I would like the option for the rare occasion that I have the time to do so.
I've grown comfortably with the command line, through my in-depth knowledge of lower level knowledge is limited. So, I feel I'm comfortable enough to extend the possible domain of my options.
I would love to hear recommendations and suggestions. I'm also open to other options such as NixOS, but that would require some research to learn more, which is fine. I'm not doing this soon.
If you could provide any links and resources that I can follow to continue learning, especially if relevant to your suggestions, I would be deeply appreciative!
My Mac is the most Linux-like thing I've used for so long, and it's been so, so much easier to work with compared to Windows (I hate Windows PATH limitations so much).
Thanks, all ❤ 🐧
MacOS is a BSD distro, which shares most of the same cli commands with Linux (though certain overall functionality may differ by command).
I'd say stick to GNOME for desktop to start as it flows much more similarly to MacOS. I'd say Fedora 40 to avoid the current issues with Ubuntu 24 and derivatives. Should give you solid footing to figure out what you don't like and adapt accordingly. Maybe even try out a handful of distros via LiveCD before committing, up to you.
Re: Dual booting for gaming. Not even really necessary for 95% of all games now thanks to proton. The only hold outs are games with very aggressive anti-cheat installs that can't operate outside of Windows.
Thanks for the suggestions! I'll be sure to keep this in mind!
Seconding GNOME, it's beautiful and highly customizable!
dont start with nixos. it is not friendly. Ubuntu is probably the best/easiest starter distro. that or fedora. go with the most mainstream so you have the least friction. Later you will be trying all the distros for fun.
I was a physics student and going to have to say Ubuntu as well. I think looking at Mint and Pop are also nice picks. Besides Ubuntu being pretty good OOTB most online resources use it as an example; that is very valuable when still astudentt.
For your use case, maybe consider Asahi Linux for your Mac and a minimized windows for your desktop for gaming?
I didn't consider sideloading windows for gaming, but I do like that idea! That would allow me to avoid the need of wiping windows off my SSD. I can then just change up the partitioning.
If the MacBook is an Apple Silicon Mn processor one, Asahi is the obvious choice
For other cases
My first suggestion would be to try the distribution you used in WSL
Second would be Linux Mint, can't go wrong with either of Ubuntu edition or the Debian edition
Third would be OpenSUSE Tumbleweed. Though a rolling distribution, with easy rollback commands, any unusable state can easily be left behind
Welcome to the club :-)
In that case I would certainly toy (but maybe not daily drive) with Nix or NixOS. Its concept is stunning. For daily driving Linux it depends on your hardware (x86 or arm). Debian is rock solid as daily driver on x86. If you need some newer software you can use Flatpak or the Nix package manager, or use distrobox or toolbox though beware of its drawbacks. Another good choice is Arch Linux. Since a while the install iso comes with an installer so that you no longer have to read documentation. The Arch Linux wiki is very often a superb source of information. But depending on your hardware there's Asahi Linux : https://asahilinux.org
Debian might at least be worth a look. It's been around for ages and is incredibly stable. No, it's not bleeding edge, but there's always Debian Sid (unstable).
Even if you are going to do a little bleeding edge development Debian stable can be a good solid base to start from.
Use Trixie instead of Sid. With Sid you're getting new packages right as they come out of the oven. If Sid users don't get burned too badly, the packages go into Trixie two weeks later.
Take something with KDE Plasma. I have mine set up to work as close to Mac as possible (command key as the main modifier, all the Mac shortcuts for the window manager and KDE applications, top menu bar, dock, probably more). Took a bit to set up but now it doesn’t nearly throw me off as much anymore when switching between the two.
Fedora
It's not clear what device you want to install Linux on.
If it's an apple arm you're pretty much limited to what Asahi is doing (Fedora now afaik).
If it's a regular amd64, I'd suggest something more stable like MX, Mint, Suse leap, etc. You can use an alternative package manager to keep what you need fresh, but your base system won't change for years.
I'd maybe suggest starting first with nix and home-manager while you're still on macos. Do note that I haven't used it on mac, but the idea is for it to be cross platform. You can start adding your packages to the list, and have everything you need immediately when you start using Linux. That's going to be your best option for programming, but it's more difficult. This should help you out to get started
As for gaming, I wouldn't have high hopes on arm. You can use lutris to run windows games for example, but if your device also needs to emulate a different CPU architecture, it wont be happy. Docker had serious performance issues before they introduced arm base images.
I would say that you should check out Fedora as your first distro. Gnome is more like Mac than KDE (which is also great). Fedora is also built off Red Hat Enterprise Linux so it’ll will prepare you for server environments and your future career. You can learn bits of both at once.
I think it benefited my career to go in that direction. I (like everyone) distro-hopped and went through a phase where I customized everything and installed a new distro every few months. But if you learn the ins and outs of Fedora you’ll be well-positioned to manage RHEL and related servers. Debian is also a good choice for that, at least in the U.S.
And there’s nothing wrong with developing on a Mac while you use Linux for server stuff. Server level code will probably run on Linux but I found that using a Mac helped me when building front-end code because macOS devs tend to be design-forward. And don’t forget that you’re building something for other people. I barely use Windows but I try to revisit it every so often to see how the other half lives.
After getting used to the vanilla Gnome flow, at home and at work, even MacOS starts to feel a bit clunky.
Love the minimalism of Gnome with the stability of Debian.
The Mac hardware does limit the choice of distributions a bit. Besides that I can highly recommend Debian 12 as a rock solid base system with Nix as package manager to get latest and greatest software. Actually the nice thing is that you can use Nix package manager on any Linux distribution.
Hmm maybe I should look into using nix on Debian a bit, that does sound pretty nice. Is nix a decent replacement for the AUR?
I am not an Arch-user, but I would say so. At least Nix itself claims that their unstable channel is the largest and most up-to-date package repository currently followed by AUR. So yes, I think you can have best of both worlds - a rock solid base system with the newest software via Nix. It even gets better with Home Manager.
I'm running MX + nix unstable, and it's pretty great. Although it's got some annoying parts like nixGL, it's nothing compared to simply updating your systyem and it failing to boot.
It matters a lot if it is Apple silicon or Intel. If Apple, you want Asahi Linux for sure.
On Intel, you have a tonne of options. Pick the desktop environment you like and pick the distro after that. GNOME, KDE, and Cinnamon are your realistic DE choices.
COSMIC is looking really great but it is not quite ready.
I would personally stay away from both Ubuntu and Manjaro but most other choices are fine based on your preferences. Linux Mint is probably the best choice if you like Cinnamon.
I like EndeavourOS myself.
Running my nix config incl. dot files on multiple OS from wsl and Mac for shell env and paths specific coding envs via devenv to nixos on my workstation and server.
I started with home manager on wsl till I got comfortable and switched to nix full time in the run. Was a chore at first. Now, i do not want any other environment for coding. It just works and can replicate and sync all working environments with ease!
+1 for nix, but I wouldn't recommend it as a first distro
I recently started learning about dot files, but I'm yet to find a preferred way to go about it
Tbh home-manager is going to be overkill in most scenarios. A dotfile directory + git is going to be more than enough, and you can use stow to symlink everything.
I guess there are multiple working and proven ways. The above is the one which worked for me as a full time Principle in a 10000+ "shop" over years now. Whatever will work for you will be your preffered way.
Arch, OpenSUSE TW, and Debian Sid are pretty good. As a desktop/WM I'd recommend Hyprland, Plasma, or DWL. Hyprland and DWL take some time to set up and get used to though. GNOME is sort of a pain in the ass, so I wouldn't recommend it unless you use touch gestures a lot.
If you want to learn Linux, Arch is the perfect balance between ease of use and DIY aspects. It now comes with an installer, but installing it manually will teach you the basics of how Linux systems are built and configured. It also comes with amazing documentation that makes it relatively easy to setup and once you do that, it doesn’t require much tinkering or changing stuff in order to use it.
Nix is pretty hardcore as for a new user. If you’re ready to learn entire functional language to manage it effectively then go for it, but I’d recommend something more traditional for first steps.
If you want to game casually, well in this day and age gaming on Linux is pretty good with most games running just fine. There’s problem with some popular online multiplayer games due to anti-cheat systems, but other than that mostly everything runs well with Proton or Wine.
Keep in mind that MacOS is also different than Linux despite also being UNIX-like. On Mac it’s all controlled by Apple, so things generally play nicely together due to tight integration and centralized development. On Linux many components are independent pieces of software that also quite often have replacements and you get different combinations of those depending on which distro you pick. Don’t worry, it’s also standardized to some extent, and while it’s not necessarily straightforward, once you feel comfortable (and you don’t face any issue with drivers/hw support), it’s really nice to use.
The website https://linuxjourney.com/ is often recommended to new Linux users, for good reasons. Since you're already experienced in CS and WSL you'll find a lot of things you already know, but there's always things to learn for everyone in there. Cheers! ^^
My driver is MacOS but I use Linux for things like servers and hobby projects, so I check these threads just to keep up on what's happening in the space. I think people often recommend Mint for people who like MacOS, but I'm sure someone will correct me if I got that wrong.
Welcome to the club. It's pretty great.
If it is a newer Mac (Apple silicon), asahi is your only option that I know of. It is good but idle and sleep power management leave something to be desired. If not, I would recommend debian. It is stable, so you don't have to worry about an update breaking it right before a class or anything like that.
Aurora has a Developer Edition, it's a great system in general. It's based on Universal Blue, which is built on top of Fedora Atomic, giving you a very stable and reliable experience. It features the KDE Plasma desktop environment, but you can go with Bluefin, which is basically the exact same thing using GNOME.
For your desktop, I suggest you install Linux Mint (Edge edition, to make sure the newer kernel included there supports your hardware better). After installing it, right click on the panel, and install the 'Cinnamenu' applet (it's available for download from the window that opens when you click Applets). Then, place it where you want after enabling "panel editing", and then right click the new menu to customize it as you like. Cinnamenu is a more modern-looking menu than the default Mint, with larger icons. Please note that in June or July, there's going to be a brand new, major version of Mint. Think of Mint as how Windows should have been, a better version of it. This is my Linux Mint laptop: https://files.mastodon.social/media_attachments/files/112/253/256/932/509/491/original/6183bb790dcb8365.jpg
Now, if you want something that is closer to MacOS' look and feel, then you would need to install Gnome, and use Gnome extensions to enable the dock to stick to the main desktop. For a Gnome distro, there's Fedora 40, the new Ubuntu, or Debian (IMHO, the most stable of the lot, but slightly older software version). This is my Gnome desktop: https://files.mastodon.social/media_attachments/files/112/349/393/342/603/119/original/3c3c5c7e35ac726e.png
And if you have a large hard drive, feel free to install 3 of these (e.g. Mint, Debian or Ubuntu with Gnome, Fedora KDE), to test drive them all. They can all happily live next to each other in separate partitions. Just make sure you create a /boot partition (this holds the bootloader for all OSes), and then 3 large ones to put the / (root) partitions of each distro (these will hold the actual OS for each).
If you want to learn about linux give Linux From Scratch a try (not as a daily driver, just as an experiment, in a VM if need be).
If you like to tune and compile your code, you can try Gentoo and Slackware, both suitable for Desktop.
Edit: assuming you're targetting the desktop, not the mac.
You don't need a specific distro to compile your code. Just install gcc or javac or whatever you need.