Compare commits
70 Commits
wip/koread
...
staging/ni
Author | SHA1 | Date | |
---|---|---|---|
4e37f2c651 | |||
2cf714c999 | |||
6f835db8f3 | |||
206dd84477 | |||
381a111944 | |||
3138482ed9 | |||
1796d3c259 | |||
b565a719fb | |||
f7ac46fd30 | |||
61cf801983 | |||
ae9a81919f | |||
9ca8c74ed7 | |||
fd58896c0c | |||
d2a46e88f6 | |||
5cd05d8762 | |||
a35f3e238d | |||
039d685e3c | |||
da42b3ddd7 | |||
51eaf83be8 | |||
d8a6a1df41 | |||
36176abdf3 | |||
085c38ea47 | |||
9adaece9d6 | |||
df8e572a8f | |||
d39b698066 | |||
83c483395c | |||
2e08321016 | |||
abf80d765c | |||
8c0b215832 | |||
28c9bd3cac | |||
e1e40332f7 | |||
28ef8141f7 | |||
ad6b0ea75e | |||
f59da7ad0f | |||
183457444c | |||
28a91723b8 | |||
9b53a28920 | |||
49e33d7238 | |||
6572557b5b | |||
e18fb2ce4e | |||
027e7cb074 | |||
13ae0b798c | |||
d8675b544a | |||
5bf5d82d30 | |||
0c92f3695a | |||
558258c367 | |||
7f13c482e5 | |||
7b21ede5c4 | |||
219bb02cb8 | |||
2df59f7c7d | |||
11a7370a76 | |||
44e3b01e7c | |||
c7f0e5c8b5 | |||
7ce33340f9 | |||
8f77b1db94 | |||
f4cac0c158 | |||
04106e660e | |||
6ed550b813 | |||
1cfd0fab6a | |||
5a31a0b415 | |||
eb82268eee | |||
86964f6fde | |||
3121a6a7e9 | |||
c353f06832 | |||
b6a878757c | |||
c862b559e7 | |||
64c8dabaf2 | |||
512b5d78d4 | |||
0479a43f2d | |||
307e93de3b |
32
flake.lock
generated
32
flake.lock
generated
@@ -21,11 +21,11 @@
|
||||
"mobile-nixos": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1683422260,
|
||||
"narHash": "sha256-79zaClbubRkBNlJ04OSADILuLQHH48N5fu296hEWYlw=",
|
||||
"lastModified": 1690059310,
|
||||
"narHash": "sha256-4zcoDp8wwZVfGSzXltC5x+eH4kDWC/eJpyQNgr7shAA=",
|
||||
"owner": "nixos",
|
||||
"repo": "mobile-nixos",
|
||||
"rev": "ba4638836e94a8f16d1d1f9e8c0530b86078029c",
|
||||
"rev": "56fc9f9619f305f0865354975a98d22410eed127",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -69,11 +69,11 @@
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1689473667,
|
||||
"narHash": "sha256-41ePf1ylHMTogSPAiufqvBbBos+gtB6zjQlYFSEKFMM=",
|
||||
"lastModified": 1690066826,
|
||||
"narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "13231eccfa1da771afa5c0807fdd73e05a1ec4e6",
|
||||
"rev": "ce45b591975d070044ca24e3003c830d26fea1c8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -85,11 +85,11 @@
|
||||
},
|
||||
"nixpkgs-unpatched": {
|
||||
"locked": {
|
||||
"lastModified": 1689534811,
|
||||
"narHash": "sha256-jnSUdzD/414d94plCyNlvTJJtiTogTep6t7ZgIKIHiE=",
|
||||
"lastModified": 1690640159,
|
||||
"narHash": "sha256-5DZUYnkeMOsVb/eqPYb9zns5YsnQXRJRC8Xx/nPMcno=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "6cee3b5893090b0f5f0a06b4cf42ca4e60e5d222",
|
||||
"rev": "e6ab46982debeab9831236869539a507f670a129",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -116,11 +116,11 @@
|
||||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1689534977,
|
||||
"narHash": "sha256-EB4hasmjKgetTR0My2bS5AwELZFIQ4zANLqHKi7aVXg=",
|
||||
"lastModified": 1690199016,
|
||||
"narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "bd695cc4d0a5e1bead703cc1bec5fa3094820a81",
|
||||
"rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -152,11 +152,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1688265812,
|
||||
"narHash": "sha256-Wkx56Pw7V5+5Gn6B3olDGP+o1qIp8BPFL0MWC2wbKVg=",
|
||||
"lastModified": 1690326573,
|
||||
"narHash": "sha256-UgsGOTx00sp4Oev6QNN2u+4AMVehgGO/8yODF++8bwM=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "1542323cfb46a8950c17a3afa5f7cd2e62dd9672",
|
||||
"revCount": 202,
|
||||
"rev": "fcec1d09b6c469d9425a716b11b4f4995a285774",
|
||||
"revCount": 204,
|
||||
"type": "git",
|
||||
"url": "https://git.uninsane.org/colin/uninsane"
|
||||
},
|
||||
|
34
flake.nix
34
flake.nix
@@ -239,46 +239,58 @@
|
||||
apps."x86_64-linux" =
|
||||
let
|
||||
pkgs = self.legacyPackages."x86_64-linux";
|
||||
deployScript = host: action: pkgs.writeShellScript "deploy-${host}" ''
|
||||
deployScript = host: addr: action: pkgs.writeShellScript "deploy-${host}" ''
|
||||
nix build '.#nixosConfigurations.${host}.config.system.build.toplevel' --out-link ./result-${host} $@
|
||||
sudo nix sign-paths -r -k /run/secrets/nix_serve_privkey $(readlink ./result-${host})
|
||||
|
||||
# XXX: this triggers another config eval & (potentially) build.
|
||||
# if the config changed between these invocations, the above signatures might not apply to the deployed config.
|
||||
# let the user handle that edge case by re-running this whole command
|
||||
nixos-rebuild --flake '.#${host}' ${action} --target-host colin@${host} --use-remote-sudo $@
|
||||
nixos-rebuild --flake '.#${host}' ${action} --target-host colin@${addr} --use-remote-sudo $@
|
||||
'';
|
||||
in {
|
||||
help = {
|
||||
type = "app";
|
||||
program = let
|
||||
helpMsg = builtins.toFile "nixos-config-help-message" ''
|
||||
commands:
|
||||
- `nix run '.#help'`
|
||||
- show this message
|
||||
- `nix run '.#update-feeds'`
|
||||
- updates metadata for all feeds
|
||||
- `nix run '.#init-feed' <url>`
|
||||
- `nix run '.#deploy-{lappy,moby,moby-test,servo}' [nixos-rebuild args ...]`
|
||||
- `nix run '.#check-nur'`
|
||||
'';
|
||||
in builtins.toString (pkgs.writeShellScript "nixos-config-help" ''
|
||||
cat ${helpMsg}
|
||||
'');
|
||||
};
|
||||
update-feeds = {
|
||||
type = "app";
|
||||
program = "${pkgs.feeds.updateScript}";
|
||||
};
|
||||
|
||||
init-feed = {
|
||||
# use like `nix run '.#init-feed' uninsane.org`
|
||||
type = "app";
|
||||
program = "${pkgs.feeds.initFeedScript}";
|
||||
};
|
||||
|
||||
deploy-lappy = {
|
||||
# `nix run '.#deploy-lappy'`
|
||||
type = "app";
|
||||
program = ''${deployScript "lappy" "switch"}'';
|
||||
program = ''${deployScript "lappy" "lappy" "switch"}'';
|
||||
};
|
||||
deploy-moby-test = {
|
||||
# `nix run '.#deploy-moby-test'`
|
||||
type = "app";
|
||||
program = ''${deployScript "moby" "test"}'';
|
||||
program = ''${deployScript "moby" "moby-hn" "test"}'';
|
||||
};
|
||||
deploy-moby = {
|
||||
# `nix run '.#deploy-moby'`
|
||||
type = "app";
|
||||
program = ''${deployScript "moby" "switch"}'';
|
||||
program = ''${deployScript "moby" "moby-hn" "switch"}'';
|
||||
};
|
||||
deploy-servo = {
|
||||
# `nix run '.#deploy-servo'`
|
||||
type = "app";
|
||||
program = ''${deployScript "servo" "switch"}'';
|
||||
program = ''${deployScript "servo" "servo" "switch"}'';
|
||||
};
|
||||
|
||||
check-nur = {
|
||||
|
@@ -25,7 +25,7 @@
|
||||
sane.programs.steam.enableFor.user.colin = true;
|
||||
|
||||
sane.programs.guiApps.suggestedPrograms = [ "desktopGuiApps" ];
|
||||
sane.programs.consoleUtils.suggestedPrograms = [ "consoleMediaUtils" ];
|
||||
sane.programs.consoleUtils.suggestedPrograms = [ "consoleMediaUtils" "desktopConsoleUtils" ];
|
||||
# sane.programs.devPkgs.enableFor.user.colin = true;
|
||||
|
||||
boot.loader.efi.canTouchEfiVariables = false;
|
||||
|
@@ -19,7 +19,7 @@
|
||||
"desktopGuiApps"
|
||||
"stepmania"
|
||||
];
|
||||
sane.programs.consoleUtils.suggestedPrograms = [ "consoleMediaUtils" ];
|
||||
sane.programs.consoleUtils.suggestedPrograms = [ "consoleMediaUtils" "desktopConsoleUtils" ];
|
||||
|
||||
sops.secrets.colin-passwd.neededForUsers = true;
|
||||
|
||||
|
@@ -12,8 +12,9 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
imports = [
|
||||
./firmware.nix
|
||||
./bootloader.nix
|
||||
./fs.nix
|
||||
./gps.nix
|
||||
./kernel.nix
|
||||
./polyfill.nix
|
||||
];
|
||||
|
24
hosts/by-name/moby/gps.nix
Normal file
24
hosts/by-name/moby/gps.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
# pinephone GPS happens in EG25 modem
|
||||
# serial control interface to modem is /dev/ttyUSB2
|
||||
# after enabling GPS, readout is /dev/ttyUSB1
|
||||
#
|
||||
# minimal process to enable modem and GPS:
|
||||
# - `echo 1 > /sys/class/modem-power/modem-power/device/powered`
|
||||
# - `screen /dev/ttyUSB2 115200`
|
||||
# - `AT+QGPSCFG="nmeasrc",1`
|
||||
# - `AT+QGPS=1`
|
||||
#
|
||||
# now, something like `gpsd` can directly read from /dev/ttyUSB1.
|
||||
#
|
||||
# initial GPS fix can take 15+ minutes.
|
||||
# meanwhile, services like eg25-manager can speed this up by uploading assisted GPS data to the modem.
|
||||
#
|
||||
# geoclue somehow fits in here as a geospatial provider that leverages GPS and also other sources like radio towers
|
||||
|
||||
{ ... }:
|
||||
{
|
||||
services.gpsd.enable = true;
|
||||
services.gpsd.devices = [ "/dev/ttyUSB1" ];
|
||||
|
||||
# TODO: enable eg25-manager, and bring online both the modem and GPS on boot
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 110 KiB |
1608
hosts/by-name/moby/nixos-bg-02.svg
Normal file
1608
hosts/by-name/moby/nixos-bg-02.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 118 KiB |
@@ -4,11 +4,17 @@
|
||||
#
|
||||
# NixOS backgrounds:
|
||||
# - <https://github.com/NixOS/nixos-artwork>
|
||||
# - <https://github.com/NixOS/nixos-artwork/issues/50> (colorful; unmerged)
|
||||
# - <https://github.com/NixOS/nixos-artwork/pull/60/files> (desktop-oriented; clean; unmerged)
|
||||
# - <https://itsfoss.com/content/images/2023/04/nixos-tutorials.png>
|
||||
|
||||
{ pkgs, sane-lib, ... }:
|
||||
{ lib, pkgs, sane-lib, ... }:
|
||||
let
|
||||
bg-01 = ./nixos-bg-01.png;
|
||||
# TODO: generate this from the .svg
|
||||
# bg = ./nixos-bg-02.png;
|
||||
bg = pkgs.runCommand "nixos-bg.png" { nativeBuildInputs = [ pkgs.inkscape ]; } ''
|
||||
inkscape ${./nixos-bg-02.svg} -o $out
|
||||
'';
|
||||
in
|
||||
{
|
||||
sane.programs.firefox.config = {
|
||||
@@ -23,6 +29,7 @@ in
|
||||
};
|
||||
|
||||
sane.gui.sxmo = {
|
||||
nogesture = true;
|
||||
settings = {
|
||||
### hardware: touch screen
|
||||
SXMO_LISGD_INPUT_DEVICE = "/dev/input/by-path/platform-1c2ac00.i2c-event";
|
||||
@@ -30,6 +37,90 @@ in
|
||||
|
||||
|
||||
### preferences
|
||||
# notable bemenu options:
|
||||
# - see `bemenu --help` for all
|
||||
# -P, --prefix text to show before highlighted item.
|
||||
# --scrollbar display scrollbar. (none (default), always, autohide)
|
||||
# -H, --line-height defines the height to make each menu line (0 = default height). (wx)
|
||||
# -M, --margin defines the empty space on either side of the menu. (wx)
|
||||
# -W, --width-factor defines the relative width factor of the menu (from 0 to 1). (wx)
|
||||
# -B, --border defines the width of the border in pixels around the menu. (wx)
|
||||
# -R --border-radius defines the radius of the border around the menu (0 = no curved borders).
|
||||
# --ch defines the height of the cursor (0 = scales with line height). (wx)
|
||||
# --cw defines the width of the cursor. (wx)
|
||||
# --hp defines the horizontal padding for the entries in single line mode. (wx)
|
||||
# --fn defines the font to be used ('name [size]'). (wx)
|
||||
# --tb defines the title background color. (wx)
|
||||
# --tf defines the title foreground color. (wx)
|
||||
# --fb defines the filter background color. (wx)
|
||||
# --ff defines the filter foreground color. (wx)
|
||||
# --nb defines the normal background color. (wx)
|
||||
# --nf defines the normal foreground color. (wx)
|
||||
# --hb defines the highlighted background color. (wx)
|
||||
# --hf defines the highlighted foreground color. (wx)
|
||||
# --fbb defines the feedback background color. (wx)
|
||||
# --fbf defines the feedback foreground color. (wx)
|
||||
# --sb defines the selected background color. (wx)
|
||||
# --sf defines the selected foreground color. (wx)
|
||||
# --ab defines the alternating background color. (wx)
|
||||
# --af defines the alternating foreground color. (wx)
|
||||
# --scb defines the scrollbar background color. (wx)
|
||||
# --scf defines the scrollbar foreground color. (wx)
|
||||
# --bdr defines the border color. (wx)
|
||||
#
|
||||
# colors are specified as `#RRGGBB`
|
||||
# defaults:
|
||||
# --ab "#222222"
|
||||
# --af "#bbbbbb"
|
||||
# --bdr "#005577"
|
||||
# --border 3
|
||||
# --cb "#222222"
|
||||
# --center
|
||||
# --cf "#bbbbbb"
|
||||
# --fb "#222222"
|
||||
# --fbb "#eeeeee"
|
||||
# --fbf "#222222"
|
||||
# --ff "#bbbbbb"
|
||||
# --fixed-height
|
||||
# --fn 'Sxmo 14'
|
||||
# --hb "#005577"
|
||||
# --hf "#eeeeee"
|
||||
# --line-height 20
|
||||
# --list 16
|
||||
# --margin 40
|
||||
# --nb "#222222"
|
||||
# --nf "#bbbbbb"
|
||||
# --no-overlap
|
||||
# --no-spacing
|
||||
# --sb "#323232"
|
||||
# --scb "#005577"
|
||||
# --scf "#eeeeee"
|
||||
# --scrollbar autohide
|
||||
# --tb "#005577"
|
||||
# --tf "#eeeeee"
|
||||
# --wrap
|
||||
BEMENU_OPTS = let
|
||||
bg = "#1d1721"; # slight purple
|
||||
fg0 = "#d8d8d8"; # inactive text (light grey)
|
||||
fg1 = "#ffffff"; # active text (white)
|
||||
accent0 = "#1f5e54"; # darker but saturated teal
|
||||
accent1 = "#418379"; # teal (matches nixos-bg)
|
||||
accent2 = "#5b938a"; # brighter but muted teal
|
||||
in lib.concatStringsSep " " [
|
||||
"--wrap --scrollbar autohide --fixed-height"
|
||||
"--center --margin 45"
|
||||
"--no-spacing"
|
||||
# XXX: font size doesn't seem to take effect (would prefer larger)
|
||||
"--fn 'Sxmo 14' --line-height 22 --border 3"
|
||||
"--bdr '${accent0}'" # border
|
||||
"--scf '${accent2}' --scb '${accent0}'" # scrollbar
|
||||
"--tb '${accent0}' --tf '${fg0}'" # title
|
||||
"--fb '${accent0}' --ff '${fg1}'" # filter (i.e. text that's been entered)
|
||||
"--hb '${accent1}' --hf '${fg1}'" # selected item
|
||||
"--nb '${bg}' --nf '${fg0}'" # normal lines (even)
|
||||
"--ab '${bg}' --af '${fg0}'" # alternated lines (odd)
|
||||
"--cf '${accent0}' --cb '${accent0}'" # cursor (not very useful)
|
||||
];
|
||||
DEFAULT_COUNTRY = "US";
|
||||
|
||||
# BEMENU lines (wayland DMENU):
|
||||
@@ -43,7 +134,7 @@ in
|
||||
# - close is 16th entry
|
||||
SXMO_BEMENU_LANDSCAPE_LINES = "11"; # default 8
|
||||
SXMO_BEMENU_PORTRAIT_LINES = "16"; # default 16
|
||||
SXMO_BG_IMG = "${bg-01}";
|
||||
SXMO_BG_IMG = "${bg}";
|
||||
SXMO_LOCK_IDLE_TIME = "15"; # how long between screenoff -> lock -> back to screenoff (default: 8)
|
||||
# gravity: how far to tilt the device before the screen rotates
|
||||
# for a given setting, normal <-> invert requires more movement then left <-> right
|
||||
@@ -78,9 +169,6 @@ in
|
||||
};
|
||||
package = pkgs.sxmo-utils.overrideAttrs (base: {
|
||||
postPatch = (base.postPatch or "") + ''
|
||||
# don't enable gestures at launch
|
||||
# sed -i '/superctl start sxmo_hook_lisgd/d' ./configs/default_hooks/sxmo_hook_start.sh
|
||||
|
||||
cat <<EOF >> ./configs/default_hooks/sxmo_hook_start.sh
|
||||
# rotate UI based on physical display angle by default
|
||||
sxmo_daemons.sh start autorotate sxmo_autorotate.sh
|
||||
|
@@ -18,6 +18,7 @@
|
||||
sane.roles.build-machine.enable = true;
|
||||
sane.roles.build-machine.emulation = false;
|
||||
sane.zsh.showDeadlines = false; # ~/knowledge doesn't always exist
|
||||
sane.programs.consoleUtils.suggestedPrograms = [ "desktopConsoleUtils" ];
|
||||
sane.services.dyn-dns.enable = true;
|
||||
sane.services.wg-home.enable = true;
|
||||
sane.services.wg-home.enableWan = true;
|
||||
|
@@ -119,6 +119,12 @@ let
|
||||
## The Witch Trials of J.K. Rowling
|
||||
## - <https://www.thefp.com/witchtrials>
|
||||
(mkPod "https://feeds.megaphone.fm/RUNMED9919162779" // pol // infrequent)
|
||||
## Atlas Obscura
|
||||
(fromDb "feeds.simplecast.com/xKJ93w_w" // uncat)
|
||||
## Ezra Klein Show
|
||||
(fromDb "feeds.simplecast.com/82FI35Px" // pol)
|
||||
## Wireshark Podcast o_0
|
||||
(fromDb "sharkbytes.transistor.fm" // tech)
|
||||
];
|
||||
|
||||
texts = [
|
||||
@@ -220,6 +226,7 @@ let
|
||||
(fromDb "preposterousuniverse.com" // rat)
|
||||
(mkSubstack "eliqian" // rat // weekly)
|
||||
(mkText "https://acoup.blog/feed" // rat // weekly)
|
||||
(fromDb "mindingourway.com" // rat)
|
||||
|
||||
## mostly dating topics. not advice, or humor, but looking through a social lens
|
||||
(fromDb "putanumonit.com" // rat)
|
||||
|
@@ -72,10 +72,10 @@
|
||||
# "cdrtools"
|
||||
"clinfo"
|
||||
"dmidecode"
|
||||
"dtrx" # `unar` alternative, "Do The Right eXtraction"
|
||||
"efivar"
|
||||
# "flashrom"
|
||||
"fwupd"
|
||||
"gh" # MS GitHub cli
|
||||
"git" # needed as a user package, for config.
|
||||
# "gnupg"
|
||||
# "gocryptfs"
|
||||
@@ -90,8 +90,6 @@
|
||||
"neovim" # needed as a user package, for swap persistence
|
||||
# "nettools"
|
||||
# "networkmanager"
|
||||
"nix-index"
|
||||
"nixpkgs-review"
|
||||
# "nixos-generators"
|
||||
"nmon"
|
||||
# "node2nix"
|
||||
@@ -102,15 +100,14 @@
|
||||
# "python3Packages.eyeD3" # music tagging
|
||||
"ripgrep" # needed as a user package so that its user-level config file can be installed
|
||||
"rsync"
|
||||
"sane-scripts"
|
||||
"sequoia"
|
||||
"sane-scripts" # TODO: split; moby doesn't need the duplicity related ones
|
||||
"snapper"
|
||||
"sops"
|
||||
"speedtest-cli"
|
||||
# "ssh-to-age"
|
||||
"sudo"
|
||||
# "tageditor" # music tagging
|
||||
"unar"
|
||||
# "unar"
|
||||
"wireguard-tools"
|
||||
"xdg-terminal-exec"
|
||||
"xdg-utils" # for xdg-open
|
||||
@@ -119,6 +116,16 @@
|
||||
];
|
||||
};
|
||||
|
||||
desktopConsoleUtils = {
|
||||
package = null;
|
||||
suggestedPrograms = [
|
||||
"gh" # MS GitHub cli
|
||||
"nix-index"
|
||||
"nixpkgs-review"
|
||||
"sequoia"
|
||||
];
|
||||
};
|
||||
|
||||
consoleMediaUtils = {
|
||||
package = null;
|
||||
suggestedPrograms = [
|
||||
@@ -134,7 +141,7 @@
|
||||
suggestedPrograms = [
|
||||
"aerc" # email client
|
||||
"msmtp" # sendmail
|
||||
"offlineimap" # email mailox sync
|
||||
"offlineimap" # email mailbox sync
|
||||
"sfeed" # RSS fetcher
|
||||
"visidata" # TUI spreadsheet viewer/editor
|
||||
"w3m" # web browser
|
||||
@@ -177,12 +184,6 @@
|
||||
|
||||
fluffychat-moby.persist.plaintext = [ ".local/share/chat.fluffy.fluffychat" ];
|
||||
|
||||
# XXX by default fractal stores its state in ~/.local/share/<UUID>.
|
||||
# after logging in, manually change ~/.local/share/keyrings/... to point it to some predictable subdir.
|
||||
# then reboot (so that libsecret daemon re-loads the keyring...?)
|
||||
fractal-latest.persist.private = [ ".local/share/fractal" ];
|
||||
fractal-next.persist.private = [ ".local/share/fractal" ];
|
||||
|
||||
# MS GitHub stores auth token in .config
|
||||
# TODO: we can populate gh's stuff statically; it even lets us use the same oauth across machines
|
||||
gh.persist.private = [ ".config/gh" ];
|
||||
@@ -193,13 +194,6 @@
|
||||
|
||||
mumble.persist.private = [ ".local/share/Mumble" ];
|
||||
|
||||
# not strictly necessary, but allows caching articles; offline use, etc.
|
||||
nheko.persist.private = [
|
||||
".config/nheko" # config file (including client token)
|
||||
".cache/nheko" # media cache
|
||||
".local/share/nheko" # per-account state database
|
||||
];
|
||||
|
||||
# settings (electron app)
|
||||
obsidian.persist.plaintext = [ ".config/obsidian" ];
|
||||
|
||||
|
@@ -9,6 +9,7 @@
|
||||
./evince.nix
|
||||
./firefox.nix
|
||||
./fontconfig.nix
|
||||
./fractal.nix
|
||||
./git.nix
|
||||
./gnome-feeds.nix
|
||||
./gpodder.nix
|
||||
@@ -21,11 +22,13 @@
|
||||
./koreader
|
||||
./libreoffice.nix
|
||||
./lemoa.nix
|
||||
./megapixels.nix
|
||||
./mepo.nix
|
||||
./mpv.nix
|
||||
./msmtp.nix
|
||||
./neovim.nix
|
||||
./newsflash.nix
|
||||
./nheko.nix
|
||||
./nix-index.nix
|
||||
./obsidian.nix
|
||||
./offlineimap.nix
|
||||
|
@@ -8,7 +8,8 @@
|
||||
serif = [ "DejaVu Serif" ];
|
||||
sansSerif = [ "DejaVu Sans" ];
|
||||
};
|
||||
enableDefaultFonts = true;
|
||||
fonts = with pkgs; [ font-awesome noto-fonts-emoji hack-font ];
|
||||
#vvv enables dejavu_fonts, freefont_ttf, gyre-fonts, liberation_ttf, unifont, noto-fonts-emoji
|
||||
enableDefaultPackages = true;
|
||||
packages = with pkgs; [ font-awesome noto-fonts-emoji hack-font ];
|
||||
};
|
||||
}
|
||||
|
12
hosts/common/programs/fractal.nix
Normal file
12
hosts/common/programs/fractal.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
sane.programs.fractal = {
|
||||
# package = pkgs.fractal-latest;
|
||||
package = pkgs.fractal-next;
|
||||
|
||||
# XXX by default fractal stores its state in ~/.local/share/<UUID>.
|
||||
# after logging in, manually change ~/.local/share/keyrings/... to point it to some predictable subdir.
|
||||
# then reboot (so that libsecret daemon re-loads the keyring...?)
|
||||
persist.private = [ ".local/share/fractal" ];
|
||||
};
|
||||
}
|
@@ -3,7 +3,9 @@
|
||||
{
|
||||
sane.programs.jellyfin-media-player = {
|
||||
# package = pkgs.jellyfin-media-player;
|
||||
package = pkgs.jellyfin-media-player-qt6;
|
||||
# qt6 version is slightly buggy, but also most qtwebengine apps (e.g. zeal) are on qt5
|
||||
# so using qt6 would force yet *another* qtwebengine compile.
|
||||
# package = pkgs.jellyfin-media-player-qt6;
|
||||
|
||||
# jellyfin stores things in a bunch of directories: this one persists auth info.
|
||||
# it *might* be possible to populate this externally (it's Qt stuff), but likely to
|
||||
|
@@ -1,4 +1,4 @@
|
||||
{ config, lib, sane-lib, ... }:
|
||||
{ config, lib, pkgs, sane-lib, ... }:
|
||||
|
||||
let
|
||||
feeds = sane-lib.feeds;
|
||||
@@ -10,11 +10,12 @@ let
|
||||
# limit = 0 => download and keep *all* articles
|
||||
# download_full_article = true => populate feed by downloading the webpage -- not just what's encoded in the RSS <article> tags
|
||||
# - use this for articles where the RSS only encodes content previews
|
||||
# - in practice, most articles don't work with download_full_article = false
|
||||
# enable_filter = true => only render content that matches the filter_element css selector.
|
||||
let fields = [
|
||||
(lib.escapeShellArg feed.url)
|
||||
"limit = 5"
|
||||
"download_full_article = false"
|
||||
"download_full_article = true"
|
||||
"include_images = true"
|
||||
"enable_filter = false"
|
||||
"filter_element = \"\""
|
||||
@@ -22,6 +23,7 @@ let
|
||||
) wantedFeeds;
|
||||
in {
|
||||
sane.programs.koreader = {
|
||||
package = pkgs.koreader-from-src;
|
||||
# koreader applies these lua "patches" at boot:
|
||||
# - <https://github.com/koreader/koreader/wiki/User-patches>
|
||||
# - TODO: upstream this patch to koreader
|
||||
|
@@ -1,14 +1,20 @@
|
||||
{ ... }:
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
# libreoffice: disable first-run stuff
|
||||
sane.programs.libreoffice-fresh.fs.".config/libreoffice/4/user/registrymodifications.xcu".symlink.text = ''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<oor:items xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="FirstRun" oor:op="fuse"><value>false</value></prop></item>
|
||||
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="ShowTipOfTheDay" oor:op="fuse"><value>false</value></prop></item>
|
||||
</oor:items>
|
||||
'';
|
||||
# <item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeDonateShown" oor:op="fuse"><value>1667693880</value></prop></item>
|
||||
# <item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeGetInvolvedShown" oor:op="fuse"><value>1667693880</value></prop></item>
|
||||
sane.programs.libreoffice = {
|
||||
# package = pkgs.libreoffice-bin;
|
||||
# package = pkgs.libreoffice-still;
|
||||
package = pkgs.libreoffice-fresh;
|
||||
|
||||
# disable first-run stuff
|
||||
fs.".config/libreoffice/4/user/registrymodifications.xcu".symlink.text = ''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<oor:items xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="FirstRun" oor:op="fuse"><value>false</value></prop></item>
|
||||
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="ShowTipOfTheDay" oor:op="fuse"><value>false</value></prop></item>
|
||||
</oor:items>
|
||||
'';
|
||||
# <item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeDonateShown" oor:op="fuse"><value>1667693880</value></prop></item>
|
||||
# <item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeGetInvolvedShown" oor:op="fuse"><value>1667693880</value></prop></item>
|
||||
};
|
||||
}
|
||||
|
11
hosts/common/programs/megapixels.nix
Normal file
11
hosts/common/programs/megapixels.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
sane.programs.megapixels.package = pkgs.megapixels.override {
|
||||
# megapixels uses zbar to read barcodes.
|
||||
# zbar by default ships zbarcam-gtk and zbarcam-qt, neither of which megapixels needs.
|
||||
# but the latter takes a dep on qt, which bloats the closure and the build, so disable this feature.
|
||||
zbar = pkgs.zbar.override {
|
||||
enableVideo = false;
|
||||
};
|
||||
};
|
||||
}
|
@@ -9,12 +9,18 @@
|
||||
persist.private = [
|
||||
{ type = "file"; path = ".cache/mepo/savestate"; }
|
||||
];
|
||||
|
||||
# give mepo access to gpsd for location data, if that's enabled.
|
||||
# same with geoclue2.
|
||||
suggestedPrograms = lib.optional config.services.gpsd.enable "gpsd"
|
||||
++ lib.optional config.services.geoclue2.enable "geoclue2-with-demo-agent"
|
||||
;
|
||||
};
|
||||
|
||||
programs.mepo = lib.mkIf config.sane.programs.mepo.enabled {
|
||||
# enable location services (via geoclue)
|
||||
enable = true;
|
||||
# more precise, via gpsd ("may require additional config")
|
||||
# programs.mepo.gpsd.enable = true
|
||||
};
|
||||
# programs.mepo = lib.mkIf config.sane.programs.mepo.enabled {
|
||||
# # enable location services (via geoclue)
|
||||
# enable = true;
|
||||
# # more precise, via gpsd ("may require additional config")
|
||||
# # programs.mepo.gpsd.enable = true
|
||||
# };
|
||||
}
|
||||
|
@@ -1,13 +1,81 @@
|
||||
{ ... }:
|
||||
# mpv docs:
|
||||
# - <https://mpv.io/manual/master>
|
||||
# - <https://github.com/mpv-player/mpv/wiki>
|
||||
# curated mpv mods/scripts/users:
|
||||
# - <https://github.com/stax76/awesome-mpv>
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
sane.programs.mpv = {
|
||||
package = pkgs.wrapMpv pkgs.mpv-unwrapped {
|
||||
scripts = with pkgs.mpvScripts; [
|
||||
mpris
|
||||
# uosc
|
||||
pkgs.mpv-uosc-latest
|
||||
];
|
||||
};
|
||||
persist.plaintext = [ ".config/mpv/watch_later" ];
|
||||
# format is <key>=%<length>%<value>
|
||||
fs.".config/mpv/mpv.conf".symlink.text = ''
|
||||
save-position-on-quit=%3%yes
|
||||
keep-open=%3%yes
|
||||
fs.".config/mpv/input.conf".symlink.text = ''
|
||||
# let volume keys be interpreted by the system.
|
||||
# this is important for sxmo.
|
||||
VOLUME_UP ignore
|
||||
VOLUME_DOWN ignore
|
||||
'';
|
||||
fs.".config/mpv/mpv.conf".symlink.text = ''
|
||||
save-position-on-quit=yes
|
||||
keep-open=yes
|
||||
|
||||
# use uosc instead (for On Screen Controls)
|
||||
osc=no
|
||||
# uosc provides its own seeking/volume indicators, so you also don't need this
|
||||
osd-bar=no
|
||||
# uosc will draw its own window controls if you disable window border
|
||||
border=no
|
||||
'';
|
||||
fs.".config/mpv/script-opts/osc.conf".symlink.text = ''
|
||||
# make the on-screen controls *always* visible
|
||||
# unfortunately, this applies to full-screen as well
|
||||
# - docs: <https://mpv.io/manual/master/#on-screen-controller-visibility>
|
||||
# if uosc is installed, this file is unused
|
||||
visibility=always
|
||||
'';
|
||||
fs.".config/mpv/script-opts/uosc.conf".symlink.text = let
|
||||
play_pause_btn = "cycle:play_arrow:pause:no=pause/yes=play_arrow";
|
||||
rev_btn = "command:replay_10:seek -10";
|
||||
fwd_btn = "command:forward_30:seek 30";
|
||||
in ''
|
||||
# docs:
|
||||
# - <https://github.com/tomasklaen/uosc>
|
||||
# - <https://superuser.com/questions/1775550/add-new-buttons-to-mpv-uosc-ui>
|
||||
timeline_style=bar
|
||||
timeline_persistency=paused,audio
|
||||
controls_persistency=paused,audio
|
||||
volume_persistency=audio
|
||||
volume_opacity=0.75
|
||||
|
||||
# speed_persistency=paused,audio
|
||||
# vvv want a close button?
|
||||
top_bar=always
|
||||
top_bar_persistency=paused
|
||||
|
||||
controls=menu,<video>subtitles,<has_many_audio>audio,<has_many_video>video,<has_many_edition>editions,<stream>stream-quality,space,${rev_btn},${play_pause_btn},${fwd_btn},space,speed:1.0,gap,<video>fullscreen
|
||||
|
||||
text_border=6.0
|
||||
font_bold=yes
|
||||
background_text=ff8080
|
||||
foreground=ff8080
|
||||
|
||||
ui_scale=1.0
|
||||
'';
|
||||
|
||||
mime.priority = 200; # default = 100; 200 means to yield to other apps
|
||||
mime.associations."audio/flac" = "mpv.desktop";
|
||||
mime.associations."audio/mpeg" = "mpv.desktop";
|
||||
mime.associations."audio/x-vorbis+ogg" = "mpv.desktop";
|
||||
mime.associations."video/mp4" = "mpv.desktop";
|
||||
mime.associations."video/quicktime" = "mpv.desktop";
|
||||
mime.associations."video/webm" = "mpv.desktop";
|
||||
mime.associations."video/x-matroska" = "mpv.desktop";
|
||||
};
|
||||
}
|
||||
|
||||
|
9
hosts/common/programs/nheko.nix
Normal file
9
hosts/common/programs/nheko.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{ ... }:
|
||||
{
|
||||
# not strictly necessary, but allows caching articles; offline use, etc.
|
||||
sane.programs.nheko.persist.private = [
|
||||
".config/nheko" # config file (including client token)
|
||||
".cache/nheko" # media cache
|
||||
".local/share/nheko" # per-account state database
|
||||
];
|
||||
}
|
@@ -21,11 +21,11 @@
|
||||
"epiphany" # gnome's web browser
|
||||
"evince" # works on phosh
|
||||
# "foliate" # e-book reader
|
||||
# "fractal" # matrix client
|
||||
# "gnome.cheese"
|
||||
# "gnome-feeds" # RSS reader (with claimed mobile support)
|
||||
"gnome.file-roller"
|
||||
# "gnome.gnome-maps" # works on phosh
|
||||
"gnome.nautilus"
|
||||
# "gnome-podcasts"
|
||||
# "gnome.gnome-system-monitor"
|
||||
# "gnome.gnome-terminal" # works on phosh
|
||||
@@ -37,7 +37,7 @@
|
||||
"lemoa" # lemmy app
|
||||
# "lollypop"
|
||||
"mepo" # maps viewer
|
||||
# "mpv"
|
||||
"mpv"
|
||||
# "networkmanagerapplet"
|
||||
# "newsflash"
|
||||
"nheko"
|
||||
@@ -50,7 +50,6 @@
|
||||
# "tdesktop" # broken on phosh
|
||||
# "tokodon"
|
||||
"tuba" # mastodon/pleroma client (stores pw in keyring)
|
||||
"vlc"
|
||||
# "whalebird" # pleroma client (Electron). input is broken on phosh.
|
||||
"xterm" # broken on phosh
|
||||
];
|
||||
@@ -62,7 +61,7 @@
|
||||
"audacity"
|
||||
"blanket" # ambient noise generator
|
||||
"brave" # for the integrated wallet -- as a backup
|
||||
"chromium"
|
||||
# "chromium" # chromium takes hours to build. brave is chromium-based, distributed in binary form, so prefer it.
|
||||
"dino"
|
||||
"electrum"
|
||||
"element-desktop"
|
||||
@@ -71,6 +70,7 @@
|
||||
"gimp" # broken on phosh
|
||||
"gnome.dconf-editor"
|
||||
"gnome.gnome-disk-utility"
|
||||
"gnome.nautilus" # file browser
|
||||
# "gnome.totem" # video player, supposedly supports UPnP
|
||||
"handbrake"
|
||||
"hase"
|
||||
@@ -79,11 +79,12 @@
|
||||
"kdenlive"
|
||||
"kid3" # audio tagging
|
||||
"krita"
|
||||
"libreoffice-fresh"
|
||||
"libreoffice" # TODO: replace with an office suite that uses saner packaging?
|
||||
"mumble"
|
||||
"obsidian"
|
||||
"slic3r"
|
||||
"steam"
|
||||
"vlc"
|
||||
"wireshark" # could maybe ship the cli as sysadmin pkg
|
||||
];
|
||||
};
|
||||
@@ -92,6 +93,7 @@
|
||||
package = null;
|
||||
suggestedPrograms = [
|
||||
"megapixels" # camera app
|
||||
"portfolio-filemanager"
|
||||
];
|
||||
};
|
||||
|
||||
|
@@ -13,11 +13,12 @@ conky.config = {
|
||||
alignment = 'middle_middle',
|
||||
own_window_type = 'desktop',
|
||||
-- own_window_argb_value: opacity of the background (0-255)
|
||||
own_window_argb_value = 92,
|
||||
own_window_colour = '#beebe5', -- beebe5 matches nixos flake bg color
|
||||
own_window_argb_value = 0,
|
||||
-- own_window_argb_value = 92,
|
||||
-- own_window_colour = '#beebe5', -- beebe5 matches nixos flake bg color
|
||||
|
||||
-- "border" pads the entire conky window
|
||||
-- this can be used to control the extend of the own_window background
|
||||
-- this can be used to control the extent of the own_window background
|
||||
border_inner_margin = 8,
|
||||
-- optionally, actually draw borders
|
||||
-- draw_borders = true,
|
||||
|
@@ -126,6 +126,11 @@ in
|
||||
default = false;
|
||||
description = "inhibit lock-on-idle and screenoff-on-idle";
|
||||
};
|
||||
sane.gui.sxmo.nogesture = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "don't start lisgd gesture daemon by default";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkMerge [
|
||||
@@ -171,7 +176,7 @@ in
|
||||
services.blueman.enable = true;
|
||||
|
||||
# TODO: nerdfonts is 4GB. it accepts an option to ship only some fonts: probably want to use that.
|
||||
fonts.fonts = [ pkgs.nerdfonts ];
|
||||
fonts.packages = [ pkgs.nerdfonts ];
|
||||
|
||||
# some programs (e.g. fractal/nheko) **require** a "Secret Service Provider"
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
@@ -213,9 +218,37 @@ in
|
||||
wantedBy = [ "display-manager.service" ];
|
||||
};
|
||||
|
||||
# if superd fails to start a service within 100ms, it'll try to start again
|
||||
# the fallout of this is that during intense lag (e.g. OOM or swapping) it can
|
||||
# start the service many times.
|
||||
# see <repo:craftyguy/superd:internal/cmd/cmd.go>
|
||||
# TODO: better fix may be to patch `sxmo_hook_lisgdstart.sh` and force it to behave as a singleton
|
||||
systemd.services."dedupe-sxmo-lisgd" = {
|
||||
description = "kill duplicate lisgd processes started by superd";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
};
|
||||
script = ''
|
||||
if [ "$(${pkgs.procps}/bin/pgrep -c lisgd)" -gt 1 ]; then
|
||||
echo 'killing duplicated lisgd daemons'
|
||||
${pkgs.psmisc}/bin/killall lisgd # let superd restart it
|
||||
fi
|
||||
'';
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
};
|
||||
systemd.timers."dedupe-sxmo-lisgd" = {
|
||||
wantedBy = [ "dedupe-sxmo-lisgd.service" ];
|
||||
timerConfig = {
|
||||
OnUnitActiveSec = "2min";
|
||||
};
|
||||
};
|
||||
|
||||
sane.user.fs.".cache/sxmo/sxmo.noidle" = lib.mkIf cfg.noidle {
|
||||
symlink.text = "";
|
||||
};
|
||||
sane.user.fs.".cache/sxmo/sxmo.nogesture" = lib.mkIf cfg.nogesture {
|
||||
symlink.text = "";
|
||||
};
|
||||
sane.user.fs.".config/sxmo/profile".symlink.text = let
|
||||
mkKeyValue = key: value: ''export ${key}="${value}"'';
|
||||
userConfig = lib.generators.toKeyValue { inherit mkKeyValue; } cfg.settings;
|
||||
@@ -238,8 +271,8 @@ in
|
||||
in
|
||||
(pkgs.formats.json {}).generate "waybar-config.json" waybar-config;
|
||||
|
||||
# sane.user.fs.".config/waybar/style.css".symlink.text =
|
||||
# builtins.readFile ./waybar-style.css;
|
||||
sane.user.fs.".config/waybar/style.css".symlink.text =
|
||||
builtins.readFile ./waybar-style.css;
|
||||
|
||||
sane.user.fs.".config/sxmo/conky.conf".symlink.target = let
|
||||
battery_estimate = pkgs.static-nix-shell.mkBash {
|
||||
|
@@ -39,6 +39,21 @@ mode "menu" {
|
||||
bindsym --input-device=1:1:1c21800.lradc XF86AudioMute exec nothing # just a placeholder for "menu" mode
|
||||
}
|
||||
|
||||
hide_edge_borders smart
|
||||
default_border pixel 1
|
||||
titlebar_border_thickness 1
|
||||
# XX YY distance from edge of window title to edge of text
|
||||
# the YY distance here determines the heigh of the overall title
|
||||
titlebar_padding 12 1
|
||||
title_align center
|
||||
|
||||
### tab colors (#border #background #text [#indicator #childBorder])
|
||||
# fucused & unfocused are the main interest
|
||||
client.focused #1f5e54 #418379 #ffffff
|
||||
client.focused_inactive #1f5e54 #5f676a #ffffff
|
||||
client.unfocused #1f5e54 #1f554c #b4b4b4
|
||||
client.urgent #e64291 #e64291 #ffffff
|
||||
|
||||
### Key bindings
|
||||
#
|
||||
# Basics:
|
||||
@@ -214,10 +229,6 @@ bar {
|
||||
for_window [app_id="foot" title=".*sxmo/modem/.*/draft.txt.*"] resize set height 25
|
||||
for_window [title="megapixels"] inhibit_idle open
|
||||
|
||||
default_border pixel 3
|
||||
titlebar_border_thickness 3
|
||||
hide_edge_borders smart
|
||||
|
||||
include /etc/sway/config.d/*
|
||||
|
||||
exec 'printf %s "$SWAYSOCK" > "$XDG_RUNTIME_DIR"/sxmo.swaysock'
|
||||
|
@@ -4,7 +4,7 @@
|
||||
[
|
||||
{ # TOP BAR
|
||||
layer = "top";
|
||||
height = 32;
|
||||
height = 26;
|
||||
|
||||
modules-left = [ "sway/workspaces" ];
|
||||
modules-center = [ ];
|
||||
|
64
hosts/modules/gui/sxmo/waybar-style.css
Normal file
64
hosts/modules/gui/sxmo/waybar-style.css
Normal file
@@ -0,0 +1,64 @@
|
||||
/* style docs: https://github.com/Alexays/Waybar/wiki/Styling */
|
||||
/* defaults: https://github.com/Alexays/Waybar/blob/master/resources/style.css */
|
||||
|
||||
window#waybar {
|
||||
background-color: #418379;
|
||||
border-bottom: 0px solid #1f5e54;
|
||||
color: #ffffff;
|
||||
transition-property: background-color;
|
||||
transition-duration: .2s;
|
||||
}
|
||||
|
||||
.modules-right {
|
||||
/* workspace buttons (LHS) get padding between it and the screen edge */
|
||||
/* replicate that same padding for whatever's on the RHS (i.e. the clock) */
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 5px;
|
||||
background-color: #418379;
|
||||
color: #ffffff;
|
||||
/* Use box-shadow instead of border so the text isn't offset */
|
||||
box-shadow: inset 0 0px #1f5e54;
|
||||
/* Avoid rounded borders under each workspace name */
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
/* i don't want hover effects, so reset this styling to be the same as default button */
|
||||
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
||||
background: inherit;
|
||||
box-shadow: inherit;
|
||||
text-shadow: inherit;
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
background-color: #63a89c;
|
||||
box-shadow: inset 0 0px #2c8274;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: #e64291;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
|
||||
#tray {
|
||||
background-color: #418379;
|
||||
}
|
||||
|
||||
#tray > .passive {
|
||||
-gtk-icon-effect: dim;
|
||||
}
|
||||
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: #e64291;
|
||||
}
|
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 3673943,
|
||||
"content_type": "application/xml; charset=utf-8",
|
||||
"description": "*** Named a best podcast of 2021 by Time, Vulture, Esquire and The Atlantic. ***\nEach Tuesday and Friday, Ezra Klein invites you into a conversation on something that matters. How do we address climate change if the political system fails to act? Has the logic of markets infiltrated too many aspects of our lives? What is the future of the Republican Party? What do psychedelics teach us about consciousness? What does sci-fi understand about our present that we miss? Can our food system be just to humans and animals alike?\n\nListen to this podcast in New York Times Audio, our new iOS app for news subscribers. Download now at nytimes.com/audioapp",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [
|
||||
"https://simplecast.superfeedr.com/"
|
||||
],
|
||||
"is_podcast": true,
|
||||
"is_push": true,
|
||||
"item_count": 255,
|
||||
"last_updated": "2023-07-25T09:00:00+00:00",
|
||||
"score": 24,
|
||||
"self_url": "https://feeds.simplecast.com/82FI35Px",
|
||||
"site_name": "",
|
||||
"site_url": "",
|
||||
"title": "The Ezra Klein Show",
|
||||
"url": "https://feeds.simplecast.com/82FI35Px",
|
||||
"velocity": 0.275,
|
||||
"version": "rss20"
|
||||
}
|
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 1410917,
|
||||
"content_type": "application/xml; charset=utf-8",
|
||||
"description": "An audio guide to the world\u2019s strange, incredible, and wondrous places. Co-founder Dylan Thuras and a neighborhood of Atlas Obscura reporters explore a new wonder every day, Monday through Thursday. In under 15 minutes, they\u2019ll take you to an incredible place, and along the way, you\u2019ll meet some fascinating people and hear their stories. Our theme and end credit music is composed by Sam Tyndall.",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [
|
||||
"https://simplecast.superfeedr.com/"
|
||||
],
|
||||
"is_podcast": true,
|
||||
"is_push": true,
|
||||
"item_count": 571,
|
||||
"last_updated": "2023-07-27T04:05:00+00:00",
|
||||
"score": 24,
|
||||
"self_url": "https://feeds.simplecast.com/xKJ93w_w",
|
||||
"site_name": "",
|
||||
"site_url": "",
|
||||
"title": "The Atlas Obscura Podcast",
|
||||
"url": "https://feeds.simplecast.com/xKJ93w_w",
|
||||
"velocity": 0.647,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/mindingourway.com/default.json
Normal file
21
modules/data/feeds/sources/mindingourway.com/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 133561,
|
||||
"content_type": "text/xml; charset=utf-8",
|
||||
"description": "to the heavens",
|
||||
"favicon": "https://mindingourway.com/favicon.png",
|
||||
"favicon_data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAAnAAAAJwEqCZFPAAAE2klEQVR42u2dSasUVxxHW4zGiFmbrxHliU8NKMaF+AWcn34IcQIFA4pK4rAJZKcrNyKIOOCnUBwS5wnUlaIicbaXVYfC/7td1dXV3nPh7N6rvsNp+NH3f2/1et95m5iYmAJfAjYW6dkUwKYANgWwjcuCzwS3QCTAv6D0PGdYAWwKYFMAW2cF2AS4wDfBf4B/v6GIM6wANgWwKYCtMwv+A2CI++YPPdMQxlCoAAqgAAqgAArQTQE2Ay4gQ97MAEOhAiiAAiiAAijAeIS+aLMnqcDDUKgACqAACqAACtBZAaIiz9ugJMw0nm8oVAAFUAAFUAAF6MaCpxZ5lkJcA5+fWmBiKFQABVAABVAABWhGABZwtLoAAwhoKFQABVAABVCAsRCg38lFRTrQn1kgqcizhf5FBSidDoX9PkwWUQAFUAAFUICsBfgADoGfirTQwS2AE8wQ1uoEdz0Ucr36HAYfiyiAAiiAAihA1gJ8BFGBxW9FhjChUQFGo5s9DfR/pEWk/WcsBgyh7E/pC68ACqAACqAAWQvAdgXwAZ/AUTC3SAObPd883NkBAVIFTj2oMgcwpEdf4Gug1BRAARRAARQgXwEqPpCHL7eD/wE/8AH4HfD5dwCft65Ir+ON/a0YD8fL+VgB7gE+7x3geiUdjFEABVAABVCAfAWYxgB/Bamh8TIYq9A3hFB4AUSh7jpot6BHARRAARRAAbIVoGLAs8E+8B5EL23aW6Q35q0/hl0gGj8FOAhKPwx1YYAKoAAKoAAKkKcAQ5gAhsYjIGmzqYXx/QgOABbdRuPfXaSX4TdAARRAARRAAcZTgIofQqLNnnMgCo08iLGsSAvjY2PBRRTqLoLv6zJqBVAABVAABchZgFpFnn0WgNTNplqhsSLU7QdRqOPBDB7cGGoRqQIogAIogAIoQIsLnlrkubbIAM9vukh1ObgLUoswS5dcTWN8tYpIFUABFEABFEABRihAdEHCE9DoACpC41UQhcYo1PGHmfJFi/X7z4sxn4Juh0IFUAAFUAAFyEaAAX7IIPfBHjC/yAD9mwRvQdQ/bkatKjJAf34BewFDatS/0W4WKYACKIACKEDOAkQvTHgEUgVhKDsLVoM/QBTq2J/U0PgXWAPY39SiUC7wYzDaUKgACqAACqAA2QhQsRkTvSBhPZgBVoIzIHXCIk4BvlCBh1v/AXU/n+PheDkfnK+RXkatAAqgAAqgAFkLMAXYgc+AFxqwAGMe4AL8DeouAEPceUBBUi+0iDgJKODPgPPFy6E538MNhQqgAAqgAAqQjQAVoY8vjWo6FD0D0f+fACyqfAXq9vc1WAtShX0BKGjd/tYLhQqgAAqgAAqQswDRy5tvAG7OHAPR5cepMASlhjZurjwEqQUjUSirG1qPA853s4dLFUABFEABFCAbAeoe7qwowoxeXhwN+EvLNL2AqZdBR3/PBV4K6m0WKYACKIACKEDOAmwFfAB/CPoTNB3yJO0LwyLV6KBJORQqgAIogAIoQM4CRJcijTqkRbwBl8BOsAQsArz0iS925ObQuAlUCoUKoAAKoAAKkLUAo+7QS8AXSOwAXMCkixmHcFCGP4SxvxwPxzvS+VcABVAABVAABajBc3AabAO82HG8XorU/CVbCwHni/PJ+VYABVAABVAABRiEr4mwVmPpPyoAAAAAAElFTkSuQmCC",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 15,
|
||||
"last_updated": "2019-12-21T19:28:00+00:00",
|
||||
"score": 16,
|
||||
"self_url": "https://mindingourway.com/rss/",
|
||||
"site_name": "Minding our way",
|
||||
"site_url": "https://mindingourway.com",
|
||||
"title": "Minding our way",
|
||||
"url": "https://mindingourway.com/rss/",
|
||||
"velocity": 0.01,
|
||||
"version": "rss20"
|
||||
}
|
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 26554,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "Welcome to the SharkBytes Podcast. We will discuss all things Wireshark, as well as topics from the world of Packet Analysis and SharkFest, our packet analysis and developer conference. We'll be hanging out with interesting people from diverse backgrounds in the industry and we'll also learn why the truth is always in the packets. Support this podcast: <a href=\"https://podcasters.spotify.com/pod/show/sharkbytes/support\" rel=\"payment\">https://podcasters.spotify.com/pod/show/sharkbytes/support</a>",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [
|
||||
"https://pubsubhubbub.appspot.com/"
|
||||
],
|
||||
"is_podcast": true,
|
||||
"is_push": true,
|
||||
"item_count": 8,
|
||||
"last_updated": "2023-06-29T15:00:00+00:00",
|
||||
"score": 2,
|
||||
"self_url": "https://anchor.fm/s/d4b7d750/podcast/rss",
|
||||
"site_name": "",
|
||||
"site_url": "",
|
||||
"title": "SharkBytes Podcast",
|
||||
"url": "https://anchor.fm/s/d4b7d750/podcast/rss",
|
||||
"velocity": 0.025,
|
||||
"version": "rss20"
|
||||
}
|
@@ -77,7 +77,7 @@ in [
|
||||
# hash = "sha256-eTwEbVULYjmOW7zUFcTUqvBZqUFjHTKFhvmU2m3XQeo=";
|
||||
# })
|
||||
|
||||
./2022-12-19-i2p-aarch64.patch
|
||||
# ./2022-12-19-i2p-aarch64.patch
|
||||
|
||||
# fix for CMA memory leak in mesa: <https://gitlab.freedesktop.org/mesa/mesa/-/issues/8198>
|
||||
# fixed in mesa 22.3.6: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21330/diffs>
|
||||
@@ -221,6 +221,62 @@ in [
|
||||
hash = "sha256-rD0es4uUbaLMrI9ZB2HzPmRLyu/ixNBLAFyDJtFHNko=";
|
||||
})
|
||||
|
||||
(fetchpatch' {
|
||||
title = "p11-kit: build with meson";
|
||||
prUrl = "https://github.com/NixOS/nixpkgs/pull/244633";
|
||||
hash = "sha256-+z6hosSyt6ynLpUKS0TsHRoLOS8ck/SK9Y7W2zVUnCQ=";
|
||||
})
|
||||
(fetchpatch' {
|
||||
title = "p11-kit: use mesonEmulatorHook for cross compilation";
|
||||
prUrl = "https://github.com/NixOS/nixpkgs/pull/245124";
|
||||
hash = "sha256-8NqqLBbjt1fLj4ZYhat7wPqQSv/aez9IwgSK2b4CfW8=";
|
||||
})
|
||||
|
||||
(fetchpatch' {
|
||||
title = "libgudev: fix cross failing to build checks";
|
||||
prUrl = "https://github.com/NixOS/nixpkgs/pull/245761";
|
||||
hash = "sha256-jEQeGAcDGrv0TYouBTfn5ubWaosWg/ecmUW0ii1QIVs=";
|
||||
})
|
||||
|
||||
(fetchpatch' {
|
||||
title = "wvkbd: support cross compilation";
|
||||
saneCommit = "34379f5770662b483ab0cbe252cf23dd663d84dc";
|
||||
hash = "sha256-Duim5hPBtfGePBte29ZUtojyRAts9lQlbleUsTJNkwI=";
|
||||
})
|
||||
(fetchpatch' {
|
||||
title = "python310Packages.gssapi: support cross compilation";
|
||||
saneCommit = "4766ae46f863734fbe96dc4e537870b6b3894cf4";
|
||||
hash = "sha256-qCAJjPRoH8nvKzB+uwDQtGQbFfHS/MiY7m1J0BMl7tY=";
|
||||
})
|
||||
(fetchpatch' {
|
||||
title = "perlPackages.FileBaseDir: 0.08 -> 0.09";
|
||||
saneCommit = "acc990b04bbe8c99587eadccc65f100c326ec204";
|
||||
hash = "sha256-8s789GGARJH1i088OGBjGGnL2l5m8Q+iBPS213QsS6A=";
|
||||
})
|
||||
(fetchpatch' {
|
||||
title = "xdg-utils: enable cross compilation";
|
||||
saneCommit = "b7aa5e0c1ec06723cf1594de192703a65be21497";
|
||||
hash = "sha256-4iE2EDIe3nSkB8xFXucyCH7k2oiIoBiuYZYAtF31G38=";
|
||||
})
|
||||
(fetchpatch' {
|
||||
title = "perlPackages.TestFile: 1.443 -> 1.993";
|
||||
saneCommit = "6cf080fb51d034f9c2ddd60cef7dee7d041afd3e";
|
||||
hash = "sha256-fAZpduh3JZeFixJ4yX0wkh/GRp0gYKsTT+XkNdpK7CU=";
|
||||
})
|
||||
|
||||
(fetchpatch' {
|
||||
title = "dtrx: 8.5.1 -> 8.5.3";
|
||||
prUrl = "https://github.com/NixOS/nixpkgs/pull/246282";
|
||||
saneCommit = "eba9bbc251db942ae27f87824cae643b5f3198c2";
|
||||
# hash = "sha256-wgpjUXQ/ZnRY5AJ9xOL2BToA7hDaokDiMmPkMt0Y5go=";
|
||||
hash = "sha256-awUDlibmxcJcdMZeBXcWR1U+P/GCxCH/lalhwZ5Er90=";
|
||||
})
|
||||
# (fetchpatch' {
|
||||
# title = "dtrx: don't double-wrap the binary";
|
||||
# saneCommit = "97a9d12b6c31a58e9067eae7cdcd3f53055c124c";
|
||||
# hash = "sha256-g+p96OrBOQAwwH7nwHBuM/KGeIrnBzh9u9lL0M0sYWo=";
|
||||
# })
|
||||
|
||||
# (fetchpatch' {
|
||||
# # N.B.: compiles, but runtime error on launch suggestive of some module not being shipped
|
||||
# title = "matrix-appservice-irc: 0.38.0 -> 1.0.0";
|
||||
|
@@ -1,3 +1,17 @@
|
||||
# upstreaming status:
|
||||
# - p11-kit builds on staging
|
||||
# - xdg-utils builds on servo branch
|
||||
# - xdg-utils is blocked on perl5.36.0-Module-Build
|
||||
# - needed for File-BaseDir, used by File-MimeInfo
|
||||
# - File-BaseDir can be updated to v0.09, which cross compiles with ease
|
||||
# - libgudev builds on servo branch
|
||||
# - gdk-pixbuf doesn't generate `gdk-pixbuf-thumbnailer` on cross
|
||||
# - been this way since 2018: <https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/merge_requests/20>
|
||||
# - as authored upstream, thumbnailer depends on loader.cache, and neither are built during cross compilation.
|
||||
# - nixos manually builds loader.cache in postInstall (via emulator).
|
||||
# - even though we have loader.cache, ordering means that thumbnailer still can't be built.
|
||||
# - solution is probably to integrate meson's cross_file stuff, and pushing all this emulation upstream.
|
||||
|
||||
final: prev:
|
||||
let
|
||||
inherit (prev) lib;
|
||||
@@ -36,6 +50,8 @@ let
|
||||
pkg
|
||||
);
|
||||
|
||||
wrapGAppsHook4Fix = p: rmNativeInputs [ final.wrapGAppsHook4 ] (addNativeInputs [ final.wrapGAppsNoGuiHook final.gtk4 ] p);
|
||||
|
||||
dontCheck = p: p.overrideAttrs (_: {
|
||||
doCheck = false;
|
||||
});
|
||||
@@ -46,23 +62,23 @@ let
|
||||
in {
|
||||
inherit emulated;
|
||||
|
||||
pkgsi686Linux = prev.pkgsi686Linux.extend (i686Self: i686Super: {
|
||||
# fixes eval-time error: "Unsupported cross architecture"
|
||||
# it happens even on a x86_64 -> x86_64 build:
|
||||
# - defining `config.nixpkgs.buildPlatform` to the non-default causes that setting to be inherited by pkgsi686.
|
||||
# - hence, `pkgsi686` on a non-cross build is ordinarily *emulated*:
|
||||
# defining a cross build causes it to also be cross (but to the right hostPlatform)
|
||||
# this has no inputs other than stdenv, and fetchurl, so emulating it is fine.
|
||||
tbb = prev.emulated.pkgsi686Linux.tbb;
|
||||
# tbb = i686Super.tbb.overrideAttrs (orig: (with i686Self; {
|
||||
# makeFlags = lib.optionals stdenv.cc.isClang [
|
||||
# "compiler=clang"
|
||||
# ] ++ (lib.optional (stdenv.buildPlatform != stdenv.hostPlatform)
|
||||
# (if stdenv.hostPlatform.isAarch64 then "arch=arm64"
|
||||
# else if stdenv.hostPlatform.isx86_64 then "arch=intel64"
|
||||
# else throw "Unsupported cross architecture: ${stdenv.buildPlatform.system} -> ${stdenv.hostPlatform.system}"));
|
||||
# }));
|
||||
});
|
||||
# pkgsi686Linux = prev.pkgsi686Linux.extend (i686Self: i686Super: {
|
||||
# # fixes eval-time error: "Unsupported cross architecture"
|
||||
# # it happens even on a x86_64 -> x86_64 build:
|
||||
# # - defining `config.nixpkgs.buildPlatform` to the non-default causes that setting to be inherited by pkgsi686.
|
||||
# # - hence, `pkgsi686` on a non-cross build is ordinarily *emulated*:
|
||||
# # defining a cross build causes it to also be cross (but to the right hostPlatform)
|
||||
# # this has no inputs other than stdenv, and fetchurl, so emulating it is fine.
|
||||
# tbb = prev.emulated.pkgsi686Linux.tbb;
|
||||
# # tbb = i686Super.tbb.overrideAttrs (orig: (with i686Self; {
|
||||
# # makeFlags = lib.optionals stdenv.cc.isClang [
|
||||
# # "compiler=clang"
|
||||
# # ] ++ (lib.optional (stdenv.buildPlatform != stdenv.hostPlatform)
|
||||
# # (if stdenv.hostPlatform.isAarch64 then "arch=arm64"
|
||||
# # else if stdenv.hostPlatform.isx86_64 then "arch=intel64"
|
||||
# # else throw "Unsupported cross architecture: ${stdenv.buildPlatform.system} -> ${stdenv.hostPlatform.system}"));
|
||||
# # }));
|
||||
# });
|
||||
|
||||
# packages which don't cross compile
|
||||
inherit (emulated)
|
||||
@@ -78,12 +94,12 @@ in {
|
||||
# nixpkgs hdf5 is at commit 3e847e003632bdd5fdc189ccbffe25ad2661e16f
|
||||
# hdf5 # configure: error: cannot run test program while cross compiling
|
||||
# http2
|
||||
ibus # "error: cannot run test program while cross compiling"
|
||||
jellyfin-web # in node-dependencies-jellyfin-web: "node: command not found" (nodePackages don't cross compile)
|
||||
# ibus # "error: cannot run test program while cross compiling"
|
||||
# jellyfin-web # in node-dependencies-jellyfin-web: "node: command not found" (nodePackages don't cross compile)
|
||||
# libgccjit # "../../gcc-9.5.0/gcc/jit/jit-result.c:52:3: error: 'dlclose' was not declared in this scope" (needed by emacs!)
|
||||
# libsForQt5 # if we emulate qt5, we're better off emulating libsForQt5 else qt complains about multiple versions of qtbase
|
||||
mepo # /build/source/src/sdlshim.zig:1:20: error: C import failed
|
||||
perlInterpreters # perl5.36.0-Module-Build perl5.36.0-Test-utf8 (see tracking issues ^)
|
||||
# perlInterpreters # perl5.36.0-Module-Build perl5.36.0-Test-utf8 (see tracking issues ^)
|
||||
# qgnomeplatform
|
||||
# qtbase
|
||||
# qt5 # qt5.qtbase, qt5.qtx11extras fails, but we can't selectively emulate them.
|
||||
@@ -180,6 +196,7 @@ in {
|
||||
# };
|
||||
# };
|
||||
|
||||
# 2023/07/27: upstreaming is blocked on xdg-utils, p11-kit, libgudev cross compilation
|
||||
blueman = prev.blueman.overrideAttrs (orig: {
|
||||
# configure: error: ifconfig or ip not found, install net-tools or iproute2
|
||||
nativeBuildInputs = orig.nativeBuildInputs ++ [ final.iproute2 ];
|
||||
@@ -187,21 +204,21 @@ in {
|
||||
bonsai = prev.bonsai.override {
|
||||
inherit (emulated) hare stdenv;
|
||||
};
|
||||
brltty = prev.brltty.override {
|
||||
# configure: error: no acceptable C compiler found in $PATH
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
cantarell-fonts = prev.cantarell-fonts.override {
|
||||
# fixes error where python3.10-skia-pathops dependency isn't available for the build platform
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
# brltty = prev.brltty.override {
|
||||
# # configure: error: no acceptable C compiler found in $PATH
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# cantarell-fonts = prev.cantarell-fonts.override {
|
||||
# # fixes error where python3.10-skia-pathops dependency isn't available for the build platform
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# fixes "FileNotFoundError: [Errno 2] No such file or directory: 'gtk4-update-icon-cache'"
|
||||
# - only required because of my wrapGAppsHook4 change
|
||||
celluloid = addNativeInputs [ final.gtk4 ] prev.celluloid;
|
||||
cdrtools = prev.cdrtools.override {
|
||||
# "configure: error: installation or configuration problem: C compiler cc not found."
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
# celluloid = wrapGAppsHook4Fix prev.celluloid;
|
||||
# cdrtools = prev.cdrtools.override {
|
||||
# # "configure: error: installation or configuration problem: C compiler cc not found."
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# cdrtools = prev.cdrtools.overrideAttrs (upstream: {
|
||||
# # can't get it to actually use our CC, even when specifying these explicitly
|
||||
# # CC = "${final.stdenv.cc}/bin/${final.stdenv.cc.targetPrefix}cc";
|
||||
@@ -210,10 +227,16 @@ in {
|
||||
# ];
|
||||
# });
|
||||
|
||||
# colord = prev.colord.override {
|
||||
# # doesn't fix: "ld: error adding symbols: file in wrong format"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
clapper = prev.clapper.overrideAttrs (upstream: {
|
||||
# use the host gjs (meson's find_program expects it to be executable)
|
||||
postPatch = (upstream.postPatch or "") + ''
|
||||
substituteInPlace bin/meson.build \
|
||||
--replace "find_program('gjs').path()" "'${final.gjs}/bin/gjs'"
|
||||
'';
|
||||
});
|
||||
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit, argyllcms, libavif cross compilation
|
||||
colord = prev.colord.overrideAttrs (upstream: {
|
||||
# fixes: (meson) ERROR: An exe_wrapper is needed but was not found. Please define one in cross file and check the command and/or add it to PATH.
|
||||
nativeBuildInputs = upstream.nativeBuildInputs ++ lib.optionals (!prev.stdenv.buildPlatform.canExecute prev.stdenv.hostPlatform) [
|
||||
@@ -221,23 +244,6 @@ in {
|
||||
];
|
||||
});
|
||||
|
||||
# conky = (prev.conky.override {
|
||||
# curlSupport = prev.stdenv.buildPlatform.canExecute prev.stdenv.hostPlatform;
|
||||
# # docbook2x dependency doesn't cross compile
|
||||
# docsSupport = prev.stdenv.buildPlatform.canExecute prev.stdenv.hostPlatform;
|
||||
# journalSupport = prev.stdenv.buildPlatform.canExecute prev.stdenv.hostPlatform;
|
||||
# # tries to invoke `toluapp`, which would likely compile to wrong platform?
|
||||
# luaSupport = prev.stdenv.buildPlatform.canExecute prev.stdenv.hostPlatform;
|
||||
# ncursesSupport = prev.stdenv.buildPlatform.canExecute prev.stdenv.hostPlatform;
|
||||
# wirelessSupport = prev.stdenv.buildPlatform.canExecute prev.stdenv.hostPlatform;
|
||||
# x11Support = prev.stdenv.buildPlatform.canExecute prev.stdenv.hostPlatform;
|
||||
# # lua = emulated.lua5_3_compat;
|
||||
# }
|
||||
# ).overrideAttrs (upstream: {
|
||||
# nativeBuildInputs = upstream.nativeBuildInputs ++ [ final.git ];
|
||||
# buildInputs = [ final.lua5_4_compat ];
|
||||
# cmakeFlags = upstream.cmakeFlags ++ ["-DLUA_INCLUDE_DIR=/tmp/"];
|
||||
# });
|
||||
conky = ((useEmulatedStdenv prev.conky).override {
|
||||
# docbook2x dependency doesn't cross compile
|
||||
docsSupport = prev.stdenv.buildPlatform.canExecute prev.stdenv.hostPlatform;
|
||||
@@ -245,18 +251,18 @@ in {
|
||||
nativeBuildInputs = upstream.nativeBuildInputs ++ [ final.git ];
|
||||
});
|
||||
|
||||
cozy = prev.cozy.override {
|
||||
cozy = prev.cozy.upstream.cozy.override {
|
||||
# fixes runtime error: "Settings schema 'org.gtk.Settings.FileChooser' is not installed"
|
||||
# otherwise gtk3+ schemas aren't added to XDG_DATA_DIRS
|
||||
inherit (emulated) wrapGAppsHook;
|
||||
};
|
||||
};
|
||||
# cozy = prev.cozy.override {
|
||||
# cozy = prev.cozy.upstream.cozy.override {
|
||||
# # fixes runtime error: "Settings schema 'org.gtk.Settings.FileChooser' is not installed"
|
||||
# # otherwise gtk3+ schemas aren't added to XDG_DATA_DIRS
|
||||
# inherit (emulated) wrapGAppsHook;
|
||||
# };
|
||||
# };
|
||||
|
||||
dante = prev.dante.override {
|
||||
# fixes: "configure: error: error: getaddrinfo() error value count too low"
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
# dante = prev.dante.override {
|
||||
# # fixes: "configure: error: error: getaddrinfo() error value count too low"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
|
||||
# dconf = (prev.dconf.override {
|
||||
# # we need dconf to build with vala, because dconf-editor requires that.
|
||||
@@ -278,16 +284,11 @@ in {
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
emacs = prev.emacs.override {
|
||||
nativeComp = false;
|
||||
nativeComp = false; # will be renamed to `withNativeCompilation` in future
|
||||
# TODO: we can specify 'action-if-cross-compiling' to actually invoke the test programs:
|
||||
# <https://www.gnu.org/software/autoconf/manual/autoconf-2.63/html_node/Runtime.html>
|
||||
};
|
||||
|
||||
epiphany = prev.epiphany.override {
|
||||
# fixes -msse2, -mfpmath=sse flags
|
||||
wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
};
|
||||
|
||||
firefox-extensions = prev.firefox-extensions.overrideScope' (self: super: {
|
||||
unwrapped = super.unwrapped // {
|
||||
browserpass-extension = super.unwrapped.browserpass-extension.override {
|
||||
@@ -335,37 +336,29 @@ in {
|
||||
mesonFlags = (lib.remove "-Ddocs=enabled" upstream.mesonFlags) ++ [ "-Ddocs=disabled" ];
|
||||
outputs = lib.remove "devdoc" upstream.outputs;
|
||||
});
|
||||
# fwupd = prev.fwupd.override {
|
||||
# # solves missing libgcab-1.0;
|
||||
# # new error: "meson.build:449:4: ERROR: Command "/nix/store/n7xrj3pnrgcr8igx7lfhz8197y67bk7k-python3-aarch64-unknown-linux-gnu-3.10.9-env/bin/python3 po/test-deps" failed with status 1."
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
gcr_4 = (
|
||||
# fixes (meson): "ERROR: Program 'gpg2 gpg' not found or not executable"
|
||||
mvToNativeInputs [ final.gnupg final.openssh ] prev.gcr_4
|
||||
).override {
|
||||
# fixes -msse2, -mfpmath=sse flags
|
||||
wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
};
|
||||
gnustep = prev.gnustep.overrideScope' (self: super: {
|
||||
# gnustep is going to need a *lot* of work/domain-specific knowledge to truly cross-compile,
|
||||
# base = emulated.gnustep.base;
|
||||
base = (super.base.override {
|
||||
# fixes: "configure: error: Your compiler does not appear to implement the -fconstant-string-class option needed for support of strings."
|
||||
# emulating gsmake amounts to emulating stdenv.
|
||||
inherit (emulated.gnustep) gsmakeDerivation;
|
||||
}).overrideAttrs (upstream: {
|
||||
# fixes: "checking FFI library usage... ./configure: line 11028: pkg-config: command not found"
|
||||
# nixpkgs has this in nativeBuildInputs... but that's failing when we partially emulate things.
|
||||
buildInputs = (upstream.buildInputs or []) ++ [ prev.pkg-config ];
|
||||
});
|
||||
});
|
||||
);
|
||||
# gnustep = prev.gnustep.overrideScope' (self: super: {
|
||||
# # gnustep is going to need a *lot* of work/domain-specific knowledge to truly cross-compile,
|
||||
# # base = emulated.gnustep.base;
|
||||
# base = (super.base.override {
|
||||
# # fixes: "configure: error: Your compiler does not appear to implement the -fconstant-string-class option needed for support of strings."
|
||||
# # emulating gsmake amounts to emulating stdenv.
|
||||
# inherit (emulated.gnustep) gsmakeDerivation;
|
||||
# }).overrideAttrs (upstream: {
|
||||
# # fixes: "checking FFI library usage... ./configure: line 11028: pkg-config: command not found"
|
||||
# # nixpkgs has this in nativeBuildInputs... but that's failing when we partially emulate things.
|
||||
# buildInputs = (upstream.buildInputs or []) ++ [ prev.pkg-config ];
|
||||
# });
|
||||
# });
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
gthumb = mvInputs { nativeBuildInputs = [ final.glib ]; } prev.gthumb;
|
||||
|
||||
gnome = prev.gnome.overrideScope' (self: super: {
|
||||
inherit (emulated.gnome)
|
||||
;
|
||||
# dconf-editor = super.dconf-editor.override {
|
||||
# # fails to fix original error
|
||||
# inherit (emulated) stdenv;
|
||||
@@ -405,34 +398,14 @@ in {
|
||||
# ];
|
||||
});
|
||||
|
||||
# file-roller = super.file-roller.override {
|
||||
# # fixes "src/meson.build:106:0: ERROR: Program 'glib-compile-resources' not found or not executable"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# fixes: "src/meson.build:106:0: ERROR: Program 'glib-compile-resources' not found or not executable"
|
||||
file-roller = mvToNativeInputs [ final.glib ] super.file-roller;
|
||||
gnome-bluetooth = super.gnome-bluetooth.override {
|
||||
# fixes -msse2, -mfpmath=sse flags
|
||||
wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
};
|
||||
# fixes: "meson.build:75:6: ERROR: Program 'gtk-update-icon-cache' not found or not executable"
|
||||
gnome-clocks = (
|
||||
addNativeInputs [ final.gtk4 ] super.gnome-clocks
|
||||
).override {
|
||||
# fixes -msse2, -mfpmath=sse flags
|
||||
wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
};
|
||||
gnome-clocks = addNativeInputs [ final.gtk4 ] super.gnome-clocks;
|
||||
# fixes: "src/meson.build:3:0: ERROR: Program 'glib-compile-resources' not found or not executable"
|
||||
gnome-color-manager = mvToNativeInputs [ final.glib ] super.gnome-color-manager;
|
||||
# fixes "subprojects/gvc/meson.build:30:0: ERROR: Program 'glib-mkenums mkenums' not found or not executable"
|
||||
gnome-control-center = mvToNativeInputs [ final.glib ] super.gnome-control-center;
|
||||
# gnome-control-center = super.gnome-control-center.override {
|
||||
# inherit (final) stdenv;
|
||||
# };
|
||||
# gnome-keyring = super.gnome-keyring.override {
|
||||
# # does not fix original error
|
||||
# inherit (final) stdenv;
|
||||
# };
|
||||
gnome-keyring = super.gnome-keyring.overrideAttrs (orig: {
|
||||
# fixes "configure.ac:374: error: possibly undefined macro: AM_PATH_LIBGCRYPT"
|
||||
nativeBuildInputs = orig.nativeBuildInputs ++ [ final.libgcrypt final.openssh final.glib ];
|
||||
@@ -499,11 +472,6 @@ in {
|
||||
});
|
||||
# fixes: "gdbus-codegen not found or executable"
|
||||
gnome-session = mvToNativeInputs [ final.glib ] super.gnome-session;
|
||||
# gnome-terminal = super.gnome-terminal.override {
|
||||
# # fixes: "meson.build:343:0: ERROR: Dependency "libpcre2-8" not found, tried pkgconfig"
|
||||
# # new failure mode: "/nix/store/grqh2wygy9f9wp5bgvqn4im76v82zmcx-binutils-2.39/bin/ld: /nix/store/f7yr5z123d162p5457jh3wzkqm7x8yah-glib-2.74.3/lib/libglib-2.0.so: error adding symbols: file in wrong format"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
gnome-terminal = super.gnome-terminal.overrideAttrs (orig: {
|
||||
# fixes "meson.build:343:0: ERROR: Dependency "libpcre2-8" not found, tried pkgconfig"
|
||||
buildInputs = orig.buildInputs ++ [ final.pcre2 ];
|
||||
@@ -523,15 +491,7 @@ in {
|
||||
];
|
||||
mesonFlags = lib.remove "-Ddocs=true" orig.mesonFlags;
|
||||
outputs = lib.remove "devdoc" orig.outputs;
|
||||
})).override {
|
||||
# fixes -msse2, -mfpmath=sse flags
|
||||
wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
};
|
||||
# nautilus = super.nautilus.override {
|
||||
# # fixes: "meson.build:123:0: ERROR: Dependency "libxml-2.0" not found, tried pkgconfig"
|
||||
# # new failure mode: "/nix/store/grqh2wygy9f9wp5bgvqn4im76v82zmcx-binutils-2.39/bin/ld: /nix/store/f7yr5z123d162p5457jh3wzkqm7x8yah-glib-2.74.3/lib/libglib-2.0.so: error adding symbols: file in wrong format"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
}));
|
||||
nautilus = (
|
||||
addInputs {
|
||||
# fixes: "meson.build:123:0: ERROR: Dependency "libxml-2.0" not found, tried pkgconfig"
|
||||
@@ -539,52 +499,45 @@ in {
|
||||
# fixes: "meson.build:226:6: ERROR: Program 'gtk-update-icon-cache' not found or not executable"
|
||||
nativeBuildInputs = [ final.gtk4 ];
|
||||
}
|
||||
super.nautilus
|
||||
).override {
|
||||
# fixes -msse2, -mfpmath=sse flags
|
||||
# wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
# fixes -msse2, -mfpmath=ssh flags AND "Settings schema 'org.gtk.gtk4.Settings.FileChooser' is not installed"
|
||||
wrapGAppsHook4 = emulated.wrapGAppsHook4;
|
||||
};
|
||||
|
||||
zenity = super.zenity.override {
|
||||
# fixes -msse2, -mfpmath=sse flags
|
||||
wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
};
|
||||
(wrapGAppsHook4Fix super.nautilus)
|
||||
);
|
||||
});
|
||||
|
||||
gnome2 = prev.gnome2.overrideScope' (self: super: {
|
||||
# inherit (emulated.gnome2)
|
||||
# GConf
|
||||
# ;
|
||||
# GConf = (
|
||||
# # python3 -> nativeBuildInputs fixes "2to3: command not found"
|
||||
# # glib.dev in nativeBuildInputs fixes "gconfmarshal.list: command not found"
|
||||
# # new error: "** (orbit-idl-2): WARNING **: ./GConfX.idl compilation failed"
|
||||
# addNativeInputs
|
||||
# [ final.glib.dev ]
|
||||
# (mvToNativeInputs [ final.python3 ] super.GConf);
|
||||
# );
|
||||
GConf = super.GConf.override {
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
# gnome2 = prev.gnome2.overrideScope' (self: super: {
|
||||
# # inherit (emulated.gnome2)
|
||||
# # GConf
|
||||
# # ;
|
||||
# # GConf = (
|
||||
# # # python3 -> nativeBuildInputs fixes "2to3: command not found"
|
||||
# # # glib.dev in nativeBuildInputs fixes "gconfmarshal.list: command not found"
|
||||
# # # new error: "** (orbit-idl-2): WARNING **: ./GConfX.idl compilation failed"
|
||||
# # addNativeInputs
|
||||
# # [ final.glib.dev ]
|
||||
# # (mvToNativeInputs [ final.python3 ] super.GConf);
|
||||
# # );
|
||||
# # avoid gconf. last release was 2013: it's dead.
|
||||
# GConf = super.GConf.override {
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
|
||||
# gnome_vfs = (
|
||||
# # fixes: "configure: error: gconftool-2 executable not found in your path - should be installed with GConf"
|
||||
# # new error: "configure: error: cannot run test program while cross compiling"
|
||||
# mvToNativeInputs [ self.GConf ] super.gnome_vfs
|
||||
# );
|
||||
gnome_vfs = useEmulatedStdenv super.gnome_vfs;
|
||||
libIDL = super.libIDL.override {
|
||||
# "configure: error: cannot run test program while cross compiling"
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
ORBit2 = super.ORBit2.override {
|
||||
# "configure: error: Failed to find alignment. Check config.log for details."
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
});
|
||||
# # gnome_vfs = (
|
||||
# # # fixes: "configure: error: gconftool-2 executable not found in your path - should be installed with GConf"
|
||||
# # # new error: "configure: error: cannot run test program while cross compiling"
|
||||
# # mvToNativeInputs [ self.GConf ] super.gnome_vfs
|
||||
# # );
|
||||
# gnome_vfs = useEmulatedStdenv super.gnome_vfs;
|
||||
# libIDL = super.libIDL.override {
|
||||
# # "configure: error: cannot run test program while cross compiling"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# ORBit2 = super.ORBit2.override {
|
||||
# # "configure: error: Failed to find alignment. Check config.log for details."
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# });
|
||||
|
||||
# 2023/07/27: upstreaming is blocked on xdg-utils cross compilation
|
||||
gpodder = prev.gpodder.overridePythonAttrs (upstream: {
|
||||
# fix gobject-introspection overrides import that otherwise fails on launch
|
||||
nativeBuildInputs = upstream.nativeBuildInputs ++ [
|
||||
@@ -595,21 +548,13 @@ in {
|
||||
});
|
||||
|
||||
gst_all_1 = prev.gst_all_1 // {
|
||||
# inherit (emulated.gst_all_1) gst-plugins-good;
|
||||
# gst-plugins-good = prev.gst_all_1.gst-plugins-good.override {
|
||||
# # when invoked with `qt5Support = true`, qtbase shows up in both buildInputs and nativeBuildInputs
|
||||
# # if these aren't identical, then qt complains: "Error: detected mismatched Qt dependencies"
|
||||
# # doesn't fix the original error.
|
||||
# inherit (emulated) stdenv;
|
||||
# # TODO: try removing qtbase from nativeBuildInputs? emulate meson, pkg-config &c?
|
||||
# # qt5Support = true;
|
||||
# };
|
||||
gst-plugins-good = prev.gst_all_1.gst-plugins-good.overrideAttrs (upstream: {
|
||||
nativeBuildInputs = lib.remove final.qt5.qtbase upstream.nativeBuildInputs;
|
||||
# TODO: swap in this line instead?
|
||||
# buildInputs = lib.remove final.qt5.qtbase upstream.buildInputs;
|
||||
});
|
||||
};
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
gvfs = prev.gvfs.overrideAttrs (upstream: {
|
||||
nativeBuildInputs = upstream.nativeBuildInputs ++ [
|
||||
final.openssh
|
||||
@@ -657,35 +602,36 @@ in {
|
||||
# });
|
||||
|
||||
# fixes "./autogen.sh: line 26: gtkdocize: not found"
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
iio-sensor-proxy = mvToNativeInputs [ final.glib final.gtk-doc ] prev.iio-sensor-proxy;
|
||||
|
||||
# fixes: "make: gcc: No such file or directory"
|
||||
java-service-wrapper = useEmulatedStdenv prev.java-service-wrapper;
|
||||
|
||||
javaPackages = prev.javaPackages // {
|
||||
compiler = prev.javaPackages.compiler // {
|
||||
adoptopenjdk-8 = prev.javaPackages.compiler.adoptopenjdk-8 // {
|
||||
# fixes "error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/fvln9pahd3c4ys8xv5c0w91xm2347cvq-adoptopenjdk-hotspot-bin-aarch64-unknown-linux-gnu-8.0.322/jre/lib/aarch64/libsunec.so"
|
||||
jdk-hotspot = useEmulatedStdenv prev.javaPackages.compiler.adoptopenjdk-8.jdk-hotspot;
|
||||
};
|
||||
openjdk8-bootstrap = useEmulatedStdenv prev.javaPackages.compiler.openjdk8-bootstrap;
|
||||
# fixes "configure: error: Could not find required tool for WHICH"
|
||||
openjdk8 = useEmulatedStdenv prev.javaPackages.compiler.openjdk8;
|
||||
# openjdk19 = (
|
||||
# # fixes "configure: error: Could not find required tool for ZIPEXE"
|
||||
# # new failure: "checking for cc... [not found]"
|
||||
# (mvToNativeInputs
|
||||
# [ final.zip ]
|
||||
# (useEmulatedStdenv prev.javaPackages.compiler.openjdk19)
|
||||
# ).overrideAttrs (_upstream: {
|
||||
# # avoid building `support/demos`, which segfaults
|
||||
# buildFlags = [ "product-images" ];
|
||||
# doCheck = false; # pre-emptive
|
||||
# })
|
||||
# );
|
||||
openjdk19 = emulated.javaPackages.compiler.openjdk19;
|
||||
};
|
||||
};
|
||||
# javaPackages = prev.javaPackages // {
|
||||
# compiler = prev.javaPackages.compiler // {
|
||||
# adoptopenjdk-8 = prev.javaPackages.compiler.adoptopenjdk-8 // {
|
||||
# # fixes "error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/fvln9pahd3c4ys8xv5c0w91xm2347cvq-adoptopenjdk-hotspot-bin-aarch64-unknown-linux-gnu-8.0.322/jre/lib/aarch64/libsunec.so"
|
||||
# jdk-hotspot = useEmulatedStdenv prev.javaPackages.compiler.adoptopenjdk-8.jdk-hotspot;
|
||||
# };
|
||||
# openjdk8-bootstrap = useEmulatedStdenv prev.javaPackages.compiler.openjdk8-bootstrap;
|
||||
# # fixes "configure: error: Could not find required tool for WHICH"
|
||||
# openjdk8 = useEmulatedStdenv prev.javaPackages.compiler.openjdk8;
|
||||
# # openjdk19 = (
|
||||
# # # fixes "configure: error: Could not find required tool for ZIPEXE"
|
||||
# # # new failure: "checking for cc... [not found]"
|
||||
# # (mvToNativeInputs
|
||||
# # [ final.zip ]
|
||||
# # (useEmulatedStdenv prev.javaPackages.compiler.openjdk19)
|
||||
# # ).overrideAttrs (_upstream: {
|
||||
# # # avoid building `support/demos`, which segfaults
|
||||
# # buildFlags = [ "product-images" ];
|
||||
# # doCheck = false; # pre-emptive
|
||||
# # })
|
||||
# # );
|
||||
# openjdk19 = emulated.javaPackages.compiler.openjdk19;
|
||||
# };
|
||||
# };
|
||||
|
||||
jellyfin-media-player = mvToBuildInputs
|
||||
[ final.libsForQt5.wrapQtAppsHook ] # this shouldn't be: but otherwise we get mixed qtbase deps
|
||||
@@ -720,10 +666,7 @@ in {
|
||||
];
|
||||
});
|
||||
komikku = prev.komikku.override {
|
||||
komikku = prev.komikku.unpatched.override {
|
||||
# GI_TYPELIB_PATH points to x86_64 types in the default build, only when using wrapGAppsHook4
|
||||
wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
};
|
||||
komikku = wrapGAppsHook4Fix prev.komikku.unpatched;
|
||||
};
|
||||
koreader = (prev.koreader.override {
|
||||
# fixes runtime error: luajit: ./ffi/util.lua:757: attempt to call field 'pack' (a nil value)
|
||||
@@ -733,17 +676,21 @@ in {
|
||||
final.autoPatchelfHook
|
||||
];
|
||||
});
|
||||
libgweather = rmNativeInputs [ final.glib ] (prev.libgweather.override {
|
||||
# alternative to emulating python3 is to specify it in `buildInputs` instead of `nativeBuildInputs` (upstream),
|
||||
# but presumably that's just a different way to emulate it.
|
||||
# the python gobject-introspection stuff is a tangled mess that's impossible to debug:
|
||||
# don't dig further, leave this for some other dedicated soul.
|
||||
inherit (emulated)
|
||||
stdenv # fixes "Run-time dependency vapigen found: NO (tried pkgconfig)"
|
||||
gobject-introspection # fixes gir x86-64 python -> aarch64 shared object import
|
||||
python3 # fixes build-aux/meson/gen_locations_variant.py x86-64 python -> aarch64 import of glib
|
||||
;
|
||||
});
|
||||
koreader-from-src = prev.koreader-from-src.override {
|
||||
# fixes runtime error: luajit: ./ffi/util.lua:757: attempt to call field 'pack' (a nil value)
|
||||
inherit (emulated) luajit;
|
||||
};
|
||||
# libgweather = rmNativeInputs [ final.glib ] (prev.libgweather.override {
|
||||
# # alternative to emulating python3 is to specify it in `buildInputs` instead of `nativeBuildInputs` (upstream),
|
||||
# # but presumably that's just a different way to emulate it.
|
||||
# # the python gobject-introspection stuff is a tangled mess that's impossible to debug:
|
||||
# # don't dig further, leave this for some other dedicated soul.
|
||||
# inherit (emulated)
|
||||
# stdenv # fixes "Run-time dependency vapigen found: NO (tried pkgconfig)"
|
||||
# gobject-introspection # fixes gir x86-64 python -> aarch64 shared object import
|
||||
# python3 # fixes build-aux/meson/gen_locations_variant.py x86-64 python -> aarch64 import of glib
|
||||
# ;
|
||||
# });
|
||||
# libgweather = prev.libgweather.overrideAttrs (upstream: {
|
||||
# nativeBuildInputs = (lib.remove final.gobject-introspection upstream.nativeBuildInputs) ++ [
|
||||
# final.buildPackages.gobject-introspection # fails to fix "gi._error.GError: g-invoke-error-quark: Could not locate g_option_error_quark: /nix/store/dsx6kqmyg7f3dz9hwhz7m3jrac4vn3pc-glib-aarch64-unknown-linux-gnu-2.74.3/lib/libglib-2.0.so.0"
|
||||
@@ -771,11 +718,6 @@ in {
|
||||
# callPackage = self.newScope { inherit (self) qtCompatVersion qtModule srcs; inherit (final) stdenv; };
|
||||
# });
|
||||
|
||||
megapixels = prev.megapixels.override {
|
||||
# fixes -msse2, -mfpmath=sse flags
|
||||
wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
};
|
||||
|
||||
# mepo = (prev.mepo.override {
|
||||
# inherit (emulated)
|
||||
# stdenv
|
||||
@@ -803,19 +745,28 @@ in {
|
||||
# # '';
|
||||
# });
|
||||
|
||||
mpvScripts = prev.mpvScripts // {
|
||||
# "line 1: pkg-config: command not found"
|
||||
# "mpris.c:1:10: fatal error: gio/gio.h: No such file or directory"
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
mpris = addNativeInputs [ final.pkg-config ] prev.mpvScripts.mpris;
|
||||
};
|
||||
# fixes: "ar: command not found"
|
||||
# `ar` is provided by bintools
|
||||
# 2023/07/27: upstreaming is unblocked by deps; but turns out to not be this simple
|
||||
ncftp = addNativeInputs [ final.bintools ] prev.ncftp;
|
||||
# fixes "gdbus-codegen: command not found"
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
networkmanager-fortisslvpn = mvToNativeInputs [ final.glib ] prev.networkmanager-fortisslvpn;
|
||||
# networkmanager-iodine = prev.networkmanager-iodine.overrideAttrs (orig: {
|
||||
# # fails to fix "configure.ac:58: error: possibly undefined macro: AM_GLIB_GNU_GETTEXT"
|
||||
# nativeBuildInputs = orig.nativeBuildInputs ++ [ final.gettext ];
|
||||
# });
|
||||
networkmanager-iodine = prev.networkmanager-iodine.override {
|
||||
# fixes "configure.ac:58: error: possibly undefined macro: AM_GLIB_GNU_GETTEXT"
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
# networkmanager-iodine = prev.networkmanager-iodine.override {
|
||||
# # fixes "configure.ac:58: error: possibly undefined macro: AM_GLIB_GNU_GETTEXT"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# networkmanager-iodine = addNativeInputs [ final.gettext ] prev.networkmanager-iodine;
|
||||
# networkmanager-iodine = prev.networkmanager-iodine.overrideAttrs (upstream: {
|
||||
# # buildInputs = upstream.buildInputs ++ [ final.intltool final.gettext ];
|
||||
# # nativeBuildInputs = lib.remove final.intltool upstream.nativeBuildInputs;
|
||||
@@ -827,14 +778,18 @@ in {
|
||||
|
||||
# fixes "gdbus-codegen: command not found"
|
||||
# fixes "gtk4-builder-tool: command not found"
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
networkmanager-l2tp = addNativeInputs [ final.gtk4 ]
|
||||
(mvToNativeInputs [ final.glib ] prev.networkmanager-l2tp);
|
||||
# fixes "properties/gresource.xml: Permission denied"
|
||||
# - by providing glib-compile-resources
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
networkmanager-openconnect = mvToNativeInputs [ final.glib ] prev.networkmanager-openconnect;
|
||||
# fixes "properties/gresource.xml: Permission denied"
|
||||
# - by providing glib-compile-resources
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
networkmanager-openvpn = mvToNativeInputs [ final.glib ] prev.networkmanager-openvpn;
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
networkmanager-sstp = (
|
||||
# fixes "gdbus-codegen: command not found"
|
||||
mvToNativeInputs [ final.glib ] (
|
||||
@@ -842,9 +797,11 @@ in {
|
||||
addNativeInputs [ final.gtk4.dev ] prev.networkmanager-sstp
|
||||
)
|
||||
);
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
networkmanager-vpnc = mvToNativeInputs [ final.glib ] prev.networkmanager-vpnc;
|
||||
# fixes "properties/gresource.xml: Permission denied"
|
||||
# - by providing glib-compile-resources
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
nheko = prev.nheko.overrideAttrs (orig: {
|
||||
# fixes "fatal error: lmdb++.h: No such file or directory
|
||||
buildInputs = orig.buildInputs ++ [ final.lmdbxx ];
|
||||
@@ -881,22 +838,6 @@ in {
|
||||
# )
|
||||
# ) ++ [ final.gmime ];
|
||||
});
|
||||
# notmuch = (prev.notmuch.override {
|
||||
# inherit (emulated)
|
||||
# stdenv
|
||||
# # gmime
|
||||
# ;
|
||||
# gmime = emulated.gmime3;
|
||||
# }).overrideAttrs (upstream: {
|
||||
# postPatch = upstream.postPatch or "" + ''
|
||||
# sed -i 's/pkg-config/\$PKG_CONFIG/g' configure
|
||||
# '';
|
||||
# nativeBuildInputs = upstream.nativeBuildInputs ++ [
|
||||
# final.gnupg
|
||||
# final.perl
|
||||
# ];
|
||||
# buildInputs = lib.remove final.gnupg upstream.buildInputs;
|
||||
# });
|
||||
# notmuch = prev.notmuch.overrideAttrs (upstream: {
|
||||
# # fixes "Error: The dependencies of notmuch could not be satisfied" (xapian, gmime, glib, talloc)
|
||||
# # when cross-compiling, we only have a triple-prefixed pkg-config which notmuch's configure script doesn't know how to find.
|
||||
@@ -921,14 +862,14 @@ in {
|
||||
# fixes "/nix/store/0wk6nr1mryvylf5g5frckjam7g7p9gpi-bash-5.2-p15/bin/bash: line 2: --prefix=ods_manager: command not found"
|
||||
# - dbus-glib should maybe be removed from buildInputs, too? but doing so breaks upstream configure
|
||||
obex_data_server = addNativeInputs [ final.dbus-glib ] prev.obex_data_server;
|
||||
openfortivpn = prev.openfortivpn.override {
|
||||
# fixes "checking for /proc/net/route... configure: error: cannot check for file existence when cross compiling"
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
ostree = prev.ostree.override {
|
||||
# fixes "configure: error: Need GPGME_PTHREAD version 1.1.8 or later"
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
# openfortivpn = prev.openfortivpn.override {
|
||||
# # fixes "checking for /proc/net/route... configure: error: cannot check for file existence when cross compiling"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# ostree = prev.ostree.override {
|
||||
# # fixes "configure: error: Need GPGME_PTHREAD version 1.1.8 or later"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# ostree = prev.ostree.overrideAttrs (upstream: {
|
||||
# # fixes: "configure: error: Need GPGME_PTHREAD version 1.1.8 or later"
|
||||
# # new failure mode: "./src/libotutil/ot-gpg-utils.h:22:10: fatal error: gpgme.h: No such file or directory"
|
||||
@@ -936,11 +877,8 @@ in {
|
||||
# nativeBuildInputs = upstream.nativeBuildInputs ++ [ final.gpgme ];
|
||||
# });
|
||||
|
||||
# phoc = prev.phoc.override {
|
||||
# # fixes "Program wayland-scanner found: NO"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# fixes (meson) "Program 'glib-mkenums mkenums' not found or not executable"
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
phoc = mvToNativeInputs [ final.wayland-scanner final.glib ] prev.phoc;
|
||||
phosh = prev.phosh.overrideAttrs (upstream: {
|
||||
buildInputs = upstream.buildInputs ++ [
|
||||
@@ -953,10 +891,6 @@ in {
|
||||
# sed -i 's:gio_querymodules = :gio_querymodules = "${final.buildPackages.glib.dev}/bin/gio-querymodules" if True else :' build-aux/post_install.py
|
||||
# '';
|
||||
});
|
||||
# phosh-mobile-settings = prev.phosh-mobile-settings.override {
|
||||
# # fixes "meson.build:26:0: ERROR: Dependency "phosh-plugins" not found, tried pkgconfig"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
phosh-mobile-settings = mvInputs {
|
||||
# fixes "meson.build:26:0: ERROR: Dependency "phosh-plugins" not found, tried pkgconfig"
|
||||
# phosh is used only for its plugins; these are specified as a runtime dep in src.
|
||||
@@ -969,6 +903,12 @@ in {
|
||||
final.desktop-file-utils # fixes "meson.build:116:8: ERROR: Program 'update-desktop-database' not found or not executable"
|
||||
];
|
||||
} prev.phosh-mobile-settings;
|
||||
# pipewire = prev.pipewire.override {
|
||||
# # avoid a dep on python3.10-PyQt5, which has mixed qt5 versions.
|
||||
# # this means we lose firewire support (oh well..?)
|
||||
# ffadoSupport = false;
|
||||
# };
|
||||
|
||||
# psqlodbc = prev.psqlodbc.override {
|
||||
# # fixes "configure: error: odbc_config not found (required for unixODBC build)"
|
||||
# inherit (emulated) stdenv;
|
||||
@@ -998,12 +938,14 @@ in {
|
||||
"tests/test_main.py"
|
||||
];
|
||||
});
|
||||
gssapi = py-prev.gssapi.overridePythonAttrs (_orig: {
|
||||
# "krb5-aarch64-unknown-linux-gnu-1.20.1/lib/libgssapi_krb5.so: cannot open shared object file"
|
||||
# setup.py only needs this to detect if kerberos was configured with gssapi support (not sure why it doesn't call krb5-config for that?)
|
||||
# it doesn't actually link or use anything from the build krb5 except a "canary" symobl.
|
||||
GSSAPI_MAIN_LIB = "${final.buildPackages.krb5}/lib/libgssapi_krb5.so";
|
||||
});
|
||||
# gssapi = py-prev.gssapi.overridePythonAttrs (_orig: {
|
||||
# # 2023/07/29: upstreaming is unblocked; implemented on servo pr/cross-2023-07-28 branch
|
||||
# # "krb5-aarch64-unknown-linux-gnu-1.20.1/lib/libgssapi_krb5.so: cannot open shared object file"
|
||||
# # setup.py only needs this to detect if kerberos was configured with gssapi support (not sure why it doesn't call krb5-config for that?)
|
||||
# # it doesn't actually link or use anything from the build krb5 except a "canary" symobl.
|
||||
# # GSSAPI_MAIN_LIB = "${final.buildPackages.krb5}/lib/libgssapi_krb5.so";
|
||||
# env.GSSAPI_SUPPORT_DETECT = lib.boolToString (prev.stdenv.buildPlatform.canExecute prev.stdenv.hostPlatform);
|
||||
# });
|
||||
# h5py = py-prev.h5py.overridePythonAttrs (orig: {
|
||||
# # XXX: can't upstream until its dependency, hdf5, is fixed. that looks TRICKY.
|
||||
# # - the `setup_configure.py` in h5py tries to dlopen (and call into) the hdf5 lib to query the version and detect features like MPI
|
||||
@@ -1044,9 +986,9 @@ in {
|
||||
"tests/unit/test_compat.py"
|
||||
];
|
||||
});
|
||||
scipy = py-prev.scipy.override {
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
# scipy = py-prev.scipy.override {
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# scipy = py-prev.scipy.overridePythonAttrs (orig: {
|
||||
# # "/nix/store/yhz6yy9bp52x9fvcda4lr6kgsngxnv2l-python3.10-numpy-1.24.2/lib/python3.10/site-packages/numpy/core/include/../lib/libnpymath.a: error adding symbols: file in wrong format"
|
||||
# # mesonFlags = orig.mesonFlags or [] ++ [ "-Duse-pythran=false" ];
|
||||
@@ -1173,11 +1115,19 @@ in {
|
||||
});
|
||||
});
|
||||
|
||||
rmlint = prev.rmlint.override {
|
||||
# fixes "Checking whether the C compiler works... no"
|
||||
# rmlint is scons; it reads the CC environment variable, though, so *may* be cross compilable
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
# rmlint = prev.rmlint.override {
|
||||
# # fixes "Checking whether the C compiler works... no"
|
||||
# # rmlint is scons; it reads the CC environment variable, though, so *may* be cross compilable
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
# 2023/07/30: upstreaming is ?; implemented on servo cross-staging-2023-07-30 branch
|
||||
rpm = prev.rpm.overrideAttrs (upstream: {
|
||||
# fixes "python too old". might also be specifiable as a configure flag?
|
||||
env = upstream.env // {
|
||||
PYTHON = final.python3.interpreter;
|
||||
};
|
||||
});
|
||||
|
||||
# samba = prev.samba.overrideAttrs (_upstream: {
|
||||
# # we get "cannot find C preprocessor: aarch64-unknown-linux-gnu-cpp", but ONLY when building with the ccache stdenv.
|
||||
# # this solves that, but `CPP` must be a *single* path -- not an expression.
|
||||
@@ -1243,26 +1193,24 @@ in {
|
||||
# ];
|
||||
# });
|
||||
|
||||
squeekboard = prev.squeekboard.override {
|
||||
inherit (emulated)
|
||||
rustPlatform # fixes original "'rust' compiler binary not defined in cross or native file"
|
||||
rustc
|
||||
cargo
|
||||
stdenv # fixes "gcc: error: unrecognized command line option '-m64'"
|
||||
glib # fixes error when linking src/squeekboard: "/nix/store/3c0dqm093ylw8ks7myzxdaif0m16rgcl-binutils-2.40/bin/ld: /nix/store/jzh15bi6zablx3d9s928w3lgqy6and91-glib-2.74.3/lib/libgio-2.0.so"
|
||||
wayland # fixes error when linking src/squeekboard: "/nix/store/3c0dqm093ylw8ks7myzxdaif0m16rgcl-binutils-2.40/bin/ld: /nix/store/ni0vb1pnaznx85378i3h9xhw9cay68g5-wayland-1.21.0/lib/libwayland-client.so: error adding symbols: file in wrong format"
|
||||
# gtk3 # fails to fix: "/nix/store/acl3fg3z4i96d6lha2cbr16k7bl1zjs5-binutils-2.40/bin/ld: /nix/store/k2jd14yl5qcl3kwifhhs271607fjafbx-gtk+3-3.24.36/lib/libgtk-3.so: error adding symbols: file in wrong format"
|
||||
wrapGAppsHook # introduces a competing gtk3 at link-time, unless emulated
|
||||
;
|
||||
};
|
||||
# squeekboard = prev.squeekboard.override {
|
||||
# inherit (emulated)
|
||||
# rustPlatform # fixes original "'rust' compiler binary not defined in cross or native file"
|
||||
# rustc
|
||||
# cargo
|
||||
# stdenv # fixes "gcc: error: unrecognized command line option '-m64'"
|
||||
# glib # fixes error when linking src/squeekboard: "/nix/store/3c0dqm093ylw8ks7myzxdaif0m16rgcl-binutils-2.40/bin/ld: /nix/store/jzh15bi6zablx3d9s928w3lgqy6and91-glib-2.74.3/lib/libgio-2.0.so"
|
||||
# wayland # fixes error when linking src/squeekboard: "/nix/store/3c0dqm093ylw8ks7myzxdaif0m16rgcl-binutils-2.40/bin/ld: /nix/store/ni0vb1pnaznx85378i3h9xhw9cay68g5-wayland-1.21.0/lib/libwayland-client.so: error adding symbols: file in wrong format"
|
||||
# # gtk3 # fails to fix: "/nix/store/acl3fg3z4i96d6lha2cbr16k7bl1zjs5-binutils-2.40/bin/ld: /nix/store/k2jd14yl5qcl3kwifhhs271607fjafbx-gtk+3-3.24.36/lib/libgtk-3.so: error adding symbols: file in wrong format"
|
||||
# wrapGAppsHook # introduces a competing gtk3 at link-time, unless emulated
|
||||
# ;
|
||||
# };
|
||||
|
||||
sysprof = (
|
||||
# fixes: "src/meson.build:12:2: ERROR: Program 'gdbus-codegen' not found or not executable"
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
mvToNativeInputs [ final.glib ] prev.sysprof
|
||||
).override {
|
||||
# fixes -msse2, -mfpmath=sse flags
|
||||
wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
};
|
||||
);
|
||||
# tangram = rmNativeInputs [ final.gobject-introspection ] (
|
||||
# tangram = mvToBuildInputs [ (dontCheck (useEmulatedStdenv final.blueprint-compiler)) ] (
|
||||
# addNativeInputs [ final.gjs ] ( # new error: "gi._error.GError: g-invoke-error-quark: Could not locate g_option_error_quark" loading glib
|
||||
@@ -1298,36 +1246,31 @@ in {
|
||||
# doCheck = false; # tests time out
|
||||
# };
|
||||
# };
|
||||
tangram = prev.tangram.override {
|
||||
inherit (emulated)
|
||||
# required for compilation
|
||||
gobject-introspection
|
||||
stdenv # fixes: "src/meson.build:2:20: ERROR: Program 'gjs' not found or not executable"
|
||||
# not required to compile, but lets try to fix runtime error
|
||||
appstream-glib
|
||||
gtk4
|
||||
wrapGAppsHook # fixes icons
|
||||
# older emulated inputs which probably aren't actually needed:
|
||||
# desktop-file-utils
|
||||
# gettext
|
||||
# buildInputs, not required to compile
|
||||
# gdk-pixbuf
|
||||
# glib
|
||||
# glib-networking
|
||||
# gsettings-desktop-schemas
|
||||
# libadwaita
|
||||
;
|
||||
blueprint-compiler = dontCheck emulated.blueprint-compiler; # emulate: because gi. dontCheck: because tests time out
|
||||
gjs = dontCheck emulated.gjs; # emulate: because Tangram build hangs. dontCheck: because tests time out
|
||||
};
|
||||
tracker-miners = prev.tracker-miners.override {
|
||||
# fixes "meson.build:183:0: ERROR: Can not run test applications in this cross environment."
|
||||
inherit (emulated) stdenv;
|
||||
};
|
||||
tuba = (prev.tuba.override {
|
||||
# fixes -msse2, -mfpmath=sse flags
|
||||
wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
tangram = (prev.tangram.override {
|
||||
# N.B. blueprint-compiler is in nativeBuildInputs.
|
||||
# the trick here is to force the aarch64 versions to be used during build (via emulation),
|
||||
# which -- if we also emulate gobject-introspection (and the transient gjs dep) -- gets us the right gobject-introspection dirs.
|
||||
# `dontCheck` because tests time out.
|
||||
blueprint-compiler = dontCheck emulated.blueprint-compiler;
|
||||
gjs = dontCheck emulated.gjs;
|
||||
inherit (emulated) gobject-introspection;
|
||||
}).overrideAttrs (upstream: {
|
||||
# depsBuildBuild = [ final.pkg-config ]; # else no `gio` dep found
|
||||
postPatch = (upstream.postPatch or "") + ''
|
||||
substituteInPlace src/meson.build \
|
||||
--replace "find_program('gjs').full_path()" "'${final.gjs}/bin/gjs'"
|
||||
'';
|
||||
});
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
# fixes "meson.build:204:12: ERROR: Can not run test applications in this cross environment."
|
||||
tracker = addNativeInputs [ final.mesonEmulatorHook ] prev.tracker;
|
||||
# fixes "meson.build:425:23: ERROR: Program 'glib-compile-schemas' not found or not executable"
|
||||
tracker-miners = mvToNativeInputs [ final.glib ] (
|
||||
# fixes "meson.build:183:0: ERROR: Can not run test applications in this cross environment."
|
||||
addNativeInputs [ final.mesonEmulatorHook ] prev.tracker-miners
|
||||
);
|
||||
tuba = (wrapGAppsHook4Fix prev.tuba).overrideAttrs (upstream: {
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
# error: Package `{libadwaita-1,gtksourceview-5,libsecret-1,gee-0.8}' not found in specified Vala API directories or GObject-Introspection GIR directories
|
||||
buildInputs = upstream.buildInputs ++ [ final.vala ];
|
||||
});
|
||||
@@ -1338,6 +1281,7 @@ in {
|
||||
|
||||
# fixes: "ar: command not found"
|
||||
# `ar` is provided by bintools
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
unar = addNativeInputs [ final.bintools ] prev.unar;
|
||||
unixODBCDrivers = prev.unixODBCDrivers // {
|
||||
# TODO: should this package be deduped with toplevel psqlodbc in upstream nixpkgs?
|
||||
@@ -1351,12 +1295,20 @@ in {
|
||||
'';
|
||||
});
|
||||
};
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
upower = prev.upower.overrideAttrs (upstream: {
|
||||
# cross-compiled builds seem to not create the installedTest files
|
||||
outputs = lib.remove "installedTests" upstream.outputs;
|
||||
postInstall = lib.replaceStrings [ "installedTests" ] [ "" ] upstream.postInstall;
|
||||
postFixup = "";
|
||||
});
|
||||
|
||||
visidata = prev.visidata.override {
|
||||
# hdf5 / h5py don't cross-compile, but i don't use that file format anyway.
|
||||
# setting this to null means visidata will work as normal but not be able to load hdf files.
|
||||
h5py = null;
|
||||
};
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
vlc = prev.vlc.overrideAttrs (orig: {
|
||||
# fixes: "configure: error: could not find the LUA byte compiler"
|
||||
# fixes: "configure: error: protoc compiler needed for chromecast was not found"
|
||||
@@ -1368,37 +1320,40 @@ in {
|
||||
};
|
||||
});
|
||||
# fixes "perl: command not found"
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
vpnc = mvToNativeInputs [ final.perl ] prev.vpnc;
|
||||
wrapGAppsHook4 = prev.wrapGAppsHook4.override {
|
||||
gtk3 = final.emptyDirectory;
|
||||
};
|
||||
# wrapGAppsHook = prev.wrapGAppsHook.override {
|
||||
# # prevents build gtk3 from being propagated into places it shouldn't (e.g. waybar)
|
||||
# isGraphical = false;
|
||||
# };
|
||||
# wrapGAppsHook4 = prev.wrapGAppsHook4.override {
|
||||
# # fixes -msse2, -mfpmath=sse flags being inherited by consumers.
|
||||
# # ^ maybe that's because of the stuff in depsTargetTargetPropagated?
|
||||
# # N.B.: this makes the hook functionally equivalent to `wrapGAppsNoGuiHook`
|
||||
# isGraphical = false;
|
||||
# # gtk3 = final.emptyDirectory;
|
||||
# };
|
||||
xapian = prev.xapian.overrideAttrs (upstream: {
|
||||
# the output has #!/bin/sh scripts.
|
||||
# - shebangs get re-written on native build, but not cross build
|
||||
buildInputs = upstream.buildInputs ++ [ final.bash ];
|
||||
});
|
||||
# fixes "No package 'xdg-desktop-portal' found"
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
xdg-desktop-portal-gtk = mvToBuildInputs [ final.xdg-desktop-portal ] prev.xdg-desktop-portal-gtk;
|
||||
# fixes: "data/meson.build:33:5: ERROR: Program 'msgfmt' not found or not executable"
|
||||
# fixes: "src/meson.build:25:0: ERROR: Program 'gdbus-codegen' not found or not executable"
|
||||
# 2023/07/27: upstreaming is blocked on p11-kit cross compilation
|
||||
xdg-desktop-portal-gnome = (
|
||||
addNativeInputs [ final.wayland-scanner ] (
|
||||
mvToNativeInputs [ final.gettext final.glib ] prev.xdg-desktop-portal-gnome
|
||||
)
|
||||
).override {
|
||||
# fixes -msse2, -mfpmath=sse flags
|
||||
wrapGAppsHook4 = final.wrapGAppsHook;
|
||||
};
|
||||
);
|
||||
# "fatal error: urcu.h: No such file or directory"
|
||||
# xfsprogs wants to compile things for the build target (BUILD_CC)
|
||||
# xfsprogs = useEmulatedStdenv prev.xfsprogs;
|
||||
xfsprogs = addNativeInputs [ final.liburcu ] prev.xfsprogs;
|
||||
# webkitgtk = prev.webkitgtk.override { stdenv = final.ccacheStdenv; };
|
||||
# webp-pixbuf-loader = prev.webp-pixbuf-loader.override {
|
||||
# # fixes "Builder called die: Cannot wrap '/nix/store/kpp8qhzdjqgvw73llka5gpnsj0l4jlg8-gdk-pixbuf-aarch64-unknown-linux-gnu-2.42.10/bin/gdk-pixbuf-thumbnailer' because it is not an executable file"
|
||||
# # new failure mode: "/nix/store/grqh2wygy9f9wp5bgvqn4im76v82zmcx-binutils-2.39/bin/ld: /nix/store/2syg6jxk8zi1zkpqvkxkz87x8sl27c6b-gdk-pixbuf-2.42.10/lib/libgdk_pixbuf-2.0.so: error adding symbols: file in wrong format"
|
||||
# inherit (emulated) stdenv;
|
||||
# };
|
||||
webp-pixbuf-loader = prev.webp-pixbuf-loader.overrideAttrs (upstream: {
|
||||
# fixes: "Builder called die: Cannot wrap '/nix/store/kpp8qhzdjqgvw73llka5gpnsj0l4jlg8-gdk-pixbuf-aarch64-unknown-linux-gnu-2.42.10/bin/gdk-pixbuf-thumbnailer' because it is not an executable file"
|
||||
# gdk-pixbuf doesn't create a `bin/` directory when cross-compiling, breaks some thumbnailing stuff.
|
||||
@@ -1423,20 +1378,24 @@ in {
|
||||
};
|
||||
|
||||
waybar = (prev.waybar.override {
|
||||
inherit (emulated) wrapGAppsHook;
|
||||
runTests = false;
|
||||
cavaSupport = false; # doesn't cross compile
|
||||
# hopefully fixes: "/nix/store/sc1pz0zaqwpai24zh7xx0brjinflmc6v-aarch64-unknown-linux-gnu-binutils-2.40/bin/aarch64-unknown-linux-gnu-ld: /nix/store/ghxl1zrfnvh69dmv7xa1swcbyx06va4y-wayland-1.22.0/lib/libwayland-client.so: error adding symbols: file in wrong format"
|
||||
wrapGAppsHook = final.wrapGAppsHook.override {
|
||||
isGraphical = false;
|
||||
};
|
||||
}).overrideAttrs (upstream: {
|
||||
depsBuildBuild = upstream.depsBuildBuild or [] ++ [ final.pkg-config ];
|
||||
});
|
||||
|
||||
wvkbd = (
|
||||
# "wayland-scanner: no such program"
|
||||
mvToNativeInputs [ final.wayland-scanner ] prev.wvkbd
|
||||
).overrideAttrs (upstream: {
|
||||
postPatch = upstream.postPatch or "" + ''
|
||||
substituteInPlace Makefile \
|
||||
--replace "pkg-config" "$PKG_CONFIG"
|
||||
'';
|
||||
});
|
||||
# 2023/07/28: upstreaming is unblocked; implemented on servo pr/cross-2023-07-28 branch
|
||||
# wvkbd = (
|
||||
# # "wayland-scanner: no such program"
|
||||
# mvToNativeInputs [ final.wayland-scanner ] prev.wvkbd
|
||||
# ).overrideAttrs (upstream: {
|
||||
# postPatch = upstream.postPatch or "" + ''
|
||||
# substituteInPlace Makefile \
|
||||
# --replace "pkg-config" "$PKG_CONFIG"
|
||||
# '';
|
||||
# });
|
||||
}
|
||||
|
@@ -4,140 +4,43 @@
|
||||
# - they assume a particular architecture (e.g. x86) whereas i compile on multiple archs.
|
||||
# - they assume too much about their environment and fail under qemu.
|
||||
#
|
||||
(next: prev: {
|
||||
ell = prev.ell.overrideAttrs (_upstream: {
|
||||
# 2023/02/11
|
||||
# fixes "TEST FAILED in get_random_return_callback at unit/test-dbus-message-fds.c:278: !l_dbus_message_get_error(message, ((void *)0), ((void *)0))"
|
||||
# 2023/04/06
|
||||
# fixes "test-cipher: unit/test-cipher.c:102: test_aes_ctr: Assertion `!r' failed."
|
||||
# unclear *why* this test fails.
|
||||
(next: prev:
|
||||
let
|
||||
dontCheck = p: p.overrideAttrs (_: {
|
||||
doCheck = false;
|
||||
doInstallCheck = false;
|
||||
});
|
||||
# fish = prev.fish.overrideAttrs (_upstream: {
|
||||
# # 2023/02/28
|
||||
# # The following tests FAILED:
|
||||
# # 177 - sigint.fish (Failed)
|
||||
# # 241 - torn_escapes.py (Failed)
|
||||
# doCheck = false;
|
||||
# });
|
||||
# gjs = prev.gjs.overrideAttrs (_upstream: {
|
||||
# # 2023/01/30: one test times out. probably flakey test that only got built because i patched mesa.
|
||||
# doCheck = false;
|
||||
# });
|
||||
# gssdp = prev.gssdp.overrideAttrs (_upstream: {
|
||||
# # 2023/02/11
|
||||
# # fixes "ERROR:../tests/test-regression.c:429:test_ggo_7: assertion failed (error == NULL): Failed to set multicast interfaceProtocol not available (gssdp-error, 1)"
|
||||
# doCheck = false;
|
||||
# });
|
||||
# gupnp = prev.gupnp.overrideAttrs (_upstream: {
|
||||
# # 2023/02/22
|
||||
# # fixes "Bail out! ERROR:../tests/test-bugs.c:205:test_bgo_696762: assertion failed (error == NULL): Failed to set multicast interfaceProtocol not available (gssdp-erro>"
|
||||
# doCheck = false;
|
||||
# });
|
||||
# json-glib = prev.json-glib.overrideAttrs (_upstream: {
|
||||
# # 2023/02/11
|
||||
# # fixes: "15/15 json-glib:docs / doc-check TIMEOUT 30.52s killed by signal 15 SIGTERM"
|
||||
# doCheck = false;
|
||||
# });
|
||||
# lapack-reference = prev.lapack-reference.overrideAttrs (_upstream: {
|
||||
# # 2023/02/11: test timeouts
|
||||
# # > The following tests FAILED:
|
||||
# # > 93 - LAPACK-xlintstz_ztest_in (Timeout)
|
||||
# # > 98 - LAPACK-xeigtstz_svd_in (Timeout)
|
||||
# # > 99 - LAPACK-xeigtstz_zec_in (Timeout)
|
||||
# doCheck = false;
|
||||
# });
|
||||
# libadwaita = prev.libadwaita.overrideAttrs (_upstream: {
|
||||
# # 2023/01/30: one test times out. probably flakey test that only got built because i patched mesa.
|
||||
# doCheck = false;
|
||||
# });
|
||||
# libsecret = prev.libsecret.overrideAttrs (_upstream: {
|
||||
# # 2023/01/30: one test times out. probably flakey test that only got built because i patched mesa.
|
||||
# doCheck = false;
|
||||
# });
|
||||
# libuv = prev.libuv.overrideAttrs (_upstream: {
|
||||
# # 2023/02/11
|
||||
# # 2 tests fail:
|
||||
# # - not ok 261 - tcp_bind6_error_addrinuse
|
||||
# # - not ok 267 - tcp_bind_error_addrinuse_listen
|
||||
# doCheck = false;
|
||||
# });
|
||||
libwacom = prev.libwacom.overrideAttrs (_upstream: {
|
||||
# 2023/03/30
|
||||
# "libwacom:all / pytest TIMEOUT"
|
||||
aarch64Only = f: p: p.overrideAttrs (upstream:
|
||||
next.lib.optionalAttrs
|
||||
(p.stdenv.targetPlatform.system == "aarch64-linux")
|
||||
(f upstream)
|
||||
);
|
||||
dontCheckAarch64 = aarch64Only (_: {
|
||||
# only `dontCheck` if the package is being built for aarch64
|
||||
doCheck = false;
|
||||
doInstallCheck = false;
|
||||
});
|
||||
in {
|
||||
# 2023/07/27
|
||||
# 4 tests fail when building `host-pkgs.moby.emulated.elfutils`
|
||||
# it might be enough to only disable checks when targeting aarch64, which could reduce rebuilds?
|
||||
elfutils = dontCheckAarch64 prev.elfutils;
|
||||
|
||||
# 2023/07/28
|
||||
# "7/7 libwacom:all / pytest TIMEOUT 30.36s killed by signal 15 SIGTERM"
|
||||
libwacom = aarch64Only (_: {
|
||||
doCheck = false;
|
||||
mesonFlags = [ "-Dtests=disabled" ];
|
||||
});
|
||||
}) prev.libwacom;
|
||||
|
||||
# llvmPackages_12 =
|
||||
# let
|
||||
# tools = prev.llvmPackages_12.tools.extend (self: super: {
|
||||
# libllvm = super.libllvm.overrideAttrs (upstream: {
|
||||
# # 2023/02/21: fix: "FAIL: LLVM-Unit :: ExecutionEngine/MCJIT/./MCJITTests/MCJITTest.return_global (2857 of 42084)"
|
||||
# # - nix log /nix/store/6vydavlxh1gvs0vmrkcx9qp67g3h7kcz-llvm-12.0.1.drv
|
||||
# # - wanted by sequoia, rav1e, rustc-1.66.1 (is this right?)
|
||||
# doCheck = false;
|
||||
# # upstream sets this with `rec`; TODO: have upstream refer to the final overrideAttrs version of the derivation instead of using rec.
|
||||
# cmakeFlags = next.lib.remove "-DLLVM_BUILD_TESTS=ON" upstream.cmakeFlags;
|
||||
# });
|
||||
# });
|
||||
# in
|
||||
# # see <nixpkgs:pkgs/development/compilers/llvm/12/default.nix>
|
||||
# # - we copy their strategy / attrset mutilation
|
||||
# prev.llvmPackages_12 // { inherit tools; } // tools;
|
||||
|
||||
# llvmPackages_14 =
|
||||
# let
|
||||
# tools = prev.llvmPackages_14.tools.extend (self: super: {
|
||||
# libllvm = super.libllvm.overrideAttrs (upstream: {
|
||||
# # 2023/02/21: fix: "FAIL: LLVM-Unit :: ExecutionEngine/MCJIT/./MCJITTests/MCJITMultipleModuleTest.two_module_global_variables_case (43769 of 46988)"
|
||||
# # - nix log /nix/store/ib2yw6sajnhlmibxkrn7lj7chllbr85h-llvm-14.0.6.drv
|
||||
# # - wanted by clang-11-12-LLVMgold-path, compiler-rt-libc-12.0.1, clang-wrapper-12.0.1 (is this right?)
|
||||
# doCheck = false;
|
||||
# # upstream sets this with `rec`; TODO: have upstream refer to the final overrideAttrs version of the derivation instead of using rec.
|
||||
# cmakeFlags = next.lib.remove "-DLLVM_BUILD_TESTS=ON" upstream.cmakeFlags;
|
||||
# });
|
||||
# });
|
||||
# in
|
||||
# # see <nixpkgs:pkgs/development/compilers/llvm/14/default.nix>
|
||||
# # - we copy their strategy / attrset mutilation
|
||||
# prev.llvmPackages_14 // { inherit tools; } // tools;
|
||||
|
||||
# llvmPackages_15 =
|
||||
# let
|
||||
# tools = prev.llvmPackages_15.tools.extend (self: super: {
|
||||
# libllvm = super.libllvm.override {
|
||||
# # 2023/02/21: fix: "FAIL: LLVM-Unit :: ExecutionEngine/MCJIT/./MCJITTests/..."
|
||||
# # llvm15 passes doCheck as a call arg, so we don't need to set cmakeFlags explicitly as in previous versions
|
||||
# doCheck = false;
|
||||
# };
|
||||
# });
|
||||
# in
|
||||
# prev.llvmPackages_15 // { inherit tools; } // tools;
|
||||
|
||||
# modemmanager = prev.modemmanager.overrideAttrs (_upstream: {
|
||||
# # 2023/02/25
|
||||
# # "ERROR:test-modem-helpers.c:257:test_cmgl_response: assertion failed: (list != NULL)"
|
||||
# doCheck = false;
|
||||
# doInstallCheck = false; # tests are run during install check??
|
||||
# });
|
||||
pipewire = prev.pipewire.override {
|
||||
# avoid a dep on python3.10-PyQt5, which has mixed qt5 versions.
|
||||
# this means we lose firewire support (oh well..?)
|
||||
ffadoSupport = false;
|
||||
};
|
||||
|
||||
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
|
||||
(py-next: py-prev: {
|
||||
# ipython = py-prev.ipython.overridePythonAttrs (upstream: {
|
||||
# # > FAILED IPython/core/tests/test_debugger.py::test_xmode_skip - pexpect.exceptions.TIMEOUT: Timeout exceeded.
|
||||
# # > FAILED IPython/core/tests/test_debugger.py::test_decorator_skip - pexpect.exceptions.TIMEOUT: Timeout exceeded.
|
||||
# # > FAILED IPython/core/tests/test_debugger.py::test_decorator_skip_disabled - pexpect.exceptions.TIMEOUT: Timeout exceeded.
|
||||
# # > FAILED IPython/core/tests/test_debugger.py::test_decorator_skip_with_breakpoint - pexpect.exceptions.TIMEOUT: Timeout exceeded.
|
||||
# # > FAILED IPython/core/tests/test_debugger.py::test_where_erase_value - pexpect.exceptions.TIMEOUT: Timeout exceeded.
|
||||
# # > FAILED IPython/terminal/tests/test_debug_magic.py::test_debug_magic_passes_through_generators - pexpect.exceptions.TIMEOUT: Timeout exceeded.
|
||||
# # > FAILED IPython/terminal/tests/test_embed.py::test_nest_embed - pexpect.exceptions.TIMEOUT: Timeout exceeded.
|
||||
# disabledTestPaths = upstream.disabledTestPaths or [] ++ [
|
||||
# "IPython/core/tests/test_debugger.py"
|
||||
# "IPython/terminal/tests/test_debug_magic.py"
|
||||
# "IPython/terminal/tests/test_embed.py"
|
||||
# ];
|
||||
# });
|
||||
pyarrow = py-prev.pyarrow.overridePythonAttrs (upstream: {
|
||||
# 2023/04/02
|
||||
# disabledTests = upstream.disabledTests ++ [ "test_generic_options" ];
|
||||
@@ -145,59 +48,10 @@
|
||||
"pyarrow/tests/test_flight.py"
|
||||
];
|
||||
});
|
||||
# pytest-xdist = py-prev.pytest-xdist.overridePythonAttrs (upstream: {
|
||||
# # 2023/02/19
|
||||
# # 4 tests fail:
|
||||
# # - FAILED: testing/test_remote.py::TestWorkInteractor::* - execnet.gateway_base.TimeoutError: no item after 10.0 seconds
|
||||
# # doCheck = false;
|
||||
# disabledTestPaths = upstream.disabledTestPaths or [] ++ [
|
||||
# "testing/test_remote.py"
|
||||
# ];
|
||||
# # disabledTests = upstream.disabledTests or [] ++ [
|
||||
# # "test_basic_collect_and_runtests"
|
||||
# # "test_remote_collect_fail"
|
||||
# # "test_remote_collect_skip"
|
||||
# # "test_runtests_all"
|
||||
# # ];
|
||||
# });
|
||||
# twisted = py-prev.twisted.overridePythonAttrs (upstream: {
|
||||
# # 2023/02/25
|
||||
# # ```
|
||||
# # [ERROR]
|
||||
# # Traceback (most recent call last):
|
||||
# # File "/nix/store/dcnsxrn8rsfk1dghah7md5glbbnfysq3-python3.10-twisted-22.10.0/lib/python3.10/site-packages/twisted/test/test_udp.py", line 645, in test_interface
|
||||
# # self.assertEqual(self.client.transport.getOutgoingInterface(), "0.0.0.0")
|
||||
# # File "/nix/store/dcnsxrn8rsfk1dghah7md5glbbnfysq3-python3.10-twisted-22.10.0/lib/python3.10/site-packages/twisted/internet/udp.py", line 449, in getOutgoingInterface
|
||||
# # i = self.socket.getsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF)
|
||||
# # builtins.OSError: [Errno 92] Protocol not available
|
||||
# #
|
||||
# # twisted.test.test_udp.MulticastTests.test_interface
|
||||
# # ```
|
||||
# postPatch = upstream.postPatch + ''
|
||||
# echo 'MulticastTests.test_interface.skip = "Protocol not available"'>> src/twisted/test/test_udp.py
|
||||
# '';
|
||||
# });
|
||||
})
|
||||
];
|
||||
|
||||
# strp = prev.srtp.overrideAttrs (_upstream: {
|
||||
# # 2023/02/11
|
||||
# # roc_driver test times out after 30s
|
||||
# doCheck = false;
|
||||
# });
|
||||
tracker = prev.tracker.overrideAttrs (_upstream: {
|
||||
# 2023/02/22
|
||||
# "27/37 tracker:core / service TIMEOUT 60.37s killed by signal 15 SIGTERM"
|
||||
doCheck = false;
|
||||
});
|
||||
# udisks2 = prev.udisks2.overrideAttrs (_upstream: {
|
||||
# # 2023/02/25
|
||||
# # "udisks-test:ERROR:test.c:61:on_completed_expect_failure: assertion failed (message == expected_message): ("Command-line `./udisks-test-helper 4' was signaled with signal SIGSEGV (11):\nstdout: `OK, deliberately causing a segfault\n'\nstderr: `qemu: uncaught target signal 11 (Segmentation fault) - core dumped\n'" == "Command-line `./udisks-test-helper 4' was signaled with signal SIGSEGV (11): OK, deliberately causing a segfault\n")"
|
||||
# doCheck = false;
|
||||
# });
|
||||
# upower = prev.upower.overrideAttrs (_upstream: {
|
||||
# # 2023/02/25
|
||||
# # "Tests.test_battery_state_guessing TIMEOUT 60.80s killed by signal 15 SIGTERM"
|
||||
# doCheck = false;
|
||||
# });
|
||||
# 2023/02/22
|
||||
# "27/37 tracker:core / service TIMEOUT 60.37s killed by signal 15 SIGTERM"
|
||||
tracker = dontCheck prev.tracker;
|
||||
})
|
||||
|
@@ -1,18 +1,22 @@
|
||||
{ fractal-next, fetchFromGitLab, rustPlatform }:
|
||||
|
||||
(fractal-next.overrideAttrs (prev: rec {
|
||||
version = "20221220";
|
||||
version = "unstable-2023-07-28";
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
owner = "GNOME";
|
||||
repo = "fractal";
|
||||
rev = "d394badd0bf36c43026e01dbeb1cd7f881cf3440";
|
||||
hash = "sha256-JgLrDrMLEh7302tZ3NOJ12dCMiSxGgecaUjcuDPcGSg=";
|
||||
rev = "dc66180a44e4e996db0e840dab0be08d826a5319";
|
||||
hash = "sha256-SYkeHkNlxHbsd+kubGZO5PEA9mg9Id0pHDi/2MMGy90=";
|
||||
};
|
||||
patches = [];
|
||||
postPatch = "";
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
hash = "sha256-hHsMcU6s42yKn2+LkWraLDhnmWNY72dL2cJoy6uoOKI=";
|
||||
|
||||
cargoDeps = rustPlatform.importCargoLock {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
"matrix-sdk-0.6.2" = "sha256-ofaXdhkbDa7/tp/RdBQ1/JBaSims8znJ66NeRUhof20=";
|
||||
"ruma-0.8.2" = "sha256-ZlevGTGL/DQVAYeR078I0cT/V1kaubhORgt1cZUhBqM=";
|
||||
# "vodozemac-0.3.0" = "sha256-tAimsVD8SZmlVybb7HvRffwlNsfb7gLWGCplmwbLIVE=";
|
||||
"x25519-dalek-1.2.0" = "sha256-AHjhccCqacu0WMTFyxIret7ghJ2V+8wEAwR5L6Hy1KY=";
|
||||
};
|
||||
};
|
||||
}))
|
||||
|
@@ -11,34 +11,20 @@
|
||||
, fetchgit
|
||||
, fetchurl
|
||||
, dpkg
|
||||
, glib
|
||||
, gnutar
|
||||
, gtk3-x11
|
||||
, gettext
|
||||
, luajit
|
||||
# , lua51Packages
|
||||
, perl
|
||||
, pkg-config
|
||||
, python3
|
||||
, ragel
|
||||
, sdcv
|
||||
, SDL2
|
||||
, substituteAll
|
||||
, which
|
||||
}:
|
||||
let
|
||||
sources = import ./sources.nix;
|
||||
# luajson = luajit_lua52.pkgs.buildLuarocksPackage {
|
||||
# pname = "luajson";
|
||||
# version = "1.3.4-1";
|
||||
# source = fetchgit {
|
||||
# url = "https://github.com/harningt/luajson.git";
|
||||
# rev = "1.3.4";
|
||||
# hash = "sha256-JaJsjN5Gp+8qswfzl5XbHRQMfaCAJpWDWj9DYWJ0gEI=";
|
||||
# };
|
||||
# };
|
||||
luajit52 = luajit.override { enable52Compat = true; self = luajit52; };
|
||||
luaEnv = luajit52.withPackages (ps: with ps; [
|
||||
luarocks # TODO: needed?
|
||||
(buildLuarocksPackage {
|
||||
pname = "luajson";
|
||||
version = "1.3.4-1";
|
||||
@@ -54,6 +40,15 @@ let
|
||||
propagatedBuildInputs = [ lpeg ];
|
||||
})
|
||||
]);
|
||||
crossTargets = {
|
||||
# koreader-base Makefile targets to use when compiling for the given host platform
|
||||
# only used when cross compiling
|
||||
aarch64 = "debian-arm64";
|
||||
};
|
||||
target = if stdenv.buildPlatform == stdenv.hostPlatform then
|
||||
"debian"
|
||||
else
|
||||
crossTargets."${stdenv.hostPlatform.parsed.cpu.name}";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "koreader-from-src";
|
||||
@@ -83,8 +78,7 @@ stdenv.mkDerivation rec {
|
||||
);
|
||||
|
||||
patches = [
|
||||
./debug.patch
|
||||
# ./mupdf_dir.patch #< TODO: needed?
|
||||
./debug.patch #< not needed to build, just helps debug packaging issues
|
||||
./no_rm_build_dirs.patch
|
||||
./lua-Spore-no-luajson.patch #< TODO: test this at runtime! we ship luajson, but just don't expose it via luarocks...
|
||||
(substituteAll (
|
||||
@@ -100,14 +94,15 @@ stdenv.mkDerivation rec {
|
||||
sourceRoot = "koreader";
|
||||
|
||||
nativeBuildInputs = [
|
||||
buildPackages.stdenv.cc # TODO: move to depsBuildBuild?
|
||||
autoconf # autotools is used by some thirdparty libraries
|
||||
automake
|
||||
autoPatchelfHook # TODO: needed?
|
||||
cmake # for koreader/base submodule
|
||||
dpkg
|
||||
gettext
|
||||
git
|
||||
libtool
|
||||
# lua51Packages.luarocks
|
||||
makeWrapper
|
||||
perl # TODO: openssl might try to take a runtime dep on this; see nixpkg
|
||||
pkg-config
|
||||
@@ -118,23 +113,16 @@ stdenv.mkDerivation rec {
|
||||
luaEnv.pkgs.luarocks
|
||||
];
|
||||
buildInputs = [
|
||||
glib #< TODO: needed?
|
||||
gnutar
|
||||
gtk3-x11 #< TODO: needed?
|
||||
# luajit_lua52
|
||||
# luajson
|
||||
luaEnv
|
||||
sdcv # TODO: remove this? KOreader builds (and ships) it itself
|
||||
SDL2 # TODO: remove this? KOreader builds (but doesn't ship) it itself
|
||||
];
|
||||
|
||||
postPatch =
|
||||
let
|
||||
env = "${buildPackages.coreutils}/bin/env";
|
||||
in ''
|
||||
# patchShebangs platform/debian/do_debian_package.sh
|
||||
|
||||
substituteInPlace ../openssl/config --replace '/usr/bin/env' '${env}'
|
||||
substituteInPlace ../openssl/Configure --replace '/usr/bin/env' '${env}'
|
||||
|
||||
chmod +x ../glib/gio/gio-querymodules-wrapper.py
|
||||
chmod +x ../glib/gio/tests/gengiotypefuncs.py
|
||||
@@ -154,6 +142,9 @@ stdenv.mkDerivation rec {
|
||||
substituteInPlace ../glib/glib/gtester-report.in --replace '/usr/bin/env @PYTHON@' '@PYTHON@'
|
||||
substituteInPlace ../glib/gobject/glib-genmarshal.in --replace '/usr/bin/env @PYTHON@' '@PYTHON@'
|
||||
substituteInPlace ../glib/gobject/glib-mkenums.in --replace '/usr/bin/env @PYTHON@' '@PYTHON@'
|
||||
|
||||
substituteInPlace ../harfbuzz/autogen.sh --replace 'which pkg-config' 'which $PKG_CONFIG'
|
||||
substituteInPlace ../fribidi/autogen.sh --replace 'which pkg-config' 'which $PKG_CONFIG'
|
||||
'';
|
||||
|
||||
dontConfigure = true;
|
||||
@@ -207,26 +198,29 @@ stdenv.mkDerivation rec {
|
||||
(name: src:
|
||||
let
|
||||
# for machine-agnostic libraries (e.g. pure lua), koreader doesn't build them in a flavored directory
|
||||
machine = if src.machineAgnostic or false then "" else "x86_64-unknown-linux-gnu";
|
||||
machine = if src.machineAgnostic or false then "" else stdenv.hostPlatform.config;
|
||||
in
|
||||
''install_lib "${name}" "${src.source.rev}" "${machine}"''
|
||||
)
|
||||
sources.thirdparty
|
||||
) + ''
|
||||
|
||||
make TARGET=debian DEBIAN=1 SHELL=sh VERBOSE=1
|
||||
make TARGET=${target} DEBIAN=1 SHELL=sh VERBOSE=1
|
||||
'';
|
||||
# XXX: ^ don't specify INSTALL_DIR="$out" as make arg because that conflicts with vars used by third-party libs
|
||||
# might be safe to specify that as an env var, though?
|
||||
env = lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
|
||||
CHOST = stdenv.hostPlatform.config;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
make TARGET=debian DEBIAN=1 debianupdate
|
||||
mv koreader-debian-x86_64-unknown-linux-gnu/debian/usr $out
|
||||
make TARGET=${target} DEBIAN=1 debianupdate
|
||||
mv koreader-${target}-${stdenv.hostPlatform.config}/debian/usr $out
|
||||
|
||||
wrapProgram $out/bin/koreader --prefix LD_LIBRARY_PATH : ${
|
||||
lib.makeLibraryPath [ SDL2 ]
|
||||
}
|
||||
'';
|
||||
# XXX: ^ don't specify INSTALL_DIR="$out" as make arg because that conflicts with vars used by third-party libs
|
||||
# might be safe to specify that as an env var, though?
|
||||
# XXX: nixpkgs adds glib and gtk3-x11 to LD_LIBRARY_PATH as well
|
||||
|
||||
passthru = {
|
||||
|
@@ -1,15 +0,0 @@
|
||||
diff --git a/base/Makefile.defs b/base/Makefile.defs
|
||||
index dbb95daa..1293e5d5 100644
|
||||
--- a/base/Makefile.defs
|
||||
+++ b/base/Makefile.defs
|
||||
@@ -732,8 +732,8 @@ MINIZIP_DIR=$(CURDIR)/$(MINIZIP_BUILD_DIR)/minizip-prefix/src/minizip
|
||||
AES_LIB_DIR=$(MINIZIP_DIR)/aes
|
||||
AES_LIB=$(MINIZIP_DIR)/libaes.a
|
||||
|
||||
-MUPDF_BUILD_DIR=$(CURDIR)/$(THIRDPARTY_DIR)/mupdf/build/$(MACHINE)
|
||||
-MUPDF_DIR=$(MUPDF_BUILD_DIR)/mupdf-prefix/src/mupdf
|
||||
+MUPDF_BUILD_DIR=$(THIRDPARTY_DIR)/mupdf/build/$(MACHINE)
|
||||
+MUPDF_DIR=$(CURDIR)/$(MUPDF_BUILD_DIR)/mupdf-prefix/src/mupdf
|
||||
MUPDF_LIB_DIR=$(MUPDF_DIR)/build/$(if $(KODEBUG),debug,release)
|
||||
MUPDF_LIB_STATIC=$(MUPDF_LIB_DIR)/libmupdf.a
|
||||
MUPDF_THIRDPARTY_LIBS=$(MUPDF_LIB_DIR)/libmupdfthird.a \
|
@@ -6,13 +6,11 @@
|
||||
source.hash = "sha256-kzozc0Io+1f4UMivSV2IhzJDQXmad4wNhXN/Y2Lsg3Q=";
|
||||
};
|
||||
czmq = {
|
||||
# Completed
|
||||
source.url = "https://github.com/zeromq/czmq.git";
|
||||
source.rev = "2a0ddbc4b2dde623220d7f4980ddd60e910cfa78";
|
||||
source.hash = "sha256-p4Cl2PLVgRQ0S4qr3VClJXjvAd2LUBU9oRUvOCfVnyw=";
|
||||
};
|
||||
djvulibre = {
|
||||
# Completed
|
||||
source.url = "https://gitlab.com/koreader/djvulibre.git";
|
||||
source.rev = "6a1e5ba1c9ef81c205a4b270c3f121a1e106f4fc";
|
||||
source.hash = "sha256-OWSbxdr93FH3ed0D+NSFWIah7VDTcL3LIGOciY+f4dk=";
|
||||
@@ -23,31 +21,26 @@
|
||||
source.hash = "sha256-JlanCl4XQBFnrpRIEsowSeUI7wSa9RoQc5h3pkMHXA8=";
|
||||
};
|
||||
freetype2 = {
|
||||
# Completed
|
||||
source.url = "https://gitlab.com/koreader/freetype2.git";
|
||||
source.rev = "VER-2-13-1";
|
||||
source.hash = "sha256-rQN+hRzrs+KGgp8+n1VJzOOwtKUcRuSE/s/r8/xOUdI=";
|
||||
};
|
||||
fribidi = {
|
||||
# Completed
|
||||
source.url = "https://github.com/fribidi/fribidi.git";
|
||||
source.rev = "tags/v1.0.12";
|
||||
source.hash = "sha256-L4m/F9rs8fiv9rSf8oy7P6cthhupc6R/lCv30PLiQ4M=";
|
||||
};
|
||||
giflib = {
|
||||
# Completed
|
||||
source.url = "https://gitlab.com/koreader/giflib.git";
|
||||
source.rev = "5.1.4";
|
||||
source.hash = "sha256-znbY4tliXHXVLBd8sTKrbglOdCUb7xhcCQsDDWcQfhw=";
|
||||
};
|
||||
glib = {
|
||||
# Completed
|
||||
source.url = "https://github.com/GNOME/glib.git";
|
||||
source.rev = "2.58.3";
|
||||
source.hash = "sha256-KmJXCJ6h2QhPyK1axk+Y9+yJzO0wnCczcogopxGShJc=";
|
||||
};
|
||||
harfbuzz = {
|
||||
# Completed
|
||||
source.url = "https://github.com/harfbuzz/harfbuzz.git";
|
||||
source.rev = "8.0.1";
|
||||
source.hash = "sha256-qh04AsZlymNcUtZ3fytA9+Jk5PjPYm8UH75kBqZNsw4=";
|
||||
@@ -63,37 +56,31 @@
|
||||
source.hash = "sha256-SDXKam768xvZZvTbXe3sssvZyeLEEiY97Vrzx8hoc6g=";
|
||||
};
|
||||
libjpeg-turbo = {
|
||||
# Completed
|
||||
source.url = "https://github.com/libjpeg-turbo/libjpeg-turbo.git";
|
||||
source.rev = "3.0.0";
|
||||
source.hash = "sha256-mIeSBP65+rWOCRS/33MPqGUpemBee2qR45CZ6H00Hak=";
|
||||
};
|
||||
libk2pdfopt = {
|
||||
# Completed
|
||||
source.url = "https://github.com/koreader/libk2pdfopt.git";
|
||||
source.rev = "60b82eeecf71d1776951da970fe8cd2cc5735ded";
|
||||
source.hash = "sha256-9UcDr9e4GZCZ78moRs1ADAt4Xl7z3vR93KDexXEHvhw=";
|
||||
};
|
||||
libpng = {
|
||||
# Completed
|
||||
source.url = "https://github.com/glennrp/libpng.git";
|
||||
source.rev = "v1.6.40";
|
||||
source.hash = "sha256-Rad7Y5Z9PUCipBTQcB7LEP8fIVTG3JsnMeknUkZ/rRg=";
|
||||
};
|
||||
libunibreak = {
|
||||
# Completed
|
||||
source.url = "https://github.com/adah1972/libunibreak.git";
|
||||
source.rev = "tags/libunibreak_5_1";
|
||||
source.hash = "sha256-hjgT5DCQ6KFXKlxk9LLzxGHz6B71X/3Ot7ipK3KY85A=";
|
||||
};
|
||||
libwebp = {
|
||||
# Completed
|
||||
source.url = "https://github.com/webmproject/libwebp.git";
|
||||
source.rev = "v1.3.1";
|
||||
source.hash = "sha256-ddDL/nnBikbm6YznlyCcBgmq2Qzo0MjIwMzN4/kzWqk=";
|
||||
};
|
||||
libzmq = {
|
||||
# Completed
|
||||
source.url = "https://github.com/zeromq/libzmq";
|
||||
source.rev = "883e95b22e0bffffa72312ea1fec76199afbe458";
|
||||
source.hash = "sha256-R76EREtHsqcoKxKrgT8gfEf9pIWdLTBXvF9cDvjEf3E=";
|
||||
@@ -105,37 +92,31 @@
|
||||
machineAgnostic = true;
|
||||
};
|
||||
lodepng = {
|
||||
# Completed
|
||||
source.url = "https://github.com/lvandeve/lodepng.git";
|
||||
source.rev = "c18b949b71f45e78b1f9a28c5d458bce0da505d6";
|
||||
source.hash = "sha256-AAw6I+MxDaxmGpjC5efxuBNw7Lx8FXwg2TEfl6LfPfQ=";
|
||||
};
|
||||
lua-htmlparser = {
|
||||
# Completed
|
||||
source.url = "https://github.com/msva/lua-htmlparser";
|
||||
source.rev = "5ce9a775a345cf458c0388d7288e246bb1b82bff";
|
||||
source.hash = "sha256-aSTLSfqz/MIDFVRwtBlDNBUhPb7KqOl32/Y62Hdec1s=";
|
||||
};
|
||||
luajit = {
|
||||
# Completed
|
||||
source.url = "https://github.com/LuaJIT/LuaJIT";
|
||||
source.rev = "8635cbabf3094c4d8bd00578c7d812bea87bb2d3";
|
||||
source.hash = "sha256-pfMNQFulW6AEwAVPxn9wUdbRg3ViHbGVCCke5NSIgTo=";
|
||||
};
|
||||
lua-rapidjson = {
|
||||
# Completed
|
||||
source.url = "https://github.com/xpol/lua-rapidjson";
|
||||
source.rev = "242b40c8eaceb0cc43bcab88309736461cac1234";
|
||||
source.hash = "sha256-y/czEVPtCt4uN1n49Qi7BrgZmkG+SDXlM5D2GvvO2qg=";
|
||||
};
|
||||
luasec = {
|
||||
# Completed
|
||||
source.url = "https://github.com/brunoos/luasec";
|
||||
source.rev = "tags/v1.3.1";
|
||||
source.hash = "sha256-3iYRNQoVk5HFjDSqRRmg1taSqeT2cHFil36vxjrEofo=";
|
||||
};
|
||||
luasocket = {
|
||||
# Completed
|
||||
source.url = "https://github.com/lunarmodules/luasocket";
|
||||
source.rev = "8c2ff7217e2a205eb107a6f48b04ff1b2b3090a1";
|
||||
source.hash = "sha256-Y35QYNLznQmErr6rIjxLzw0/6Y7y8TbzD4yaEdgEljA=";
|
||||
@@ -151,25 +132,21 @@
|
||||
source.hash = "sha256-wb7ykJsndoq0DazHpfXieUcBBptowYqD/eTTN/EK/6g=";
|
||||
};
|
||||
lunasvg = {
|
||||
# Completed
|
||||
source.url = "https://github.com/sammycage/lunasvg.git";
|
||||
source.rev = "59d6f6ba835c1b7c7a0f9d4ea540ec3981777885";
|
||||
source.hash = "sha256-gW2ikakS6Omz5upmy26nAo/jkGHYO2kjlB3UmKJBh1k=";
|
||||
};
|
||||
minizip = {
|
||||
# Completed
|
||||
source.url = "https://github.com/nmoinvaz/minizip";
|
||||
source.rev = "0b46a2b4ca317b80bc53594688883f7188ac4d08";
|
||||
source.hash = "sha256-P/3MMMGYDqD9NmkYvw/thKpUNa3wNOSlBBjANHSonAg=";
|
||||
};
|
||||
mupdf = {
|
||||
# Completed
|
||||
source.url = "https://github.com/ArtifexSoftware/mupdf.git";
|
||||
source.rev = "tags/1.13.0";
|
||||
source.hash = "sha256-pQejRon9fO9A1mhz3oLjBr1j4HveDLcQIWjR1/Rpy5Q=";
|
||||
};
|
||||
nanosvg = {
|
||||
# Completed
|
||||
source.url = "https://github.com/memononen/nanosvg.git";
|
||||
source.rev = "9da543e8329fdd81b64eb48742d8ccb09377aed1";
|
||||
source.hash = "sha256-VOiN6583DtzGYPRkl19VG2QvSzl4T9HaynBuNcvZf94=";
|
||||
@@ -181,7 +158,6 @@
|
||||
source.hash = "sha256-yjIpSbe5pt9sEV2MZYGztxejg/aBFfKO8ieRvoLN2KA=";
|
||||
};
|
||||
openssl = {
|
||||
# Completed
|
||||
source.url = "https://github.com/openssl/openssl.git";
|
||||
source.rev = "OpenSSL_1_1_1u";
|
||||
source.hash = "sha256-JOcUj4ovA6621+1k2HUsvhGX1B9BjvaMbCaSx680nSs=";
|
||||
@@ -203,19 +179,16 @@
|
||||
source.hash = "sha256-FQvlrJ+Uy7+wtUxBuS5NdoToUwNRhYw2ju8Ya8MLyQw=";
|
||||
};
|
||||
turbo = {
|
||||
# Completed
|
||||
source.url = "https://github.com/kernelsauce/turbo";
|
||||
source.rev = "tags/v2.1.3";
|
||||
source.hash = "sha256-vBRkFdc5a0FIt15HBz3TnqMZ+GGsqjEefnfJEpuVTBs=";
|
||||
};
|
||||
utf8proc = {
|
||||
# Completed
|
||||
source.url = "https://github.com/JuliaStrings/utf8proc.git";
|
||||
source.rev = "v2.8.0";
|
||||
source.hash = "sha256-/lSD78kj133rpcSAOh8T8XFW/Z0c3JKkGQM5Z6DcMtU=";
|
||||
};
|
||||
zstd = {
|
||||
# Completed
|
||||
source.url = "https://github.com/facebook/zstd.git";
|
||||
source.rev = "tags/v1.5.5";
|
||||
source.hash = "sha256-tHHHIsQU7vJySrVhJuMKUSq11MzkmC+Pcsj00uFJdnQ=";
|
||||
@@ -237,7 +210,6 @@
|
||||
hash = "sha256-x30NoxAq7JwH9DZx5gYR6/+JqZbvFZSXzo5Z0HV4axI=";
|
||||
};
|
||||
libffi = {
|
||||
# Completed
|
||||
url = "https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz";
|
||||
hash = "sha256-1mxWrSWags8qnfxAizK/XaUjcVALhHRff7i2RXEt9nY=";
|
||||
};
|
||||
@@ -246,7 +218,6 @@
|
||||
hash = "sha256-zPU2YgpFRY0muoOIepg7loJwAekqE4R7ReSSXMiRMXg=";
|
||||
};
|
||||
lpeg = {
|
||||
# Completed
|
||||
url = "http://distcache.FreeBSD.org/ports-distfiles/lpeg-1.0.2.tar.gz";
|
||||
hash = "sha256-SNZldgUbbHg4j6rQm3BJMJMmRYj80PJY3aqxzdShX/4=";
|
||||
};
|
||||
@@ -269,7 +240,6 @@
|
||||
hash = "sha256-A9kIz1doz+a3rViMkhxu0hrKv7K3m3iNEzBFNQdkeu0=";
|
||||
};
|
||||
zlib = {
|
||||
# Completed
|
||||
url = "http://gentoo.osuosl.org/distfiles/zlib-1.2.13.tar.xz";
|
||||
hash = "sha256-0Uw44xOvw1qah2Da3yYEL1HqD10VSwYwox2gVAEH+5g=";
|
||||
};
|
||||
|
26
pkgs/additional/mpv-uosc-latest/default.nix
Normal file
26
pkgs/additional/mpv-uosc-latest/default.nix
Normal file
@@ -0,0 +1,26 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, fetchFromGitea
|
||||
, mpvScripts
|
||||
}:
|
||||
mpvScripts.uosc.overrideAttrs (upstream: {
|
||||
version = "unstable-2023-07-26";
|
||||
# src = fetchFromGitHub {
|
||||
# owner = "tomasklaen";
|
||||
# repo = "uosc";
|
||||
# rev = "e783ad1f133e06a50d424291143d25497fbecfdd";
|
||||
# hash = "sha256-FFl51Kv5eMNyB4LM4JmjJXDnd/XvvtXZbHsRpSkSGqE=";
|
||||
# };
|
||||
src = lib.warnIf (upstream.version != "4.7.0") "mpv-uosc-latest is behind nixpkgs mpvScripts.uosc ${upstream.version}" fetchFromGitea {
|
||||
domain = "git.uninsane.org";
|
||||
owner = "colin";
|
||||
repo = "uosc";
|
||||
rev = "dev/sane";
|
||||
hash = "sha256-XOhryppod3zozYrPQlGBw298u+0/eS1MaDepV4p88cM=";
|
||||
# for version > 4.7.0, we can use nixpkgs src and set `patches` to a fetch of my one custom commit
|
||||
};
|
||||
passthru = upstream.passthru // {
|
||||
scriptName = "uosc";
|
||||
};
|
||||
postPatch = ""; # delete the outdated `path` fix
|
||||
})
|
@@ -144,7 +144,7 @@ let
|
||||
reclaim-disk-space = static-nix-shell.mkBash {
|
||||
pname = "sane-reclaim-disk-space";
|
||||
src = ./src;
|
||||
pkgs = [ "nix" "rmlint" "util-linux" ];
|
||||
pkgs = [ "nix" ];
|
||||
};
|
||||
secrets-dump = static-nix-shell.mkBash {
|
||||
pname = "sane-secrets-dump";
|
||||
|
@@ -153,6 +153,12 @@ class Torrent:
|
||||
def is_manga(self, default: bool = False) -> bool:
|
||||
return is_cat(self.categories, MANGA_CATS, default)
|
||||
|
||||
def is_h265(self) -> bool:
|
||||
meta = self.title.lower()
|
||||
return "h265" in meta \
|
||||
or "x265" in meta \
|
||||
or "HEVC" in meta
|
||||
|
||||
class Client:
|
||||
def __init__(self):
|
||||
self.apikey = open("/run/secrets/jackett_apikey").read().strip()
|
||||
@@ -176,12 +182,14 @@ class Client:
|
||||
return sorted(torrents, reverse=True)
|
||||
|
||||
|
||||
def filter_results(results: list[Torrent], full: bool, top: int, manga: bool) -> list[Torrent]:
|
||||
def filter_results(results: list[Torrent], full: bool, top: int, manga: bool, h265: bool) -> list[Torrent]:
|
||||
"""
|
||||
take the complete query and filter further based on CLI options
|
||||
"""
|
||||
if manga:
|
||||
results = [t for t in results if t.is_manga(default=True)]
|
||||
if h265:
|
||||
results = [t for t in results if t.is_h265()]
|
||||
if not full:
|
||||
results = results[:top]
|
||||
return results
|
||||
@@ -195,6 +203,7 @@ def parse_args(args: list[str]) -> dict:
|
||||
top="5",
|
||||
verbose=False,
|
||||
manga=False,
|
||||
h265=False,
|
||||
)
|
||||
while args:
|
||||
arg = args[0]
|
||||
@@ -218,9 +227,11 @@ def main(args: list[str]):
|
||||
help = options.pop("help")
|
||||
json = options.pop("json")
|
||||
query = options.pop("query")
|
||||
assert options.get("top") is not True, "use `--top=N`, not `--top N`"
|
||||
top = int(options.pop("top"))
|
||||
verbose = options.pop("verbose")
|
||||
manga = options.pop("manga")
|
||||
h265 = options.pop("h265")
|
||||
|
||||
if options != {}:
|
||||
raise BadCliArgs(f"unexpected options: {options}")
|
||||
@@ -235,7 +246,7 @@ def main(args: list[str]):
|
||||
results = client.query(query)
|
||||
num_results = len(results)
|
||||
|
||||
results = filter_results(results, full, top, manga)
|
||||
results = filter_results(results, full, top, manga, h265)
|
||||
|
||||
if json:
|
||||
dumpable = [t.to_dict() for t in results]
|
||||
|
@@ -1,74 +1,20 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p nix -p rmlint -p util-linux
|
||||
#!nix-shell -i bash -p nix
|
||||
# script to reclaim some hard drive space
|
||||
# some of this is documented here:
|
||||
# - <https://nixos.wiki/wiki/Storage_optimization>
|
||||
set -e
|
||||
|
||||
options=$(getopt -l "gc,rmlint,all" -- "" "$@")
|
||||
eval "set -- ${options}"
|
||||
do_rmlint=false
|
||||
do_gc=false
|
||||
while true; do
|
||||
case "$1" in
|
||||
(--all)
|
||||
shift
|
||||
do_gc=true
|
||||
do_rmlint=true
|
||||
;;
|
||||
(--gc)
|
||||
shift
|
||||
do_gc=true
|
||||
;;
|
||||
(--rmlint)
|
||||
shift
|
||||
do_rmlint=true
|
||||
;;
|
||||
(--)
|
||||
shift
|
||||
if [ $# -eq 0 ]; then
|
||||
break
|
||||
fi
|
||||
;;
|
||||
(*)
|
||||
echo "invalid arguments"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
set -x
|
||||
set -xeu
|
||||
|
||||
# scan the store and hard-link identical files
|
||||
# nix-store --optimise
|
||||
|
||||
if [ $do_gc = true ]
|
||||
then
|
||||
# TODO: do we need `sudo` here?
|
||||
# TODO: `nix-store --gc`?
|
||||
sudo nix-collect-garbage --delete-older-than 30d
|
||||
fi
|
||||
# TODO: do we need `sudo` here?
|
||||
# TODO: `nix-store --gc`?
|
||||
sudo nix-collect-garbage --delete-older-than 30d
|
||||
|
||||
if [ $do_rmlint = true ]
|
||||
then
|
||||
# identify duplicate files in the nix store
|
||||
rmlint --types="duplicates" --config=sh:handler=clone --output=sh:/tmp/rmlint.sh --output=json:/dev/null --progress /nix/store
|
||||
# link the dupes together (uses ioctl_fideduperange)
|
||||
# see: https://btrfs.wiki.kernel.org/index.php/Deduplication
|
||||
# see: https://rmlint.readthedocs.io/en/latest/tutorial.html
|
||||
fi
|
||||
|
||||
if [ $do_rmlint = true ]
|
||||
then
|
||||
sudo mount -o remount,rw /nix/store
|
||||
# XXX: does rmlint really need to be invoked as root?
|
||||
sudo /tmp/rmlint.sh -d || true # on failure, we still want to remount ro
|
||||
# XXX this doesn't work: 'mount point is busy.'
|
||||
sudo mount -o remount,ro /nix/store
|
||||
fi
|
||||
|
||||
# TODO: instead of using rmlint, could use dduper: https://github.com/Lakshmipathi/dduper
|
||||
# better perf for btrfs (checksum tests)
|
||||
# TODO: could use dduper: https://github.com/Lakshmipathi/dduper
|
||||
# like rmlint, but better perf for btrfs (checksum tests)
|
||||
# likely also better compression, on account of being block-based instead of whole-file based.
|
||||
# however, not clearly actively maintained; uses custom btrfs-progs patch; riskier
|
||||
# might not currently build on nix: https://github.com/NixOS/nixpkgs/issues/175730
|
||||
|
@@ -1,19 +0,0 @@
|
||||
diff --git a/scripts/core/sxmo_swayinitconf.sh b/scripts/core/sxmo_swayinitconf.sh
|
||||
index c4afcd6..80f593c 100755
|
||||
--- a/scripts/core/sxmo_swayinitconf.sh
|
||||
+++ b/scripts/core/sxmo_swayinitconf.sh
|
||||
@@ -60,13 +60,13 @@ focused_name="$(
|
||||
swaymsg -- input type:touch map_to_output "$focused_name"
|
||||
swaymsg -- input type:tablet_tool map_to_output "$focused_name"
|
||||
|
||||
-swaymsg -- input "$pwr" xkb_file "$(xdg_data_path sxmo/sway/xkb_mobile_normal_buttons)"
|
||||
+swaymsg -- input "$pwr" xkb_file "$(xdg_data_path sxmo/xkb/xkb_mobile_normal_buttons)"
|
||||
|
||||
if ! [ "$vols" = "none" ]; then
|
||||
for vol in $vols; do
|
||||
swaymsg -- input "$vol" repeat_delay 200
|
||||
swaymsg -- input "$vol" repeat_rate 15
|
||||
- swaymsg -- input "$vol" xkb_file "$(xdg_data_path sxmo/sway/xkb_mobile_normal_buttons)"
|
||||
+ swaymsg -- input "$vol" xkb_file "$(xdg_data_path sxmo/xkb/xkb_mobile_normal_buttons)"
|
||||
done
|
||||
fi
|
@@ -97,7 +97,14 @@ stdenv.mkDerivation rec {
|
||||
url = "https://lists.sr.ht/~mil/sxmo-devel/patches/42441/mbox";
|
||||
hash = "sha256-YmkJ4JLIG/mHosRlVQqvWzujFMBsuDf5nVT3iOi40zU=";
|
||||
})
|
||||
./0003-fix-xkb-paths.patch
|
||||
(fetchpatch {
|
||||
# merged post 1.14.2
|
||||
# i only care about patch no. 2
|
||||
# [1/2] suspend toggle: silence rm failure noise
|
||||
# [2/2] config: fix keyboard files location
|
||||
url = "https://lists.sr.ht/~mil/sxmo-devel/patches/42880/mbox";
|
||||
hash = "sha256-tAMPBb6vwzj1dFMTEaqrcCJU6FbQirwZgB0+tqW3rQA=";
|
||||
})
|
||||
./0004-no-busybox.patch
|
||||
# wanted to fix/silence some non-fatal errors
|
||||
./0005-system-audio.patch
|
||||
@@ -110,6 +117,13 @@ stdenv.mkDerivation rec {
|
||||
url = "https://lists.sr.ht/~mil/sxmo-devel/patches/42443/mbox";
|
||||
hash = "sha256-c4VySbVJgsbh2h+CnCgwWWe5WkAregpYFqL8n3WRXwY=";
|
||||
})
|
||||
# (fetchpatch {
|
||||
# XXX: doesn't apply cleanly to 1.14.2 release
|
||||
# # Don't wait for led or status bar in state change hooks
|
||||
# # - significantly decreases the time between power-button state transitions
|
||||
# url = "https://lists.sr.ht/~mil/sxmo-devel/patches/43109/mbox";
|
||||
# hash = "sha256-4uR2u6pa62y6SaRHYRn15YGDPILAs7py0mPbAjsgwM4=";
|
||||
# })
|
||||
(fetchpatch {
|
||||
# Make config gesture toggle persistent
|
||||
url = "https://lists.sr.ht/~mil/sxmo-devel/patches/42876/mbox";
|
||||
|
@@ -40,6 +40,7 @@ let
|
||||
ldd-aarch64 = callPackage ./additional/ldd-aarch64 { };
|
||||
lightdm-mobile-greeter = callPackage ./additional/lightdm-mobile-greeter { };
|
||||
linux-megous = callPackage ./additional/linux-megous { };
|
||||
mpv-uosc-latest = callPackage ./additional/mpv-uosc-latest { };
|
||||
mx-sanebot = callPackage ./additional/mx-sanebot { };
|
||||
rtl8723cs-firmware = callPackage ./additional/rtl8723cs-firmware { };
|
||||
# TODO: use `recurseIntoAttrs` ?
|
||||
@@ -55,7 +56,7 @@ let
|
||||
|
||||
# packages i haven't used for a while, may or may not still work
|
||||
# fluffychat-moby = callPackage ./additional/fluffychat-moby { };
|
||||
# fractal-latest = callPackage ./additional/fractal-latest { };
|
||||
fractal-latest = callPackage ./additional/fractal-latest { };
|
||||
# kaiteki = callPackage ./additional/kaiteki { };
|
||||
# tokodon = libsForQt5.callPackage ./additional/tokodon { };
|
||||
|
||||
@@ -106,8 +107,6 @@ let
|
||||
|
||||
komikku = callPackage ./patched/komikku { inherit (unpatched) komikku; };
|
||||
|
||||
lemmy-server = callPackage ./patched/lemmy-server { inherit (unpatched) lemmy-server; };
|
||||
|
||||
phoc = callPackage ./patched/phoc { inherit (unpatched) phoc; };
|
||||
|
||||
|
||||
|
@@ -3,13 +3,13 @@
|
||||
, fetchpatch2
|
||||
}:
|
||||
komikku.overrideAttrs (upstream: {
|
||||
src = fetchFromGitLab {
|
||||
owner = "valos";
|
||||
repo = "Komikku";
|
||||
rev = "7dcf2b3d0ba685396872780b1ce75d01cbe02ebe";
|
||||
hash = "sha256-LzgHPuIpxy0ropiNycdxZP6onjK2JpMRqkkdmJGA4nE=";
|
||||
};
|
||||
patches = [
|
||||
# src = fetchFromGitLab {
|
||||
# owner = "valos";
|
||||
# repo = "Komikku";
|
||||
# rev = "7dcf2b3d0ba685396872780b1ce75d01cbe02ebe";
|
||||
# hash = "sha256-LzgHPuIpxy0ropiNycdxZP6onjK2JpMRqkkdmJGA4nE=";
|
||||
# };
|
||||
patches = (upstream.patches or []) ++ [
|
||||
(fetchpatch2 {
|
||||
url = "https://git.uninsane.org/colin/mirror-komikku/commit/318fc0c975ba84ca4dcff405bc1bb8f5895bc5a6.diff";
|
||||
hash = "sha256-mn81hCt5xrypJMOOiCOg8NthLjglXntTDsYpcdCg0E8=";
|
||||
|
@@ -1,24 +0,0 @@
|
||||
diff --git a/src/code_migrations.rs b/src/code_migrations.rs
|
||||
index c69ce591..b416a299 100644
|
||||
--- a/src/code_migrations.rs
|
||||
+++ b/src/code_migrations.rs
|
||||
@@ -36,7 +36,7 @@ use lemmy_db_schema::{
|
||||
utils::{get_conn, naive_now, DbPool},
|
||||
};
|
||||
use lemmy_utils::{error::LemmyError, settings::structs::Settings};
|
||||
-use tracing::info;
|
||||
+use tracing::{debug, info};
|
||||
use url::Url;
|
||||
|
||||
pub async fn run_advanced_migrations(pool: &DbPool, settings: &Settings) -> Result<(), LemmyError> {
|
||||
@@ -419,7 +419,9 @@ async fn initialize_local_site_2022_10_10(
|
||||
info!("Running initialize_local_site_2022_10_10");
|
||||
|
||||
// Check to see if local_site exists
|
||||
- if LocalSite::read(pool).await.is_ok() {
|
||||
+ let local_site = LocalSite::read(pool).await;
|
||||
+ debug!("local_site: {local_site:?}");
|
||||
+ if local_site.is_ok() {
|
||||
return Ok(());
|
||||
}
|
||||
info!("No Local Site found, creating it.");
|
@@ -1,12 +0,0 @@
|
||||
{ lemmy-server }:
|
||||
|
||||
lemmy-server.overrideAttrs (upstream: {
|
||||
patches = upstream.patches or [] ++ [
|
||||
# "thread 'main' panicked at 'Couldn't run DB Migrations: Failed to run 2022-07-07-182650_comment_ltrees with: permission denied: "RI_ConstraintTrigger_a_647340" is a system trigger', crates/db_schema/src/utils.rs:165:25"
|
||||
# ./fix-db-migrations.patch #< upstreamed as of 2023/06/28
|
||||
# log the database connection events, for debugging
|
||||
# ./log-startup.patch
|
||||
# print more debug info about specific problem paths i've encountered
|
||||
# ./debug-db-migrations.patch
|
||||
];
|
||||
})
|
@@ -1,19 +0,0 @@
|
||||
diff --git a/migrations/2022-07-07-182650_comment_ltrees/up.sql b/migrations/2022-07-07-182650_comment_ltrees/up.sql
|
||||
index fde9e1b3..55b96dac 100644
|
||||
--- a/migrations/2022-07-07-182650_comment_ltrees/up.sql
|
||||
+++ b/migrations/2022-07-07-182650_comment_ltrees/up.sql
|
||||
@@ -60,7 +60,7 @@ ORDER BY
|
||||
breadcrumb;
|
||||
|
||||
-- Remove indexes and foreign key constraints, and disable triggers for faster updates
|
||||
-alter table comment disable trigger all;
|
||||
+-- alter table comment disable trigger all;
|
||||
|
||||
alter table comment drop constraint if exists comment_creator_id_fkey;
|
||||
alter table comment drop constraint if exists comment_parent_id_fkey;
|
||||
@@ -115,4 +115,4 @@ create index idx_path_gist on comment using gist (path);
|
||||
-- Drop the parent_id column
|
||||
alter table comment drop column parent_id cascade;
|
||||
|
||||
-alter table comment enable trigger all;
|
||||
+-- alter table comment enable trigger all;
|
@@ -1,56 +0,0 @@
|
||||
diff --git a/crates/db_schema/src/utils.rs b/crates/db_schema/src/utils.rs
|
||||
index acedab97..4b62b5bb 100644
|
||||
--- a/crates/db_schema/src/utils.rs
|
||||
+++ b/crates/db_schema/src/utils.rs
|
||||
@@ -134,9 +134,12 @@ pub fn diesel_option_overwrite_to_url_create(
|
||||
}
|
||||
|
||||
async fn build_db_pool_settings_opt(settings: Option<&Settings>) -> Result<DbPool, LemmyError> {
|
||||
+ println!("build_db_pool_settings_opt");
|
||||
let db_url = get_database_url(settings);
|
||||
+ println!(" db_url: {db_url}");
|
||||
let pool_size = settings.map(|s| s.database.pool_size).unwrap_or(5);
|
||||
let manager = AsyncDieselConnectionManager::<AsyncPgConnection>::new(&db_url);
|
||||
+ println!(" built manager");
|
||||
let pool = Pool::builder(manager)
|
||||
.max_size(pool_size)
|
||||
.wait_timeout(POOL_TIMEOUT)
|
||||
@@ -144,12 +147,15 @@ async fn build_db_pool_settings_opt(settings: Option<&Settings>) -> Result<DbPoo
|
||||
.recycle_timeout(POOL_TIMEOUT)
|
||||
.runtime(Runtime::Tokio1)
|
||||
.build()?;
|
||||
+ println!(" built pool");
|
||||
|
||||
// If there's no settings, that means its a unit test, and migrations need to be run
|
||||
if settings.is_none() {
|
||||
+ println!(" running migrations");
|
||||
run_migrations(&db_url);
|
||||
}
|
||||
|
||||
+ println!(" complete");
|
||||
Ok(pool)
|
||||
}
|
||||
|
||||
diff --git a/src/code_migrations.rs b/src/code_migrations.rs
|
||||
index c69ce591..0914677d 100644
|
||||
--- a/src/code_migrations.rs
|
||||
+++ b/src/code_migrations.rs
|
||||
@@ -40,7 +40,9 @@ use tracing::info;
|
||||
use url::Url;
|
||||
|
||||
pub async fn run_advanced_migrations(pool: &DbPool, settings: &Settings) -> Result<(), LemmyError> {
|
||||
+ println!("run_advanced_migrations");
|
||||
let protocol_and_hostname = &settings.get_protocol_and_hostname();
|
||||
+ println!(" conn: {protocol_and_hostname}");
|
||||
user_updates_2020_04_02(pool, protocol_and_hostname).await?;
|
||||
community_updates_2020_04_02(pool, protocol_and_hostname).await?;
|
||||
post_updates_2020_04_03(pool, protocol_and_hostname).await?;
|
||||
@@ -52,6 +54,8 @@ pub async fn run_advanced_migrations(pool: &DbPool, settings: &Settings) -> Resu
|
||||
regenerate_public_keys_2022_07_05(pool).await?;
|
||||
initialize_local_site_2022_10_10(pool, settings).await?;
|
||||
|
||||
+ println!(" complete");
|
||||
+
|
||||
Ok(())
|
||||
}
|
||||
|
Reference in New Issue
Block a user