2 Oct 2025 |
Niclas Overby Ⓝ | Did you come to a conclusion for this? | 09:28:05 |
Niclas 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 Ⓝ | 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 Ⓝ | * 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 Ⓝ | * 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 Ⓝ | * 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 | ah, the correct places would either be lib, legacyPackages, or an overlay | 14:53:12 |
accelbread | id normally set <namespace>.mkShell in an overlay output and add that to withOverlays | 14:54:21 |
accelbread | legacyPackages doesn't verify strucure, just that it has the pkgset type that stuff expects | 14:55:33 |
accelbread | https://github.com/aws-greengrass/aws-greengrass-sdk-lite/blob/44ea7a1f38ce5eab05558cadbe701e3f0c314216/flake.nix#L219 | 14:56:37 |
accelbread | here is a legacyPackages example | 14:56:55 |
accelbread | the pkgs type is any set with _type = "pkgs" | 14:57:30 |
accelbread | not sure why nixpkgs does it that way but im using nixpkg's definition | 14:58:10 |
accelbread | 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 | you could also maybe add a flakelightModule that adds a stagingSystem option or smth | 15:06:24 |
accelbread | 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 | In reply to @niclas:overby.me Did you come to a conclusion for this? havnt had a chance yet | 15:28:30 |
Niclas Overby Ⓝ | Ideally I would use lib, but how can you access nixpkgs from lib? | 17:19:17 |
Niclas Overby Ⓝ | * Ideally I would use nix/lib.nix , but how can you access nixpkgs? | 17:20:33 |
Niclas Overby Ⓝ | * Ideally I would use nix/lib.nix , but how can you access pkgs ? | 17:21:47 |
accelbread | 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 | * 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 | * 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 | * 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 Ⓝ | Is it possible to disable the nixDir feature? Or more fine-grained, disable autoloading of specific outputs in nixDir ? | 08:50:02 |
accelbread | yeah, can set it to a non-existing dir iirc. I could add a null option | 16:01:53 |
accelbread | fine-grained, no | 16:02:15 |
4 Oct 2025 |
Niclas Overby Ⓝ | That would be awesome! :) | 11:25:04 |
7 Oct 2025 |
accelbread | nixDir can now be set to null: https://github.com/nix-community/flakelight/commit/eda172d7ead89292cb7f9e136a482e97e00873a4 | 06:27:30 |
8 Oct 2025 |
Niclas 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 |