!yUrHuDcxUngfTlDbiy:matrix.org

flakelight

38 Members
https://github.com/nix-community/flakelight12 Servers

Load older messages


SenderMessageTime
2 Oct 2025
@niclas:overby.meNiclas Overby ⓃDid you come to a conclusion for this?09:28:05
@niclas:overby.meNiclas Overby Ⓝ

Ended up using this, but it would be nice if there was a clean way to extend lib in module args:

      _module.args = {
        inherit (self.lib) mkSystem mkLocalStagingSystem mkLocalSystem;
      };

09:43:12
@niclas:overby.meNiclas Overby Ⓝ

Where are you supposed to add helper functions similar to mkShell? I noticed that nixpkgs puts it in pkgs/build-support/mkshell, rather than lib.
But if I do that, it will break commands like nix flake show:

 nix flake show
error: expected a derivation

I cannot put it under legacyPackages either, since Flakelight actually type checks it, and expects it to result in a derivation:

      error: A definition for option `legacyPackages' is not of type `nullable function that evaluates to a(n) Nixpkgs package set'. Definition values:
       - In `/nix/store/f199yb2qch3qa0wdq9cglg4wnr7cshfw-source/builtinModules/nixDir.nix':
           {
             mkPackageShell = <function, args: {inputs, lib, pkgs}>;
           }
10:03:53
@niclas:overby.meNiclas Overby Ⓝ *

Where are you supposed to add helper functions similar to mkShell?
I noticed that nixpkgs puts it in pkgs/build-support/mkshell, rather than lib.
But if I do that, it will break commands like nix flake show:

 nix flake show
error: expected a derivation

I cannot put it under legacyPackages either, since Flakelight actually type checks it, and expects it to result in a derivation:

      error: A definition for option `legacyPackages' is not of type `nullable function that evaluates to a(n) Nixpkgs package set'. Definition values:
       - In `/nix/store/f199yb2qch3qa0wdq9cglg4wnr7cshfw-source/builtinModules/nixDir.nix':
           {
             mkPackageShell = <function, args: {inputs, lib, pkgs}>;
           }
10:04:10
@niclas:overby.meNiclas Overby Ⓝ *

Where are you supposed to add helper functions similar to mkShell?
I noticed that nixpkgs puts it in pkgs/build-support/mkshell, rather than lib.
But if I do that, it will break commands like nix flake show:

 nix flake show
error: expected a derivation

I cannot put it under legacyPackages either, since Flakelight actually type checks it, and expects it to result package rather than a function:

      error: A definition for option `legacyPackages' is not of type `nullable function that evaluates to a(n) Nixpkgs package set'. Definition values:
       - In `/nix/store/f199yb2qch3qa0wdq9cglg4wnr7cshfw-source/builtinModules/nixDir.nix':
           {
             mkPackageShell = <function, args: {inputs, lib, pkgs}>;
           }
10:06:13
@niclas:overby.meNiclas Overby Ⓝ *

Where are you supposed to add helper functions similar to mkShell?
I noticed that nixpkgs puts it in pkgs/build-support/mkshell, rather than lib.
But if I do that, it will break commands like nix flake show:

 nix flake show
error: expected a derivation

I cannot put it under legacyPackages either, since Flakelight actually type checks it, and expects it to result in a package rather than a function:

      error: A definition for option `legacyPackages' is not of type `nullable function that evaluates to a(n) Nixpkgs package set'. Definition values:
       - In `/nix/store/f199yb2qch3qa0wdq9cglg4wnr7cshfw-source/builtinModules/nixDir.nix':
           {
             mkPackageShell = <function, args: {inputs, lib, pkgs}>;
           }
10:06:45
@accelbread:matrix.orgaccelbreadah, the correct places would either be lib, legacyPackages, or an overlay 14:53:12
@accelbread:matrix.orgaccelbread id normally set <namespace>.mkShell in an overlay output and add that to withOverlays 14:54:21
@accelbread:matrix.orgaccelbreadlegacyPackages doesn't verify strucure, just that it has the pkgset type that stuff expects14:55:33
@accelbread:matrix.orgaccelbreadhttps://github.com/aws-greengrass/aws-greengrass-sdk-lite/blob/44ea7a1f38ce5eab05558cadbe701e3f0c314216/flake.nix#L21914:56:37
@accelbread:matrix.orgaccelbreadhere is a legacyPackages example14:56:55
@accelbread:matrix.orgaccelbread the pkgs type is any set with _type = "pkgs" 14:57:30
@accelbread:matrix.orgaccelbreadnot sure why nixpkgs does it that way but im using nixpkg's definition14:58:10
@accelbread:matrix.orgaccelbread flakelight sets its lib functions in the flakelight module arg so reachable from that and inherits that in a flakelight attr in overlay. both locations means { flakelight, ... }: flakelight.importDir works for stuff taking module args or for stuff taking pkgs 15:02:44
@accelbread:matrix.orgaccelbread you could also maybe add a flakelightModule that adds a stagingSystem option or smth 15:06:24
@accelbread:matrix.orgaccelbread https://github.com/accelbread/flakelight-elisp/blob/master/flakelight-elisp.nix
here flakelight-elisp adds a config option for defining elisp packages
15:08:08
@accelbread:matrix.orgaccelbread
In reply to @niclas:overby.me
Did you come to a conclusion for this?
havnt had a chance yet
15:28:30
@niclas:overby.meNiclas Overby Ⓝ Ideally I would use lib, but how can you access nixpkgs from lib? 17:19:17
@niclas:overby.meNiclas Overby Ⓝ * Ideally I would use nix/lib.nix, but how can you access nixpkgs? 17:20:33
@niclas:overby.meNiclas Overby Ⓝ * Ideally I would use nix/lib.nix, but how can you access pkgs? 17:21:47
@accelbread:matrix.orgaccelbread

Some folk put per-system things in lib like lib.x86_64-linux.mkShell. You can do that in flakelight either with nix/lib.nix:

{ genSystems, ... }: ({
  # regular lib stuff
} // genSystems (pkgs: {
  # per-system lib stuff
}))
17:44:31
@accelbread:matrix.orgaccelbread *

Some folk put per-system things in lib like lib.x86_64-linux.mkShell. You can do that in flakelight either with nix/lib.nix:

{ genSystems, ... }: ({
  # regular lib stuff
} // genSystems (pkgs: {
  # per-system lib stuff
}))
17:44:38
@accelbread:matrix.orgaccelbread* Some folk put per-system things in lib like lib.x86_64-linux.mkShell. You can do that in flakelight with nix/lib.nix: { genSystems, ... }: ({ # regular lib stuff } // genSystems (pkgs: { # per-system lib stuff })) 17:55:31
@accelbread:matrix.orgaccelbread *

Some folk put per-system things in lib like lib.x86_64-linux.mkShell. You can do that in flakelight with nix/lib.nix:

{ genSystems, ... }: ({
  # regular lib stuff
} // genSystems (pkgs: {
  # per-system lib stuff
}))
17:56:10
3 Oct 2025
@niclas:overby.meNiclas Overby Ⓝ Is it possible to disable the nixDir feature? Or more fine-grained, disable autoloading of specific outputs in nixDir? 08:50:02
@accelbread:matrix.orgaccelbreadyeah, can set it to a non-existing dir iirc. I could add a null option16:01:53
@accelbread:matrix.orgaccelbreadfine-grained, no16:02:15
4 Oct 2025
@niclas:overby.meNiclas Overby ⓃThat would be awesome! :)11:25:04
7 Oct 2025
@accelbread:matrix.orgaccelbreadnixDir can now be set to null: https://github.com/nix-community/flakelight/commit/eda172d7ead89292cb7f9e136a482e97e00873a406:27:30
8 Oct 2025
@niclas:overby.meNiclas Overby Ⓝ

Is there a reason, that the ./. argument is separate from the following attributeset?

Why this:

  outputs = inputs:
    inputs.flakelight ./. {
      inherit inputs;

And not this:

  outputs = inputs:
    inputs.flakelight {
      inherit inputs;
      src = ./.;
11:40:24

Show newer messages


Back to Room ListRoom Version: 10