Mentions légales du service

Skip to content
Snippets Groups Projects
Commit aeb5197d authored by Faure Adrien's avatar Faure Adrien
Browse files

[TutoNix]mer. juin 26 12:55:28 CEST 2019

parent 9c452b9a
No related branches found
No related tags found
No related merge requests found
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\providecommand \oddpage@label [2]{}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {1}{1}}}
\newlabel{toc<1>}{{2}{3}{}{Doc-Start}{}}
\@writefile{snm}{\beamer@slide {toc<1>}{2}}
\newlabel{toc}{{2}{3}{}{Doc-Start}{}}
\@writefile{snm}{\beamer@slide {toc}{2}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {2}{2}}}
\@writefile{toc}{\beamer@sectionintoc {1}{Experimentation From a Software Point of View}{3}{0}{1}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {1}{2}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {1}{2}}}
\@writefile{nav}{\headcommand {\sectionentry {1}{Experimentation From a Software Point of View}{3}{Experimentation From a Software Point of View}{0}}}
\@writefile{nav}{\headcommand {\slideentry {1}{0}{1}{3/3}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {3}{3}}}
\@writefile{nav}{\headcommand {\slideentry {1}{0}{2}{4/4}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {4}{4}}}
\@writefile{toc}{\beamer@sectionintoc {2}{Nix}{5}{0}{2}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {3}{4}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {3}{4}}}
\@writefile{nav}{\headcommand {\sectionentry {2}{Nix}{5}{Nix}{0}}}
\@writefile{nav}{\headcommand {\slideentry {2}{0}{1}{5/6}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {5}{6}}}
\@writefile{nav}{\headcommand {\slideentry {2}{0}{2}{7/7}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {7}{7}}}
\@writefile{nav}{\headcommand {\slideentry {2}{0}{3}{8/8}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {8}{8}}}
\@writefile{nav}{\headcommand {\slideentry {2}{0}{4}{9/10}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {9}{10}}}
\@writefile{toc}{\beamer@subsectionintoc {2}{1}{Expression Language}{11}{0}{2}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {5}{10}}}
\@writefile{nav}{\headcommand {\beamer@subsectionentry {0}{2}{1}{11}{Expression Language}}}
\@writefile{nav}{\headcommand {\slideentry {2}{1}{1}{11/11}{Expression Language}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {11}{11}}}
\@writefile{nav}{\headcommand {\slideentry {2}{1}{2}{12/12}{Expression Language}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {12}{12}}}
\@writefile{toc}{\beamer@subsectionintoc {2}{2}{Package Manager}{13}{0}{2}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {11}{12}}}
\@writefile{nav}{\headcommand {\beamer@subsectionentry {0}{2}{2}{13}{Package Manager}}}
\@writefile{nav}{\headcommand {\slideentry {2}{2}{1}{13/13}{Package Manager}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {13}{13}}}
\@writefile{toc}{\beamer@sectionintoc {3}{Nix Structure}{14}{0}{3}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {5}{13}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {13}{13}}}
\@writefile{nav}{\headcommand {\sectionentry {3}{Nix Structure}{14}{Nix Structure}{0}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{1}{14/14}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {14}{14}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{2}{15/17}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {15}{17}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{3}{18/18}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {18}{18}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{4}{19/19}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {19}{19}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{5}{20/20}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {20}{20}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{6}{21/21}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {21}{21}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{7}{22/22}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {22}{22}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{8}{23/23}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {23}{23}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{9}{24/25}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {24}{25}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{10}{26/26}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {26}{26}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{11}{27/27}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {27}{27}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{12}{28/28}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {28}{28}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{13}{29/29}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {29}{29}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{14}{30/30}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {30}{30}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{15}{31/31}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {31}{31}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{16}{32/32}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {32}{32}}}
\global\@namedef{mainendframenumber}{27}
\@writefile{nav}{\headcommand {\gdef \insertmainframenumber {27}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{17}{33/33}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {33}{33}}}
\@writefile{nav}{\headcommand {\partentry {\translate {Appendix}}{1}}}
\@writefile{nav}{\headcommand {\beamer@partpages {1}{33}}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {14}{33}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {14}{33}}}
\@writefile{nav}{\headcommand {\beamer@appendixpages {34}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{18}{34/34}{}{1}}}
\@writefile{nav}{\headcommand {\beamer@framepages {34}{34}}}
\@writefile{nav}{\headcommand {\beamer@partpages {34}{35}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {34}{35}}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {34}{35}}}
\@writefile{nav}{\headcommand {\beamer@documentpages {35}}}
\@writefile{nav}{\headcommand {\gdef \inserttotalframenumber {2}}}
\global\@namedef{appendixtotalframenumber}{2}
\global\@namedef{inserttotalframenumber}{27}
\@writefile{nav}{\headcommand {\gdef \inserttotalframenumber {27}}}
\@writefile{nav}{\headcommand {\gdef \appendixtotalframenumber {2}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{19}{35/35}{}{1}}}
\@writefile{nav}{\headcommand {\beamer@framepages {35}{35}}}
This diff is collapsed.
\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}
\headcommand {\beamer@framepages {1}{1}}
\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}
\headcommand {\beamer@framepages {2}{2}}
\headcommand {\beamer@sectionpages {1}{2}}
\headcommand {\beamer@subsectionpages {1}{2}}
\headcommand {\sectionentry {1}{Experimentation From a Software Point of View}{3}{Experimentation From a Software Point of View}{0}}
\headcommand {\slideentry {1}{0}{1}{3/3}{}{0}}
\headcommand {\beamer@framepages {3}{3}}
\headcommand {\slideentry {1}{0}{2}{4/4}{}{0}}
\headcommand {\beamer@framepages {4}{4}}
\headcommand {\beamer@sectionpages {3}{4}}
\headcommand {\beamer@subsectionpages {3}{4}}
\headcommand {\sectionentry {2}{Nix}{5}{Nix}{0}}
\headcommand {\slideentry {2}{0}{1}{5/6}{}{0}}
\headcommand {\beamer@framepages {5}{6}}
\headcommand {\slideentry {2}{0}{2}{7/7}{}{0}}
\headcommand {\beamer@framepages {7}{7}}
\headcommand {\slideentry {2}{0}{3}{8/8}{}{0}}
\headcommand {\beamer@framepages {8}{8}}
\headcommand {\slideentry {2}{0}{4}{9/10}{}{0}}
\headcommand {\beamer@framepages {9}{10}}
\headcommand {\beamer@subsectionpages {5}{10}}
\headcommand {\beamer@subsectionentry {0}{2}{1}{11}{Expression Language}}
\headcommand {\slideentry {2}{1}{1}{11/11}{Expression Language}{0}}
\headcommand {\beamer@framepages {11}{11}}
\headcommand {\slideentry {2}{1}{2}{12/12}{Expression Language}{0}}
\headcommand {\beamer@framepages {12}{12}}
\headcommand {\beamer@subsectionpages {11}{12}}
\headcommand {\beamer@subsectionentry {0}{2}{2}{13}{Package Manager}}
\headcommand {\slideentry {2}{2}{1}{13/13}{Package Manager}{0}}
\headcommand {\beamer@framepages {13}{13}}
\headcommand {\beamer@sectionpages {5}{13}}
\headcommand {\beamer@subsectionpages {13}{13}}
\headcommand {\sectionentry {3}{Nix Structure}{14}{Nix Structure}{0}}
\headcommand {\slideentry {3}{0}{1}{14/14}{}{0}}
\headcommand {\beamer@framepages {14}{14}}
\headcommand {\slideentry {3}{0}{2}{15/17}{}{0}}
\headcommand {\beamer@framepages {15}{17}}
\headcommand {\slideentry {3}{0}{3}{18/18}{}{0}}
\headcommand {\beamer@framepages {18}{18}}
\headcommand {\slideentry {3}{0}{4}{19/19}{}{0}}
\headcommand {\beamer@framepages {19}{19}}
\headcommand {\slideentry {3}{0}{5}{20/20}{}{0}}
\headcommand {\beamer@framepages {20}{20}}
\headcommand {\slideentry {3}{0}{6}{21/21}{}{0}}
\headcommand {\beamer@framepages {21}{21}}
\headcommand {\slideentry {3}{0}{7}{22/22}{}{0}}
\headcommand {\beamer@framepages {22}{22}}
\headcommand {\slideentry {3}{0}{8}{23/23}{}{0}}
\headcommand {\beamer@framepages {23}{23}}
\headcommand {\slideentry {3}{0}{9}{24/25}{}{0}}
\headcommand {\beamer@framepages {24}{25}}
\headcommand {\slideentry {3}{0}{10}{26/26}{}{0}}
\headcommand {\beamer@framepages {26}{26}}
\headcommand {\slideentry {3}{0}{11}{27/27}{}{0}}
\headcommand {\beamer@framepages {27}{27}}
\headcommand {\slideentry {3}{0}{12}{28/28}{}{0}}
\headcommand {\beamer@framepages {28}{28}}
\headcommand {\slideentry {3}{0}{13}{29/29}{}{0}}
\headcommand {\beamer@framepages {29}{29}}
\headcommand {\slideentry {3}{0}{14}{30/30}{}{0}}
\headcommand {\beamer@framepages {30}{30}}
\headcommand {\slideentry {3}{0}{15}{31/31}{}{0}}
\headcommand {\beamer@framepages {31}{31}}
\headcommand {\slideentry {3}{0}{16}{32/32}{}{0}}
\headcommand {\beamer@framepages {32}{32}}
\headcommand {\gdef \insertmainframenumber {27}}
\headcommand {\slideentry {3}{0}{17}{33/33}{}{0}}
\headcommand {\beamer@framepages {33}{33}}
\headcommand {\partentry {\translate {Appendix}}{1}}
\headcommand {\beamer@partpages {1}{33}}
\headcommand {\beamer@sectionpages {14}{33}}
\headcommand {\beamer@subsectionpages {14}{33}}
\headcommand {\beamer@appendixpages {34}}
\headcommand {\slideentry {3}{0}{18}{34/34}{}{1}}
\headcommand {\beamer@framepages {34}{34}}
\headcommand {\beamer@partpages {34}{35}}
\headcommand {\beamer@subsectionpages {34}{35}}
\headcommand {\beamer@sectionpages {34}{35}}
\headcommand {\beamer@documentpages {35}}
\headcommand {\gdef \inserttotalframenumber {2}}
\headcommand {\gdef \inserttotalframenumber {27}}
\headcommand {\gdef \appendixtotalframenumber {2}}
\headcommand {\slideentry {3}{0}{19}{35/35}{}{1}}
\headcommand {\beamer@framepages {35}{35}}
\BOOKMARK [2][]{Outline0.1}{Experimentation From a Software Point of View}{}% 1
\BOOKMARK [2][]{Outline0.2}{Nix}{}% 2
\BOOKMARK [3][]{Outline0.2.1.11}{Expression Language}{Outline0.2}% 3
\BOOKMARK [3][]{Outline0.2.2.13}{Package Manager}{Outline0.2}% 4
\BOOKMARK [2][]{Outline0.3}{Nix Structure}{}% 5
\BOOKMARK [1][]{Outline1}{Appendix}{}% 6
No preview for this file type
\beamer@slide {toc<1>}{2}
\beamer@slide {toc}{2}
......@@ -70,7 +70,7 @@
\setbeamertemplate{footline}[frame number]
\setbeamertemplate{navigation symbols}{}
\title{\textbf{A Way Toward Reproducible experiment Environment with Nix}}
\title{\textbf{A Way Toward Reproducible Experiment Environment with Nix}}
\date{Rennes 2019, \today}
\author{
\underline{Adrien Faure}, Millian Poquet\\
......@@ -96,10 +96,6 @@
\titlepage
\end{frame}
\begin{frame}[label=toc]{Overview}
\tableofcontents
\end{frame}
\section{Experimentation From a Software Point of View}
\begin{frame}{Experimentation Codes}
......@@ -145,9 +141,9 @@ The running environment should be explicit:
\note{
How(had-hoc script, complex runtime etc), \\
Where(your laptop, your old laptop etc) you run you experiment.\\}
\item How you did your final data analysis,
\item How the visualisations are constructed.
\item Documenting how to run the experiment.
\note{The input, the running scripts etc \\}
% \item Using literate programming ?
\end{itemize}
\end{frame}
......@@ -171,147 +167,131 @@ The running environment should be explicit:
\end{frame}
\begin{frame}{What is Nix ?}
\only<1>{%
Nix is a Package Manager with a lot of good properties. \\
% Why for experimentations ?
\vspace{1em}
\begin{itemize}
\item Reproducibility,
\note{Reproducibility of software\\}
% \item Portability,
\note{Run on my laptop, run of g5k\\}
\item Multiple version cohabitations,
% \item Composability,
\note{why\\}
\item Decentralized package repository,
\note{Packages can come from different places, thus you can have yours.\\}
\item Explicit build process,
\note{Every deps need to be stated\\}
\note{The building process is explicit in Nix\\}
\item Define reconstructible software environments,
\note{Build Once, build twice (six month later)\\}
\note{Possibility to describing full software environment\\}
\note{From building environment, to runtime and data analysis.\\}
\item Application portability
\note{build on my laptop, run on g5k}
\end{itemize}
}
% \center\Large\sc The Nix Ecosystem. {\url{https://nixos.org}}
\end{frame}
\begin{frame}{What is Nix ?}
\only<1>{%
Nix is a Package Manager with a lot of good properties. \\
% Why for experimentations ?
\vspace{1em}
\begin{itemize}
\item Reproducibility,
\note{Reproducibility of software\\}
% \item Portability,
\note{Run on my laptop, run of g5k\\}
\item Multiple version cohabitations,
% \item Composability,
\note{why\\}
\item Decentralized package repository.
\note{Packages can come from different places, thus you can have yours.\\}
\item Explicit build process,
\note{Every deps need to be stated\\}
\note{The building process is explicit in Nix\\}
\item Reconstructible environments.
\note{Build Once, build twice (six month later)\\}
\note{Possibility to describing full software environment\\}
\note{From building environment, to runtime and data analysis.\\}
\item Application portability
\note{build on my laptop, run on g5k}
\end{itemize}
}
% \center\Large\sc The Nix Ecosystem. {\url{https://nixos.org}}
\end{frame}
\begin{frame}{Nix Ecosystem}
Core projects:
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
Nix - The Expression Language (2003)
\end{tcolorbox}
\begin{frame}{Nix Ecosystem}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
Nix - The Nix package manager (2003)
\end{tcolorbox}
Core projects:
Satellites:
\only<1>{
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
Nix - The Expression Language (2003)
\end{tcolorbox}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
NixOS - The Purely Functional Linux Distribution
\end{tcolorbox}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
Nix - The Nix package manager (2003)
\end{tcolorbox}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
Hydra - Nix-based continuous build system (2008)
\end{tcolorbox}
Satellites:
\only<1>{
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
NixOps - The NixOS Deployment Tool (2011)
\end{tcolorbox}
}
\only<2>{
\begin{tcolorbox}[colframe=gray!50,colback=gray!1,coltext=gray!100]
NixOS - The Purely Functional Linux Distribution
\end{tcolorbox}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
NixOS - The Purely Functional Linux Distribution
\end{tcolorbox}
\begin{tcolorbox}[colframe=gray!50,colback=gray!1,coltext=gray!100]
Hydra - Nix-based continuous build system (2008)
\end{tcolorbox}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
Hydra - Nix-based continuous build system (2008)
\end{tcolorbox}
\begin{tcolorbox}[colframe=gray!50,colback=gray!1,coltext=gray!100]
NixOps - The NixOS Deployment Tool (2011)
\end{tcolorbox}
}
\end{frame}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
NixOps - The NixOS Deployment Tool (2011)
\end{tcolorbox}
}
\only<2>{
\begin{tcolorbox}[colframe=gray!50,colback=gray!1,coltext=gray!100]
NixOS - The Purely Functional Linux Distribution
\end{tcolorbox}
\begin{tcolorbox}[colframe=gray!50,colback=gray!1,coltext=gray!100]
Hydra - Nix-based continuous build system (2008)
\end{tcolorbox}
\begin{tcolorbox}[colframe=gray!50,colback=gray!1,coltext=gray!100]
NixOps - The NixOS Deployment Tool (2011)
\end{tcolorbox}
}
\end{frame}
\subsection{Expression Language}
\begin{frame}{}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
{Nix - The Expression Language }
\end{tcolorbox}
What?
\begin{itemize}
\item Is a Domain Specific Language (DSL)
\item Functional, Turing complete language.
\item Dynamically typed. int, bool, path, string, set, list, lambda.
\item Large built-in and standard lib. \texttt{stdenv, fetchTarball, fromJson, fromGitHub, assert, test..}
\end{itemize}
\end{frame}
\begin{frame}{}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
{Nix - The Expression Language }
\end{tcolorbox}
Why?
\begin{itemize}
\item Packaging is complex.
\item Abstraction layers.
\item Better reusability, factorization.
\item (Readable and Maintainable)
\end{itemize}
\end{frame}
\subsection{Package Manager}
\begin{frame}{}{}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
{Nix - The Package Manager }
\end{tcolorbox}
\begin{itemize}
\item Packages are defined in Nix expressions
\item Independent of the system.
\item Atomic upgrades and rollbacks
\item Several version of the same package on the same system
\item Unprivileged package installation
\item Provides isolated build \& runtime environments
\item Reproducible build from source
\item Binary cache
\item Garbage collection
\item Declarative \& Imperative use.
\end{itemize}
\end{frame}
% \begin{frame}{}
% All \emph{official} packages are defined into the repository:
% \begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]{Nixpkgs - \textcolor{red}{\url{https://github.com/NixOS/nixpkgs}}}
% \end{tcolorbox}
% \begin{columns}
% \begin{column}{0.5\textwidth}
% \begin{itemize}
% \item First commit: Mar 2003
% \item \textbf{$>$22 000} packages
% \item \textbf{$>$2 100} contributors
% \end{itemize}
% \end{column}
% \begin{column}{0.5\textwidth}
% \begin{itemize}
% \item \textbf{$>$183 600} commits
% \end{itemize}
% \end{column}
% \end{columns}
% \end{frame}
\subsection{Expression Language}
\begin{frame}{Nix - Language}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
{Nix - The Expression Language }
\end{tcolorbox}
What?
\begin{itemize}
\item Is a Domain Specific Language (DSL)
\item Functional, Turing complete language.
\item Dynamically typed. int, bool, path, string, set, list, lambda.
\item Large built-in and standard lib. \texttt{stdenv, fetchTarball, fromJson, fromGitHub, assert, test..}
\end{itemize}
\end{frame}
\begin{frame}{Nix - Language}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
{Nix - The Expression Language }
\end{tcolorbox}
Why?
\begin{itemize}
\item Packaging is complex.
\item Abstraction layers.
\item Better reusability, factorization.
\item (Readable and Maintainable)
\end{itemize}
\end{frame}
\subsection{Package Manager}
\begin{frame}{Nix}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
{Nix - The Package Manager }
\end{tcolorbox}
\begin{itemize}
\item Packages are defined in Nix expressions,
% \item Independent of the system,
\item Atomic upgrades and rollbacks
\item Several version of the same package on the same system,
\item Unprivileged package installation,
\item Provides isolated build \& runtime environments,
\item Reproducible build from source,
\item Binary cache,
\item Garbage collection,
% \item Declarative \& Imperative use.
\end{itemize}
\end{frame}
\begin{frame}{}
\center
How does it work?
\end{frame}
\section{Nix Structure}
......@@ -319,7 +299,7 @@ The running environment should be explicit:
% Nix borrows its concept from Functional Languages. \\
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
Nix applies the concept of functional programming languages to packages management.
Nix applies the concept of functional programming languages to package management.
\end{tcolorbox}
\vspace{1em}
......@@ -327,7 +307,7 @@ The running environment should be explicit:
\note{Function from a functional paradigm point of view}
\vspace{1em}
Packages dependencies are also functions given as inputs.
Package dependencies are also functions given as inputs.
\vspace{1em}
Such functions are called \textbf{Derivations}
......@@ -527,13 +507,14 @@ The result of the build action is automatically placed into the nix store.
\item nixpkgs-19.03 (current stable)
\item nixpkgs-18.09 (outdated)
\end{itemize}
}
\only<2>{
\begin{tcolorbox}[colframe=red!37,colback=red!10,coltext=black]
\center
\begin{tcolorbox}[colframe=red!37,colback=red!10,coltext=black]
\center
Channels are not fully reproducible, as they are subject to updates.
\end{tcolorbox}
\end{tcolorbox}
\vspace{1em}
As experimenters, we will use another mechanism called pinning.
}
......
\beamer@sectionintoc {1}{Experimentation From a Software Point of View}{3}{0}{1}
\beamer@sectionintoc {2}{Nix}{5}{0}{2}
\beamer@subsectionintoc {2}{1}{Expression Language}{11}{0}{2}
\beamer@subsectionintoc {2}{2}{Package Manager}{13}{0}{2}
\beamer@sectionintoc {3}{Nix Structure}{14}{0}{3}
\center Thanks.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment