diff --git a/caesium.home.nix b/caesium.home.nix index 7ac3639..768a0ca 100644 --- a/caesium.home.nix +++ b/caesium.home.nix @@ -1,32 +1,24 @@ { config, inputs, pkgs, ... }: { - home.stateVersion = "23.11"; - - home.username = "mbessette"; - home.homeDirectory = "/home/mbessette"; - - home.packages = with pkgs; []; - - programs.home-manager.enable = true; home.packages = with pkgs; [ - claude-desktop firefox wowup-cf faugus-launcher - ghostty - ]; services.flatpak = { packages = [ - com.spotify.Client - com.discordapp.Discord + "com.spotify.Client" + "com.discordapp.Discord" + "flathub:app/com.anthropic.Claude/x86_64/stable" ]; overrides = []; }; + programs.zsh.shellAliases = { + claude = "nix run github:sadjow/claude-code-nix"; + }; - # Managed VS Code Extensions (The "Clean" Way) programs.vscode = { enable = true; package = pkgs.vscode-fhs; @@ -38,24 +30,6 @@ }; }; - # Automatically load the 1Password agent in your shell - programs.zsh = { - enable = true; - enableCompletion = true; - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - - initContent = '' - export SSH_AUTH_SOCK=~/.1password/agent.sock - ''; - - shellAliases = { - ll = "ls -l"; - update = "sudo nixos-rebuild switch --flake ~/nixos#caesium"; - nixos = "code ~/nixos"; - }; - }; - home.sessionVariables = { NPM_CONFIG_PREFIX = "/mnt/Projects/.npm-global/.npm-global"; }; @@ -67,39 +41,4 @@ home.file.".npmrc".text = '' prefix=/mnt/Projects/.npm-global/.npm-global '' ; - - home.file.".config/1Password/ssh/agent.toml".source = ./config.agent.toml; - - # ~/.config (dotfiles) - xdg.enable = true; - xdg.configFile."ssh.conf".source = ./config.ssh.conf; - - programs.ssh = { - enable = true; - enableDefaultConfig = false; - extraConfig = builtins.readFile ./config.ssh.conf; - matchBlocks = { - "*" = { - controlMaster = "auto"; - controlPath = "~/.ssh/master-%r@%h:%p"; - }; - }; - }; - - programs.git = { - enable = true; - - signing.format = null; - - settings.user = { - name = "Matthew Bessette"; - email = "bessette.matthew94@gmail.com"; - }; - - settings.init.defaultBranch = "main"; - - # This creates ~/.config/git/ignore and sets core.excludesFile - ignores = [ - ]; - }; } diff --git a/caesium.nixos.nix b/caesium.nixos.nix index 40718f1..43ad6ac 100644 --- a/caesium.nixos.nix +++ b/caesium.nixos.nix @@ -168,6 +168,8 @@ curl python3 nodejs_26 + home-manager + fastfetch ]; programs.appimage = { @@ -177,4 +179,4 @@ # --- SYSTEM VERSION --- system.stateVersion = "24.11"; # Or current stable version -} \ No newline at end of file +} diff --git a/config.agent.toml b/config.agent.toml deleted file mode 100644 index ae5370c..0000000 --- a/config.agent.toml +++ /dev/null @@ -1,6 +0,0 @@ -[[ssh-keys]] - item = "1Password SSH Key" # The Title of the item in 1Password - # vault = "Work" # Optional: Specify the vault if names collide - -[[ssh-keys]] - item = "Personal GitHub" diff --git a/flake.nix b/flake.nix index b985703..a3dc07a 100644 --- a/flake.nix +++ b/flake.nix @@ -58,6 +58,7 @@ let linuxSystem = "x86_64-linux"; darwinSystem = "aarch64-darwin"; + userConfigs = import ./variables.nix; mkOverlays = sys: [ (final: prev: { unstable = import nixpkgsUnstable { @@ -81,7 +82,6 @@ nixpkgs.overlays = mkOverlays linuxSystem; nixpkgs.config.allowUnfree = true; } - nix-flatpak.nixosModules.nix-flatpak ./caesium.nixos.nix ]; }; @@ -124,8 +124,14 @@ config.allowUnfree = true; overlays = mkOverlays linuxSystem; }; - extraSpecialArgs = { inherit inputs; }; + extraSpecialArgs = { + system = linuxSystem; + hostname = "caesium"; + userConfig = userConfigs."mbessette"; + inherit inputs; + }; modules = [ + nix-flatpak.homeManagerModules.nix-flatpak ./home.shared.nix ./caesium.home.nix ]; @@ -137,7 +143,12 @@ config.allowUnfree = true; overlays = mkOverlays darwinSystem; }; - extraSpecialArgs = { inherit inputs; }; + extraSpecialArgs = { + system = darwinSystem; + hostname = "hydrogen"; + userConfig = userConfigs.mbessette; + inherit inputs; + }; modules = [ ./home.shared.nix ./hydrogen.home.nix @@ -151,7 +162,12 @@ config.allowUnfree = true; overlays = mkOverlays darwinSystem; }; - extraSpecialArgs = { inherit inputs; }; + extraSpecialArgs = { + system = darwinSystem; + hostname = "cleo-darwin"; + userConfig = userConfigs."matthew.bessette"; + inherit inputs; + }; modules = [ ./home.shared.nix ./cleo.home.nix diff --git a/home.shared.nix b/home.shared.nix index 18a35a2..4c1dec7 100644 --- a/home.shared.nix +++ b/home.shared.nix @@ -1,3 +1,112 @@ -{ - home.backupFileExtension = "before-nix"; +{ pkgs, hostname, userConfig, ... }: +let + onePassPath = if pkgs.stdenv.isDarwin + then "${userConfig.homeDirectory}/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" + else "${userConfig.homeDirectory}/.1password/agent.sock"; + ghosttyPkg = if pkgs.stdenv.isDarwin + then pkgs."ghostty-bin" + else pkgs.ghostty; +in { + home.stateVersion = "26.05"; + home.username = userConfig.username; + home.homeDirectory = userConfig.homeDirectory; + home.sessionVariables.SSH_AUTH_SOCK = onePassPath; + + xdg.enable = true; + xdg.configFile."ssh.conf".source = ./config.ssh.conf; + xdg.configFile."1Password/ssh/agent.toml".text = '' + [[ssh-keys]] + item = "${userConfig._1PassKeyName}" + vault = "${userConfig._1PassKeyVault}" + ''; + + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + initContent = '' + export SSH_AUTH_SOCK=~/.1password/agent.sock + ''; + + shellAliases = { + ll = "ls -l"; + gst = "git status"; + nix-update = "sudo nixos-rebuild switch --flake ~/nixos#${hostname}"; + home-update = "home-manager switch --flake ~/nixos#${userConfig.username}@${hostname}"; + }; + }; + + programs.starship = { + enable = true; + enableZshIntegration = true; + + # Optional custom settings (translates to ~/.config/starship.toml) + settings = { + # Line 1: ➜ folder git:(branch) [status] + format = "$character$directory$git_branch\${custom.git_dirty} "; + + # Show current directory name only + directory = { + style = "bold cyan"; + truncation_length = 1; + truncate_to_repo = false; + }; + + # git:(branch) styling + git_branch = { + format = "[git:\\([$branch](red)\\)](bold blue)"; + }; + + # Bottom line prompt arrow + character = { + success_symbol = "[➜](bold green)"; + error_symbol = "[➜](bold red)"; + vicmd_symbol = "[➜](bold yellow)"; + }; + + custom.git_dirty = { + when = "test -n \"$(git status --porcelain 2>/dev/null)\""; + format = " [✘](yellow)"; + }; + + # Nix shell indicator module configuration + nix_shell = { + symbol = "❄️ "; + format = "via [$symbol$state]($style) "; + }; + }; + }; + + programs.ssh = { + enable = true; + enableDefaultConfig = false; + extraConfig = builtins.readFile ./config.ssh.conf; + settings = { + "*" = { + controlMaster = "auto"; + controlPath = "~/.ssh/master-%r@%h:%p"; + identityAgent = onePassPath; + }; + }; + }; + + programs.git = { + enable = true; + settings = { + user.name = userConfig.gitName; + user.email = userConfig.gitEmail; + init.defaultBranch = "main"; + pull.rebase = false; + core.sshCommand = "ssh"; + }; + }; + + programs.ghostty = { + enable = true; + package = ghosttyPkg; + enableBashIntegration = true; + enableZshIntegration = true; + }; } diff --git a/variables.nix b/variables.nix new file mode 100644 index 0000000..993cfee --- /dev/null +++ b/variables.nix @@ -0,0 +1,18 @@ +{ + mbessette = { + username = "mbessette"; + homeDirectory = "/home/mbessette"; + gitName = "Matthew Bessette"; + gitEmail = "blade30912@gmail.com"; + _1PassKeyName = "Personal SSH Key"; + _1PassKeyVault = "Private"; + }; + "matthew.bessette" = { + username = "matthew.bessette"; + homeDirectory = "/home/matthew.bessette"; + gitName = "Matthew Bessette"; + gitEmail = "matthew.bessette@hicleo.com"; + _1PassKeyName = "Cleo SSH Key"; + _1PassKeyVault = "Cleo"; + }; +}