diff --git a/flake.lock b/flake.lock
index aa1dd99..c4d1fe8 100644
--- a/flake.lock
+++ b/flake.lock
@@ -12,11 +12,11 @@
         "rust-overlay": "rust-overlay"
       },
       "locked": {
-        "lastModified": 1673405853,
-        "narHash": "sha256-6Nq9DuOo+gE2I8z5UZaKuumykz2xxZ9JGYmUthOuwSA=",
+        "lastModified": 1677127644,
+        "narHash": "sha256-uDvWTDn08GYBa5/m7xglsj8sA89/wXg5+tHX+a6YLP0=",
         "owner": "ipetkov",
         "repo": "crane",
-        "rev": "b13963c8c18026aa694acd98d14f66d24666f70b",
+        "rev": "ba201b5632834cf757f00ea4c158b102fbad4271",
         "type": "github"
       },
       "original": {
@@ -49,11 +49,11 @@
     "flake-compat": {
       "flake": false,
       "locked": {
-        "lastModified": 1668681692,
-        "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
+        "lastModified": 1673956053,
+        "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
         "owner": "edolstra",
         "repo": "flake-compat",
-        "rev": "009399224d5e398d03b22badca40a37ac85412a1",
+        "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
         "type": "github"
       },
       "original": {
@@ -114,11 +114,11 @@
     },
     "flake-utils": {
       "locked": {
-        "lastModified": 1667395993,
-        "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+        "lastModified": 1676283394,
+        "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
         "owner": "numtide",
         "repo": "flake-utils",
-        "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+        "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
         "type": "github"
       },
       "original": {
@@ -165,11 +165,11 @@
     "fzf-tab": {
       "flake": false,
       "locked": {
-        "lastModified": 1670462165,
-        "narHash": "sha256-bIlnYKjjOC6h5/Gg7xBg+i2TBk+h82wmHgAJPhzMsek=",
+        "lastModified": 1675951080,
+        "narHash": "sha256-yN1qmuwWNkWHF9ujxZq2MiroeASh+KQiCLyK5ellnB8=",
         "owner": "Aloxaf",
         "repo": "fzf-tab",
-        "rev": "ffb7b776be492333b94cf0be87456b62a1f26e2f",
+        "rev": "69024c27738138d6767ea7246841fdfc6ce0d0eb",
         "type": "github"
       },
       "original": {
@@ -203,11 +203,11 @@
     "gtimelog": {
       "flake": false,
       "locked": {
-        "lastModified": 1624374909,
-        "narHash": "sha256-Ls6FpmssAhheVEsi/BQgUb41V7eE7yMdkwt+mPWkRmI=",
+        "lastModified": 1658868134,
+        "narHash": "sha256-KR0pt2naL/1GWiTLQQPalfhrzj9rctjEA7BwARmfxDE=",
         "ref": "refs/heads/master",
-        "rev": "ae1f65c2088c6ab167b3cf142f80bd04720d1886",
-        "revCount": 459,
+        "rev": "80112a7de035db3fced89be242a1878a9936e12f",
+        "revCount": 460,
         "type": "git",
         "url": "https://gitlab.collabora.com/collabora/gtimelog.git"
       },
@@ -224,11 +224,11 @@
         "utils": "utils"
       },
       "locked": {
-        "lastModified": 1674250603,
-        "narHash": "sha256-SBolFspxBHpW3hCCDNAFXUiO2mucmkVmf17UmSIK3Cs=",
+        "lastModified": 1677104801,
+        "narHash": "sha256-2V5nKOYVFMYlseYdDKiEaww2xqcE0GtS1ax3SoUX99I=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "275ab728912006eecb549338a50f24f294a7cfb7",
+        "rev": "4295fdfa6b0005c32f2e1f0b732faf5810c1bc7f",
         "type": "github"
       },
       "original": {
@@ -239,11 +239,11 @@
     },
     "impermanence": {
       "locked": {
-        "lastModified": 1668668915,
-        "narHash": "sha256-QjY4ZZbs9shwO4LaLpvlU2bO9J1juYhO9NtV3nrbnYQ=",
+        "lastModified": 1675359654,
+        "narHash": "sha256-FPxzuvJkcO49g4zkWLSeuZkln54bLoTtrggZDJBH90I=",
         "owner": "nix-community",
         "repo": "impermanence",
-        "rev": "5df9108b346f8a42021bf99e50de89c9caa251c3",
+        "rev": "6138eb8e737bffabd4c8fc78ae015d4fd6a7e2fd",
         "type": "github"
       },
       "original": {
@@ -292,11 +292,11 @@
         "rust-overlay": "rust-overlay_2"
       },
       "locked": {
-        "lastModified": 1674167873,
-        "narHash": "sha256-fhF1l3tPRbf+YnqC1h4kHnZwjx7tbjOdz1B6L06hwxU=",
+        "lastModified": 1676939038,
+        "narHash": "sha256-mrgx8hLguzZnVYmkehSuiTyaeg2r/3vIQREYPISdQsA=",
         "owner": "nix-community",
         "repo": "lanzaboote",
-        "rev": "65896e03fa64c5a430ced5a41c1cb403f0b6f090",
+        "rev": "5af69f0d6306f8239b3ecd661a37c5ee0a5c9173",
         "type": "github"
       },
       "original": {
@@ -329,11 +329,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1673752441,
-        "narHash": "sha256-/g4ImZWV05CrXRWTSJsda6ztIp7LAPxs2L6RCrbQ66U=",
+        "lastModified": 1676778053,
+        "narHash": "sha256-5/NghN1FCFpwCWp6Q3W4Of3keKYx/RgCNFuUmk6YmAA=",
         "owner": "Mic92",
         "repo": "nix-index-database",
-        "rev": "391180f77505c1c8cdd45fe1a59dc89d3e40300a",
+        "rev": "688adea5ecff698a49461f77d649cc854b805dbc",
         "type": "github"
       },
       "original": {
@@ -344,11 +344,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1674096995,
-        "narHash": "sha256-/vw7At/SztpZjTeM11foA7YdOFmdwSn+ARo8oy+mlUU=",
+        "lastModified": 1677080879,
+        "narHash": "sha256-0SjW4/d3Rkw6C7hHZ5lxT4r6Pw9vzQb6Il6zYWwe2Bo=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "676c80dcc2f0ba780c8ab204f92c5abd69fa1245",
+        "rev": "f5dad40450d272a1ea2413f4a67ac08760649e89",
         "type": "github"
       },
       "original": {
@@ -409,11 +409,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1673740915,
-        "narHash": "sha256-MMH8zONfqahgHly3K8/A++X34800rajA/XgZ2DzNL/M=",
+        "lastModified": 1676771332,
+        "narHash": "sha256-YYn2K0AwyIyCzvP7C+xzEt64rlCRPyrllRPGNNu+50M=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "7c65528c3f8462b902e09d1ccca23bb9034665c2",
+        "rev": "f27a4e2f6a3a23b843ca1c736e6043fb8b99acc1",
         "type": "github"
       },
       "original": {
@@ -446,11 +446,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1673793037,
-        "narHash": "sha256-ucCgyG4lpX2nVntqmDMUT9V3X61QMj53tllfAgS1HKo=",
+        "lastModified": 1676544996,
+        "narHash": "sha256-8bdPgQY+0fiFsmNxIwttWhQb7Efqq7//WcQN2KWgECc=",
         "owner": "numtide",
         "repo": "nixpkgs-unfree",
-        "rev": "f5476e5e46466e7cfe63f69b3d7f8a64b463e705",
+        "rev": "61c0b870bedc4ef5b745e71f34de8a1ed58148af",
         "type": "github"
       },
       "original": {
@@ -585,11 +585,11 @@
     "rust-analyzer-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1674491573,
-        "narHash": "sha256-1hMPOn2dlMfWRWvuaWcSxNquKpvjGVXq2rVw6UJy75Q=",
+        "lastModified": 1676976502,
+        "narHash": "sha256-D0l5hvE4IFUqspKeorawIlLQRMKqCkMAhZ58KjDXJl8=",
         "owner": "rust-lang",
         "repo": "rust-analyzer",
-        "rev": "c552e5a55f13b2f08d506bb46fb74dbc11702d0d",
+        "rev": "27239fbb58a115915ffc1ce65ededc951eb00fd2",
         "type": "github"
       },
       "original": {
@@ -611,11 +611,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1672712534,
-        "narHash": "sha256-8S0DdMPcbITnlOu0uA81mTo3hgX84wK8S9wS34HEFY4=",
+        "lastModified": 1676437770,
+        "narHash": "sha256-mhJye91Bn0jJIE7NnEywGty/U5qdELfsT8S+FBjTdG4=",
         "owner": "oxalica",
         "repo": "rust-overlay",
-        "rev": "69fb7bf0a8c40e6c4c197fa1816773774c8ac59f",
+        "rev": "a619538647bd03e3ee1d7b947f7c11ff289b376e",
         "type": "github"
       },
       "original": {
@@ -657,11 +657,11 @@
         "nixpkgs-stable": "nixpkgs-stable_2"
       },
       "locked": {
-        "lastModified": 1673752321,
-        "narHash": "sha256-EFfXY1ZHJq4FNaNQA9x0djtu/jiOhBbT0Xi+BT06cJw=",
+        "lastModified": 1676959847,
+        "narHash": "sha256-KZS6sIsMXiNyN7jW45MrEo95iEXj6nMLKvxgxO181no=",
         "owner": "Mic92",
         "repo": "sops-nix",
-        "rev": "e18eefd2b133a58309475298052c341c08470717",
+        "rev": "2c5828439d718a6cddd9a511997d9ac7626a4aff",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index f2aac48..ba8ab1f 100644
--- a/flake.nix
+++ b/flake.nix
@@ -215,8 +215,9 @@
                 (map (evalTrace nixosSystem.config) nixosSystem.config.internal.traces)
                 nixosSystem;
             };
+          inherit pkgs;
         } // (import ./overlays/packages.nix
-          { inherit (inputs) fenix crane; }
+          { inherit (inputs) fenix crane nixpkgs-minion; }
           pkgs
           pkgs);
         devShell = pkgs.mkShell {
diff --git a/overlays/packages.nix b/overlays/packages.nix
index 3603c08..4cfa934 100644
--- a/overlays/packages.nix
+++ b/overlays/packages.nix
@@ -1,4 +1,4 @@
-{ fenix, crane }: final: prev:
+{ fenix, crane, nixpkgs-minion }: final: prev:
 let
   lib = prev.lib;
   utils = import ../utils lib;
@@ -22,6 +22,7 @@
         (lib.fold lib.mergeAttrs
           {
             packageSets = {
+              minion = nixpkgs-minion.legacyPackages.${prev.system};
               fenix = fenix.packages.${prev.system};
             };
             _tooling = {
diff --git a/packages/nixopsUnstable.nix b/packages/nixopsUnstable.nix
new file mode 100644
index 0000000..2a8fd61
--- /dev/null
+++ b/packages/nixopsUnstable.nix
@@ -0,0 +1 @@
+{ packageSets, ... }: packageSets.minion.nixopsUnstable
diff --git a/patches/nix/5567-make-installables-expr-context.patch b/patches/nix/5567-make-installables-expr-context-2.patch
similarity index 65%
rename from patches/nix/5567-make-installables-expr-context.patch
rename to patches/nix/5567-make-installables-expr-context-2.patch
index afefb17..112d7a2 100644
--- a/patches/nix/5567-make-installables-expr-context.patch
+++ b/patches/nix/5567-make-installables-expr-context-2.patch
@@ -1,18 +1,18 @@
-From 519d541fdc71508793ece6e087d2c1a231378558 Mon Sep 17 00:00:00 2001
+From a54baf53d934a3c95bcc42bdbeaefca3cc12aab7 Mon Sep 17 00:00:00 2001
 From: Skyler Grey <skyler3665@gmail.com>
 Date: Wed, 20 Jul 2022 14:45:45 +0100
-Subject: [PATCH 01/10] Make --expr always include nixpkgs
+Subject: [PATCH 01/11] Make --expr always include nixpkgs
 
 ---
  src/libcmd/installables.cc | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc
-index 59162c4df03..7dc3f7435ee 100644
+index 60d6e9dc08c..e065f655452 100644
 --- a/src/libcmd/installables.cc
 +++ b/src/libcmd/installables.cc
-@@ -778,8 +778,11 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
-         } else if (file)
+@@ -788,8 +788,11 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+         else if (file)
              state->evalFile(lookupFileArg(*state, *file), *vFile);
          else {
 -            auto e = state->parseExprFromString(*expr, absPath("."));
@@ -26,20 +26,20 @@
  
          for (auto & s : ss) {
 
-From 29b83de5671901e5e8755c17b840139a6f8650db Mon Sep 17 00:00:00 2001
+From 8e2457a62ab209e1f111ab71aeaa694ad35fd0fd Mon Sep 17 00:00:00 2001
 From: Skyler Grey <skyler3665@gmail.com>
 Date: Wed, 20 Jul 2022 14:46:17 +0100
-Subject: [PATCH 02/10] Stop --expr requiring --impure flag
+Subject: [PATCH 02/11] Stop --expr requiring --impure flag
 
 ---
  src/libcmd/installables.cc | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc
-index 7dc3f7435ee..43e759b3e93 100644
+index e065f655452..fc83d6e35b8 100644
 --- a/src/libcmd/installables.cc
 +++ b/src/libcmd/installables.cc
-@@ -767,7 +767,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -776,7 +776,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
              throw UsageError("'--file' and '--expr' are exclusive");
  
          // FIXME: backward compatibility hack
@@ -49,20 +49,20 @@
          auto state = getEvalState();
          auto vFile = state->allocValue();
 
-From 9e9d28496a7216a0e2893ac0eb05a8c45d898c95 Mon Sep 17 00:00:00 2001
+From c2f7a39313ab34dc208fddc0a2467e7739bc3754 Mon Sep 17 00:00:00 2001
 From: Skyler Grey <skyler3665@gmail.com>
 Date: Wed, 20 Jul 2022 23:51:16 +0100
-Subject: [PATCH 03/10] Make nix shell take installables as context
+Subject: [PATCH 03/11] Make nix shell take installables as context
 
 ---
  src/libcmd/installables.cc | 46 +++++++++++++++++++++++++++++++++++++-
  1 file changed, 45 insertions(+), 1 deletion(-)
 
 diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc
-index 43e759b3e93..1abad72e333 100644
+index fc83d6e35b8..477aa8cc760 100644
 --- a/src/libcmd/installables.cc
 +++ b/src/libcmd/installables.cc
-@@ -779,10 +779,54 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -789,10 +789,54 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
              state->evalFile(lookupFileArg(*state, *file), *vFile);
          else {
              Strings e = {};
@@ -119,20 +119,20 @@
  
          for (auto & s : ss) {
 
-From e3045be11cbac91a5e65ef42e42e320e6689e713 Mon Sep 17 00:00:00 2001
+From 2aaef9cd16698dd4c574c0c0fe6bc03394ef2296 Mon Sep 17 00:00:00 2001
 From: Skyler Grey <skyler3665@gmail.com>
 Date: Wed, 20 Jul 2022 23:56:09 +0100
-Subject: [PATCH 04/10] Update documentation to match nix shell change
+Subject: [PATCH 04/11] Update documentation to match nix shell change
 
 ---
  src/nix/nix.md | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 diff --git a/src/nix/nix.md b/src/nix/nix.md
-index d48682a9432..b5bee708451 100644
+index db60c59ffaf..3491b38af23 100644
 --- a/src/nix/nix.md
 +++ b/src/nix/nix.md
-@@ -139,8 +139,13 @@ the Nix store. Here are the recognised types of installables:
+@@ -138,8 +138,13 @@ the Nix store. Here are the recognised types of installables:
  * **Nix expressions**: `--expr '(import <nixpkgs> {}).hello.overrideDerivation (prev: { name = "my-hello"; })'`.
  
    When the `--expr` option is given, all installables are interpreted
@@ -149,20 +149,20 @@
  For most commands, if no installable is specified, the default is `.`,
  i.e. Nix will operate on the default flake output attribute of the
 
-From 4d6c60a8187d9904312d062a19e61ca5c338bc94 Mon Sep 17 00:00:00 2001
+From 340051b4f71957bc93ec7ac6511657c4de6dc0ce Mon Sep 17 00:00:00 2001
 From: Skyler Grey <skyler3665@gmail.com>
 Date: Thu, 21 Jul 2022 21:49:44 +0100
-Subject: [PATCH 05/10] Only build . with expr if it'd be a default installable
+Subject: [PATCH 05/11] Only build . with expr if it'd be a default installable
 
 ---
  src/libcmd/installables.cc | 16 +++++++++-------
  1 file changed, 9 insertions(+), 7 deletions(-)
 
 diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc
-index 1abad72e333..15679590e39 100644
+index 477aa8cc760..e82103422bf 100644
 --- a/src/libcmd/installables.cc
 +++ b/src/libcmd/installables.cc
-@@ -820,13 +820,15 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -830,13 +830,15 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
              auto parsed = state->parseExprFromString(concatStringsSep(";", e), absPath("."));
              state->eval(parsed, *vFile);
  
@@ -186,10 +186,10 @@
  
          for (auto & s : ss) {
 
-From 14084facbd5654fa9e406ce0391c0544f3a42763 Mon Sep 17 00:00:00 2001
+From 01426c7c8d76b57fd342d7e2ce4390c9dba92c27 Mon Sep 17 00:00:00 2001
 From: Skyler Grey <skyler3665@gmail.com>
 Date: Fri, 22 Jul 2022 14:28:31 +0100
-Subject: [PATCH 06/10] Do not include implicit installables with expr
+Subject: [PATCH 06/11] Do not include implicit installables with expr
 
 ---
  src/libcmd/command.hh      | 2 +-
@@ -210,10 +210,10 @@
      std::shared_ptr<Installable> parseInstallable(
          ref<Store> store, const std::string & installable);
 diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc
-index 15679590e39..fee419b240a 100644
+index e82103422bf..5c11c976299 100644
 --- a/src/libcmd/installables.cc
 +++ b/src/libcmd/installables.cc
-@@ -754,7 +754,7 @@ FlakeRef InstallableFlake::nixpkgsFlakeRef() const
+@@ -763,7 +763,7 @@ FlakeRef InstallableFlake::nixpkgsFlakeRef() const
  }
  
  std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
@@ -222,7 +222,7 @@
  {
      std::vector<std::shared_ptr<Installable>> result;
  
-@@ -780,7 +780,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -790,7 +790,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
          else {
              Strings e = {};
  
@@ -231,7 +231,7 @@
                  std::exception_ptr ex;
  
                  if (s.find('/') != std::string::npos) {
-@@ -827,8 +827,8 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -837,8 +837,8 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
                          state, *this, vFile,
                          prefix == "." ? "" : prefix,
                          outputsSpec));
@@ -241,7 +241,7 @@
          }
  
          for (auto & s : ss) {
-@@ -1094,11 +1094,12 @@ void InstallablesCommand::prepare()
+@@ -1132,11 +1132,12 @@ void InstallablesCommand::prepare()
  
  Installables InstallablesCommand::load() {
      Installables installables;
@@ -256,10 +256,10 @@
  
  std::vector<std::string> InstallablesCommand::getFlakesForCompletion()
 
-From f82a172cfe18af507fadac565223769af2a39d86 Mon Sep 17 00:00:00 2001
+From 82904ee72f245f4b901f8f9b94c4e9caff2b53be Mon Sep 17 00:00:00 2001
 From: Skyler Grey <skyler3665@gmail.com>
 Date: Fri, 22 Jul 2022 20:13:48 +0100
-Subject: [PATCH 07/10] Allow running --expr purely again
+Subject: [PATCH 07/11] Allow running --expr purely again
 
 ---
  src/libcmd/installables.cc | 15 ++++++++-------
@@ -267,10 +267,10 @@
  2 files changed, 8 insertions(+), 9 deletions(-)
 
 diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc
-index fee419b240a..3073b153568 100644
+index 5c11c976299..e54d4107353 100644
 --- a/src/libcmd/installables.cc
 +++ b/src/libcmd/installables.cc
-@@ -767,7 +767,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -776,7 +776,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
              throw UsageError("'--file' and '--expr' are exclusive");
  
          // FIXME: backward compatibility hack
@@ -279,7 +279,7 @@
  
          auto state = getEvalState();
          auto vFile = state->allocValue();
-@@ -780,7 +780,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -790,7 +790,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
          else {
              Strings e = {};
  
@@ -288,7 +288,7 @@
                  std::exception_ptr ex;
  
                  if (s.find('/') != std::string::npos) {
-@@ -796,7 +796,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -806,7 +806,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
  
                  try {
                      auto [flakeRef, fragment, outputsSpec] = parseFlakeRefWithFragmentAndOutputsSpec(s, absPath("."));
@@ -297,7 +297,7 @@
                              this,
                              getEvalState(),
                              std::move(flakeRef),
-@@ -804,10 +804,11 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -814,10 +814,11 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
                              outputsSpec,
                              getDefaultFlakeAttrPaths(),
                              getDefaultFlakeAttrPathPrefixes(),
@@ -314,10 +314,10 @@
                  } catch (...) {
                      ex = std::current_exception();
 diff --git a/src/nix/nix.md b/src/nix/nix.md
-index b5bee708451..33d618d88ad 100644
+index 3491b38af23..2fdaf258643 100644
 --- a/src/nix/nix.md
 +++ b/src/nix/nix.md
-@@ -145,8 +145,6 @@ the Nix store. Here are the recognised types of installables:
+@@ -144,8 +144,6 @@ the Nix store. Here are the recognised types of installables:
    # nix shell nixpkgs#python3 --expr 'withPackages(pyPkgs: with pyPkgs; [ numpy ])'
    ```
  
@@ -327,20 +327,20 @@
  i.e. Nix will operate on the default flake output attribute of the
  flake in the current directory.
 
-From 91da7d50e7ba52b846fa50b8e106d723380b08d5 Mon Sep 17 00:00:00 2001
+From 60aeb420787c6276e26df6c73bd33d2a870590ef Mon Sep 17 00:00:00 2001
 From: Skyler Grey <skyler3665@gmail.com>
 Date: Sat, 23 Jul 2022 11:46:07 +0100
-Subject: [PATCH 08/10] Fix builtins.currentSystem in pure evaluation
+Subject: [PATCH 08/11] Fix builtins.currentSystem in pure evaluation
 
 ---
  src/libcmd/installables.cc | 15 ++++++++++++---
  1 file changed, 12 insertions(+), 3 deletions(-)
 
 diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc
-index 3073b153568..d20ce6ed618 100644
+index e54d4107353..95a31dba289 100644
 --- a/src/libcmd/installables.cc
 +++ b/src/libcmd/installables.cc
-@@ -806,9 +806,18 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -816,9 +816,18 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
                              getDefaultFlakeAttrPathPrefixes(),
                              lockFlags);
                      auto lockedFlake = installableFlake.getLockedFlake()->flake.lockedRef;
@@ -363,20 +363,20 @@
                  } catch (...) {
                      ex = std::current_exception();
 
-From a126a92e4f2c6087bf46dfb8c4acd5c34e5422eb Mon Sep 17 00:00:00 2001
+From ed9400560c79657b9d7a2e2952fb4effc6453928 Mon Sep 17 00:00:00 2001
 From: Skyler Grey <skyler3665@gmail.com>
 Date: Sun, 24 Jul 2022 01:30:00 +0100
-Subject: [PATCH 09/10] Gracefully handle missing attributes
+Subject: [PATCH 09/11] Gracefully handle missing attributes
 
 ---
  src/libcmd/installables.cc | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc
-index d20ce6ed618..9c8a848d641 100644
+index 95a31dba289..419fc90c96a 100644
 --- a/src/libcmd/installables.cc
 +++ b/src/libcmd/installables.cc
-@@ -816,7 +816,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -826,7 +826,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
                              path = "." + path;
                          }
  
@@ -386,20 +386,20 @@
                      continue;
                  } catch (...) {
 
-From c7302640120ff9fff6c3a653c22fa678efbeb903 Mon Sep 17 00:00:00 2001
+From 3fba464fe76656d54136ab757fc7ede579254a4e Mon Sep 17 00:00:00 2001
 From: Skyler Grey <skyler3665@gmail.com>
 Date: Sun, 24 Jul 2022 07:11:37 +0100
-Subject: [PATCH 10/10] Fix including a flake without any attrpath
+Subject: [PATCH 10/11] Fix including a flake without any attrpath
 
 ---
  src/libcmd/installables.cc | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc
-index 9c8a848d641..bdc3830956a 100644
+index 419fc90c96a..bad324b424c 100644
 --- a/src/libcmd/installables.cc
 +++ b/src/libcmd/installables.cc
-@@ -816,7 +816,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+@@ -826,7 +826,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
                              path = "." + path;
                          }
  
@@ -408,3 +408,99 @@
                      }
                      continue;
                  } catch (...) {
+
+From 8ad1e705394a304db09935c207a964de33c02c08 Mon Sep 17 00:00:00 2001
+From: Skyler Grey <skyler3665@gmail.com>
+Date: Fri, 24 Feb 2023 01:09:56 +0000
+Subject: [PATCH 11/11] Fix regressions in the patch due to nix changes
+
+---
+ src/libcmd/installables.cc | 48 +++++++++++++++++++++++++++++++++-----
+ 1 file changed, 42 insertions(+), 6 deletions(-)
+
+diff --git a/src/libcmd/installables.cc b/src/libcmd/installables.cc
+index bad324b424c..57c2492c106 100644
+--- a/src/libcmd/installables.cc
++++ b/src/libcmd/installables.cc
+@@ -791,11 +791,47 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+             Strings e = {};
+ 
+             for (auto & s : explicitInstallables.value_or(std::vector<std::string>())) {
++
++                auto [prefix_, extendedOutputsSpec_] = ExtendedOutputsSpec::parse(s);
++                // To avoid clang's pedantry
++                auto prefix = std::move(prefix_);
++                auto extendedOutputsSpec = std::move(extendedOutputsSpec_);
+                 std::exception_ptr ex;
+ 
+-                if (s.find('/') != std::string::npos) {
++                if (prefix.find('/') != std::string::npos) {
+                     try {
+-                        result.push_back(std::make_shared<InstallableStorePath>(store, store->followLinksToStorePath(s)));
++                        auto derivedPath = std::visit(overloaded {
++                            // If the user did not use ^, we treat the output more liberally.
++                            [&](const ExtendedOutputsSpec::Default &) -> DerivedPath {
++                                // First, we accept a symlink chain or an actual store path.
++                                auto storePath = store->followLinksToStorePath(prefix);
++                                // Second, we see if the store path ends in `.drv` to decide what sort
++                                // of derived path they want.
++                                //
++                                // This handling predates the `^` syntax. The `^*` in
++                                // `/nix/store/hash-foo.drv^*` unambiguously means "do the
++                                // `DerivedPath::Built` case", so plain `/nix/store/hash-foo.drv` could
++                                // also unambiguously mean "do the DerivedPath::Opaque` case".
++                                //
++                                // Issue #7261 tracks reconsidering this `.drv` dispatching.
++                                return storePath.isDerivation()
++                                    ? (DerivedPath) DerivedPath::Built {
++                                        .drvPath = std::move(storePath),
++                                        .outputs = OutputsSpec::All {},
++                                    }
++                                    : (DerivedPath) DerivedPath::Opaque {
++                                        .path = std::move(storePath),
++                                    };
++                            },
++                            // If the user did use ^, we just do exactly what is written.
++                            [&](const ExtendedOutputsSpec::Explicit & outputSpec) -> DerivedPath {
++                                return DerivedPath::Built {
++                                    .drvPath = store->parseStorePath(prefix),
++                                    .outputs = outputSpec,
++                                };
++                            },
++                        }, extendedOutputsSpec.raw());
++                        result.push_back(std::make_shared<InstallableStorePath>(store, std::move(derivedPath)));
+                         continue;
+                     } catch (BadStorePath &) {
+                     } catch (...) {
+@@ -805,7 +841,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+                 }
+ 
+                 try {
+-                    auto [flakeRef, fragment, outputsSpec] = parseFlakeRefWithFragmentAndOutputsSpec(s, absPath("."));
++                    auto [flakeRef, fragment, outputsSpec] = parseFlakeRefWithFragmentAndExtendedOutputsSpec(s, absPath("."));
+                     auto installableFlake = InstallableFlake(
+                             this,
+                             getEvalState(),
+@@ -826,7 +862,7 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+                             path = "." + path;
+                         }
+ 
+-                        e.push_back(str(boost::format("with (builtins.getFlake \"%1%\").outputs%2%%3% or {}") % lockedFlake.to_string() % path % (fragment != "" ? "." + fragment : "")));
++                        e.push_back(boost::str(boost::format("with (builtins.getFlake \"%1%\").outputs%2%%3% or {}") % lockedFlake.to_string() % path % (fragment != "" ? "." + fragment : "")));
+                     }
+                     continue;
+                 } catch (...) {
+@@ -841,11 +877,11 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
+             state->eval(parsed, *vFile);
+ 
+             if (!ss.empty()) {
+-                auto [prefix, outputsSpec] = parseOutputsSpec(".");
++                auto [prefix, outputsSpec] = ExtendedOutputsSpec::parse(".");
+                 result.push_back(
+                     std::make_shared<InstallableAttrPath>(
+                         state, *this, vFile,
+-                        prefix == "." ? "" : prefix,
++                        prefix == "." ? "" : std::string { prefix },
+                         outputsSpec));
+             }
+             return result;
