Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions pkgs/development/libraries/ccnx/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{ stdenv, fetchurl, openssl, expat, libpcap }:
let
version = "0.8.2";
in
stdenv.mkDerivation {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO, it's better to rewrite as

stdenv.mkDerivation rec {
  name = "ccnx-${version}";
  version = "0.8.2";

(No let is needed)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which one is better: let or rec?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-recursive attribute sets are preferable because they are cheaper to evaluate. I believe the actual difference is miniscule in practice, though, and both let and rec styles are used in Nixpkgs depending on the personal preference of the package's maintainer.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Polluting the shell environment with $version might be another nit-picky reason, but I agree it's mostly a matter of personal taste.

name = "ccnx-${version}";
src = fetchurl {
url = "https://github.com/ProjectCCNx/ccnx/archive/ccnx-${version}.tar.gz";
sha256 = "1jyk7i8529821aassxbvzlxnvl5ly0na1qcn3v1jpxhdd0qqpg00";
};
buildInputs = [ openssl expat libpcap ];
preBuild = ''
mkdir -p $out/include
mkdir -p $out/lib
mkdir -p $out/bin
substituteInPlace csrc/configure --replace "/usr/local" $out
'';
meta = with stdenv.lib; {
homepage = "http://www.ccnx.org/";
description = "A Named Data Neworking (NDN) or Content Centric Networking (CCN) abstraction";
longDescription = ''
To address the Internet’s modern-day requirements with a better
fitting model, PARC has created a new networking architecture
called Content-Centric Networking (CCN), which operates by addressing
and delivering Content Objects directly by Name instead of merely
addressing network end-points. In addition, the CCN security model
explicitly secures individual Content Objects rather than securing
the connection or “pipe”. Named and secured content resides in
distributed caches automatically populated on demand or selectively
pre-populated. When requested by name, CCN delivers named content to
the user from the nearest cache, thereby traversing fewer network hops,
eliminating redundant requests, and consuming less resources overall.
'';
license = licenses.gpl2;
platforms = stdenv.lib.platforms.unix;
maintainers = [ maintainers.sjmackenzie ];
};
}
2 changes: 2 additions & 0 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4880,6 +4880,8 @@ let

capnproto = callPackage ../development/libraries/capnproto { };

ccnx = callPackage ../development/libraries/ccnx { };

cimg = callPackage ../development/libraries/cimg { };

scmccid = callPackage ../development/libraries/scmccid { };
Expand Down