@@ -70,7 +70,32 @@ impl FromArgMatches for Installable {
7070 } ) ;
7171 }
7272
73- // env var fallacks
73+ // env var fallbacks
74+
75+ // Check for command-specific flake env vars first
76+ if let Ok ( subcommand) = env:: var ( "NH_CURRENT_COMMAND" ) {
77+ if subcommand == "os" {
78+ if let Ok ( f) = env:: var ( "NH_OS_FLAKE" ) {
79+ let mut elems = f. splitn ( 2 , '#' ) ;
80+ return Ok ( Self :: Flake {
81+ reference : elems. next ( ) . unwrap ( ) . to_owned ( ) ,
82+ attribute : parse_attribute (
83+ elems. next ( ) . map ( |s| s. to_string ( ) ) . unwrap_or_default ( ) ,
84+ ) ,
85+ } ) ;
86+ }
87+ } else if subcommand == "home" {
88+ if let Ok ( f) = env:: var ( "NH_HOME_FLAKE" ) {
89+ let mut elems = f. splitn ( 2 , '#' ) ;
90+ return Ok ( Self :: Flake {
91+ reference : elems. next ( ) . unwrap ( ) . to_owned ( ) ,
92+ attribute : parse_attribute (
93+ elems. next ( ) . map ( |s| s. to_string ( ) ) . unwrap_or_default ( ) ,
94+ ) ,
95+ } ) ;
96+ }
97+ }
98+ }
7499
75100 if let Ok ( f) = env:: var ( "NH_FLAKE" ) {
76101 let mut elems = f. splitn ( 2 , '#' ) ;
@@ -80,10 +105,26 @@ impl FromArgMatches for Installable {
80105 } ) ;
81106 }
82107
108+ if let Ok ( f) = env:: var ( "NH_OS_FLAKE" ) {
109+ let mut elems = f. splitn ( 2 , '#' ) ;
110+ return Ok ( Self :: Flake {
111+ reference : elems. next ( ) . unwrap ( ) . to_owned ( ) ,
112+ attribute : parse_attribute ( elems. next ( ) . map ( |s| s. to_string ( ) ) . unwrap_or_default ( ) ) ,
113+ } ) ;
114+ }
115+
116+ if let Ok ( f) = env:: var ( "NH_HOME_FLAKE" ) {
117+ let mut elems = f. splitn ( 2 , '#' ) ;
118+ return Ok ( Self :: Flake {
119+ reference : elems. next ( ) . unwrap ( ) . to_owned ( ) ,
120+ attribute : parse_attribute ( elems. next ( ) . map ( |s| s. to_string ( ) ) . unwrap_or_default ( ) ) ,
121+ } ) ;
122+ }
123+
83124 if let Ok ( f) = env:: var ( "NH_FILE" ) {
84125 return Ok ( Self :: File {
85126 path : PathBuf :: from ( f) ,
86- attribute : parse_attribute ( env:: var ( "NH_ATTR " ) . unwrap_or_default ( ) ) ,
127+ attribute : parse_attribute ( env:: var ( "NH_ATTRP " ) . unwrap_or_default ( ) ) ,
87128 } ) ;
88129 }
89130
@@ -124,11 +165,13 @@ Nix accepts various kinds of installables:
124165[FLAKEREF[#ATTRPATH]]
125166 Flake reference with an optional attribute path.
126167 [env: NH_FLAKE={}]
168+ [env: NH_OS_FLAKE={}]
169+ [env: NH_HOME_FLAKE={}]
127170
128171{}, {} <FILE> [ATTRPATH]
129172 Path to file with an optional attribute path.
130173 [env: NH_FILE={}]
131- [env: NH_ATTR ={}]
174+ [env: NH_ATTRP ={}]
132175
133176{}, {} <EXPR> [ATTRPATH]
134177 Nix expression with an optional attribute path.
@@ -137,10 +180,12 @@ Nix accepts various kinds of installables:
137180 Path or symlink to a /nix/store path
138181"# ,
139182 env:: var( "NH_FLAKE" ) . unwrap_or_default( ) ,
183+ env:: var( "NH_OS_FLAKE" ) . unwrap_or_default( ) ,
184+ env:: var( "NH_HOME_FLAKE" ) . unwrap_or_default( ) ,
140185 "-f" . yellow( ) ,
141186 "--file" . yellow( ) ,
142187 env:: var( "NH_FILE" ) . unwrap_or_default( ) ,
143- env:: var( "NH_ATTRP " ) . unwrap_or_default( ) ,
188+ env:: var( "NH_ATTR " ) . unwrap_or_default( ) ,
144189 "-e" . yellow( ) ,
145190 "--expr" . yellow( ) ,
146191 ) ) ,
0 commit comments