19 Aug 2024 |
blitz | Do you have module.nix as well? | 08:18:27 |
Šimon Brandner | Sure | 08:18:35 |
Šimon Brandner | {
lib,
config,
pkgs,
...
}: let
cfg = config.programs.oblichey;
in
with lib; {
options.programs.oblichey = {
enable = mkEnableOption "oblichey";
package = mkOption {
type = types.package;
default = pkgs.callPackage ./package.nix {};
description = ''
The oblichey package to use.
'';
};
settings = {
camera = {
path = mkOption {
type = types.str;
description = "Path to the IR camera to be used.";
};
};
};
};
config = mkIf cfg.enable {
environment.etc."oblichey.toml".text = ''
[camera]
path=${cfg.settings.camera.path}
'';
};
}
| 08:19:17 |
blitz | In module.nix you do pkgs.callPackage to build your program. This pkgs is the one where you use the module. I assume this is where your problem comes from | 08:20:30 |
blitz | The quick fix would be in your NixOS config to manually set the package option of this module to the package output of the flake | 08:21:31 |
blitz | This is a pretty common issue with flakes and modules. | 08:21:56 |
samasaur | I think the real fix is running nix flake lock --update-input nixpkgs in your nixos config | 08:22:10 |
blitz | But it 'works as designed' | 08:22:11 |
blitz | Or that :) | 08:22:19 |
Šimon Brandner | Not sure I follow - I would think this would be the pkgs specified in the flake.lock of the app's flake... | 08:23:04 |
Šimon Brandner | In reply to @samasaur:matrix.org I think the real fix is running nix flake lock --update-input nixpkgs in your nixos config (I am blocked by a few things 😅) | 08:23:24 |
samasaur | honestly I would have thought so too but the error you’re getting seems to be an issue with nixpkgs being out of date | 08:23:56 |
samasaur | and given that building standalone is working I am assuming the issue is with your nixos config flake | 08:24:16 |
samasaur | since idk where else nixpkgs could be coming from | 08:24:28 |
samasaur | might be something about how the module system means that it is using the nixpkgs that made the nixosSystem | 08:25:35 |
samasaur | In reply to @blitz:chat.x86.lol The quick fix would be in your NixOS config to manually set the package option of this module to the package output of the flake this is probably the right solution for your use case | 08:25:51 |
samasaur | if you can’t update the nixpkgs input of your config flake | 08:26:16 |
Šimon Brandner | Hmm, it seems to be building now | 08:29:09 |
Šimon Brandner | I would expect this to be a very common problem and I don't really understand why it works this way... | 08:29:46 |
blitz | You might want to try the NixOS discourse for these kinds of questions | 08:29:55 |
Šimon Brandner | Is there another way to use a flake in my system config? | 08:29:58 |
blitz | It's a problem with how the module is written | 08:31:40 |
Šimon Brandner | How should I write it instead? | 08:31:55 |
blitz | https://flake.parts/define-module-in-separate-file <- flake parts has a solution for this exact problem but it has its own steep learning curve | 08:32:47 |
blitz | You have to use outputs.packages... to define the default of the package option and not callPackage again | 08:33:49 |
blitz | The quick version would be to pass the flake's self parameter to the module | 08:34:16 |
blitz | But I'm currently sitting in a plane and can't directly edit your example. If you post it on discourse I'm sure someone can help you improve the module | 08:35:00 |
Šimon Brandner | Sounds good, I'll look at the link and possibly post on discourse | 08:39:15 |
Šimon Brandner | In reply to @blitz:chat.x86.lol But I'm currently sitting in a plane and can't directly edit your example. If you post it on discourse I'm sure someone can help you improve the module Here: https://discourse.nixos.org/t/nixos-module-using-system-nixpkgs-instead-of-the-nixpkgs-specified-in-the-modules-flake/50816 | 09:22:30 |
| Shahar "Dawn" Or (mightyiam) joined the room. | 09:55:33 |