Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extra arguments in configuration.nix with default values no longer work #7272

Open
wizeman opened this issue Apr 8, 2015 · 23 comments
Open
Labels
0.kind: question 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md 6.topic: nixos

Comments

@wizeman
Copy link
Member

wizeman commented Apr 8, 2015

After #6794 was merged, my NixOS configuration started to fail with the following error:

building the system configuration...
error: while evaluating the attribute ‘config.system.build.toplevel’ at "/nixdev/nixpkgs/nixos/modules/system/activation/top-level.nix":228:5:
(...)
while evaluating the attribute ‘value’ at "/nixdev/nixpkgs/lib/types.nix":119:38:
while evaluating the attribute ‘_module.args."${name}"’ at "/nixdev/nixpkgs/lib/attrsets.nix":135:44:
attribute ‘_module.args.rg_path’ missing, at "/nixdev/nixpkgs/lib/modules.nix":138:17

My configuration.nix has the following contents:

{ config, pkgs, lib 
, rg_path ? "/root/src/rg"
, ... }:

let
  rgpkg = import "${rg_path}/default.nix" {}; 
in
(...)
  environment.systemPackages = with pkgs; [
    (...)
    rgpkg
  ];

I'm guessing it's some issue related to arguments with default values not being handled correctly after the lib/modules.nix refactoring?

cc @nbp @shlevy

@wizeman
Copy link
Member Author

wizeman commented Apr 9, 2015

Note: reverting #6794 fixes my issue, but I can't keep it reverted on my private nixpkgs clone forever...
Any suggestions?

@nbp
Copy link
Member

nbp commented Apr 9, 2015

In this precise example, the default value can be moved as an option definition, either by declaring a specific option for it, or as follow:

{ config, pkgs, lib, rg_path, ... }:

let
  rgpkg = import "${rg_path}/default.nix" {};
in

{
  […]

  _module.args.rg_path = mkDefault "/root/src/rg";
  environment.systemPackages = with pkgs; [
    […]
    rgpkg
  ];

  […]
}

In general, this is not possible today as we have no equivalent to returning a value equivalent to the absence of an attribute. More over, we cannot solve this when we generate the attribute set arguments, as this would imply that we already have to result of the evaluation of the module that we are trying to call.

This is indeed a regression if the arguments are used to decide which imports are used. If we want to solve this case, then we would have to restore a notion of precedence, where the extra arguments given to the evalModules function are taking precedence over the argument defined in _module.args.

I am not sure if we want to fix it if nobody has a concrete use-case.

@wizeman
Copy link
Member Author

wizeman commented Apr 10, 2015

@nbp Thanks, your suggestion fixes the example I gave.

However, now I am getting an infinite recursion due to exactly the problem you mentioned, of default arguments deciding which imports are used.
This is in the configuration.nix of my home server:

{ config, pkgs, lib, hydra_path, ... }:

{
  _module.args.hydra_path = lib.mkDefault "/root/src/localrepos/hydra";

  require = [
    (...)
    "${hydra_path}/hydra-module.nix"
  ];

  (...)

  services.hydra = {
    enable = true;
    package = (import "${hydra_path}/release.nix" {}).build.x86_64-linux;
    dbi = "dbi:Pg:dbname=hydra;user=hydra;";
    hydraURL = "http://homeserv:3000";
  };

  (...)
}

In fact, if I simplify the configuration to the following very short configuration.nix, I am still getting the infinite recursion:

{ config, pkgs, lib, hydra_path, ... }: 

{
  _module.args.hydra_path = lib.mkDefault "/root/src/localrepos/hydra";

  require = [
    "${hydra_path}/hydra-module.nix"
  ]; 
}

This is the exact error for the short example:

