Some notes for tricky things I've run into while packaging things for Nix...
There is a code search available here. It's considerably more useful and accurate than GitHub's search.
This article explains that.
let | |
cross = { | |
config = "arm-none-eabi"; | |
libc = null; | |
}; | |
pkgs = import <nixpkgs> { crossSystem = cross; }; | |
in pkgs.buildEnv { | |
name = "arm-baremetal"; | |
paths = [ pkgs.binutilsCross pkgs.gccCrossStageStatic ]; | |
} |
Some notes for tricky things I've run into while packaging things for Nix...
There is a code search available here. It's considerably more useful and accurate than GitHub's search.
This article explains that.
nix-channel
and ~/.nix-defexpr
are gone. We'll use $NIX_PATH
(or user environment specific overrides configured via nix set-path
) to look up packages. Since $NIX_PATH
supports URLs nowadays, this removes the need for channels: you can just set $NIX_PATH
to e.g. https://nixos.org/channels/nixos-15.09/nixexprs.tar.xz
and stay up to date automatically.
By default, packages are selected by attribute name, rather than the name
attribute. Thus nix install hello
is basically equivalent to nix-env -iA hello
. The attribute name is recorded in the user environment manifest and used in upgrades. Thus (at least by default) hello
won't be upgraded to helloVariant
.
@vcunat suggested making this an arbitrary Nix expression rather than an attrpath, e.g. firefox.override { enableFoo = true; }
. However, such an expression would not have a key in the user environment, unlike an attrpath. Better to require an explicit flag for this.
TBD: How to deal with search path clashes.
#!/bin/sh | |
# | |
# Fetches SSH keys from a github user and starts openssh | |
# | |
if [ -z "$user" ]; then | |
user=zimbatm | |
fi | |
mkdir -m 0700 -p "$HOME/.ssh" |
#!/usr/bin/python | |
# Python program that can send out M-SEARCH messages using SSDP (in server | |
# mode), or listen for SSDP messages (in client mode). | |
import sys | |
from twisted.internet import reactor, task | |
from twisted.internet.protocol import DatagramProtocol | |
SSDP_ADDR = '239.255.255.250' |