more of the same
This commit is contained in:
149
flake.nix
149
flake.nix
@@ -372,6 +372,13 @@
|
||||
{
|
||||
imports = [
|
||||
./hosts/desktop/home.nix
|
||||
./share/home/defaults.nix
|
||||
./share/home/git.nix
|
||||
./share/home/gnome.nix
|
||||
./share/home/librewolf.nix
|
||||
./share/home/office.nix
|
||||
./share/home/shell.nix
|
||||
./share/home/vscode.nix
|
||||
desktop-steam-rom-manager.homeManagerModules.default
|
||||
desktop-sops-nix.homeManagerModules.sops
|
||||
];
|
||||
@@ -425,6 +432,11 @@
|
||||
{
|
||||
imports = [
|
||||
./hosts/nas/home.nix
|
||||
./share/home/defaults.nix
|
||||
./share/home/git.nix
|
||||
./share/home/librewolf.nix
|
||||
./share/home/shell.nix
|
||||
./share/home/vscode.nix
|
||||
nas-sops-nix.homeManagerModules.sops
|
||||
];
|
||||
};
|
||||
@@ -549,12 +561,19 @@
|
||||
inherit inputs outputs;
|
||||
};
|
||||
modules = [
|
||||
./base/base-nogui
|
||||
./base/base-gui
|
||||
./hosts/deck/configuration.nix
|
||||
./modules/desktop-environments/gnome
|
||||
|
||||
steamdeck-lanzaboote.nixosModules.lanzaboote
|
||||
|
||||
steamdeck-disko.nixosModules.disko
|
||||
./share/disko/disko.nix
|
||||
|
||||
steamdeck-impermanence.nixosModules.impermanence
|
||||
steamdeck-lanzaboote.nixosModules.lanzaboote
|
||||
./hosts/deck/configuration.nix
|
||||
./share/impermanence
|
||||
|
||||
steamdeck-home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
@@ -564,6 +583,13 @@
|
||||
{
|
||||
imports = [
|
||||
./hosts/deck/home.nix
|
||||
./share/home/defaults.nix
|
||||
./share/home/git.nix
|
||||
./share/home/gnome.nix
|
||||
./share/home/librewolf.nix
|
||||
./share/home/office.nix
|
||||
./share/home/shell.nix
|
||||
./share/home/vscode.nix
|
||||
steamdeck-sops-nix.homeManagerModules.sops
|
||||
steamdeck-steam-rom-manager.homeManagerModules.default
|
||||
];
|
||||
@@ -627,125 +653,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
# Improved build-all app
|
||||
apps.x86_64-linux.build-all =
|
||||
let
|
||||
pkgs = nas-nixpkgs.legacyPackages.x86_64-linux;
|
||||
in
|
||||
{
|
||||
type = "app";
|
||||
program = toString (
|
||||
pkgs.writeShellScript "build-all" ''
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Get the list of system names directly from flake.nix
|
||||
# This avoids JSON serialization issues
|
||||
systems=($(grep -o '"[^"]*"[[:space:]]*=' flake.nix | grep -v '_\|#\|"\.\|\*' | sed 's/"//g' | sed 's/=//g' | xargs))
|
||||
|
||||
echo "Found systems: ''${systems[@]}"
|
||||
echo "Building all compatible systems..."
|
||||
|
||||
# Track success/failure
|
||||
success=()
|
||||
failure=()
|
||||
|
||||
for system in "''${systems[@]}"; do
|
||||
echo "Attempting to build $system..."
|
||||
|
||||
# Detect system type without JSON evaluation
|
||||
if nix eval --raw ".#nixosConfigurations.$system.pkgs.stdenv.hostPlatform.system" 2>/dev/null; then
|
||||
system_type=$(nix eval --raw ".#nixosConfigurations.$system.pkgs.stdenv.hostPlatform.system" 2>/dev/null || echo "unknown")
|
||||
|
||||
# Only build if we're on the same system type or can cross-compile
|
||||
if [ "$system_type" = "x86_64-linux" ]; then
|
||||
echo "Building $system (x86_64-linux)..."
|
||||
if nix build ".#nixosConfigurations.$system.config.system.build.toplevel" --out-link "./result-$system" --no-link; then
|
||||
echo "✅ Successfully built $system"
|
||||
|
||||
# Copy to the binary cache
|
||||
echo "Copying $system to binary cache..."
|
||||
nix copy --to "https://cache.mjallen.dev?secret-key=/etc/nix/cache-priv-key.pem" ".#nixosConfigurations.$system.config.system.build.toplevel"
|
||||
success+=("$system")
|
||||
else
|
||||
echo "❌ Failed to build $system"
|
||||
failure+=("$system")
|
||||
fi
|
||||
elif [ "$system_type" = "aarch64-linux" ] && command -v qemu-aarch64-static >/dev/null 2>&1; then
|
||||
echo "Cross-building $system (aarch64-linux)..."
|
||||
if nix build ".#nixosConfigurations.$system.config.system.build.toplevel" --system aarch64-linux --out-link "./result-$system" --no-link; then
|
||||
echo "✅ Successfully built $system"
|
||||
nix copy --to "https://cache.mjallen.dev?secret-key=/etc/nix/cache-priv-key.pem" ".#nixosConfigurations.$system.config.system.build.toplevel"
|
||||
success+=("$system")
|
||||
else
|
||||
echo "❌ Failed to build $system"
|
||||
failure+=("$system")
|
||||
fi
|
||||
else
|
||||
echo "⚠️ Skipping $system ($system_type) - incompatible with this host"
|
||||
failure+=("$system (incompatible)")
|
||||
fi
|
||||
elif nix eval --raw ".#darwinConfigurations.$system.system" 2>/dev/null; then
|
||||
echo "Found Darwin system $system, attempting to build packages..."
|
||||
if nix build ".#darwinConfigurations.$system.system" --out-link "./result-darwin-$system" --no-link; then
|
||||
echo "✅ Successfully built $system packages"
|
||||
nix copy --to "https://cache.mjallen.dev?secret-key=/etc/nix/cache-priv-key.pem" ".#darwinConfigurations.$system.system"
|
||||
success+=("$system (darwin)")
|
||||
else
|
||||
echo "❌ Failed to build $system packages"
|
||||
failure+=("$system (darwin)")
|
||||
fi
|
||||
else
|
||||
echo "⚠️ Skipping $system - could not determine system type"
|
||||
failure+=("$system (unknown)")
|
||||
fi
|
||||
done
|
||||
|
||||
# Summary
|
||||
echo ""
|
||||
echo "===== Build Summary ====="
|
||||
echo "✅ Successfully built: ''${success[*]:-none}"
|
||||
echo "❌ Failed to build: ''${failure[*]:-none}"
|
||||
|
||||
# Return error code if any builds failed
|
||||
if [ ''${#failure[@]} -gt 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
''
|
||||
);
|
||||
};
|
||||
|
||||
# You could also provide a separate script that only lists systems
|
||||
apps.x86_64-linux.list-systems =
|
||||
let
|
||||
pkgs = nas-nixpkgs.legacyPackages.x86_64-linux;
|
||||
in
|
||||
{
|
||||
type = "app";
|
||||
program = toString (
|
||||
pkgs.writeShellScript "list-systems" ''
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Get systems from flake.nix
|
||||
systems=($(grep -o '"[^"]*"[[:space:]]*=' flake.nix | grep -v '_\|#\|"\.\|\*' | sed 's/"//g' | sed 's/=//g' | xargs))
|
||||
|
||||
echo "Found systems in flake.nix:"
|
||||
for system in "''${systems[@]}"; do
|
||||
# Try to determine if it's a NixOS or Darwin system
|
||||
if nix eval --raw ".#nixosConfigurations.$system.pkgs.stdenv.hostPlatform.system" 2>/dev/null; then
|
||||
system_type=$(nix eval --raw ".#nixosConfigurations.$system.pkgs.stdenv.hostPlatform.system" 2>/dev/null)
|
||||
echo " - $system (NixOS, $system_type)"
|
||||
elif nix eval --raw ".#darwinConfigurations.$system.system" 2>/dev/null; then
|
||||
echo " - $system (Darwin)"
|
||||
else
|
||||
echo " - $system (unknown type)"
|
||||
fi
|
||||
done
|
||||
''
|
||||
);
|
||||
};
|
||||
|
||||
# Expose the package set, including overlays, for convenience.
|
||||
darwinPackages = self.darwinConfigurations."MacBook-Pro".pkgs;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user