{pkgs, lib, config, ... }: { #Create new nixos options options = { speccon18.enable = lib.mkEnableOption "enables the speccon18 administrator user"; speccon18.home_manager.enable = lib.mkEnableOption "enables home-manager support for the speccon18 administrator user"; }; #Declare already defined nixos options and enable if the above mkEnable options parameter is ture config = lib.mkIf config.speccon18.enable { programs.zsh.enable = true; users.users.speccon18 = { shell = pkgs.zsh; isNormalUser = true; initialHashedPassword = "$y$j9T$RdLBHOvUpb17egl0d16LT/$3Y2RD/tT1IZ0nkfAR13pp3IzBjvKLRgGpDPLobUeO23"; openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIrZpH5QV62dtTb2yx5I3PF2lJyNpPkV57pDlo6xawID" ]; description = "Steven Carpenter"; extraGroups = [ "wheel" ]; }; home = lib.mkIf config.speccon18.home_manager.enable { username = "speccon18"; homeDirectory = "/home/speccon18"; # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage # when a new Home Manager release introduces backwards # incompatible changes. # # You can update Home Manager without changing this value. See # the Home Manager release notes for a list of state version # changes in each release. stateVersion = "22.11"; packages = with pkgs; [ freecad calibre bitwarden firefox discord gimp obsidian neofetch vlc remmina ]; }; }; }