{ inputs, lib, ... }:
let
  system = "x86_64-linux";
  overlays = builtins.attrValues inputs.self.overlays;
  config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam-original" ];
  pkgs = import inputs.nixpkgs { inherit system overlays config; };
in
{
  # Example vm configuration
  flake.nixosConfigurations.vm = lib.nixosSystem {
    inherit system pkgs;
    modules = [
      inputs.self.nixosModules.vm # import vm module
      {
        time.timeZone = "Europe/Berlin";
        i18n.defaultLocale = "en_US.UTF-8";
        users.users.jdoe = {
          password = "example";
          isNormalUser = true;
          extraGroups = [
            "wheel"
            "video"
            "networkmanager"
          ];
        };
        home-manager.users.jdoe = {
          home = {
            username = "jdoe";
            homeDirectory = "/home/jdoe";
          };
          jhome = {
            enable = true;
            gui.enable = true;
            dev = {
              enable = true;
              rust.enable = true;
            };
          };
        };
        nix.registry.nixpkgs.flake = inputs.nixpkgs;
        # password is 'test' see module documentation for more options
        services.jupyter.password = "'sha1:1b961dc713fb:88483270a63e57d18d43cf337e629539de1436ba'";
        jconfig = {
          enable = true;
          dev = {
            enable = true;
            jupyter.enable = true;
          };
          gui.enable = true;
        };
      }
    ];
  };

}