{"id":3519,"date":"2020-07-28T11:58:31","date_gmt":"2020-07-28T11:58:31","guid":{"rendered":"https:\/\/linuxiac.com\/?p=3519"},"modified":"2021-03-28T15:29:50","modified_gmt":"2021-03-28T15:29:50","slug":"guix-gnu-linux-is-for-advanced-users-with-respect-to-freedom","status":"publish","type":"post","link":"https:\/\/linuxiac.com\/guix-gnu-linux-is-for-advanced-users-with-respect-to-freedom\/","title":{"rendered":"Guix GNU Linux Is For Advanced Users With Respect To Freedom"},"content":{"rendered":"\n<p><a href=\"https:\/\/guix.gnu.org\/\" target=\"_blank\" aria-label=\"undefined (opens in a new tab)\" rel=\"noreferrer noopener\">Guix<\/a> version 1.0 was released May 2019&nbsp;after seven years of development. It&#8217;s default desktop environment is&nbsp;Xfce.<\/p>\n\n\n\n<p>One key difference between GNU Guix is that it is entirely free software. It has a &#8220;libre&#8221; kernel. What this means is that all binary firmware blobs are removed from it&#8217;s kernel.<\/p>\n\n\n\n<p>The result in pure practical terms is that things like GPU accelerated graphics and video playback does not work. Most WIFI cards and adapters will not work.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2020\/07\/guix-xfce.png\"><img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2020\/07\/guix-xfce-1024x576.png\" alt=\"Guix XFCE\" class=\"wp-image-3523\" srcset=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2020\/07\/guix-xfce-1024x576.png 1024w, https:\/\/linuxiac.com\/wp-content\/uploads\/2020\/07\/guix-xfce-360x203.png 360w, https:\/\/linuxiac.com\/wp-content\/uploads\/2020\/07\/guix-xfce-768x432.png 768w, https:\/\/linuxiac.com\/wp-content\/uploads\/2020\/07\/guix-xfce.png 1280w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">GNU Guix Xfce<\/figcaption><\/figure>\n\n\n\n<p>The operating system provides advanced package management features such as transactional upgrades and roll-backs, reproducible build environments, unprivileged package management, and per-user profiles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-guix-package-manager-and-file-system-layout\">Guix Package Manager And File System Layout<\/h2>\n\n\n\n<p>Guix GNU Linux uses a package-manager which is fittingly called <strong>guix<\/strong>. The way this software package manager works when you interface with it is rather normal. For example, to install Icecat (their re-branded Firefox with extensions) you would type:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code lang=\"bash\" class=\"hljs language-bash\">guix install icecat<\/code><\/span><\/pre>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>And by&nbsp;<em>would type<\/em>&nbsp;we mean&nbsp;<em>have to type<\/em>&nbsp;because there is no graphical package management interface on Guix. You can install packages as a regular user. Installing packages is not restricted to root or anyone else with &#8220;special&#8221; rights.<\/p>\n\n\n\n<p>Things do differ wildly on the back-end side of Guix&#8217;s package management.\u00a0Most importantly: installed software is placed in it&#8217;s own folder in\u00a0<code>\/gnu\/store<\/code>.<\/p>\n\n\n\n<p>For example,\u00a0<code>guix install pidgin<\/code>\u00a0places a copy for the user running that command in\u00a0<code>\/gnu\/store\/[hash]-pidgin-2.12.0<\/code>\u00a0and that folder gets the sub-folders\u00a0<code>bin\/ etc\/ include\/ lib\/ share\/<\/code>. There is no system-side\u00a0<code>\/lib\/<\/code>\u00a0or\u00a0<code>\/usr\/lib\/<\/code>\u00a0and while there is a\u00a0<code>\/bin\/<\/code>\u00a0root folder it&#8217;s only item is a\u00a0<code>sh<\/code>\u00a0symlink to a package in\u00a0<code>\/store\/gnu\/<\/code>.<\/p>\n\n\n\n<p>Available per-user binaries exist as symbolic links in&nbsp;<code>$HOME\/.guix-profile<\/code>&nbsp;which itself is a symbolic link to something like&nbsp;<code>\/var\/guix\/profiles\/per-user\/$USERNAME\/guix-profile<\/code>.<\/p>\n\n\n\n<p>Sometimes running&nbsp;<code>guix install [something]<\/code>&nbsp;will download some packages and write to disk and it&#8217;s done. Sometimes, when installing some packages such as with ungoogled-chromium, it decides to start compiling (&#8220;building&#8221;) the program.<\/p>\n\n\n\n<p><a href=\"https:\/\/linuxiac.com\/gentoo\/\">Gentoo<\/a> users will be familiar with this process. One key difference is that on Gentoo you expect that a package install involves your CPU being busy for hours while you wait for the package to compile. It appears to be somewhat random if\u00a0<code>guix install<\/code>\u00a0will download a binary package or spend ages compiling.<\/p>\n\n\n\n<p>This is somewhat problematic with\u00a0<code>ungoogled-chromium<\/code>\u00a0in particular because that piece of software needs more than 8 GB of RAM for a successful compile and the compilation as well as your machine will just stalls at 87% if you have 8 GB or less.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-init-system-and-service-management\">Init System And Service Management<\/h2>\n\n\n\n<p>Guix has it&#8217;s own service manager called&nbsp;<strong>Shepherd<\/strong>&nbsp;which is more similar to&nbsp;systemd&nbsp;than it is to older traditional init-systems like sysvinit and OpenRC (there is no&nbsp;<code>\/etc\/init.d\/<\/code>. This means you will have to read the fine manual to use it because it is unlike everything you may be used to from other distributions.<\/p>\n\n\n\n<p>Services are managed with the&nbsp;<code>herd<\/code>&nbsp;command which must be ran in a terminal as root. There is no graphical interface. If you&#8217;re not root then don&#8217;t worry, you can just type&nbsp;<code>sudo bash<\/code>&nbsp;or&nbsp;<code>sudo sh<\/code>&nbsp;(both shells are available, one is not an alias for the other) and become root.<\/p>\n\n\n\n<p>You can list all available services and their status with the command:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code lang=\"bash\" class=\"hljs language-bash\">herd status<\/code><\/span><\/pre>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Managing these services is not mysterious, you&#8217;d use commands like:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code lang=\"bash\" class=\"hljs language-bash\">herd start xorg-server\nherd stop xorg-server\nherd restart xorg-server<\/code><\/span><\/pre>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Configuration of the available services does not appear to follow any known standard. There is, for example, no&nbsp;<code>\/etc\/X11<\/code>&nbsp;where you&#8217;d expect X&#8217;s configuration files to be. In other words, where and how you would configure and setup X or e-mail services like postfix and things like that remains a mystery. The answer could be in the GNU Guix Reference Manual.<\/p>\n\n\n\n<p>If you install\u00a0<strong>Icecat<\/strong>\u00a0&#8211; their Firefox version, you will find that many websites don&#8217;t work. And you can&#8217;t install Firefox themes on it. But you can install themes.<\/p>\n\n\n\n<p>The default extensions Icecat ships with include\u00a0<em>GNU LibreJS<\/em>\u00a0and a bunch of extensions for making specific sites work with LibreJS. You can disable LibreJS and all the related and use Ublock Origin (and possibly NoScript) instead. It is just an example of problems less computer-skilled people will have with Guix.<\/p>\n\n\n\n<p>Guix does have&nbsp;<em>ungoogled-chromium<\/em>&nbsp;available (<code>guix install ungoogled-chromium<\/code>) and that one seems to work more like you&#8217;d expect.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p>If you are a die-hard free software enthusiast&nbsp;<em>and<\/em>&nbsp;you are willing to learn an entirely new operating system then Guix is for you. In conclusion, if you just want to browse Facebook and look at videos and\/or play games then it&#8217;s definitively not for you.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Guix is an operating system from the GNU project with a &#8220;libre&#8221; Linux kernel. It is built around the GNU Guix package manager.<\/p>\n","protected":false},"author":10,"featured_media":12078,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63],"tags":[1636,1635],"class_list":["post-3519","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-distributions","tag-gnu","tag-guix"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/posts\/3519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/comments?post=3519"}],"version-history":[{"count":0,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/posts\/3519\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/media\/12078"}],"wp:attachment":[{"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/media?parent=3519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/categories?post=3519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/tags?post=3519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}