Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. # confiration nix:
  2. # указать оверлеи
  3. nixpkgs.overlays = [ (import ./overlay.nix) ];
  4.  
  5.  
  6. # overlay.nix:
  7. # какая-то странная рекурсия. super в данном файле будет указывать на pkgs (все обычные пакеты, функции и т.д.). все новые переменные заданные в этом модуле окажутся в self, который потом смержится, как я понимаю, с pkgs.
  8. # стоит обратить внимание на последнюю строчку, self.unstable...: unstable задан в этом модуле и вызывается он из self.
  9. self: super: {
  10.  
  11. # импоритировать unstable канал в переменную
  12. # подключить канала можно через команду nix-channel (менять каналы от рута, не от юзера)
  13. unstable = import <nixos-unstable> {
  14. # задать конфиг для этого канала, аналогично тому, как это делается в текущем канале
  15. config.allowUnfree = true;
  16. };
  17.  
  18. # вызвать пакет, pkgs/xfsdump — директория
  19. xfsdump = super.callPackage ./pkgs/xfsdump {};
  20.  
  21. # аналогично
  22. qemu = super.callPackage ./pkgs/qemu {};
  23.  
  24. # перезаписать пакет zabbix.agent на версию импортированную из unstable
  25. zabbix.agent = self.unstable.zabbix34.agent;
  26.  
  27. }
  28.  
  29. # pkgs/xfsdump/default.nix
  30. # пример пакета:
  31. # тут много говна и костылей из-за странной полудохлой системы сборки проекта, но оно работает
  32. # обычно же в nix сборка пакетов более простая
  33. { stdenv, fetchurl, attr, bash, gettext, libuuid, libxfs, ncurses }:
  34.  
  35. stdenv.mkDerivation rec {
  36. name = "xfsdump-${version}";
  37. version = "3.1.8";
  38.  
  39. src = fetchurl {
  40. url = "https://mirrors.edge.kernel.org/pub/linux/utils/fs/xfs/xfsdump/${name}.tar.xz";
  41. sha256 = "11f5xph0w4cvmzm3zq8gahg3cg83dyj46yvnirlw4wxjwmxfc57d";
  42. };
  43.  
  44. buildInputs = [
  45. attr
  46. gettext
  47. libuuid
  48. libxfs
  49. ncurses
  50. ];
  51.  
  52. configureFlags = [
  53. "AWK=awk"
  54. "MAKE=make"
  55. "MSGFMT=msgfmt"
  56. "MSGMERGE=msgmerge"
  57. "SED=sed"
  58. "XGETTEXT=xgettext"
  59. ];
  60.  
  61. preInstall = ''
  62. for i in include/install-sh install-sh; do
  63. sed -i $i -e 's|/bin/bash|${bash}/bin/bash|'
  64. done
  65.  
  66. # hack: cant install binaries by using make install
  67. mkdir -p $out/bin
  68. for i in dump restore invutil; do
  69. cp $i/xfs$i $out/bin
  70. done
  71. '';
  72.  
  73. installTargets = "man-install";
  74.  
  75. meta = with stdenv.lib; {
  76. homepage = "https://git.kernel.org/pub/scm/fs/xfs/xfsdump-dev.git";
  77. description = "XFS filesystem incremental dump/restore utility";
  78. platforms = platforms.linux;
  79. };
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement