more of the same

This commit is contained in:
mjallen18
2025-05-30 10:58:20 -05:00
parent 77272fb931
commit eece0b01f4
11 changed files with 73 additions and 305 deletions

149
flake.nix
View File

@@ -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;