diff --git a/homes/common.nix b/homes/common.nix index 3836d34..389c618 100644 --- a/homes/common.nix +++ b/homes/common.nix @@ -6,6 +6,7 @@ ./../programs/git.nix ./../programs/lsd.nix ./../programs/neovim.nix + ./../programs/ssh.nix ./../programs/starship.nix ./../programs/tmux.nix ./../programs/yt-dlp.nix diff --git a/homes/odyssey.nix b/homes/odyssey.nix index 1d50f04..fd1c201 100644 --- a/homes/odyssey.nix +++ b/homes/odyssey.nix @@ -19,7 +19,7 @@ anythingllm = { autoStart = true; containerConfig = { - image = "docker.io/mintplexlabs/anythingllm:1.9"; + image = "docker.io/mintplexlabs/anythingllm:latest"; addHosts = [ "ollama.millironx.local:host-gateway" ]; publishPorts = [ "3001:3001" ]; volumes = diff --git a/programs/ssh.nix b/programs/ssh.nix new file mode 100644 index 0000000..a094d44 --- /dev/null +++ b/programs/ssh.nix @@ -0,0 +1,73 @@ +{ pkgs, lib, config, hostname, ... }: +let + sshIdPath = host: "~/.ssh/id_ed25519__${host}"; + tailnetConfig = host: { identityFile = sshIdPath host; }; + gitConfig = host: tailnetConfig host // { user = "git"; }; + tailnetHosts = [ "anderson" "mcentire" "bosephus" ]; + gitHosts = [ "github.com" "gitlab.com" "codeberg.org" "code.millironx.com" ]; + tailnetMatchBlocks = + lib.genAttrs (lib.lists.remove hostname tailnetHosts) tailnetConfig; + gitMatchBlocks = lib.genAttrs gitHosts gitConfig // { + "code.millironx.com" = (gitConfig "code.millironx.com") // { + proxyCommand = "ssh anderson -W localhost:2222"; + hostname = "code.millironx.com"; + }; + }; +in { + programs.ssh = { + enable = true; + enableDefaultConfig = false; + matchBlocks = { + "*" = { identitiesOnly = true; }; + "aahz" = { + hostname = "nistac-108-37.dhcp.ksu.edu"; + user = "tchristensen"; + identityFile = sshIdPath "aahz"; + }; + "skeeve" = { + hostname = "129.130.108.157"; + user = "tchristensen"; + identityFile = sshIdPath "skeeve"; + }; + "ceres" = { + hostname = "ceres.scinet.usda.gov"; + user = "thomas.christensen"; + identitiesOnly = false; + serverAliveInterval = 20; + serverAliveCountMax = 30; + extraOptions = { TCPKeepAlive = "yes"; }; + }; + "atlas" = { + hostname = "Atlas-login-1.hpc.msstate.edu"; + user = "thomas.christensen"; + identitiesOnly = false; + serverAliveInterval = 20; + serverAliveCountMax = 30; + extraOptions = { TCPKeepAlive = "yes"; }; + }; + "atlas-dtn" = { + hostname = "Atlas-dtn.hpc.msstate.edu"; + user = "thomas.christensen"; + identitiesOnly = false; + }; + "code.millironx.com" = { + proxyCommand = "ssh anderson -W localhost:2222"; + }; + } // tailnetMatchBlocks // gitMatchBlocks; + }; + + home.packages = let + # Answer no to overwrite questions + keygen = host: '' + yes "n" | \ + ssh-keygen \ + -t ed25519 \ + -f ~/.ssh/id_ed25519__${host} \ + -C "millironx@${hostname}" \ + -N "" + ''; + in [ + (pkgs.writeShellScriptBin "ssh-bootstrap-keys" + (builtins.concatStringsSep "\n" (map keygen (tailnetHosts ++ gitHosts)))) + ]; +} diff --git a/programs/zed.nix b/programs/zed.nix index 1aceb66..0fa72a1 100644 --- a/programs/zed.nix +++ b/programs/zed.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: { +{ pkgs, hostname, ... }: { programs.zed-editor = { enable = true; package = null; @@ -60,8 +60,8 @@ lsp = { nil = { settings.nix.flake.autoArchive = true; }; nixd = { - settings.options.home-manager.expr = - "(builtins.getFlake (builtins.toString ./.)).homeConfigurations..options"; + settings.options.home-manager.expr = '' + (builtins.getFlake (builtins.toString ~/.config/home-manager)).homeConfigurations."millironx@${hostname}".options''; }; texlab = { settings = { diff --git a/services/gpg-agent.nix b/services/gpg-agent.nix index e34906a..e4a7939 100644 --- a/services/gpg-agent.nix +++ b/services/gpg-agent.nix @@ -2,7 +2,7 @@ services.gpg-agent = { enable = true; enableBashIntegration = true; - enableSshSupport = true; + enableSshSupport = false; enableZshIntegration = true; defaultCacheTtl = 604800; maxCacheTtl = 604800;