diff --git a/flake.nix b/flake.nix index 9d97ede..4b532a5 100644 --- a/flake.nix +++ b/flake.nix @@ -147,6 +147,8 @@ hash = "sha256-7mkrPl2CQSfc1lRjl1ilwxdYcK5iRU//QGKmdCicK30="; }; }); + + zmx-binary = prev.callPackage ./packages/zmx.nix { }; }) ]; }; @@ -258,6 +260,7 @@ home-manager.darwinModules.home-manager agenix.darwinModules.default unstable-overlays + nur.modules.darwin.default ./machines/atalanta ]; }; diff --git a/machines/atalanta/home-manager.nix b/machines/atalanta/home-manager.nix index 48af202..a462560 100644 --- a/machines/atalanta/home-manager.nix +++ b/machines/atalanta/home-manager.nix @@ -10,6 +10,7 @@ ]; home-manager = { + useGlobalPkgs = true; extraSpecialArgs = { inherit inputs outputs; }; diff --git a/machines/atalanta/home/default.nix b/machines/atalanta/home/default.nix index 0309848..1e8a380 100644 --- a/machines/atalanta/home/default.nix +++ b/machines/atalanta/home/default.nix @@ -9,8 +9,6 @@ (inputs.import-tree ../../../modules/home) ]; - nixpkgs.enable = true; - home = { username = "kierank"; homeDirectory = "/Users/kierank"; diff --git a/machines/ember/default.nix b/machines/ember/default.nix index 120eec2..2d921cc 100644 --- a/machines/ember/default.nix +++ b/machines/ember/default.nix @@ -6,6 +6,7 @@ { imports = [ (inputs.import-tree ../../modules/home) + ../../modules/home/system/nixpkgs.nix.disabled ]; nixpkgs.enable = true; diff --git a/machines/john/default.nix b/machines/john/default.nix index 55dc808..e858772 100644 --- a/machines/john/default.nix +++ b/machines/john/default.nix @@ -6,6 +6,7 @@ { imports = [ (inputs.import-tree ../../modules/home) + ../../modules/home/system/nixpkgs.nix.disabled ]; nixpkgs.enable = true; diff --git a/machines/moonlark/home-manager.nix b/machines/moonlark/home-manager.nix index 0da9355..5854fce 100644 --- a/machines/moonlark/home-manager.nix +++ b/machines/moonlark/home-manager.nix @@ -6,6 +6,7 @@ ]; home-manager = { + useGlobalPkgs = true; extraSpecialArgs = { inherit inputs outputs; }; diff --git a/machines/moonlark/home/default.nix b/machines/moonlark/home/default.nix index a9e4742..550fb7c 100644 --- a/machines/moonlark/home/default.nix +++ b/machines/moonlark/home/default.nix @@ -4,8 +4,6 @@ (inputs.import-tree ../../../modules/home) ]; - nixpkgs.enable = true; - home = { username = "kierank"; homeDirectory = "/home/kierank"; diff --git a/machines/nest/default.nix b/machines/nest/default.nix index d661164..f2eee8c 100644 --- a/machines/nest/default.nix +++ b/machines/nest/default.nix @@ -7,6 +7,7 @@ { imports = [ (inputs.import-tree ../../modules/home) + ../../modules/home/system/nixpkgs.nix.disabled ]; nixpkgs.enable = true; diff --git a/machines/prattle/home-manager.nix b/machines/prattle/home-manager.nix index 1352e8a..d9249b7 100644 --- a/machines/prattle/home-manager.nix +++ b/machines/prattle/home-manager.nix @@ -5,6 +5,7 @@ ]; home-manager = { + useGlobalPkgs = true; extraSpecialArgs = { inherit inputs outputs; }; diff --git a/machines/prattle/home/default.nix b/machines/prattle/home/default.nix index e271ec9..edb365a 100644 --- a/machines/prattle/home/default.nix +++ b/machines/prattle/home/default.nix @@ -4,8 +4,6 @@ (inputs.import-tree ../../../modules/home) ]; - nixpkgs.enable = true; - home = { username = "kierank"; homeDirectory = "/home/kierank"; diff --git a/machines/tacyon/default.nix b/machines/tacyon/default.nix index a415acb..c92e532 100644 --- a/machines/tacyon/default.nix +++ b/machines/tacyon/default.nix @@ -6,6 +6,7 @@ { imports = [ (inputs.import-tree ../../modules/home) + ../../modules/home/system/nixpkgs.nix.disabled ]; nixpkgs.enable = true; diff --git a/machines/terebithia/home-manager.nix b/machines/terebithia/home-manager.nix index 1352e8a..d9249b7 100644 --- a/machines/terebithia/home-manager.nix +++ b/machines/terebithia/home-manager.nix @@ -5,6 +5,7 @@ ]; home-manager = { + useGlobalPkgs = true; extraSpecialArgs = { inherit inputs outputs; }; diff --git a/machines/terebithia/home/default.nix b/machines/terebithia/home/default.nix index aba1213..8c72c2b 100644 --- a/machines/terebithia/home/default.nix +++ b/machines/terebithia/home/default.nix @@ -4,8 +4,6 @@ (inputs.import-tree ../../../modules/home) ]; - nixpkgs.enable = true; - home = { username = "kierank"; homeDirectory = "/home/kierank"; diff --git a/modules/home/apps/ssh.nix b/modules/home/apps/ssh.nix index 236d335..eba35d7 100644 --- a/modules/home/apps/ssh.nix +++ b/modules/home/apps/ssh.nix @@ -82,16 +82,11 @@ in }; config = mkIf cfg.enable { - # On macOS (darwin), zmx must be installed manually due to build issues - # Download from: https://zmx.sh/a/zmx-0.0.2-macos-aarch64.tar.gz - # Extract and place in PATH (e.g., ~/.local/bin/) - - # On Linux, use the zmx flake + # zmx provides pre-built binaries that we download instead of building from source + # This avoids the zig2nix dependency which causes issues in CI home.packages = - (optionals (cfg.zmx.enable && !pkgs.stdenv.isDarwin) [ - inputs.zmx.packages.${pkgs.stdenv.hostPlatform.system}.default - ]) - ++ (optionals cfg.zmx.enable [ + (optionals cfg.zmx.enable [ + pkgs.zmx-binary pkgs.autossh ]); diff --git a/modules/home/apps/vscode.nix b/modules/home/apps/vscode.nix deleted file mode 100644 index 4d5aa5f..0000000 --- a/modules/home/apps/vscode.nix +++ /dev/null @@ -1,85 +0,0 @@ -{ - lib, - pkgs, - config, - inputs, - ... -}: -{ - options.atelier.apps.vscode.enable = lib.mkEnableOption "Enable VSCode config"; - config = lib.mkIf config.atelier.apps.vscode.enable { - nixpkgs.overlays = [ - inputs.nix-vscode-extensions.overlays.default - inputs.catppuccin-vsc.overlays.default - ]; - programs.vscode = { - enable = true; - package = pkgs.unstable.vscode; - profiles.default = { - extensions = with pkgs.vscode-marketplace; [ - ms-vscode.live-server - formulahendry.auto-rename-tag - edwinkofler.vscode-assorted-languages - golang.go - eamodio.gitlens - yzhang.markdown-all-in-one - github.vscode-github-actions - yoavbls.pretty-ts-errors - esbenp.prettier-vscode - ms-vscode.vscode-serial-monitor - prisma.prisma - ms-azuretools.vscode-docker - astro-build.astro-vscode - github.copilot - github.copilot-chat - dotjoshjohnson.xml - mikestead.dotenv - bradlc.vscode-tailwindcss - mechatroner.rainbow-csv - wakatime.vscode-wakatime - paulober.pico-w-go - ms-python.python - karunamurti.tera - biomejs.biome - bschulte.love - yinfei.luahelper - tamasfe.even-better-toml - fill-labs.dependi - rust-lang.rust-analyzer - dustypomerleau.rust-syntax - catppuccin.catppuccin-vsc - inputs.frc-nix.packages.${pkgs.stdenv.hostPlatform.system}.vscode-wpilib - ]; - userSettings = { - "editor.semanticHighlighting.enabled" = true; - "terminal.integrated.minimumContrastRatio" = 1; - "window.titleBarStyle" = "custom"; - "gopls" = { - "ui.semanticTokens" = true; - }; - "workbench.colorTheme" = "Catppuccin Macchiato"; - "workbench.iconTheme" = "catppuccin-macchiato"; - "catppuccin.accentColor" = lib.mkForce "blue"; - "editor.fontFamily" = "'FiraCode Nerd Font', 'monospace', monospace"; - "git.autofetch" = true; - "git.confirmSync" = false; - "github.copilot.editor.enableAutoCompletions" = false; - "editor.formatOnSave" = true; - "editor.defaultFormatter" = "biomejs.biome"; - "[go]" = { - "editor.defaultFormatter" = "golang.go"; - }; - "[yaml]" = { - "editor.defaultFormatter" = "esbenp.prettier-vscode"; - }; - "[lua]" = { - "editor.defaultFormatter" = "yinfei.luahelper"; - }; - "[html]" = { - "editor.defaultFormatter" = "esbenp.prettier-vscode"; - }; - }; - }; - }; - }; -} diff --git a/modules/home/system/nixpkgs.nix b/modules/home/system/nixpkgs.nix.disabled similarity index 100% rename from modules/home/system/nixpkgs.nix rename to modules/home/system/nixpkgs.nix.disabled diff --git a/packages/zmx.nix b/packages/zmx.nix new file mode 100644 index 0000000..d6f885a --- /dev/null +++ b/packages/zmx.nix @@ -0,0 +1,48 @@ +{ pkgs, lib, stdenv, fetchurl, autoPatchelfHook }: + +stdenv.mkDerivation rec { + pname = "zmx"; + version = "0.1.0"; + + src = fetchurl { + url = if stdenv.isLinux then + (if stdenv.isAarch64 then + "https://zmx.sh/a/zmx-${version}-linux-aarch64.tar.gz" + else + "https://zmx.sh/a/zmx-${version}-linux-x86_64.tar.gz") + else if stdenv.isDarwin then + (if stdenv.isAarch64 then + "https://zmx.sh/a/zmx-${version}-macos-aarch64.tar.gz" + else + "https://zmx.sh/a/zmx-${version}-macos-x86_64.tar.gz") + else throw "Unsupported platform"; + + hash = if stdenv.isLinux && stdenv.isAarch64 then + "sha256-sv83lR4DLJE+gsMtqCk6VCFdo5n4lhI0P1loxAf0iOg=" + else if stdenv.isLinux then + "sha256-c+wCUcm7DEO55wXuHq0aP0Kn908jj1FM5Z+JQJnKE0M=" + else if stdenv.isDarwin && stdenv.isAarch64 then + "sha256-dM6MFikdbpN+n8BK6fLbzyJfi88xetCWL9H5VfGB07o=" + else + "sha256-B52NC8NEjVPDNSG11qPb0uRNExB66bllnK7ivXMJbHk="; + }; + + nativeBuildInputs = lib.optionals stdenv.isLinux [ autoPatchelfHook ]; + + sourceRoot = "."; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + cp zmx $out/bin/ + chmod +x $out/bin/zmx + runHook postInstall + ''; + + meta = with lib; { + description = "Session persistence for terminal processes"; + homepage = "https://zmx.sh"; + license = licenses.mit; + platforms = platforms.unix; + }; +}