From a070299ab6c13f7f5e650411107dacfb01dbf7d9 Mon Sep 17 00:00:00 2001 From: Felix Stupp Date: Sun, 29 Jun 2025 19:30:46 +0000 Subject: [PATCH] desktop-client: nixify package --- desktop-client/default.nix | 4 +++ desktop-client/flake.nix | 27 ++++++++++++++++++++ desktop-client/package.nix | 51 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 desktop-client/default.nix create mode 100644 desktop-client/flake.nix create mode 100644 desktop-client/package.nix diff --git a/desktop-client/default.nix b/desktop-client/default.nix new file mode 100644 index 0000000..8127fb6 --- /dev/null +++ b/desktop-client/default.nix @@ -0,0 +1,4 @@ +let + nixpkgs = import { }; +in +nixpkgs.callPackage ./package.nix { } diff --git a/desktop-client/flake.nix b/desktop-client/flake.nix new file mode 100644 index 0000000..0fb388f --- /dev/null +++ b/desktop-client/flake.nix @@ -0,0 +1,27 @@ +{ + description = "Streamlined Desktop Client"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + }; + outputs = + { nixpkgs, ... }: + let + inherit (nixpkgs) lib; + inherit (builtins) attrNames; + inherit (lib.attrsets) genAttrs; + architectures = attrNames nixpkgs.legacyPackages; + forAllSystems = genAttrs architectures; + in + { + packages = forAllSystems ( + system: + let + pkgs = import nixpkgs { inherit system; }; + in + rec { + default = streamlined-client; + streamlined-client = pkgs.callPackage ./package.nix { }; + } + ); + }; +} diff --git a/desktop-client/package.nix b/desktop-client/package.nix new file mode 100644 index 0000000..b64f5b1 --- /dev/null +++ b/desktop-client/package.nix @@ -0,0 +1,51 @@ +{ + lib, + writeText, + python3Packages, + mypy, + ... +}: +let + name = "streamlined-client"; + version = "2025.06.29"; + project_toml = writeText "${name}_pyproject" '' + [build-system] + requires = ["setuptools >= 61.0"] + build-backend = "setuptools.build_meta" + [project] + name = "${name}" + version = "${version}" + requires-python = ">= 3.11" + [project.scripts] + ${name} = "streamlined.client.app:main" + ''; +in +python3Packages.buildPythonPackage { + inherit name version; + format = "pyproject"; + + build-system = lib.singleton python3Packages.setuptools; + + dependencies = with python3Packages; [ + setuptools + ]; + + unpackPhase = '' + cp ${project_toml} ./pyproject.toml + mkdir --parent ./src/streamlined/client + touch ./src/streamlined{,/client}/__init__.py + cp -r ${./app.py} ./src/streamlined/client/app.py + chmod --recursive u=rwX ./src # required so further build steps can create wrapper files + ${lib.getExe mypy} --strict ./src + ''; + + postInstall = '' + mkdir --parent $out/share/applications + STREAMLINED_DESKTOP_TEMPLATE=${./entry.desktop} $out/bin/${name} misc generate-desktop-file > $out/share/applications/${name}_uri.desktop + ''; + + meta = { + description = "Streamlined Desktop Client"; + mainProgram = name; + }; +}