jiebi/CodeConvo huggingface dataset:
Code change:
<ins> # HG changeset patch # User John Donoghue <john.donoghue@ieee.org> # Date 1652358904 14400 #      Thu May 12 08:35:04 2022 -0400 # Branch stable # Node ID 8c940cfcce257369677c09154da2aab2c56eaa79 # Parent  63710f3bd9811c2d206ac9e7b4f47cf06c47e153 * scripts/pkg/private/build.m: check configure and Makefile exist before trying to unlink them (Bug #62436) diff -r 63710f3bd981 -r 8c940cfcce25 scripts/pkg/private/build.m --- a/scripts/pkg/private/build.m	Wed May 11 09:44:55 2022 -0700 +++ b/scripts/pkg/private/build.m	Thu May 12 08:35:04 2022 -0400 @@ -77,8 +77,12 @@ else arch_abi = getarch (); configure_make (desc, build_root, verbose); -      unlink (fullfile (build_root, "src", "configure")); -      unlink (fullfile (build_root, "src", "Makefile")); +      if exist (fullfile (build_root, "src", "configure"), "file") +        unlink (fullfile (build_root, "src", "configure")); +      endif +      if exist (fullfile (build_root, "src", "Makefile"), "file") +        unlink (fullfile (build_root, "src", "Makefile")); +      endif endif tar_name = [desc.name "-" desc.version "-" arch_abi ".tar"]; tar_path = fullfile (builddir, tar_name); </ins>

Related discussion:
text: For example: fails similarly. The line that causes the failure according to my testing is: A list of some packages that didn't break: Could be this is an upstream issue.
So digging into it, this is an issue raised by Octave's package management system itself. Namely, this -statement from Line 80 in that file is the statement. It expects to remove a file, which is not existing. The reason the other packages did not break was because they either do not have a directory () or they actually do have a generated file (netcdf & control). You can technically solve this by adding an empty script to the directory. I manually did this, and the package built correctly again. As for why this change happened, I cannot tell. The particular statement shown did not change between 6.4.0 and 7.1.0 in the file.
Looks like
That's the exact issue. Seems like we will need to wait for upstream to fix it. How does this usually get handled
Seems like we should apply to the patch:
There are still 5 packages failing to build, but that is a lot fewer than before.
Code change:
version = "0.34"; src = fetchFromGitHub { <del> owner  = "MusicPlayerDaemon"; repo   = "mpc"; rev    = "v${version}"; sha256 = "sha256-2FjYBfak0IjibuU+CNQ0y9Ei8hTZhynS/BK2DNerhVw="; </del> <ins> owner = "MusicPlayerDaemon"; repo = pname; rev = "v${version}"; hash = "sha256-2FjYBfak0IjibuU+CNQ0y9Ei8hTZhynS/BK2DNerhVw="; </ins> }; <del> buildInputs = [ libmpdclient ] ++ lib.optionals stdenv.isDarwin [ libiconv ]; </del> <ins> buildInputs = [ libmpdclient ] ++ lib.optionals stdenv.isDarwin [ libiconv ]; </ins> <del> nativeBuildInputs = [ meson ninja pkg-config sphinx ]; </del> <ins> nativeBuildInputs = [ installShellFiles meson ninja pkg-config sphinx ]; postInstall = '' installShellCompletion --cmd mpc --bash $out/share/doc/mpc/contrib/mpc-completion.bash ''; postFixup = '' rm $out/share/doc/mpc/contrib/mpc-completion.bash ''; </ins> meta = with lib; { <del> description = "A minimalist command line interface to MPD"; </del> homepage = "https://www.musicpd.org/clients/mpc/"; <del> license = licenses.gpl2; maintainers = with maintainers; [ algorith ]; platforms = with platforms; linux ++ darwin; </del> <ins> description = "A minimalist command line interface to MPD"; changelog = "https://raw.githubusercontent.com/MusicPlayerDaemon/mpc/v${version}/NEWS"; license = licenses.gpl2Plus; maintainers = with maintainers; [ AndersonTorres ]; platforms = with platforms; unix; </ins> }; }

