@@ -37,36 +37,9 @@ func loadDeployments(cfg string) (map[string]JobSpec, error) {
3737 if err := json .Unmarshal (data , & jobs ); err != nil {
3838 return nil , fmt .Errorf ("invalid JSON in %s: %w" , cfg , err )
3939 }
40- return jobs , nil
41- }
42-
43- func run (cmd string , args ... string ) ([]byte , error ) {
44- c := exec .Command (cmd , args ... )
45- out , err := c .CombinedOutput ()
46- if err != nil {
47- return out , fmt .Errorf ("`%s %v` failed: %s" , cmd , args , string (out ))
48- }
49- return out , nil
50- }
51-
52- func runJSON (cmd string , args ... string ) ([]byte , error ) {
53- c := exec .Command (cmd , args ... )
54- out , err := c .Output () // only capture stdout
55- if err != nil {
56- if ee , ok := err .(* exec.ExitError ); ok {
57- return nil , fmt .Errorf ("`%s %v` failed: %s" , cmd , args , string (ee .Stderr ))
58- }
59- return nil , fmt .Errorf ("`%s %v` failed: %v" , cmd , args , err )
60- }
61- return out , nil
62- }
63-
64- func validateJobs (jobs map [string ]JobSpec , flake string ) (map [string ]JobSpec , error ) {
65- validated := make (map [string ]JobSpec )
6640
41+ // Perform validation and system inference
6742 for name , spec := range jobs {
68-
69- // Infer Hostname if missing
7043 if spec .Hostname == "" {
7144 spec .Hostname = name
7245 }
@@ -79,19 +52,13 @@ func validateJobs(jobs map[string]JobSpec, flake string) (map[string]JobSpec, er
7952 return nil , fmt .Errorf ("missing 'user' for job: %s" , name )
8053 }
8154
82- // Infer Type if missing
8355 if spec .Type == "" {
84- expr := fmt .Sprintf ("%s#nynxDeployments.%s.output.system" , flake , name )
85- data , err := run ("nix" , "eval" , "--raw" , expr )
86- if err != nil {
87- return nil , fmt .Errorf ("failed to infer type for job '%s': %w" , name , err )
88- }
89- system := strings .TrimSpace (string (data ))
56+ system := strings .TrimSpace (spec .Output )
9057
9158 switch {
9259 case strings .Contains (system , "darwin" ):
9360 spec .Type = "darwin"
94- case strings .Contains (system , "linux " ):
61+ case strings .Contains (system , "nixos " ):
9562 spec .Type = "nixos"
9663 default :
9764 return nil , fmt .Errorf ("could not infer system type for job '%s' from system '%s'" , name , system )
@@ -102,10 +69,31 @@ func validateJobs(jobs map[string]JobSpec, flake string) (map[string]JobSpec, er
10269 return nil , fmt .Errorf ("unsupported system type '%s' for job: %s" , spec .Type , name )
10370 }
10471
105- validated [name ] = spec
72+ jobs [name ] = spec
73+ }
74+
75+ return jobs , nil
76+ }
77+
78+ func run (cmd string , args ... string ) ([]byte , error ) {
79+ c := exec .Command (cmd , args ... )
80+ out , err := c .CombinedOutput ()
81+ if err != nil {
82+ return out , fmt .Errorf ("`%s %v` failed: %s" , cmd , args , string (out ))
10683 }
84+ return out , nil
85+ }
10786
108- return validated , nil
87+ func runJSON (cmd string , args ... string ) ([]byte , error ) {
88+ c := exec .Command (cmd , args ... )
89+ out , err := c .Output () // only capture stdout
90+ if err != nil {
91+ if ee , ok := err .(* exec.ExitError ); ok {
92+ return nil , fmt .Errorf ("`%s %v` failed: %s" , cmd , args , string (ee .Stderr ))
93+ }
94+ return nil , fmt .Errorf ("`%s %v` failed: %v" , cmd , args , err )
95+ }
96+ return out , nil
10997}
11098
11199func validateOperations (jobs map [string ]JobSpec , op string ) ([]string , error ) {
0 commit comments