►
From YouTube: NixOS Office Hours, 2020-01-10
Description
Today is a casual conversation, wherever participants want to go.
A
B
B
You'll
be
accepting
questions
on
the
RC
next
to
us
office,
hours
channel
as
well,
and
just
so
everyone
knows
everyone's
aware
that
these
could
these
calls.
Do
you
have
a
code
of
conduct
and
it's
the
contributor
government
and
I
will
actually
link
the
summary
of
what's
expected,
everyone
to
respect
throughout
the
call
in
the
Xoom
chat
and
on
IRC.
Okay,
let
me
do
that.
A
B
This
is
always
like
I,
pretty
like
confusing
topic
for
people,
because
usually,
if
I
think
contributors
tell
people
like
on
the
support
channels
or
like
on
github,
is
like:
oh,
the
patch
gets
merged
on
muster
or
it
gets
backward
and
you
just
have,
and
it's
not
actually
that's
not
actually
what
happens
it's
just
the
byproduct
of
that
is.
It
looks
like
a
bunch
of
waiting.
A
B
Luckily,
he
said
that
that
G
Chris
distance,
it
didn't
fall
silent
compared
to
me.
This
is
microphone
up
all
the
way
check.
A
A
A
Oops,
alright
I'm
gonna
assume
it's
fine.
Actually
complicated
computers
are
complicated,
make.
B
A
A
A
A
Is
actually
suspiciously
slow,
oh
boy,
alright,
so
this
is
where
it
gets
a
little
bit
confusing,
but
for
Nix
packages
unstable
we
have
this
job
set
called
trunk
and
you
can
see
here
roughly
every
four
hours
or
so
it
starts
a
new
evaluation
based
on
the
latest
version
of
master,
and
that
is
the
commit
here
on
the
right
side
of
the
same
foot.
Changes
is
the
committed
that
repository
that's
being
built
under
configuration.
You
can
see
that
it's
pulling
the
Dix
packages
repository
and
it
doesn't
have
a
specific
branch
specified
so
that
defaults
to
master.
A
B
A
A
A
It's
quite
new,
so
if
you
go
here,
you
can
see
each
branch
on
the
left,
the
current
commit
of
that
branch
and
then
the
job
set
for
which
in
Hydra
is
building
that
branch
and
creating
that
channel.
So
for
Nix
package
is
unstable.
We
can
see
it's
indeed
Nix
packages,
job
set
and
the
trunk
drop.
Sorry,
the
NICS
packages
project,
the
trunk
job
set
and
the
unstable
job.
This
job
is
just
basically
a
list
of
packages
that
we
want
to
ensure
build
every
single
time
that
we
issue
a
release.
A
A
D
A
If
we
check
out
maybe
the
1909
job
set
that
all
shows
some
loops,
Ron
link,
that'll
show
us
some
more
recent
passes
and
we
can.
We
can
look
at
a
few
different.
A
different
view
of
the
constituents
on
the
top
here
is
the
ID
of
the
evaluation
that
the
report
is
for
and
if
it's
green,
it
passed
everything
passed
and
if
it's
not
green,
then
it's
either
not
yet
done,
or
there
was
a
failure.
In
this
case
there
was
a
failure
typically
from
here.
A
If
you
run
to
to
look
into
why
you
would
click
into
that
and
look
into
the
log
and
try
and
debug
it
one
nice
way
to
do
that
oops.
That
was
the
wrong
link
if
I
click
on
that
when
it
takes
me
to
the
specific
failing
build
is
if
you
click
actions,
you
can
click
reproduce
locally,
and
it
gives
you
a
shell
script
that
you
can
run
to
reproduce
exactly
what
Hydra
Graham
and
that
can
be
pretty
helpful
if
you're
debugging
like
an
annoying
test
of
some
sort.
A
A
And
if
you
were
to
download
this
shell
script
and
look
at
it,
it
would
it
would
essentially
do
exactly
that
actually,
and
so
you
could
learn
a
little
bit
about
how
that
works
through
there.
So
after
as
a
separate
system,
there
is
a
server
that
every
few
minutes
checks
Hydra
to
see
if
that
tested
job
set,
has
finished
or
rather
not
tested
job
set,
but
the
jobs
that
listed
here
has
finished.
So
if
we
go
to
status,
topics,
dot,
org
and
then
click
graph
on
up.
A
B
A
A
A
B
B
I,
remember
Elco,
mentioning
about
the
copying
process
that
happened
here
from
Hydra
to
I
forget
what
it
is.
Yeah.
A
A
A
The
the
first
step,
I'm,
not
actually
sure,
there's
gonna,
be
super
helpful,
but
so
the
first
step
is
this
fetch
and
what
that's
actually
fetching
is
defined
by
this
channel
snicks
in
the
root
of
the
Nick's,
Wes
or
configurations,
and
we
have
these
jobs
links
and
above
that
we
say
it's
it's
looking
for
hygienic,
sweat,
org,
slash
job
and
then
this
value,
and
then
'we
just
finished.
So
let's
go
to
one
of
those.
A
A
A
A
We
write
out
some
metadata
to
the
channel
that
is
used
by
a
couple
of
different
tools,
and
this
is
probably
not
so
helpful,
but
I
guess
this
is.
This
is
an
interesting
bit
is
that
we
we
download
some
build
products
from
the
build
jobs
and
then
upload
those
those
to
s3.
So
those
are
always
available.
B
A
B
Just
a
copy
of
Nick's
packages,
that's
it's
a
particular.
A
A
Exactly
right
exactly
so,
and
and
that's
what
we
see
here
so
this
download
file
step
fetches
a
tarball
of
the
nicks
expressions
and
uploads
it
to
the
channel.
So
when
you
fetch
the
channel
from
from
NYX
west
artwork,
you're
just
fetching
a
snapshot
of
NYX
packages
from
a
certain
point
in
time
and
extract
into
your
system,
you
have
a
full
copy
of
mix
packages
on
any
system
which
is
using
the
expected.
A
D
Worth
noting
that
it's
a
bit
more
than
just
a
copy
of
NYX
packages,
so
the
code
below
there
adds
a
few
things
like
the
program,
stop
sequel,
I'd
database
yeah
and
if
there's
some
things
like
generating
debug
info,
but
that's
not
actually
part
of
the
channel.
So
the
the
program
starts.
Equal
I'd
fingers
is
really
the
main
thing.
Yeah.
A
D
It's
all
the
bidding
directories
yeah,
you
know
Disick
used
by
the
command,
not
found
command.
So
if
you
mistype
something
or
you
try
to
run
something
which
doesn't
exist,
it
runs
this
with
a
program
that
looks
in
programs
for
sequel
lights
and
tells
you
what
package
you
can
find
that
command
in
yeah.
A
D
D
Of
a
issue,
if
we
so
ultimately,
we
want
to
get
rid
of
channels
and
replace
them
by
flakes,
which
are
essentially
just
pointers
to
the
git
repository.
So
we
get
rid
of
this
whole
generating
a
copy
of
mix
packages,
but
then
we
have
to
figure
out
what
to
do
with
programs
of
sequel
lights.
So
I
really
thought
about
it
very
much.
Yeah.
B
A
Yeah
I
don't
have
an
answer
for
you.
There
I
do
want
to
say,
though,
that
you
don't
strictly
need
to
use
channels
in
the
state
in
the
sense
that
not
sure
what
happened
there
in
this,
in
the
sense
that
any
any
directory
of
Nyx
packages
will
work
just
fine
for
using
these
packages.
The
advantage
of
using
these
channels
is
that
they
have
like
we
pointed
to
a
large
list
of
tests
and
validation,
to
ensure
that
they're
they're
safe
for
running
your
system
on.
A
C
B
Did
that
properly,
this
time
also
mentioned
also
how
channels
work
on
the
system
tangent
tangibly
like
how
it
maps
to
next
path?
Does
that
make
sense
to
explain?
Is
it
compared
to
using
next
path,
equal
next
packages,
home
I
next
packages
checkout
to
actually
using
a
channel?
It's
actually
a
great
point,
like
is
the
next
path
value
different
for
when
someone
is
using
a
channel
versus
if
they
want
to
use
a
checkout
or
a
URL
sure.
A
B
That
sounds
fine.
Unless
someone
would
like
to
explain
it
a
bit
more
well
understand
the
question
a
bit
more.
The
explanation.
D
So
it's
it's
a
pretty
hot
walk
interaction.
So
if
you
look
at
that
environment
variable
on
mix
OS
it
just
obtains
and
entries,
which
is
something
like
Knicks
packages
equals
and
then
the
a
spice
mix
for
Knicks
profiles
per
user
words
channels,
Knicks
OS.
So
if
you
reference
Knicks
packages
between
angle
brackets
that
resolves
to
the
system-wide
expected
use
channel,
so
if
you're
not
using
that
channel,
then
that
probably
doesn't
point
to
anything
so
probably
yeah
yeah
you
either
have
a
local
override
yeah,
where
you're
not
using
the
XPath.
B
A
All
right,
it's
kind
of
low
contrast,
I
apologize,
but
we
can
do
this
anyway.
So
if
we
look
at
my
next
path,
we
have
this
def
expert
channels
and
then
a
specific
Knicks
packages
equals
and
then
route,
slash
channels,
slash
Knicks,
OS
and
then
the
snakes,
OS
config
stuff
that
will
just
ignore
for
now
and
the
something
to
interesting
to
cover
here
is
this:
Knicks
packages
equals
syntax
is
what
is
used
when
using
these
angle
brackets
in
a
Knicks
expression.
So
if
we
do
mix
packages
it
points
to
exactly
that
same
path.
A
The
mix
packages
equals
profiles
per
user
root
channels,
so
that
is
the
root
users
channel,
and
so,
if
our
mix
channel
list
we
see
I
have
this
Nick.
So
s
channel
and
it's
set
to
1909
I.
Do
the
next
channel
update
it
will
download
a
new
copy
of
that
from
Nick's
org,
but
also
I?
Don't
need
to
use
that
at
all
I
could
do
this
packages
equals.
Oh
boy,
I'm
gonna
get
this
wrong,
so
I'm
not
going
to
try
it
to
get
it
wrong.
Just
one
moment,
while
I
look
up
a
URL.
A
A
B
A
very
good
point:
it's
actually
it's
a
syntax,
that's
in
the
language
that
doesn't
actually
have
a
name
Naoko.
D
No
just
yeah
search
baffled
all
right,
so
it's
just
inspired
by
see
includes
so
you
see
if
you
put
an
included
between
angle
brackets,
it's
looked
up
in
some
system-wide
search
path.
Gotcha
all.
B
D
A
So
the
other
thing
to
know
is
that
this
next
path
is
also
used
for
a
Knicks
OS
rebuild
and-
and
so
you-
you
very
much-
don't
have
to
use
channel,
so
you
could
explicitly
set
Knicks
path.
You
can
also
use
can't
type
of
character,
so
I
can
actually
show
up
with
a
capital
I
next
package
just
equals
something
and,
and
that
would
up
that
would
change
what
makes
OS
rebuild
its
uses
for
building
your
system.
A
A
Once
the
channel
updates
there's,
there's
two
things
to
git
repositories
are
pushed
to
the
first
one.
This
one
is
deprecated,
but
probably
about
most
people
are
familiar
with,
is
NYX
packages
channels
and
when
the
channel
updates
a
new
branch,
the
branch
corresponding
to
the
channel
name
is
pushed
to
with
the
revision
that
the
channel
is
moved
to.
A
This
is
probably
depth.
I
believe
this
is
a
deprecated
method
and
replaced
with
branches
on
the
next
packages,
repo
itself,
where
we
have
Nix
OS
1909,
those
aren't
my
branches
but
other
Nix
OS
Nix
packages,
those
are
channel
revision,
channel
branches
that
are
only
updated
by
Hydra
or
by
that
channel
update
script
on
a
regular
basis
anyway.
So
this
has
been
like
30
minutes
of
our
office
hours
and
I
really
don't
want
to
take
up
all
over
time.
B
Other
ideas
for
like
google,
Summer
of
Code
submission
ideas
or
like
where
we
left
off
with
any
tangental.
It's
like
like
topics
about
rust
and
nicks.
E
E
E
A
A
E
B
It
seems
we've
I,
don't
want
to
like
coin
that
we
set
a
trend,
but
I'm
just
gonna
give
myself
and
say
that
I
would
set
a
trend.
I
hope
that
doesn't
sound,
condescending.
E
B
A
D
A
B
Library,
I
was
thinking,
like
my
outsider
perspective,
obviously
don't
know
much
of
the
many
things
about
rust,
but
it
seemed
that
a
lot
of
like
the
complaints
about
it
being
used
seriously
and
NYX
would
be
on
health
by
this.
If
we
had
it
like
really
nice.
B
A
B
Bring
them
on,
we
do
have
the
whole
little
thread.
We
started
Elko
for
questions
about
rust
and
nicks.
It
was
almost
I
hope
it
didn't
come
off
as,
like
unintentional
I'm
asked
Elko
anything
for
us,
because
that's
not
exactly
II,
don't
agree
to
that.
But
there
is
a
bit
of
activity
there.
E
C
Sure,
Graham
earlier
today
there
was
a
bit
of
a
conversation
about
different
web
backends,
the
nginx
versus
the
HTTP
D
web
server
and
some
of
the
web
services.
We
have
in
Nix
OS
pretty
much
all
the
web
services
right
now
they
either
use
nginx
or
HDTV.
They
don't
have
any
sort
of
back-end
for
that.
Some
of
them
have
sort
of
been
set
up
to
potentially
expand
to
offering
either
or
in
the
future.
But
as
it
stands
right
now,
it's
one
to
the
other.
C
So
some
people,
you
know
they
prefer
one
one
web
server
or
the
other,
and
if
they
try
to
run
a
service
that
is
using
the
opposite
to
what
they
run.
Obviously,
you're
gonna
have
port
conflicts
and
whatnot,
and
you
just
want
to
sort
of
simplify
it.
Have
one
web
server,
which
makes
sense.
So
somebody
was
talking
about
a
Google
summer,
Summer
of
Code
opportunity
and
I
said.
That's
something.
That's
been
talked
about
a
lot
in
the
past.
C
It
was
Kahless
a
mentioned
that
there
haven't
been
a
lot
of
traction
on
it,
but
it's
definitely
something
that's
of
interest
to
me.
If
somebody's
going
to
sort
of
tackle
that
but
I
think
there's
just
a
lot
of
issues
to
sort
of
work
through
before
somebody
can
go
ahead
and
implement
that,
but
it
sparks
some
conversation.
It
seems
like
there
was
more
than
just
a
couple
of
people
who
were
interested
in
that.
But
I
don't
know
if
anybody
had
any
ideas
on
that.
A
These
different
web
servers
have
a
whole
expressive
configuration
format
unique
to
their
own
because
they
feel
like
they
have
a
different
abstraction
that
makes
more
sense
or
works
better
for
their
platform
and
I
came
up
with
a
pretty,
perhaps
obscure,
but
maybe
not
impossible
scenario
can.
Can
you
talk
a
little
bit
about
like
the
scope
like
what?
What
scope
would
this
abstraction
have?
How
far
do
you
want
to
go?
What
kind
of
support,
what
sort
of
customization
would
you
support
versus
not
support
yeah.
C
That
that's
a
very
good
question,
so
you
know
if
you
did
like
a
full
abstraction
where
you
could
just
sort
of
say
this
is
like
a
web
service,
you
know
or
web
server
dot.
You
know
this
dot
that
locations
things
like
that.
That
would
be
obviously
great
from
a
module
author
standpoint,
but
there's
a
lot
of
problems
with
that.
So,
for
example,
permissions
are
done
dramatically
different
between
nginx
and
Apache.
C
I
don't
know
what
the
answer
is,
but
it's
it's
a
question.
I've
thought
about
a
little
bit,
not
enough
to
have
any
strong
opinions,
one
way
or
the
other
yet,
but
I
do
see
that
historically
it
was
talked
about
a
few
years
ago
and
you
could
see
several
github
issues
or
PRS
that
are
sort
of
talking
about
it
and
yeah.
You
did
hasn't
really
taken
off
yet,
but
maybe
that's
just
because
the
right
person
hasn't
tackled
the
problem.
Yet.
A
C
Question
fair
question:
so
a
lot
of
people
think
that
nginx
is
just
hanging
sound
better.
It's
not
something!
I
really
grew
up
with
and
where
I
work,
there's
zero
possibility
of
ever
switching
bench
and
X.
So
anytime
I
put
into
engine
X
it's
kind
of
a
waste
of
my
time
to
be
honest,
so
I'm
in
the
Apache
world
and
I'm
not
going
anywhere
anytime
soon,
so
I
guess
just
double
down.
A
C
A
good,
totally
I
support
a
lot
of
all
their
long-term
software.
Things
like
that
so
I,
definitely
not
in
the
mainstream
of
next
OS
users.
In
that
sense,
a
lot
of
people
doing
bleeding
edge
things,
but
but
to
me,
Nix
Nix
OS
provides
a
lot
of
value
in
stable
environments
and
so
I'd
love
to
see
things
continue
growing.
That
way.
E
I
see
a
lot
of
similarities
with
how
keeping
it
is.
Does
things
where
I
already
have
an
ingress
controller,
and
this
is
so.
You
define
an
ingress
which
is
a
generic
resource,
that
maps
and
I
form
a
path
to
a
service,
and
then
ingress
controller
is
generic
and
you
can
replace
with
nginx
or
Apache
or
any
type
of
service,
and
in
that
specific
context,
interface
is
very
restricted.
E
So
you
can
only
map,
I,
think
a
path
prefix
to
our
service
or
maybe
a
host
to
a
service
or
like
a
combination
of
both,
but
does
the
reduce
sort
of
interface
that
you
two
might
want
to
too
hard.
And
in
that
scenario,
maybe,
for
example,
if
you
set
up
MediaWiki,
which
I
will
keep
my
training
with
Apache,
because
PHP
runs
better
with
Apache.
Let's
ask
you
and
then
you
would
have
the
writer
in
France
that
says:
ok,
the
slash
MediaWiki
or
/
wiki
goes
to
ninja
wiki
and
that
might
be
nginx
price
of
it.
A
A
Guess,
from
my
perspective,
I'm
you
the
idea
of
having
a
limited
interface
which
lets
you
abstract.
The
80%
seems
really
like
a
great
idea.
I
think
that's
a
really
great
idea,
so
thank
you
for
working
on
that
I
hope
that
I
hope
you
continue
to
do
that
and
I
hope
it
becomes
successful.
Thanks.
Thank
you
all
right.
Well,
let's
call
it
a
wrap.
It's
45
minutes,
or
so
this.
B
A
A
A
Perfect
every
Friday
and
you
can
find
out
more
at
CIMB,
ATM,
calm,
/,
Knicks
Friday,
except
right,
yeah
with
a
capital
in
and
a
capital
F,
and
also
Peter
Simmons
maintainer.
The
Haskell
package
set
also
he's
on
Twitter,
as
at
original,
petty
PEGI
does
a
weekly
Friday
stream
of
working
on
the
Haskell
back
up
stuff.
With
that
I'll
see
you
on
a
couple
weeks.
Thank
you
so
much
finally,.