upds
This commit is contained in:
383
WORKAROUNDS.md
Normal file
383
WORKAROUNDS.md
Normal file
@@ -0,0 +1,383 @@
|
||||
# Workarounds, Overrides & Temporary Fixes
|
||||
|
||||
This document tracks all known workarounds, patches, and temporary overrides in this flake.
|
||||
Each entry includes the file location, reason, and whether it is still required.
|
||||
|
||||
**Status legend:**
|
||||
- `ACTIVE` — still required, upstream fix not available
|
||||
- `REDUNDANT` — upstream has fixed the issue; this override can be removed
|
||||
- `UPSTREAM PENDING` — waiting on an upstream PR/issue
|
||||
- `INTENTIONAL` — permanent design decision, not a workaround
|
||||
|
||||
---
|
||||
|
||||
## Overlays (upstream package overrides)
|
||||
|
||||
### `overlays/cosmic-settings-daemon/default.nix`
|
||||
**Status:** `ACTIVE — UPSTREAM PENDING`
|
||||
|
||||
`cosmic-settings-daemon 1.0.8` has a buggy `Cargo.lock` that references
|
||||
`https://github.com/pop-os/dbus-settings-bindings` at two different commits
|
||||
(`3b86984` for `cosmic-dbus-a11y`/`locale1`/`upower_dbus`, and `0fa672f8`
|
||||
for the `cosmic-settings-daemon` subcrate). `cargoSetupHook` (used by
|
||||
`fetchCargoVendor`/`cargoHash`) rejects this: *"Sources are not allowed to be
|
||||
defined multiple times."*
|
||||
|
||||
The fix overrides `cargoDeps` with `rustPlatform.importCargoLock`, which uses
|
||||
a different vendoring strategy that handles multiple commits from the same repo.
|
||||
|
||||
**Removal condition:** When nixpkgs updates `cosmic-settings-daemon` past 1.0.8
|
||||
with a fixed `Cargo.lock`, or applies `cargoLock` in its own package definition.
|
||||
|
||||
---
|
||||
|
||||
### `overlays/cosmic-applets/default.nix`
|
||||
**Status:** `ACTIVE — UPSTREAM PENDING`
|
||||
|
||||
`cosmic-applets 1.0.8` has the same class of bug: its `Cargo.lock` references
|
||||
`https://github.com/pop-os/cosmic-settings` at two different commits (`b46a55d`
|
||||
for `cosmic-pipewire` and `cosmic-settings-sound-subscription`, and `55b502d`
|
||||
for `cosmic-settings-a11y-manager-subscription` and several other crates).
|
||||
`cargoSetupHook` rejects this with the same "Sources are not allowed to be
|
||||
defined multiple times" error.
|
||||
|
||||
Same fix as `cosmic-settings-daemon`: overrides `cargoDeps` with
|
||||
`rustPlatform.importCargoLock`.
|
||||
|
||||
**Removal condition:** When nixpkgs updates `cosmic-applets` past 1.0.8 with a
|
||||
fixed `Cargo.lock`, or applies `cargoLock` in its own package definition.
|
||||
|
||||
---
|
||||
|
||||
### ~~`overlays/waybar/default.nix`~~ — REMOVED
|
||||
**Status:** `REMOVED`
|
||||
|
||||
Previously added `-Dexperimental=true` to waybar's meson flags. nixpkgs now
|
||||
includes `-Dexperimental=true` in its waybar definition, making the overlay
|
||||
redundant. Removed.
|
||||
|
||||
---
|
||||
|
||||
### `overlays/radios/default.nix`
|
||||
**Status:** `ACTIVE` (protective — needed after next `flake update`)
|
||||
|
||||
`radios` requires `pycountry>=24.0.0,<25.0.0` (PEP 440: `^24.0.0`). The
|
||||
current locked nixpkgs has `pycountry 24.6.1` (in range), but nixpkgs HEAD
|
||||
has already bumped `pycountry` to `26.2.16`, which will break `radios` after
|
||||
the next `flake update`. The overlay applies `pythonRelaxDepsHook` to loosen
|
||||
the upper bound.
|
||||
|
||||
**Removal condition:** When the upstream `radios` package (`frenck/python-radios`)
|
||||
or nixpkgs relaxes the pycountry version constraint.
|
||||
|
||||
---
|
||||
|
||||
### `overlays/redis/default.nix`
|
||||
**Status:** `INTENTIONAL`
|
||||
|
||||
Replaces `redis` with `valkey` (the Redis community fork) globally. This is a
|
||||
deliberate preference for the open-source fork over the Redis 7.x+ license change.
|
||||
|
||||
---
|
||||
|
||||
### `overlays/stable/default.nix`
|
||||
**Status:** `INTENTIONAL`
|
||||
|
||||
Injects `pkgs.stable` as an attribute pointing to the stable nixpkgs channel,
|
||||
so modules can selectively pull in stable packages. Not a workaround.
|
||||
|
||||
---
|
||||
|
||||
## Flake Inputs (forks and custom branches)
|
||||
|
||||
### `nixpkgs-otbr` — `github:mrene/nixpkgs/openthread-border-router`
|
||||
**File:** `flake.nix:8`
|
||||
**Status:** `ACTIVE — UPSTREAM PENDING`
|
||||
|
||||
`openthread-border-router` is not yet packaged in nixpkgs-unstable. A community
|
||||
member's nixpkgs fork provides the package, used by
|
||||
`modules/nixos/homeassistant/services/thread/default.nix`.
|
||||
|
||||
The fork is ~52,000 commits behind `nixos-unstable`, so it is pulled
|
||||
only via `pkgs.callPackage` from the fork's path, not as a full channel overlay.
|
||||
|
||||
**Removal condition:** When `openthread-border-router` is merged into nixpkgs.
|
||||
Check: https://github.com/NixOS/nixpkgs/pulls?q=openthread-border-router
|
||||
|
||||
---
|
||||
|
||||
### `snowfall-lib` — `github:mjallen18/snowfall-lib`
|
||||
**File:** `flake.nix:26`
|
||||
**Status:** `INTENTIONAL`
|
||||
|
||||
Personal fork of `snowfallorg/lib` with 46 commits ahead of upstream, including:
|
||||
- `fix: pass namespace argument to overlays`
|
||||
- `fix: pass namespace argument to home-manager modules`
|
||||
- `feat: support same username across multiple targets`
|
||||
- `feat: enable per-channel configuration and fix pkgs selection`
|
||||
- Performance improvements and additional features
|
||||
|
||||
These are custom changes required by this flake's structure that have not been
|
||||
upstreamed.
|
||||
|
||||
---
|
||||
|
||||
### `steam-rom-manager` — `github:mjallen18/nix-steam-rom-manager`
|
||||
**File:** `flake.nix:41`
|
||||
**Status:** `INTENTIONAL`
|
||||
|
||||
Personal fork/packaging of nix-steam-rom-manager. The upstream
|
||||
(`nix-community/nix-steam-rom-manager`) may or may not exist; this is a
|
||||
maintained fork.
|
||||
|
||||
---
|
||||
|
||||
### Commented-out: `nvmd/disko` fork
|
||||
**File:** `flake.nix:59-61`
|
||||
**Status:** `REDUNDANT` (already disabled)
|
||||
|
||||
```nix
|
||||
# the fork is needed for partition attributes support
|
||||
# url = "github:nvmd/disko/gpt-attrs";
|
||||
```
|
||||
|
||||
A community fork of disko with GPT partition attribute support was previously
|
||||
used but has since been switched back to upstream `nix-community/disko`. The
|
||||
comment can be cleaned up if the feature is no longer needed.
|
||||
|
||||
---
|
||||
|
||||
## Build Fixes & postPatch
|
||||
|
||||
### `packages/edk2-basetools/default.nix` — OpenSSL vendoring FIXME
|
||||
**File:** `packages/edk2-basetools/default.nix:50-52`
|
||||
**Status:** `UPSTREAM PENDING` (verify PR reference)
|
||||
|
||||
```nix
|
||||
# FIXME: unvendor OpenSSL again once upstream updates
|
||||
# to a compatible version.
|
||||
# Upstream PR: https://github.com/tianocore/edk2/pull/10946
|
||||
```
|
||||
|
||||
The comment references tianocore/edk2 PR #10946, but that PR's title is
|
||||
*"update to openssl 3.5.1"* (now merged), not an unvendoring PR. The FIXME
|
||||
comment may be referencing the wrong PR number or the issue may have evolved.
|
||||
The edk2 build still vendor-patches OpenSSL compatibility; this should be
|
||||
re-evaluated against the current edk2 upstream.
|
||||
|
||||
**Action:** Verify whether the OpenSSL vendoring is still needed with current
|
||||
edk2, and update or remove the FIXME comment.
|
||||
|
||||
---
|
||||
|
||||
### `packages/bcachefs/default.nix` — Tests disabled
|
||||
**File:** `packages/bcachefs/default.nix:100`
|
||||
**Status:** `ACTIVE`
|
||||
|
||||
```nix
|
||||
# FIXME: Try enabling this once the default linux kernel is at least 6.7
|
||||
doCheck = false; # needs bcachefs module loaded on builder
|
||||
```
|
||||
|
||||
Tests require a live bcachefs kernel module in the build sandbox, which is
|
||||
not available. The comment mentions kernel ≥ 6.7, which is now the case
|
||||
(nixpkgs is on 6.12+), but the underlying sandbox limitation still applies —
|
||||
the build sandbox cannot load kernel modules regardless of kernel version.
|
||||
|
||||
**Action:** The `6.7` condition is now met but irrelevant; update the comment
|
||||
to reflect that the real blocker is sandbox access to kernel modules.
|
||||
|
||||
---
|
||||
|
||||
### `packages/raspberrypi/linux-rpi/default.nix` — Failed kernel attempts
|
||||
**File:** `packages/raspberrypi/linux-rpi/default.nix:25-43`
|
||||
**Status:** `ACTIVE` (informational)
|
||||
|
||||
Four newer RPi kernel versions (6.15.11 through 6.19.0-rc5) are commented out
|
||||
because they "fail for various reasons." The active version is pinned to an
|
||||
older working commit.
|
||||
|
||||
**Action:** Periodically attempt to enable a newer kernel tag. The comments
|
||||
serve as a history of failed attempts.
|
||||
|
||||
---
|
||||
|
||||
### `packages/raspberrypi/linux-rpi/default.nix` — DTB aliasing hack
|
||||
**File:** `packages/raspberrypi/linux-rpi/default.nix:110-148`
|
||||
**Status:** `ACTIVE`
|
||||
|
||||
```nix
|
||||
# Make copies of the DTBs named after the upstream names so that U-Boot finds them.
|
||||
# This is ugly as heck, but I don't know a better solution so far.
|
||||
```
|
||||
|
||||
RPi's kernel ships DTBs with non-standard names (e.g. `bcm2708-rpi-zero-w.dtb`);
|
||||
U-Boot expects canonical upstream names (e.g. `bcm2835-rpi-zero.dtb`). DTBs
|
||||
are duplicated in `postFixup`.
|
||||
|
||||
---
|
||||
|
||||
### `packages/homeassistant/ha-mail-and-packages/default.nix` — Hardcoded paths
|
||||
**File:** `packages/homeassistant/ha-mail-and-packages/default.nix:25-37`
|
||||
**Status:** `ACTIVE`
|
||||
|
||||
The upstream HA integration hard-codes paths relative to its source directory,
|
||||
which breaks in the Nix store. `postPatch` rewrites them to
|
||||
`/var/lib/homeassistant/images/`.
|
||||
|
||||
---
|
||||
|
||||
### `packages/homeassistant/ha-wyzeapi/default.nix` — Version pin relaxation
|
||||
**File:** `packages/homeassistant/ha-wyzeapi/default.nix:24-27`
|
||||
**Status:** `ACTIVE`
|
||||
|
||||
Relaxes the minimum `wyzeapy` version pin from `0.5.28` to `0.5.27` to match
|
||||
the version packaged in this flake.
|
||||
|
||||
---
|
||||
|
||||
## Raspberry Pi — Structural Overrides
|
||||
|
||||
### `modules/nixos/hardware/raspberry-pi/default.nix` — jemalloc 16K pages
|
||||
**File:** `modules/nixos/hardware/raspberry-pi/default.nix:458-470`
|
||||
**Status:** `ACTIVE` (structural)
|
||||
|
||||
```nix
|
||||
# https://github.com/nvmd/nixos-raspberrypi/issues/64
|
||||
jemalloc = prev.jemalloc.overrideAttrs (old: {
|
||||
configureFlags = ... ++ [ "${pageSizeFlag}=14" ];
|
||||
});
|
||||
```
|
||||
|
||||
RPi5 uses 16K memory pages (2^14). jemalloc must be compiled with
|
||||
`--with-lg-page=14`, otherwise it will use incorrect page size assumptions
|
||||
and likely crash or corrupt memory.
|
||||
|
||||
**References:** https://github.com/nvmd/nixos-raspberrypi/issues/64
|
||||
|
||||
---
|
||||
|
||||
### `systems/aarch64-linux/pi5/boot.nix` — 16K page kernel
|
||||
**File:** `systems/aarch64-linux/pi5/boot.nix:22-35`
|
||||
**Status:** `ACTIVE` (structural)
|
||||
|
||||
Forces `CONFIG_ARM64_16K_PAGES=y` in the kernel config via `linux_6_19.override`.
|
||||
`ignoreConfigErrors = true` is required because some kernel config options are
|
||||
unavailable and would otherwise fail validation.
|
||||
|
||||
---
|
||||
|
||||
### `packages/raspberrypi/ffmpeg-rpi/default.nix` — RPi hardware codec ffmpeg
|
||||
**File:** `packages/raspberrypi/ffmpeg-rpi/default.nix`
|
||||
**Status:** `ACTIVE` (structural)
|
||||
|
||||
Custom ffmpeg build from `jc-kynesim/rpi-ffmpeg` fork with RPi hardware codec
|
||||
support (`--enable-v4l2-request`, `--enable-sand`, etc.). Tests disabled
|
||||
(`doCheck = false`) because the `imgutils` test fails on this build.
|
||||
|
||||
---
|
||||
|
||||
## systemd Service Overrides
|
||||
|
||||
### `systems/x86_64-linux/matt-nixos/default.nix` — networkd-wait-online
|
||||
**File:** `systems/x86_64-linux/matt-nixos/default.nix:78`
|
||||
**Status:** `INTENTIONAL`
|
||||
|
||||
```nix
|
||||
systemd.services.systemd-networkd-wait-online.enable = lib.mkForce false;
|
||||
```
|
||||
|
||||
The `systemd-networkd-wait-online` service times out on this desktop,
|
||||
blocking boot. Standard workaround for desktop systems that don't require
|
||||
all interfaces to be up before proceeding.
|
||||
|
||||
---
|
||||
|
||||
### `systems/x86_64-linux/allyx/default.nix` — Jovian NixOS conflicts
|
||||
**File:** `systems/x86_64-linux/allyx/default.nix:121-123`
|
||||
**Status:** `ACTIVE`
|
||||
|
||||
```nix
|
||||
systemd-networkd-wait-online.enable = lib.mkForce false;
|
||||
power-profiles-daemon.enable = lib.mkForce false;
|
||||
inputplumber.enable = lib.mkForce false;
|
||||
```
|
||||
|
||||
On the ASUS ROG Ally X with Jovian NixOS and `handheld-daemon`:
|
||||
- `power-profiles-daemon` conflicts with `handheld-daemon`'s power management
|
||||
- `inputplumber` conflicts with `handheld-daemon`'s input handling
|
||||
- `systemd-networkd-wait-online` times out as on matt-nixos
|
||||
|
||||
---
|
||||
|
||||
### `modules/nixos/services/crowdsec/default.nix` — DynamicUser conflict
|
||||
**File:** `modules/nixos/services/crowdsec/default.nix:133-143`
|
||||
**Status:** `ACTIVE — UPSTREAM PENDING`
|
||||
|
||||
```nix
|
||||
systemd.services.crowdsec.serviceConfig.DynamicUser = lib.mkForce false;
|
||||
systemd.services.crowdsec-firewall-bouncer.serviceConfig.DynamicUser = lib.mkForce false;
|
||||
systemd.services.crowdsec-firewall-bouncer-register.serviceConfig.DynamicUser = lib.mkForce false;
|
||||
```
|
||||
|
||||
The upstream NixOS crowdsec module uses `ReadWritePaths` (not `StateDirectory`)
|
||||
on the main `crowdsec.service`, expecting `/var/lib/crowdsec` to be a real
|
||||
directory. However, `crowdsec-firewall-bouncer-register` declares
|
||||
`StateDirectory=crowdsec` with `DynamicUser=true`, which conflicts — it tries
|
||||
to create `/var/lib/private/crowdsec` and symlink `/var/lib/crowdsec` to it,
|
||||
but the directory already exists as a real path. Disabling `DynamicUser` on
|
||||
all three services resolves the conflict by using the real `crowdsec` user.
|
||||
|
||||
Additionally, `crowdsec-firewall-bouncer-register` calls `cscli` without `-c`,
|
||||
expecting `/etc/crowdsec/config.yaml` to exist, but the upstream NixOS module
|
||||
uses a Nix store path via `-c` and never creates that file. The module works
|
||||
around this by extracting the store path at eval time.
|
||||
|
||||
**Removal condition:** When the NixOS crowdsec module is fixed upstream to
|
||||
handle state directory ownership consistently.
|
||||
|
||||
---
|
||||
|
||||
## Incomplete / TODO Items
|
||||
|
||||
These are not workarounds but known incomplete configurations:
|
||||
|
||||
| File | Line | Description |
|
||||
|------|------|-------------|
|
||||
| `systems/x86_64-linux/jallen-nas/sops.nix` | 89, 113 | Collabora and MariaDB secrets not configured |
|
||||
| `systems/x86_64-linux/jallen-nas/apps.nix` | 47 | Authentik environment secrets file not wired up |
|
||||
| `modules/nixos/services/sparky-fitness/default.nix` | 36, 72 | DB passwords not yet moved to SOPS |
|
||||
| `modules/nixos/services/your-spotify/default.nix` | 36 | Spotify API keys not yet moved to SOPS |
|
||||
| `modules/nixos/services/booklore/default.nix` | 25 | Database password not yet a SOPS secret |
|
||||
| `packages/raspberrypi/udev-rules/default.nix` | 33 | `15-i2c-modprobe.rules` disabled; `i2cprobe` script not ported |
|
||||
| `modules/nixos/homeassistant/services/homeassistant/default.nix` | 214 | `roborock` integration marked broken |
|
||||
|
||||
---
|
||||
|
||||
## Kernel Boot Parameters
|
||||
|
||||
### `systems/x86_64-linux/matt-nixos/boot.nix` — NVMe power saving
|
||||
**File:** `systems/x86_64-linux/matt-nixos/boot.nix:46-48`
|
||||
**Status:** `ACTIVE`
|
||||
|
||||
```nix
|
||||
"nvme_core.default_ps_max_latency_us=0"
|
||||
"pcie_aspm=off"
|
||||
```
|
||||
|
||||
NVMe SSD power-saving states cause latency/stability issues on this machine.
|
||||
Disabling ASPM and NVMe power states is a standard workaround for affected
|
||||
hardware.
|
||||
|
||||
---
|
||||
|
||||
### `systems/aarch64-linux/macbook-pro-nixos/boot.nix` — Fan control
|
||||
**File:** `systems/aarch64-linux/macbook-pro-nixos/boot.nix:28`
|
||||
**Status:** `ACTIVE`
|
||||
|
||||
```nix
|
||||
"melt_my_mac=1"
|
||||
```
|
||||
|
||||
Undocumented Asahi Linux kernel parameter that enables fan control on Apple
|
||||
Silicon Macs. The name is intentional (set by the Asahi kernel developers).
|
||||
12
flake.lock
generated
12
flake.lock
generated
@@ -663,11 +663,11 @@
|
||||
"homebrew-cask": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1774016339,
|
||||
"narHash": "sha256-Jm5bZFPd0GQGvknb9tsqWRh3M/+itroC0vIvoDW0cOE=",
|
||||
"lastModified": 1774025771,
|
||||
"narHash": "sha256-3eMajNhR25AX9Dc9DgR3+cW4215kj/KRIuVyP9+X2/I=",
|
||||
"owner": "homebrew",
|
||||
"repo": "homebrew-cask",
|
||||
"rev": "65b8191c7b9355eb2470dbe1eeb2633306064379",
|
||||
"rev": "f69327f0a37edd3197c8e9cf1f34822025251627",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -679,11 +679,11 @@
|
||||
"homebrew-core": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1774017008,
|
||||
"narHash": "sha256-kpYHVxgi+nu2H0aHxzY+3HNBDmFmjQYIn+U7ifsTt0Q=",
|
||||
"lastModified": 1774028436,
|
||||
"narHash": "sha256-mCYHZLfcOfLnNAfTOorW89fzXnmUTwOOwFmQxMViLoc=",
|
||||
"owner": "homebrew",
|
||||
"repo": "homebrew-core",
|
||||
"rev": "5541cf046f2005a02940da8086550ffcfa77da4c",
|
||||
"rev": "c5fc98d84606cc1ad94eeb0b61bc7b7c352f35ed",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -167,6 +167,7 @@ in
|
||||
clevis
|
||||
compose2nix
|
||||
distrobox
|
||||
goverlay
|
||||
heroic
|
||||
home-manager
|
||||
omnissa-horizon-client
|
||||
@@ -184,6 +185,7 @@ in
|
||||
virt-manager
|
||||
vorta
|
||||
waydroid-helper
|
||||
winboat
|
||||
]
|
||||
++ (with pkgs.${namespace}; [
|
||||
discord-krisp
|
||||
|
||||
@@ -30,6 +30,7 @@ in
|
||||
gnomeExtensions.tiling-assistant
|
||||
gnomeExtensions.user-themes
|
||||
gnomeExtensions.wikiart-wallpaper
|
||||
gnomeExtensions.boatman-winboat-monitor
|
||||
papirus-icon-theme
|
||||
pop-gtk-theme
|
||||
];
|
||||
|
||||
@@ -66,15 +66,6 @@ in
|
||||
parted
|
||||
vesktop
|
||||
]
|
||||
++ (
|
||||
if !isArm then
|
||||
[
|
||||
# goverlay
|
||||
# winboat
|
||||
]
|
||||
else
|
||||
[ ]
|
||||
)
|
||||
else
|
||||
[ ]
|
||||
)
|
||||
|
||||
@@ -323,7 +323,6 @@ in
|
||||
gehomesdk
|
||||
magicattr
|
||||
pyoverseerr
|
||||
python-nanokvm
|
||||
python-roborock
|
||||
wyzeapy
|
||||
]);
|
||||
|
||||
36
overlays/cosmic-applets/default.nix
Normal file
36
overlays/cosmic-applets/default.nix
Normal file
@@ -0,0 +1,36 @@
|
||||
# Workaround for cosmic-applets 1.0.8 build failure:
|
||||
# The Cargo.lock references https://github.com/pop-os/cosmic-settings at two
|
||||
# different commits (b46a55d and 55b502d), which cargoSetupHook rejects:
|
||||
# "Sources are not allowed to be defined multiple times."
|
||||
# Using importCargoLock (via cargoDeps override) instead of fetchCargoVendor
|
||||
# (cargoHash) avoids this check. Same pattern as cosmic-settings-daemon.
|
||||
{ ... }:
|
||||
final: prev: {
|
||||
cosmic-applets = prev.cosmic-applets.overrideAttrs (old: {
|
||||
cargoDeps = final.rustPlatform.importCargoLock {
|
||||
lockFile = "${old.src}/Cargo.lock";
|
||||
outputHashes = {
|
||||
"accesskit-0.16.0" = "sha256-uoLcd116WXQTu1ZTfJDEl9+3UPpGBN/QuJpkkGyRADQ=";
|
||||
"atomicwrites-0.4.2" = "sha256-QZSuGPrJXh+svMeFWqAXoqZQxLq/WfIiamqvjJNVhxA=";
|
||||
"clipboard_macos-0.1.0" = "sha256-+8CGmBf1Gl9gnBDtuKtkzUE5rySebhH7Bsq/kNlJofY=";
|
||||
"cosmic-client-toolkit-0.2.0" = "sha256-ymn+BUTTzyHquPn4hvuoA3y1owFj8LVrmsPu2cdkFQ8=";
|
||||
"cosmic-comp-config-0.1.0" = "sha256-uUpRd8bR2TyD7Y1lpKmJTaTNv9yNsZVnr0oWDQgHD/0=";
|
||||
"cosmic-config-1.0.0" = "sha256-EDFFtQ+yiclZ1wrcbSHFhmx7d6rAPlU+qq/gh1HGqv8=";
|
||||
"cosmic-dbus-a11y-0.1.0" = "sha256-1yVIL3SQnOEtTHoLiZgBH21holNxcOuToyQ+QdvqoBg=";
|
||||
"cosmic-freedesktop-icons-0.4.0" = "sha256-D4bWHQ4Dp8UGiZjc6geh2c2SGYhB7mX13THpCUie1c4=";
|
||||
"cosmic-notifications-config-0.1.0" = "sha256-41F8TtXvZ+EMM3zHHfadwTFCte+ZXC+hP25J8QQPrTE=";
|
||||
"cosmic-panel-config-0.1.0" = "sha256-1Xwe1uONJbl4wq6QBbTI1suLiSlTzU4e/5WBccvghHE=";
|
||||
"cosmic-pipewire-1.0.0" = "sha256-yqrYF4zDd5yh5oCJUttsHDCEOS6xmH/9M5Hd9kgU9yw=";
|
||||
"cosmic-settings-a11y-manager-subscription-1.0.2" =
|
||||
"sha256-OIVG0snnYtRkL8D3nurlygkqx6ugzIV4RPm7wReaE4o=";
|
||||
"cosmic-settings-config-0.1.0" = "sha256-4YozCuj6lF9GmsV9eRD4HEb3G8tYKjQc3+ghYHxKrhE=";
|
||||
"cosmic-text-0.17.1" = "sha256-NHjJBE/WSMhN29CKTuB7PyJv4y2JByi5pyTUDtVoF7g=";
|
||||
"cosmic-time-0.4.0" = "sha256-D3+GjRigubsBD8VdCpKWXgphstbOn/ayHDel04xBP4U=";
|
||||
"dpi-0.1.1" = "sha256-Saw9LIWIbOaxD5/yCSqaN71Tzn2NXFzJMorH8o58ktw=";
|
||||
"iced_glyphon-0.6.0" = "sha256-u1vnsOjP8npQ57NNSikotuHxpi4Mp/rV9038vAgCsfQ=";
|
||||
"smithay-clipboard-0.8.0" = "sha256-4InFXm0ahrqFrtNLeqIuE3yeOpxKZJZx+Bc0yQDtv34=";
|
||||
"softbuffer-0.4.1" = "sha256-/ocK79Lr5ywP/bb5mrcm7eTzeBbwpOazojvFUsAjMKM=";
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
31
overlays/cosmic-settings-daemon/default.nix
Normal file
31
overlays/cosmic-settings-daemon/default.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
# Workaround for cosmic-settings-daemon 1.0.8 build failure:
|
||||
# The Cargo.lock references https://github.com/pop-os/dbus-settings-bindings
|
||||
# at two different commits (3b86984 and 0fa672f8), which cargoSetupHook
|
||||
# rejects ("Sources are not allowed to be defined multiple times").
|
||||
#
|
||||
# Using importCargoLock (cargoLock) instead of fetchCargoVendor (cargoHash)
|
||||
# avoids this check. We override cargoDeps directly since cargoLock is
|
||||
# consumed by buildRustPackage before reaching mkDerivation.
|
||||
{ ... }:
|
||||
final: prev: {
|
||||
cosmic-settings-daemon = prev.cosmic-settings-daemon.overrideAttrs (old: {
|
||||
cargoDeps = final.rustPlatform.importCargoLock {
|
||||
lockFile = "${old.src}/Cargo.lock";
|
||||
outputHashes = {
|
||||
"atomicwrites-0.4.2" = "sha256-QZSuGPrJXh+svMeFWqAXoqZQxLq/WfIiamqvjJNVhxA=";
|
||||
"clipboard_macos-0.1.0" = "sha256-+8CGmBf1Gl9gnBDtuKtkzUE5rySebhH7Bsq/kNlJofY=";
|
||||
"cosmic-client-toolkit-0.1.0" = "sha256-KvXQJ/EIRyrlmi80WKl2T9Bn+j7GCfQlcjgcEVUxPkc=";
|
||||
"cosmic-comp-config-0.1.0" = "sha256-H2eMYjJi9VXv6D5IREVjfqR46hC9dxT84lk9Ubpnhpk=";
|
||||
"cosmic-config-1.0.0" = "sha256-JzryxfdMMn4Ew5lKCpirzT50Rd5egudfXXTSql0iFas=";
|
||||
"cosmic-dbus-a11y-0.1.0" = "sha256-CEmzl/09rD11kgnoHP2Q6N/emDhEK4wQiqSXmIlsbPE=";
|
||||
"cosmic-freedesktop-icons-0.4.0" = "sha256-D4bWHQ4Dp8UGiZjc6geh2c2SGYhB7mX13THpCUie1c4=";
|
||||
"cosmic-settings-daemon-0.1.0" = "sha256-QIupze3m2au51yJWsBylz2rBfeqreFX2D/F2+JbIWmg=";
|
||||
"cosmic-settings-subscriptions-0.1.0" = "sha256-PSp7a80TO6z7b+Gkf5jHz7KNVNfc29HF8DFqEjkC75o=";
|
||||
"cosmic-text-0.17.1" = "sha256-NHjJBE/WSMhN29CKTuB7PyJv4y2JByi5pyTUDtVoF7g=";
|
||||
"iced_glyphon-0.6.0" = "sha256-u1vnsOjP8npQ57NNSikotuHxpi4Mp/rV9038vAgCsfQ=";
|
||||
"smithay-clipboard-0.8.0" = "sha256-4InFXm0ahrqFrtNLeqIuE3yeOpxKZJZx+Bc0yQDtv34=";
|
||||
"softbuffer-0.4.1" = "sha256-/ocK79Lr5ywP/bb5mrcm7eTzeBbwpOazojvFUsAjMKM=";
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
12
overlays/radios/default.nix
Normal file
12
overlays/radios/default.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ ... }:
|
||||
final: prev: {
|
||||
python3 = prev.python3.override {
|
||||
packageOverrides = _pyFinal: pyPrev: {
|
||||
radios = pyPrev.radios.overridePythonAttrs (old: {
|
||||
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pyPrev.pythonRelaxDepsHook ];
|
||||
pythonRelaxDeps = [ "pycountry" ];
|
||||
});
|
||||
};
|
||||
};
|
||||
python3Packages = final.python3.pkgs;
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{ ... }:
|
||||
_final: prev: {
|
||||
waybar = prev.waybar.overrideAttrs (old: {
|
||||
mesonFlags = (old.mesonFlags or [ ]) ++ [ "-Dexperimental=true" ];
|
||||
});
|
||||
}
|
||||
@@ -1,10 +1,71 @@
|
||||
{
|
||||
buildHomeAssistantComponent,
|
||||
fetchFromGitHub,
|
||||
pkgs,
|
||||
namespace,
|
||||
home-assistant,
|
||||
...
|
||||
}:
|
||||
let
|
||||
python3Packages = home-assistant.python.pkgs;
|
||||
python-nanokvm = python3Packages.buildPythonPackage rec {
|
||||
pname = "nanokvm";
|
||||
version = "0.1.0";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "puddly";
|
||||
repo = "python-${pname}";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-vIxvQtjaInnWQce7syiOWpP2kaw0IVw03HPovnB2J5M=";
|
||||
};
|
||||
|
||||
prePatch = ''
|
||||
rm -f pyproject.toml
|
||||
cat > pyproject.toml << 'EOF'
|
||||
[build-system]
|
||||
requires = ["setuptools>=61.0.0", "wheel"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "nanokvm"
|
||||
version = "0.1.0"
|
||||
description = "Async client for NanoKVM devices."
|
||||
urls = {repository = "https://github.com/puddly/python-nanokvm"}
|
||||
authors = [
|
||||
{name = "puddly", email = "puddly3@gmail.com"}
|
||||
]
|
||||
readme = "README.md"
|
||||
license = {text = "Apache-2.0"}
|
||||
requires-python = ">=3.11"
|
||||
dependencies = [
|
||||
"aiohttp",
|
||||
"cryptography",
|
||||
"yarl",
|
||||
"pillow",
|
||||
"pydantic",
|
||||
"paramiko",
|
||||
]
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
exclude = ["tests", "tests.*"]
|
||||
EOF
|
||||
'';
|
||||
|
||||
buildInputs = with python3Packages; [
|
||||
setuptools
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
aiohttp
|
||||
cryptography
|
||||
yarl
|
||||
pillow
|
||||
pydantic
|
||||
paramiko
|
||||
];
|
||||
|
||||
doCheck = false;
|
||||
};
|
||||
in
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "Wouter0100";
|
||||
domain = "nanokvm";
|
||||
@@ -17,12 +78,10 @@ buildHomeAssistantComponent rec {
|
||||
hash = "sha256-S6g9mfPEixqeGQkXVK8PZJ/dnEC5ThKtbELAIAhCANM=";
|
||||
};
|
||||
|
||||
propogatedBuildInputs = with pkgs.${namespace}; [
|
||||
propagatedBuildInputs = [
|
||||
python-nanokvm
|
||||
];
|
||||
|
||||
buildInputs = propogatedBuildInputs;
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace custom_components/nanokvm/manifest.json \
|
||||
--replace-fail '"nanokvm>=0.0.4"' '"nanokvm"'
|
||||
|
||||
Reference in New Issue
Block a user