building the system configuration...
error: while evaluating the attribute ‘config.system.build.toplevel’ at "/nixdev/nixpkgs/nixos/lib/eval-config.nix":50:5:
while evaluating the attribute ‘config’ at "/nixdev/nixpkgs/lib/modules.nix":82:25:
while evaluating ‘yieldConfig’ at "/nixdev/nixpkgs/lib/modules.nix":69:29, called from "/nixdev/nixpkgs/lib/modules.nix":68:16:
while evaluating ‘mergeModules’ at "/nixdev/nixpkgs/lib/modules.nix":160:26, called from "/nixdev/nixpkgs/lib/modules.nix":59:17:
while evaluating ‘mergeModules'’ at "/nixdev/nixpkgs/lib/modules.nix":164:36, called from "/nixdev/nixpkgs/lib/modules.nix":161:5:
while evaluating ‘concatMap’ at "/nixdev/nixpkgs/lib/lists.nix":54:18, called from "/nixdev/nixpkgs/lib/modules.nix":200:9:
while evaluating ‘fold’ at "/nixdev/nixpkgs/lib/lists.nix":20:19, called from "/nixdev/nixpkgs/lib/modules.nix":59:38:
while evaluating ‘fold'’ at "/nixdev/nixpkgs/lib/lists.nix":23:15, called from "/nixdev/nixpkgs/lib/lists.nix":27:8:
while evaluating ‘closeModules’ at "/nixdev/nixpkgs/lib/modules.nix":86:27, called from "/nixdev/nixpkgs/lib/modules.nix":54:16:
while evaluating anonymous function at "/nixdev/nixpkgs/lib/modules.nix":88:49, called from "/nixdev/nixpkgs/lib/lists.nix":49:19:
infinite recursion encountered

I guess this qualifies as a use case?

Or is there a better way of including the Hydra module into one's configuration.nix, in such a way that this configuration can be built by a Hydra jobset but in a way that the jobset can override the path to the Hydra repository?

@nbp
Copy link
Member

nbp commented Apr 13, 2015

@wizeman, can you detail how you provide a non-default value to your modules?

@wizeman
Copy link
Member Author

wizeman commented Apr 14, 2015

Sure... well, it's a bit complicated to explain but I'll try.
Basically, I have 3 levels of configuration:

First off, I have files such as:

config-homeserv.nix
config-wizylap.nix
config-atom.nix
...

... each of which is a valid configuration.nix file, one per machine that I administer.
These have references to custom, local software, and import other modules. In particular, my home server is running Hydra, so config-homeserv.nix imports the Hydra module, which is inside of a local git checkout (the git repository of Hydra).
The location of this git checkout (and of all other custom software packages) has a default value, so that I don't have to manually provide it when I'm deploying it.

On a second level, I have a file called wizynet.nix which is a valid nixops logical network configuration.
It looks like this:

 1 {
 2   network.description = "Wizy network";
 3 
 4   homeserv = {
 5     require = [ ./config-homeserv.nix ];
 6     deployment.targetEnv = "none";
 7     deployment.targetHost = "192.168.x.x";
 8   };
 (...)
16   atom = {
17     require = [ ./config-atom.nix ];
18     deployment.targetEnv = "none";
19     deployment.targetHost = "x.x.x.x";
20   };
...

It basically just imports the config-*.nix files.
These allow me to use nixops deploy on my laptop to deploy all my configurations to the remote machines.
Like I said, since all the paths to my custom software have default values, I don't have to provide it manually when using nixops deploy.

However, building everything on my laptop would be a nightmare.

So finally, I have a file called release.nix which my personal Hydra instance in my home server tries to build (as a jobset).
This release.nix is responsible for building all the configurations of all my machines. Among other things, it imports wizynet.nix.
This way, since my personal Hydra instance is configured to build the software of all my machines, when I use nixops deploy on my laptop, it will just fetch all the already-built packages from my home server and simply copy it to the remote machines.

However, the custom software packages which are stored on my home server are in different paths than what I have on my laptop.
So what I do is to just manually configure the paths on my Hydra jobset as arguments to the Nix expression.
This is what release.nix looks like:

 1 {
 2   wizynet
 3 , hydra_path
 4 , rg_path
 5 , wizytests_path
 6 , kodiOffPath
 7 , nixpkgs
 8 }:
 9 
10 let
11 
12   pkgs = import nixpkgs { };
13 
14   eval = modules: (import <nixpkgs/nixos/lib/eval-config.nix> {
15     inherit modules;
16     extraArgs = {
17       inherit hydra_path rg_path wizytests_path kodiOffPath;
18     };
19   });
20 
21   bareMachines = import ./wizynet.nix;
22 
23   machines = bareMachines // {
24     wizylap = {
25       require = [ ./config-wizylap.nix ];
26     };
27   };
28 
29   machine_names = builtins.filter (n: n != "network") (builtins.attrNames machines);
30 
31   priorities = {
32     wizylap = 130;
33     homeserv = 120;
34     atom = 110;
35     #xen = 110;
36     kodi = 110;
37   };
38 
39 in
40 
41 pkgs.lib.listToAttrs (map (machineName: {
42   name = machineName;
43 
44   value =
45     let
46       requires = (builtins.getAttr machineName machines).require;
47       eval_system = eval requires;
48     in
49       eval_system.config.system.build.toplevel // {
50         meta = {
51           schedulingPriority = builtins.getAttr machineName priorities;
52         };
53       };
54 }) machine_names)

