diff --git a/apps/aarch64-darwin/apply b/apps/aarch64-darwin/apply deleted file mode 100755 index b15ee21..0000000 --- a/apps/aarch64-darwin/apply +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env nu - -use ../common.nu * - -def main [hostname?: string, ...rest: string] { - let host = if ($hostname | is-empty) { - try { scutil --get LocalHostName | str trim } catch { hostname -s | str trim } - } else { $hostname } - - print_info $"Applying configuration for ($host)" - - nix run nix-darwin -- switch --flake $".#($host)" ...$rest - - print_success "Configuration applied successfully" -} diff --git a/apps/aarch64-darwin/build-switch b/apps/aarch64-darwin/build-switch deleted file mode 100755 index 8506bd4..0000000 --- a/apps/aarch64-darwin/build-switch +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env nu - -use ../common.nu * - -def main [hostname?: string, ...rest: string] { - let host = if ($hostname | is-empty) { - try { scutil --get LocalHostName | str trim } catch { hostname -s | str trim } - } else { $hostname } - - print_info $"Building and switching configuration for ($host)" - - # Build - print_info "Building configuration..." - if (nix build $".#darwinConfigurations.($host).system" --show-trace ...$rest | complete).exit_code != 0 { - print_error "Build failed" - exit 1 - } - - print_success "Build completed" - - # Switch - print_info "Switching to new configuration..." - sudo ./result/sw/bin/darwin-rebuild switch --flake $".#($host)" ...$rest - - if ("./result" | path exists) { - rm ./result - } - - print_success "Build and switch completed successfully" -} diff --git a/apps/apply b/apps/apply new file mode 100755 index 0000000..d18945c --- /dev/null +++ b/apps/apply @@ -0,0 +1,32 @@ +#!/usr/bin/env nu + +use ./common.nu * + +def get-hostname [] { + if $nu.os-info.name == "macos" { + try { ^scutil --get LocalHostName | str trim } catch { ^hostname -s | str trim } + } else { + ^hostname | str trim + } +} + +def main [hostname?: string, ...rest: string] { + let host = if ($hostname | is-empty) { + get-hostname + } else { $hostname } + + print_info $"Applying configuration for ($host)" + + if $nu.os-info.name == "macos" { + sudo nix run nix-darwin -- switch --flake $".#($host)" ...$rest + } else { + let euid = (id -u | str trim | into int) + if $euid != 0 { + sudo nixos-rebuild switch --flake $".#($host)" ...$rest + } else { + nixos-rebuild switch --flake $".#($host)" ...$rest + } + } + + print_success "Configuration applied successfully" +} diff --git a/apps/x86_64-linux/apply b/apps/x86_64-linux/apply deleted file mode 100755 index c469b33..0000000 --- a/apps/x86_64-linux/apply +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env nu - -use ../common.nu * - -def main [hostname?: string, ...rest: string] { - let host = if ($hostname | is-empty) { - hostname | str trim - } else { $hostname } - - print_info $"Applying configuration for ($host)" - - let euid = (id -u | str trim | into int) - - if $euid != 0 { - sudo nixos-rebuild switch --flake $".#($host)" ...$rest - } else { - nixos-rebuild switch --flake $".#($host)" ...$rest - } - - print_success "Configuration applied successfully" -} diff --git a/apps/x86_64-linux/build-switch b/apps/x86_64-linux/build-switch deleted file mode 100755 index 5b7a44c..0000000 --- a/apps/x86_64-linux/build-switch +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env nu - -use ../common.nu * - -def main [hostname?: string, ...rest: string] { - let host = if ($hostname | is-empty) { - hostname | str trim - } else { $hostname } - - print_info $"Building and switching configuration for ($host)" - - # Build - print_info "Building configuration..." - if (nix build $".#nixosConfigurations.($host).config.system.build.toplevel" --no-link ...$rest | complete).exit_code != 0 { - print_error "Build failed" - exit 1 - } - - print_success "Build completed" - - # Switch - print_info "Switching to new configuration..." - let euid = (id -u | str trim | into int) - - if $euid != 0 { - sudo nixos-rebuild switch --flake $".#($host)" ...$rest - } else { - nixos-rebuild switch --flake $".#($host)" ...$rest - } - - print_success "Build and switch completed successfully" -} diff --git a/modules/apps.nix b/modules/apps.nix index 6051cc5..53a5a1d 100644 --- a/modules/apps.nix +++ b/modules/apps.nix @@ -7,23 +7,31 @@ descriptions = { apply = "Build and apply configuration"; build = "Build configuration"; - build-switch = "Build and switch configuration"; rollback = "Rollback to previous generation"; update = "Update flake inputs and regenerate flake.nix"; }; - mkApp = name: { + mkPlatformApp = name: { type = "app"; program = "${(pkgs.writeShellScriptBin name '' PATH=${pkgs.git}/bin:$PATH - echo "Running ${name} for ${system}" exec ${inputs.self}/apps/${system}/${name} "$@" '')}/bin/${name}"; meta.description = descriptions.${name}; }; - appNames = ["apply" "build" "build-switch" "rollback" "update"]; + mkSharedApp = name: { + type = "app"; + program = "${(pkgs.writeShellScriptBin name '' + PATH=${pkgs.git}/bin:$PATH + exec ${inputs.self}/apps/${name} "$@" + '')}/bin/${name}"; + meta.description = descriptions.${name}; + }; + platformAppNames = ["build" "rollback" "update"]; + sharedAppNames = ["apply"]; in { apps = - pkgs.lib.genAttrs appNames mkApp + pkgs.lib.genAttrs platformAppNames mkPlatformApp + // pkgs.lib.genAttrs sharedAppNames mkSharedApp // { deploy = { type = "app";