[prev in list] [next in list] [prev in thread] [next in thread]
List: nix-dev
Subject: Re: [Nix-dev] nix-bundle: Bundle Nix derivations to run anywhere
From: Maarten Hoogendoorn <maarten () moretea ! nl>
Date: 2017-02-07 11:57:25
Message-ID: CAHcRk1KoNZC_Xhc7WWc8XeE43AVqjx0vT+CcGbanwaHnahqb4Q () mail ! gmail ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
It could also be used to implement an offline NixOS installer. I guess it
needs to run as root given that you're setting up a chroot env?
Op 7 feb. 2017 12:50 p.m. schreef "Shea Levy" <shea@shealevy.com>:
+1! This is really cool.
Tomasz Czy=C5=BC <tomasz.czyz@gmail.com> writes:
> I would vote for mirroring this tool in nixos github namespace (or even
> trying to make this project official one) as it can have big impact of
> propagating/implementing nix ideas into environments where it's not
> straight forward to use it.
>
> What do you think people?
>
> 2017-02-07 11:31 GMT+00:00 Tomasz Czy=C5=BC <tomasz.czyz@gmail.com>:
>
>> Matthew,
>> very good tool, thank you for sharing.
>>
>> 2017-02-07 10:32 GMT+00:00 Domen Ko=C5=BEar <domen@dev.si>:
>>
>>> Awesome! I will need this very soon, good timing :)
>>>
>>> On Tue, Feb 7, 2017 at 11:30 AM, Moritz Ulrich <moritz@tarn-vedra.de>
>>> wrote:
>>>
>>>>
>>>> Hey Matthew,
>>>>
>>>> This sounds great! I'll give it a try :-)
>>>>
>>>> One question: Will it create a persistent /nix directory on the machin=
e
>>>> the generated binary is running?
>>>>
>>>> Cheers
>>>> Moritz
>>>>
>>>> Matthew Bauer <mjbauer95@gmail.com> writes:
>>>>
>>>> > GitHub page: https://github.com/matthewbauer/nix-bundle
>>>> >
>>>> > I just wanted to post about a little project I've been working on.
I'm
>>>> > calling it "nix-bundle".
>>>> >
>>>> > Basically, what it does is: take a Nix closure, compress it into a
>>>> > tarball, and turn that tarball into an executable using "Arx". The
>>>> > final result looks like a plain shell script, but actually has a
>>>> > tarball closure appended to it. When you run that script, Arx will
>>>> > execute "nix-user-chroot" (which is included in the closure) which
>>>> > will setup a /nix/ directory, then execute a target executable. All
of
>>>> > this should work "out of the box" for any Nix derivation folder with
a
>>>> > valid executable.
>>>> >
>>>> > For example, to generate a "hello" bundle:
>>>> >
>>>> > ./nix-bundle.sh hello /bin/hello
>>>> >
>>>> > "hello" specifies pkgs.hello and /bin/hello specifies the file
>>>> > ${pkgs.helloi}/bin/hello to be executed. The output file will just b=
e
>>>> > called "hello".
>>>> >p
>>>> > The result is a "bundle" that can run without Nix being installed! N=
o
>>>> > external dependencies are needed because they are all contained
within
>>>> > the Nix closure.
>>>> >
>>>> > There are two main drawbacks: slow startup and large file size.
>>>> > Extracting the tarball takes time and this adds on to startup times.
>>>> > Also, because everything is included from the Nix closure,
complicated
>>>> > apps tend to be much larger because of the dependency tree.
>>>> >
>>>> > I've been experimenting with using AppImage as a format to package
>>>> > them in, but it is not currently ready yet.
>>>> > _______________________________________________
>>>> > nix-dev mailing list
>>>> > nix-dev@lists.science.uu.nl
>>>> > http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>>>
>>>> --
>>>>
>>>> _______________________________________________
>>>> nix-dev mailing list
>>>> nix-dev@lists.science.uu.nl
>>>> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>>>
>>>>
>>>
>>> _______________________________________________
>>> nix-dev mailing list
>>> nix-dev@lists.science.uu.nl
>>> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>>
>>>
>>
>>
>> --
>> Tomasz Czy=C5=BC
>>
>
>
>
> --
> Tomasz Czy=C5=BC
> _______________________________________________
> nix-dev mailing list
> nix-dev@lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev
_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev
[Attachment #5 (text/html)]
<div dir="auto">It could also be used to implement an offline NixOS installer. I \
guess it needs to run as root given that you're setting up a chroot \
env?</div><div class="gmail_extra"><br><div class="gmail_quote">Op 7 feb. 2017 12:50 \
p.m. schreef "Shea Levy" <<a \
href="mailto:shea@shealevy.com">shea@shealevy.com</a>>:<br \
type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px \
#ccc solid;padding-left:1ex">+1! This is really cool.<br> <div \
class="elided-text">Tomasz Czyż <<a \
href="mailto:tomasz.czyz@gmail.com">tomasz.czyz@gmail.com</a>> writes:<br> <br>
> I would vote for mirroring this tool in nixos github namespace (or even<br>
> trying to make this project official one) as it can have big impact of<br>
> propagating/implementing nix ideas into environments where it's not<br>
> straight forward to use it.<br>
><br>
> What do you think people?<br>
><br>
> 2017-02-07 11:31 GMT+00:00 Tomasz Czyż <<a \
href="mailto:tomasz.czyz@gmail.com">tomasz.czyz@gmail.com</a>>:<br> ><br>
>> Matthew,<br>
>> very good tool, thank you for sharing.<br>
>><br>
>> 2017-02-07 10:32 GMT+00:00 Domen Kožar <<a \
href="mailto:domen@dev.si">domen@dev.si</a>>:<br> >><br>
>>> Awesome! I will need this very soon, good timing :)<br>
>>><br>
>>> On Tue, Feb 7, 2017 at 11:30 AM, Moritz Ulrich <<a \
href="mailto:moritz@tarn-vedra.de">moritz@tarn-vedra.de</a>><br> >>> \
wrote:<br> >>><br>
>>>><br>
>>>> Hey Matthew,<br>
>>>><br>
>>>> This sounds great! I'll give it a try :-)<br>
>>>><br>
>>>> One question: Will it create a persistent /nix directory on the \
machine<br> >>>> the generated binary is running?<br>
>>>><br>
>>>> Cheers<br>
>>>> Moritz<br>
>>>><br>
>>>> Matthew Bauer <<a \
href="mailto:mjbauer95@gmail.com">mjbauer95@gmail.com</a>> writes:<br> \
>>>><br> >>>> > GitHub page: <a \
href="https://github.com/matthewbauer/nix-bundle" rel="noreferrer" \
target="_blank">https://github.com/<wbr>matthewbauer/nix-bundle</a><br> \
>>>> ><br> >>>> > I just wanted to post about a little \
project I've been working on. I'm<br> >>>> > calling it \
"nix-bundle".<br> >>>> ><br>
>>>> > Basically, what it does is: take a Nix closure, compress it \
into a<br> >>>> > tarball, and turn that tarball into an executable \
using "Arx". The<br> >>>> > final result looks like a plain \
shell script, but actually has a<br> >>>> > tarball closure appended \
to it. When you run that script, Arx will<br> >>>> > execute \
"nix-user-chroot" (which is included in the closure) which<br> \
>>>> > will setup a /nix/ directory, then execute a target executable. \
All of<br> >>>> > this should work "out of the box" for any \
Nix derivation folder with a<br> >>>> > valid executable.<br>
>>>> ><br>
>>>> > For example, to generate a "hello" bundle:<br>
>>>> ><br>
>>>> > ./nix-bundle.sh hello /bin/hello<br>
>>>> ><br>
>>>> > "hello" specifies pkgs.hello and /bin/hello specifies \
the file<br> >>>> > ${pkgs.helloi}/bin/hello to be executed. The \
output file will just be<br> >>>> > called "hello".<br>
>>>> >p<br>
>>>> > The result is a "bundle" that can run without Nix \
being installed! No<br> >>>> > external dependencies are needed \
because they are all contained within<br> >>>> > the Nix closure.<br>
>>>> ><br>
>>>> > There are two main drawbacks: slow startup and large file \
size.<br> >>>> > Extracting the tarball takes time and this adds on to \
startup times.<br> >>>> > Also, because everything is included from \
the Nix closure, complicated<br> >>>> > apps tend to be much larger \
because of the dependency tree.<br> >>>> ><br>
>>>> > I've been experimenting with using AppImage as a format to \
package<br> >>>> > them in, but it is not currently ready yet.<br>
>>>> > ______________________________<wbr>_________________<br>
>>>> > nix-dev mailing list<br>
>>>> > <a \
href="mailto:nix-dev@lists.science.uu.nl">nix-dev@lists.science.uu.nl</a><br> \
>>>> > <a href="http://lists.science.uu.nl/mailman/listinfo/nix-dev" \
rel="noreferrer" target="_blank">http://lists.science.uu.nl/<wbr>mailman/listinfo/nix-dev</a><br>
>>>><br>
>>>> --<br>
>>>><br>
>>>> ______________________________<wbr>_________________<br>
>>>> nix-dev mailing list<br>
>>>> <a href="mailto:nix-dev@lists.science.uu.nl">nix-dev@lists.science.uu.nl</a><br>
>>>> <a href="http://lists.science.uu.nl/mailman/listinfo/nix-dev" \
rel="noreferrer" target="_blank">http://lists.science.uu.nl/<wbr>mailman/listinfo/nix-dev</a><br>
>>>><br>
>>>><br>
>>><br>
>>> ______________________________<wbr>_________________<br>
>>> nix-dev mailing list<br>
>>> <a href="mailto:nix-dev@lists.science.uu.nl">nix-dev@lists.science.uu.nl</a><br>
>>> <a href="http://lists.science.uu.nl/mailman/listinfo/nix-dev" \
rel="noreferrer" target="_blank">http://lists.science.uu.nl/<wbr>mailman/listinfo/nix-dev</a><br>
>>><br>
>>><br>
>><br>
>><br>
>> --<br>
>> Tomasz Czyż<br>
>><br>
><br>
><br>
><br>
> --<br>
> Tomasz Czyż<br>
> ______________________________<wbr>_________________<br>
> nix-dev mailing list<br>
> <a href="mailto:nix-dev@lists.science.uu.nl">nix-dev@lists.science.uu.nl</a><br>
> <a href="http://lists.science.uu.nl/mailman/listinfo/nix-dev" rel="noreferrer" \
target="_blank">http://lists.science.uu.nl/<wbr>mailman/listinfo/nix-dev</a><br> \
</div><br>______________________________<wbr>_________________<br> nix-dev mailing \
list<br> <a href="mailto:nix-dev@lists.science.uu.nl">nix-dev@lists.science.uu.nl</a><br>
<a href="http://lists.science.uu.nl/mailman/listinfo/nix-dev" rel="noreferrer" \
target="_blank">http://lists.science.uu.nl/<wbr>mailman/listinfo/nix-dev</a><br> \
<br></blockquote></div><br></div>
_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic