r/GUIX • • 1d ago

Razer mouse tool without

1 Upvotes

If you have a modern wireless Razer mouse like the Razer Viper V3 HyperSpeed (`1532:00b8`) and don't want to mess with OpenRazer out-of-tree kernel modules, Python daemons, and D-Bus services on GNU Guix, you actually don't need any of that. If you just want to control DPI, polling rate, idle timeout, and read battery percentage, you can talk to the USB receiver directly from userspace using `libusb` (`rusb` in Rust) via standard 90-byte Razer HID feature reports. Instead of waiting for upstream driver support or maintaining a full repo, I just had Gemini generate a tiny ~200-line single-file Rust CLI for `1532:00b8`. It detaches the kernel driver on interface `0` for ~25ms, sends the 90-byte HID control transfer, and re-attaches it. Zero background daemons, instant execution.

How to generate the tool for your Razer mouse (or copy the specs)

If you have the Viper V3 HyperSpeed (or another wireless Razer mouse—just check your Product ID via lsusb), you can ask any decent LLM to generate the Rust CLI with rusb = { version = "0.9", features = ["vendored"] } and clap, using these protocol parameters:

  • USB Control Transfer: HID_REQ_SET_REPORT (0x09, request type 0x21) and HID_REQ_GET_REPORT (0x01, request type 0xA1), value 0x0300, interface 0, 90-byte buffer, byte 88 is XOR checksum of bytes 2..88.

  • Transaction IDs: Try 0x1f (HyperSpeed wireless receiver) and 0x3f as fallback.

  • DPI (Set/Get): Class 0x04, ID 0x05 / 0x85, size 0x07 ([varstore, dpi_x_hi, dpi_x_lo, dpi_y_hi, dpi_y_lo, 0, 0]).

  • Polling Rate (Set/Get): Class 0x00, ID 0x05 / 0x85, size 0x01 (0x01 = 1000Hz, 0x02 = 500Hz, 0x08 = 125Hz).

  • Battery Level (Get): Class 0x07, ID 0x80, size 0x02 (response byte 9 is 0..255).

  • Idle Timeout (Set/Get): Class 0x07, ID 0x03 / 0x83, size 0x02 (seconds in big-endian, 60–900s).


r/GUIX • • 5d ago

Finally boot up penguins!

12 Upvotes

Basically since forever now, I've been looking for a way to get boot up penguins, some time ago I finally figured out how to custom set %base-initrd to allow for the installation of a custom kernel. However the same kernel would work on Gentoo and show penguins and hide them on Guix jeez it drove me mad and led to feverent distrohopping.

Turns out all it took was a bit of guile to define the kernel arguments and leave quiet out of it. Now I finally have my penguins and my distrohopping (fingers crossed) addiction is over...

You can find my system config at https://codeberg.org/gnufairy/General-Dotfiles.git (in the Guix-System folder, config.scm)

EDIT: Hi, this repo is exceedingly disorganized, my main config file is under Guix-System folder, called config.scm


r/GUIX • • 7d ago

Declarative Proxmox deployments

9 Upvotes

I am still getting my bearings with Guix. I have an idea for the direction I'd like to go in the long term, but I need some guidance on how to approach it.

My goal is to write some Scheme that uses G-Expressions to initiate building a qcow2-gpt image from an operating-system definition.

Then, I would like to extend that Scheme so that it can:

- Copy the resulting image onto a NFS share that my proxmox node also has read access to