@aszlig
Copy link
Member

aszlig commented Apr 14, 2015

@wizeman: Ah, i'm doing something similar to what you're doing here and if it comes to Hydra, I'm directly importing the module from the source derivation like this.

@wizeman
Copy link
Member Author

wizeman commented Apr 14, 2015

@aszlig Right, but you have the luxury of fetching Hydra from github, always from the same location.

I think the problem here is that the location of my Hydra checkout depends on whether I'm building from my laptop (the default) or from my server (explicitly overriding the location). This used to work, but with the changes from #6794 it doesn't work anymore.

Note that I'm sometimes building Hydra with custom changes. In particular, I just want to modify my git checkout locally, push my changes to my server and have everything just work out transparently.

I don't have (nor do I wish to have) a (private or public) Hydra git repository accessible from both my laptop and home server, as it would either be more insecure, or I'd have to manually be specifying the git rev and hashes all the time. I just want to be able to build from local checkouts...

@aszlig
Copy link
Member

aszlig commented Apr 14, 2015

@wizeman: It doesn't need to be from GitHub, it can be fetched from a local path as well (just replace fetchgit with a path).

So for example:

import "${/path/to/your/hydra/source}/hydra-module.nix"

@wizeman
Copy link
Member Author

wizeman commented Apr 14, 2015

@aszlig Your suggestion doesn't seem to work.

This minimal configuration.nix file fails with an infinite recursion, whether I uncomment the first commented line or the second:

{ config, pkgs, lib
, hydra_path      #1st syntax:    ? "/root/src/localrepos/hydra"
, ... }:

with lib;

let

  hydraModule = import "${hydra_path}/hydra-module.nix";

in {
  #2nd syntax:    _module.args.hydra_path = lib.mkDefault "/root/src/localrepos/hydra";

  imports = singleton hydraModule;
}

@aszlig
Copy link
Member

aszlig commented Apr 14, 2015

@wizeman: First of all, I'd make sure that the Hydra sources are a path and not a string, so that it will end up in the store.

How are you evaluating this configuration? A quick check roughly similar to your release.nix above works fine so far:

$ nix-instantiate --arg hydraSrc /home/aszlig/hydra -E '{ hydraSrc }: (import <nixpkgs/nixos> { configuration = import "${hydraSrc}/hydra-module.nix"; }).vm'                     
warning: you did not specify ‘--add-root’; the result might be removed by the garbage collector
/nix/store/9a9wszxshrb2f2kahfrmkrsdy4rq98ib-nixos-vm.drv

But the last one is using the path as a module argument, so testing that now as well...

@wizeman
Copy link
Member Author

wizeman commented Apr 14, 2015

@aszlig I don't understand... why would I want the Hydra sources in the store?
All files needed by Hydra should be inside the built package (which, in my real configuration.nix, I pass to the Hydra module via the package argument). You can see my real configuration.nix in my 3rd comment.

To answer your question, this is how I am evaluating it:

NIX_PATH=/nixdev:nixos-config=/root/test.nix nixos-rebuild dry-build --show-trace

This is the result:

