aboutsummaryrefslogtreecommitdiff
path: root/pkgs/misc/my-env
diff options
context:
space:
mode:
authorLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2012-03-14 18:59:09 +0000
committerLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2012-03-14 18:59:09 +0000
commit635d1d9bec82b5bd973404c2a360e55a1ef2a6b7 (patch)
tree4c53a1a9ab99c6d75649c38a2c4b179c01c52751 /pkgs/misc/my-env
parenta2889848434e42e3a48dac11e7576895a277341d (diff)
I try to improve the documentation on my-env
svn path=/nixpkgs/trunk/; revision=33075
Diffstat (limited to 'pkgs/misc/my-env')
-rw-r--r--pkgs/misc/my-env/default.nix71
1 files changed, 33 insertions, 38 deletions
diff --git a/pkgs/misc/my-env/default.nix b/pkgs/misc/my-env/default.nix
index 51c9e5a5418a..65d8feb9ede9 100644
--- a/pkgs/misc/my-env/default.nix
+++ b/pkgs/misc/my-env/default.nix
@@ -1,18 +1,34 @@
-# idea: provide nix environment for your developement actions
-# experimental
-
+# idea: provide a build environments for your developement of preference
/*
- # example:
- # add postgresql to environment and create ctags (tagfiles can be extracted from TAG_FILES)
- # add this to your ~/.nixpkgs/config.nix
+ #### examples of use: ####
+ # Add this to your ~/.nixpkgs/config.nix:
+ {
+ packageOverrides = pkgs : with pkgs;
+ sdlEnv = pkgs.myEnvFun {
+ name = "sdl";
+ buildInputs = [ stdenv SDL SDL_image SDL_ttf SDL_gfx cmake SDL_net pkgconfig];
+ };
+ };
+ }
+
+ # Then you can install it by: nix-env -i sdl-env
+ # And you can load it simply calling: load-sdl-env
+ # and in the new shell spawn you will have 'make' and 'gcc' finding the SDL headers and libs.
+ # Type 'exit', and you will exit it
+
+ ##### Another example, more complicated but achieving more: #######
+ # Make an environment to build nix from source and create ctags (tagfiles can
+ # be extracted from TAG_FILES) from every source package. Here would be a
+ # full ~/.nixpkgs/config.nix
{
packageOverrides = pkgs : with pkgs; with sourceAndTags;
- let simple = { name, buildInputs ? [], cTags ? [], extraCmds ? ""}:
+ let complicatedMyEnv = { name, buildInputs ? [], cTags ? [], extraCmds ? ""}:
pkgs.myEnvFun {
inherit name;
buildInputs = buildInputs
- ++ map (x : sourceWithTagsDerivation ( (addCTaggingInfo x ).passthru.sourceWithTags ) ) cTags;
+ ++ map (x : sourceWithTagsDerivation
+ ( (addCTaggingInfo x ).passthru.sourceWithTags ) ) cTags;
extraCmds = ''
${extraCmds}
HOME=${builtins.getEnv "HOME"}
@@ -21,41 +37,20 @@
};
in rec {
# this is the example we will be using
- nixEnv = simple {
- name = "mytestenv";
- buildInputs = [ libtool stdenv perl curl bzip2 openssl db45 autoconf automake zlib ];
- };
- # this is a second example (not covered here but still useful) - given by viric
- sdlEnv = pkgs.myEnvFun {
- name = "sdl";
- buildInputs = [ stdenv SDL SDL_image SDL_ttf SDL_gfx cmake SDL_net pkgconfig];
+ nixEnv = complicatedMyEnv {
+ name = "nix";
+ buildInputs = [ libtool stdenv perl curl bzip2 openssl db45 autoconf automake zlib ];
};
- # add more environments below here, just follow the syntax given in the above examples
};
}
- put this into your .bashrc
- loadEnv(){ . "${HOME}/.nix-profile/dev-envs/${1}"; }
-
- afterwards execute the new bash shell:
- $ bash
-
- the nix expression created is called: env-mytestenv and must appear when searching for it using:
- $ nix-env -qa '*' | grep nix
- env-mytestenv
-
- now we should build our newly defined custom environment using this command on a shell, so type:
- $ nix-env -iA env-mytestenv
-
- afterwards load the new environment using:
- $ loadEnv mytestenv
- one could also use this function instead:
- $ load-mytestenv-env
- the result using either command should be:
- env-mytestenv loaded
+ Now we should build our newly defined custom environment using this command on a shell, so type:
+ $ nix-env -i env-nix
- note: after you typed the above command you will lose all the other tools usually found in a shell you are used to. in this
- example you will not be able to type 'vi' to edit a file as vi is not included in the dependencies
+ One could also use this function instead:
+ $ load-nix-env
+ The result using either command should be:
+ env-nix loaded
*/
{ mkDerivation, substituteAll, pkgs } : { stdenv ? pkgs.stdenv, name, buildInputs ? [], cTags ? [], extraCmds ? ""} :