Skip to content

README: Remove the pills#4181

Merged
rycee merged 1 commit intonix-community:masterfrom
roberth:patch-1
Jun 30, 2023
Merged

README: Remove the pills#4181
rycee merged 1 commit intonix-community:masterfrom
roberth:patch-1

Conversation

@roberth
Copy link
Copy Markdown
Contributor

@roberth roberth commented Jun 30, 2023

This removes the Nix Pills reference, because they are not a good introduction to the Nix ecosystem, but rather a thorough explanation of many disparate things. Reading through them might give some light bulb moments for an intermediate reader, but that does not mean that they're good for a beginner.

I've also removed the mention of infinite recursion without source location. That's an old meme for a problem that has been mostly solved. Mentioning it here has two effects

  • Propagate the outdated meme
  • Make users insensitive to bad errors. Learned helplessness. That kind of thing. What we really want is for them to report bad error messages, so that they can be fixed. And they can be fixed; just report them at NixOS/nix

Description

Checklist

  • Change is backwards compatible.

  • Code formatted with ./format.

  • Code tested through nix-shell --pure tests -A run.all or nix develop --ignore-environment .#all using Flakes.

  • Test cases updated/added. See example.

  • Commit messages are formatted like

    {component}: {description}
    
    {long description}
    

    See CONTRIBUTING for more information and recent commit messages for examples.

  • If this PR adds a new module

    • Added myself as module maintainer. See example.

This removes the Nix Pills reference, because they are not a good introduction to the Nix ecosystem, but rather a thorough explanation of many disparate things. Reading through them might give some light bulb moments for an intermediate reader, but that does not mean that they're good for a beginner.

I've also removed the mention of infinite recursion without source location. That's an old meme for a problem that has been mostly solved. Mentioning it here has two effects
 - Propagate the outdated meme
 - Make users insensitive to bad errors. Learned helplessness. That kind of thing. What we really want is for them to report bad error messages, so that they can be fixed. And they can be fixed; just report them at `NixOS/nix`
@roberth
Copy link
Copy Markdown
Contributor Author

roberth commented Jun 30, 2023

Here's the most recent testimonial, fwiw https://ersei.net/en/blog/its-nixin-time#the-part-in-which-i-make-

Copy link
Copy Markdown
Member

@ncfavier ncfavier left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be good to replace it with something better. Do you feel like a good introduction to Nix (at least the parts that are relevant for HM) exists at the moment?

@roberth
Copy link
Copy Markdown
Contributor Author

roberth commented Jun 30, 2023

It would be good to replace it with something better.

I don't know if that's good. I think the audience can already edit config files in arbitrary configuration languages, so they would know at what point they need to learn more.

Maybe the one on nix.dev is at least better than Nix Pills but I don't think home manager users should need it, and it's not geared towards a module system use case.

@rycee
Copy link
Copy Markdown
Member

rycee commented Jun 30, 2023

I think it is fair enough to remove this, ideal would be to have some nice alternative, like @ncfavier mentioned.

About the infinite recursion, the thing I see people do over and over again is something along the lines of

{
  imports = [ (if pkgs.stdenv.isLinux then ./foo.nix else ./bar.nix) ];
}

which inevitably will lead to an infinite recursion error that (at least in version 2.13.3) doesn't really give any clear hint of what actually is the problem. If there is one error case that I wished was handled better, it's this one. I've occasionally thought about whether it wouldn't be possible to catch this in the module system itself.

@rycee rycee merged commit 0f71012 into nix-community:master Jun 30, 2023
@roberth
Copy link
Copy Markdown
Contributor Author

roberth commented Jul 2, 2023

@rycee seems feasible to improve on. Either

Technically the information is in there, but I can hardly blame someone for not reading the trace, considering the length and verbosity. So yeah, the improvements aren't complete yet, but "infinite recursion at unknown location" specifically should already be a thing of the past. We do still have something like "stack overflow at unknown location", but that is for diverging computations, not lazy fixpoints, and it is far more rare and not caused by the module system to my knowledge.

