qutebrowser profile manager
at main 2.9 kB view raw
1{ 2 description = "A profile manager for qutebrowser"; 3 4 inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 5 inputs.pyproject-nix.url = "github:nix-community/pyproject.nix"; 6 inputs.pyproject-nix.inputs.nixpkgs.follows = "nixpkgs"; 7 8 outputs = 9 { 10 self, 11 nixpkgs, 12 pyproject-nix, 13 }: 14 let 15 pyproject = pyproject-nix.lib.project.loadPyproject { projectRoot = ./.; }; 16 pyprojectPackage = 17 python: args: 18 python.pkgs.buildPythonApplication ( 19 args // pyproject.renderers.buildPythonPackage { inherit python; } 20 ); 21 pyprojectEnv = 22 python: extraPackages: 23 python.withPackages (pyproject.renderers.withPackages { inherit python extraPackages; }); 24 forAllSystems = 25 mkOutputs: 26 nixpkgs.lib.genAttrs [ 27 "aarch64-linux" 28 "aarch64-darwin" 29 "x86_64-darwin" 30 "x86_64-linux" 31 ] (system: mkOutputs nixpkgs.legacyPackages.${system}); 32 in 33 { 34 packages = forAllSystems (pkgs: { 35 qbpm = pyprojectPackage pkgs.python3 { 36 nativeBuildInputs = [ 37 pkgs.scdoc 38 pkgs.installShellFiles 39 ]; 40 nativeCheckInputs = [ pkgs.python3.pkgs.pytestCheckHook ]; 41 postInstallCheck = "$out/bin/qbpm --help"; 42 postInstall = '' 43 _QBPM_COMPLETE=bash_source $out/bin/qbpm > completions/qbpm.bash 44 _QBPM_COMPLETE=zsh_source $out/bin/qbpm > completions/qbpm.zsh 45 installShellCompletion completions/qbpm.{bash,zsh,fish} 46 scdoc < qbpm.1.scd > qbpm.1 47 installManPage qbpm.1 48 ''; 49 50 meta = { 51 homepage = "https://github.com/pvsr/qbpm"; 52 changelog = "https://github.com/pvsr/qbpm/blob/main/CHANGELOG.md"; 53 description = "A profile manager for qutebrowser"; 54 license = pkgs.lib.licenses.gpl3Plus; 55 }; 56 }; 57 default = self.packages.${pkgs.system}.qbpm; 58 }); 59 60 apps = forAllSystems (pkgs: { 61 qbpm = { 62 type = "app"; 63 program = pkgs.lib.getExe self.packages.${pkgs.system}.qbpm; 64 }; 65 default = self.apps.${pkgs.system}.qbpm; 66 }); 67 68 devShells = forAllSystems (pkgs: { 69 default = pkgs.mkShell { 70 packages = [ 71 pkgs.ruff 72 (pyprojectEnv pkgs.python3 (ps: [ 73 ps.flit 74 ps.pytest 75 ps.pytest-cov 76 ps.mypy 77 ps.pylsp-mypy 78 ])) 79 ]; 80 }; 81 }); 82 83 formatter = forAllSystems ( 84 pkgs: 85 pkgs.nixfmt-tree.override { 86 runtimeInputs = [ pkgs.ruff ]; 87 settings = { 88 tree-root-file = "flake.nix"; 89 formatter.ruff = { 90 command = "ruff"; 91 options = [ "format" ]; 92 includes = [ "*.py" ]; 93 }; 94 }; 95 } 96 ); 97 }; 98}