Related discussion:
text: The mpccli package is missing bashcompletion, even though a bash completion file is in the upstream repo under contrib/mpc- . Steps to reproduce the behavior: the package a terminal and type It tries only to complete with the contents of the current directory mpc should be completed with the mpc subcomands like , , etc. On a regular system, the file would have to be installed under /etc/bashcompletion.d/ . I don't know whats the nix(os) equivalent to this.
First, I am not the maintainer of this package. Nonetheless I will review this. Second, in Nixpkgs we do "almost" the same: we use a special hook that installs those extra files at the . Now I need to sleep; please wait a bit more.
Code change:
let inherit (builtins) toFile; <del> inherit (lib) concatMapStringsSep concatStringsSep mapAttrsToList </del> <ins> inherit (lib) concatMapStrings concatStringsSep mapAttrsToList </ins> mkIf mkEnableOption mkOption types literalExpression optionalString; cfg = config.services.strongswan; <del> ipsecSecrets = secrets: toFile "ipsec.secrets" ( concatMapStringsSep "n" (f: "include ${f}") secrets ); </del> <ins> ipsecSecrets = secrets: concatMapStrings (f: "include ${f}n") secrets; </ins> ipsecConf = {setup, connections, ca}: let

Related discussion:
text: Fail to connect to a l2tp + ipsec VPN after putting in all information. This happens on both Latest Gnome ISO and after NixOS installation. Message received on Gnome Desktop: Connection Failed Activation of network connection failed Steps to reproduce the behavior: Live Gnome ISO. l2tp + ipsec (strongswan) details in NetworkManager. on VPN connection. There are several fixes listed in this issue I was able to fix the problem by creating the file AFTER creating the connection and failing to connect once. (I also created the file BEFORE creating the connection, but that did not fix the issue.) After successfully connecting, this was content of file include The following is the failure output from journalctl From ISO system: host os: multi-user?: sandbox: version: channels(root): nixpkgs:
I was also having issues and tried the above suggested by and was able to connect only after a failed connection !
This seems to fix the bug May we have this to the default package?
Fix in
Code change:
let inherit (builtins) toFile; <del> inherit (lib) concatMapStringsSep concatStringsSep mapAttrsToList </del> <ins> inherit (lib) concatMapStrings concatStringsSep mapAttrsToList </ins> mkIf mkEnableOption mkOption types literalExpression optionalString; cfg = config.services.strongswan; <del> ipsecSecrets = secrets: toFile "ipsec.secrets" ( concatMapStringsSep "n" (f: "include ${f}") secrets ); </del> <ins> ipsecSecrets = secrets: concatMapStrings (f: "include ${f}n") secrets; </ins> ipsecConf = {setup, connections, ca}: let

Related discussion:
text: Phew, a big title! Trying to write down as much as I can before I forget. First, the last part: If doesn't exist, will show failing like: fixes this problem. NixOS should probably create this file. I'm not sure if this file should be writable or not, when it exists, I have only ever seen it contain: I don't know what writes that there. Now for can't edit L2TP VPNs, but (GUI) can, even though nm-applet doesn't work under sway. If you see this in the system logs: try enabling "legacy proposals" in nm-connection-editor's IPSec Settings and try again. system: host os: multi-user?: sandbox: version: channels(root): channels(grahamc): nixpkgs:
Side note, how do I know for sure fixes it? I erased my dozens of times nailing it down, reproducing it to exactly this.
I think the strongswan module creates that file and the actual L2TP plugin appends that line to this file.
Nice find that the strongswan module does create that file! I don't have the strongswan module enabled, it seems something else in the stack would periodically create this file?
I'm not sure what does create it eventually, but it appears the plugin expects the file to exist so we should just do exactly that. It doesn't help that it expects it to be mutable, so maybe we can handle this within the NM module to add more secrets. Though it would probably duplicate what the strongswan module does.
^ does this make sense to you?
So I just remembered about this module I have: maybe instead we should have the networkmanager do when it detects the l2tp plugin but I am not sure how to do that. Maybe we would need to introduce a new option in networkmanager to add the nm-l2tp plugin and create the file. I tend to connect physically to the private network and only as a last resort rely to nm-l2tp since it tends to not work regularly and I am not sure if it's blocked by the network or some l2tp breakage.
Code change:
let inherit (builtins) toFile; <del> inherit (lib) concatMapStringsSep concatStringsSep mapAttrsToList </del> <ins> inherit (lib) concatMapStrings concatStringsSep mapAttrsToList </ins> mkIf mkEnableOption mkOption types literalExpression optionalString; cfg = config.services.strongswan; <del> ipsecSecrets = secrets: toFile "ipsec.secrets" ( concatMapStringsSep "n" (f: "include ${f}") secrets ); </del> <ins> ipsecSecrets = secrets: concatMapStrings (f: "include ${f}n") secrets; </ins> ipsecConf = {setup, connections, ca}: let

