{ config, lib, pkgs, ... }: { imports = [ ./1password.nix ./displaymanager.nix ./fonts.nix ./fingerprint.nix ./gnome.nix ./impermanence.nix ./kde.nix ./keyd.nix ./nix.nix ./pipewire.nix ./stylix.nix ./touchpad.nix ./users.nix ./xdg-portal.nix ./wm ./zfs.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 = { environment = { systemPackages = with pkgs; [ curl eza neovim yazi ripgrep htop vim wget htop-vim keyd ] ++ (lib.attrValues config.custom.shell.packages); }; }; }