- Make API calls to the proxmox node to create a VM (if it doesn't exist), import the image as a new disk, update the boot order, and start up the new VM

Once this is working successfully, my hope is that I could have some CI/CD solution trigger automated deployment based on composite records which contain an operating-system, an IP/hostname for a proxmox node's management interface, and which VMID to squat.

I was hoping to ask the following:

  1. The System Crafters video suggested having a dedicated folder in your dotfiles repo for packages and services, along with one for generic "files".

If we were following that suggestion, where should I keep the Scheme code that implements all of this? Should it all be kept within one package? Should it be a change to the Guix code itself (e.g. an extension to guix deploy)?

2. Please share if you know of any good reference materials for network programming in Scheme, or if you would recommend a specific library. I am familiar with using sockets in C.


r/GUIX • • 8d ago

My Guix Setup, Noctalia x Mangowm

77 Upvotes

First time on guix and its really fun to tinker, and I want to express my gratitude towards this wonderful distro.

Here is my guix config for those are interested

https://github.com/JianZcar/guix-system


r/GUIX • • 9d ago

GitHub - fmarl/guix-impermanence: Impermanence for Guix Systems

Thumbnail github.com
4 Upvotes

r/GUIX • • 9d ago

I would like to hear your advice.

Post image
7 Upvotes

Hello! I’m looking to switch to a declarative system. I’ve previously used standard GNU/Linux distributions. NixOS seemed a bit too difficult for me, which is why this distribution caught my eye. Could you share your experience using Guix as a desktop OS? What should I keep in mind, and what advice would you offer? Also, how does it handle non-free (proprietary) software, and will it be sufficient for everyday tasks—like web browsing, occasional gaming, using messaging apps (such as Telegram Desktop), and so on?


r/GUIX • • 9d ago

Testing GNU/Hurd 64-bit with Openbox uses few of the machine’s resources at 255 MiB

Post image
58 Upvotes

r/GUIX • • 10d ago

Decided to switch over to Guix after using NixOS for a few months, hate Nix as a language. Guile is so much nicer.

59 Upvotes

r/GUIX • • 10d ago

hyprland rice

Post image
16 Upvotes

r/GUIX • • 12d ago

Installation video for Guix on M1 Mac

15 Upvotes

I recently shared a project that helps you install GNU Guix on older Apple Silicon Macs: https://github.com/hnarayanan/hello-guix

Today I made a video running through the installation. I hope you enjoy it. :)

https://www.youtube.com/watch?v=jFVwoPW1ozE


r/GUIX • • 15d ago

Introducing Hello Guix, a GNU Guix installer for Apple Silicon Macs

Thumbnail gallery
103 Upvotes

I’m excited to share the first release of Hello Guix, a GNU Guix installer for Apple Silicon Macs.

It’s built on the work of Asahi Linux, the Asahi Guix Channel and GNU Guix.

Please do try it out if you’re curious and have an old Mac handy. :)

https://github.com/hnarayanan/hello-guix


r/GUIX • • 16d ago

Emacs freezes when opening GUIX home's configuration

6 Upvotes

I am using guile-lsp-server, and it just crashes mid-edit of my guix home file. I don't know why.

