From 646aaeefe4bec07f98381f12f63c56a62a0dee25 Mon Sep 17 00:00:00 2001 From: Niccolo Borgioli Date: Mon, 27 Jan 2025 22:59:18 +0100 Subject: [PATCH] multi host --- cask.nix | 1 + flake.lock | 18 ++--- flake.nix | 29 +++++--- home.nix | 182 +++++++++++++++++----------------------------- home/sflx.nix | 8 ++ home/shared.nix | 54 ++++++++++++++ hosts/default.nix | 4 + hosts/mac14.nix | 5 ++ hosts/mac16.nix | 5 ++ test.nix | 11 +++ 10 files changed, 182 insertions(+), 135 deletions(-) create mode 100644 home/sflx.nix create mode 100644 home/shared.nix create mode 100644 hosts/default.nix create mode 100644 hosts/mac14.nix create mode 100644 hosts/mac16.nix create mode 100644 test.nix diff --git a/cask.nix b/cask.nix index dda50bd..871fc1e 100644 --- a/cask.nix +++ b/cask.nix @@ -19,6 +19,7 @@ "hoppscotch" "tailscale" "utm" + "balenaetcher" # Apps "figma" diff --git a/flake.lock b/flake.lock index 7c504a5..85e8ecb 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1737461688, - "narHash": "sha256-zQCFe5FcSSGzY3qauAAHZcPt7Ej4WSGo78ShSTCSBvU=", + "lastModified": 1737762889, + "narHash": "sha256-5HGG09bh/Yx0JA8wtBMAzt0HMCL1bYZ93x4IqzVExio=", "owner": "nix-community", "repo": "home-manager", - "rev": "bb14224f51ae4caed12a7b26f245d042c8cf8553", + "rev": "daf04c5950b676f47a794300657f1d3d14c1a120", "type": "github" }, "original": { @@ -27,11 +27,11 @@ ] }, "locked": { - "lastModified": 1737423230, - "narHash": "sha256-WEOiNmkcmlaeXy2HGW1PYxYmCPiHdsI7a7SpjhBYxRg=", + "lastModified": 1737504076, + "narHash": "sha256-/B4XJnzYU/6K1ZZOBIgsa3K4pqDJrnC2579c44c+4rI=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "46d0fa4ded0a7532f19870f9bbedaf62269fe3f7", + "rev": "65cc1fa8e36ceff067daf6cfb142331f02f524d3", "type": "github" }, "original": { @@ -42,11 +42,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1737370608, - "narHash": "sha256-hFA6SmioeqvGW/XvZa9bxniAeulksCOcj3kokdNT/YE=", + "lastModified": 1737879851, + "narHash": "sha256-H+FXIKj//kmFHTTW4DFeOjR7F1z2/3eb2iwN6Me4YZk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "300081d0cc72df578b02d914df941b8ec62240e6", + "rev": "5d3221fd57cc442a1a522a15eb5f58230f45a304", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 2908c39..9c974ff 100644 --- a/flake.nix +++ b/flake.nix @@ -19,6 +19,8 @@ home-manager, }: let + name = "mbp"; + hosts = import ./hosts; configuration = { pkgs, ... }: { @@ -35,7 +37,6 @@ # Nix Darwin # https://daiderd.com/nix-darwin/manual/index.html - environment.systemPackages = [ ]; # Security system.defaults.screensaver.askForPassword = true; @@ -77,21 +78,29 @@ }; programs.fish.enable = true; - homebrew.enable = true; - homebrew.casks = import ./cask.nix; - homebrew.taps = [ "lihaoyun6/tap" ]; - homebrew.onActivation.autoUpdate = true; - homebrew.onActivation.cleanup = "zap"; + homebrew = { + enable = true; + casks = import ./cask.nix; + taps = [ "lihaoyun6/tap" ]; + onActivation = { + autoUpdate = true; + cleanup = "zap"; + }; + }; # Home Manager home-manager.backupFileExtension = "backup"; }; in { - # Build darwin flake using: - # $ darwin-rebuild build --flake .#Niccolo-Borgioli-s-MacBook-Pro - darwinConfigurations."mbp" = nix-darwin.lib.darwinSystem { + darwinConfigurations."${name}" = nix-darwin.lib.darwinSystem { modules = [ + ( + { config, ... }: + { + config._module.args = { inherit hosts; }; + } + ) configuration home-manager.darwinModules.home-manager { @@ -103,6 +112,6 @@ }; # Expose the package set, including overlays, for convenience. - darwinPackages = self.darwinConfigurations."mbp".pkgs; + # darwinPackages = self.darwinConfigurations."${name}".pkgs; }; } diff --git a/home.nix b/home.nix index 75693c3..10ad108 100644 --- a/home.nix +++ b/home.nix @@ -1,132 +1,82 @@ -{ config, pkgs, ... }: - +{ pkgs, ... }@args: { # https://nix-community.github.io/home-manager - home.stateVersion = "24.11"; # Please read the comment before changing. + home.stateVersion = "25.05"; # Please read the comment before changing. programs.home-manager.enable = true; home.username = "niccoloborgioli"; home.homeDirectory = "/Users/niccoloborgioli"; - home.packages = [ - pkgs.tmux - pkgs.oh-my-posh - pkgs.git - pkgs.git-lfs - pkgs.git-crypt - pkgs.bfg-repo-cleaner - pkgs.gnutar - pkgs.gnupg - pkgs.htop - pkgs.rclone - pkgs.rename - pkgs.tmux - pkgs.tree - pkgs.wget - pkgs.woff2 - pkgs.bat - pkgs.rsync - pkgs.direnv - pkgs.zoxide - pkgs.devenv - #pkgs.bitwarden-cli - - # Editor - pkgs.neovim - pkgs.fzf - pkgs.lazygit - pkgs.lua - pkgs.luajitPackages.luarocks - pkgs.ast-grep - pkgs.ripgrep - - # Language specific - pkgs.nixfmt-rfc-style - pkgs.fnm - pkgs.bun - pkgs.deno - pkgs.zig - pkgs.uv - pkgs.ruff - pkgs.tectonic - pkgs.tex-fmt - pkgs.rustup - - # Codding - pkgs.nixpacks - - # sflx - pkgs.vault - pkgs.cocoapods - pkgs.phrase-cli - pkgs.boundary - - pkgs.nerd-fonts.jetbrains-mono - ]; + home.packages = + [ ] ++ (import ./home/shared.nix { inherit pkgs; }) ++ (import ./home/sflx.nix { inherit pkgs; }); fonts.fontconfig.enable = true; - home.sessionVariables = { - EDITOR = "nvim"; + home = { + sessionVariables = { + EDITOR = "nvim"; + }; + + file = { + ".config/omp/config.yaml".source = ./files/omp/config.yaml; + ".config/ghostty/config".source = ./files/ghostty/config; + ".gitconfig".source = ./files/git/gitconfig; + ".gitignore_global".source = ./files/git/gitignore_global; + ".config/nvim".source = ./files/nvim; + }; + + shellAliases = { + l = "ls -hal"; + dc = "docker compose"; + rsync = "rsync -az --info=progress2"; + t = "tmux new-session -A -s main"; + e = "nvim"; + hms = "home-manager switch --flake ~/nix#root -b backup"; + snd = "darwin-rebuild switch --flake ~/.config/nix-darwin#mbp"; + }; }; - home.file = { - ".config/omp/config.yaml".source = ./files/omp/config.yaml; - ".config/ghostty/config".source = ./files/ghostty/config; - ".gitconfig".source = ./files/git/gitconfig; - ".gitignore_global".source = ./files/git/gitignore_global; - ".config/nvim".source = ./files/nvim; - }; + programs = { + fish = { + enable = true; + interactiveShellInit = '' + if type -q oh-my-posh + oh-my-posh init fish --config ~/.config/omp/config.yaml | source + end + if type -q fnm + fnm env --use-on-cd | source + end + if type -q direnv + direnv hook fish | source + end + if type -q zoxide + zoxide init fish | source + end + ''; + }; + bash = { + enable = true; + }; + tmux = { + enable = true; + clock24 = true; + mouse = true; + extraConfig = '' + # switch panes using Alt-arrow without prefix + bind -n M-Left select-pane -L + bind -n M-Right select-pane -R + bind -n M-Up select-pane -U + bind -n M-Down select-pane -D - home.shellAliases = { - l = "ls -hal"; - dc = "docker compose"; - rsync = "rsync -az --info=progress2"; - t = "tmux new-session -A -s main"; - e = "nvim"; - hms = "home-manager switch --flake ~/nix#root -b backup"; - snd = "darwin-rebuild switch --flake ~/.config/nix-darwin#mbp"; - }; - - programs.fish = { - enable = true; - interactiveShellInit = '' - if type -q oh-my-posh - oh-my-posh init fish --config ~/.config/omp/config.yaml | source - end - if type -q fnm - fnm env --use-on-cd | source - end - if type -q direnv - direnv hook fish | source - end - if type -q zoxide - zoxide init fish | source - end - ''; - }; - programs.bash = { - enable = true; - }; - programs.tmux = { - enable = true; - clock24 = true; - mouse = true; - extraConfig = '' - # switch panes using Alt-arrow without prefix - bind -n M-Left select-pane -L - bind -n M-Right select-pane -R - bind -n M-Up select-pane -U - bind -n M-Down select-pane -D - - # switch panes using jkhl - bind h select-pane -L - bind l select-pane -R - bind j select-pane -U - bind k select-pane -D - ''; - shell = "${pkgs.fish}/bin/fish"; - terminal = "tmux-256color"; + # switch panes using jkhl + bind h select-pane -L + bind l select-pane -R + bind j select-pane -U + bind k select-pane -D + ''; + shell = "${pkgs.fish}/bin/fish"; + terminal = "tmux-256color"; + }; }; } diff --git a/home/sflx.nix b/home/sflx.nix new file mode 100644 index 0000000..acf22ee --- /dev/null +++ b/home/sflx.nix @@ -0,0 +1,8 @@ +{ pkgs }: +with pkgs; +[ + vault + cocoapods + phrase-cli + boundary +] diff --git a/home/shared.nix b/home/shared.nix new file mode 100644 index 0000000..983663f --- /dev/null +++ b/home/shared.nix @@ -0,0 +1,54 @@ +{ pkgs }: +with pkgs; +[ + # Base + tmux + oh-my-posh + git + git-lfs + git-crypt + bfg-repo-cleaner + gnutar + gnupg + htop + rclone + rename + tmux + tree + wget + woff2 + bat + rsync + zoxide + #bitwarden-cli + + # Dev + devenv + direnv + nixpacks + ollama + + # Editor + neovim + fzf + lazygit + lua + luajitPackages.luarocks + ast-grep + ripgrep + + # Language specific + nixfmt-rfc-style + fnm + bun + deno + zig + uv + ruff + tectonic + tex-fmt + rustup + + # Fonts + nerd-fonts.jetbrains-mono +] diff --git a/hosts/default.nix b/hosts/default.nix new file mode 100644 index 0000000..90f15c4 --- /dev/null +++ b/hosts/default.nix @@ -0,0 +1,4 @@ +[ + (import ./mac14.nix) + (import ./mac16.nix) +] diff --git a/hosts/mac14.nix b/hosts/mac14.nix new file mode 100644 index 0000000..2ec45ff --- /dev/null +++ b/hosts/mac14.nix @@ -0,0 +1,5 @@ +{ + username = "cupcakearmy"; + hostName = "mac14"; + system = "aarch64-darwin"; +} diff --git a/hosts/mac16.nix b/hosts/mac16.nix new file mode 100644 index 0000000..527a24f --- /dev/null +++ b/hosts/mac16.nix @@ -0,0 +1,5 @@ +{ + username = "niccoloborgioli"; + hostName = "mac16"; + system = "aarch64-darwin"; +} diff --git a/test.nix b/test.nix new file mode 100644 index 0000000..2f06081 --- /dev/null +++ b/test.nix @@ -0,0 +1,11 @@ +let + hosts = import ./hosts; + inherit (builtins) listToAttrs; + result = listToAttrs ( + map (item: { + name = item.hostName; + value = item; + }) hosts + ); +in +result