#+title: GNU Guix on Framework 12
#+date: <2025-12-03 Ср>

* Why Framework 12
** What I was looking for
I wanted to buy a tablet for my University studies, which should have supported stylus for writing (ex. math, notes) and drawing. I also didn't want to get a tablet with a bloated mobile os, such as iPadOS or Android. I wanted to own my device and make use of it not only for notes, but also for other tasks. It was March 2025 and the only suitable thing I found was [[https://pine64.org/devices/pinenote][Pinenote]] - an E-Ink tablet with stylus, running Debian with GNOME desktop. It was okay, and I considered buying it, but at that time I found out, that there's a [[https://frame.work][Framework]] company, that has a goal of building modular, repairable laptops, that are owned by it's user (and not the other way, like with most laptops). I only thought
#+begin_quote
It would be great to have a tablet built by this company. I would buy it immediately.
#+end_quote
** Framework 12 was announced
And what do you think? They /actually/ announced [[https://frame.work/laptop12][Framework 12]] a /month/ later, in April 2025. That laptop had everything I wanted:
- Small and Portable
- Stylus support (both MPP and USI)
- Light (1.3 kg)
- Runs the OS you want it to run (a desktop class OS such as /GNU Linux/)
- Repairable by design
- Upgradable by design
- Powerful enough (I have an i5 Intel CPU with 10 Cores/12 Threads)

So I immediately preordered one of them (a purple one) and received it in late July 2025.

* Why GNU Guix
At first I used [[https://nixos.org][NixOS]] on it, but I was interested in installing [[https://guix.gnu.org][GNU Guix]] on it. I like the whole idea of having a 100% reproducible system and having the whole system and home configurations in a git repo. NixOS is a great distro, but it has several flaws:
** Flaws of NixOS
*** Not all packages are source-based
The whole idea of Nix and NixOS is that you build all packages (at least all, that are Free Software) in a reproducible way from source. But there're packages like [[][Joplin]], [[][Electron]], [[][JQuerry]], that are not build from source. The package definitions just download the precompiled binaries/prebuilt packages and call it a day. I think, that defeats the whole idea and purpose of Nix, and also doesn't allow a user to control, how this software is built, and only gives a false feeling of security and peace of mind.
*** Non-Free Software by default
Yes, when you install NixOS, it askes you, whether you want to enable non-free packages/services on your pc and you can decline it. But what it doesn't say - is that even if you ~nixpkgs.config.allowUnfree = false;~, you're still getting the Non-Free Linux Kernel. You may say
#+begin_quote
But the Linux Kernel is Free and Open Source Software.
#+end_quote
But it's actually [[][not 100% true]] and that's a problem.
** How GNU Guix fixes them
*** *All* packages are built from source
Guix maintainers are much more strictly following the idea, that every package should be built from source and I haven't seen any exceptions at the time of writing this.
*** 100% Free Software by default
Guix the package manager, Guix System and the Guix channel (Repository with packages) are all 100% Free/Libre Software. Guix is in the list of [[][FSF approved GNU/Linux distributions]], that respect user's freedom, so if you're installing this distro, you're not getting any Non-Free programs, drivers, etc. It uses Linux-Libre kernel with all the propriatory parts stripped out.
* Hardware compatibility
[[https://guix.gnu.org][GNU Guix]] is great, but if you want to install it, you should keep some [[][hardware considerations]] in mind. In case of Framework 12, there's only one hardware component, that will not work when using GNU Guix - it's a WiFi/Bluetooth card. If you want to have internet connection on Framework 12, you can either
1. Use USB Tethering with a phone
   If you connect a phone to laptop and allow USB tethering, then your laptop will have Internet connection.
2. Connect Ethernet cable
3. Change a WiFi card to one that doesn't need any proprietary drivers/loadable firmware.
   For example from [[][]] or from [[][]] (Not affiliate links)

I personally ordered a [[][]] and when I was waiting for a delivery, I used USB tethering. Then I replaced the internal WiFi card with a new one (thanks Framework, it was very easy to do).
* My experience so far
I use GNU Guix on my Framework 12 for over a month now and the experience was very smooth. I have a good battery life, GPU acceleration, WiFi (thanks to my new WiFi card), and all the apps I need for my University and my own projects. 
** Steam and Games
The only think I miss (and it's not Bluetooth) is Steam with my favourite games. Yes, you can install Steam and other proprietary sofware, but I wanted to do an experiment: try to live with Framework 12 without any proprietary software at all. So since I installed Guix System, I found some Free and Open Source games, such as [[][SuperTuxKart]], [[][]], [[][Unciv]] and [[][Luanti]]. And they are actually good.
** Bluetooth
The Bluetooth story is not as simple as WiFi. If you replace you internal WiFi card with one of those, that I mentioned above, you will get WiFi, but you won't get Bluetooth. And there's no way (as far as I know) to get the internal Bluetooth *and* WiFi working without any propriatory things at the same time. So you can buy a bluetooth USB dongle (such as [[][]] and [[][]]. Links are also not affeliate), but it's not that elegant and you'll have one port less every time you need Bluetooth. I personally don't really care about Bluetooth, as it has shown itself for me as very unreliable. I had problems with Bluetooth for a decade and still get those, when I occasionally try to use it. My headphones can be used with 3.5mm Jack or with USB-C, so I just use those instead of Bluetooth, when I watch movies or videos. 
** Browser
Since Firefox added their [[][Terms of Use]], I stopped using Firefox and was using [[][Librewolf]], which is a fork of Firefox with all garbage stripped out. But GNU Guix has it's own fork of Firefox with features and extensions to block Non-Free Software, called GNU Icecat. Since I installed Guix, I was using mostly GNU Icecat (because of it's features and addons) with extra [[][UBlock Origin]] and [[][Aliasvault]] extensions installed. The experience was not without flaws (sometimes copy-paste doesn't work), but I'm happy, knowing the fact, that I run only [[][Free Javascript]]. For websites, that I have to use on occasion, that use Non-Free Javascript, I use Librewolf with UBlock Origin with auto-deletion of Cookies. 
* Conclusion
All in all, I find Framework 12 a wonderful Laptop to use in synergy with Free Software. It's modular and repairable by design and (when you replace your WiFi card) supports Free Software Distributions. I recommend you to try it out with [[https://guix.gnu.org][GNU Guix]]. If you don't want to use Guix in particular, you can still use other 100% GNU Linux distributions, such as [[][Trisqel]] or [[][PureOS]]. 
