I’m trying to package deCONZ.
I basically searched on github for existing derivations and tried to modify/use them.
So far I have this:
pkgs/deconz/default.nix
:
{ pkgs, stdenv, buildFHSUserEnv, fetchurl, dpkg, qt5, sqlite, hicolor_icon_theme, libcap, libpng, ... }:
let
version = "2.05.54";
name = "deconz-${version}";
in
rec {
deCONZ-deb = stdenv.mkDerivation {
#builder = ./builder.sh;
inherit name;
dpkg = dpkg;
src = fetchurl {
url = "https://www.dresden-elektronik.de/deconz/ubuntu/beta/${name}-qt5.deb";
sha256 = "0fmywfhgay98n0sm56vjv6sksydgaccfgrmbswswim0dam24j0la";
};
dontConfigure = true;
dontBuild = true;
dontStrip = true;
buildInputs = [ dpkg qt5.qtbase qt5.qtserialport qt5.qtwebsockets sqlite hicolor_icon_theme libcap libpng ];
unpackPhase = "dpkg-deb -x $src .";
installPhase = ''
cp -r usr/* .
cp -r share/deCONZ/plugins/* lib/
cp -r . $out
'';
};
deCONZ = buildFHSUserEnv {
name = "deCONZ";
targetPkgs = pkgs: [
deCONZ-deb
];
multiPkgs = pkgs: [
dpkg
qt5.qtbase
qt5.qtserialport
qt5.qtwebsockets
sqlite
hicolor_icon_theme
libcap
libpng
];
runScript = "deCONZ";
};
}
And I try to use it in pkgs/test.nix
like so:
let
pkgs = import <nixpkgs> { };
in
{
deconz = import ./deconz/default.nix {
pkgs = pkgs;
stdenv = pkgs.stdenv;
buildFHSUserEnv = pkgs.buildFHSUserEnv;
fetchurl = pkgs.fetchurl;
dpkg = pkgs.dpkg;
qt5 = pkgs.qt5;
sqlite = pkgs.sqlite;
hicolor_icon_theme = pkgs.hicolor_icon_theme;
libcap = pkgs.libcap;
libpng = pkgs.libpng;
};
}
When I run nix-env -f test.nix -i -A deconz
it seems to install the binary in my current nix-profile as it shows up on my path:
~ which deCONZ
/home/deni/.nix-profile/bin/deCONZ
~ ls -l $(which deCONZ)
lrwxrwxrwx 1 deni deni 61 Jan 1 1970 /home/deni/.nix-profile/bin/deCONZ -> /nix/store/bll4p4bafn91jw5sfm4sia86s52rsk97-deCONZ/bin/deCONZ
However when I try to run the command I get the following error:
~ deCONZ
** Message: 10:50:07.067: Requires Linux version >= 3.19 built with CONFIG_USER_NS
** Message: 10:50:07.073: Run: sudo sysctl -w kernel.unprivileged_userns_clone=1
** (process:18940): ERROR **: 10:50:07.074: main: unshare: No space left on device
[1] 18508 trace trap deCONZ
Now, I already set kernel.unprivileged_userns_clone=1
because I needed it for nix-channel --update
. Tried resetting it but it didn’t help.
I’m trying this on Debian
with nix 2.3.1
. Eventually, I wanna run this on NixOS but haven’t gotten that far (with regards to configuring a service and running it in headless mode because I have no X installed on my nixOS machine).
I’m pretty sure this has something to do with buildFHSUserEnv
but I don’t really understand it very well. I read about it here but don’t really know how to debug. Any advice is appreciated.