# Usability study session #8

**URL:** https://discourse.nixos.org/t/usability-study-session-8/21452
**Category:** Documentation
**Created:** [September 4, 2022, 2:39pm UTC](https://discourse.nixos.org/t/usability-study-session-8/21452 "2022-09-04T14:39:23Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![toraritte](https://discourse.nixos.org/user_avatar/discourse.nixos.org/toraritte/32/6777_2.png) [@toraritte](https://discourse.nixos.org/u/toraritte)
#### Post date: [September 4, 2022, 2:39pm UTC](https://discourse.nixos.org/t/usability-study-session-8/21452/1 "2022-09-04T14:39:23Z")

</div>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^  
\< [previous study](https://discourse.nixos.org/t/usability-study-session-7/21449) | [top](https://discourse.nixos.org/t/usability-studies/21404) | [next study](https://discourse.nixos.org/t/usability-study-session-9/21453) \>

## 1. Bio / Persona

Frontend developer on Windows. Not familiar with Linux. Only basic experience with command line.

## 2. Prior Nix experience

Absolutely new to Nix.

## 3. Approaches to learning Nix

None; this session will be the first attempt.

## 4. Using Nix

> **Interviewer** : What do you think Nix is?  
> **Participant** : Nix is this fancy new thing that allows to run arbitrary software, wherever. Reminds me of Docker, based on what I heard so far, or something to do with containers at least. That is, Nix seems to be a library or environment that you have to download to make your containers work.

Goes to [nixos.org](https://nixos.org/), immediately notices that it says NixOS at the top. “_It sounds like an operating system, but the description also says that it is a tool._”

- Starts watching the [Asciinema demo cover](https://nixos.org/#asciinema-demo-cover)

- Clicks on the “Get started” button on the main page right next to the demo (it links to the [“Learn” tab](https://nixos.org/learn.html)).

- Continues with reading the [“Explore” tab](https://nixos.org/explore.html)

- Clicks [“Download” tab](https://nixos.org/download.html).

Wants to explore available packages, but, as seen above, the [Explore](https://nixos.org/explore.html) page is about something else, so clicks on the [search icon](https://search.nixos.org/packages) instead by instinct. Enters “node” to search for first, sees a lot of irrelevant results, so tries to search for “nodejs” next, and bingo.

“_How to install [Node.js](https://nodejs.org/)?_” When clicking on the first result, it expands to show the NixOS configuration options, and it is not immediately apparent that are other tabs as well (and what they allude to). The `nix-env` command looks familiar, so copies it. Stops here for a second to check whether [Node.js](https://nodejs.org/) is already installed:

```plaintext
$ node --version

node: command not found

```

Not present, so executes the copied `nix-env -iA nodejs` command, which runs without any complaints. Would like to use [VS Code](https://code.visualstudio.com/), so looks it up, installs it with `nix-env` also, and runs `code .`. Curious if auto-updaing [VS Code](https://code.visualstudio.com/) would work, and it does.

> **INFO Unfree packages**
>
> * * *
> 
> The `vscode` package wraps a proprietary software, and so it has an “unfree” license. See [2.3. Installing unfree packages](https://nixos.org/manual/nixpkgs/stable/#sec-allow-unfree) of the [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/). In this case the following command was used:
> 
> ```plaintext
> NIXPKGS_ALLOW_UNFREE=1 nix-shell -p vscode
> 
> ```
> 
> * * *

Current goal is to create a React project with [Node.js](https://nodejs.org/) by copy-pasting a template project.

- Re-visit [search.nixos.org](https://search.nixos.org/packages), search for “react”, but no joy. Finds this understandable as it may be covered by [npm](https://www.npmjs.com/). “_Package manager inception?_”

- Googles `nixos react`

Stops here, and wonders how to set up a development environment that could be shared with someone. Navigates to [“Set up a development environment” page](https://nixos.org/guides/dev-environment.html) on [nixos.org](https://nixos.org/) where the examples are mostly centered around Python. Figures that a `default.nix` file needs to be created, but doesn’t know where the syntax is coming from and how it works. Scrolls back and forth, notices `nix-build`, and notes that “_build results seem to be something important in Nix_”.

Gets stuck at coming up with a Nix expression, and tries rationalizing what would need to be done: “_You make a package (or a bundle), build it with Nix, and run it from the `result` folder. You integrate the environment and the code to run your application. None of this helps to achieve what I wanted though._” Maybe taking a deeper dive into Nix by reading the documentation?

> **Interviewer** :  
> How does that make you feel?  
> **Participant** :  
> Lost. I know what Nix can do, but I don’t know how to interact with it. How to use `buildPythonApplication`? Where does it come from?

Looks at [“Set up a development environment” page](https://nixos.org/guides/dev-environment.html) again, reading it carefully. The Python example seems comprehensive, but has no idea how to make it work for other languages.

> **Interviewer** : Would you look at [“Ad hoc developer environments” article](https://nixos.org/guides/ad-hoc-developer-environments.html) (a.k.a. “First steps with Nix”)?

Doesn’t know what “ad hoc” means but “_I can tell that this is what I wanted_”.

- Section "What is a shell environment?

- Section “Searching package attribute names”

- Section “Ad hoc shell environments”

- Section “Beyond tooling: Python libraries”

- Section “Towards reproducibulity”

- Section “Reproducible executables”

> **Interviewer** :  
> How would you sum up your Nix experience?  
> **Participant** :  
> Confused to the bones. I think I got the essentials, but constantly getting confused.

The session ends here.

[archive](https://web.archive.org/web/20220904143937/https://discourse.nixos.org/t/usability-study-session-8/21452)

---

<div class="post-metadata">

### Author: ![toraritte](https://discourse.nixos.org/user_avatar/discourse.nixos.org/toraritte/32/6777_2.png) [@toraritte](https://discourse.nixos.org/u/toraritte)
#### Post date: [September 4, 2022, 2:47pm UTC](https://discourse.nixos.org/t/usability-study-session-8/21452/2 "2022-09-04T14:47:12Z")

</div>

> [@toraritte](#):
>
> > 1. Always working development environment.
> 
> This already strucks a chord: Everyone at work has a different setup from operating systems to favorite editors, which makes it hard to collaborate on a project without issues. It takes a lot of time setting up stuff individually, but sees Nix as a solution to this problem.

I wonder if anyone has done a demo for new users by:

1. Sitting down with them individually to create a general `shell.nix` to emulate their usual work setup.
2. Usher them in a room with new installs of their operating systems of preference, and fire up the `shell.nix`-es.

I mean, not all of the environments would be replicated with a 100% fidelity, but it would worth it just to see the reactions.