Related discussion:
text: We could add an option to networkmanager in the same way there's one for strongswan there
Was there ever any follow up on :
Hello, I'm a bot and I thank you in the name of the community for opening this issue. To help our human contributors focus on the most-relevant reports, I check up on old issues to see if they're still relevant. This issue has had no activity for 180 days, and so I marked it as stale, but you can rest assured it will never be closed by a non-human. The community would appreciate your effort in checking if the issue is still valid. If it isn't, please close it. If the issue persists, and you'd like to remove the stale label, you simply need to leave a comment. Your comment can be as simple as "still important to me". If you'd like it to get more attention, you can ask for help by searching for maintainers and people that previously touched related code and @ mention them in a comment. You can use or on the relevant files to find them. Lastly, you can always ask for help at or at .
i guess, it's still relevant, maybe not so urgent. this helped me big time:
I marked this as stale due to inactivity. &rarr;
I just ran into this on 21.05. Seeing a log like this: <details<summaryjournalctl log when starting vpn</summary<pre<codecharon[2059]: 00[CFG] loading ca certificates from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.d/cacerts' charon[2059]: 00[CFG] loading aa certificates from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.d/aacerts' charon[2059]: 00[CFG] loading ocsp signer certificates from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.
Code change:
let inherit (builtins) toFile; <del> inherit (lib) concatMapStringsSep concatStringsSep mapAttrsToList </del> <ins> inherit (lib) concatMapStrings concatStringsSep mapAttrsToList </ins> mkIf mkEnableOption mkOption types literalExpression optionalString; cfg = config.services.strongswan; <del> ipsecSecrets = secrets: toFile "ipsec.secrets" ( concatMapStringsSep "n" (f: "include ${f}") secrets ); </del> <ins> ipsecSecrets = secrets: concatMapStrings (f: "include ${f}n") secrets; </ins> ipsecConf = {setup, connections, ca}: let

Related discussion:
text: d/ocspcerts' charon[2059]: 00[CFG] loading attribute certificates from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.d/acerts' charon[2059]: 00[CFG] loading crls from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.d/crls' charon[2059]: 00[CFG] loading secrets from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.secrets' charon[2059]: 00[CFG] expanding file expression '/etc/ipsec.secrets' failed charon[2059]: 00[CFG] opening triplet file /nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan- failed: No such file or directory charon[2059]: 00[CFG] loaded 0 RADIUS server configurations charon[2059]: 00[CFG] no script for ext-auth script defined,
Code change:
let inherit (builtins) toFile; <del> inherit (lib) concatMapStringsSep concatStringsSep mapAttrsToList </del> <ins> inherit (lib) concatMapStrings concatStringsSep mapAttrsToList </ins> mkIf mkEnableOption mkOption types literalExpression optionalString; cfg = config.services.strongswan; <del> ipsecSecrets = secrets: toFile "ipsec.secrets" ( concatMapStringsSep "n" (f: "include ${f}") secrets ); </del> <ins> ipsecSecrets = secrets: concatMapStrings (f: "include ${f}n") secrets; </ins> ipsecConf = {setup, connections, ca}: let

