!yUrHuDcxUngfTlDbiy:matrix.org

flakelight

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

Load older messages


SenderMessageTime
6 Apr 2024
@lunik1:lunik.onelunik1 Something I'm struggling a bit with now: I would like to use nixDir and have a NixOS configuration in each file, but I have some modules in my inputs I would like to add to each NixOS configuration. Currently, I add those modules by mapping
nixosOptions' // {
                modules = nixosOptions'.modules ++ nixosModules;
              };
(where nixosModules is a lit of the extra nixos modules), but I don't think this can be done with nixDir. Can this be done without just adding those modules to each config individually?
13:20:56
@accelbread:matrix.orgaccelbreadHey, thanks for reaching out! I appreciate hearing back For, withOverlays and NixOS, you'd either have to use the short form (where flakelight calls nixosSystem for you) or pass propagationModule Theres a line here (https://github.com/nix-community/flakelight/blob/a55ef9097613d99f293a532356d67b8ba8aff37f/API_GUIDE.md?plain=1#L959); I'll see about making it clearer. I'll add an example for it too. For packages from other flakes' packages outputs, I'll add some docs/examples as well 22:03:35
@accelbread:matrix.orgaccelbread * Hey, thanks for reaching out! I appreciate hearing back For, withOverlays and NixOS, you'd either have to use the short form (where flakelight calls nixosSystem for you) or pass propagationModule Theres a line here (https://github.com/nix-community/flakelight/blob/a55ef9097613d99f293a532356d67b8ba8aff37f/API_GUIDE.md?plain=1#L959); I'll see about making it clearer. I'll add an example for it too. For packages from other flakes' packages outputs, I'll add some docs/examples as well 22:03:53
@accelbread:matrix.orgaccelbread For sharing module configuration between nixos systems, you could make nixos/default.nix in your nixDir and have that add the config to each system 22:05:59
@accelbread:matrix.orgaccelbreadLet me get an example real quick22:06:06
@accelbread:matrix.orgaccelbread * Hey, thanks for reaching out! I appreciate hearing back For, withOverlays and NixOS/home-manager, you'd either have to use the short form (where flakelight calls nixosSystem/homeManagerConfiguration for you) or pass propagationModule to the function yourself Theres a line here (https://github.com/nix-community/flakelight/blob/a55ef9097613d99f293a532356d67b8ba8aff37f/API_GUIDE.md?plain=1#L959); I'll see about making it clearer. I'll add an example for it too. For packages from other flakes' packages outputs, I'll add some docs/examples as well 22:08:31
@accelbread:matrix.orgaccelbread

Assuming ./nix as nixDIr,

./nix/nixos/default.nix can be:

{ flakelight, lib, inputs, ... }:
let
  addCommonCfg = prev: {
    modules = prev.modules or [ ] ++ [ inputs.some-flake.nixosModules.default ];
  };
in
lib.mapAttrs (_: addCommonCfg) (flakelight.importDir ./.)

and that will add some-flake.nixosModules.default to all you nixos systems, assuming you define your nixos systems something like follows:

./nix/nixos/machineA/default.nix (or ./nix/nixos/machineA.nix):

{
  system = "x86_64-linux";
  modules = [
    ./configuration.nix
    ./mqtt-broker.nix
    { system.stateVersion = "22.11"; }
  ];
}

22:21:01
@accelbread:matrix.orgaccelbread *

Assuming ./nix as nixDIr,

./nix/nixos/default.nix can be:

{ flakelight, lib, inputs, ... }:
let
  addCommonCfg = prev: {
    modules = prev.modules or [ ] ++ [ inputs.some-flake.nixosModules.default ];
  };
in
lib.mapAttrs (_: addCommonCfg) (flakelight.importDir ./.)

and that will add some-flake.nixosModules.default to all you nixos systems, assuming you define your nixos systems something like follows:

./nix/nixos/machineA/default.nix (or ./nix/nixos/machineA.nix):

{
  system = "x86_64-linux";
  modules = [
    ./configuration.nix
    { system.stateVersion = "22.11"; }
  ];
}

22:21:12
@accelbread:matrix.orgaccelbread Or as another option, you can add inputs.self.nixosModules.common to each of your system, and import your common modules there
I do that for my config here:
https://github.com/accelbread/config-flake/blob/ae52725fd660af550d66750707d649082786e332/nix/nixos/solace/configuration.nix#L5
https://github.com/accelbread/config-flake/blob/ae52725fd660af550d66750707d649082786e332/nix/nixosModules/common.nix#L7
22:24:30
@accelbread:matrix.orgaccelbreadIMO the latter is cleaner with importing common config, but if you want to not have common lines, the former works too. Whichever you like the best22:27:49
@accelbread:matrix.orgaccelbread lunik1: LMK if that helps; I might be able to give better advice if you have the code available somewhere as well 22:36:41
@accelbread:matrix.orgaccelbread *

Assuming ./nix as nixDIr,

./nix/nixos/default.nix can be:

