Add nixos module and package overlay

This commit is contained in:
Tim Van Baak 2023-06-20 18:46:41 +00:00
parent 611e30b95d
commit a4883480ae
2 changed files with 37 additions and 20 deletions

View File

@ -2,6 +2,8 @@
This repo contains programs that act as `intake` feed sources. This repo contains programs that act as `intake` feed sources.
The provided NixOS module adds the default overlay to `nixpkgs`, providing each feed source program individually as well as the `intakeSources` package that provides all of them together.
## intake-rss ## intake-rss
A feed source that wraps an RSS or Atom feed. A feed source that wraps an RSS or Atom feed.

View File

@ -6,31 +6,20 @@
outputs = { self, nixpkgs }: outputs = { self, nixpkgs }:
let let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
pypkgs = pkgs.python38Packages;
pythonPackage = name: path: deps: pypkgs.buildPythonPackage {
inherit name;
src = builtins.path { inherit name path; };
format = "pyproject";
propagatedBuildInputs = [ pypkgs.setuptools ] ++ deps;
};
in { in {
packages.${system} = { packages.${system} = let
default = pkgs.symlinkJoin { pkgs = (import nixpkgs {
name = "intake-sources"; inherit system;
paths = [ overlays = [ self.overlays.default ];
self.packages.${system}.intake-rss });
self.packages.${system}.intake-reddit in {
self.packages.${system}.intake-hackernews default = pkgs.intakeSources;
]; inherit (pkgs) intake-rss intake-reddit intake-hackernews;
};
intake-rss = pythonPackage "intake-rss" ./intake-rss [ pypkgs.feedparser ];
intake-reddit = pythonPackage "intake-reddit" ./intake-reddit [];
intake-hackernews = pythonPackage "intake-hackernews" ./intake-hackernews [];
}; };
devShells.${system} = { devShells.${system} = {
python = let python = let
pkgs = nixpkgs.legacyPackages.${system};
pythonEnv = pkgs.python38.withPackages (pypkgs: with pypkgs; [ black feedparser ]); pythonEnv = pkgs.python38.withPackages (pypkgs: with pypkgs; [ black feedparser ]);
in pkgs.mkShell { in pkgs.mkShell {
packages = [ pythonEnv ]; packages = [ pythonEnv ];
@ -39,6 +28,32 @@
''; '';
}; };
}; };
overlays.default = final: prev: let
pythonPackage = name: path: deps: final.python38Packages.buildPythonPackage {
inherit name;
src = builtins.path { inherit name path; };
format = "pyproject";
propagatedBuildInputs = [ final.python38Packages.setuptools ] ++ deps;
};
in
{
intakeSources = final.symlinkJoin {
name = "intake-sources";
paths = [
final.intake-rss
final.intake-reddit
final.intake-hackernews
];
};
intake-rss = pythonPackage "intake-rss" ./intake-rss [ final.python38Packages.feedparser ];
intake-reddit = pythonPackage "intake-reddit" ./intake-reddit [];
intake-hackernews = pythonPackage "intake-hackernews" ./intake-hackernews [];
};
nixosModules.default = {
nixpkgs.overlays = [ self.overlays.default ];
};
}; };
} }