From c422cd61aa0fa9592bf49761e4434f94a530ae11 Mon Sep 17 00:00:00 2001 From: Peter Rice Date: Sun, 30 Mar 2025 14:15:31 -0400 Subject: [PATCH] drop flake-utils dependency --- flake.lock | 34 --------------- flake.nix | 118 +++++++++++++++++++++++++++++------------------------ 2 files changed, 65 insertions(+), 87 deletions(-) diff --git a/flake.lock b/flake.lock index bafdc8f..eaa2a4a 100644 --- a/flake.lock +++ b/flake.lock @@ -1,23 +1,5 @@ { "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1752950548, @@ -56,25 +38,9 @@ }, "root": { "inputs": { - "flake-utils": "flake-utils", "nixpkgs": "nixpkgs", "pyproject-nix": "pyproject-nix" } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index fede1cc..12ade4d 100644 --- a/flake.nix +++ b/flake.nix @@ -4,72 +4,84 @@ inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; inputs.pyproject-nix.url = "github:nix-community/pyproject.nix"; inputs.pyproject-nix.inputs.nixpkgs.follows = "nixpkgs"; - inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { self, nixpkgs, pyproject-nix, - flake-utils, }: - flake-utils.lib.eachDefaultSystem ( - system: - let - pkgs = nixpkgs.legacyPackages.${system}; - pyproject = pyproject-nix.lib.project.loadPyproject { projectRoot = ./.; }; - python = pkgs.python3; - pyprojectPackage = - args: - python.pkgs.buildPythonApplication ( - args // pyproject.renderers.buildPythonPackage { inherit python; } - ); - pyprojectEnv = - extraPackages: - python.withPackages (pyproject.renderers.withPackages { inherit python extraPackages; }); - in - { - packages.qbpm = pyprojectPackage { - nativeBuildInputs = [ - pkgs.scdoc - pkgs.installShellFiles - ]; - nativeCheckInputs = [ python.pkgs.pytestCheckHook ]; - postInstallCheck = "$out/bin/qbpm --help"; - postInstall = '' - _QBPM_COMPLETE=bash_source $out/bin/qbpm > completions/qbpm.bash - _QBPM_COMPLETE=zsh_source $out/bin/qbpm > completions/qbpm.zsh - installShellCompletion completions/qbpm.{bash,zsh,fish} - scdoc < qbpm.1.scd > qbpm.1 - installManPage qbpm.1 - ''; + let + pyproject = pyproject-nix.lib.project.loadPyproject { projectRoot = ./.; }; + forAllSystems = + mkOutputs: + nixpkgs.lib.genAttrs [ + "aarch64-linux" + "aarch64-darwin" + "x86_64-darwin" + "x86_64-linux" + ] (system: mkOutputs nixpkgs.legacyPackages.${system}); + in + { + packages = forAllSystems (pkgs: { + qbpm = pkgs.python3.pkgs.buildPythonApplication ( + pyproject.renderers.buildPythonPackage { python = pkgs.python3; } + // { + nativeBuildInputs = [ + pkgs.scdoc + pkgs.installShellFiles + ]; + nativeCheckInputs = [ pkgs.python3.pkgs.pytestCheckHook ]; + postInstallCheck = "$out/bin/qbpm --help"; + postInstall = '' + _QBPM_COMPLETE=bash_source $out/bin/qbpm > completions/qbpm.bash + _QBPM_COMPLETE=zsh_source $out/bin/qbpm > completions/qbpm.zsh + installShellCompletion completions/qbpm.{bash,zsh,fish} + scdoc < qbpm.1.scd > qbpm.1 + installManPage qbpm.1 + ''; - meta = { - homepage = "https://github.com/pvsr/qbpm"; - changelog = "https://github.com/pvsr/qbpm/blob/main/CHANGELOG.md"; - description = "A profile manager for qutebrowser"; - license = pkgs.lib.licenses.gpl3Plus; - }; + meta = { + homepage = "https://github.com/pvsr/qbpm"; + changelog = "https://github.com/pvsr/qbpm/blob/main/CHANGELOG.md"; + description = "A profile manager for qutebrowser"; + license = pkgs.lib.licenses.gpl3Plus; + }; + } + ); + default = self.packages.${pkgs.system}.qbpm; + }); + + apps = forAllSystems (pkgs: { + qbpm = { + type = "app"; + program = pkgs.lib.getExe self.packages.${pkgs.system}.qbpm; }; - packages.default = self.packages.${system}.qbpm; - apps.qbpm = flake-utils.lib.mkApp { drv = self.packages.${system}.qbpm; }; - apps.default = self.apps.${system}.qbpm; + default = self.apps.${pkgs.system}.qbpm; + }); - devShells.default = pkgs.mkShell { + devShells = forAllSystems (pkgs: { + default = pkgs.mkShell { packages = [ pkgs.ruff - (pyprojectEnv ( - ps: with ps; [ - flit - pytest - mypy - pylsp-mypy - ] + (pkgs.python3.withPackages ( + pyproject.renderers.withPackages { + python = pkgs.python3; + extraPackages = ps: [ + ps.flit + ps.pytest + ps.mypy + ps.pylsp-mypy + ]; + } )) ]; }; + }); - formatter = pkgs.nixfmt-tree.override { + formatter = forAllSystems ( + pkgs: + pkgs.nixfmt-tree.override { runtimeInputs = [ pkgs.ruff ]; settings = { tree-root-file = "flake.nix"; @@ -79,7 +91,7 @@ includes = [ "*.py" ]; }; }; - }; - } - ); + } + ); + }; } -- 2.51.2