From 771e7183359bd1eba81526e473fb67dae3bb4dd7 Mon Sep 17 00:00:00 2001
From: dadada <dadada@dadada.li>
Date: Fri, 28 Oct 2022 17:00:34 +0200
Subject: [PATCH] add devshell cli

---
 .envrc        |  4 +++-
 dev-shell.nix | 11 -----------
 devshell.nix  | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 outputs.nix   | 16 +++++++++++++---
 4 files changed, 66 insertions(+), 15 deletions(-)
 delete mode 100644 dev-shell.nix
 create mode 100644 devshell.nix

diff --git a/.envrc b/.envrc
index 11f188f..3140b68 100644
--- a/.envrc
+++ b/.envrc
@@ -1 +1,3 @@
-use flake .#default
+watch_file devshell.nix
+
+use flake
diff --git a/dev-shell.nix b/dev-shell.nix
deleted file mode 100644
index 6bd48b7..0000000
--- a/dev-shell.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ self, pkgs, agenix, deploy-rs, system, ... }:
-let
-  selfApp = app: self.apps."${app}";
-in
-pkgs.mkShell {
-  buildInputs = pkgs.lib.catAttrs system [
-    agenix.defaultPackage
-    deploy-rs.defaultPackage
-    (pkgs.lib.getAttrs [ "deploy" "update" "nixos-switch" ] self.apps)
-  ];
-}
diff --git a/devshell.nix b/devshell.nix
new file mode 100644
index 0000000..e18efe9
--- /dev/null
+++ b/devshell.nix
@@ -0,0 +1,50 @@
+{ pkgs, ... }:
+(pkgs.devshell.mkShell {
+  name = "dadada/nix-config";
+
+  packages = with pkgs; [
+    agenix
+    nixpkgs-fmt
+    nixos-rebuild
+  ];
+
+  commands = [
+    {
+      name = "switch";
+      help = "Switch the configuration on the current system.";
+      command = ''
+        flake=$(nix flake metadata --json ${./.} | jq -r .url)
+        ${pkgs.nixos-rebuild}/bin/nixos-rebuild switch --flake ".#" --use-remote-sudo
+      '';
+      category = "deploy";
+    }
+    {
+      name = "format";
+      help = "Format the project";
+      command = ''
+        nixpkgs-fmt .
+      '';
+      category = "dev";
+    }
+    {
+      name = "update";
+      help = "Update the project";
+      command = ''
+        nix flake update --commit-lock-file
+      '';
+      category = "dev";
+    }
+    {
+      name = "deploy";
+      help = "Deploy this flake";
+      package = "deploy-rs";
+      category = "deploy";
+    }
+    {
+      name = "check";
+      help = "Run checks";
+      category = "dev";
+      command = "nix flake check";
+    }
+  ];
+})
diff --git a/outputs.nix b/outputs.nix
index 42a8d80..caae297 100644
--- a/outputs.nix
+++ b/outputs.nix
@@ -11,6 +11,7 @@
 , scripts
 , recipemd
 , agenix
+, devshell
 , ...
 } @ inputs:
 (flake-utils.lib.eachDefaultSystem (system:
@@ -20,9 +21,18 @@
     formatter = self.formatter.${system};
   in
   {
-    apps = import ./apps.nix (inputs // { inherit pkgs system; });
-
-    devShells.default = pkgs.callPackage ./dev-shell.nix inputs // { inherit pkgs system; };
+    devShells.default =
+      let
+        pkgs = import nixpkgs {
+          inherit system;
+          overlays = [
+            agenix.overlay
+            (final: prev: { deploy-rs = deploy-rs.defaultPackage.${system}; })
+            devshell.overlay
+          ];
+        };
+      in
+      import ./devshell.nix { inherit pkgs; };
 
     formatter = nixpkgs.legacyPackages."${system}".nixpkgs-fmt;