building the system configuration...
error: while evaluating the attribute ‘config.system.build.toplevel’ at "/nixdev/nixpkgs/nixos/lib/eval-config.nix":50:5:
while evaluating the attribute ‘config’ at "/nixdev/nixpkgs/lib/modules.nix":82:25:
while evaluating ‘yieldConfig’ at "/nixdev/nixpkgs/lib/modules.nix":69:29, called from "/nixdev/nixpkgs/lib/modules.nix":68:16:
while evaluating ‘mergeModules’ at "/nixdev/nixpkgs/lib/modules.nix":160:26, called from "/nixdev/nixpkgs/lib/modules.nix":59:17:
while evaluating ‘mergeModules'’ at "/nixdev/nixpkgs/lib/modules.nix":164:36, called from "/nixdev/nixpkgs/lib/modules.nix":161:5:
while evaluating ‘concatMap’ at "/nixdev/nixpkgs/lib/lists.nix":54:18, called from "/nixdev/nixpkgs/lib/modules.nix":200:9:
while evaluating ‘fold’ at "/nixdev/nixpkgs/lib/lists.nix":20:19, called from "/nixdev/nixpkgs/lib/modules.nix":59:38:
while evaluating ‘fold'’ at "/nixdev/nixpkgs/lib/lists.nix":23:15, called from "/nixdev/nixpkgs/lib/lists.nix":27:8:
while evaluating ‘closeModules’ at "/nixdev/nixpkgs/lib/modules.nix":86:27, called from "/nixdev/nixpkgs/lib/modules.nix":54:16:
while evaluating anonymous function at "/nixdev/nixpkgs/lib/modules.nix":88:49, called from "/nixdev/nixpkgs/lib/lists.nix":49:19:
infinite recursion encountered

@wizeman
Copy link
Member Author

wizeman commented Apr 14, 2015

@aszlig Also, you're not using a default value for your hydraSrc, so of course it works for you.
I think you missed the point of this issue... :-)

@aszlig
Copy link
Member

aszlig commented Apr 14, 2015

Okay, was able to reproduce it and it only really happens if the argument is passed to an imports.

@nbp
Copy link
Member

nbp commented Apr 14, 2015

@wizeman, so you are using the same config within hydra, where you provide a non-default value and call the expression your-self, or with NixOS lib's which does not provide this argument.

So far I have ideas on how to make a work-around, but it would imply that you modify the evalModule call of NixOS, which is not what you are looking for. I think I can do something like:

{ config, lib, hydra_path ? "/home/me/hydra", ... }:

{
  imports = [ "${hydra_path}/hydra-module.nix" ];
  importsArgs = [ "hydra_path" ];
  …
}

would that be ok for you if this is doable?

@wizeman
Copy link
Member Author

wizeman commented Apr 15, 2015

@nbp Your suggestion sounds pretty great to me. Thanks!

aszlig added a commit to openlab-aux/vuizvui that referenced this issue Apr 29, 2015
This causes an infinite recursion on evaluation if we import something
from a module argument. So until we have an importsArgs module attribute
we're going to refer to ../../nixpkgs-path.nix.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
@nbp
Copy link
Member

nbp commented May 12, 2015

Sorry for the delay, I will try to come-up with an implementation by the end of the week.

nbp added a commit to nbp/nixpkgs-2 that referenced this issue May 13, 2015
nbp added a commit to nbp/nixpkgs-2 that referenced this issue May 13, 2015
…are eagerly provided by the module system.
nbp added a commit to nbp/nixpkgs-2 that referenced this issue May 31, 2015
nbp added a commit to nbp/nixpkgs-2 that referenced this issue May 31, 2015
…are eagerly provided by the module system.
@nbp
Copy link
Member

nbp commented Jul 13, 2015

