-
-
Save p-alik/6ed132ffad59de8fcbc4fb10b54d745e to your computer and use it in GitHub Desktop.
# /etc/nixos/configuration.nix | |
{ config, pkgs, ... }: | |
{ | |
imports = | |
[ | |
./hardware-configuration.nix | |
]; | |
boot.loader.systemd-boot.enable = true; | |
boot.loader.efi.canTouchEfiVariables = true; | |
networking.hostName = "ls03064"; # Define your hostname. | |
networking.networkmanager.enable = true; | |
# Set your time zone. | |
time.timeZone = "Europe/Berlin"; | |
# Select internationalisation properties. | |
i18n.defaultLocale = "en_US.UTF-8"; | |
i18n.extraLocaleSettings = { | |
LC_ADDRESS = "de_DE.UTF-8"; | |
LC_IDENTIFICATION = "de_DE.UTF-8"; | |
LC_MEASUREMENT = "de_DE.UTF-8"; | |
LC_MONETARY = "de_DE.UTF-8"; | |
LC_NAME = "de_DE.UTF-8"; | |
LC_NUMERIC = "de_DE.UTF-8"; | |
LC_PAPER = "de_DE.UTF-8"; | |
LC_TELEPHONE = "de_DE.UTF-8"; | |
LC_TIME = "de_DE.UTF-8"; | |
}; | |
# Enable the X11 windowing system. | |
services.xserver.enable = true; | |
# https://nixos.org/manual/nixos/stable/index.html#sec-x11--graphics-cards-intel | |
services.xserver.videoDrivers = [ "intel" ]; | |
services.xserver.deviceSection = '' | |
Option "DRI" "2" | |
Option "TearFree" "true" | |
''; | |
services.xserver.displayManager.gdm.enable = true; | |
services.xserver.desktopManager.gnome.enable = true; | |
# Configure keymap in X11 | |
services.xserver = { | |
layout = "de"; | |
xkbVariant = ""; | |
}; | |
console.keyMap = "de"; | |
services.printing.enable = true; | |
# Enable sound with pipewire. | |
sound.enable = true; | |
hardware.pulseaudio.enable = false; | |
security.rtkit.enable = true; | |
services.pipewire = { | |
enable = true; | |
alsa.enable = true; | |
alsa.support32Bit = true; | |
pulse.enable = true; | |
}; | |
# for sake of ipu6-camera-bins | |
nixpkgs.config.allowUnfree = true; | |
users.users.<USER> = { | |
isNormalUser = true; | |
description = ".."; | |
extraGroups = [ "networkmanager" "wheel" ]; | |
packages = with pkgs; [ | |
home-manager | |
# leave browsers here for sake of camera support | |
firefox | |
google-chrome | |
]; | |
}; | |
# List packages installed in system profile. To search, run: | |
# $ nix search wget | |
environment.systemPackages = with pkgs; [ | |
file | |
glxinfo | |
htop | |
inxi | |
lshw | |
openvpn | |
pciutils | |
# https://discourse.nixos.org/t/v4l2loopback-cannot-find-module/26301/5 | |
# obs-studio | |
v4l-utils | |
vim | |
]; | |
programs.vim.defaultEditor = true; | |
system.stateVersion = "23.11"; | |
} | |
# /etc/nixos/hardware-configuration.nix | |
{ config, lib, pkgs, modulesPath, ... }: | |
let | |
ivsc-firmware = with pkgs; | |
stdenv.mkDerivation rec { | |
pname = "ivsc-firmware"; | |
version = "main"; | |
src = pkgs.fetchFromGitHub { | |
owner = "intel"; | |
repo = "ivsc-firmware"; | |
rev = "10c214fea5560060d387fbd2fb8a1af329cb6232"; | |
sha256 = "sha256-kEoA0yeGXuuB+jlMIhNm+SBljH+Ru7zt3PzGb+EPBPw="; | |
}; | |
installPhase = '' | |
mkdir -p $out/lib/firmware/vsc/soc_a1_prod | |
cp firmware/ivsc_pkg_ovti01a0_0.bin $out/lib/firmware/vsc/soc_a1_prod/ivsc_pkg_ovti01a0_0_a1_prod.bin | |
cp firmware/ivsc_skucfg_ovti01a0_0_1.bin $out/lib/firmware/vsc/soc_a1_prod/ivsc_skucfg_ovti01a0_0_1_a1_prod.bin | |
cp firmware/ivsc_fw.bin $out/lib/firmware/vsc/soc_a1_prod/ivsc_fw_a1_prod.bin | |
''; | |
}; | |
in | |
{ | |
imports = | |
[ (modulesPath + "/installer/scan/not-detected.nix") | |
]; | |
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "usbhid" "sd_mod" "i915" ]; | |
boot.initrd.kernelModules = []; | |
boot.kernelModules = [ "kvm-intel" ]; | |
boot.extraModulePackages = []; | |
# https://discourse.nixos.org/t/i915-driver-has-bug-for-iris-xe-graphics/25006/10 | |
# resolved: i915 0000:00:02.0: [drm] Selective fetch area calculation failed in pipe A | |
boot.kernelParams = [ | |
"i915.enable_psr=0" | |
]; | |
fileSystems."/" = | |
{ device = "/dev/disk/by-uuid/5cfd71ea-6978-427b-9b10-75249bcc63ff"; | |
fsType = "ext4"; | |
}; | |
boot.initrd.luks.devices."luks-5f6a700d-cfdb-492c-b52d-d875e818631c".device = "/dev/disk/by-uuid/5f6a700d-cfdb-492c-b52d-d875e818631c"; | |
fileSystems."/boot" = | |
{ device = "/dev/disk/by-uuid/F642-A1B7"; | |
fsType = "vfat"; | |
}; | |
swapDevices = [ ]; | |
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking | |
# (the default) this is the recommended approach. When using systemd-networkd it's | |
# still possible to use this option, but it's recommended to use it in conjunction | |
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. | |
networking.useDHCP = lib.mkDefault true; | |
# networking.interfaces.enp0s13f0u1u4.useDHCP = lib.mkDefault true; | |
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true; | |
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; | |
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; | |
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; | |
# Tracking Issue: Intel MIPI/IPU6 webcam-support | |
# https://github.com/NixOS/nixpkgs/issues/225743#issuecomment-1849613797 | |
# Infrastructure Processing Unit | |
hardware.ipu6 = { | |
enable = true; | |
platform = "ipu6ep"; | |
}; | |
hardware.enableRedistributableFirmware = true; | |
hardware.firmware = [ | |
ivsc-firmware | |
]; | |
# environment.etc.camera.source = "${ipu6-camera-hal}/share/defaults/etc/camera"; | |
} |
might be cheese
has a permissions issue as mentioned here
sudo cheese
(cheese:543473): cheese-WARNING **: 09:26:02.442: Device '/dev/video1' does not support 2:0:0:0 colorimetry: ../sys/v4l2/gstv4l2object.c(4213): gst_v4l2_object_set_format_full (): /GstCameraBin:camerabin/GstWrapperCameraBinSrc:camera_source/GstBin:bin36/GstV4l2Src:v4l2src1:
Device wants 2:0:0:0 colorimetry
Without sudo
see notgne2/xps_9320.nix
Note for 24.11:
error: Package ‘ipu6-drivers-unstable-2024-10-10’ in /nix/store/0xbni69flk8380w0apw4h640n37wn1i9-source/pkgs/os-specific/linux/ipu6-drivers/default.nix:49 is marked as broken, refusing to evaluate.
a) To temporarily allow broken packages, you can use an environment variable
for a single invocation of the nix tools.
$ export NIXPKGS_ALLOW_BROKEN=1
Note: When using `nix shell`, `nix build`, `nix develop`, etc with a flake,
then pass `--impure` in order to allow use of environment variables.
b) For `nixos-rebuild` you can set
{ nixpkgs.config.allowBroken = true; }
in configuration.nix to override this.
c) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
{ allowBroken = true; }
to ~/.config/nixpkgs/config.nix.
When enabled:
sudo nixos-rebuild switch
building the system configuration...
error: builder for '/nix/store/xw5ywnyc4gc8q6wpmc4nmbbiy8rhkc76-ipu6-drivers-unstable-2024-10-10.drv' failed with exit code 2;
last 25 log lines:
> /build/source/drivers/media/pci/intel/ipu6/../ipu-buttress.c:24:10: fatal error: ipu-platform-buttress-regs.h: No such file or directory
> 24 | #include "ipu-platform-buttress-regs.h"
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> compilation terminated.
> make[4]: *** [/nix/store/2acbdwpzlwghygaiikwzy8gvz9klffy4-linux-6.6.64-dev/lib/modules/6.6.64/source/scripts/Makefile.build:243: /build/source/drivers/media/pci/intel/ipu6/../ipu-buttress.o] Error 1
> In file included from /build/source/drivers/media/pci/intel/ipu6/../ipu-isys.h:17,
> from /build/source/drivers/media/pci/intel/ipu6/../ipu-isys.c:37:
> /build/source/drivers/media/pci/intel/ipu6/../ipu-isys-csi2.h:13:10: fatal error: ipu-platform-isys.h: No such file or directory
> 13 | #include "ipu-platform-isys.h"
> | ^~~~~~~~~~~~~~~~~~~~~
> compilation terminated.
> make[4]: *** [/nix/store/2acbdwpzlwghygaiikwzy8gvz9klffy4-linux-6.6.64-dev/lib/modules/6.6.64/source/scripts/Makefile.build:243: /build/source/drivers/media/pci/intel/ipu6/../ipu-isys.o] Error 1
> In file included from /build/source/drivers/media/pci/intel/ipu6/../ipu-isys.h:17,
> from /build/source/drivers/media/pci/intel/ipu6/../ipu-isys-csi2.c:16:
> /build/source/drivers/media/pci/intel/ipu6/../ipu-isys-csi2.h:13:10: fatal error: ipu-platform-isys.h: No such file or directory
> 13 | #include "ipu-platform-isys.h"
> | ^~~~~~~~~~~~~~~~~~~~~
> compilation terminated.
> make[4]: *** [/nix/store/2acbdwpzlwghygaiikwzy8gvz9klffy4-linux-6.6.64-dev/lib/modules/6.6.64/source/scripts/Makefile.build:243: /build/source/drivers/media/pci/intel/ipu6/../ipu-isys-csi2.o] Error 1
> make[3]: *** [/nix/store/2acbdwpzlwghygaiikwzy8gvz9klffy4-linux-6.6.64-dev/lib/modules/6.6.64/source/scripts/Makefile.build:480: /build/source/drivers/media/pci/intel/ipu6] Error 2
> make[3]: *** Waiting for unfinished jobs....
> make[2]: *** [/nix/store/2acbdwpzlwghygaiikwzy8gvz9klffy4-linux-6.6.64-dev/lib/modules/6.6.64/source/Makefile:1921: /build/source] Error 2
> make[1]: *** [/nix/store/2acbdwpzlwghygaiikwzy8gvz9klffy4-linux-6.6.64-dev/lib/modules/6.6.64/source/Makefile:234: __sub-make] Error 2
> make[1]: Leaving directory '/nix/store/2acbdwpzlwghygaiikwzy8gvz9klffy4-linux-6.6.64-dev/lib/modules/6.6.64/build'
> make: *** [Makefile:126: all] Error 2
For full logs, run 'nix log /nix/store/xw5ywnyc4gc8q6wpmc4nmbbiy8rhkc76-ipu6-drivers-unstable-2024-10-10.drv'.
error: 1 dependencies of derivation '/nix/store/r0j63b2g54rwkvg42zfq2ir8x2v0f97f-linux-6.6.64-modules.drv' failed to build
error: 1 dependencies of derivation '/nix/store/y54ljnxahk2kqyj6y91h667l754b7bwk-nixos-system-nixos-24.11.20241213.314e12b.drv' failed to build
@pm-McFly, I've faced the same issue with kernel 6.6.43. :-(
Asked for help on Discourse Upgrade to nixos 24.11 fails due to ipu6 driver
I tried using the derivations found on the other gist:
And tried to modified them to maybe find a revision that works, but was ultimately blocked due to inconsistent revision expectations...
Looks like it's been fixed in NixOS/nixpkgs#368326
But I'm having a new error
$ sudo nix-channel --add https://nixos.org/channels/nixos-unstable nixos
$ sudo nixos-rebuild switch --upgrade
...
error: xf86videointel has been removed as the package is unmaintained and the driver is no longer functional.
Please remove "intel" from `services.xserver.videoDrivers` and switch to the "modesetting" driver.
after setting modesetting and trying again, I get
$ sudo nixos-rebuild switch --upgrade
...
error: Package ‘ipu6-drivers-unstable-2024-11-19’ in /nix/store/bfr3xwnd4qam39i69czczlxjn1pmv340-nixos/nixos/pkgs/os-specific/linux/ipu6-drivers/default.nix:51 is marked as broken, refusing to evaluate.
Since I have literally discovered NixOS only a couple hours ago, I suppose I did something wrong 🤣
Looks like it's been fixed in NixOS/nixpkgs#368326 But I'm having a new error
The pull request is just back porting to 24.11. However the driver didn't work in my case. See the message on discourse
Hi guys. Over the past 2 weeks, I have been studying nixos, improving my setup, and now revisiting this camera issue.
I am at a point where a camera is detected, but not functional.
~ on ☁️ ➜ nix-store -qR /run/current-system | grep -E '/nix/store' | grep ipu6
/nix/store/0vmw3dqi6n82g8wlv3cd4859h29yzml3-unit-script-v4l2-relayd-ipu6-pre-start
/nix/store/2d0891x33yp6ws6r501f837jpx7isp93-ipu6-camera-bins-unstable-2024-09-27
/nix/store/5bw0a695j4y1akiyci5smnklnrd14spq-ipu6-drivers-unstable-2024-10-10
/nix/store/5c215vaxyxjadk7i4n3z7yp6b7m61qid-ipu6-drivers-unstable-2024-11-19
/nix/store/c8q6fv771g0kiga44001bbxr2475limx-unit-script-v4l2-relayd-ipu6-post-stop
/nix/store/ig6zzkj58kmff23rw9k0ack355n3jna3-unit-script-v4l2-relayd-ipu6-start
/nix/store/zlp4703kxcaxn0r7zw5d630zpyjxw668-ipu6ep-camera-hal-unstable-2024-09-29
/nix/store/sgsk8w55vifydya58vd7kixq9wjv0jni-icamerasrc-ipu6ep-unstable-2024-09-29
/nix/store/agpz2zy2v5kb719qxp6lmpj9gzdk4csn-unit-v4l2-relayd-ipu6.service
/nix/store/mganw0r30y2084vrpiiisbdlzmij6164-ipu6-camera-bins-unstable-2024-09-27-zstd
~ on ☁️ ➜ sudo dmesg | grep ipu6 | lines | last 15
╭────┬─────────────────────────────────────────────────────────────────────────────────────╮
│ 0 │ [ 5.611228] intel-ipu6 0000:00:05.0: IPU6 in non-secure mode touch 0x0 mask 0xff │
│ 1 │ [ 5.612330] intel-ipu6 0000:00:05.0: FW version: 20230925 │
│ 2 │ [ 13.575797] intel-ipu6 0000:00:05.0: IPU6 in non-secure mode touch 0x0 mask 0xff │
│ 3 │ [ 13.580376] intel-ipu6 0000:00:05.0: FW version: 20230925 │
│ 4 │ [ 13.585838] intel-ipu6 0000:00:05.0: IPU6 in non-secure mode touch 0x0 mask 0xff │
│ 5 │ [ 13.587286] intel-ipu6 0000:00:05.0: FW version: 20230925 │
│ 6 │ [ 13.623646] intel-ipu6 0000:00:05.0: IPU6 in non-secure mode touch 0x0 mask 0xff │
│ 7 │ [ 13.624922] intel-ipu6 0000:00:05.0: FW version: 20230925 │
│ 8 │ [ 13.649968] intel-ipu6 0000:00:05.0: IPU6 in non-secure mode touch 0x0 mask 0xff │
│ 9 │ [ 13.651119] intel-ipu6 0000:00:05.0: FW version: 20230925 │
│ 10 │ [ 13.651856] intel-ipu6 0000:00:05.0: Found supported sensor OVTI01A0:00 │
│ 11 │ [ 13.651947] intel-ipu6 0000:00:05.0: Connected 1 cameras │
│ 12 │ [ 13.652923] intel-ipu6 0000:00:05.0: IPU6-v3[a75d] hardware version 5 │
│ 13 │ [ 13.774201] intel_ipu6_psys.psys intel_ipu6.psys.40: pkg_dir entry count:8 │
│ 14 │ [ 13.774252] intel_ipu6_psys.psys intel_ipu6.psys.40: psys probe minor: 0 │
╰────┴─────────────────────────────────────────────────────────────────────────────────────╯
My files (using hydenix):
hardware-configuration.nix
{ config, lib, pkgs, modulesPath, ... }:
let
ivsc-firmware = with pkgs;
stdenv.mkDerivation rec {
pname = "ivsc-firmware";
version = "main";
src = pkgs.fetchFromGitHub {
owner = "intel";
repo = "ivsc-firmware";
rev = "10c214fea5560060d387fbd2fb8a1af329cb6232";
sha256 = "sha256-kEoA0yeGXuuB+jlMIhNm+SBljH+Ru7zt3PzGb+EPBPw=";
};
installPhase = ''
mkdir -p $out/lib/firmware/vsc/soc_a1_prod
cp firmware/ivsc_pkg_ovti01a0_0.bin $out/lib/firmware/vsc/soc_a1_prod/ivsc_pkg_ovti01a0_0_a1_prod.bin
cp firmware/ivsc_skucfg_ovti01a0_0_1.bin $out/lib/firmware/vsc/soc_a1_prod/ivsc_skucfg_ovti01a0_0_1_a1_prod.bin
cp firmware/ivsc_fw.bin $out/lib/firmware/vsc/soc_a1_prod/ivsc_fw_a1_prod.bin
'';
};
in
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "usbhid" "sd_mod" "i915" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.grub.configurationLimit = 15;
# https://discourse.nixos.org/t/i915-driver-has-bug-for-iris-xe-graphics/25006/10
# resolved: i915 0000:00:02.0: [drm] Selective fetch area calculation failed in pipe A
boot.kernelParams = [
"i915.enable_psr=0"
];
fileSystems."/" =
#{ device = "/dev/disk/by-uuid/bf7761a1-df16-45b2-bbe9-737a15da6819";
{ device = "/dev/disk/by-label/NIXROOT";
fsType = "ext4";
};
fileSystems."/boot" =
#{ device = "/dev/disk/by-uuid/46F1-6F0A";
{ device = "/dev/disk/by-label/ESP";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
# Tracking Issue: Intel MIPI/IPU6 webcam-support
# https://github.com/NixOS/nixpkgs/issues/225743#issuecomment-1849613797
# Infrastructure Processing Unit
hardware.ipu6 = {
enable = true;
platform = "ipu6ep";
};
hardware.firmware = [
ivsc-firmware
#(pkgs.ivsc-firmware.overrideAttrs (attrs: {
# postInstall =
# (attrs.postInstall or "")
# + ''
# mkdir -p $out/lib/firmware/vsc/soc_a1_prod
# for file in $out/lib/firmware/vsc/*.bin; do
# ln -sf "$file" "$out/lib/firmware/vsc/soc_a1_prod/$(basename "$file" .bin)_a1_prod.bin"
# done
# '';
#}))
];
hardware.enableRedistributableFirmware = true;
hardware.pulseaudio.enable = lib.mkForce false;
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
services.pipewire.wireplumber.configPackages = [
(pkgs.writeTextDir "share/wireplumber/bluetooth.lua.d/51-bluez-config.lua" ''
bluez_monitor.properties = {
["bluez5.enable-sbc-xq"] = true,
["bluez5.enable-msbc"] = true,
["bluez5.enable-hw-volume"] = true,
["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]"
}
'')
];
services.fwupd.enable = lib.mkDefault true;
}
nix-modules.nix
{ inputs, userPkgs, ... }:
{
environment.systemPackages = with userPkgs; [
# customLibxkbcommon
plocate
google-chrome
ripgrep.out
qwerty-fr
# Hyde run screencap
linuxKernel.packages.linux_zen.ipu6-drivers
wf-recorder
grim
inputs.ghostty.packages.x86_64-linux.default
zoxide
nushell
volta
carapace
glances
wget
mplayer
starship
# https://discourse.nixos.org/t/v4l2loopback-cannot-find-module/26301/5
#obs-studio
v4l-utils
dolphin
vimPlugins.LazyVim
gcc
fd
lazygit
tree-sitter
cargo
lynx
unzip
# Sound eXchange for gp.nvim
sox
sof-firmware
#alsa-utils
# AI tools nushell
ffmpeg
openai-whisper
yt-dlp
gcalcli
pinentry-rofi
# pueue for task.nu
pueue
];
fonts = {
enableDefaultPackages = true;
packages = with userPkgs; [
# https://nixos.wiki/wiki/Fonts
#nerd-fonts.fira-code
#nerd-fonts.droid-sans-mono
noto-fonts
noto-fonts-cjk-sans
noto-fonts-emoji
liberation_ttf
mplus-outline-fonts.githubRelease
dina-font
proggyfonts
carlito
dejavu_fonts
ipafont
kochi-substitute
source-code-pro
ttf_bitstream_vera
];
fontconfig.defaultFonts = {
monospace = [
"DejaVu Sans Mono"
"IPAGothic"
];
sansSerif = [
"DejaVu Sans"
"IPAPGothic"
];
serif = [
"DejaVu Serif"
"IPAPMincho"
];
};
};
i18n.inputMethod = {
type = "fcitx5";
enable = true;
fcitx5.addons = with userPkgs; [
fcitx5-mozc
# fcitx5-gtk
catppuccin-fcitx5
];
};
# Necessary to use volta-installed node
# used by copilot
programs.nix-ld.enable = true;
# GnuPG
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
services.pcscd.enable = true;
services.locate = {
enable = true;
package = userPkgs.plocate;
localuser = null;
};
services.ollama.enable = true;
services.xserver.videoDrivers = [ "intel" ];
services.xserver.deviceSection = ''
Option "DRI" "2"
Option "TearFree" "true"
'';
services.xserver.xkb.extraLayouts."qwerty-fr" = {
languages = ["eng" "fra"];
symbolsFile = "${userPkgs.qwerty-fr}/share/X11/xkb/symbols/us_qwerty-fr";
description = "make qwerty-fr accessible as a layout in nixos";
};
users.users.dori.homeMode = "701";
}
config.nix
{
username = "dori";
gitUser = "AdrienLemaire";
host = "xps13-9320";
defaultPassword = "hydenix";
timezone = "Europe/Paris";
locale = "en_US.UTF-8";
# hardware config - sudo nixos-generate-config --show-hardware-config > hardware-configuration.nix
hardwareConfig = (toString ./hardware-configuration.nix);
# List of drivers to install in ./hosts/nixos/drivers.nix
drivers = [
"amdgpu"
"intel"
];
# List of nix modules to import in ./hosts/nixos/default.nix
nixpkgs.config.allowUnfree = true;
nixModules = [
(toString ./nix-modules.nix)
];
# List of nix modules to import in ./lib/mkConfig.nix
homeModules = [
(toString ./home-modules.nix)
];
# Enable CUPS to print documents.
services.printing.enable = true;
hyde = rec {
sddmTheme = "Corners";
enable = true;
# active theme, must be in themes list
activeTheme = "Catppuccin Mocha";
# list of themes to choose from
themes = [
# -- Default themes
"Catppuccin Mocha"
"Catppuccin Latte"
"Material Sakura"
"Rose Pine"
"Tokyo Night"
];
};
}
Some thoughts:
- this PR on nixos-hardware has been abandonned and could be reopened by someone capable
- we could add another PR to nixos/pkgs to upgrade ivsc-firmware to the latest version and remove the
let ... in
from ourhardwware-configuration.nix
@p-alik am I correct in thinking that nobody running nixos 24.11 or unstable has camera working at the moment ?
When digging through related github issues/PR from your discourse link, it seems like everything got resolved and merged, and that I'm probably the only one who can't manage to get his webcam working 😅
@AdrienLemaire, here the current state for my Dell XPS 13 Plus 9320
- the PR ivsc-firmware: add a1_prod symbolic links to fix ipu6 webcams #295508 made
let
inhardware-configuration.nix
obsolete. Camera works fine with Nixos 24.05
$ nix-info -m
- system: `"x86_64-linux"`
- host os: `Linux 6.6.43, NixOS, 24.05 (Uakari), 24.05.7376.b134951a4c9f`
- multi-user?: `yes`
- sandbox: `yes`
- version: `nix-env (Nix) 2.18.8`
- channels(root): `"nixos-24.05"`
- nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`
$ uname -r
6.6.43
nixos-rebuild switch --upgrade
fails on24.11
and onunstable
. Maybe rnhmjoj, the author of nixpkgs/commit/63f2d160a6ad12d8088e4b70140d83d720505326 can help with the matter.
error: xf86videointel has been removed as the package is unmaintained and the driver is no longer functional.
Please remove "intel" from `services.xserver.videoDrivers` and switch to the "modesetting" driver.
No success on 24.11 with services.xserver.videoDrivers = [ "modesetting" ];
suggested in Intel Graphics drivers {#sec-x11--graphics-cards-intel}
$ nix-info -m
- system: `"x86_64-linux"`
- host os: `Linux 6.12.9, NixOS, 24.11 (Vicuna), 24.11.713063.635e887b4852`
- multi-user?: `yes`
- sandbox: `yes`
- version: `nix-env (Nix) 2.24.11`
- channels(root): `"nixos-24.11"`
- nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`
$ uname -r
6.12.9
[ 23.956291] ------------[ cut here ]------------
[ 23.956294] WARNING: CPU: 11 PID: 736 at kernel/dma/mapping.c:597 dma_alloc_attrs+0x14e/0x160
[ 23.956302] Modules linked in: snd_soc_rt1316_sdw(+) regmap_sdw_mbq regmap_sdw snd_soc_dmic intel_ipu6_psys(O+) snd_sof_pci_intel_tgl snd_sof_pci_intel_cnl snd_sof_intel_hda_generic soundwire_intel soundwire_cadence snd_sof_intel_hda_common xt_conntrack snd_soc_hdac_hda snd_sof_intel_hda_mlink snd_sof_intel_hda snd_sof_pci snd_sof_xtensa_dsp iwlmvm(+) ip6t_rpfilter snd_sof ipt_rpfilter intel_ipu6_isys snd_sof_utils snd_soc_acpi_intel_match hid_sensor_als hid_sensor_custom_intel_hinge videobuf2_dma_sg hid_sensor_trigger soundwire_generic_allocation snd_soc_acpi industrialio_triggered_buffer videobuf2_memops xt_pkttype soundwire_bus kfifo_buf videobuf2_v4l2 hid_sensor_iio_common xt_LOG nf_log_syslog snd_soc_avs videobuf2_common industrialio ivsc_csi(+) xt_tcpudp ivsc_ace(+) mac80211 nft_compat hid_sensor_custom snd_soc_hda_codec snd_hda_ext_core hid_sensor_hub intel_uncore_frequency snd_soc_core intel_uncore_frequency_common x86_pkg_temp_thermal intel_powerclamp nls_iso8859_1 snd_compress nls_cp437 coretemp ac97_bus ptp
[ 23.956334] crct10dif_pclmul snd_pcm_dmaengine crc32_pclmul spi_pxa2xx_platform pps_core vfat intel_ishtp_hid joydev dw_dmac polyval_clmulni typec_displayport hid_multitouch fat xe libarc4 nf_tables sch_fq_codel dw_dmac_core polyval_generic mei_vsc spi_pxa2xx_core 8250_dw snd_hda_intel snd_usb_audio ghash_clmulni_intel btusb iwlwifi snd_intel_dspcfg cmdlinepart r8153_ecm snd_intel_sdw_acpi btrtl snd_usbmidi_lib processor_thermal_device_pci rapl cdc_ether btintel snd_hda_codec snd_ump spi_nor mei_hdcp processor_thermal_device iTCO_wdt btbcm mei_pxp processor_thermal_wt_hint usbnet snd_rawmidi intel_pmc_bxt drm_gpuvm dell_pc processor_thermal_rfim tpm_crb ucsi_acpi btmtk platform_profile intel_cstate drm_exec intel_rapl_msr watchdog mtd spi_ljca i2c_ljca gpio_ljca dell_laptop v4l2loopback(O) snd_hda_core typec_ucsi gpu_sched dell_wmi cfg80211 snd_seq_device processor_thermal_rapl bluetooth intel_uncore dell_wmi_ddv dell_smm_hwmon snd_ctl_led dell_wmi_sysman firmware_attributes_class psmouse ov01a10(O) snd_hwdep
[ 23.956373] intel_rapl_common loop intel_ish_ipc intel_ipu6 mei_me igen6_edac processor_thermal_wt_req snd_pcm r8152 tpm_tis drm_suballoc_helper typec intel_ishtp i2c_i801 dell_smbios spi_intel_pci processor_thermal_power_floor cpufreq_powersave intel_lpss_pci dcdbas mii intel_lpss libphy dell_wmi_descriptor wmi_bmof snd_timer tiny_power_button spi_intel hid_jabra mousedev snd v4l2_fwnode i2c_mux xt_nat mei idma64 usb_ljca rfkill 8250_pci drm_ttm_helper ipu_bridge edac_core tpm_tis_core processor_thermal_mbox roles button battery soundcore virt_dma i2c_smbus v4l2_async nf_nat intel_skl_int3472_tps68470 mei_vsc_hw tps68470_regulator int3403_thermal i2c_hid_acpi videodev nf_conntrack clk_tps68470 int340x_thermal_zone i2c_hid intel_pmc_core nf_defrag_ipv6 intel_vsec mc nf_defrag_ipv4 pmt_telemetry intel_skl_int3472_discrete libcrc32c int3400_thermal intel_hid pmt_class acpi_thermal_rel intel_skl_int3472_common pinctrl_tigerlake acpi_tad acpi_pad evdev sparse_keymap br_netfilter mac_hid ac veth tun serio_raw tap macvlan
[ 23.956413] bridge stp llc kvm_intel kvm fuse efi_pstore configfs nfnetlink efivarfs dmi_sysfs ip_tables x_tables autofs4 ext4 crc32c_generic crc16 mbcache jbd2 dm_crypt cbc encrypted_keys trusted asn1_encoder tee tpm rng_core libaescfb ecdh_generic ecc hid_generic usbhid hid i915 input_leds i2c_algo_bit led_class drm_buddy ttm atkbd intel_gtt libps2 nvme xhci_pci crc32c_intel vivaldi_fmap drm_display_helper thunderbolt sha512_ssse3 xhci_hcd sha256_ssse3 nvme_core sha1_ssse3 aesni_intel video gf128mul crypto_simd cryptd cec nvme_auth i8042 wmi rtc_cmos serio backlight dm_mod dax
[ 23.956444] CPU: 11 UID: 0 PID: 736 Comm: (udev-worker) Tainted: G U O 6.12.9 #1-NixOS
[ 23.956447] Tainted: [U]=USER, [O]=OOT_MODULE
[ 23.956448] Hardware name: Dell Inc. XPS 9320/0CW9KM, BIOS 2.14.0 07/09/2024
[ 23.956450] RIP: 0010:dma_alloc_attrs+0x14e/0x160
[ 23.956453] Code: ff ff 90 0f 0b 90 45 31 ff 5b 5d 4c 89 f8 41 5c 41 5d 41 5e 41 5f 31 d2 31 c9 31 f6 31 ff 45 31 c0 45 31 c9 c3 cc cc cc cc 90 <0f> 0b 90 e9 e9 fe ff ff 45 31 ff e9 1e ff ff ff 66 90 90 90 90 90
[ 23.956455] RSP: 0018:ffffafcb40bb7be0 EFLAGS: 00010246
[ 23.956457] RAX: 0000000000000000 RBX: ffffa37f8dc36000 RCX: 0000000000000cc0
[ 23.956459] RDX: ffffa37f9392d018 RSI: 0000000000002000 RDI: ffffa37f8dc36000
[ 23.956460] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[ 23.956461] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000002000
[ 23.956462] R13: ffffa37f9392d018 R14: 0000000000000000 R15: ffffa37fa2222028
[ 23.956464] FS: 00007fb38e453840(0000) GS:ffffa386ef780000(0000) knlGS:0000000000000000
[ 23.956466] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 23.956467] CR2: 000055b0ec66b190 CR3: 0000000103c58000 CR4: 0000000000f52ef0
[ 23.956469] PKRU: 55555554
[ 23.956470] Call Trace:
[ 23.956472] <TASK>
[ 23.956474] ? __warn+0x89/0x130
[ 23.956478] ? dma_alloc_attrs+0x14e/0x160
[ 23.956481] ? report_bug+0x172/0x1a0
[ 23.956485] ? handle_bug+0x61/0xb0
[ 23.956488] ? exc_invalid_op+0x17/0x80
[ 23.956490] ? asm_exc_invalid_op+0x1a/0x20
[ 23.956495] ? dma_alloc_attrs+0x14e/0x160
[ 23.956509] ipu6_psys_probe+0x321/0x640 [intel_ipu6_psys]
[ 23.956520] ? __pfx_ipu6_psys_probe+0x10/0x10 [intel_ipu6_psys]
[ 23.956528] auxiliary_bus_probe+0x3f/0xa0
[ 23.956532] really_probe+0xd3/0x3a0
[ 23.956535] ? __pfx___driver_attach+0x10/0x10
[ 23.956537] __driver_probe_device+0x78/0x160
[ 23.956540] driver_probe_device+0x1f/0xa0
[ 23.956543] __driver_attach+0xea/0x1e0
[ 23.956546] bus_for_each_dev+0x89/0xe0
[ 23.956548] bus_add_driver+0x14d/0x280
[ 23.956550] driver_register+0x5d/0x120
[ 23.956553] __auxiliary_driver_register+0x72/0xf0
[ 23.956556] ? __pfx_ipu6_psys_aux_driver_init+0x10/0x10 [intel_ipu6_psys]
[ 23.956563] do_one_initcall+0x58/0x330
[ 23.956568] do_init_module+0x90/0x280
[ 23.956573] __do_sys_init_module+0x18a/0x1c0
[ 23.956576] do_syscall_64+0xb7/0x210
[ 23.956579] entry_SYSCALL_64_after_hwframe+0x77/0x7f
[ 23.956582] RIP: 0033:0x7fb38df1891e
[ 23.956608] Code: 48 8b 0d f5 84 0d 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 af 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d c2 84 0d 00 f7 d8 64 89 01 48
[ 23.956609] RSP: 002b:00007ffd755f77d8 EFLAGS: 00000246 ORIG_RAX: 00000000000000af
[ 23.956612] RAX: ffffffffffffffda RBX: 000055fe96c6caa0 RCX: 00007fb38df1891e
[ 23.956613] RDX: 00007fb38de00304 RSI: 000000000026d908 RDI: 00007fb38c1a0010
[ 23.956614] RBP: 00007fb38c1a0010 R08: 0000000000000000 R09: 0000000000000000
[ 23.956615] R10: 0000000000000000 R11: 0000000000000246 R12: 00007fb38de00304
[ 23.956616] R13: 0000000000020000 R14: 000055fe96c79dd0 R15: 0000000000000000
[ 23.956619] </TASK>
[ 23.956620] ---[ end trace 0000000000000000 ]---
Opened an issue kernel intel_ipu6_psys bug
thank you !
@AdrienLemaire Hey what hardware do you use. I just finished my working camera setup (Dell xps 9315). I looked at the comments and your sensor, message output, looked very similiar to me. I have the same camera sensor so I bet my setup would work for you.
I uploaded my files here: https://github.com/CyberT3C/nixos-config
I commented the debug steps which gave me new information in: https://github.com/CyberT3C/nixos-config/blob/main/dell-xps-9315-cam.nix
Look at the end.
OVTI01A0 in general
- v4lloopback cannot communicate with this sensor, too old
- icamerascr which is included in alot ip6 packages is at the moment also not able to do
- libcamerasrc works
- If you want to use the device directly by /dev/videoXY make sure you have a discover logic bevor because the device will always end up with a different number in the end. Depends on boot timing.
nixos
- The most important step is to patch the linux kernel if your are < 6.16. This will fix the missing GPIO Pin 0x02.
- Don't use any nixos ipu6 specified camera packages. These will mess up everything. Libcamera works for OVTI01A0!
- Pipewire works like a charm for me. But in the file is also a service for v4l2 fallback if you need it in any case but then pipewire won't work anymore.
Unfurtunately there is no documentation in the nixos wiki for pipewire and the camera but the correct plugin for libcamera is already included in the nixos package. All you need is to activate it.
Webbrowser support: Last but not least enable pipewire in your favorit browser and don't forget about XDG.
TLDR: Use the nixos unstable channel with Linux Kerne 6.15.4 and import my config.
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
<nixos-hardware/dell/xps/13-9315>
./dell-xps-9315-mic.nix
./dell-xps-9315-cam.nix
];
boot.kernelPackages = pkgs.linuxPackages_6_15;
Thank you for the update @CyberT3C, unfortunately you solution doesn't work for me. Like in the comment on the issue Tracking Issue: Intel MIPI/IPU6 webcam-support, I'm facing
[ 30.325907] ivsc_ace intel_vsc-5db76cf6-0a68-4ed6-9b78-0361635e2447: switch camera to host failed: -110
Awesome, it works great to have webcam! Just, it fails in cheese, but all other programs I tried get it right:
Thank you so much. Note that to get sound right, I needed to run
alsactl init
.