From 58ba09445640857c3fad0e76f15c6a34d555b294 Mon Sep 17 00:00:00 2001 From: mjallen18 Date: Mon, 14 Jul 2025 08:42:31 -0500 Subject: [PATCH] finally set up some of nix-darwin --- flake.lock | 209 ++++++++++++++++++++++++++++++------ flake.nix | 30 ++++++ hosts/mac/configuration.nix | 78 +++----------- hosts/mac/home.nix | 134 +++++++---------------- hosts/mac/homebrew.nix | 65 +++++++++++ hosts/mac/nix.nix | 17 +++ hosts/mac/programs.nix | 24 +++++ hosts/mac/system.nix | 50 +++++++++ modules/home/vscode.nix | 3 +- 9 files changed, 416 insertions(+), 194 deletions(-) create mode 100644 hosts/mac/homebrew.nix create mode 100644 hosts/mac/nix.nix create mode 100644 hosts/mac/programs.nix create mode 100644 hosts/mac/system.nix diff --git a/flake.lock b/flake.lock index 61dff20..7d63614 100755 --- a/flake.lock +++ b/flake.lock @@ -33,6 +33,23 @@ "type": "github" } }, + "brew-src": { + "flake": false, + "locked": { + "lastModified": 1751910772, + "narHash": "sha256-jQNdIkq2iRDNWskd5f8kX6q9BO/CBSXhMH41WNRft8E=", + "owner": "Homebrew", + "repo": "brew", + "rev": "700d67a85e0129ab8a893ff69246943479e33df1", + "type": "github" + }, + "original": { + "owner": "Homebrew", + "ref": "4.5.9", + "repo": "brew", + "type": "github" + } + }, "crane": { "locked": { "lastModified": 1731098351, @@ -185,6 +202,25 @@ "type": "github" } }, + "desktop-nix-vscode-extensions": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1752373577, + "narHash": "sha256-5ipIQ1dp4qLfgVOBRU3NqnESjF6CqD/HQVYlEXC4P0s=", + "owner": "nix-community", + "repo": "nix-vscode-extensions", + "rev": "b8780c4b346250b6e86a7127dbe5e43a4bb394eb", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-vscode-extensions", + "type": "github" + } + }, "desktop-nixos-hardware": { "locked": { "lastModified": 1750837715, @@ -497,6 +533,24 @@ } }, "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { "inputs": { "systems": [ "nas-authentik-nix", @@ -517,9 +571,9 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_3": { "inputs": { - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1731533236, @@ -534,9 +588,9 @@ "type": "indirect" } }, - "flake-utils_3": { + "flake-utils_4": { "inputs": { - "systems": "systems_3" + "systems": "systems_4" }, "locked": { "lastModified": 1731533236, @@ -552,9 +606,9 @@ "type": "github" } }, - "flake-utils_4": { + "flake-utils_5": { "inputs": { - "systems": "systems_4" + "systems": "systems_5" }, "locked": { "lastModified": 1731533236, @@ -678,6 +732,38 @@ "type": "github" } }, + "homebrew-cask": { + "flake": false, + "locked": { + "lastModified": 1752451414, + "narHash": "sha256-XNUBW6GZOWG8kJrju3MIf5GCbNhUA24rArCS/IIkpEE=", + "owner": "homebrew", + "repo": "homebrew-cask", + "rev": "68607571486a0c82a71e0a4c8c8ce8de77164522", + "type": "github" + }, + "original": { + "owner": "homebrew", + "repo": "homebrew-cask", + "type": "github" + } + }, + "homebrew-core": { + "flake": false, + "locked": { + "lastModified": 1752438625, + "narHash": "sha256-oKbf2JYEevxOJ55+z9t1R1mZDPAA4o3QWKGqgLfambk=", + "owner": "homebrew", + "repo": "homebrew-core", + "rev": "dd264970344897aa005931dec441fa46cbaf0b2c", + "type": "github" + }, + "original": { + "owner": "homebrew", + "repo": "homebrew-core", + "type": "github" + } + }, "jovian": { "inputs": { "nix-github-actions": "nix-github-actions", @@ -760,7 +846,7 @@ "mac-nixos-apple-silicon": { "inputs": { "flake-compat": "flake-compat_3", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1751622568, @@ -843,14 +929,14 @@ "authentik-src": "authentik-src", "flake-compat": "flake-compat_4", "flake-parts": "flake-parts_2", - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "napalm": "napalm", "nixpkgs": [ "nas-nixpkgs" ], "pyproject-build-systems": "pyproject-build-systems", "pyproject-nix": "pyproject-nix", - "systems": "systems", + "systems": "systems_2", "uv2nix": "uv2nix" }, "locked": { @@ -892,7 +978,7 @@ }, "nas-crowdsec": { "inputs": { - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils_3", "nixpkgs": [ "nas-nixpkgs" ] @@ -974,8 +1060,8 @@ }, "nas-nix-vscode-extensions": { "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_3" + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1749002682, @@ -993,8 +1079,8 @@ }, "nas-nixai": { "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_4" + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1749000216, @@ -1166,6 +1252,24 @@ "type": "github" } }, + "nix-homebrew": { + "inputs": { + "brew-src": "brew-src" + }, + "locked": { + "lastModified": 1752160973, + "narHash": "sha256-BCC8KB7TEtwv7vZN1WDu870tRbXtzUcmF9xNr6ws5Wc=", + "owner": "zhaofengli", + "repo": "nix-homebrew", + "rev": "69c1aa2f136f3c3326d9b6770e0eb54f12832971", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "repo": "nix-homebrew", + "type": "github" + } + }, "nixos-images": { "inputs": { "nixos-stable": [ @@ -1196,7 +1300,7 @@ "inputs": { "argononed": "argononed", "nixos-images": "nixos-images", - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_6" }, "locked": { "lastModified": 1749156319, @@ -1372,6 +1476,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1744868846, + "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1748460289, "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", @@ -1387,7 +1507,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1744868846, "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", @@ -1403,7 +1523,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1748693115, "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", @@ -1419,7 +1539,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1748882666, "narHash": "sha256-z2uanxifOXGEqdiprquIGZu0XaRYih3FHXDQwLc1xis=", @@ -1435,7 +1555,7 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_7": { "locked": { "lastModified": 1751792365, "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", @@ -1828,10 +1948,13 @@ "desktop-home-manager": "desktop-home-manager", "desktop-impermanence": "desktop-impermanence", "desktop-lanzaboote": "desktop-lanzaboote", + "desktop-nix-vscode-extensions": "desktop-nix-vscode-extensions", "desktop-nixos-hardware": "desktop-nixos-hardware", "desktop-nixpkgs": "desktop-nixpkgs", "desktop-sops-nix": "desktop-sops-nix", "desktop-steam-rom-manager": "desktop-steam-rom-manager", + "homebrew-cask": "homebrew-cask", + "homebrew-core": "homebrew-core", "mac-home-manager": "mac-home-manager", "mac-impermanence": "mac-impermanence", "mac-nixos-apple-silicon": "mac-nixos-apple-silicon", @@ -1850,6 +1973,7 @@ "nas-nixpkgs-stable": "nas-nixpkgs-stable", "nas-sops-nix": "nas-sops-nix", "nix-darwin": "nix-darwin", + "nix-homebrew": "nix-homebrew", "nixos-raspberrypi": "nixos-raspberrypi", "nixpkgs-stable": "nixpkgs-stable_5", "nixpkgs-unstable": "nixpkgs-unstable", @@ -2051,7 +2175,7 @@ "flake-schemas": "flake-schemas_2", "home-manager": "home-manager_2", "jovian": "jovian_2", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_7", "rust-overlay": "rust-overlay_7" }, "locked": { @@ -2248,21 +2372,6 @@ } }, "systems": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_2": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -2277,6 +2386,21 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, "systems_3": { "locked": { "lastModified": 1681028828, @@ -2307,6 +2431,21 @@ "type": "github" } }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "uv2nix": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index 11d8f5e..ac5171a 100755 --- a/flake.nix +++ b/flake.nix @@ -58,6 +58,8 @@ inputs.nixpkgs.follows = "desktop-nixpkgs"; }; + desktop-nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions"; + ##################################################### # NAS # ##################################################### @@ -278,6 +280,17 @@ url = "github:LnL7/nix-darwin"; inputs.nixpkgs.follows = "desktop-nixpkgs"; }; + + nix-homebrew.url = "github:zhaofengli/nix-homebrew"; + + homebrew-core = { + url = "github:homebrew/homebrew-core"; + flake = false; + }; + homebrew-cask = { + url = "github:homebrew/homebrew-cask"; + flake = false; + }; ##################################################### # Macbook Nix # @@ -336,6 +349,7 @@ desktop-sops-nix, desktop-steam-rom-manager, desktop-cosmic, + desktop-nix-vscode-extensions, # NAS nas-nixpkgs, @@ -384,6 +398,9 @@ # MacBook nix-darwin, + nix-homebrew, + homebrew-core, + homebrew-cask, # MacBook Nix mac-nixpkgs, @@ -795,14 +812,27 @@ darwinConfigurations = { "MacBook-Pro" = nix-darwin.lib.darwinSystem { system = "aarch64-darwin"; + specialArgs = { + inherit inputs outputs; + }; modules = [ ./hosts/mac/configuration.nix + nix-homebrew.darwinModules.nix-homebrew desktop-home-manager.darwinModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.mattjallen = import ./hosts/mac/home.nix; + home-manager.backupFileExtension = "backup"; } + ( + { ... }: + { + nixpkgs.overlays = [ + desktop-nix-vscode-extensions.overlays.default + ]; + } + ) ]; }; }; diff --git a/hosts/mac/configuration.nix b/hosts/mac/configuration.nix index 4507b90..9fb2592 100755 --- a/hosts/mac/configuration.nix +++ b/hosts/mac/configuration.nix @@ -1,76 +1,24 @@ -{ pkgs, ... }: +{ config, inputs, pkgs, ... }: { - #nix run nix-darwin -- switch --flake ~/nix-config + imports = [ + ./nix.nix + ./homebrew.nix + ./programs.nix + ./system.nix + ]; # List packages installed in system profile. To search by name, run: # $ nix-env -qaP | grep wget - environment.systemPackages = with pkgs; [ - asitop - mas - python3 - python3Packages.beautifulsoup4 - python3Packages.requests - python3Packages.selenium - vim - ]; - - # Homebrew - homebrew.enable = true; - homebrew.casks = [ - "spotify" - "protonvpn" - "omnissa-horizon-client" - "tg-pro" - "steam" - "orcaslicer" - "vscodium" - "epic-games" - "wine-stable" - "scroll-reverser" - ]; - - homebrew.masApps = { - Tailscale = 1475387142; - Infuse = 1136220934; - Amphetamine = 937984704; + environment = { + systemPackages = with pkgs; [ + asitop + mas + nh + ]; }; - # homebrew.global.autoUpdate = true; security.pam.services.sudo_local.touchIdAuth = true; - # Auto upgrade nix package and the daemon service. - # services.nix-daemon.enable = true; - # nix.package = pkgs.nix; - - # Necessary for using flakes on this system. - nix.settings.experimental-features = "nix-command flakes"; - - # Allow unfree - nixpkgs.config.allowUnfree = true; - - # Create /etc/zshrc that loads the nix-darwin environment. - programs.zsh.enable = true; # default shell on catalina - - system = { - defaults = { - trackpad.Clicking = true; - dock.autohide = false; - - NSGlobalDomain = { - AppleInterfaceStyle = "Dark"; - "com.apple.mouse.tapBehavior" = 1; - "com.apple.keyboard.fnState" = false; - }; - }; - - # Used for backwards compatibility, please read the changelog before changing. - # $ darwin-rebuild changelog - stateVersion = 5; - }; - - # The platform the configuration will be used on. - nixpkgs.hostPlatform = "aarch64-darwin"; - users.users.mattjallen = { name = "mattjallen"; home = "/Users/mattjallen"; diff --git a/hosts/mac/home.nix b/hosts/mac/home.nix index b17214a..698ceb7 100755 --- a/hosts/mac/home.nix +++ b/hosts/mac/home.nix @@ -1,111 +1,59 @@ -{ ... }: +{ lib, pkgs, home, ... }: let shellAliases = { update-switch = "darwin-rebuild switch --flake ~/nix-config"; update-flake = "nix flake update ~/nix-config"; ducks = "du -cksh * | sort -hr | head -n 15"; }; - - gitAliases = { - co = "checkout"; - ci = "commit"; - cia = "commit --amend"; - s = "status"; - st = "status"; - b = "branch"; - p = "pull --rebase"; - pu = "push"; - }; + packages = with pkgs; [ + age + cpufetch + deadnix + direnv + nixfmt-rfc-style + sops + tree + wget + ]; in { - imports = [ ./trampoline-apps ]; + imports = [ + ../../modules/home/defaults.nix + ../../modules/home/git.nix + ../../modules/home/shell.nix + ../../modules/home/vscode.nix + ]; # Home Manager needs a bit of information about you and the # paths it should manage. - home.username = "mattjallen"; - home.homeDirectory = "/Users/mattjallen"; - - # This value determines the Home Manager release that your - # configuration is compatible with. This helps avoid breakage - # when a new Home Manager release introduces backwards - # incompatible changes. - # - # You can update Home Manager without changing this value. See - # the Home Manager release notes for a list of state version - # changes in each release. - home.stateVersion = "23.11"; - - programs = { - # Let Home Manager install and manage itself. - home-manager = { - enable = true; - }; - - vscode = { - enable = true; - }; - - btop.enable = true; - - zsh = { - enable = true; - enableCompletion = true; - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - - shellAliases = shellAliases; - - oh-my-zsh = { - enable = true; - plugins = [ "git" ]; - theme = "fishy"; - }; - }; - - librewolf = { - enable = true; - settings = { - "identity.fxaccounts.enabled" = true; # Enable Firefox Accounts - "privacy.clearOnShutdown.history" = false; # Disable clearing history on shutdown - "privacy.clearOnShutdown.downloads" = false; # Disable clearing downloads on shutdown - "privacy.clearOnShutdown.cache" = false; # Disable clearing cache on shutdown - "privacy.clearOnShutdown.cookiesAndStorage" = false; # Disable clearing cookies and storage on shutdown - "privacy.clearOnShutdown.cookies" = false; # Disable clearing cookies on shutdown - "privacy.clearOnShutdown_v2.cache" = false; # Disable clearing cache on shutdown - "privacy.clearOnShutdown_v2.cookiesAndStorage" = false; # Disable clearing cookies and storage on shutdown - "privacy.clearOnShutdown.formdata" = false; # Disable clearing form data on shutdown - "privacy.clearOnShutdown.offlineApps" = false; # Disable clearing offline apps on shutdown - "privacy.clearHistory.cache" = false; # Disable clearing cache on history clear - "privacy.clearHistory.cookiesAndStorage" = false; # Disable clearing cookies on history clear - "privacy.clearHistory.historyFormDataAndDownloads" = false; # Disable clearing history, form data, and downloads on history clear - "privacy.clearHistory.browsingHistoryAndDownloads" = false; # Disable clearing browsing history and downloads on history clear - "privacy.clearSiteData.cache" = false; # Disable clearing cache on site data clear - "privacy.clearSiteData.cookiesAndStorage" = false; # Disable clearing cookies on site data clear - "services.sync.prefs.sync.privacy.clearOnShutdown.cache" = true; # Enable syncing cache clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.cookies" = true; # Enable syncing cookies clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.downloads" = true; # Enable syncing downloads clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.formdata" = true; # Enable syncing form data clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.history" = true; # Enable syncing history clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.offlineApps" = true; # Enable syncing offline apps clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.sessions" = true; # Enable syncing sessions clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.siteSettings" = true; # Enable syncing site settings clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown_v2.cache" = true; # Enable syncing cache clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown_v2.cookiesAndStorage" = true; # Enable syncing cookies clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown_v2.downloads" = true; # Enable syncing downloads clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown_v2.historyFormDataAndDownloads" = true; # Enable syncing form data clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown_v2.siteSettings" = true; # Enable syncing site settings clear on shutdown - "browser.newtabpage.activity-stream.feeds.topsites" = true; # Enable top sites on new tab page - "browser.newtabpage.activity-stream.topSitesRows" = 3; # Set number of rows for top sites on new tab page - }; + home = { + username = "mattjallen"; + homeDirectory = "/Users/mattjallen"; + packages = lib.mkForce packages; + sessionVariables = { + NH_DARWIN_FLAKE = "${home.homeDirectory}/nix-config"; }; }; - programs.git = { - enable = true; - userName = "mjallen18"; - userEmail = "matt.l.jallen@gmail.com"; - aliases = gitAliases; + programs = { + zsh = { + shellAliases = shellAliases; + }; }; # Manage bug in compilations - who uses manpages in 2024 anyways? :P manual.manpages.enable = false; + + # Override defaults that arent supported + programs = { + mangohud.enable = lib.mkForce false; + + nh = { + flake = "${home.homeDirectory}/nix-config"; + }; + }; + + services = { + pass-secret-service.enable = lib.mkForce false; + nextcloud-client.enable = lib.mkForce false; + }; } diff --git a/hosts/mac/homebrew.nix b/hosts/mac/homebrew.nix new file mode 100644 index 0000000..51e6404 --- /dev/null +++ b/hosts/mac/homebrew.nix @@ -0,0 +1,65 @@ +{ config, inputs, ... }: +{ + nix-homebrew = { + user = config.system.primaryUser; + enable = true; + autoMigrate = true; + enableRosetta = true; + mutableTaps = false; + taps = { + "homebrew/homebrew-core" = inputs.homebrew-core; + "homebrew/homebrew-cask" = inputs.homebrew-cask; + }; + }; + + # Homebrew + homebrew = { + enable = true; + taps = builtins.attrNames config.nix-homebrew.taps; + global = { + autoUpdate = false; + brewfile = true; + }; + onActivation = { + autoUpdate = false; + cleanup = "zap"; + }; + casks = [ + "aldente" + "bartender" + "betterdisplay" + "chromium" + "discord" + "epic-games" + "gstreamer-runtime" + "iterm2" + "kitty" + "minecraft" + "omnissa-horizon-client" + "onlyoffice" + "orcaslicer" + "proton-drive" + "proton-pass" + "protonvpn" + "scroll-reverser" + "steam" + "tabby" + "tg-pro" + "utm" + "vesktop" + "vlc" + "vscodium" + "wine-stable" + "xquartz" + ]; + masApps = { + Amphetamine = 937984704; + Infuse = 1136220934; + "Proton Pass for Safari" = 6502835663; + Tailscale = 1475387142; + Termius = 1176074088; + }; + }; + + # homebrew.global.autoUpdate = true; +} \ No newline at end of file diff --git a/hosts/mac/nix.nix b/hosts/mac/nix.nix new file mode 100644 index 0000000..70fe65a --- /dev/null +++ b/hosts/mac/nix.nix @@ -0,0 +1,17 @@ +{ ... }: +{ + # Auto upgrade nix package and the daemon service. + # services.nix-daemon.enable = true; + # nix.package = pkgs.nix; + + # Necessary for using flakes on this system. + nix = { + settings.experimental-features = "nix-command flakes"; + }; + + # The platform the configuration will be used on. + nixpkgs = { + config.allowUnfree = true; + hostPlatform = "aarch64-darwin"; + }; +} \ No newline at end of file diff --git a/hosts/mac/programs.nix b/hosts/mac/programs.nix new file mode 100644 index 0000000..8d6fdd4 --- /dev/null +++ b/hosts/mac/programs.nix @@ -0,0 +1,24 @@ +{ ... }: +{ + programs = { + direnv = { + enable = true; + nix-direnv.enable = true; + }; + + nix-index = { + enable = true; + }; + + ssh.knownHosts = { + desktop = { + publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPTBMydhOc6SnOdB5WrEd7X07DrboAtagCUgXiOJjLov matt@matt-nixos"; + }; + nas = { + publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIwoHWOLSTGVif9hAhaMLl0qDA4roIzCNuyR6kyIXDOj admin@jallen-nas"; + }; + }; + + zsh.enable = true; # default shell on catalina + }; +} \ No newline at end of file diff --git a/hosts/mac/system.nix b/hosts/mac/system.nix new file mode 100644 index 0000000..57dfd52 --- /dev/null +++ b/hosts/mac/system.nix @@ -0,0 +1,50 @@ +{ config, ... }: +{ + system = { + primaryUser = config.users.users.mattjallen.name; + defaults = { + controlcenter = { + AirDrop = true; + BatteryShowPercentage = true; + Bluetooth = true; + Display = true; + FocusModes = true; + NowPlaying = true; + }; + dock = { + minimize-to-application = true; + mouse-over-hilite-stack = true; + show-recents = false; + }; + finder = { + AppleShowAllExtensions = true; + AppleShowAllFiles = true; + _FXSortFoldersFirst = true; + _FXSortFoldersFirstOnDesktop = true; + FXEnableExtensionChangeWarning = false; + ShowPathbar = true; # breadcrumb nav at bottom + ShowStatusBar = true; # file count & disk space + }; + loginwindow = { + GuestEnabled = false; + }; + NSGlobalDomain = { + "com.apple.keyboard.fnState" = false; + AppleInterfaceStyle = "Dark"; + "com.apple.mouse.tapBehavior" = 1; + AppleShowAllExtensions = true; + AppleShowAllFiles = true; + }; + trackpad = { + Clicking = true; + }; + WindowManager = { + EnableTiledWindowMargins = false; + }; + }; + startup.chime = false; + # Used for backwards compatibility, please read the changelog before changing. + # $ darwin-rebuild changelog + stateVersion = 5; + }; +} diff --git a/modules/home/vscode.nix b/modules/home/vscode.nix index 1ef97c4..a126538 100644 --- a/modules/home/vscode.nix +++ b/modules/home/vscode.nix @@ -36,7 +36,8 @@ in vscode-extensions.redhat.vscode-yaml vscode-extensions.yy0931.vscode-sqlite3-editor - open-remote-ssh + # open-remote-ssh + nix-vscode-extensions.open-vsx.jeanp413.open-remote-ssh ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ { name = "copilot-mcp";