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": {
|
"homebrew-cask": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774016339,
|
"lastModified": 1774025771,
|
||||||
"narHash": "sha256-Jm5bZFPd0GQGvknb9tsqWRh3M/+itroC0vIvoDW0cOE=",
|
"narHash": "sha256-3eMajNhR25AX9Dc9DgR3+cW4215kj/KRIuVyP9+X2/I=",
|
||||||
"owner": "homebrew",
|
"owner": "homebrew",
|
||||||
"repo": "homebrew-cask",
|
"repo": "homebrew-cask",
|
||||||
"rev": "65b8191c7b9355eb2470dbe1eeb2633306064379",
|
"rev": "f69327f0a37edd3197c8e9cf1f34822025251627",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -679,11 +679,11 @@
|
|||||||
"homebrew-core": {
|
"homebrew-core": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774017008,
|
"lastModified": 1774028436,
|
||||||
"narHash": "sha256-kpYHVxgi+nu2H0aHxzY+3HNBDmFmjQYIn+U7ifsTt0Q=",
|
"narHash": "sha256-mCYHZLfcOfLnNAfTOorW89fzXnmUTwOOwFmQxMViLoc=",
|
||||||
"owner": "homebrew",
|
"owner": "homebrew",
|
||||||
"repo": "homebrew-core",
|
"repo": "homebrew-core",
|
||||||
"rev": "5541cf046f2005a02940da8086550ffcfa77da4c",
|
"rev": "c5fc98d84606cc1ad94eeb0b61bc7b7c352f35ed",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -167,6 +167,7 @@ in
|
|||||||
clevis
|
clevis
|
||||||
compose2nix
|
compose2nix
|
||||||
distrobox
|
distrobox
|
||||||
|
goverlay
|
||||||
heroic
|
heroic
|
||||||
home-manager
|
home-manager
|
||||||
omnissa-horizon-client
|
omnissa-horizon-client
|
||||||
@@ -184,6 +185,7 @@ in
|
|||||||
virt-manager
|
virt-manager
|
||||||
vorta
|
vorta
|
||||||
waydroid-helper
|
waydroid-helper
|
||||||
|
winboat
|
||||||
]
|
]
|
||||||
++ (with pkgs.${namespace}; [
|
++ (with pkgs.${namespace}; [
|
||||||
discord-krisp
|
discord-krisp
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ in
|
|||||||
gnomeExtensions.tiling-assistant
|
gnomeExtensions.tiling-assistant
|
||||||
gnomeExtensions.user-themes
|
gnomeExtensions.user-themes
|
||||||
gnomeExtensions.wikiart-wallpaper
|
gnomeExtensions.wikiart-wallpaper
|
||||||
|
gnomeExtensions.boatman-winboat-monitor
|
||||||
papirus-icon-theme
|
papirus-icon-theme
|
||||||
pop-gtk-theme
|
pop-gtk-theme
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -66,15 +66,6 @@ in
|
|||||||
parted
|
parted
|
||||||
vesktop
|
vesktop
|
||||||
]
|
]
|
||||||
++ (
|
|
||||||
if !isArm then
|
|
||||||
[
|
|
||||||
# goverlay
|
|
||||||
# winboat
|
|
||||||
]
|
|
||||||
else
|
|
||||||
[ ]
|
|
||||||
)
|
|
||||||
else
|
else
|
||||||
[ ]
|
[ ]
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -323,7 +323,6 @@ in
|
|||||||
gehomesdk
|
gehomesdk
|
||||||
magicattr
|
magicattr
|
||||||
pyoverseerr
|
pyoverseerr
|
||||||
python-nanokvm
|
|
||||||
python-roborock
|
python-roborock
|
||||||
wyzeapy
|
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,
|
buildHomeAssistantComponent,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
pkgs,
|
home-assistant,
|
||||||
namespace,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
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 {
|
buildHomeAssistantComponent rec {
|
||||||
owner = "Wouter0100";
|
owner = "Wouter0100";
|
||||||
domain = "nanokvm";
|
domain = "nanokvm";
|
||||||
@@ -17,12 +78,10 @@ buildHomeAssistantComponent rec {
|
|||||||
hash = "sha256-S6g9mfPEixqeGQkXVK8PZJ/dnEC5ThKtbELAIAhCANM=";
|
hash = "sha256-S6g9mfPEixqeGQkXVK8PZJ/dnEC5ThKtbELAIAhCANM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
propogatedBuildInputs = with pkgs.${namespace}; [
|
propagatedBuildInputs = [
|
||||||
python-nanokvm
|
python-nanokvm
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = propogatedBuildInputs;
|
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
substituteInPlace custom_components/nanokvm/manifest.json \
|
substituteInPlace custom_components/nanokvm/manifest.json \
|
||||||
--replace-fail '"nanokvm>=0.0.4"' '"nanokvm"'
|
--replace-fail '"nanokvm>=0.0.4"' '"nanokvm"'
|
||||||
|
|||||||
Reference in New Issue
Block a user