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