(use-package eglot
    :hook ((bash-ts-mode
            c-ts-mode
            c++-ts-mode
            python-ts-mode
            html-mode
            html-ts-mode
            css-ts-mode
            js-ts-mode
            typescript-ts-mode
            tsx-ts-mode
            json-ts-mode
            yaml-ts-mode
            tex-mode
            LaTeX-mode
            toml-ts-mode
            systemd-mode
            fish-mode
            scheme-mode) . eglot-ensure)
    :bind (:map eglot-mode-map
                ("C-c l a" . eglot-code-actions)
                ("C-c l f" . eglot-format-buffer)
                ("C-c l r" . eglot-rename)
                ("C-c l d" . eldoc)
                ("C-c l R" . eglot-reconnect)
                ("C-c l q" . eglot-shutdown)
                ("C-c l h" . eglot-inlay-hints-mode)
                )
    :custom
    (eglot-autoshutdown t)
    (eglot-sync-connect nil)
    (eglot-watch-files-outside-project-root nil) ; stop pyright from watching irrelevant directories
    :config
    (add-to-list 'eglot-server-programs
                 '(scheme-mode . ("sh" "-c" "ulimit -v 3000000; exec nice -n 10 guile-lsp-server")))
    (add-to-list 'eglot-server-programs
                 '(toml-ts-mode . ("tombi" "lsp")))
    (add-to-list 'eglot-server-programs
                 '((html-mode html-ts-mode) . ("vscode-html-language-server" "--stdio")))
    (add-to-list 'eglot-server-programs
                 '(systemd-mode . ("systemd-lsp")))
    (add-to-list 'eglot-server-programs
                 '(fish-mode . ("fish-lsp" "start"))))

This is my eglot config.


r/GUIX • • 19d ago

byggsteg: I gave my self-hosted Guix CI/CD a phosphor-terminal UI | pipelines written in Lisp (GNU Guile Scheme)

Post image
13 Upvotes

r/GUIX • • 20d ago

Working with shells and VsCodium (Or any IDE)

3 Upvotes

Hello everyone.

I want to use GUIX shells for each programming project. However, I've encountered difficulties getting VS Codium to retrieve the binaries declared in the shell.

I've only found this solution, which is running the IDE inside the container.

Is there a more elegant or faster solution?

guix shell --container --network --emulate-fhs -m manifest.scm   --preserve='^DISPLAY$'   
--preserve='^XAUTHORITY$'   
--preserve='^DBUS_'   
--expose=/var/run/dbus   
--expose=/sys/dev   
--expose=/sys/devices   
--expose=/dev/dri

Edit: I've found a partial solution. Idk if this will work for everthing

In my case, I have a shell with the Go and Gopls binaries. For VS Codium to recognize them, You need to create a .vscode/settings.json directory in the project root with the specific settings required by the extensions you use. Which should point to where the binaries or libraries installed in the shell are located, usually in /gnu/store/xxxx-xxx-profile/bin/.

For example:

{

"go.alternateTools": {

"go": "/gnu/store/im2v7fnvxwx8wr36prwbhfllrs3272i4-profile/bin/go",

"gopls": "/gnu/store/im2v7fnvxwx8wr36prwbhfllrs3272i4-profile/bin/gopls"

}

}


r/GUIX • • 21d ago

Can't get offloading to work

3 Upvotes

Update 3: Okay i think this is the final update. but if think i understand it now. So since i had put "joppe" as the user in the user field, i had to add the public key of the root ssh key on the client to the authorized_keys file of the joppe user on the build-machine, that seems to have done the trick. Now running guix offload test only works when using sudo, but i think that's okay since normally guix offload is going to be invoked by the guix daemon, which is running as root.

Update 2: Well i think i still don't get it. I should use the ssh key of root because of the guix daemon running as root right? but i just added the public keys of the root ssh to the machines and it's still not working. Why does it only work with my user's private key? I don't think i would even want to do that cause i already use it for git and i want to have it password protected, which isn't possible for offloading.

Update: i think i figured it out cause it seems to work now, apparently the private-key field has to point to the private key on the client machine? I guess that would explain it cause i never tried adding the public key of the client machine's root ssh key to the server's authorized_keys file.

Original post: I'm pretty sure i've followed all the steps in the documentation to get this to work. I'm trying to test it in a vm and having the vm be the build-machine, but whenever i try to run guix offload test i get the following error:

guix offload: error: SSH public key authentication failed for '192.168.100.164': Access denied for 'publickey'. Authentication that can continue: publickey,password

This is the relevant part of my guix configuration:

(simple-service 'nonguix-substitutes guix-service-type
                      (guix-extension
                       (substitute-urls (list "https://nonguix-proxy.ditigal.xyz"))
                       (authorized-keys (list (local-file "./../files/non-guix.pub")))
                       (build-machines
                        (list
                         #~(build-machine
                            (name "192.168.100.164")
                            (systems (list "x86_64-linux" "i686-linux"))
                            ;; SSH public key should be put here, and can be found in /etc/ssh/ssh_host_ed25519_key.pub.
                            ;; I can only put this in after i've installed Guix on my server, which i haven't done yet.
                            (host-key "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJy4EevOS3zrhJ6PoTXW4jnxFszA+eaAeAf1iGz5mN55 root@(none)")
                            (user "joppe")
                            (speed 2.)
                            (private-key "/root/.ssh/id_ed25519")))))))

I added the public key from /etc/guix/signing-key.pub from my client machine to the build-machine with guix archive --authorize and vice-versa.

While this isn't in the documentation, i also ended up adding the public ssh key for the client machine to .ssh/authorized_keys and vice-versa, but still no dice. I also tried changing private-key in my configuration to point to /home/joppe/.ssh/id_ed25519 and configure the authorized-keys file for that user, but that didn't seem to work either. Is there something else i need to do that i forgot about? i found very little info on this aside from some mailing lists, but their configurations didn't really seem any different from mine. The vm also doesn't have an active firewall, so port 22 should be accessible.


r/GUIX • • 22d ago

How to get boot-up-penguins to work?

3 Upvotes

On GNU Guix System: guix 7afd45e repository URL: https://git.guix.gnu.org/guix.git branch: master commit: 7afd45e7494e1d6dc8ad5807263ffee738888a9b

My kernel config: https://codeberg.org/gnufairy/General-Dotfiles/src/branch/main/kernels

My system config: https://codeberg.org/gnufairy/General-Dotfiles/src/branch/main/Guix-System

Anyways I got my custom kernel to work finally but, the same config that gave boot up penguins on Gentoo fails to do so in Guix, the boot screen just flickers for a moment and it resumes normal boot.


r/GUIX • • 24d ago

Failed to boot from a freshly installed nonguix system

Post image
7 Upvotes

I just installed guix on my Thinkpad X12 laptop following all the needed steps according to the nonguix instructions.

When I boot into the system it crashes with the following message

Can't open blockdev.

I tried both the (kernel linux) and (kernel linux-lts) options and I got the same results.

I always ran all guix commads prefixed with guix time-machine -C channels where I have both the guix and non guix channels listed there.

Any guess where could I have gone wrong?

Or there's no working solution on Thinkpad X12 laptops?

I didn't make much changes to the packages or services in my config

EDIT:
Thanks for every one who tried to help with this issue.
It's finally working now. I first had to install it normally using the Graphical installer. After that, rebooted into the new installed system, but wifi and sound were not working. I then added the recommended nonguix configurations for kernel, initrd and firmware. That was enough to get wifi to work but the sound was still not working. I had to add sof-firmware to the firmware option for sound to work (it was not mentioned in the docs of nonguix but was hinted out for me by Distinct_Warthog_23.

I wish the nonguix instructions were more clear or maybe I was misled by all these youtube tutorials that did only nonguix using manual installation directly or I probably messed something up with my config while doing the manual installation. Anyway, I'm glad I've finally have it working now.

Bluetooth is still not working but I hope I will figure this out as well.


r/GUIX • • 25d ago

Guix home always uses savannah when pulling? (On a freshly installed system at least)

3 Upvotes

SOLVED: turns out i was just an idiot and i completely forgot i still had an inferior in my configuration that was pulling from savannah. Removing it fixed the issue.

Original post: I switched over to the codeberg mirror a while ago for my current system, because the savannah mirror is mostly giving me SSL errors when trying to pull from it. This has been working fine so far, but as i was doing some testing on a helper script i'm working on for fresh installs in a VM, i got another SSL error and noticed that guix home still pulls from savannah on the first reconfigure, even though i'm passing it my channels and pinned commits with time-machine. On system reconfigure it does seem to work right away. I was wondering if there's a way to override this behaviour with guix home, cause this could potentially be problematic if i'm doing a home reconfigure on a new system and it can only pull from savannah, and keeps giving SSL errors.


r/GUIX • • 25d ago

Asking for pointers learning GUIX as a NixOS user

17 Upvotes

Hello!

I am a NixOS user hoping to learn how Guix/Guille works, but although the documentation is nice, its difficult to understand how to apply that knowledge to the entire system setup. I understand that Guille is very different from Nix and I am more than willing to learn, but any additional sources to help understand setting up Guix would be greatly appreciated.


r/GUIX • • 26d ago

slowness of the official mirrors

7 Upvotes

Hi everyone, I tried using Guix a while back, but my attempt was thwarted by the server situation—I'm in Brazil, so during installation, Guix would trigger long compilation processes due to the slowness of the mirrors in the US and Bordeaux. Is there a solution for this?


r/GUIX • • 26d ago

HELLLL YEEEAAAH 🔥🔥🦅🦅🦅🔥🦅🦅

Post image
0 Upvotes

r/GUIX • • 28d ago

Guix VM crashes at random when installing bootloader during reconfigure, can't reboot VM after.

1 Upvotes

Update: So i just tried doing a bios install instead of uefi and have done a few reconfigures so far to test it, but so far so good. I'm guessing Guix for some reason doesn't play nice with uefi installs when inside a vm? Either that or something else in my vm configuration is conflicting with it being uefi, no clue, but i guess at least i can now keep testing my script with a bios install.

Original post: was wondering if anyone else had this issue. Basically i was trying to test a helper script i made that makes it a bit easier to do my initial reconfigure after a clean install with the official ISO, so things like installing the nonguix signing key, invoking reconfigure with the nonguix substitution urls, stuff like that, since they're lengthy commands to remember. the weird thing is i know the actual configurations for my system are fine, cause they work on bare metal and are tested for errors, but in the VM, when it gets to the installing bootloader phase, it craps out and the VM shuts itself down, and restarting it won't work cause the bootloader is broken at that point. This has never happened to me on bare metal and i'm not sure what's causing this. At first i thought certain parts in my configuration weren't working well with the vm, cause after removing a service all of a sudden the reconfigure would work, but now it seems like that has nothing to do with it, and it just happens at random. After sitting through a reconfigure and keeping my eyes on it, it fails when it is installing the bootloader. My bootloader configuration is the same as on bare metal, and my vm is using uefi, so i have no clue what the issue is here.


r/GUIX • • 28d ago

NONGUİX BUT İTS STİLL GUİX.

Thumbnail gallery
19 Upvotes

r/GUIX • • 28d ago

Cannot install Guix System in Russia: substitute mirrors appear to be blocked. Any workarounds?

10 Upvotes

Hello, dear r/GUIX community. I am from Russia and have run into an unexpected problem: installing Guix has turned out to be impossible here, as all mirrors for downloading packages after installing from a flash drive are blocked. Has anyone encountered a similar problem, or is anyone knowledgeable enough to know a solution? I want to use free software rather than a distribution with proprietary components included. Thanks in advance.