120 lines
3.5 KiB
Nix
120 lines
3.5 KiB
Nix
{
|
|
description = "My Streamdeck";
|
|
|
|
inputs = {
|
|
nixpkgs = {
|
|
url = "nixpkgs/nixos-unstable";
|
|
};
|
|
poetry2nix = {
|
|
url = "github:nix-community/poetry2nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
flake-utils = {
|
|
url = "github:numtide/flake-utils";
|
|
};
|
|
make-shell = {
|
|
url = "github:ursi/nix-make-shell";
|
|
};
|
|
};
|
|
outputs = {
|
|
self,
|
|
nixpkgs,
|
|
poetry2nix,
|
|
flake-utils,
|
|
...
|
|
} @ inputs:
|
|
flake-utils.lib.eachDefaultSystem
|
|
(
|
|
system: let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
};
|
|
inherit (poetry2nix.lib.mkPoetry2Nix {inherit pkgs;}) mkPoetryApplication overrides;
|
|
python = pkgs.python312.withPackages (ps:
|
|
with ps; [
|
|
poetry-core
|
|
]);
|
|
in {
|
|
devShells.default = let
|
|
make-shell = import inputs.make-shell {
|
|
inherit system;
|
|
pkgs = pkgs;
|
|
};
|
|
project = "greendeck";
|
|
in
|
|
make-shell {
|
|
packages = [
|
|
python
|
|
pkgs.poetry
|
|
pkgs.hidapi
|
|
pkgs.libusb1
|
|
];
|
|
env = {
|
|
HIDAPI_HOME = pkgs.hidapi;
|
|
MAGICK_HOME = pkgs.imagemagickBig;
|
|
POETRY_VIRTUALENVS_IN_PROJECT = "true";
|
|
name = project;
|
|
};
|
|
setup = ''
|
|
export PATH=''$(pwd)/.venv/bin:$PATH
|
|
'';
|
|
};
|
|
packages = {
|
|
greendeck = mkPoetryApplication {
|
|
python = pkgs.python311;
|
|
projectDir = ./.;
|
|
groups = [];
|
|
propagatedBuildInputs = [
|
|
pkgs.hidapi
|
|
];
|
|
postPatch = ''
|
|
substituteInPlace greendeck/lib/hidapi/library.py \
|
|
--replace \
|
|
'os.getenv("HIDAPI_LIBRARY")' \
|
|
'"${pkgs.hidapi}/lib/libhidapi-libusb.so.0"'
|
|
'';
|
|
overrides =
|
|
overrides.withDefaults
|
|
(
|
|
self: super: {
|
|
wand =
|
|
super.wand.overridePythonAttrs
|
|
(
|
|
old: {
|
|
postPatch = ''
|
|
substituteInPlace wand/api.py \
|
|
--replace \
|
|
"os.environ.get('MAGICK_HOME')" \
|
|
"'${pkgs.imagemagickBig}'"
|
|
'';
|
|
propagatedBuildInputs = old.propagatedBuildInputs ++ [pkgs.imagemagickBig];
|
|
}
|
|
);
|
|
# attrs = super.pydantic-yaml.overridePythonAttrs (
|
|
# old: {
|
|
# buildInputs = old.buildInputs ++ [ self.hatchling ];
|
|
# }
|
|
# );
|
|
# pytest = super.pytest.overridePythonAttrs (
|
|
# old: {
|
|
# buildInputs = [ self.attrs ];
|
|
# }
|
|
# );
|
|
pydantic-yaml = super.pydantic-yaml.overridePythonAttrs (
|
|
old: {
|
|
buildInputs = old.buildInputs ++ [self.setuptools];
|
|
}
|
|
);
|
|
asyncdbus = super.asyncdbus.overridePythonAttrs (
|
|
old: {
|
|
buildInputs = old.buildInputs ++ [self.setuptools-scm];
|
|
}
|
|
);
|
|
}
|
|
);
|
|
};
|
|
};
|
|
default = self.packages.${system}.greendeck;
|
|
}
|
|
);
|
|
}
|