├── .gitignore ├── Makefile ├── README.md ├── bin └── apply ├── blackbox └── default.nix ├── config.nix ├── flexisip └── default.nix ├── hitch └── default.nix ├── tinyproxy └── default.nix ├── vault ├── default.nix └── node-packages.generated.nix └── xdiskusage └── default.nix /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | .#* 3 | *# 4 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | default: 2 | nix-env -r -iA nixos.desktop 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Local config and packages for Nix 2 | 3 | Comprising 4 | 5 | * My preferred packages for day-to-day operation on Linux (NixOS) and 6 | Darwin (vanilla nixpkgs installation) 7 | 8 | * Some derivations that aren't part of my user profile but that I use 9 | a lot anyway 10 | 11 | ## Quick start (clobbers any previously installed packages in the profile) 12 | 13 | ``` 14 | $ cd $HOME 15 | $ git clone git@github.com:telent/nix-local .nixpkgs 16 | $ nix-env -r -iA nixpkgs.desktop 17 | ``` 18 | 19 | ## Background 20 | 21 | I don't want to maintain a local fork of the nixpkgs repo with my 22 | personal packages, at least unless and until I think it's worth trying 23 | to get them merged. 24 | 25 | Instead I use `packageOverrides`. `packageOverrides` is (as far as I 26 | can work out) a function that should accept a set of packages and 27 | return another set of packages: nixpkgs calls it with the set of all 28 | available packages and merges whatever it returns onto the same set. 29 | 30 | There is a `config.nix` file in this repo. If you already have a 31 | `$HOME/.nixpkgs/config.nix` then merge the contents of this one with 32 | that one. If not, you can tell Nix to use this one by setting 33 | `$NIXPKGS_CONFIG` to point to it, or (may be easier) by creating a 34 | symlink from `$HOME/.nixpkgs` to this repo. 35 | 36 | 37 | ## Package notes 38 | 39 | ### Vault 40 | 41 | I started by running 42 | 43 | ``` 44 | `nix-build '' -A npm2nix`/bin/npm2nix package.json node-packages.generated.nix 45 | ``` 46 | 47 | but the generated default.nix seems to need significant manual editing: 48 | 49 | * first it gave me `Assertion failed: (!s.empty()), function showId, file src/libexpr/nixexpr.cc, line 33.` which seemed to be related to the definition of `tarball`. I replaced this with `fetchFromGitHub` 50 | 51 | * the `deps` definition in the gnerated expression produced errors about unknown attributes, so I replaced that line with 52 | 53 | ``` 54 | deps = (filter (v: nixType v == "derivation") (attrValues nodePackages)) 55 | ``` 56 | 57 | ### Blackbox 58 | 59 | Blackbox currently requires that GnuPG is on the search path and can 60 | be invoked as `gpg`. This is a packaging failure which I will fix as 61 | soon as I figure out how to. 62 | -------------------------------------------------------------------------------- /bin/apply: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | nix-env -r -iA nixos.desktop 3 | -------------------------------------------------------------------------------- /blackbox/default.nix: -------------------------------------------------------------------------------- 1 | { stdenv 2 | , fetchFromGitHub 3 | , gnupg ? pkgs.gnupg 4 | , pkgs ? import {} 5 | }: 6 | 7 | stdenv.mkDerivation rec { 8 | name = "blackbox-1b443ff682"; 9 | gitdir = fetchFromGitHub { 10 | owner = "StackExchange"; 11 | repo = "blackbox"; 12 | rev = "1b443ff682e0bda75267e625ccbca0b8bf8d1e79"; 13 | sha256 = "18jd9dfcjw836g38rj9bb1pcn738ar27j1k7ywgvakxi7d8na3zz"; 14 | }; 15 | src = [ gitdir ]; 16 | buildInputs = [ gnupg ]; 17 | patchPhase = '' 18 | sed -i 's@GPG:=gpg@GPG:=${gnupg}/bin/gpg2@' bin/_blackbox_common.sh 19 | ''; 20 | installPhase = '' 21 | mkdir -p $out/bin 22 | cp bin/* $out/bin 23 | ''; 24 | } 25 | -------------------------------------------------------------------------------- /config.nix: -------------------------------------------------------------------------------- 1 | with import {}; 2 | let linuxPaths = [ 3 | # xfce4_powerman 4 | acpi 5 | cdrkit 6 | firefox 7 | gimp 8 | mplayer 9 | mupdf 10 | tcpdump 11 | usbutils 12 | vimNox 13 | xorg.xcursorthemes 14 | wireshark 15 | xterm 16 | xorg.xwd 17 | imagemagick 18 | python27Packages.docker_compose 19 | powertop 20 | inkscape 21 | xdiskusage 22 | inetutils 23 | ]; 24 | darwinPaths = []; 25 | commonPaths = [ 26 | nix-repl 27 | git 28 | bind 29 | binutils 30 | emacs 31 | file 32 | gnumake 33 | gnupg 34 | iftop 35 | jq 36 | manpages 37 | mosh 38 | nmap 39 | pass 40 | python 41 | python27Packages.pip 42 | tmux 43 | units 44 | unzip 45 | vlc 46 | ]; 47 | in 48 | { 49 | # git = { 50 | # svnSupport = true; 51 | # }; 52 | 53 | packageOverrides = pkgs: rec { 54 | desktop = buildEnv { 55 | name = "desktop"; 56 | paths = with pkgs; [ nix cacert ] ++ 57 | commonPaths ++ 58 | (stdenv.lib.optionals stdenv.isDarwin darwinPaths) ++ 59 | (stdenv.lib.optionals stdenv.isLinux linuxPaths) ; 60 | }; 61 | blackbox = pkgs.callPackage ./blackbox {}; 62 | xdiskusage = pkgs.callPackage ./xdiskusage {}; 63 | tinyproxy = pkgs.callPackage ./tinyproxy {}; 64 | 65 | get_iplayer = lib.overrideDerivation pkgs.get_iplayer (a: rec { 66 | version = "3.01"; 67 | src = fetchFromGitHub { 68 | owner = "get-iplayer"; 69 | repo = "get_iplayer"; 70 | rev = "v${version}"; 71 | sha256 = "1g08amb08n5nn0v69dgz9g5rpy4yd0aw9iww1ms98rrmqnv6l46y"; 72 | }; 73 | }); 74 | 75 | jruby = lib.overrideDerivation pkgs.jruby (a: rec { 76 | version = "1.7.23"; 77 | name = "jruby-${version}"; 78 | dontStrip = true; 79 | src = pkgs.fetchurl { 80 | url = "http://jruby.org.s3.amazonaws.com/downloads/${version}/jruby-bin-${version}.tar.gz"; 81 | sha1 = "23iii8vwszrjzgzq0amwyazdxrppjpib"; 82 | }; 83 | # make "ruby" run jruby 84 | installPhase = '' 85 | ${a.installPhase} 86 | (cd $out/bin && ln -s jruby ruby) 87 | ''; 88 | }); 89 | }; 90 | } 91 | -------------------------------------------------------------------------------- /flexisip/default.nix: -------------------------------------------------------------------------------- 1 | {stdenv 2 | , fetchgit 3 | , autoconf 4 | , automake 5 | , git 6 | , libtool 7 | , ortp 8 | , popt 9 | , openssl 10 | , pkgs 11 | , mediastreamer 12 | , net_snmp 13 | , coreutils 14 | , pkgconfig }: 15 | 16 | let sofia_sip_bc = pkgs.stdenv.lib.overrideDerivation pkgs.sofia_sip (o : { 17 | name = "sofia-sip-bc-ec5145d"; 18 | src = fetchgit { 19 | sha256 = "1il4w81mnkwy4ivyf5zwicli2337zmyrq5b0nk234rlqzrz954hh"; 20 | url = "git://git.linphone.org/sofia-sip.git"; 21 | rev = "ec5145ddde0a0452999b08df4e3c61f3ff5f6730"; 22 | }; 23 | nativeBuildInputs = o.nativeBuildInputs ++ [ autoconf automake libtool pkgconfig ]; 24 | preConfigure = '' 25 | cp ${automake}/share/automake-1.15/{missing,install-sh} ./ 26 | ./autogen.sh 27 | ''; 28 | }); in stdenv.mkDerivation { 29 | name = "flexisip-6fe9a1"; 30 | src = fetchgit { 31 | url = "git://git.linphone.org/flexisip.git"; 32 | rev = "6fe9a12d26599fdcba09a96a1bf74c903ccf0d9c"; 33 | sha256 = "08q8j1khn0a2a7n3m3gzkcsfs7gv5zfq2si2yjsbgcsb7sh2k0l8"; 34 | }; 35 | preConfigure = '' 36 | ./autogen.sh 37 | ''; 38 | configureFlags = "--enable-odbc=no"; 39 | makeFlags = "ECHO=${coreutils}/bin/echo"; 40 | buildInputs = [net_snmp ortp sofia_sip_bc autoconf automake libtool pkgconfig openssl mediastreamer git ]; 41 | 42 | } 43 | -------------------------------------------------------------------------------- /hitch/default.nix: -------------------------------------------------------------------------------- 1 | {stdenv, fetchgit, fetchurl, openssl, libev}: 2 | 3 | stdenv.mkDerivation { 4 | name = "hitch-1.1.0"; 5 | 6 | src = fetchurl { 7 | url = "https://hitch-tls.org/source/hitch-1.1.0.tar.gz"; 8 | sha256 = "036pjlx7cxdlz14lscdcgcrxidkg9lgzvkkpcjsvivrjlln36x4s"; 9 | }; 10 | buildInputs = [ libev openssl ]; 11 | 12 | } 13 | 14 | -------------------------------------------------------------------------------- /tinyproxy/default.nix: -------------------------------------------------------------------------------- 1 | {stdenv, fetchgit, fetchurl, openssl, libev, asciidoc 2 | , docbook_xml_dtd_44 3 | , libxml2}: 4 | 5 | stdenv.mkDerivation { 6 | name = "tinyproxy-1.8.4"; 7 | 8 | src = fetchurl { 9 | url = "https://github.com/tinyproxy/tinyproxy/releases/download/1.8.4/tinyproxy-1.8.4.tar.xz"; 10 | sha256 = "002hi97687czhfkwsjkr174yvlp10224qi6gd5s53z230bgls7x4"; 11 | }; 12 | buildInputs = [ openssl asciidoc libxml2 ]; 13 | 14 | A2X_ARGS = "-d manpage -f manpage -L"; 15 | 16 | postPatch = '' 17 | substituteInPlace Makefile.in \ 18 | --replace @A2X@ "@A2X@ -L" 19 | ''; 20 | } 21 | 22 | -------------------------------------------------------------------------------- /vault/default.nix: -------------------------------------------------------------------------------- 1 | { stdenv 2 | , fetchFromGitHub 3 | , callPackage 4 | , pkgs ? import {} 5 | }: 6 | 7 | with stdenv.lib; 8 | 9 | let 10 | nodePackages = callPackage (import "${pkgs.path}/pkgs/top-level/node-packages.nix") { 11 | self = nodePackages; 12 | generated = ./node-packages.generated.nix; 13 | }; 14 | in nodePackages.buildNodePackage rec { 15 | gitdir = pkgs.fetchFromGitHub { 16 | owner = "jcoglan"; 17 | repo = "vault"; 18 | rev = "0.3.0"; 19 | sha256 = "1ffm90ygfqqxh4d5xcbwqvn7ycs5dbn9f3211if3rwd92jm0z99x"; 20 | }; 21 | 22 | version = "0.3.0"; 23 | name = "vault-${version}"; 24 | bin = true; 25 | src = [ gitdir ]; 26 | buildInputs = [] ; 27 | deps = (filter (v: nixType v == "derivation") (attrValues nodePackages)); 28 | peerDependencies = []; 29 | } 30 | -------------------------------------------------------------------------------- /vault/node-packages.generated.nix: -------------------------------------------------------------------------------- 1 | { self, fetchurl, fetchgit ? null, lib }: 2 | 3 | { 4 | by-spec."ctype"."0.5.4" = 5 | self.by-version."ctype"."0.5.4"; 6 | by-version."ctype"."0.5.4" = self.buildNodePackage { 7 | name = "ctype-0.5.4"; 8 | version = "0.5.4"; 9 | bin = false; 10 | src = fetchurl { 11 | url = "http://registry.npmjs.org/ctype/-/ctype-0.5.4.tgz"; 12 | name = "ctype-0.5.4.tgz"; 13 | sha1 = "5cfffbc266442ce8a1239a5f37091a085b7a3e6e"; 14 | }; 15 | deps = { 16 | }; 17 | optionalDependencies = { 18 | }; 19 | peerDependencies = []; 20 | os = [ ]; 21 | cpu = [ ]; 22 | }; 23 | by-spec."jsclass"."*" = 24 | self.by-version."jsclass"."4.0.5"; 25 | by-version."jsclass"."4.0.5" = self.buildNodePackage { 26 | name = "jsclass-4.0.5"; 27 | version = "4.0.5"; 28 | bin = false; 29 | src = fetchurl { 30 | url = "http://registry.npmjs.org/jsclass/-/jsclass-4.0.5.tgz"; 31 | name = "jsclass-4.0.5.tgz"; 32 | sha1 = "72257b324ea4774c781f0d67d3e243599dda1d0c"; 33 | }; 34 | deps = { 35 | }; 36 | optionalDependencies = { 37 | }; 38 | peerDependencies = []; 39 | os = [ ]; 40 | cpu = [ ]; 41 | }; 42 | "jsclass" = self.by-version."jsclass"."4.0.5"; 43 | by-spec."posix-argv-parser"."~0.4.2" = 44 | self.by-version."posix-argv-parser"."0.4.2"; 45 | by-version."posix-argv-parser"."0.4.2" = self.buildNodePackage { 46 | name = "posix-argv-parser-0.4.2"; 47 | version = "0.4.2"; 48 | bin = false; 49 | src = fetchurl { 50 | url = "http://registry.npmjs.org/posix-argv-parser/-/posix-argv-parser-0.4.2.tgz"; 51 | name = "posix-argv-parser-0.4.2.tgz"; 52 | sha1 = "7ac7f896c2de56c16d5543966d803c3798ccd7f3"; 53 | }; 54 | deps = { 55 | "when-1.3.0" = self.by-version."when"."1.3.0"; 56 | }; 57 | optionalDependencies = { 58 | }; 59 | peerDependencies = []; 60 | os = [ ]; 61 | cpu = [ ]; 62 | }; 63 | "posix-argv-parser" = self.by-version."posix-argv-parser"."0.4.2"; 64 | by-spec."posix-getopt"."1.1.0" = 65 | self.by-version."posix-getopt"."1.1.0"; 66 | by-version."posix-getopt"."1.1.0" = self.buildNodePackage { 67 | name = "posix-getopt-1.1.0"; 68 | version = "1.1.0"; 69 | bin = false; 70 | src = fetchurl { 71 | url = "http://registry.npmjs.org/posix-getopt/-/posix-getopt-1.1.0.tgz"; 72 | name = "posix-getopt-1.1.0.tgz"; 73 | sha1 = "8e258aca8f34d6906c159a32b0388360197e5698"; 74 | }; 75 | deps = { 76 | }; 77 | optionalDependencies = { 78 | }; 79 | peerDependencies = []; 80 | os = [ ]; 81 | cpu = [ ]; 82 | }; 83 | by-spec."pw"."~0.0.4" = 84 | self.by-version."pw"."0.0.4"; 85 | by-version."pw"."0.0.4" = self.buildNodePackage { 86 | name = "pw-0.0.4"; 87 | version = "0.0.4"; 88 | bin = false; 89 | src = fetchurl { 90 | url = "http://registry.npmjs.org/pw/-/pw-0.0.4.tgz"; 91 | name = "pw-0.0.4.tgz"; 92 | sha1 = "8015982ef8bebfd9d8eb8c795e751774871fde46"; 93 | }; 94 | deps = { 95 | }; 96 | optionalDependencies = { 97 | }; 98 | peerDependencies = []; 99 | os = [ ]; 100 | cpu = [ ]; 101 | }; 102 | "pw" = self.by-version."pw"."0.0.4"; 103 | by-spec."ssh-agent"."~0.2.1" = 104 | self.by-version."ssh-agent"."0.2.3"; 105 | by-version."ssh-agent"."0.2.3" = self.buildNodePackage { 106 | name = "ssh-agent-0.2.3"; 107 | version = "0.2.3"; 108 | bin = true; 109 | src = fetchurl { 110 | url = "http://registry.npmjs.org/ssh-agent/-/ssh-agent-0.2.3.tgz"; 111 | name = "ssh-agent-0.2.3.tgz"; 112 | sha1 = "74ac9ffad6b7eca3c1674686b5613824243f86a9"; 113 | }; 114 | deps = { 115 | "ctype-0.5.4" = self.by-version."ctype"."0.5.4"; 116 | "posix-getopt-1.1.0" = self.by-version."posix-getopt"."1.1.0"; 117 | }; 118 | optionalDependencies = { 119 | }; 120 | peerDependencies = []; 121 | os = [ ]; 122 | cpu = [ ]; 123 | }; 124 | "ssh-agent" = self.by-version."ssh-agent"."0.2.3"; 125 | by-spec."vault-cipher"."~0.3.0" = 126 | self.by-version."vault-cipher"."0.3.1"; 127 | by-version."vault-cipher"."0.3.1" = self.buildNodePackage { 128 | name = "vault-cipher-0.3.1"; 129 | version = "0.3.1"; 130 | bin = false; 131 | src = fetchurl { 132 | url = "http://registry.npmjs.org/vault-cipher/-/vault-cipher-0.3.1.tgz"; 133 | name = "vault-cipher-0.3.1.tgz"; 134 | sha1 = "782e6a50585347c30371869d26cd80136502a45d"; 135 | }; 136 | deps = { 137 | }; 138 | optionalDependencies = { 139 | }; 140 | peerDependencies = []; 141 | os = [ ]; 142 | cpu = [ ]; 143 | }; 144 | "vault-cipher" = self.by-version."vault-cipher"."0.3.1"; 145 | by-spec."when"."https://github.com/cujojs/when/tarball/1.3.0" = 146 | self.by-version."when"."1.3.0"; 147 | by-version."when"."1.3.0" = self.buildNodePackage { 148 | name = "when-1.3.0"; 149 | version = "1.3.0"; 150 | bin = false; 151 | src = fetchurl { 152 | url = "https://github.com/cujojs/when/tarball/1.3.0"; 153 | name = "when-1.3.0.tgz"; 154 | sha256 = "980055486d35ed01dd101d453322a762dc8356e87f0ad1f02962b512c682b6fe"; 155 | }; 156 | deps = { 157 | }; 158 | optionalDependencies = { 159 | }; 160 | peerDependencies = []; 161 | os = [ ]; 162 | cpu = [ ]; 163 | }; 164 | } 165 | -------------------------------------------------------------------------------- /xdiskusage/default.nix: -------------------------------------------------------------------------------- 1 | {stdenv, fetchgit, fltk13, autoconf}: 2 | 3 | stdenv.mkDerivation { 4 | name = "xdiskusage-1.51"; 5 | 6 | src = fetchgit { 7 | url = "git://git.code.sf.net/p/xdiskusage/git"; 8 | rev = "2fa92f0544169fbf0173dfbfd519488a16b641af"; 9 | sha256 = "0ldqrcf250sncm6arilqf6170bqykqa1kqfd8f1wd4vxnnp29kxl"; 10 | }; 11 | preConfigure = '' 12 | autoconf 13 | ''; 14 | buildInputs = [ fltk13 autoconf ]; 15 | 16 | } 17 | 18 | --------------------------------------------------------------------------------