{
  config,
  lib,
  inputs,
  pkgs,
  ...
}:
let
  cfg = config.luj.nix;
in
with lib;
{
  options.luj.nix = {
    enable = mkEnableOption "Enable nix experimental";
  };

  config = mkIf cfg.enable {
    nixpkgs.config.allowUnfree = true;
    nix = {
      package = pkgs.unstable.lix;
      extraOptions = ''
        experimental-features = nix-command flakes
      '';
      nixPath = [
        "nixpkgs=${inputs.nixpkgs}"
        "nixos=${inputs.nixpkgs}"
      ];
      settings = {
        builders-use-substitutes = true;
        auto-optimise-store = true;
        substituters = [ "https://cache.nixos.org" ];
        trusted-public-keys = [ "attic-exec:W1PQ0txRf4qpCIlNLscD/Xw1GwGoBij73JSum/I8Xt4=" ];
      };
    };
  };
}