Some stuff I've had to figure out that wasn't documented...
If you get this error:
/tmp/nix-build-ati-drivers-15.7-4.4.18.drv-0/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:194:22: fatal error: asm/i387.h: No such file or directory
... it's because the drivers are not compatible with your current kernel version. I've worked around it by adding this to my configuration.nix
, to switch to a 4.1 kernel:
{
# ...
boot.kernelPackages = plgs.linuxPackages_4_1;
# ...
}
git clone https://github.com/NixOS/nixpkgs.git /etc/nixos/nixpkgs-master
- Edit your
/etc/nixos/configuration.nix
like this:
{ config, pkgs, ... }:
let
nixpkgsMaster = import ./nixpkgs-master {};
stablePackages = with pkgs; [
# This is where your packages from stable nixpkgs go
];
masterPackages = with nixpkgsMaster; [
# This is where your packages from `master` go
nodejs-6_x
];
in {
# This is where your normal config goes, we've just added a `let` block
environment = {
# ...
systemPackages = stablePackages ++ masterPackages;
};
# ...
}
This works fine. You need your boot
section configured like this:
{
# ...
boot = {
loader = {
gummiboot.enable = false;
efi = {
canTouchEfiVariables = true;
};
grub = {
enable = true;
device = "nodev";
version = 2;
efiSupport = true;
};
};
};
# ...
}
The firewall is enabled by default. This is how you open a port:
{
# ...
networking = {
# ...
firewall = {
allowedTCPPorts = [ 24800 ];
};
};
# ...
}
- Read the following warning: GNOME's GConf implements a system-wide registry (like on Windows) that applications can use to store and retrieve internal configuration data. That concept is inherently impure, and it's very hard to support on NixOS.
- ... but, Guake isn't going to work otherwise, so follow the instructions here.
- Run the following to set up the GConf schema for Guake:
gconftool-2 --install-schema-file $(readlink $(which guake) | grep -Eo '\/nix\/store\/[^\/]+\/')"share/gconf/schemas/guake.schemas"
. This will not work if you have changed your Nix store path - in that case, modify the command accordingly.
You may need to re-login to make the changes apply.
Based on this post:
{
# ...
stablePackages = with pkgs; [
# ...
(python35Packages.youtube-dl.override {
ffmpeg = ffmpeg-full;
})
# ...
];
# ...
}
(To understand what stablePackages
is here, see this entry.)