forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
sys-apps/nix: new package, The Purely Functional Package Manager
Nix is a source-based package manager with strong support for binary packages. It uses multiple tricks to make package source dependencies robust: - nix installs every package into it's own --prefix=. Example: /nix/store/xsqz79bzclgrgnnlffp3qa0g4wnbcrp1-firefox-50.1.0 - nix builds packages with PATH (and similar) only including explicitly listed depends. This eliminates automagic dependency. - nix tracks full environment where package was built. Once environment changes new package needs to be built. That's how you install firefox just for your current user: $ nix-env -iA nixpkgs.firefox Package-Manager: Portage-2.3.3, Repoman-2.3.1
- Loading branch information
Sergei Trofimovich
committed
Jan 17, 2017
1 parent
eb63461
commit ed44e58
Showing
7 changed files
with
170 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
DIST nix-1.11.6.tar.xz 621796 SHA256 e729d55a9276756108a56bc1cbe2e182ee2e4be2b59b1c77d5f0e3edd879b2a3 SHA512 a2d9eed52d6791e0649e3e456c8751ab3055573def110ffbf9645d2106313adf6c3868c0ecd69e5ba95c7a742c6fb92f69722adf7381584f7c2c4efe4b400d65 WHIRLPOOL 262ce049d9cf616aaa4d5bd612accee827f04b684d1ee36b3b63bfc2004fb9d1f19e1455196183fc259b81913d318acb519fa79271b4915369780efb8f02200b |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
NIX_REMOTE="daemon" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
By default created symlink poins to a directory not accessible by user. | ||
Make a symlink the same way NixOS does symlinking. | ||
diff --git a/scripts/nix-profile.sh.in b/scripts/nix-profile.sh.in | ||
index 672d1f0..e3b0978 100644 | ||
--- a/scripts/nix-profile.sh.in | ||
+++ b/scripts/nix-profile.sh.in | ||
@@ -6,3 +6,3 @@ if [ -n "$HOME" ]; then | ||
echo "creating $NIX_LINK" >&2 | ||
- _NIX_DEF_LINK=@localstatedir@/nix/profiles/default | ||
+ _NIX_DEF_LINK=@localstatedir@/nix/profiles/per-user/$USER/profile | ||
@coreutils@/ln -s "$_NIX_DEF_LINK" "$NIX_LINK" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
Make 'nix-daemon' a goof unit for 'systemctl enable nix-daemon.service'. | ||
diff --git a/misc/systemd/nix-daemon.service.in b/misc/systemd/nix-daemon.service.in | ||
index 5fc04a3..2565520 100644 | ||
--- a/misc/systemd/nix-daemon.service.in | ||
+++ b/misc/systemd/nix-daemon.service.in | ||
@@ -9 +9,4 @@ ExecStart=@@bindir@/nix-daemon nix-daemon --daemon | ||
KillMode=process | ||
+ | ||
+[Install] | ||
+WantedBy=multi-user.target |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
#!/sbin/openrc-run | ||
# Copyright 1999-2017 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
# $Id$ | ||
|
||
start() { | ||
ebegin "Starting ${SVCNAME}" | ||
start-stop-daemon --start --quiet --background --exec /usr/bin/nix-daemon | ||
eend ${?} | ||
} | ||
|
||
stop() { | ||
ebegin "Stopping ${SVCNAME}" | ||
start-stop-daemon --stop --quiet --exec /usr/bin/nix-daemon | ||
eend ${?} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> | ||
<pkgmetadata> | ||
<maintainer type="person"> | ||
<email>[email protected]</email> | ||
<name>Sergei Trofimovich</name> | ||
</maintainer> | ||
<maintainer type="project"> | ||
<email>[email protected]</email> | ||
<name>Gentoo Haskell</name> | ||
</maintainer> | ||
<use> | ||
<flag name="etc_profile">Install /etc/profile.d/ entry to inject nix support for all users.</flag> | ||
<flag name="gc">Enable garbage collection in the Nix expression evaluator (use <pkg>dev-libs/boehm-gc</pkg>).</flag> | ||
<flag name="sodium">Use <pkg>dev-libs/libsodium</pkg> for cryptography</flag> | ||
</use> | ||
</pkgmetadata> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
# Copyright 1999-2017 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
# $Id$ | ||
|
||
EAPI=6 | ||
|
||
inherit 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/zlib | ||
gc? ( dev-libs/boehm-gc ) | ||
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}"/${P}-systemd.patch | ||
"${FILESDIR}"/${P}-per-user.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 an user] relogin to get environment and profile update | ||
[as an user] fetch nixpkgs update: | ||
\$ nix-channel --update | ||
[as an user] install nix packages: | ||
\$ nix-env -i mc | ||
[as an 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 30000 | ||
for i in {1..10}; do | ||
# we list 'nixbld' twice to | ||
# both assign a primary group for user | ||
# and add an user to /etc/group | ||
enewuser nixbld${i} $((30000 +$i)) -1 /var/empty nixbld,nixbld | ||
done | ||
} | ||
|
||
src_configure() { | ||
econf \ | ||
--localstatedir="${EPREFIX}"/nix/var \ | ||
$(use_enable gc) | ||
} | ||
|
||
src_install() { | ||
# TODO: emacs highlighter | ||
default | ||
|
||
readme.gentoo_create_doc | ||
|
||
# here we an eager variant of something that | ||
# is lazily done by nix-daemo 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 | ||
|
||
doenvd "${FILESDIR}"/60nix-remote-daemon | ||
newinitd "${FILESDIR}"/nix-daemon.initd nix-daemon | ||
|
||
if ! use etc_profile; then | ||
rm "${ED}"/etc/profile.d/nix.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 | ||
} |