Skip to main content
tdro

Another wandering soul screaming into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by cdd20.

tdro micro.thedroneely.com view Markdown Plaintext Embed Permalink May 5 2023 23:07 UTC 20 sec 61/50 words

Different words similar meaning? --references is NixOS speak for direct package dependencies. --requisites list all. These work with the nix-store command.

shell
$ readlink --canonicalize "$(type -P which)"
/nix/store/r78jv9xgxnvsm5vpasf5ldkc28pkri6r-which-2.21/bin/which

$ nix-store --query --references /nix/store/r78jv9xgxnvsm5vpasf5ldkc28pkri6r-which-2.21
/nix/store/4nlgxhb09sdr51nc9hdm8az5b08vzkgx-glibc-2.35-163

which directly depends on glibc. Swap --references to --referrers for paths pointing to which.

On Guix, list/draw dependencies with guix graph.

shell
guix graph --type=references which
#gists #linux
tdro

Another wandering soul screaming into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by cdd20.

tdro micro.thedroneely.com view Markdown Plaintext Embed Permalink Jan 21 2023 13:53 UTC 64 sec 192/50 words
A NixOS configuration for a working sound driver on an A1418 Cirrus Logic CS8409/CS42L83. 
nix
{ stdenv, lib, fetchgit, linuxKernel, kernel ? linuxKernel.kernels.linux_5_15
, version ? "d0d785dc1859b09299bde6d0f1d6786a0d610e7f" }:

stdenv.mkDerivation {

  inherit version;
  name = "sna-hda-codec-cs8409-${version}-module-${kernel.modDirVersion}";

  # Upstream: https://github.com/davidjo/snd_hda_macbookpro

  src = fetchgit {
    url = "https://github.com/egorenar/snd-hda-codec-cs8409.git";
    rev = version;
    sha256 = "sha256-0UeoERcYpM+ojeZ7dDIE3ruTIoHkkC+s7FcoEVUTR0w=";
  };

  hardeningDisable = [ "pic" ];
  nativeBuildInputs = kernel.moduleBuildDependencies;

  NIX_CFLAGS_COMPILE = [ "-g" "-Wall" "-Wno-unused-variable" "-Wno-unused-function" ];

  makeFlags = kernel.makeFlags ++ [
    "INSTALL_MOD_PATH=$(out)"
    "KERNELRELEASE=${kernel.modDirVersion}"
    "KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
  ];

  postPatch = ''
    printf '
    snd-hda-codec-cs8409-objs := patch_cs8409.o patch_cs8409-tables.o
    obj-$(CONFIG_SND_HDA_CODEC_CS8409) += snd-hda-codec-cs8409.o

    KBUILD_EXTRA_CFLAGS = "-DAPPLE_PINSENSE_FIXUP -DAPPLE_CODECS -DCONFIG_SND_HDA_RECONFIG=1"

    KERNELRELEASE ?= $(shell uname -r)
    KERNEL_DIR    ?= /lib/modules/$(KERNELRELEASE)/build
    PWD           := $(shell pwd)

    default:
    	make -C $(KERNEL_DIR) M=$(PWD) CFLAGS_MODULE=$(KBUILD_EXTRA_CFLAGS)

    install:
    	make -C $(KERNEL_DIR) M=$(PWD) modules_install
    ' \
    > Makefile

    sed --in-place 's|<sound/cs42l42.h>|"${linuxKernel.kernels.linux_6_0.dev}/lib/modules/${linuxKernel.kernels.linux_6_0.modDirVersion}/source/include/sound/cs42l42.h"|'  patch_cs8409.h
    sed --in-place 's|hda_local.h|${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/sound/pci/hda/hda_local.h|'                                                      patch_cs8409.h
    sed --in-place 's|hda_jack.h|${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/sound/pci/hda/hda_jack.h|'                                                        patch_cs8409.h
    sed --in-place 's|hda_generic.h|${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/sound/pci/hda/hda_generic.h|'                                                  patch_cs8409.h
    sed --in-place 's|hda_auto_parser.h|${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/sound/pci/hda/hda_auto_parser.h|'                                          patch_cs8409.h
  '';

  meta = { platforms = lib.platforms.linux; };
}
../packages/snd-hda-cs8409/default.nix

Then build it as a extra/custom kernel module. The results of stumbling upon yet another troublesome device…

nix
{ pkgs, ... }:

{
  boot = {
    extraModulePackages = [
      (pkgs.callPackage ../packages/snd-hda-cs8409/default.nix {
        kernel = pkgs.linux_5_15;
      })
    ];
  };
}
hardware.nix
#gists #linux
tdro

Another wandering soul screaming into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by cdd20.

tdro micro.thedroneely.com (edited) view Markdown Plaintext Embed Permalink Jan 6 2023 03:23 UTC 48 sec 145/50 words
My default nix configuration on NixOS

This configuration is more for building/debugging stuff and caching with nix-serve. Usually my package version is locked since different versions of nix can have some effects.

nix
{ config, ... }:

{
  nix = {
    package = (import ../versions.nix).nix_2_17 { inherit config; };
    settings = {
      log-lines = 25;                                # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-log-lines
      fallback = true;                               # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-fallback
      tarball-ttl = 0;                               # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-tarball-ttl
      show-trace = true;                             # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-show-trace
      connect-timeout = 5;                           # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-connect-timeout
      auto-optimise-store = true;                    # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-auto-optimise-store
      narinfo-cache-negative-ttl = 0;                # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-narinfo-cache-negative-ttl
      narinfo-cache-positive-ttl = 0;                # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-narinfo-cache-positive-ttl
      builders-use-substitutes = true;               # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-builders-use-substitutes
      min-free = 268435456;                          # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-min-free (256 MB in Bytes)
      max-free = 1073741824;                         # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-max-free (1 GB in Bytes)
      allowed-users = [ "root" "@wheel" ];           # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-allowed-users
      trusted-users = [ "root" "@wheel" ];           # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-trusted-users
      experimental-features = "nix-command flakes";  # https://nixos.org/manual/nix/unstable/command-ref/conf-file.html#conf-experimental-features
    };
  };
}
My nix-configuration.nix on version 23.05
#gists #linux
tdro

Another wandering soul screaming into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by cdd20.

tdro micro.thedroneely.com view Markdown Plaintext Embed Permalink Apr 3 2023 21:34 UTC 20 sec 61/50 words

I’ve had a draft post of Guix notes written up for a while now. Did you know that it’s easy to generate a file system specified from a config.scm? It’s somewhat equivalent to nixos-install, pacstrap and the like.

shell
guix system init --no-bootloader config.scm filesystem/

Why? Commands like this are handy for messing around with chroots, containers, and other related stuff!

#linux

Authors

Gallery

Following (6)

Web Ring