@rycee
Copy link
Copy Markdown
Member

rycee commented Jul 2, 2023

@roberth Thanks, yes something that can insert additional information in the trace would probably do quite nicely. As-is, while each trace entry does have a location, none of them actually seem to give you a hint about the actual error location. With this error context, one could perhaps, at least, add some reference to the module file containing the problematic imports line.

Edit: Concerning my "I've occasionally thought about whether it wouldn't be possible to catch this in the module system itself" line earlier. I believe my thought was along the line of replacing non-special module argument with, for example,

pkgs = abort "Cannot use pkgs while loading modules"

when collecting modules. And then swap them out with the actual arguments when evaluating the modules. I have not put much thought into that, though so I don't even know if it would be possible to accomplish this argument swap maneuver in a reasonable way. If it is possible, then I do believe that it would allow us to give a quite precise error message in the "imports with pkgs reference" case.

antholeole pushed a commit to antholeole/home-manager that referenced this pull request Jul 24, 2023
This removes the Nix Pills reference, because they are not a good
introduction to the Nix ecosystem, but rather a thorough explanation
of many disparate things. Reading through them might give some light
bulb moments for an intermediate reader, but that does not mean that
they're good for a beginner.

I've also removed the mention of infinite recursion without source
location. That's an old meme for a problem that has been mostly
solved. Mentioning it here has two effects:

- Propagate the outdated meme.

- Make users insensitive to bad errors. Learned helplessness. That
  kind of thing. What we really want is for them to report bad error
  messages, so that they can be fixed. And they can be fixed; just
  report them at `NixOS/nix`.
