summaryrefslogtreecommitdiff
blob: 61cf9a2de1ccfb42bbcc630cf2eb31f89d109b63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit autotools flag-o-matic readme.gentoo-r1 user

DESCRIPTION="A purely functional package manager"
HOMEPAGE="https://nixos.org/nix"

SRC_URI="http://nixos.org/releases/${PN}/${P}/${P}.tar.xz"
LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="+etc_profile +gc doc sodium"

RDEPEND="
	app-arch/bzip2
	app-arch/xz-utils
	dev-db/sqlite
	dev-libs/openssl:0=
	net-misc/curl
	sys-libs/libseccomp
	sys-libs/zlib
	gc? ( dev-libs/boehm-gc[cxx] )
	doc? ( dev-libs/libxml2
		dev-libs/libxslt
		app-text/docbook-xsl-stylesheets
	)
	sodium? ( dev-libs/libsodium )
	dev-lang/perl:=
	dev-perl/DBD-SQLite
	dev-perl/WWW-Curl
	dev-perl/DBI
"
DEPEND="${RDEPEND}
	>=sys-devel/bison-2.6
	>=sys-devel/flex-2.5.35
	virtual/perl-ExtUtils-ParseXS
"

PATCHES=(
	"${FILESDIR}"/${PN}-1.11.6-systemd.patch
	"${FILESDIR}"/${PN}-1.11.6-per-user.patch
	"${FILESDIR}"/${PN}-1.11.6-respect-CXXFLAGS.patch
	"${FILESDIR}"/${PN}-1.11.6-respect-LDFLAGS.patch
	"${FILESDIR}"/${PN}-1.11.12-etc-fixes.patch
)

DISABLE_AUTOFORMATTING=yes
DOC_CONTENTS=" Quick start user guide on Gentoo:

[as root] enable nix-daemon service:
	[systemd] # systemctl enable nix-daemon
	[openrc]  # rc-update add nix-daemon
[as a user] relogin to get environment and profile update
[as a user] fetch nixpkgs update:
	\$ nix-channel --update
[as a user] install nix packages:
	\$ nix-env -i mc
[as a user] configure environment:
	Somewhere in .bash_profile you might want to set
	LOCALE_ARCHIVE=\$HOME/.nix-profile/lib/locale/locale-archive
	but please read https://github.com/NixOS/nixpkgs/issues/21820

Next steps:
	nix package manager user manual: http://nixos.org/nix/manual/
"

pkg_setup() {
	enewgroup nixbld
	for i in {1..10}; do
		# we list 'nixbld' twice to
		# both assign a primary group for user
		# and add a user to /etc/group
		enewuser nixbld${i} -1 -1 /var/empty nixbld,nixbld
	done
}

src_prepare() {
	default

	eautoreconf
}

src_configure() {
	econf \
		--localstatedir="${EPREFIX}"/nix/var \
		$(use_enable gc)
}

src_compile() {
	local make_vars=(
		OPTIMIZE=0 # disable hardcoded -O3
		V=1 # verbose build
	)
	emake "${make_vars[@]}"
}

src_install() {
	# TODO: emacs highlighter
	default

	readme.gentoo_create_doc

	# here we use an eager variant of something that
	# is lazily done by nix-daemon and root nix-env

	# TODO: will need a tweak for prefix
	keepdir             /nix/store
	fowners root:nixbld /nix/store
	fperms 1775         /nix/store

	keepdir             /nix/var/nix/profiles/per-user
	fperms 1777         /nix/var/nix/profiles/per-user

	# setup directories nix-daemon: /etc/profile.d/nix-daemon.sh
	keepdir             /nix/var/nix/gcroots/per-user
	fperms 1777         /nix/var/nix/gcroots/per-user

	newinitd "${FILESDIR}"/nix-daemon.initd nix-daemon

	if ! use etc_profile; then
		rm "${ED}"/etc/profile.d/nix.sh || die
		rm "${ED}"/etc/profile.d/nix-daemon.sh || die
	fi
}

pkg_postinst() {
	if ! use etc_profile; then
		ewarn "${EROOT}etc/profile.d/nix.sh was removed (due to USE=-etc_profile)."
	fi

	readme.gentoo_print_elog
}