Related discussion:
text: disabled charon[2059]: 00[LIB] loaded plugins: charon unbound pkcs11 aesni aes des rc2 sha2 sha1 md5 mgf1 rdrand random nonce x509 revocation constraints acert pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey dnscert pem openssl af-alg fips-prf gmp curve25519 chapoly xcbc cmac hmac curl attr kernel-netlink resolve socket-default connmark forecast farp stroke vici updown eap-identity eap-sim eap-sim-pcsc eap-aka eap-aka-3gpp2 eap-simaka-pseudonym eap-simaka-reauth eap-md5 eap-gtc eap-mschapv2 eap-radius xauth-generic xauth-eap xauth-pam dhcp counters charon[2059]: 00[JOB] spawning 16 worker threads ipsecstarter[2058]: charon (2059) started after 660 ms charon[2059]: 11[CFG] received stroke: add connection '-ebef-4658-8991-' charon[2059]: 11[CFG] configuration '-ebef-4658-8991-' charon[2059]: 13[CFG] rereading secrets charon[2059]: 13[CFG] loading secrets from '/nix/store/va01sq5aqg6p7yakvpg2zlnsdj4pm9dj-strongswan-5.8.1/etc/ipsec.secrets' charon[2059]: 13[CFG] expanding file expression '/etc/ipsec.secrets' failed charon[2059]: 14[CFG] received stroke: initiate '-ebef-4658-8991-' charon[2059]: 15[IKE] initiating Main Mode IKESA -ebef-4658-8991-[1] to 123.111.111.111 charon[2059]: 15[IKE] initiating Main Mode IKESA -ebef-4658-8991-[1] to 123.111.111.
Code change:
let inherit (builtins) toFile; <del> inherit (lib) concatMapStringsSep concatStringsSep mapAttrsToList </del> <ins> inherit (lib) concatMapStrings concatStringsSep mapAttrsToList </ins> mkIf mkEnableOption mkOption types literalExpression optionalString; cfg = config.services.strongswan; <del> ipsecSecrets = secrets: toFile "ipsec.secrets" ( concatMapStringsSep "n" (f: "include ${f}") secrets ); </del> <ins> ipsecSecrets = secrets: concatMapStrings (f: "include ${f}n") secrets; </ins> ipsecConf = {setup, connections, ca}: let

Related discussion:
text: 111 charon[2059]: 15[ENC] generating IDPROT request 0 [ SA V V V V V ] charon[2059]: 15[NET] sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (304 bytes) charon[2059]: 03[NET] received packet: from 123.111.111.111[500] to 192.168.1.11[500] (204 bytes) charon[2059]: 03[ENC] parsed IDPROT response 0 [ SA V V V V V V ] charon[2059]: 03[IKE] received NAT-T (RFC 3947) vendor ID charon[2059]: 03[IKE] received draft-ietf-ipsec-nat-t-ike-03 vendor ID charon[2059]: 03[IKE] received draft-ietf-ipsec-nat-t-ike-02n vendor ID charon[2059]: 03[IKE] received draft-ietf-ipsec-nat-t-ike-02 vendor ID charon[2059]: 03[IKE] received draft-ietf-ipsec-nat-t-ike-00 vendor ID charon[2059]: 03[IKE] received DPD vendor ID charon[2059]: 03[CFG] selected proposal: IKE:AESCBC128/HMACSHA196/PRFHMACSHA1/MODP2048 charon[2059]: 03[ENC] generating IDPROT request 0 [ KE No NAT-D NAT-D ] charon[2059]: 03[NET] sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (372 bytes) charon[2059]: 04[NET] received packet: from 123.111.111.111[500] to 192.168.1.11[500] (356 bytes) charon[2059]: 04[ENC] parsed IDPROT response 0 [ KE No NAT-D NAT-D ] charon[2059]: 04[IKE] no shared key found for 192.168.1.11 - 123.111.111.
Code change:
let inherit (builtins) toFile; <del> inherit (lib) concatMapStringsSep concatStringsSep mapAttrsToList </del> <ins> inherit (lib) concatMapStrings concatStringsSep mapAttrsToList </ins> mkIf mkEnableOption mkOption types literalExpression optionalString; cfg = config.services.strongswan; <del> ipsecSecrets = secrets: toFile "ipsec.secrets" ( concatMapStringsSep "n" (f: "include ${f}") secrets ); </del> <ins> ipsecSecrets = secrets: concatMapStrings (f: "include ${f}n") secrets; </ins> ipsecConf = {setup, connections, ca}: let

