]> git.immae.eu Git - perso/Immae/Config/Nix.git/blob - default.nix
Use tagged nixpkgs instead of last unstable version to control upgrades
[perso/Immae/Config/Nix.git] / default.nix
1 with import (builtins.fetchTarball {
2 # FIXME: upgrade to nixpkgs 19 when stable and stick to stable
3 # versions
4 name = "nixos-unstable-2018-12-08";
5 url = https://github.com/nixos/nixpkgs/archive/61c3169a0e17d789c566d5b241bfe309ce4a6275.tar.gz;
6 sha256 = "0qbycg7wkb71v20rchlkafrjfpbk2fnlvvbh3ai9pyfisci5wxvq";
7 }) {};
8 let
9 stable_nixpkgs = import <nixpkgs> {};
10 mypkgs = {};
11 postHook = ''
12 header() {
13 echo -ne "\033[1;36m"
14 echo -n "$1"
15 echo -e "\033[0m"
16 }
17
18 echoCmd() {
19 printf "\033[1;34m%s:\033[0m" "$1"
20 shift
21 printf ' %q' "$@"
22 echo
23 }
24 '';
25
26 fetchedGithub = path:
27 let
28 json = lib.importJSON path;
29 in rec {
30 version = json.tag;
31 name = "${json.meta.name}-${version}";
32 src = fetchFromGitHub json.github;
33 };
34
35 fetchedGit = path:
36 let
37 json = lib.importJSON path;
38 in rec {
39 version = json.tag;
40 name = "${json.meta.name}-${version}";
41 src = fetchgit json.git;
42 };
43
44 mypkgs.ledger = (ledger.override { boost = boost166; }).overrideAttrs (_old:
45 fetchedGithub ./fetched/ledger.json // {
46 postInstall = "";
47 }
48 );
49
50 mypkgs.taskwarrior = taskwarrior.overrideAttrs (old: rec {
51 postInstall = ''${old.postInstall}
52 mkdir -p "$out/share/vim/vimfiles/ftdetect"
53 mkdir -p "$out/share/vim/vimfiles/syntax"
54 ln -s "../../../../share/doc/task/scripts/vim/ftdetect/task.vim" "$out/share/vim/vimfiles/ftdetect/"
55 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskrc.vim" "$out/share/vim/vimfiles/syntax/"
56 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskdata.vim" "$out/share/vim/vimfiles/syntax/"
57 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskedit.vim" "$out/share/vim/vimfiles/syntax/"
58 '';
59 });
60
61 mypkgs.vit = (vit.override { taskwarrior = mypkgs.taskwarrior; }).overrideAttrs (old:
62 fetchedGithub ./fetched/vit.json // {
63 buildInputs = old.buildInputs ++ [perlPackages.TryTiny perlPackages.TextCharWidth];
64 }
65 );
66
67 mypkgs.weboob = pythonPackages.weboob.overrideAttrs (old: rec {
68 postInstall = ''${old.postInstall or ""}
69 mkdir -p $out/share/bash-completion/completions/
70 cp tools/weboob_bash_completion $out/share/bash-completion/completions/weboob
71 '';
72 });
73
74 mypkgs.slrn = slrn.overrideAttrs (old: rec {
75 version = "1.0.3a";
76 name = "slrn-${version}";
77 src = fetchurl {
78 url = "http://www.jedsoft.org/releases/slrn/slrn-${version}.tar.bz2";
79 sha256 = "1b1d9iikr60w0vq86y9a0l4gjl0jxhdznlrdp3r405i097as9a1v";
80 };
81 configureFlags = old.configureFlags ++ [ "--with-slrnpull" ];
82 });
83
84 mypkgs.ldapvi = ldapvi.overrideAttrs (old: fetchedGit ./fetched/ldapvi.json);
85
86 nixos = import ./nixos_tools.nix {};
87
88 mypkgs.pass = (pass.withExtensions (exts: [ exts.pass-otp ])).overrideAttrs (old:
89 fetchedGit ./fetched/pass.json // {
90 patches = old.patches ++ [ ./patches/pass-fix-pass-init.patch ];
91 }
92 );
93
94 mypkgs.profanity = (profanity.override {
95 notifySupport = true;
96 inherit libnotify gpgme gdk_pixbuf;
97 python = python3;
98 }).overrideAttrs (old: rec {
99 configureFlags = old.configureFlags ++ [ "--enable-plugins" ];
100 });
101
102 mypkgs.weechat = weechat.override {
103 configure = { availablePlugins, ... }: {
104 plugins = with availablePlugins; [
105 (python.withPackages (ps: with ps; [websocket_client emoji]))
106 perl
107 ];
108 };
109 };
110
111 buildPerlPackage = perlPackages.buildPerlPackage;
112 mypkgs.note = buildPerlPackage rec {
113 name = "note-1.3.26";
114 src = fetchurl {
115 url = "mirror://cpan/authors/id/T/TL/TLINDEN/${name}.tar.gz";
116 sha256 = "1h645rnb5vpms48fcyzvp7cwwcbf9k5xq49w2bpniyzzgk2brjrq";
117 };
118 outputs = ["out" "man"];
119 propragatedBuildInputs = [ perlPackages.YAML ];
120 meta = with stdenv.lib; {
121 description = "A perl script for maintaining notes";
122 homepage = http://www.daemon.de/NOTE;
123 license = licenses.gpl3;
124 maintainers = with maintainers; [ { name = "T.v.Dein"; email = "tlinden@cpan.org"; } ];
125 platforms = platforms.unix;
126 };
127 };
128
129 mypkgs.terminal_velocity = with python2Packages; buildPythonApplication rec {
130 pname = "terminal-velocity-git";
131 version = "0.2.0";
132
133 patches = [
134 # FIXME: update this patch when version changes
135 ./patches/terminal_velocity_fix_build.patch
136 ./patches/terminal_velocity_sort_found_notes.patch
137 ];
138
139 propagatedBuildInputs = [ chardet urwid sh pyyaml ];
140 buildInputs = [ m2r restructuredtext_lint pygments ];
141
142 src = fetchPypi {
143 inherit pname version;
144 sha256 = "13yrkcmvh5h5fwnai61sbmqkrjyisz08n62pq0ada2lyyqf7g6b9";
145 };
146 };
147
148 mypkgs.mtop = buildPerlPackage rec {
149 name = "mtop-${version}";
150 version = "0.6.6";
151 src = fetchurl {
152 url = "http://downloads.sourceforge.net/project/mtop/mtop/v${version}/mtop-${version}.tar.gz";
153 sha256 = "0x0x5300b1j9i0xxk8rsrki0pspyzj2vylhzv8qg3l6j26aw0zrf";
154 };
155 outputs = ["out"];
156 buildInputs = [ perlPackages.DBI perlPackages.DBDmysql perlPackages.Curses ];
157
158 postInstall = ''
159 cd "$out"
160 preConfigure || true
161 '';
162 meta = with stdenv.lib; {
163 description = "MySQL top (monitor and examine slow queries)";
164 homepage = http://mtop.sourceforge.net/;
165 license = licenses.gpl3;
166 maintainers = with maintainers; [ { name = "Marc Prewitt"; email = "mprewitt@chelsea.net"; } ];
167 platforms = platforms.unix;
168 };
169 };
170
171 mypkgs.tiv = buildPerlPackage rec {
172 name = "tiv-${version}";
173 version = "2015";
174 src = fetchurl {
175 url = "http://xyne.archlinux.ca/projects/tiv/src/tiv-${version}.tar.xz";
176 sha256 = "1vq073v7z7vmcd57lhs4rf4jasji69cpjgkz4dykp94a77p1qq90";
177 };
178 outputs = ["out"];
179 buildInputs = [ perlPackages.PerlMagick ];
180 perlPreHookScript = ./hooks/tiv_builder.sh;
181 perlPreHook = ''
182 source ${perlPreHookScript}
183 '';
184 installPhase = ''
185 install -Dm755 tiv "$out/bin/tiv"
186 '';
187 };
188
189 mypkgs.cnagios = stdenv.mkDerivation (fetchedGithub ./fetched/cnagios.json // rec {
190 configureFlags = [
191 "--with-etc-dir=/etc/cnagios"
192 "--with-var-dir=/var/lib/naemon"
193 "--with-nagios-data=4"
194 ];
195
196 prePatch = ''
197 sed -i -e "s/-lcurses/-lncurses/" Makefile.in
198 '';
199 installPhase = ''
200 install -dm755 $out/share/doc/cnagios
201 install -Dm644 cnagiosrc $out/share/doc/cnagios/
202 install -Dm644 cnagios.help $out/share/doc/cnagios/
203 install -Dm644 cnagios.pl $out/share/doc/cnagios/
204 install -dm755 $out/bin
205 install -Dm755 cnagios $out/bin/
206 '';
207 propagatedBuildInputs = [ perl ncurses ];
208 });
209
210 mypkgs.nagios-cli = python2Packages.buildPythonApplication (fetchedGithub ./fetched/nagios-cli.json);
211
212 mypkgs.pg_activity = with python2Packages; buildPythonApplication (fetchedGithub ./fetched/pg_activity.json // rec {
213 propagatedBuildInputs = [ psycopg2 psutil ];
214 });
215
216 mypkgs.pgloader = stdenv.mkDerivation (fetchedGithub ./fetched/pgloader.json // rec {
217 buildInputs = [ sbcl cacert sqlite freetds libzip curl git openssl makeWrapper ];
218 LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [ sqlite libzip curl git openssl freetds ];
219 buildPhase = ''
220 export PATH=$PATH:$out/bin
221 export HOME=$TMPDIR
222 make pgloader
223 '';
224 dontStrip = true;
225 enableParallelBuilding = false;
226 installPhase = ''
227 install -Dm755 build/bin/pgloader "$out/bin/pgloader"
228 wrapProgram $out/bin/pgloader --prefix LD_LIBRARY_PATH : "${LD_LIBRARY_PATH}"
229 '';
230 });
231
232 mypkgs.pelican = python3Packages.pelican.overrideAttrs(old: fetchedGithub ./fetched/pelican.json // rec {
233 propagatedBuildInputs = old.propagatedBuildInputs ++ [ python3Packages.pyyaml ];
234 });
235
236 mypkgs.elinks = elinks.overrideAttrs (old:
237 fetchedGithub ./fetched/elinks.json // rec {
238 preConfigure = ''sh autogen.sh'';
239 buildInputs = old.buildInputs ++ [ gettext automake autoconf ];
240 configureFlags = [
241 "--disable-smb" "--without-x" "--enable-cgi"
242 "--enable-leds" "--enable-256-colors"
243 "--enable-html-highlight" "--with-zlib"
244 ];
245 patches = [];
246 }
247 );
248
249 mypkgs.neomutt = neomutt.overrideAttrs (old:
250 rec {
251 buildInputs = old.buildInputs ++ [ gdbm ];
252 configureFlags = old.configureFlags ++ [ "--gdbm" ];
253 }
254 );
255
256 # mypkgs.nagnu = stdenv.mkDerivation (fetchedGithub ./fetched/nagnu.json // rec {
257 # buildInputs = [ ncurses curl ];
258 # installPhase = ''
259 # mkdir -p $out/bin
260 # cp nagnu $out/bin
261 # mkdir -p $out/share/doc/nagnu
262 # cp nagnu.conf.sample $out/share/doc/nagnu
263 # mkdir -p $out/share/man/man8
264 # cp docs/nagnu.8 $out/share/man/man8
265 # '';
266 # });
267
268 mastodon = stdenv.mkDerivation (fetchedGithub ./fetched/mastodon.json // rec {
269 buildPhase = ''
270 export GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt
271 export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
272
273 bundle install --deployment --without development test
274 yarn install --pure-lockfile
275 '';
276 installPhase = ''
277 cp -a . $out
278 '';
279 propagatedBuildInputs = [
280 zlib icu libchardet git bundler yarn
281 protobuf protobufc libidn libpqxx nodejs
282 imagemagick ffmpeg libxml2 libxslt pkgconfig
283 autoconf bison libyaml readline ncurses libffi gdbm
284 jemalloc which postgresql python3
285 ];
286 });
287 # https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh
288 # https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks
289 in
290 mypkgs // {
291 inherit nix-prefetch-scripts;
292 inherit nix-generate-from-cpan;
293 inherit timewarrior;
294 inherit sc-im;
295 inherit pal;
296 inherit duplicity duply;
297 inherit pdftk;
298 inherit googler;
299 inherit jrnl;
300 inherit apg;
301 inherit newsboat;
302 inherit vcsh;
303 inherit xmr-stak;
304 inherit urlwatch;
305 inherit ranger;
306 inherit irssi;
307 inherit abook khard khal;
308 inherit graphicsmagick;
309 inherit youtube-dl;
310 inherit ncmpc;
311 inherit cadaver;
312 inherit mairix notmuch;
313 inherit ctags;
314 inherit s3cmd;
315 inherit solc; # solidity
316 inherit rtorrent;
317 inherit strace;
318 inherit vdirsyncer;
319 inherit w3m lynx links;
320 inherit gitRepo;
321 inherit valgrind;
322 inherit iotop iperf;
323 inherit keybase;
324 inherit bogofilter;
325 inherit mtr;
326 inherit nixops;
327 #inherit mastodon;
328 # todo: lx* ?, unrar, unzip, zeromq?
329 #inherit nextcloud-client;
330 #inherit nixos;
331 }