SimSaladin added a commit to SimSaladin/home-manager that referenced this pull request Aug 26, 2023
* upstream/master: (352 commits)
  flake.lock: Update
  qcal: add module
  bat: generate cache file in XDG cache home
  nixos: only refer to `users.users` if needed
  home-cursor: remove IFD when linking icon directories
  flake.lock: Update
  home-cursor: improve icon compatibility
  fix(qt): allow theming for apps started by systemd (nix-community#4349)
  flake.lock: Update
  fcitx5: add `fcitx5-config-qt` to test stub
  pqiv: only run tests on Linux platforms
  pqiv: add module
  Translate using Weblate (German)
  xplr: add module
  browserpass: support librewolf
  Translate using Weblate (Romanian)
  Translate using Weblate (Portuguese (Brazil))
  hyprland: remove xwayland.hidpi (nix-community#4302)
  home-manager: handle profile list in Nix >2.17
  lf: simplify option validation (nix-community#4334)
  programs.khal: uncomment locale config (nix-community#4319)
  kanshi: support adaptive sync (nix-community#4328)
  mu: add package option (nix-community#4325)
  modules: types.string throws error now (nix-community#4324)
  taffybar: Avoid restarting too quickly (nix-community#4316)
  aerc: do not use smtp-starttls (nix-community#4272)
  zsh: Add `zsh.history.ignoreAllDups` config option (nix-community#4248)
  jujutsu: fix zsh completion (nix-community#4305)
  Translate using Weblate (Korean)
  Translate using Weblate (Romanian)
  Translate using Weblate (German)
  flake.lock: Update
  network-manager-applet: remove `--sm-disable` flag
  himalaya: update a link to ticket
  nushell: deprecation of let-env (nix-community#4292)
  man: fix caches generation in cross-compiled system (nix-community#4294)
  fish: fix session vars build in cross-compiled system (nix-community#4293)
  Update translation files
  Translate using Weblate (Chinese (Simplified))
  gh: option to enable helper for additional hosts (nix-community#4288)
  home-manager: rework news command
  home-manager: skip manual in uninstall configuration
  gnome-terminal: add assertion on profile names
  hyprland: use `toKeyValue`'s `indent` argument (nix-community#4274)
  gpg: fix typo (nix-community#4277)
  firefox: make package nullable (nix-community#4113)
  git-sync: add news entry for darwin
  tmate: don't generate empty config file (nix-community#4271)
  gh-dash: add module
  git-sync: add darwin support
  flake.lock: Update
  hyprland: prioritize variables and beziers (nix-community#4263)
  hyprland: add module
  script-directory: fix documentation link (nix-community#4258)
  Translate using Weblate (Indonesian)
  Translate using Weblate (Ukrainian)
  Translate using Weblate (Spanish)
  Translate using Weblate (Swedish)
  docs: hide `_module.*` from NixOS/nix-darwin docs
  jujutsu: update for Jujutsu 0.8.0 (nix-community#4250)
  ripgrep: don't set env. variable if no config (nix-community#4254)
  docs: update for Markdown migration
  treewide: remove now-redundant `lib.mdDoc` calls
  docs: clean up after Markdown migration
  flake: remove temporary nixpkgs pin
  treewide: convert all option docs to Markdown
  treewide: adjust some DocBook for conversion
  treewide: `mkAliasOption` -> `mkAliasOptionMD`
  treewide: `mkPackageOption` -> `mkPackageOptionMD`
  treewide: convert options with tables to Markdown
  treewide: convert options with lists to Markdown
  treewide: convert custom `enable` docs to Markdown
  treewide: convert parameterized docs to Markdown
  treewide: manually convert some docs to Markdown
  treewide: fix `mkEnableOption` arguments
  treewide: add missing option descriptions
  docs: use `nixosOptionsDoc`
  flake: temporarily pin nixpkgs version
  version: add `isReleaseBranch`
  manual: add test
  Update translation files
  flake.lock: Update
  home-manager: remove Home Manager default paths
  imapnotify: Use JSON type for extraConfig (nix-community#4238)
  Translate using Weblate (French)
  zsh: fix custom syntax highlighting styles (nix-community#4236)
  i3-sway: allow arbitrary floating modifier (nix-community#4229)
  i3-sway: multiple outputs (nix-community#4223)
  home-cursor.nix: enable gtk module when enabling gtk config generation (nix-community#4144)
  aerc: add assertion to limit per-account extraConfig to UI config (nix-community#4196)
  flake.lock: Update
  ssh-agent: add assertion and fix news entry (nix-community#4210)
  imapnotify: move test
  imapnotify: use direct nix store path for config
  flake.lock: Update
  nushell: add login.nu configuration option
  himalaya: fix notmuch backend
  swayosd: add module
  pyenv: add module
  darcs: add module
  tests: some minor cleanups
  goimapnotify: remove test dependency on notmuch
  unison: Allow using same option multiple times (nix-community#4208)
  imapnotify: Add launchd agent (nix-community#3291)
  i3: remove deprecated example in i3.config.startup (nix-community#4201)
  antidote: static file move to /tmp
  Translate using Weblate (Indonesian)
  PULL_REQUEST_TEMPLATE.md: add maintainer cc section (nix-community#4193)
  programs.khal
  vdirsyncer: synchronize metadata as well (nix-community#4167)
  i18n: Use glibcLocales from NixOS if possible (nix-community#2333) (nix-community#4177)
  xfconf: remove properties with null values (nix-community#4192)
  home-manager: Use `path:` URI type for flake default (nix-community#3646)
  ci: autolabel calendars PRs (nix-community#4165)
  flake.lock: Update (nix-community#4161)
  news: fix typo in programs.zsh.antidote entry
  ssh-agent: init module (nix-community#4178)
  chromium: fix `commandLineArgs` to use the user specified package (nix-community#4175)
  sxhkd: allow usage of derivations as keybind commands (nix-community#4169)
  README: Remove the pills (nix-community#4181)
  lsd: use -A instead of -a in aliases (nix-community#4173)
  kakoune: add defaultEditor option
  docs: update link to allowed users setting (nix-community#4176)
  zsh: allow setting custom syntax highlighting styles (nix-community#4122)
  flake: add formatter (nix-community#3620)
  broot: fix test (nix-community#4170)
  antidote: fix .dot path
  ci: build manual and push to home-manager.dev
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants