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;