@wizeman , I think we now have a special argument again for 1modulePath`, which can be used in the same way as you used to. Can you confirm that it works fine for you?

@wizeman
Copy link
Member Author

wizeman commented Jul 21, 2015

@nbp I've tried it in a few different ways and I am still getting an infinite recursion, but I'm probably not doing it right.

Could you show me a small example of how that special argument could be used to solve this issue?

@nbp
Copy link
Member

nbp commented Jul 21, 2015

@wizeman Basically, you would have to do something similar to what you pasted a while ago in #7272 (comment) , except that instead of having it being named extraArgs, it would be named specialArgs.

oh … and I noticed that we would have to change the way we process arguments in eval-config.nix, to pass this new specialArgs to the lib.evalModules function.

@nbp
Copy link
Member

nbp commented Nov 16, 2015

@wizeman
Sorry again for the delay, these issues / pull request slipped out of my way.

I was re-reading what you described above, and I wondering why you need the hydra_path and other to be arguments of the modules, and not argument of a function which produces a module?

What I mean is that your configuration would become something like:

 1 {
 2   network.description = "Wizy network";
 3 
 4   homeserv = {
 5     require = [ (./config-homeserv.nix {}) ];
 6     deployment.targetEnv = "none";
 7     deployment.targetHost = "192.168.x.x";
 8   };
 …

where the config-*.nix file would be something like:

{ hydra_path ? ./hyfra/module.nix }:
{ pkgs, config, ... }:

{
  …
}

@nbp nbp added this to the 16.03 milestone Nov 20, 2015
@nbp
Copy link
Member

nbp commented Nov 20, 2015

Closing as this issue is solved by #11106.
See #8932 (comment)

@nbp nbp closed this as completed Nov 20, 2015
wizeman pushed a commit that referenced this issue Oct 30, 2017
wizeman pushed a commit that referenced this issue Oct 30, 2017
@Atemu
Copy link
Member

Atemu commented Jun 3, 2020

The supposed fix seems to have gotten reverted 4y ago and I just ran into this issue again.

Reproducer configuration.nix:

{ foo ? { ... }: {}, ... }:
{
  imports = [ foo ];
}

Trace:

error: while evaluating the attribute 'config' at /nix/var/nix/profiles/per-user/root/channels/nixos/nixos/lib/eval-config.nix:64:5:
while evaluating the attribute 'config' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:96:25:
while evaluating 'yieldConfig' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:83:29, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:82:16:
while evaluating 'mergeModules' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:233:26, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:73:17:
while evaluating 'mergeModules'' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:237:36, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:234:5:
while evaluating 'flip' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/trivial.nix:138:16, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:280:6:
while evaluating 'byName' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:260:25, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:268:21:
while evaluating 'reverseList' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/lists.nix:393:17, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:73:38:
while evaluating anonymous function at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:167:37, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:68:19:
while evaluating 'filterModules' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:157:36, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:168:7:
while evaluating anonymous function at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:161:31, called from undefined position:
while evaluating the attribute 'disabled' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:139:13:
while evaluating 'loadModule' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:106:53, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:144:22:
while evaluating 'isFunction' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/trivial.nix:333:16, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:107:12:
while evaluating the module argument `foo' in "/home/atemu/Projects/nixos-config/repro.nix":
infinite recursion encountered, at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:217:28
building the system configuration...
error: while evaluating the attribute 'config' at /nix/var/nix/profiles/per-user/root/channels/nixos/nixos/lib/eval-config.nix:64:5:
while evaluating the attribute 'config' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:96:25:
while evaluating 'yieldConfig' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:83:29, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:82:16:
while evaluating 'mergeModules' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:233:26, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:73:17:
while evaluating 'mergeModules'' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:237:36, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:234:5:
while evaluating 'flip' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/trivial.nix:138:16, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:280:6:
while evaluating 'byName' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:260:25, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:268:21:
while evaluating 'reverseList' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/lists.nix:393:17, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:73:38:
while evaluating anonymous function at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:167:37, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:68:19:
while evaluating 'filterModules' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:157:36, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:168:7:
while evaluating anonymous function at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:161:31, called from undefined position:
while evaluating the attribute 'disabled' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:139:13:
while evaluating 'loadModule' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:106:53, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:144:22:
while evaluating 'isFunction' at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/trivial.nix:333:16, called from /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:107:12:
while evaluating the module argument `foo' in "/home/atemu/Projects/nixos-config/repro.nix":
infinite recursion encountered, at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:217:28

@Atemu Atemu reopened this Jun 3, 2020
Atemu added a commit to Atemu/nixos-config that referenced this issue Jun 16, 2020
This makes it possible to evaluate my configuration via build.nix

It also allows you to specify a custom meta attrset without modifying meta.nix
which is useful for building purposes/hardware combinations other than your
local one

I couldn't put this in default.nix unfortunately because a NixOS configuration
file can't have custom arguments (NixOS/nixpkgs#7272)
@stale
Copy link

stale bot commented Nov 30, 2020

I marked this as stale due to inactivity. → More info

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Nov 30, 2020
@veprbl veprbl removed this from the 16.03 milestone May 31, 2021
@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label May 31, 2021
@veprbl veprbl added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Nov 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0.kind: question 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md 6.topic: nixos
Projects
None yet
Development

No branches or pull requests

6 participants