darwin: Merge shared configuration between hosts

This commit is contained in:
Spotlight 2025-05-29 01:54:38 -05:00
parent cc4b19e36e
commit 464b0bd5fe
Signed by: spotlight
GPG key ID: 874AA355B3209BDC
5 changed files with 76 additions and 120 deletions

6
flake.lock generated
View file

@ -92,11 +92,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1748455938, "lastModified": 1748489961,
"narHash": "sha256-mQ/iNzPra2WtDQ+x2r5IadcWNr0m3uHvLMzJkXKAG/8=", "narHash": "sha256-uGnudxMoQi2c8rpPoHXuQSm80NBqlOiNF4xdT3hhzLM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "02077149e2921014511dac2729ae6dadb4ec50e2", "rev": "95c988cf08e9a5a8fe7cc275d5e3f24e9e87bd51",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -0,0 +1,36 @@
{ pkgs, ... }: {
imports = [
./java.nix
];
# We'd like to use Vim globally.
environment = {
systemPackages = [
pkgs.vim
];
variables.EDITOR = "${pkgs.vim}/bin/vim";
};
# Similarly, we'd like to use zsh.
programs.zsh.enable = true;
# We make the assumption our user is named `spot`.
users.users.spot = {
description = "Spotlight Deveaux";
home = "/Users/spot";
shell = pkgs.zsh;
};
nix = {
# Keep the latest version of Nix.
package = pkgs.nix;
settings = {
# Necessary for using flakes on this system.
experimental-features = "nix-command flakes";
# Include Garnix
substituters = [ "https://cache.garnix.io" ];
trusted-public-keys = [ "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" ];
};
};
}

View file

@ -0,0 +1,30 @@
{ pkgs, ... }: {
# Install the latest JDK, and latest LTS JDK.
# Per https://github.com/LnL7/nix-darwin/issues/663,
# nix-darwin only supports a few specific named activation scripts.
# We'll leverage `extraActivation` to symlink our JDKs.
# TODO(spotlightishere): Migrate to explicit scripts when possible
system.activationScripts.extraActivation.text = ''
##############
# Latest JDK #
##############
# Regardless of version, we'd like the latest JDK available.
# Remove the symlink if it doesn't already exist.
rm -f /Library/Java/JavaVirtualMachines/zulu-latest.jdk
# We should only have a single JDK present within our package,
# but let's limit `find` regardless.
JDK_LOCATION="$(find "${pkgs.jdk24}" -name "*.jdk" | head -n1)"
# Symlink!
ln -sf "$JDK_LOCATION" "/Library/Java/JavaVirtualMachines/zulu-latest.jdk"
##########
# JDK 21 #
##########
# We'd also like the latest LTS version of the JDK available.
rm -f /Library/Java/JavaVirtualMachines/zulu-21.jdk
ln -sf "${pkgs.jdk21}/zulu-21.jdk" "/Library/Java/JavaVirtualMachines/zulu-21.jdk"
'';
}

View file

@ -1,66 +1,11 @@
{ lib, pkgs, system, ... }: { { lib, pkgs, system, ... }: {
environment = { imports = [
# We'll use Vim globally. ../shared/common.nix
systemPackages = [ ];
pkgs.vim
];
variables.EDITOR = "${pkgs.vim}/bin/vim";
};
# Per https://github.com/LnL7/nix-darwin/issues/663,
# nix-darwin only supports a few specific named activation scripts.
# We'll leverage `extraActivation` to symlink our JDKs.
system.activationScripts.extraActivation.text = ''
##############
# Latest JDK #
##############
# Regardless of version, we'd like the latest JDK available.
# Remove the symlink if it doesn't already exist.
rm -f /Library/Java/JavaVirtualMachines/zulu-latest.jdk
# We should only have a single JDK present within our package,
# but let's limit `find` regardless.
JDK_LOCATION="$(find "${pkgs.jdk24}" -name "*.jdk" | head -n1)"
# Symlink!
ln -sf "$JDK_LOCATION" "/Library/Java/JavaVirtualMachines/zulu-latest.jdk"
##########
# JDK 21 #
##########
# We'd also like the latest LTS version of the JDK available.
rm -f /Library/Java/JavaVirtualMachines/zulu-21.jdk
ln -sf "${pkgs.jdk21}/zulu-21.jdk" "/Library/Java/JavaVirtualMachines/zulu-21.jdk"
'';
# Auto upgrade the nix package.
nix = {
# Keep the latest version of Nix.
package = pkgs.nix;
settings = {
# Necessary for using flakes on this system.
experimental-features = "nix-command flakes";
# Include Garnix
substituters = [ "https://cache.garnix.io" ];
trusted-public-keys = [ "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" ];
};
};
# Create /etc/zshrc that loads the nix-darwin environment.
programs.zsh.enable = true;
# Used for backwards compatibility, please read the changelog before changing. # Used for backwards compatibility, please read the changelog before changing.
# $ darwin-rebuild changelog # $ darwin-rebuild changelog
system.stateVersion = 6; system.stateVersion = 6;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-darwin"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-darwin";
# Our singular user!
users.users.spot = {
description = "Spotlight Deveaux";
home = "/Users/spot";
shell = pkgs.zsh;
};
} }

View file

@ -1,66 +1,11 @@
{ lib, pkgs, system, ... }: { { lib, pkgs, system, ... }: {
environment = { imports = [
# We'll use Vim globally. ../shared/common.nix
systemPackages = [ ];
pkgs.vim
];
variables.EDITOR = "${pkgs.vim}/bin/vim";
};
# Per https://github.com/LnL7/nix-darwin/issues/663,
# nix-darwin only supports a few specific named activation scripts.
# We'll leverage `extraActivation` to symlink our JDKs.
system.activationScripts.extraActivation.text = ''
##############
# Latest JDK #
##############
# Regardless of version, we'd like the latest JDK available.
# Remove the symlink if it doesn't already exist.
rm -f /Library/Java/JavaVirtualMachines/zulu-latest.jdk
# We should only have a single JDK present within our package,
# but let's limit `find` regardless.
JDK_LOCATION="$(find "${pkgs.jdk24}" -name "*.jdk" | head -n1)"
# Symlink!
ln -sf "$JDK_LOCATION" "/Library/Java/JavaVirtualMachines/zulu-latest.jdk"
##########
# JDK 21 #
##########
# We'd also like the latest LTS version of the JDK available.
rm -f /Library/Java/JavaVirtualMachines/zulu-21.jdk
ln -sf "${pkgs.jdk21}/zulu-21.jdk" "/Library/Java/JavaVirtualMachines/zulu-21.jdk"
'';
# Auto upgrade the nix package.
nix = {
# Keep the latest version of Nix.
package = pkgs.nix;
settings = {
# Necessary for using flakes on this system.
experimental-features = "nix-command flakes";
# Include Garnix
substituters = [ "https://cache.garnix.io" ];
trusted-public-keys = [ "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" ];
};
};
# Create /etc/zshrc that loads the nix-darwin environment.
programs.zsh.enable = true;
# Used for backwards compatibility, please read the changelog before changing. # Used for backwards compatibility, please read the changelog before changing.
# $ darwin-rebuild changelog # $ darwin-rebuild changelog
system.stateVersion = 4; system.stateVersion = 6;
nixpkgs.hostPlatform = lib.mkDefault "aarch64-darwin"; nixpkgs.hostPlatform = lib.mkDefault "aarch64-darwin";
# Our singular user!
users.users.spot = {
description = "Spotlight Deveaux";
home = "/Users/spot";
shell = pkgs.zsh;
};
} }