this post was submitted on 16 Oct 2025
115 points (98.3% liked)

libre

10138 readers
28 users here now

Welcome to libre

A comm dedicated to the fight for free software with an anti-capitalist perspective.

The struggle for libre computing cannot be disentangled from other forms of socialist reform. One must be willing to reject proprietary software as fiercely as they would reject capitalism. Luckily, we are not alone.

libretion

Resources

  1. Free Software, Free Society provides an excellent primer in the origins and theory around free software and the GNU Project, the pioneers of the Free Software Movement.
  2. Switch to GNU/Linux! If you're still using Windows in $CURRENT_YEAR, take Linux Mint for a spin. If you're ready to take the plunge, flock to Fedora! If you're a computer hobbyist and love DIY, use Arch, Gentoo, Lix System or the many, many other offerings out there.

Rules

  1. Be on topic: Posts should be about free software and other hacktivst struggles. Topics about general tech news should be in the technology comm or programming comm. That doesn't mean all posts have to be serious though, memes are welcome!
  2. Avoid using misleading terms/speading misinformation: Here's a great article about what those words are. In short, try to avoid parroting common Techbro lingo and topics.
  3. Avoid being confrontational: People are in different stages of liberating their computing, focus on informing rather than accusing. Debatebro nonsense is not tolerated.
  4. All site-wide rules still apply

Artwork

founded 4 years ago
MODERATORS
 

They have virtually no moderators (they all quit because they were burnt out and manipulated), filled with racist lmayo, and are associated deeply with anti-migrant violence and warmongering (Anduril) who hire people straight out of NixOS to build weapons to fund imperialism everywhere.

Go use Guix instead (they don't rely on free GitHub credits or limitless AWS S3 buckets) and are objectively superior on a technical standpoint (no "experimental features" that everyone considers stable) and don't give any shit about nonfree software unless you provide it, or only contribute to nixpkgs (collective infra) and outside projects like Lix/Snix.

Avoid the NixOS community at all costs if you value your emotional labor. Even the chuds have done this with things like Determinate Systems Nix ("Nix without the drama") and making their own corpo shill platform called "flakehub"

Source: A former NixOS community member (me)


There is no liberalism anymore, only fascist cultural hegemony that will take over every space it can.

you are viewing a single comment's thread
view the rest of the comments
[โ€“] hello_hello@hexbear.net 15 points 2 months ago* (last edited 2 months ago) (1 children)

Both Guix and Nix evaluate derivations which are a standardized format. Guix just doesn't evaluate Nix derivations because it doesn't implement a Nix DSL interpreter and it doesn't use the same package repository (nixpkgs).

There are a lot of benefits to using scheme and you don't have to be an expert in Scheme to create packages (I wasn't when I started out and anyone who claims to be an expert in either Nix or Scheme gets laughed out the room).

comparison

This is the hello world package in Guix

(use-modules (guix packages)
             (guix download)
             (guix build-system gnu)
             (guix licenses))

(define-public hello
  (package
    (name "hello")
    (version "2.12.2")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/hello/hello-" version
                                  ".tar.gz"))
              (sha256
               (base32
                "1aqq1379syjckf0wdn9vs6wfbapnj9zfikhiykf29k4jq9nrk6js"))))
    (build-system gnu-build-system)
    (synopsis "Example GNU package")
    (description
     "GNU Hello prints the message \"Hello, world!\" and then exits.  It
serves as an example of standard GNU coding practices.  As such, it supports
command-line arguments, multiple languages, and so on.")
    (home-page "https://www.gnu.org/software/hello/")
    (license gpl3+)))

This is the hello world package in Nix

{
  callPackage,
  lib,
  stdenv,
  fetchurl,
  nixos,
  testers,
  versionCheckHook,
  hello,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "hello";
  version = "2.12.2";

  src = fetchurl {
    url = "mirror://gnu/hello/hello-$%7BfinalAttrs.version%7D.tar.gz";
    hash = "sha256-WpqZbcKSzCTc9BHO6H6S9qrluNE72caBm0x6nc4IGKs=";
  };

  # The GNU Hello `configure` script detects how to link libiconv but fails to actually make use of that.
  # Unfortunately, this cannot be a patch to `Makefile.am` because `autoreconfHook` causes a gettext
  # infrastructure mismatch error when trying to build `hello`.
  env = lib.optionalAttrs stdenv.hostPlatform.isDarwin {
    NIX_LDFLAGS = "-liconv";
  };

  doCheck = true;

  doInstallCheck = true;
  nativeInstallCheckInputs = [
    versionCheckHook
  ];

  # Give hello some install checks for testing purpose.
  postInstallCheck = ''
    stat "''${!outputBin}/bin/${finalAttrs.meta.mainProgram}"
  '';

  passthru.tests = {
    version = testers.testVersion { package = hello; };
  };

  passthru.tests.run = callPackage ./test.nix { hello = finalAttrs.finalPackage; };

  meta = {
    description = "Program that produces a familiar, friendly greeting";
    longDescription = ''
      GNU Hello is a program that prints "Hello, world!" when you run it.
      It is fully customizable.
    '';
    homepage = "https://www.gnu.org/software/hello/manual/";
    changelog = "https://git.savannah.gnu.org/cgit/hello.git/plain/NEWS?h=v%24%7BfinalAttrs.version%7D";
    license = lib.licenses.gpl3Plus;
    maintainers = with lib.maintainers; [ stv0g ];
    mainProgram = "hello";
    platforms = lib.platforms.all;
    identifiers.cpeParts.vendor = "gnu";
  };
})

A lot of the same skills and concepts transfer over, so if you're comfortable with Nix you don't have to lose all your skills and start over. I personally find the Guix package definition a lot more understandable than the Nix one.

The problem is not scheme, its the lack of systemd.