{ description = "fragdenrat package and service"; inputs.nixpkgs.url = "nixpkgs/nixos-25.05"; outputs = { self, nixpkgs }: let systems = [ "x86_64-linux" "i686-linux" "aarch64-linux" ]; forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system); # Import nixpkgs with our overlay for each system. nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; overlays = [ self.overlay ]; } ); in { overlay = final: prev: { fragdenrat = with final; python3Packages.buildPythonApplication rec { pname = "fragdenrat"; version = "0.1.0"; format = "other"; src = self; dontBuild = true; dependencies = with python3Packages; [ django requests jinja2 ]; installPhase = '' mkdir -p $out/share # Project code cp -r ${./fragdenrat} $out/share/fragdenrat # Django manage helper install -Dm755 ${./manage.py} $out/bin/fragdenrat-manage # Templates and static assets if [ -d ./templates ]; then cp -r ./templates $out/share/fragdenrat/ fi if [ -d ./assets ]; then cp -r ./assets $out/share/fragdenrat/ fi ''; passthru.pythonPath = python3Packages.makePythonPath dependencies; meta.mainProgram = "fragdenrat-manage"; }; }; packages = forAllSystems (system: { inherit (nixpkgsFor.${system}) fragdenrat; }); defaultPackage = forAllSystems (system: self.packages.${system}.fragdenrat); devShells = forAllSystems (system: let pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; }; in pkgs.mkShell { buildInputs = with pkgs; with python3Packages; [ python django requests beautifulsoup4 ]; shellHook = '' export DJANGO_SETTINGS_MODULE=fragdenrat.settings export PYTHONPATH=$PWD:$PYTHONPATH ''; }); # fragdenrat service module nixosModule = (import ./module.nix); }; }