ai vm stuff

This commit is contained in:
2025-05-20 20:06:02 -06:00
parent 762c2dcb8c
commit 7c0fdecdcf
2 changed files with 247 additions and 0 deletions

130
nix/ai-vm.nix Normal file
View File

@@ -0,0 +1,130 @@
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
<home-manager/nixos>
];
# Bootloader.
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda";
boot.loader.grub.useOSProber = true;
networking.hostName = "nixos"; # Define your hostname.
networking.networkmanager.enable = true;
time.timeZone = "America/Denver";
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
#https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229
systemd.services."getty@tty1".enable = false;
systemd.services."autovt@tty1".enable = false;
services.xserver.enable = true;
services.xserver.displayManager = {
gdm.enable = true;
autoLogin = {
enable = true;
user = "alex";
};
};
services.xserver.desktopManager.gnome.enable = true;
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "";
};
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
users.users.alex = {
isNormalUser = true;
description = "alex";
extraGroups = [ "networkmanager" "wheel" "docker" ];
shell = pkgs.fish;
packages = with pkgs; [
lazydocker
btop
nvtopPackages.nvidia
uv
git
];
};
home-manager.users.alex = { pgks, ...}: {
home.stateVersion = "24.11";
imports = [
./home-manager/ai-vm.home.nix
];
};
programs.firefox.enable = true;
nixpkgs.config.allowUnfree = true;
system.stateVersion = "24.11"; # Did you read the comment?
environment.systemPackages = with pkgs; [
vim
];
programs.nix-ld.enable = true;
programs.fish.enable = true;
services.tailscale.enable = true;
services.openssh.enable = true;
services.qemuGuest.enable = true;
virtualisation.docker.enable = true;
hardware.steam-hardware.enable = true;
systemd.targets.sleep.enable = false;
systemd.targets.suspend.enable = false;
systemd.targets.hibernate.enable = false;
systemd.targets.hybrid-sleep.enable = false;
# gaming stuff
services.flatpak.enable = true;
services.sunshine = {
enable = true;
autoStart = true;
capSysAdmin = true;
openFirewall = true;
};
hardware.graphics = {
enable32Bit = true;
enable = true;
};
hardware.nvidia = {
modesetting.enable = true;
open = true;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.production;
powerManagement.enable = false;
powerManagement.finegrained = false;
};
virtualisation.docker.enableNvidia = true;
hardware.nvidia-container-toolkit.enable = true;
services.xserver.videoDrivers = [ "nvidia" ];
}

View File

@@ -0,0 +1,117 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
vscode-fhs
gnome-software
gnome-tweaks
nvtopPackages.nvidia
nerd-fonts.fira-code
nerd-fonts.droid-sans-mono
ghostty
];
nixpkgs.config.allowUnfree = true;
programs.ghostty = {
enable = true;
enableFishIntegration = true;
};
fonts.fontconfig.enable = true;
dconf.enable = true;
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
"org/gnome/desktop/wm/keybindings" = {
toggle-maximized=["<Super>m"];
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
binding = "<Super>t";
command = "ghostty";
name = "terminal";
};
};
gtk = {
enable = true;
theme = {
name = "Adwaita-dark";
package = pkgs.gnome-themes-extra;
};
};
programs.fish = {
enable = true;
shellInit = ''
function commit
git add --all
git commit -m "$argv"
git push
end
# have ctrl+backspace delete previous word
bind \e\[3\;5~ kill-word
# have ctrl+delete delete following word
bind \b backward-kill-word
set -U fish_user_paths ~/.local/bin $fish_user_paths
#set -U fish_user_paths ~/.dotnet $fish_user_paths
#set -U fish_user_paths ~/.dotnet/tools $fish_user_paths
export VISUAL=vim
export EDITOR="$VISUAL"
export DOTNET_WATCH_RESTART_ON_RUDE_EDIT=1
export DOTNET_CLI_TELEMETRY_OPTOUT=1
set -x LIBVIRT_DEFAULT_URI qemu:///system
'';
};
home.file = {
".config/lazydocker/config.yml".text = ''
gui:
returnImmediately: true
screenMode: "half"
'';
".config/k9s/config.yaml".text = ''
k9s:
liveViewAutoRefresh: true
screenDumpDir: /home/alexm/.local/state/k9s/screen-dumps
refreshRate: 2
maxConnRetry: 5
readOnly: false
noExitOnCtrlC: false
ui:
enableMouse: false
headless: false
logoless: false
crumbsless: false
reactive: false
noIcons: false
defaultsToFullScreen: false
skipLatestRevCheck: false
disablePodCounting: false
shellPod:
image: busybox:1.35.0
namespace: default
limits:
cpu: 100m
memory: 100Mi
imageScans:
enable: false
exclusions:
namespaces: []
labels: {}
logger:
tail: 1000
buffer: 5000
sinceSeconds: -1
textWrap: false
showTime: false
thresholds:
cpu:
critical: 90
warn: 70
memory:
critical: 90
warn: 70
namespace:
lockFavorites: false
'';
};
}