aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/default.nix102
1 files changed, 52 insertions, 50 deletions
diff --git a/pkgs/default.nix b/pkgs/default.nix
index 5bce622..bbfa3d3 100644
--- a/pkgs/default.nix
+++ b/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";
};