{ inputs, lib, config, pkgs, system, host, ... }: { imports = [ ./1password.nix ./audio.nix ./bluetooth.nix ./displaymanager.nix ./keyd.nix ./gnupg.nix ./nix.nix ./sops.nix ]; options.custom = with lib; { shell = { packages = mkOption { type = with types; attrsOf (oneOf [ str attrs package ]); apply = custom.mkShellPackages; default = { }; description = '' Attrset of shell packages to install and add to pkgs.custom overlay (for compatibility across multiple shells). Both string and attr values will be passed as arguments to writeShellApplicationCompletions ''; example = '' shell.packages = { myPackage1 = "echo 'Hello, World!'"; myPackage2 = { runtimeInputs = [ pkgs.hello ]; text = "hello --greeting 'Hi'"; }; } ''; }; }; symlinks = mkOption { type = types.attrsOf types.str; default = { }; description = "Symlinks to create in the format { dest = src;}"; }; }; config = { boot.loader.systemd-boot.configurationLimit = 10; # networking networking.hostName = host; networking.hostId = builtins.substring 0 8 (builtins.hashString "md5" config.networking.hostName); networking.networkmanager.enable = true; programs.dconf.enable = true; services.libinput = { enable = true; touchpad = { disableWhileTyping = true; naturalScrolling = true; }; }; security.rtkit.enable = true; security.polkit.enable = true; services.openssh = { enable = true; settings = { # Opinionated: forbid root login through SSH. PermitRootLogin = "no"; # Opinionated: use keys only. # Remove if you want to SSH using passwords PasswordAuthentication = false; }; }; environment.systemPackages = with pkgs; [ vim htop ] ++ (lib.attrValues config.custom.shell.packages); system.stateVersion = "25.05"; }; }