{ config, lib, pkgs, ... }: let cfg = config.workstation; sources = import ; cmd50 = (pkgs.callPackage sources.my-cmd50 {}); in { options.workstation = { username = lib.mkOption { type = lib.types.str; }; }; imports = [ ../common (import ./graphical.nix { inherit config pkgs cmd50; }) ./firefox.nix ./dev.nix ./create.nix ./android.nix ]; config = { users.users.${cfg.username} = { isNormalUser = true; extraGroups = [ "wheel" "networkmanager" "dialout" "wireshark" ]; }; services.getty = { autologinUser = cfg.username; autologinOnce = true; # only in the first tty once per boot }; environment.systemPackages = with pkgs; [ npins (callPackage "${sources.agenix}/pkgs/agenix.nix" {}) (callPackage sources.my-vdf {}) nixfmt-rfc-style vim-full cmd50 (writeShellScriptBin "xdg-open" '' ${cmd50}/bin/open "$@" '') (writeShellScriptBin "ed" (builtins.readFile ./scripts/ed)) restic skim unzip # Android android-tools go-mtpfs ]; environment.sessionVariables = { # Tell .zshrc to source zshrc-workstation.sh. MYNIX_PROFILE = "workstation"; }; nix.settings.experimental-features = ["nix-command" "flakes"]; # Age defaults to this anyway when openssh is enabled. # We're setting this here for workstations where openssh is disabled. age.identityPaths = ["/etc/ssh/ssh_host_ed25519_key"]; }; }