{ flakelight, lib, inputs, ... }:
let
  addCommonCfg = prev: prev // {
    modules = prev.modules or [ ] ++ [ inputs.some-flake.nixosModules.default ];
  };
in
lib.mapAttrs (_: addCommonCfg) (flakelight.importDir ./.)

and that will add some-flake.nixosModules.default to all you nixos systems, assuming you define your nixos systems something like follows:

./nix/nixos/machineA/default.nix (or ./nix/nixos/machineA.nix):

{
  system = "x86_64-linux";
  modules = [
    ./configuration.nix
    { system.stateVersion = "22.11"; }
  ];
}

22:42:27
@accelbread:matrix.orgaccelbread * Or as another option, you can add inputs.self.nixosModules.common to each of your system, and import your common modules there
I do that for my config here:
https://github.com/accelbread/config-flake/blob/ae52725fd660af550d66750707d649082786e332/nix/nixosModules/common.nix#L7
https://github.com/accelbread/config-flake/blob/ae52725fd660af550d66750707d649082786e332/nix/nixos/solace/configuration.nix#L5
22:43:47
@lunik1:lunik.onelunik1My code is here https://gitlab.com/lunik1/nix-config/-/tree/flakelight23:29:28
@lunik1:lunik.onelunik1
In reply to@accelbread:matrix.org
Hey, thanks for reaching out! I appreciate hearing back For, withOverlays and NixOS/home-manager, you'd either have to use the short form (where flakelight calls nixosSystem/homeManagerConfiguration for you) or pass propagationModule to the function yourself Theres a line here (https://github.com/nix-community/flakelight/blob/a55ef9097613d99f293a532356d67b8ba8aff37f/API_GUIDE.md?plain=1#L959); I'll see about making it clearer. I'll add an example for it too. For packages from other flakes' packages outputs, I'll add some docs/examples as well
I could have sworn when I did this that the nixos config immediately complained about nonfree packages, indicating the config had not been carried over. I will take another look.
23:31:04
@lunik1:lunik.onelunik1 Those options for the common config look good. Is flakelight.importDir documented anywhere? I don't remember seeing it. 23:32:07
7 Apr 2024
@lunik1:lunik.onelunik1
In reply to@lunik1:lunik.one
I could have sworn when I did this that the nixos config immediately complained about nonfree packages, indicating the config had not been carried over. I will take another look.
Here's a mwe of the issue
{
  inputs = {
    flakelight = {
      url = "github:nix-community/flakelight";
    };
  };

  outputs = { flakelight, ... }:
    flakelight ./. {
      nixpkgs.config.allowUnfree = true;

      nixosConfigurations = {
        host = {
          system = "x86_64-linux";
          modules = [
            {
              boot.loader.grub.device = "/dev/sda";
              fileSystems."/" = {
                device = "/dev/sda";
                fsType = "xfs";
              };
              hardware.enableAllFirmware = true;
            }
          ];
        };
      };
    };
}
This system configuration fails to build with
       Failed assertions:
       - the list of hardware.enableAllFirmware contains non-redistributable licensed firmware files.
         This requires nixpkgs.config.allowUnfree to be true.
         An alternative is to use the hardware.enableRedistributableFirmware option.
00:02:23
@accelbread:matrix.orgaccelbreadYeah importDir is not documented yet; I need to add a section of lib functions. It does the same thing autoimport with nixDir would do00:03:48
@accelbread:matrix.orgaccelbreadAh yeah, the overlays are carried over currently but not config Hmm Propagating config probably makes sense, yeah Can add that00:05:26
@accelbread:matrix.orgaccelbread * Ah yeah, the overlays are carried over currently but not nixpkgs config Hmm Propagating config probably makes sense, yeah Can add that00:05:49
@accelbread:matrix.orgaccelbread lunik1: Pushed a change to also propagate the nixpkgs.config option. Tested it with nixpkgs.config.allowUnfreePredicate on my systems 01:06:54
@accelbread:matrix.orgaccelbreadhttps://github.com/nix-community/flakelight/commit/fb530e878f701795fe608f499796860ca303a62401:07:13
@accelbread:matrix.orgaccelbreadwill add the other docs updates later today or tomorrow 01:08:20
10 Apr 2024
@lehmanator:tchncs.deSam Lehman joined the room.15:47:00
17 Apr 2024
@JoelMcCracken:matrix.orgJoelMcCracken joined the room.16:29:59
28 Apr 2024
@a-kenji:matrix.orgkenji joined the room.10:00:29
29 Apr 2024
@mjolnir:nixos.orgNixOS Moderation Botchanged room power levels.15:28:34
1 May 2024
@nrs-status:matrix.orgthirdofmay18081814goya joined the room.04:01:44
@nrs-status:matrix.orgthirdofmay18081814goyahi, how do you make flakelight load the nix/ folder in the same directory as the flake?04:02:26
@accelbread:matrix.orgaccelbread loading ./nix in flake dir is default 04:02:53

Show newer messages


Back to Room ListRoom Version: 10