From 0396bdb66a8b7e40692e430accdb3e13ef985927 Mon Sep 17 00:00:00 2001 From: Evie Litherland-Smith Date: Mon, 27 May 2024 08:34:36 +0100 Subject: [PATCH] Move nix shell to separate shell.nix Update README for nix shell instructions, refile long lines --- README.md | 31 +++++++++++++++++++++++-------- flake.nix | 16 ++++------------ shell.nix | 15 +++++++++++++++ 3 files changed, 42 insertions(+), 20 deletions(-) create mode 100644 shell.nix diff --git a/README.md b/README.md index a2a0f4e..f3e3b6c 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,13 @@ # Nix Background Upgrade -Upgrade NixOS system (and/or home-manager) in the background, with notification support. +Upgrade NixOS system (and/or home-manager) in the background, with +notification support. -**Early stages of development, subject to change and likely not working at the current stage.** +**Early stages of development, subject to change and likely not +working at the current stage.** ## Install -Clone the repository and install with pip (or preferred Python packaging system): +Clone the repository and install with pip (or preferred Python +packaging system): ```bash git clone https://git.xenia.me.uk/pixelifytica/nix-background-upgrade.git @@ -12,9 +15,12 @@ python3 -m pip install ./nix-background-upgrade ``` ### For development -Project uses [Poetry](https://python-poetry.org/ "Poetry: Python packaging and dependency management tool") to manage dependencies. +Project uses [Poetry](https://python-poetry.org/ "Poetry: Python +packaging and dependency management tool") to manage dependencies. -Install Poetry (see [documentation](https://python-poetry.org/docs/#installation) for more details), for example using `pipx`: +Install Poetry (see +[documentation](https://python-poetry.org/docs/#installation) for more +details), for example using `pipx`: ```bash pipx install poetry @@ -26,14 +32,23 @@ Then install project using `poetry`: poetry install ``` -Python code is formatted using [black](https://pypi.org/project/black/ "The uncompromising code formatter") and [isort](https://pypi.org/project/isort/ "A Python utility / library to sort Python imports"). +Python code is formatted using [black](https://pypi.org/project/black/ +"The uncompromising code formatter") and +[isort](https://pypi.org/project/isort/ "A Python utility / library to +sort Python imports"). #### `pre-commit` -[pre-commit](https://pre-commit.com/ "A framework for managing and maintaining multi-language pre-commit hooks") is used to ensure formatting of new/changed files. Install pre-commit hooks with: +[pre-commit](https://pre-commit.com/ "A framework for managing and +maintaining multi-language pre-commit hooks") is used to ensure +formatting of new/changed files. Install pre-commit hooks with: ```bash pre-commit install --install-hooks ``` ### Nix Flake -Project provides a Nix `flake.nix` to get up and running quickly. +Project provides a Nix `flake.nix` and `shell.nix` to get up and +running quickly. + +Run `nix develop` (Flake) or `nix-shell` (non-Flake) to enter +development shell containing project dependencies. diff --git a/flake.nix b/flake.nix index 8ec3816..8dc0720 100644 --- a/flake.nix +++ b/flake.nix @@ -29,18 +29,10 @@ }; }); - devShells = forAllSystems (system: let - inherit (poetry2nix.lib.mkPoetry2Nix {pkgs = pkgs.${system};}) mkPoetryEnv; - in { - default = pkgs.${system}.mkShellNoCC { - packages = with pkgs.${system}; [ - (mkPoetryEnv { - projectDir = self; - preferWheels = true; - extraPackages = ps: with ps; [python-lsp-server]; - }) - poetry - ]; + devShells = forAllSystems (system: { + default = import ./shell.nix { + pkgs = pkgs.${system}; + inherit (poetry2nix.lib.mkPoetry2Nix {pkgs = pkgs.${system};}) mkPoetryEnv; }; }); }; diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..949c095 --- /dev/null +++ b/shell.nix @@ -0,0 +1,15 @@ +{ + pkgs ? import {}, + mkPoetryEnv ? ((builtins.getFlake "github:nix-community/poetry2nix").lib.mkPoetry2Nix {inherit pkgs;}).mkPoetryEnv, +}: +pkgs.mkShellNoCC { + packages = with pkgs; [ + (mkPoetryEnv { + projectDir = ./.; + preferWheels = true; + editablePackageSources = {nix_background_upgrade = ./src;}; + extraPackages = ps: with ps; [python-lsp-server]; + }) + poetry + ]; +}