Merge branch 'main' of src:greg/nixos-config

This commit is contained in:
Greg Hellings
2025-10-08 08:22:07 -05:00
117 changed files with 2463 additions and 14148 deletions
+5 -16
View File
@@ -1,26 +1,15 @@
{ pkgs, ... }:
{ config, pkgs, ... }:
{
programs.bash = {
enable = true;
shellAliases = {
acp = "rsync --progress -ah";
agbuild = "ansible-galaxy collection build";
apub = "ansible-galaxy collection publish --api-key \${GALAXY_API_KEY}";
gh-personal = "$GH_CONFIG_DIR=\"${config.home.homeDirectory}/.config/gh/personal\" gh";
ls = "ls --color";
ll = "ls -l --color";
calc = "bc";
d = "deactivate";
devroles = "cd ~/src/ansible_collections/devroles";
gohome = "ssh greg@dns.greg-hellings.gmail.com.beta.tailscale.net -D localhost:10080";
ll = "ls -l";
molcol = "molecule -c ../../tests/molecule.yml";
packaging = "cd ~/src/packaging";
vdown = "vagrant destroy";
vhalt = "vagrant halt";
vos = "vagrant up --provision --provider openstack";
vprov = "vagrant provision";
vssh = "vagrant ssh";
vup = "vagrant up --provision --provider libvirt";
yaml2js = "python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)";
};
sessionVariables = {
ANSIBLE_COLLECTIONS_PATH = "\${HOME}/src/";
+2
View File
@@ -7,7 +7,9 @@
./direnv.nix
./git.nix
./nushell.nix
./shell.nix
./ssh.nix
./tools.nix
./vim
./xonsh.nix
];
+37 -21
View File
@@ -1,43 +1,59 @@
{
config,
lib,
pkgs,
...
}:
let
vpn = pkgs.writeText "vpn" ''
on run argv
ignoring application responses
tell application "Viscosity"
connect "350Main"
end tell
end ignoring
delay 1.0
activate application "Viscosity"
tell application "System Events" to keystroke item 1 of argv
delay 0.1
tell application "System Events" to keystroke tab
delay 0.1
tell application "System Events" to keystroke item 2 of argv
delay 0.1
tell application "System Events" to keystroke return
end run
'';
in
{
programs = {
carapace = {
enable = true;
enableNushellIntegration = true;
};
direnv = {
enable = true;
enableNushellIntegration = true;
};
nushell = {
enable = true;
environmentVariables = {
AWS_SHARED_CREDENTIALS_FILE = "/run/agenix/cache-credentials";
GOPATH = "${config.home.homeDirectory}/src/go";
GOBIN = "${config.home.homeDirectory}/src/bin";
LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN = "1";
SWORD_PATH = "${config.home.homeDirectory}/.sword/";
#TIMEFORMAT = "%3Uu %3Ss %3lR %P%%";
VIRTUALENV_HOME = "${config.home.homeDirectory}/venv/";
};
environmentVariables = config.home.sessionVariables;
extraConfig = ''
use std/util "path add"
path add ${config.home.homeDirectory}/src/bin
path add /opt/homebrew/bin
path add /run/current-system/sw/bin
path add ${config.home.homeDirectory}/.nix-profile/bin
source ${./nushell/functions.nu}
def --env vpn [] {
unlock
let username = ^bw get username f7351f9c-b25b-4317-8352-affc00da4644
let password = ^bw get password f7351f9c-b25b-4317-8352-affc00da4644
let otp = ^bw get totp 10371487-7f40-4b08-9a45-b33e00de318b
osascript ${vpn} $username $"($password)($otp)"
}
'';
settings = {
buffer_editor = lib.getExe config.programs.nixvim.package;
"history.isolation" = true;
"history.file_format" = "sqlite";
};
};
starship = {
enable = true;
enableNushellIntegration = true;
};
};
home.shell.enableNushellIntegration = true;
}
+57
View File
@@ -0,0 +1,57 @@
# vim: set filetype=nushell :
let servers = [isaiah jeremiah zeke genesis vm-gitlab vm-jellyfin]
def par-map [ items: list, c: closure ] {
let results = $items | par-each -k $c
$items | enumerate | reduce -f {} {|e, a| $a | upsert $e.item { $results | get $e.index }}
}
def --env unlock [] {
if "BW_SESSION" not-in $env {
$env.BW_SESSION = ^bw unlock --raw
}
}
def rebuild [] {
if (uname | get operating-system) == "Darwin" {
sudo darwin-rebuild switch
} else {
let hostname = uname | get nodename
let build = ^nom build $"/etc/nixos#nixosConfigurations.($hostname).config.system.build.toplevel"
if $env.LAST_EXIT_CODE == 0 {
nvd diff /run/current-system result
run0 nixos-rebuild switch
} else {
print "Error during build"
}
}
}
def deploy [ $host: string, $build: string = "" ] {
mut buildhost = $build
if $build == "" {
$buildhost = $host
}
if $buildhost == "linode" or $buildhost == "genesis" {
$buildhost = "isaiah"
}
nixos-rebuild switch --sudo --use-substitutes --target-host $host --build-host $buildhost
}
def ff [ $file: string ] {
ls **/* | where name =~ $file
}
def update_all [] {
par-map $servers {|e| deploy $e | complete} | explore
}
def bake [template: string] {
let copier = "~/.copier-templates" | path expand
if not ($copier | path exists) {
git clone srcpub:greg/copier-templates.git $copier
}
let srcdir = [$copier $template] | path join
print $srcdir
copier copy $srcdir .
}
+94
View File
@@ -0,0 +1,94 @@
{
config,
lib,
pkgs,
...
}:
{
home = {
sessionVariables = {
AWS_SHARED_CREDENTIALS_FILE = "/run/agenix/cache-credentials";
CARAPACE_BRIDGES = "zsh,bash";
EDITOR = lib.getExe config.programs.neovim.package;
GOPATH = "${config.home.homeDirectory}/src/go";
GOBIN = "${config.home.homeDirectory}/src/bin";
LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN = "1";
MAVEN_OPTS = " -Dmaven.wagon.http.ssl.insecure=true";
SWORD_PATH = "${config.home.homeDirectory}/.sword/";
#TIMEFORMAT = "%3Uu %3Ss %3lR %P%%";
VIRTUALENV_HOME = "${config.home.homeDirectory}/venv/";
};
shellAliases = {
nb = "nix build -L";
nixdu = "sudo nix-store --gc --print-roots | egrep -v \"^(/nix/var|/run/\\\\w+-system|\\\\{memory|/proc)\"";
nixtest = "nixpkgs-review rev HEAD";
nixup = "nix flake lock update";
nixcopy = "nix copy --to \"s3://binary-cache/?profile=default&endpoint=nas.home%3A9000&scheme=http\"";
r = "run0";
updateScript = "nix-shell maintainers/scripts/update.nix --argstr package";
# General
k = "kubectl";
kn = "kubectl get nodes -o wide";
kp = "kubectl get pods -o wide";
s = "lazyssh";
win = "sudo virsh start win10";
yaml2js = "python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)'";
z = "zeditor .";
# Tailscale related ones
tsup = "sudo tailscale up";
tspub = "sudo tailscale up --exit-node=linode";
tshome = "sudo tailscale up --exit-node=2maccabees";
tsclear = "sudo tailscale up --exit-node=''";
# Vagrant related
vdown = "vagrant destroy";
vhalt = "vagrant halt";
vos = "vagrant up --provision --provider openstack";
vprov = "vagrant provision";
vup = "vagrant up --provision --provider libvirt";
vssh = "vagrant ssh";
};
};
programs = {
carapace = {
enable = true;
};
direnv = {
enable = true;
};
ghostty = {
enable = true;
package = if pkgs.stdenv.hostPlatform.isDarwin then pkgs.ghostty-bin else pkgs.ghostty;
settings = {
command = lib.getExe config.programs.nushell.package;
font-family = "Hacker";
theme = "Dracula";
scrollback-limit = "1000000";
window-save-state = "always";
keybind = [
"ctrl+n=new_window"
"ctrl+shift+h=goto_split:left"
"ctrl+shift+j=goto_split:down"
"ctrl+shift+k=goto_split:up"
"ctrl+shift+l=goto_split:right"
"ctrl+b>h=new_split:left"
"ctrl+b>j=new_split:down"
"ctrl+b>k=new_split:up"
"ctrl+b>l=new_split:right"
"ctrl+b>t=new_tab"
"ctrl+b>n=next_tab"
"ctrl+b>p=previous_tab"
];
};
};
starship = {
enable = true;
};
};
}
+7 -2
View File
@@ -9,9 +9,9 @@
};
programs.ssh = {
enable = true;
serverAliveInterval = 60;
includes = [ "config.local" ];
enableDefaultConfig = false;
matchBlocks =
let
@@ -27,6 +27,11 @@
"*" = {
dynamicForwards = [ { port = 10240; } ];
serverAliveInterval = 60;
extraOptions = {
LogLevel = "error";
SetEnv = "TERM=xterm-256color";
};
};
"10.42.1.4" = lib.hm.dag.entryBefore [ "10.42.*" ] nas;
@@ -41,7 +46,7 @@
};
"src" = {
user = "gitlab";
hostname = "git.thehellings.lan";
hostname = "vm-gitlab.shire-zebra.ts.net";
};
srcpub = {
user = "gitlab";
+134
View File
@@ -0,0 +1,134 @@
{ lib, pkgs, ... }:
{
home.packages =
with pkgs;
[
dig
jqp
kubernetes-helm
iamb
lazyssh
rainfrog
tenere
uv
wiki-tui
]
++ (lib.optionals pkgs.stdenv.hostPlatform.isLinux [
impala
]);
programs = {
zellij = {
enable = true;
enableZshIntegration = pkgs.stdenv.hostPlatform.isDarwin;
settings = {
default_shell = "xonsh";
plugins = {
autolock = {
_props.location = "https://github.com/fresh2dev/zellij-autolock/releases/download/0.2.2/zellij-autolock.wasm";
_children = [
{
is_enabled = true;
}
{
triggers = "nvim|vim|git";
}
{
reaction_seconds = "0.3";
}
{
print_to_log = true;
}
];
};
};
load_plugins.autolock = { };
keybinds = {
normal._children = [
{
bind = {
_args = [ "Enter" ];
_children = [
{
WriteChars = "\\u{000D}";
MessagePlugin = {
_args = [ "autolock" ];
_children = [ { } ];
};
}
];
};
}
{
bind = {
_args = [ "Ctrl z" ];
_children = [
{
MessagePlugin = {
_args = [ "autolock" ];
_children = [
{
payload._args = [ "enable" ];
}
];
};
SwitchToMode._args = [ "Locked" ];
}
];
};
}
]; # /normal
locked._children = [
{
bind = {
_args = [ "Ctrl z" ];
_children = [
{
MessagePlugin = {
_args = [ "autolock" ];
_children = [
{
payload._args = [ "disable" ];
}
];
};
SwitchToMode._args = [ "Normal" ];
}
];
};
}
]; # /locked
shared_except = {
_args = [ "locked" ];
_children = [
{
bind = {
_args = [ "Ctrl h" ];
MoveFocusOrTab._args = [ "Left" ];
};
}
{
bind = {
_args = [ "Ctrl j" ];
MoveFocus._args = [ "Down" ];
};
}
{
bind = {
_args = [ "Ctrl k" ];
MoveFocus._args = [ "Up" ];
};
}
{
bind = {
_args = [ "Ctrl l" ];
MoveFocusOrTab._args = [ "Right" ];
};
}
];
}; # /shared_except
}; # /keybinds
}; # /settings
};
};
}
+2 -1
View File
@@ -120,6 +120,7 @@
gopls.enable = true;
html.enable = true;
nixd.enable = true;
nushell.enable = true;
pylsp.enable = true;
pyright.enable = true;
rust_analyzer = {
@@ -135,6 +136,7 @@
notify.enable = true;
remote-nvim.enable = true;
web-devicons.enable = true;
zellij.enable = true;
};
userCommands = {
Ggr = {
@@ -148,7 +150,6 @@
extraConfigVim = builtins.readFile ./extra.vimrc;
extraPlugins = with pkgs.vimPlugins; [
bufexplorer
context-vim
vim-indent-guides
];
+14 -4
View File
@@ -1,7 +1,8 @@
{
config,
pkgs,
lib,
nixvim,
pkgs,
...
}:
@@ -10,7 +11,16 @@
fonts.fontconfig.enable = true;
home.packages = with pkgs.nerd-fonts; [ hack ];
programs.nixvim = (import ./config.nix { inherit config pkgs lib; }) // {
enable = true;
};
programs.nixvim =
(import ./config.nix {
inherit
config
nixvim
pkgs
lib
;
})
// {
enable = true;
};
}
-37
View File
@@ -20,11 +20,9 @@
sessionVariables = {
# This is for pushing builds to my local S3 cache
AWS_SHARED_CREDENTIALS_FILE = "/run/agenix/cache-credentials";
CARAPACE_BRIDGES = "zsh,bash";
COMPLETIONS_CONFIRM = "True";
CLICOLOR = 1;
EDITOR = "nvim";
# vte_new_tab_cwd causes new Terminal tabs to open in the
# same CWD as the current tab
LESS_TERMCAP_mb = "\\033[01;31m"; # begin blinking
@@ -36,10 +34,8 @@
LESS_TERMCAP_ue = "\\033[0m"; # end underline
LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN = "1";
LSCOLORS = "ExGxBxDxCxEgEdxbxgxcxd";
MAVEN_OPTS = " -Dmaven.wagon.http.ssl.insecure=true";
OS_CLOUD = "default";
PROMPT = "{vte_new_tab_cwd}{env_name}{BOLD_GREEN}{user}@{hostname}{BOLD_BLUE} {short_cwd}{branch_color}{curr_branch: {}}{RESET} {BOLD_BLUE}{prompt_end}{RESET} ";
SWORD_PATH = "${config.home.homeDirectory}/.sword/";
#TIMEFORMAT = "%3Uu %3Ss %3lR %P%%";
# Tells vox where to find virtualenvs
VIRTUALENV_HOME = "${config.home.homeDirectory}/venv/";
@@ -53,43 +49,10 @@
# Python related ones
ac = "vox activate";
d = "vox deactivate";
s = "nix run \".#runserver\"";
# Nix related ones
deploy = "nixos-rebuild switch --use-remote-sudo --use-substitutes --target-host";
gl-nging = "sudo nixos-container run gitlab -- systemctl restart nginx";
nb = "nix build -L";
nixdu = "sudo nix-store --gc --print-roots | egrep -v r\"^(/nix/var|/run/\\w+-system|\\{memory|/proc)\"";
nixtest = "nixpkgs-review rev HEAD";
nixup = "nix flake lock --update-input";
nixcopy = "nix copy --to \"s3://binary-cache/?profile=default&endpoint=nas.home%3A9000&scheme=http\"";
stable = "nix flake lock --update-input nixstable --update-input hm --update-input nixvimstable";
unstable = "nix flake lock --update-input nixunstable --update-input hmunstable --update-input nixvimunstable --update-input nurpkgs --update-input vsext --update-input wsl";
updateScript = "nix-shell maintainers/scripts/update.nix --argstr package";
# General
gh-personal = "$GH_CONFIG_DIR=\"${config.home.homeDirectory}/.config/gh/personal\" gh";
k = "kubectl";
kn = "kubectl get nodes -o wide";
kp = "kubectl get pods -o wide";
ls = "ls --color";
ll = "ls -l --color";
win = "sudo virsh start win10";
z = "zeditor .";
# Tailscale related ones
tsup = "sudo tailscale up";
tspub = "sudo tailscale up --exit-node=linode";
tshome = "sudo tailscale up --exit-node=2maccabees";
tsclear = "sudo tailscale up --exit-node=''";
# Vagrant related
vdown = "vagrant destroy";
vhalt = "vagrant halt";
vos = "vagrant up --provision --provider openstack";
vprov = "vagrant provision";
vup = "vagrant up --provision --provider libvirt";
vssh = "vagrant ssh";
};
configHeader = builtins.readFile ./xonsh_header.xsh;
+8
View File
@@ -63,6 +63,14 @@ def _rebuild(args):
popd
aliases['rebuild'] = _rebuild
def _deploy(args):
dest = args[0]
if dest != "linode":
nixos-rebuild switch --use-remote-sudo --use-substitutes --target-host @(dest) --build-host @(dest)
else:
nixos-rebuild swtich --use-remote-sudo --use-substitutes --target-host @(dest)
aliases['deploy'] = _deploy
def _yaml2json(args, stdin=None, stdout=None):
import sys, yaml, json
from yaml import CLoader
+3 -1
View File
@@ -32,10 +32,12 @@ let
in
{
"MacBook-Pro.local" = user "aarch64-darwin" "ivr" "gregory.hellings";
"MacBook-Prolocal.local" = user "aarch64-darwin" "ivr" "gregory.hellings";
genesis = greg "genesis";
exodus = greg "exodus";
jude = greg "jude";
zeke = greg "zeke";
isaiah = greg "isaiah";
jeremiah = greg "jeremiah";
linode = greg "linode";
vm-gitlab = greg "vm-gitlab";
}
+1 -1
View File
@@ -17,7 +17,7 @@ let
in
{
imports = [
top.nixvimunstable.homeManagerModules.nixvim
top.nixvimunstable.homeModules.nixvim
top.self.modules.homeManagerModule
./baseline
] ++ lib.optionals (builtins.pathExists ./hosts/${host}) [ ./hosts/${host} ];
+2
View File
@@ -14,9 +14,11 @@
freeciv
gimp
k9s
kdePackages.kdenlive
kubernetes-helm
kubectl
kubectl-cnpg
mumble
wineWowPackages.stable
];
}
+25
View File
@@ -33,13 +33,18 @@ in
ansible
direnv
home-manager
just
k9s
kubectl
mariadb
minikube
mise
nil
nixStable
pipenv-ivr
pre-commit
python311
python3Packages.flake8
skaffold
x
];
@@ -68,7 +73,27 @@ in
starship = {
enable = true;
enableNushellIntegration = true;
settings = {
directory = {
home_symbol = "~";
truncate_to_repo = false;
truncation_length = 0;
use_os_path_sep = true;
};
};
};
ssh.matchBlocks = lib.listToAttrs (lib.map (key: { name = "${key}.ivrtechnology.com"; value = {}; }) [
"apidev1"
"asdev1"
"agidev1"
"kdev1"
"kdev2"
"kdev3"
"webdev4"
"webdev5"
"web4"
]);
tmux.shell = (lib.getExe x);
};
}
@@ -2,12 +2,11 @@
{
greg = {
development = true;
gui = true;
sway = false;
development = false;
gui = false;
gnome = false;
vscodium = true;
zed = true;
vscodium = false;
zed = false;
};
home = {
@@ -20,12 +19,13 @@
'';
packages = with pkgs; [
audacity
#audacity
bitwarden-cli
(mumble.override { pulseSupport = true; })
#logseq
super-productivity
webcamoid
#element-desktop
#(mumble.override { pulseSupport = true; })
#super-productivity
#vagrant
#webcamoid
];
};