Related discussion:
text: 111 charon[2059]: 04[ENC] generating INFORMATIONALV1 request [ N(INVALKE) ] charon[2059]: 04[NET] sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (56 bytes) NetworkManager[2277]: initiating Main Mode IKESA -ebef-4658-8991-[1] to 123.111.111.111 NetworkManager[2277]: generating IDPROT request 0 [ SA V V V V V ] NetworkManager[2277]: sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (304 bytes) NetworkManager[2277]: received packet: from 123.111.111.111[500] to 192.168.1.11[500] (204 bytes) NetworkManager[2277]: parsed IDPROT response 0 [ SA V V V V V V ] NetworkManager[2277]: received NAT-T (RFC 3947) vendor ID NetworkManager[2277]: received draft-ietf-ipsec-nat-t-ike-03 vendor ID NetworkManager[2277]: received draft-ietf-ipsec-nat-t-ike-02n vendor ID NetworkManager[2277]: received draft-ietf-ipsec-nat-t-ike-02 vendor ID NetworkManager[2277]: received draft-ietf-ipsec-nat-t-ike-00 vendor ID NetworkManager[2277]: received DPD vendor ID NetworkManager[2277]: selected proposal: IKE:AESCBC128/HMACSHA196/PRFHMACSHA1/MODP2048 NetworkManager[2277]: generating IDPROT request 0 [ KE No NAT-D NAT-D ] NetworkManager[2277]: sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (372 bytes) NetworkManager[2277]: received packet: from 123.111.111.111[500] to 192.168.1.11[500] (356 bytes) NetworkManager[2277]: parsed IDPROT response 0 [ KE No NAT-D NAT-D ] NetworkManager[2277]: no shared key found for 192.168.1.11 - 123.111.111.
Code change:
let inherit (builtins) toFile; <del> inherit (lib) concatMapStringsSep concatStringsSep mapAttrsToList </del> <ins> inherit (lib) concatMapStrings concatStringsSep mapAttrsToList </ins> mkIf mkEnableOption mkOption types literalExpression optionalString; cfg = config.services.strongswan; <del> ipsecSecrets = secrets: toFile "ipsec.secrets" ( concatMapStringsSep "n" (f: "include ${f}") secrets ); </del> <ins> ipsecSecrets = secrets: concatMapStrings (f: "include ${f}n") secrets; </ins> ipsecConf = {setup, connections, ca}: let

