pkgs: use comments uniformly

master v3.2.0
tv 7 years ago
parent 40fde9eaad
commit fc8a3802a0
  1. 102
      pkgs/default.nix

@ -1,23 +1,23 @@
with import ../lib;
# Collection of nix-writers.
#
# Purpose: Use your favourite language to generate
# an executable and package it in nix.
#
# How to use it: Every nix-writer has the form:
# writeLang "Name-of-exec" ''
# source code in <Lang>
# ''
#
# If the source code compiles in <Lang>,
# nix will generate an executable /nix/store/<SHA>-<Name-of-exec>
#
# Getting started:
#
# Switch into the example directory and call
# nix-build hello_world.nix.
#
/* Collection of nix-writers.
*
* Purpose: Use your favourite language to generate
* an executable and package it in nix.
*
* How to use it: Every nix-writer has the form:
* writeLang "Name-of-exec" ''
* source code in <Lang>
* ''
*
* If the source code compiles in <Lang>,
* nix will generate an executable /nix/store/<SHA>-<Name-of-exec>
*
* Getting started:
*
* Switch into the example directory and call
* nix-build hello_world.nix.
*/
with import ../lib;
pkgs: oldpkgs: {
exec = name: { filename, argv ? null, envp ? null, destination ? "" }:
@ -54,14 +54,13 @@ pkgs: oldpkgs: {
execBin = name: cfg:
pkgs.exec name (cfg // { destination = "/bin/${name}"; });
/* Base implementation for non-compiled executables.
Takes an interpreter, for example `${pkgs.bash}/bin/bash`
Examples:
writebash = makeScriptWriter { interpreter = "${pkgs.bash}/bin/bash"; }
makeScriptWriter { interpreter = "${pkgs.dash}/bin/dash"; } "hello" "echo hello world"
*/
# Base implementation for non-compiled executables.
# Takes an interpreter, for example `${pkgs.bash}/bin/bash`
#
# Examples:
# writebash = makeScriptWriter { interpreter = "${pkgs.bash}/bin/bash"; }
# makeScriptWriter { interpreter = "${pkgs.dash}/bin/dash"; } "hello" "echo hello world"
#
makeScriptWriter = { interpreter, check ? null }: name: text:
assert (with types; either absolute-pathname filename).check name;
pkgs.write (baseNameOf name) {
@ -72,22 +71,25 @@ pkgs: oldpkgs: {
};
};
/* Take a name and specification and build a derivation out of it
Examples:
write "name" { "/etc/test" = { text = "hello world"; }; }
write "name" { "" = { executable = true; text = "echo hello world"; }; }
write "name" { "/bin/test" = { executable = true; text = "echo hello world"; }; }
write "name" { "" = { executable = true;
check = "${pkgs.shellcheck}/bin/shellcheck";
text = ''
#!/bin/sh
echo hello world
'';
}; }
*/
# Take a name and specification and build a derivation out of it
# Examples:
# write "name" { "/etc/test" = { text = "hello world"; }; }
#
# write "name" { "" = { executable = true; text = "echo hello world"; }; }
#
# write "name" { "/bin/test" = { executable = true; text = "echo hello world"; }; }
#
# write "name" {
# "" = {
# executable = true;
# check = "${pkgs.shellcheck}/bin/shellcheck";
# text = ''
# #!/bin/sh
# echo hello world
# '';
# };
# }
#
write = name: specs0:
let
env = filevars // { passAsFile = attrNames filevars; };
@ -157,13 +159,13 @@ pkgs: oldpkgs: {
)
'';
/* Like writeScript but the first line is a shebang to bash
Example:
writeBash "example" ''
echo hello world
''
*/
# Like writeScript but the first line is a shebang to bash
#
# Example:
# writeBash "example" ''
# echo hello world
# ''
#
writeBash = pkgs.makeScriptWriter {
interpreter = "${pkgs.bash}/bin/bash";
};

Loading…
Cancel
Save