Related discussion:
text: 111 NetworkManager[2277]: generating INFORMATIONALV1 request [ N(INVALKE) ] NetworkManager[2277]: sending packet: from 192.168.1.11[500] to 123.111.111.111[500] (56 bytes) NetworkManager[2277]: establishing connection '-ebef-4658-8991-' failed NetworkManager[2283]: Stopping strongSwan IPsec. charon[2059]: 00[DMN] signal of type SIGINT received. Shutting down ipsecstarter[2058]: child 2059 (charon) has quit (exit code 0) ipsecstarter[2058]: ipsecstarter[2058]: charon stopped after 200 ms ipsecstarter[2058]: ipsec starter stopped nm-l2tp-service[2039]: gdbusmethodinvocationtake_error: assertion 'error != NULL' failed NetworkManager[954]: <warn[.6803] vpn-connection[0x24c60a0,-ebef-4658-8991-,"my-l2tp-vpn",0]: VPN connection: failed to connect: 'Message recipient disconnected from message bus without replying' .nm-applet-wrap[1470]: Failed to show notification: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Notifications was not provided by any .service files </pre</code</detailsRunning the following command fixed my error and allowed me to connect: The networking part of my only has .
This still appears relevant in 21.11. Adding this (as mentioned above) to my config appears to get an L2TP and IPSec VPN working with NetworkManager:
Still relevant in 22.05. I am confirming that with a clean install, trying to set up L2TP/IPsec VPNs fail with the following indicator: fixed the issue for me straight away as well.
Fix in
Code change:
message = "SSL is enabled for httpd, but sslServerCert and/or sslServerKey haven't been specified."; } ]; <del> warnings = map (cfg: ''apache-httpd's port option is deprecated. Use listen = [{/*ip = "*"; */ port = ${toString cfg.port};}]; instead'' ) (lib.filter (cfg: cfg.port != 0) allHosts); </del> <ins> warnings = map (cfg: "apache-httpd's extraSubservices option is deprecated. Most existing subservices have been ported to the NixOS module system. Please update your configuration accordingly.") (lib.filter (cfg: cfg.extraSubservices != []) allHosts); </ins> users.users = optionalAttrs (mainCfg.user == "wwwrun") (singleton { name = "wwwrun";

Related discussion:
text: I set up a brand new NixOS system with nothing but . After switching to the new configuration, I ran and was surprised to find in there in a and state. I poked around and it turns out that our module refers to in its section: It sort of makes sense, because presumably you want your webserver to spin up after your database, but it feels kinda icky to give completely unrelated (in principle) services dependencies on one another, especially when some of them might not even be on your system. I suppose we could make that entry conditional on , but I'm not sure what the pros and cons of that are.
Yes, I'd think it would better be conditional. Units should get reloaded on system switch IIRC, before starting new services, so I see no danger in that.
I think, this link should be broken unconditionally. In my scenario apache-httpd is used solely for SVN web interface, and while I have running Postgresql instance, they are orthogonal (postgresql is acompanied by tomcat container/nginx pair)
Perhaps, yeah. It also appears to depend on , which I think is a nixops-ism.
Code change:
<del> <section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" version="5.0" xml:id="sec-custom-packages"> <title>Adding Custom Packages</title> <para> It’s possible that a package you need is not available in NixOS. In that case, you can do two things. First, you can clone the Nixpkgs repository, add the package to your clone, and (optionally) submit a patch or pull request to have it accepted into the main Nixpkgs repository. This is described in detail in the <link xlink:href="https://nixos.org/nixpkgs/manual">Nixpkgs manual</link>. In short, you clone Nixpkgs: <screen> <prompt>$ </prompt>git clone https://github.com/NixOS/nixpkgs <prompt>$ </prompt>cd nixpkgs </screen> Then you write and test the package as described in the Nixpkgs manual. Finally, you add it to <literal>environment.systemPackages</literal>, e.g. <programlisting> <xref linkend="opt-environment.systemPackages"/> = [ pkgs.my-package ]; </programlisting> and you run <command>nixos-rebuild</command>, specifying your own Nixpkgs tree: <screen> <prompt># </prompt>nixos-rebuild switch -I nixpkgs=/path/to/my/nixpkgs</screen> </para> <para> The second possibility is to add the package outside of the Nixpkgs tree. For instance, here is how you specify a build of the <link xlink:href="https://www.gnu.org/software/hello/">GNU Hello</link> package directly in <filename>configuration.nix</filename>: <programlisting> <xref linkend="opt-environment.systemPackages"/> = let my-hello = with pkgs; stdenv.mkDerivation rec { name = "hello-2.8"; src = fetchurl { url = "mirror://gnu/hello/${name}.tar.gz"; sha256 = "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"; }; }; in [ my-hello ]; </programlisting> Of course, you can also move the definition of <literal>my-hello</literal> into a separate Nix expression, e.g. <programlisting> <xref linkend="opt-environment.systemPackages"/> = [ (import ./my-hello.nix) ]; </programlisting> where <filename>my-hello.nix</filename> contains: <programlisting> with import &lt;nixpkgs> {}; # bring all of Nixpkgs into scope stdenv.mkDerivation rec { name = "hello-2.8"; src = fetchurl { url = "mirror://gnu/hello/${name}.tar.gz"; sha256 = "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"; }; } </programlisting> This allows testing the package easily: <screen> <prompt>$ </prompt>nix-build my-hello.nix <prompt>$ </prompt>./result/bin/hello Hello, world! </screen> </para> </section> </del>

Related discussion:
text: This tracks the conversion of from DocBook to CommonMark per . here that you intend to work on this. (Please also post if you stop working on this.) a new branch of nixpkgs master. : change to . to . the contents from Docbook to . Follow . Use existing sections in the NixOS and Nixpkgs manual for inspiration. the CommonMark back to DocBook xml with: from nixpkgs root dir with: a preview server with: your work at on steps 5-9. it looks good, commit both the new file and the generated file, submit a PR and reference this issue.