Compare commits

...

81 Commits

Author SHA1 Message Date
0448603731 bootstrap: avoid ever invoking mkNixpkgs without the localSystem argument
apparently importing nixpkgs and then `override`ing with `localSystem`
isn't enough; it needs `localSystem` from the start.
2025-03-03 08:30:25 +00:00
989f321c53 toplevel: pass localSystem into mkPkgs
hopefully this fixes pure-mode flake evaluation
2025-03-03 08:11:20 +00:00
64a2d60d89 sane-bt-rm: support deleting multiple torrents in one invocation 2025-03-02 05:25:28 +00:00
ccd343f0b6 nixpkgs: 0-unstable-2025-02-26 -> 0-unstable-2025-02-28 2025-02-28 16:52:05 +00:00
4be7222f98 emgucv: remove unused inputs 2025-02-28 09:04:17 +00:00
e8ab744bcc uvtools: fix missing runtime dep on emgucv
now `UVtoolsCmd convert case.sl1 Chitubox case.ctb` works!

or, appears to work. i have no printer with which to test the output yet
2025-02-28 07:33:00 +00:00
cf001326cd emgucv: port to buildDotnetModule
this isn't strictly necessary, but it seems to simplify the packaging
2025-02-28 07:32:07 +00:00
e93d04c09e nixpkgs-wayland: 0-unstable-2025-02-25 -> 0-unstable-2025-02-26 2025-02-27 06:47:20 +00:00
df0e072645 nixpkgs: 0-unstable-2025-02-25 -> 0-unstable-2025-02-26 2025-02-27 06:47:11 +00:00
5f8f8a44ba uassets: 0-unstable-2025-02-25 -> 0-unstable-2025-02-26 2025-02-27 02:53:36 +00:00
de8a544acd emgucv: init at 4.10.0 2025-02-26 17:32:00 +00:00
06add1cc55 signal-desktop-from-src: update hash (why did it change??) 2025-02-25 20:35:57 +00:00
fc40b9671e nixpkgs-wayland: intra-day update 2025-02-25 20:35:19 +00:00
68fc360586 uassets: intra-day update 2025-02-25 20:34:48 +00:00
5f79ddde03 opencellid: 0-unstable-2025-01-02 -> 0-unstable-2025-02-25 2025-02-25 20:34:02 +00:00
13f38d6fd7 servo: fix kiwix-serve build 2025-02-25 08:11:13 +00:00
3b44f05af0 nixpkgs: push librsvg patch toward upstream 2025-02-25 08:11:03 +00:00
79d567cd01 cross: fix librsvg (hopefully) 2025-02-25 07:30:39 +00:00
6bb6e4319c programs: gnome-contacts: remove dependency on webkitgtk 2025-02-25 07:30:37 +00:00
4c72d1af8e nixpkgs-bootstrap: 0-unstable-2025-02-24 -> 0-unstable-2025-02-25 2025-02-25 03:58:51 +00:00
9b0c90be7d nixpkgs-wayland: 0-unstable-2025-01-28 -> 0-unstable-2025-02-25 2025-02-25 03:58:38 +00:00
3f7000f2f8 signal-desktop-from-src: 7.42.0 -> 7.44.0 2025-02-25 03:58:25 +00:00
ffb08b1195 uassets: 0-unstable-2025-02-24 -> 0-unstable-2025-02-25 2025-02-25 03:57:26 +00:00
4fd4f6fa2f users/systemd: disable autostart limit for user services 2025-02-25 03:54:58 +00:00
9e6eb1eb94 nixpkgs: 0-unstable-2025-02-22 -> 0-unstable-2025-02-24 2025-02-25 02:51:24 +00:00
33108ea9e1 zimPackages.archlinux_en_all_maxi: 2022-12 -> 2025-02 2025-02-24 18:50:48 +00:00
8153e5e033 uvtools: only grab the deps we actually need 2025-02-24 18:49:54 +00:00
04d1da8e39 TODO: fold: sidebery 2025-02-24 18:48:55 +00:00
1aad4622a7 uassets: 0-unstable-2025-02-17 -> 0-unstable-2025-02-24 2025-02-24 18:43:08 +00:00
6f6851f565 sidebery: 5.3.2 -> 5.3.3 2025-02-24 18:41:20 +00:00
acb00e7f8a impure.nix: allow scripts/update to work with more types of updateScript 2025-02-24 07:35:14 +00:00
621cc83740 uvtools: init at 5.0.7 2025-02-24 07:34:55 +00:00
d399a824e4 nixpkgs: 0-unstable-2025-02-17 -> 0-unstable-2025-02-22 2025-02-24 05:55:15 +00:00
ec77f8f6b9 lemoa: upgrade rustPlatform.fetchCargoTarball -> rustPlatform.fetchCargoVendor
the former is deprecated
2025-02-22 09:55:58 +00:00
d5226957bf lemoa: fix build (it had incorrect cargo hash) 2025-02-22 09:43:00 +00:00
0b1c94d4a3 net: add guest wifi 2025-02-22 04:51:14 +00:00
64f23282e2 sane-stop-all-servo: add missing services 2025-02-19 08:32:34 +00:00
a530ee8ae4 nixpkgs: 0-unstable-2025-02-08 -> 0-unstable-2025-02-17 2025-02-18 15:31:10 +00:00
87c58c312d megapixels-next: 2.0.0-alpha1-unstable-2025-01-16 -> 2.0.0-alpha1-unstable-2025-02-11 2025-02-18 15:31:10 +00:00
dad4dd1860 uassets: assets-unstable-2025-01-31 -> assets-unstable-2025-02-11 2025-02-18 15:31:10 +00:00
b8e2205a15 uassets: 0-unstable-2025-02-07 -> 0-unstable-2025-02-17 2025-02-18 15:31:10 +00:00
9029127ea8 uninsane-dot-org: 0-unstable-2024-11-16 -> 0-unstable-2025-02-09 2025-02-18 15:30:50 +00:00
4134525019 snapper: decrease from 3 to 2 daily snapshots
servo is really running out of space
2025-02-18 15:30:50 +00:00
e4fe5e0cd4 snapper: gc old snapshots more frequently 2025-02-18 15:30:50 +00:00
dc0ad5ed20 signal-desktop-from-src: remove old source hashes 2025-02-18 15:25:49 +00:00
e4ba0d3c83 signal-desktop-from-src: 7.37.0 -> 7.42.0 2025-02-18 15:25:15 +00:00
e7ce6a2ef6 remove merged coturn build fix 2025-02-18 05:56:02 +00:00
16f4afbc60 feeds: unsubscribe from Adam Savage 2025-02-17 01:22:48 +00:00
21cb18885c sane-cast/go2tv: fix broken casting due to upstream SSDP changes 2025-02-13 06:59:39 +00:00
a636e19198 todo.md: soulseek CLI 2025-02-13 05:38:45 +00:00
0327d7072a snapper: cull snapshots more aggressively 2025-02-13 05:37:04 +00:00
396efcd357 nvimpager: fix cross compilation 2025-02-11 04:13:45 +00:00
79b4e5a652 secrets/net: be picky about which cell networks we autoconnect to 2025-02-11 03:50:51 +00:00
233ee5be43 networkmanager: actually plumb autoconnect for connections which specify it 2025-02-11 03:50:30 +00:00
da2217f194 sane-input-handler: lengthen the power-tap-2 threshold from 750ms to 825ms 2025-02-10 05:21:48 +00:00
ab55adb52d feeds: unsubscribe from Tech Won't Save Us 2025-02-10 03:46:44 +00:00
d419a3cb08 sane-input-handler: increase power-tap-hold duration from 750ms -> 875ms
i'm *very occasionally* killing windows when i mean to screen-off, but it's frequent enough that i'm now hesitant to double-tap power
2025-02-10 03:45:39 +00:00
ba38fbc4e5 ollama: dont ship on -min and -light variants 2025-02-10 03:43:24 +00:00
925c0faa05 servo: switch a few services which Require postgresql to a weaker Wants dependency, in light of my postgresql flakiness 2025-02-09 18:59:52 +00:00
8ec309e33f sway: increase the vertical padding inside titlebars 1 -> 3
i think this increases the height by 4 pixels, which may be a bit much. OTOH, it _feels_ like it decreased when i switched the default font earlier, and i'm just compensating for that
2025-02-09 03:50:23 +00:00
bec429a04d nixpkgs: 2025-02-07 -> 2025-02-08 2025-02-08 12:26:27 +00:00
77f62d247f nixpkgs: 2025-01-28 -> 2025-02-07 2025-02-08 12:26:27 +00:00
f6cddfb7e8 bonsai: avoid shipping multiple versions of the package 2025-02-08 11:51:39 +00:00
290fd281b9 haredoc: dont ship the *entirety* of hare; just the .ha files we need for docs 2025-02-08 11:43:34 +00:00
690abc305f sops-nix: assets-unstable-2025-01-20 -> assets-unstable-2025-01-31 2025-02-08 11:42:52 +00:00
e6d028b01d megapixels-next: 2.0.0-alpha1-unstable-2024-12-27 -> 2.0.0-alpha1-unstable-2025-01-16 2025-02-08 11:42:35 +00:00
9733f8af7a uassets: 0-unstable-2025-01-28 -> 0-unstable-2025-02-07 2025-02-08 11:42:17 +00:00
203aa4b470 firefox-extensions.sidebery: 5.3.1 -> 5.3.2 2025-02-08 11:42:03 +00:00
6542919831 feeds: add malicious.life podcast (like Darknet Diaries) 2025-02-08 10:46:12 +00:00
5d42f5a6e5 feeds: add Lawfare Daily 2025-02-08 03:27:55 +00:00
a5054deef0 ollama: add deepseek-r1-671b model 2025-02-07 12:13:50 +00:00
3ed2d08a77 net: add connection for overseas mobile provider 2025-02-05 19:30:40 +00:00
e2775ea266 networkmanagerapplet: ship
the UI overflows too much to be usable on mobile, however it does work (and is useful) on lappy
2025-02-05 19:30:11 +00:00
d077036bb6 desko: ship a few more ollama models 2025-02-05 17:16:19 +00:00
7a149d8f2f desko: ship 32b variant of deepseek-r1-abliterated 2025-02-05 14:08:16 +00:00
44f05916f2 desko: ship a bunch more models, especially deepseek-r1 and uncensored/"abliterated" models 2025-02-05 13:41:46 +00:00
5a88a10a19 confy: ship 2025-02-04 09:37:11 +00:00
ac899b614b hosts/all: wifi: auto-connect to non-password-protected APs 2025-02-04 08:39:00 +00:00
f1c7c32e84 wifi: update Brussels APs 2025-02-03 20:42:52 +00:00
9399fd0254 wifi: update 2025-02-01 14:11:34 +00:00
cb1a72cb71 blanket: fix dbus sandboxing 2025-01-31 07:13:05 +00:00
84 changed files with 1612 additions and 246 deletions

View File

@@ -121,6 +121,7 @@
- blurble (https://linuxphoneapps.org/games/app.drey.blurble/). nix: not as of 2024-02-05
- Trivia Quiz (https://linuxphoneapps.org/games/io.github.nokse22.trivia-quiz/)
- sane-sync-music: remove empty dirs
- soulseek: install a CLI app usable over ssh
#### moby
- moby: port battery support to something upstreamable

View File

@@ -104,7 +104,7 @@
};
};
systemd.services.gitea.requires = [ "postgresql.service" ];
systemd.services.gitea.wants = [ "postgresql.service" ];
systemd.services.gitea.serviceConfig = {
# nix default is AF_UNIX AF_INET AF_INET6.
# we need more protos for sendmail to work. i thought it only needed +AF_LOCAL, but that didn't work.

View File

@@ -1,6 +1,16 @@
{ pkgs, ... }:
{
sane.services.kiwix-serve = {
# XXX(2025-02-24): libzim build failure after nixpkgs changed icu default from icu74 -> icu76.
# see: <https://github.com/NixOS/nixpkgs/issues/384684>
package = pkgs.kiwix-tools.override {
libkiwix = pkgs.libkiwix.override {
icu = pkgs.icu75;
libzim = pkgs.libzim.override {
icu = pkgs.icu75;
};
};
};
enable = true;
port = 8013;
zimPaths = with pkgs.zimPackages; [

View File

@@ -74,6 +74,10 @@ in {
serviceConfig.User = "lemmy";
serviceConfig.Group = "lemmy";
# switch postgres from Requires -> Wants, so that postgres may restart without taking lemmy down with it.
requires = lib.mkForce [];
wants = [ "postgresql.service" ];
# hardening (systemd-analyze security lemmy)
# a handful of these are specified in upstream nixpkgs, but mostly not
serviceConfig.LockPersonality = true;

View File

@@ -75,6 +75,9 @@ in
systemd.services.matrix-synapse.serviceConfig.RestartMaxDelaySec = 20;
systemd.services.matrix-synapse.serviceConfig.StartLimitBurst = 120;
systemd.services.matrix-synapse.serviceConfig.RestartSteps = 3;
# switch postgres from Requires -> Wants, so that postgres may restart without taking matrix down with it.
systemd.services.matrix-synapse.requires = lib.mkForce [];
systemd.services.matrix-synapse.wants = [ "postgresql.service" ];
systemd.services.matrix-synapse.postStart = lib.optionalString ntfy ''
ACCESS_TOKEN=$(${lib.getExe' pkgs.coreutils "cat"} ${config.sops.secrets.matrix_access_token.path})

View File

@@ -72,6 +72,7 @@ let
(fromDb "darknetdiaries.com" // tech)
(fromDb "dwarkeshpatel.com" // tech)
(fromDb "feeds.99percentinvisible.org/99percentinvisible" // pol) # 99% Invisible -- also available here: <https://feeds.simplecast.com/BqbsxVfO>
(fromDb "feeds.acast.com/public/shows/lawfare" // pol) # <https://www.lawfaremedia.org/podcasts-multimedia/podcast/the-lawfare-podcast>
(fromDb "feeds.buzzsprout.com/2412334.rss") # Matt Stoller's _Organized Money_ <https://www.organizedmoney.fm/>
(fromDb "feeds.eff.org/howtofixtheinternet" // pol)
(fromDb "feeds.feedburner.com/80000HoursPodcast" // rat)
@@ -97,6 +98,7 @@ let
(fromDb "lexfridman.com/podcast" // rat)
(fromDb "linktr.ee/betteroffline" // pol)
(fromDb "linuxdevtime.com" // tech)
(fromDb "malicious.life" // tech)
(fromDb "mapspodcast.libsyn.com" // uncat) # Multidisciplinary Association for Psychedelic Studies
(fromDb "microarch.club" // tech)
(fromDb "omegataupodcast.net" // tech) # 3/4 German; 1/4 eps are English
@@ -120,7 +122,6 @@ let
(fromDb "sscpodcast.libsyn.com" // rat) # Astral Codex Ten; Scott Alexander
(fromDb "talesfromthebridge.buzzsprout.com" // tech) # Sci-Fi? has Peter Watts; author of No Moods, Ads or Cutesy Fucking Icons (rifters.com)
(fromDb "techtalesshow.com" // tech) # Corbin Davenport
(fromDb "techwontsave.us" // pol) # rec by Cory Doctorow
(fromDb "theamphour.com" // tech) # The Amp Hour
(fromDb "the-ben-marc-show.simplecast.com" // tech // pol) # Ben Horowitz + Marc Andreessen; love to hate em
(fromDb "timclicks.dev/compose-podcast" // tech) # Rust-heavy dev interviews
@@ -148,6 +149,7 @@ let
# (fromDb "rss.art19.com/your-welcome" // pol) # Michael Malice - Your Welcome -- also available here: <https://origin.podcastone.com/podcast?categoryID2=2232>
# (fromDb "rss.prod.firstlook.media/deconstructed/podcast.rss" // pol) #< possible URL rot
# (fromDb "rss.prod.firstlook.media/intercepted/podcast.rss" // pol) #< possible URL rot
# (fromDb "techwontsave.us" // pol) # rec by Cory Doctorow, but way too info-sparse
# (fromDb "trashfuturepodcast.podbean.com" // pol) # rec by Cory Doctorow, but way rambly
# (fromDb "wakingup.libsyn.com" // pol) # Sam Harris, but he just repeats himself now
# (mkPod "https://anchor.fm/s/21bc734/podcast/rss" // pol // infrequent) # Emerge: making sense of what's next -- <https://www.whatisemerging.com/emergepodcast>
@@ -275,7 +277,6 @@ let
(fromDb "youtube.com/@NativLang")
(fromDb "youtube.com/@PolyMatter")
(fromDb "youtube.com/@TechnologyConnections" // tech)
(fromDb "youtube.com/@tested" // tech) # Adam Savage
(fromDb "youtube.com/@TomScottGo")
(fromDb "youtube.com/@TVW_Washington" // pol) # interviews with WA public officials
(fromDb "youtube.com/@Vihart")
@@ -284,6 +285,7 @@ let
# (fromDb "youtube.com/@ColdFusion")
# (fromDb "youtube.com/@rossmanngroup" // pol // tech) # Louis Rossmann
# (fromDb "youtube.com/@TheB1M")
# (fromDb "youtube.com/@tested" // tech) # Adam Savage (uploads too frequently)
# (fromDb "youtube.com/@Vox")
# (fromDb "youtube.com/@Vsauce") # they're all like 1-minute long videos now? what happened @Vsauce?
];

View File

@@ -253,7 +253,7 @@ in
"endless-sky" # space merchantilism/exploration
# "factorio"
# "frozen-bubble" # WAN + LAN + 1P/2P bubble bobble
"hase" # WAN worms game
# "hase" # WAN worms game
# "hedgewars" # WAN + LAN worms game (5~10 people online at any moment; <https://hedgewars.org>)
# "libremines" # meh: trivial minesweeper; qt6
# "mario0" # SMB + portal
@@ -286,6 +286,7 @@ in
"alacritty" # terminal emulator
"blanket" # ambient noise generator
"calls" # gnome calls (dialer/handler)
"confy" # conference planning app
"dbus"
# "dconf" # or use `gsettings`, with its keyfile backend
# "delfin" # Jellyfin client
@@ -327,7 +328,7 @@ in
"mepo" # maps viewer
# "mesa-demos" # for eglinfo, glxinfo & other testing tools
"mpv"
# "networkmanagerapplet" # for nm-connection-editor GUI. XXX(2024-09-03): broken, probably by NetworkManager sandboxing
"networkmanagerapplet"
# "ntfy-sh" # notification service
"newsflash" # RSS viewer
"papers" # PDF viewer
@@ -452,21 +453,10 @@ in
bash-language-server.sandbox.whitelistPwd = true;
blanket.buildCost = 1;
blanket.sandbox.whitelistAudio = true;
# blanket.sandbox.whitelistDbus.user = true; #< TODO: reduce # TODO: untested
blanket.sandbox.whitelistWayland = true;
bridge-utils.sandbox.net = "all";
"cacert.unbundled".sandbox.enable = false; #< data only
cargo.persist.byStore.plaintext = [ ".cargo" ];
# probably this sandboxing is too restrictive; i'm sandboxing it for rust-analyzer / neovim LSP
cargo.sandbox.whitelistPwd = true;
cargo.sandbox.net = "all";
cargo.sandbox.extraHomePaths = [ "dev" "ref" ];
clang = {};
clang-tools.sandbox.whitelistPwd = true;

View File

@@ -0,0 +1,13 @@
{ ... }:
{
sane.programs.blanket = {
# com.rafaelmardojai.Blanket
buildCost = 1;
sandbox.whitelistAudio = true;
sandbox.whitelistDbus.user.own = [
"com.rafaelmardojai.Blanket"
"org.mpris.MediaPlayer2.Blanket"
];
sandbox.whitelistWayland = true;
};
}

View File

@@ -50,9 +50,10 @@ in
};
};
# plug into the (proposed) nixpkgs bonsaid service.
# plug into the nixpkgs bonsaid service.
# it's a user service, and since i don't use the service manager it doesn't actually activate:
# i just steal the config file generation from it :)
services.bonsaid.package = config.sane.programs.bonsai.package;
services.bonsaid.settings = lib.mkIf cfg.enabled (lib.mkMerge [
cfg.config.transitions
[{

View File

@@ -7,7 +7,7 @@ in
packageUnwrapped = pkgs.bunpen.overrideAttrs (base: {
# create a directory which holds just the `bunpen` so that we
# can add bunpen as a dependency to binaries via `PATH=/run/current-system/libexec/bunpen` without forcing rebuild every time bunpen changes
postInstall = ''
postInstall = (base.postInstall or "") + ''
mkdir -p $out/libexec/bunpen
ln -s $out/bin/bunpen $out/libexec/bunpen/bunpen
'';

View File

@@ -0,0 +1,13 @@
{ pkgs, ... }:
{
sane.programs.cargo = {
#v XXX(2025-02-23): normal `cargo` fails to build for cross (temporarily?). use prebuilt instead.
# NOT easy to debug/fix. git bisect pins this between ceba2c6c3b (good) and 62a28e5a3d (bad)
packageUnwrapped = pkgs.rust.packages.prebuilt.cargo;
persist.byStore.plaintext = [ ".cargo" ];
# probably this sandboxing is too restrictive; i'm sandboxing it for rust-analyzer / neovim LSP
sandbox.whitelistPwd = true;
sandbox.net = "all";
sandbox.extraHomePaths = [ "dev" "ref" ];
};
}

View File

@@ -0,0 +1,19 @@
{ ... }:
{
sane.programs.confy = {
sandbox.net = "all";
sandbox.whitelistDri = true;
sandbox.whitelistWayland = true;
sandbox.mesaCacheDir = ".cache/net.kirgroup.confy/mesa";
sandbox.whitelistDbus.user.own = [ "net.kirgroup.confy" ];
sandbox.whitelistPortal = [
"NetworkMonitor"
"OpenURI"
];
persist.byStore.private = [
".cache/net.kirgroup.confy"
# ".local/share/net.kirgroup.confy" #< empty
];
};
}

View File

@@ -13,6 +13,7 @@
./avahi.nix
./bemenu.nix
./bitcoin-cli.nix
./blanket.nix
./blueberry.nix
./blueman.nix
./bonsai.nix
@@ -26,9 +27,11 @@
./cantata.nix
./capsh.nix
./captree.nix
./cargo.nix
./catt.nix
./celeste64.nix
./chatty.nix
./confy.nix
./conky
./cozy.nix
./cups.nix

View File

@@ -1,6 +1,19 @@
{ pkgs, ... }: {
sane.programs.gnome-contacts = {
packageUnwrapped = pkgs.gnome-contacts.overrideAttrs (upstream: {
packageUnwrapped = (pkgs.gnome-contacts.override {
evolution-data-server-gtk4 = pkgs.evolution-data-server-gtk4.override {
# drop webkitgtk_6_0 dependency.
# it's normally cached, but if modifying low-level deps (e.g. pipewire) it's nice to not have to rebuild it,
# especially since `gnome-contacts` is part of `moby-min`.
withGtk4 = false;
};
folks = pkgs.folks.override {
evolution-data-server-gtk4 = pkgs.evolution-data-server-gtk4.override {
# drop webkitgtk_6_0 dependency.
withGtk4 = false;
};
};
}).overrideAttrs (upstream: {
# patches = (upstream.patches or []) ++ [
# # optional danctnix patch to allow clicking on the telephone to open the calls app,
# # however it's frequently in need of rebasing

View File

@@ -3,6 +3,6 @@
{
sane.programs.haredoc = {
sandbox.whitelistPwd = true; #< search for function documentation below the current directory
env.HAREPATH = "${pkgs.hare}/src/hare/stdlib";
env.HAREPATH = builtins.toString pkgs.hare.src;
};
}

View File

@@ -3,7 +3,7 @@
sane.programs.kdenlive = {
buildCost = 1;
packageUnwrapped = pkgs.kdenlive.overrideAttrs (base: {
packageUnwrapped = pkgs.kdePackages.kdenlive.overrideAttrs (base: {
qtWrapperArgs = base.qtWrapperArgs ++ [
"--set QP_QPA_PLATFORM wayland"
];

View File

@@ -137,13 +137,13 @@ in
# map: power (tap), power (tap) x2
power_pressed.power_released.trigger = "power_tap_1";
power_pressed.power_released.timeout.ms = 750; # max time within which a second power press will be recognized
power_pressed.power_released.timeout.ms = 825; # max time within which a second power press will be recognized
power_pressed.power_released.power_pressed.power_released.trigger = "power_tap_2";
# map power (hold), power tap -> hold:
power_pressed.timeout.trigger = "power_hold";
power_pressed.timeout.ms = 500;
power_pressed.power_released.power_pressed.timeout.trigger = "power_tap_1_hold";
power_pressed.power_released.power_pressed.timeout.ms = 750; # this is a long timeout because it's tied to the "kill window" action.
power_pressed.power_released.power_pressed.timeout.ms = 875; # this is a long timeout because it's tied to the "kill window" action.
# map: power (tap) -> volup/voldown
power_pressed.power_released.volup_pressed.trigger = "power_then_volup";

View File

@@ -48,7 +48,7 @@ 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
titlebar_padding 12 3
title_align center
### focus_wrapping: behavior when trying to focus past the edge of a container

View File

@@ -20,10 +20,20 @@
ALLOW_USERS = [ "colin" ];
TIMELINE_CLEANUP = true; # remove old snapshots every 24h
TIMELINE_CREATE = true; # take a snapshot every hour
TIMELINE_LIMIT_HOURLY = 12;
TIMELINE_LIMIT_DAILY = 7; # keep snapshots for 1d ago, 2d ago, ... 7day ago
TIMELINE_LIMIT_WEEKLY = 4; # keep snapshots for 7d ago, 14d ago, 21d ago, 28d ago
TIMELINE_LIMIT_HOURLY = 2;
TIMELINE_LIMIT_DAILY = 2;
TIMELINE_LIMIT_WEEKLY = 0;
TIMELINE_LIMIT_MONTHLY = 0;
TIMELINE_LIMIT_YEARLY = 0;
# TODO: enable these better settings, but i need higher capacity drives first!
# TIMELINE_LIMIT_HOURLY = 12;
# TIMELINE_LIMIT_DAILY = 7; # keep snapshots for 1d ago, 2d ago, ... 7day ago
# TIMELINE_LIMIT_WEEKLY = 4; # keep snapshots for 7d ago, 14d ago, 21d ago, 28d ago
# TIMELINE_LIMIT_MONTHLY = 0;
# TIMELINE_LIMIT_YEARLY = 0;
};
services.snapper.cleanupInterval = "2h"; # how frequently to gc snapshots no longer covered by the above policy (default: daily)
}

View File

@@ -17,6 +17,7 @@ in
sane.programs.marksman.enableFor = { system = false; user.colin = false; }; # markdown neovim LSP: cross compiles, but the result is a x86 .NET exe (2025-01-05)
sane.programs.mercurial.enableFor.user.colin = false; #< does not cross compile (2025-01-05; unblocked)
sane.programs.nix-tree.enableFor = { system = false; user.colin = false; }; #< does not cross compile (2025-01-05; blocked by vty)
sane.programs.pyright.enableFor = { system = false; user.colin = false; }; # python neovim LSP: doesn't cross compile (2025-01-05; unblocked)
sane.programs.pyright.enableFor = { system = false; user.colin = false; }; #< python neovim LSP: doesn't cross compile (2025-01-05; unblocked)
sane.programs.vulkan-tools.enableFor = { system = false; user.colin = false; }; #< does not cross compile (2025-02-08)
};
}

View File

@@ -9,13 +9,16 @@ from dataclasses import dataclass
@dataclass
class Connection:
autoconnect: bool
comment: str | None
ssid: str # also used as "id", more generally
passphrase: str | None
ssid: str # also used as "id", more generally
# LTE connections:
uuid: str | None
gsm_apn: str | None
gsm_number: str | None
gsm_password: str | None
gsm_username: str | None
@property
def type_(self) -> str:
@@ -25,20 +28,27 @@ class Connection:
def parse_manifest(manifest_path: str) -> list[Connection]:
for entry in json.load(open(manifest_path)):
autoconnect = entry.get("autoconnect", True)
comment = entry.get("comment")
ssid = entry["ssid"]
passphrase = entry.get("passphrase")
ssid = entry["ssid"]
# LTE connections:
uuid = entry.get("uuid")
gsm_apn = entry.get("gsm_apn")
gsm_number = entry.get("gsm_number")
gsm_username = entry.get("gsm_username")
gsm_password = entry.get("gsm_password")
if ssid != "<EOF>":
yield Connection(
autoconnect=autoconnect,
comment=comment,
ssid=ssid,
passphrase=passphrase,
uuid=uuid,
gsm_apn=gsm_apn,
gsm_number=gsm_number,
gsm_username=gsm_username,
gsm_password=gsm_password,
)
def write_iwd(fh: "file", con: Connection) -> None:
@@ -47,11 +57,19 @@ def write_iwd(fh: "file", con: Connection) -> None:
fh.write(f"Passphrase={con.passphrase}\n")
def write_nm(fh: "file", con: Connection) -> None:
def strbool(b: bool) -> str:
# serialize a boolean into the format desired by NetworkManager
if b:
return "true"
else:
return "false"
fh.write("[connection]\n")
fh.write(f"id={con.ssid}\n")
if con.uuid is not None:
fh.write(f"uuid={con.uuid}\n")
fh.write(f"type={con.type_}\n")
fh.write(f"autoconnect={strbool(con.autoconnect)}")
if con.type_ == "wifi":
fh.write("\n")
@@ -59,11 +77,11 @@ def write_nm(fh: "file", con: Connection) -> None:
fh.write("mode=infrastructure\n")
fh.write(f"ssid={con.ssid}\n")
fh.write("\n")
fh.write("[wifi-security]\n")
fh.write("auth-alg=open\n")
fh.write("key-mgmt=wpa-psk\n")
if con.passphrase is not None:
fh.write("\n")
fh.write("[wifi-security]\n")
fh.write("auth-alg=open\n")
fh.write("key-mgmt=wpa-psk\n")
fh.write(f"psk={con.passphrase}\n")
elif con.type_ == "gsm":
fh.write("\n")
@@ -72,6 +90,10 @@ def write_nm(fh: "file", con: Connection) -> None:
fh.write(f"apn={con.gsm_apn}\n")
if con.gsm_number is not None:
fh.write(f"number={con.gsm_number}\n")
if con.gsm_username is not None:
fh.write(f"username={con.gsm_username}\n")
if con.gsm_password is not None:
fh.write(f"password={con.gsm_password}\n")
fh.write("\n")
fh.write("[ppp]\n")

View File

@@ -9,9 +9,9 @@
}:
let
mkPkgs = branch: args: (
(import ./pkgs/by-name/nixpkgs-bootstrap/${branch}.nix {}).override args
import ./pkgs/by-name/nixpkgs-bootstrap/${branch}.nix args
).extend (import ./overlays/all.nix);
pkgs = mkPkgs "master" {};
pkgs = mkPkgs "master" { inherit localSystem; };
inherit (pkgs) lib;
evalHost = { name, localSystem, system, branch ? "master", variant ? null }:
@@ -146,6 +146,9 @@ let
else if (pkg.updateScript.meta or {}) ? mainProgram then
# raw derivation like `writeShellScriptBin`
[ "${lib.getExe pkg.updateScript}" ]
else if builtins.isPath pkg.updateScript then
# in-tree update script like `updateScript = ./update.sh`
[ pkg.updateScript ]
else
[]
);

View File

@@ -0,0 +1,9 @@
{
"description": "<p>The Lawfare Podcast features discussions with experts, policymakers, and opinion leaders at the nexus of national security, law, and policy. On issues from foreign policy, homeland security, intelligence, and cybersecurity to governance and law, we have doubled down on seriousness at a time when others are running away from it. Visit us at www.lawfareblog.com.</p><p>Support this show <a href=\"http://supporter.acast.com/lawfare\" rel=\"payment\" target=\"_blank\">http://supporter.acast.com/lawfare</a>.</p><br /><hr /><p style=\"color: grey; font-size: 0.75em;\"> Hosted on Acast. See <a href=\"https://acast.com/privacy\" rel=\"noopener noreferrer\" style=\"color: grey;\" target=\"_blank\">acast.com/privacy</a> for more information.</p>",
"is_podcast": true,
"site_name": "",
"site_url": "",
"title": "The Lawfare Podcast",
"url": "https://feeds.acast.com/public/shows/lawfare",
"velocity": 0.507
}

View File

@@ -0,0 +1,9 @@
{
"description": "Tales of cybersecurity. The wildest hacks you can ever imagine, told by people who were actually there. Dig into a history you never knew existed.",
"is_podcast": true,
"site_name": "",
"site_url": "",
"title": "Malicious Life",
"url": "https://feeds.redcircle.com/597cfd00-b29a-49c6-9622-03c8decfc35f",
"velocity": 0.097
}

View File

@@ -422,7 +422,8 @@ let
passthru = (prevAttrs.passthru or {}) // extraPassthru // {
checkSandboxed = runCommand "${pkgName}-check-sandboxed" {
preferLocalBuild = true;
nativeBuildInputs = [ bunpen file gnugrep ];
depsBuildBuild = [ bunpen ];
nativeBuildInputs = [ file gnugrep ];
buildInputs = builtins.map (out: finalAttrs.finalPackage."${out}") (finalAttrs.outputs or [ "out" ]);
} ''
# invoke each binary in a way only the sandbox wrapper will recognize,

View File

@@ -19,7 +19,7 @@ let
modelSources = pkgs.symlinkJoin {
name = "ollama-models";
paths = with pkgs.ollamaPackages; [
athene-v2-72b-q2_K # untested
athene-v2-72b-q2_K # very knowledgable; fairly compliant (briefly lets you know if something's wrong, but still answers)
# aya-8b # it avoids generating code, only text
# codegeex4-9b # it's okaaay, seems to not give wrong code, just incomplete code.
# codegemma-7b # it generates invalid nix code
@@ -27,6 +27,16 @@ let
# deepseek-coder-7b # subpar to deepseek-coder-v2 in nearly every way
deepseek-coder-v2-16b # GREAT balance between speed and code quality. code is superior to qwen2_5 in some ways, and inferior in others
# deepseek-coder-v2-16b-lite-instruct-q5_1 # higher-res version of default 16b (but in practice, is more rambly and less correct)
deepseek-r1-1_5b
deepseek-r1-7b
deepseek-r1-14b
# deepseek-r1-32b # redundant with abliterated deepseek-r1
# deepseek-r1-671b # requires 443 GB of RAM
deepseek-r1-abliterated-14b
deepseek-r1-abliterated-32b
deepseek-r1-abliterated-70b
dolphin-mistral-7b # UNCENSORED mistral; compliant
dolphin-mixtral-8x7b # about as fast as a 14b model, similar quality results. uncensored, but still preachy
# falcon2-11b # code examples are lacking
# gemma2-9b # fast, but not great for code
gemma2-27b # generates at 1word/sec, but decent coding results if you can wrangle it
@@ -34,7 +44,10 @@ let
# hermes3-8b # FAST, but unwieldy
# llama3-chatqa-8b # it gets stuck
# llama3_1-70b # generates like 1 word/sec, decent output (comparable to qwen2_5-32b)
llama3_2-3b
# llama3_2-3b # redundant with uncensored llama
llama3_2-uncensored-3b
# llama3_3-70b # non-compliant; dodges iffy questions
llama3_3-abliterated-70b # compliant, but slower and not as helpful as deepseek-r1-abliterated-70b
magicoder-7b # it generates valid, if sparse, code
marco-o1-7b # untested
# mistral-7b # it generates invalid code
@@ -47,8 +60,12 @@ let
qwen2_5-14b # *almost* same quality to 32b variant, but faster
# qwen2_5-32b-instruct-q2_K # lower-res version of default 32b (so, slightly faster, but generates invalid code where the full res generates valid code)
qwen2_5-32b # generates 3~5 words/sec, but notably more accurate than coder-7b
qwen2_5-abliterate-7b
qwen2_5-abliterate-14b
qwen2_5-abliterate-32b
# qwen2_5-coder-7b # fast, and concise, but generates invalid code
qwq-32b # untested
qwq-32b # heavily restricted
qwq-abliterated-32b
# solar-pro-22b # generates invalid code
# starcoder2-15b-instruct # it gets stuck
# wizardlm2-7b # generates invalid code
@@ -62,7 +79,7 @@ in
enable = mkEnableOption "ollama Large Language Model";
};
config = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.sane.maxBuildCost >= 3) {
services.ollama.enable = true;
services.ollama.user = "ollama";
services.ollama.group = "ollama";

View File

@@ -73,11 +73,13 @@ let
(lib.mkIf (command != null && readiness.waitCommand == null) {
serviceConfig.Type = "simple";
serviceConfig.Restart = restartCondition;
startLimitIntervalSec = 0; #< disable restart limit
serviceConfig.ExecStart = command;
})
(lib.mkIf (command != null && readiness.waitCommand != null) {
serviceConfig.Type = "notify";
serviceConfig.Restart = restartCondition;
startLimitIntervalSec = 0; #< disable restart limit
# serviceConfig.NotifyAccess = "exec"; #< allow anything in Exec* to invoke systemd-notify
serviceConfig.NotifyAccess = "all"; #< allow anything in Exec* to invoke systemd-notify
script = ''

View File

@@ -190,6 +190,34 @@ in with final; {
];
};
# 2025/02/04: upstreaming is unblocked, but a cleaner solution than this doesn't seem to exist yet
confy = (prev.confy.override {
blueprint-compiler = wrapBlueprint [
buildPackages.gdk-pixbuf
buildPackages.glib
buildPackages.graphene
buildPackages.gtk4
buildPackages.harfbuzz
buildPackages.libadwaita
buildPackages.pango
];
}).overrideAttrs (upstream: {
# meson's `python.find_installation` method somehow just doesn't support cross compilation.
# - <https://mesonbuild.com/Python-module.html#find_installation>
# so, build it to target build python, then patch in the host python
nativeBuildInputs = upstream.nativeBuildInputs ++ [
python3.pythonOnBuildForHost
];
postFixup = ''
substituteInPlace $out/bin/.confy-wrapped --replace-fail ${python3.pythonOnBuildForHost} ${python3.withPackages (
ps: with ps; [
icalendar
pygobject3
]
)}
'';
});
# 2024/11/19: upstreaming is unblocked
delfin = (prev.delfin.override {
cargo = crossCargo;
@@ -302,6 +330,21 @@ in with final; {
];
};
# 2025/02/08: upstreaming is unblocked
flatpak = prev.flatpak.overrideAttrs (upstream: {
outputs = lib.remove "devdoc" upstream.outputs;
depsBuildBuild = (upstream.depsBuildBuild or []) ++ [
pkgsBuildBuild.pkg-config
];
nativeBuildInputs = upstream.nativeBuildInputs ++ [
gtk-doc
pkgsBuildHost.wayland-scanner
];
mesonFlags = upstream.mesonFlags ++ [
"-Dgtkdoc=disabled"
];
});
# 2025/01/13: upstreaming is blocked by glycin-loaders
fractal = prev.fractal.override {
cargo = crossCargo;
@@ -427,6 +470,14 @@ in with final; {
lemoa = prev.lemoa.override { cargo = crossCargo; };
libqmi = prev.libqmi.overrideAttrs (upstream: {
# gtk-doc fails (even with mesonEmulatorHook present)
outputs = lib.remove "devdoc" upstream.outputs;
mesonFlags = (lib.remove "-Dgtk_doc=true" upstream.mesonFlags) ++ [
"-Dgtk_doc=false"
];
});
# libsForQt5 = prev.libsForQt5.overrideScope (self: super: {
# phonon = super.phonon.overrideAttrs (orig: {
# # fixes "ECM (required version >= 5.60), Extra CMake Modules"
@@ -447,9 +498,9 @@ in with final; {
# 2024/11/19: upstreaming is unblocked
mepo = (prev.mepo.override {
# nixpkgs mepo correctly puts `zig_0_12.hook` in nativeBuildInputs,
# nixpkgs mepo correctly puts `zig_0_13.hook` in nativeBuildInputs,
# but for some reason that tries to use the host zig instead of the build zig.
zig_0_12 = buildPackages.zig_0_12;
zig_0_13 = buildPackages.zig_0_13;
}).overrideAttrs (upstream: {
dontUseZigCheck = true;
nativeBuildInputs = upstream.nativeBuildInputs ++ [
@@ -607,12 +658,23 @@ in with final; {
# # buildInputs = lib.remove gnupg upstream.buildInputs;
# });
# 2025/02/10: upstreaming is blocked on ruby
nvimpager = prev.nvimpager.overrideAttrs (upstream: {
# fix so nvimpager specifies host machine sh as interpreter, not build sh
buildInputs = upstream.buildInputs ++ [
bash
];
postFixup = (upstream.postFixup or "") + ''
patchShebangs --update --host $out/bin/nvimpager
'';
});
# 2025/01/25: upstreaming is unblocked
papers = prev.papers.override {
cargo = crossCargo;
};
# 2025/01/28: upstreaming is blocked on gnome-session (itself blocked on gnome-shell)
# 2025/01/28: upstreaming is blocked on gnome-session (itself blocked on gnome-shell)
# phosh = prev.phosh.overrideAttrs (upstream: {
# buildInputs = upstream.buildInputs ++ [
# libadwaita # "plugins/meson.build:41:2: ERROR: Dependency "libadwaita-1" not found, tried pkgconfig"
@@ -901,6 +963,12 @@ in with final; {
# upstream.postBuild;
# });
wvkbd = prev.wvkbd.overrideAttrs (upstream: {
nativeBuildInputs = (upstream.nativeBuildInputs or []) ++ [
buildPackages.scdoc
];
});
# 2024/11/19: upstreaming is blocked on unar (gnustep), unless i also make that optional
xarchiver = mvToNativeInputs [ libxslt ] prev.xarchiver;
}

View File

@@ -1,7 +1,25 @@
# personal preferences
# prefer to encode these in `sane.programs`
# resort to this method for e.g. system dependencies, or things which are referenced from too many places.
(self: super: with self; {
(self: super:
with self;
let
# XXX(2025-02-08): `nix-build -A hosts.desko.pkgs.bunpen` FAILS (`nix-build -A pkgs.bunpen`, meanwhile, PASSES!)
# this is some weird cross thing, where `pkgs.gnu64.stdenv` != `hosts.desko.pkgs.gnu64.stdenv`,
# and this impacts hare because hare forces cross compilation always.
#
# the patch here ASSUMES THE BUILD MACHINE IS x86, and it works by forcing cc/bintools to be built as native packages, not gnu64 cross packages.
# TODO: this is a hack and can hopefully be someday removed!
x86_64PkgsCrossToolchain = pkgs.pkgsBuildBuild;
hare = pkgs.pkgsBuildTarget.hare.override {
inherit x86_64PkgsCrossToolchain;
};
crossHareHook = pkgs.hareHook.override {
inherit hare;
};
in
{
# DISABLE HDCP BLOB in pinephone pro.
# this is used by u-boot; requires redeploying the bootloader (the SPL, specifically).
# i can see that nixpkgs does process this option, but the hash of bl31.elf doesn't actually change
@@ -16,10 +34,17 @@
# };
# };
bonsai = super.bonsai.override {
hareHook = crossHareHook;
};
bunpen = super.bunpen.override {
hareHook = crossHareHook;
};
# XXX(2024-12-26): prefer pre-built electron because otherwise it takes 4 hrs to build from source.
# but wait 2 days after staging -> master merge, and normal electron should be cached and safe to remove
# electron = electron-bin;
electron_33 = electron_33-bin;
# electron_33 = electron_33-bin;
# evolution-data-server = super.evolution-data-server.override {
# # OAuth depends on webkitgtk_4_1: old, forces an annoying recompilation
@@ -66,59 +91,37 @@
# samba = null;
# };
# XXX(2024-12-29): avoid temporary pysaml2 build failure; optional SSO feature which i probably don't even have enabled on my matrix
# see: <https://github.com/NixOS/nixpkgs/issues/367976>
matrix-synapse-unwrapped = super.matrix-synapse-unwrapped.overridePythonAttrs (upstream: {
# nativeCheckInputs = lib.remove python3.pkgs.pysaml2 upstream.nativeCheckInputs;
nativeCheckInputs = lib.subtractLists upstream.optional-dependencies.saml2 upstream.nativeCheckInputs;
# `tests.storage.databases.main.test_events_worker.DatabaseOutageTestCase.test_recovery` is failing,
# apparently independent of pysaml2. can't find how to disable that except by disabling ALL tests.
doCheck = false;
# env.NIX_BUILD_CORES = 1;
# disabledTests = [
# "tests.storage.databases.main.test_events_worker.DatabaseOutageTestCase.test_recovery"
# "storage.databases.main.test_events_worker.DatabaseOutageTestCase.test_recovery"
# "databases.main.test_events_worker.DatabaseOutageTestCase.test_recovery"
# "main.test_events_worker.DatabaseOutageTestCase.test_recovery"
# "test_events_worker.DatabaseOutageTestCase.test_recovery"
# "DatabaseOutageTestCase.test_recovery"
# "test_recovery"
# "tests.storage.databases.main.test_events_worker.DatabaseOutageTestCase"
# "storage.databases.main.test_events_worker.DatabaseOutageTestCase"
# "databases.main.test_events_worker.DatabaseOutageTestCase"
# "main.test_events_worker.DatabaseOutageTestCase"
# "test_events_worker.DatabaseOutageTestCase"
# "DatabaseOutageTestCase"
# "tests.storage.databases.main.test_events_worker"
# "storage.databases.main.test_events_worker"
# "databases.main.test_events_worker"
# "main.test_events_worker"
# "test_events_worker"
# "tests.storage.databases"
# "storage.databases"
# "databases"
# ];
# disabledTestPaths = [
# "tests/storage/databases/main/test_events_worker.py"
# "storage/databases/main/test_events_worker.py"
# "databases/main/test_events_worker.py"
# "main/test_events_worker.py"
# "test_events_worker.py"
# ];
haredoc = super.haredoc.override {
hareHook = crossHareHook;
};
hareThirdParty = super.hareThirdParty.overrideScope (sself: ssuper: {
hare-ev = (ssuper.hare-ev.override {
hareHook = crossHareHook;
}).overrideAttrs { doCheck = false; };
hare-json = (ssuper.hare-json.override {
hareHook = crossHareHook;
}).overrideAttrs { doCheck = false; };
});
# hare = pkgsBuildTarget.hare.override {
# x86_64PkgsCrossToolchain = super.pkgsBuildBuild;
# };
# hareHook = super.hareHook.override {
# hare = pkgsBuildTarget.hare.override {
# x86_64PkgsCrossToolchain = pkgsBuildBuild;
# };
# };
# phog = super.phog.override {
# # disable squeekboard because it takes 20 minutes to compile when emulated
# squeekboard = null;
# };
rsyslog = super.rsyslog.override {
# XXX(2024-07-28): required for cross compilation
withGcrypt = false;
};
# rsyslog = super.rsyslog.override {
# # XXX(2024-07-28): required for cross compilation
# withGcrypt = false;
# };
# swaynotificationcenter = super.swaynotificationcenter.override {
# gvfs = gvfs.override {

View File

@@ -0,0 +1,117 @@
#
#
# package build fails with:
# [100%] Built target cvextern
# Building Emgu.CV with command: "/nix/store/y20wcqi704x58v394scs6cyvay6x0x86-dotnet-sdk-wrapped-9.0.200/bin/dotnet" build -c Release /p:Platform="AnyCPU" "/build/source/Emgu.CV/NetStandard/Emgu.CV.csproj"
# Determining projects to restore...
# /build/source/Emgu.CV/NetStandard/Emgu.CV.csproj : error NU1301: Unable to load the service index for source https://api.nuget.org/v3/index.json.
# /build/source/Emgu.CV/NetStandard/Emgu.CV.csproj : error NU1301: Resource temporarily unavailable (api.nuget.org:443)
# /build/source/Emgu.CV/NetStandard/Emgu.CV.csproj : error NU1301: Resource temporarily unavailable
# Failed to restore /build/source/Emgu.CV/NetStandard/Emgu.CV.csproj (in 5.78 sec).
{
buildDotnetModule,
cmake,
dotnetCorePackages,
# dotnetConfigureHook,
eigen,
fetchFromGitHub,
lapack,
lib,
libgeotiff,
libjpeg,
libpng,
libtiff,
libva,
openjpeg,
stdenv,
vtk,
}:
buildDotnetModule rec {
pname = "emgucv";
version = "4.10.0";
src = fetchFromGitHub {
owner = "emgucv";
repo = "emgucv";
rev = version;
hash = "sha256-0WGXVIJCVnmqtyTzAjHnr8s0oQB9O1DUBFuhym9q+0E=";
# TODO: use nixpkgs' eigen, harfbuzz, hdf5, opencv, vtk?
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
stdenv.cc
];
buildInputs = [
eigen #< yes, this *does* impact the build, even though emgucv vendors its own
lapack #< TODO: necessary?
libgeotiff
libjpeg
libpng
libtiff
libva #< TODO: necessary?
# openblas
openjpeg
# opencv
vtk #< TODO: necessary?
];
dotnet-sdk = dotnetCorePackages.sdk_9_0;
dotnet-runtime = dotnetCorePackages.runtime_9_0;
# we only need libcvextern.so, and some of the other targets fail to build
postPatch = lib.concatMapStrings (d: ''
substituteInPlace CMakeLists.txt --replace-fail \
'ADD_SUBDIRECTORY(${d})' \
'# ADD_SUBDIRECTORY(${d})'
'') [
# "Emgu.Util"
# > Determining projects to restore...
# > /build/source/Emgu.CV/NetStandard/Emgu.CV.csproj : error NU1301: Unable to load the service index for source https://api.nuget.org/v3/index.json.
# > /build/source/Emgu.CV/NetStandard/Emgu.CV.csproj : error NU1301: Resource temporarily unavailable (api.nuget.org:443)
# > /build/source/Emgu.CV/NetStandard/Emgu.CV.csproj : error NU1301: Resource temporarily unavailable
# > Failed to restore /build/source/Emgu.CV/NetStandard/Emgu.CV.csproj (in 5.86 sec).
# TODO: with enough rangling, `nugetDeps` _should_ allow fixing this.
# but it needs a slightly custom approach because of the mix of CMake + nuget
"Emgu.CV"
"Emgu.CV.Bitmap"
"Emgu.CV.Wpf"
"Emgu.CV.WindowsUI"
"Emgu.CV.Example"
"Emgu.CV.Test"
"Emgu.CV.Cuda"
"Emgu.CV.OCR"
"Emgu.CV.Contrib"
"Emgu.CV.Models"
"Emgu.CV.Runtime"
"platforms/nuget"
"Emgu.CV.Runtime/Maui"
];
# move libs/ -> lib/ so that nix will fix the .so linker paths
postInstall = ''
mv $out/libs/* $out/lib
rmdir $out/libs
'';
# dontUnpackNugetPackage = true;
# dontConfigureNuget = true;
# dontCreateNugetSource = true;
dontDotnetBuild = true;
# dontDotnetCheck = true;
# dontDotnetConfigure = true;
dontDotnetInstall = true;
# dontDotnetFixup = true;
# dontStrip = false;
# dontWrapGApps = false;
# enableParallelBuilding = false;
meta = {
description = "A cross platform .Net wrapper to the OpenCV image processing library";
maintainers = with lib.maintainers; [ colinsane ];
};
}

View File

@@ -13,13 +13,13 @@ let
self = stdenv.mkDerivation
{
pname = "euicc-manual";
version = "0-unstable-2025-01-05";
version = "0-unstable-2025-02-04";
# XXX: their gitea downloads are broken, so use fetchgit
src = fetchgit {
url = "https://gitea.osmocom.org/sim-card/euicc-manual";
rev = "da6fdfcf2a8b54973a1c43f17b3f3194789d07f3";
hash = "sha256-FEQztINgafXo2RWnWeV4A8iFs5nmpt3LsTXEiKE8ajU=";
rev = "4f0e8a3e6ac7faeff1274c74a674b32911825643";
hash = "sha256-Rm2csSvWj20KHmtNeAnWYxm5kTZsRvRU+bzbZGw2k2Y=";
};
nativeBuildInputs = [

View File

@@ -5,15 +5,15 @@
}:
buildNpmPackage rec {
pname = "sidebery";
version = "5.3.1";
version = "5.3.3";
src = fetchFromGitHub {
owner = "mbnuqw";
repo = "sidebery";
rev = "v${version}";
hash = "sha256-nJwJs97/yoBNqqTU1lqtsGoNLnvQ2e11+Pf8uTEYpuQ=";
hash = "sha256-wJqEuThoU5s5tYI3bpCBF5ADbLv8qeG3dDbOdL6eDoA=";
};
npmDepsHash = "sha256-wBYjX65Tb3+83NT5625j77qceCADkiS22PsmCdwbJA0=";
npmDepsHash = "sha256-YRfKI61RPvRUdgUElGgPolYNiUmd7S7uV2Fyb+ThOCM=";
postBuild = ''
npm run build.ext

View File

@@ -35,6 +35,7 @@
mercantile
numpy
scipy
typing-extensions
];
nativeBuildInputs = [
@@ -51,11 +52,16 @@
wrapPythonPrograms
'';
postInstallCheck = ''
$out/bin/ols --help
'';
pythonImportsCheck = [
"ols"
];
doCheck = true;
doInstallCheck = true;
strictDeps = true;
meta = with lib; {

View File

@@ -1,21 +1,19 @@
{ lib, stdenv
, cargo
, desktop-file-utils
, fetchFromGitHub
, gdk-pixbuf
, gitUpdater
, glib
, graphene
, gtk4
, libadwaita
, meson
, ninja
, openssl
, pango
, pkg-config
, rustc
, rustPlatform
, wrapGAppsHook4
{
cargo,
desktop-file-utils,
fetchFromGitHub,
gitUpdater,
gtk4,
lib,
libadwaita,
meson,
ninja,
openssl,
pkg-config,
rustPlatform,
rustc,
stdenv,
wrapGAppsHook4,
}:
stdenv.mkDerivation rec {
@@ -29,10 +27,10 @@ stdenv.mkDerivation rec {
hash = "sha256-XyVl0vreium83d6NqiMkdER3U0Ra0GeAgTq4pyrZyZE=";
};
cargoDeps = rustPlatform.fetchCargoTarball {
cargoDeps = rustPlatform.fetchCargoVendor {
inherit src;
name = "${pname}-${version}";
hash = "sha256-Wb312zJQYJCzwzfsq8K+5lp4MA5jQPY8U6n4H3eFXo8=";
hash = "sha256-ALoxT+RLL4omJ7quWDJVdXgevaO8i8q/29FFFudIRV4=";
};
nativeBuildInputs = [

View File

@@ -11,6 +11,7 @@
ninja,
python3,
stdenv,
versionCheckHook,
wrapGAppsHook3,
}: stdenv.mkDerivation (finalAttrs: {
pname = "lgtrombetta-compass";
@@ -23,28 +24,6 @@
hash = "sha256-NXy9JihGwpDaZmNUNUAOYfqQTWQM4dXtTQ/4Ukgi11U=";
};
postPatch = ''
substituteInPlace data/meson.build \
--replace-fail "install_dir: '/lib/udev/rules.d'" "install_dir: join_paths(get_option('datadir'), 'lib/udev/rules.d')"
'';
preConfigure = ''
patchShebangs --build build-aux/meson/postinstall.py
'';
postFixup = ''
wrapPythonPrograms
'';
installCheckPhase = ''
runHook preInstallCheck
$out/bin/compass --help | grep -q compass
runHook postInstallCheck
'';
nativeBuildInputs = [
desktop-file-utils # for update-desktop-database
gettext # for msgfmt
@@ -73,10 +52,35 @@
python3.pkgs.pyxdg
];
nativeCheckInputs = [
# python3.pkgs.pythonImportsCheckHook
versionCheckHook
];
pythonImportsCheck = [
"compass"
];
postPatch = ''
substituteInPlace data/meson.build \
--replace-fail "install_dir: '/lib/udev/rules.d'" "install_dir: join_paths(get_option('datadir'), 'lib/udev/rules.d')"
'';
preConfigure = ''
patchShebangs --build build-aux/meson/postinstall.py
'';
postFixup = ''
wrapPythonPrograms
'';
preInstallCheck = ''
version=v$version
'';
versionCheckProgram = "${placeholder "out"}/bin/compass";
doCheck = true;
doInstallCheck = true;
strictDeps = true;

View File

@@ -10,13 +10,13 @@
}:
stdenv.mkDerivation {
pname = "libmegapixels";
version = "0.2.0-unstable-2024-12-28";
version = "0.2.0-unstable-2025-02-11";
src = fetchFromGitLab {
owner = "megapixels-org";
repo = "libmegapixels";
rev = "fedc8a0b314d4482b041a496295882ff8af8f59e";
hash = "sha256-KGynHMsPwkrDqC8NX9HFj2xwJrjY9AykOZTqkSgA6Eo=";
rev = "20619047551f7ffb6ab5aebfaa6783c708520775";
hash = "sha256-NCq14kBWKhsCQPLBpxdErHK+3Ih1JuAMlKXLLytS2AA=";
};
# patches = [

View File

@@ -25,13 +25,13 @@ let
in
stdenv.mkDerivation {
pname = "megapixels-next";
version = "2.0.0-alpha1-unstable-2024-12-27";
version = "2.0.0-alpha1-unstable-2025-02-17";
src = fetchFromGitLab {
owner = "megapixels-org";
repo = "Megapixels";
rev = "1378973cd103ee7b1ad6daa1f368fdc942600aab";
hash = "sha256-itXZdpK6RleVkU/tFUFJjzAFblYwJtVlg3fsXSAYoTc=";
rev = "9acea2849d3a3539edccb24fc837a3b966f911f1";
hash = "sha256-W64iZLcTW7M4YQpnHWbzMYky7ZqNuprvVnHiFsnF92I=";
};
nativeBuildInputs = [

View File

@@ -5,11 +5,12 @@
# - nix hash to-sri sha256:xyz
# - paste the output as the new `sha256`
{
mkNixpkgs ? import ./mkNixpkgs.nix {}
}:
mkNixpkgs {
rev = "ac24885fb5e9b15729a5fa78f14cfe159e5a86ec";
sha256 = "sha256-1VeCNga84owW5OVFNTUM5pYAluXyKntwC3HNe2zgzvg=";
version = "0-unstable-2025-01-28";
mkNixpkgs ? import ./mkNixpkgs.nix {},
...
}@args:
mkNixpkgs ({
rev = "5db39d669a21ca7f0e76c295e7664b9d938b7042";
sha256 = "sha256-SUZZMAn19X3Ym6lVb18LoXhCS2yicrRr83si5VyJDS0=";
version = "0-unstable-2025-02-28";
branch = "master";
}
} // args)

View File

@@ -20,7 +20,7 @@ let
else if saneGhCommit != null then
"https://github.com/uninsane/nixpkgs/commit/${saneGhCommit}.patch?full_index=1"
else
"https://git.uninsane.org/colin/nixpkgs/commit/${saneCommit}.diff"
"https://git.uninsane.org/colin/nixpkgs/commit/${saneCommit}.patch?full_index=1"
;
in fetchpatch2 (
{ inherit revert url; }
@@ -31,6 +31,14 @@ in
[
./2024-10-01-python-cross-resource-usage.patch
(fetchpatch' {
name = "librsvg: generate loaders.cache even when cross compiling";
prUrl = "https://github.com/NixOS/nixpkgs/pull/384957";
hash = "sha256-pBN+KVkU9AhcoYBVLbkGVICBYO0RyfIJ3Mr4OjO8yFA=";
# saneCommit = "25d740a21c53b9ac2da33571e3fad7e33a765ddf";
# hash = "sha256-PvewYks5P6QX59SG9sEcV89ddJdcNcEO9bB9x05Xgf0=";
})
# (fetchpatch' {
# # 2024-12-26: required to build ollama (with AMD acceleration)
# name = "rocm-6: bump packages to 6.3.1 and add missing packages";
@@ -46,13 +54,13 @@ in
# hash = "sha256-jW66W1V3upZMfbjuoruY3OGNJfEewx7DW/Z4vAhMEXw=";
# })
(fetchpatch' {
# patch should be safe to remove; keeping it here to track the upstreaming status
name = "nixos/gitea: don't configure the database if `createDatabase == false`";
prUrl = "https://github.com/NixOS/nixpkgs/pull/268849";
# saneCommit = "92662a9920cf8b70ad8a061591dc37146123bde3";
hash = "sha256-Bmy1xqqmHqJVpleKWOssF+6SUpKOIm6hIGQsW6+hUTg=";
})
# (fetchpatch' {
# # patch should be safe to remove; keeping it here to track the upstreaming status
# name = "nixos/gitea: don't configure the database if `createDatabase == false`";
# prUrl = "https://github.com/NixOS/nixpkgs/pull/268849";
# # saneCommit = "92662a9920cf8b70ad8a061591dc37146123bde3";
# hash = "sha256-Bmy1xqqmHqJVpleKWOssF+6SUpKOIm6hIGQsW6+hUTg=";
# })
# (fetchpatch' {
# # TODO: send to upstream nixpkgs once tested (branch: lappy: pr-stepmania-wrapper)

View File

@@ -1,9 +1,10 @@
{
mkNixpkgs ? import ./mkNixpkgs.nix {}
}:
mkNixpkgs {
rev = "b6f676fbd2c31ad426f9ef245edf840019313d20";
sha256 = "sha256-JKDQb6jzpA8g5Mh7ZjKOUbDcgVkuYtgscXZzx1Zpu4s=";
version = "0-unstable-2025-01-27";
mkNixpkgs ? import ./mkNixpkgs.nix {},
...
}@args:
mkNixpkgs ({
rev = "749375426d72ead4bdac625818e7be62a6bbbaf4";
sha256 = "sha256-IDxPfbSdIy7XAP1hneGOfr2jsj+hFUsvFhpRksYqols=";
version = "0-unstable-2025-02-28";
branch = "staging-next";
}
} // args)

View File

@@ -1,9 +1,10 @@
{
mkNixpkgs ? import ./mkNixpkgs.nix {}
}:
mkNixpkgs {
rev = "66a80f5e4c914603d4849bd87aaff5d507d74f39";
sha256 = "sha256-3XArw9NnbZrpmN3CD6krkPlwsaXThmZ8WefGyQ0ZcHw=";
version = "0-unstable-2025-01-25";
mkNixpkgs ? import ./mkNixpkgs.nix {},
...
}@args:
mkNixpkgs ({
rev = "29dcbf482396b9e5bdf1ec92973a8451e0aaa1d5";
sha256 = "sha256-ps1xz98RAUqrT+V7GFpzf/uHaoh9o5ZoOpE7SnSB6sY=";
version = "0-unstable-2025-02-28";
branch = "staging";
}
} // args)

View File

@@ -7,8 +7,8 @@ let
src = fetchFromGitHub {
owner = "nix-community";
repo = "nixpkgs-wayland";
rev = "d91b2c96acb33eb5e6f777eff01750ba0133d785";
hash = "sha256-3bxyDPo/irOtAmF5YXKRXcggVyhtXe8t7t42vX6yhNg=";
rev = "ddf8917ab3e6288b361cd8099c69c6e58ba3cc39";
hash = "sha256-riTVDUruOBYu000SHQzW38kc4apZjlRaPT0JdR+7EDY=";
};
flake = import "${src}/flake.nix";
evaluated = flake.outputs {
@@ -25,7 +25,7 @@ let
in src.overrideAttrs (base: {
# attributes required by update scripts
pname = "nixpkgs-wayland";
version = "0-unstable-2025-01-28";
version = "0-unstable-2025-02-26";
src = src;
# passthru only nixpkgs-wayland's own packages -- not the whole nixpkgs-with-nixpkgs-wayland-as-overlay:

View File

@@ -2,7 +2,7 @@
{ mkOllamaModel }: mkOllamaModel {
modelName = "athene-v2";
variant = "72b-q2_K"; #< smallest model
manifestHash = "sha256-yqH/Ltp0Z6yrHJYwPXU2NssViuxH0b1lO8dH6i60qWc=";
manifestHash = "sha256-5WbXE/LOEsOfgDLNDxpHxMkhSlq6jLIVA9Bb7ti3maQ=";
modelBlob = "e85b0c9b18adb8eeb4f091a870ad4d66e6a10b4973fe1eada695a47f4a598a7a";
modelBlobHash = "sha256-6FsMmxituO608JGocK1NZuahC0lz/h6tppWkf0pZino=";
systemBlob = "66b9ea09bd5b7099cbb4fc820f31b575c0366fa439b08245566692c6784e281e";

View File

@@ -2,7 +2,7 @@
{ mkOllamaModel }: mkOllamaModel {
modelName = "codestral";
variant = "22b";
manifestHash = "sha256-Sznj0qzrQOt+t9K+CZProh81RulafSDx9HYUv2jwVAE=";
manifestHash = "sha256-CJiosobVbYEFWHBJ/saWNPzoPJVyMPwT8Kz+A7exGQk=";
modelBlob = "22a849aafe3ded20e9b6551b02684d8fa911537c35895dd2a1bf9eb70da8f69e";
modelBlobHash = "sha256-IqhJqv497SDptlUbAmhNj6kRU3w1iV3Sob+etw2o9p4=";
paramsBlob = "5dea4f4d0fffcd67078a5f8fa107312bcf1d7d658cc668631a4fd6b4530a7159";

View File

@@ -2,7 +2,7 @@
{ mkOllamaModel }: mkOllamaModel {
modelName = "deepseek-coder-v2";
variant = "16b";
manifestHash = "sha256-F0cBCsxKHEQ+/+c+BJvT8cKhYP42voDWVLJpE0R4hvw=";
manifestHash = "sha256-Y/sZOzqbQyKhjoxrJQyi5wpf9THpYtv5W6CJslZvL6U=";
modelBlob = "5ff0abeeac1d2dbdd5455c0b49ba3b29a9ce3c1fb181b2eef2e948689d55d046";
modelBlobHash = "sha256-X/Cr7qwdLb3VRVwLSbo7KanOPB+xgbLu8ulIaJ1V0EY=";
paramsBlob = "19f2fb9e8bc65a143f47903ec07dce010fd2873f994b900ea735a4b5022e968d";

View File

@@ -0,0 +1,10 @@
# <https://ollama.com/library/deepseek-r1>
{ mkOllamaModel }: mkOllamaModel {
modelName = "deepseek-r1";
variant = "14b";
manifestHash = "sha256-6jXf4YGC9jXuKyFOowt1IP4a2mjaAY+LOVtES2YtTxo=";
modelBlob = "6e9f90f02bb3b39b59e81916e8cfce9deb45aeaeb9a54a5be4414486b907dc1e";
modelBlobHash = "sha256-bp+Q8Cuzs5tZ6BkW6M/OnetFrq65pUpb5EFEhrkH3B4=";
paramsBlob = "f4d24e9138dd4603380add165d2b0d970bef471fac194b436ebd50e6147c6588";
paramsBlobHash = "sha256-9NJOkTjdRgM4Ct0WXSsNlwvvRx+sGUtDbr1Q5hR8ZYg=";
}

View File

@@ -0,0 +1,10 @@
# <https://ollama.com/library/deepseek-r1>
{ mkOllamaModel }: mkOllamaModel {
modelName = "deepseek-r1";
variant = "1.5b";
manifestHash = "sha256-pCsl2MEKhBvSRyQwmJiuhRRmaWp9fzoKQIuJVTjMvJY=";
modelBlob = "aabd4debf0c8f08881923f2c25fc0fdeed24435271c2b3e92c4af36704040dbc";
modelBlobHash = "sha256-qr1N6/DI8IiBkj8sJfwP3u0kQ1JxwrPpLErzZwQEDbw=";
paramsBlob = "f4d24e9138dd4603380add165d2b0d970bef471fac194b436ebd50e6147c6588";
paramsBlobHash = "sha256-9NJOkTjdRgM4Ct0WXSsNlwvvRx+sGUtDbr1Q5hR8ZYg=";
}

View File

@@ -0,0 +1,10 @@
# <https://ollama.com/library/deepseek-r1>
{ mkOllamaModel }: mkOllamaModel {
modelName = "deepseek-r1";
variant = "32b";
manifestHash = "sha256-OAVrvLstBoUB7LLV6pzqndSEdGXxq4jE1KQSqfd5Jxc=";
modelBlob = "6150cb382311b69f09cc0f9a1b69fc029cbd742b66bb8ec531aa5ecf5c613e93";
modelBlobHash = "sha256-YVDLOCMRtp8JzA+aG2n8Apy9dCtmu47FMapez1xhPpM=";
paramsBlob = "f4d24e9138dd4603380add165d2b0d970bef471fac194b436ebd50e6147c6588";
paramsBlobHash = "sha256-9NJOkTjdRgM4Ct0WXSsNlwvvRx+sGUtDbr1Q5hR8ZYg=";
}

View File

@@ -0,0 +1,10 @@
# <https://ollama.com/library/deepseek-r1>
{ mkOllamaModel }: mkOllamaModel {
modelName = "deepseek-r1";
variant = "671b";
manifestHash = "sha256-c54bIprX8C2IxepKfT/aGfe0YXDCMwJAJf7qpjOLmkY=";
modelBlob = "9801e7fce27dbf3d0bfb468b7b21f1d132131a546dfc43e50518631b8b1800a9";
modelBlobHash = "sha256-mAHn/OJ9vz0L+0aLeyHx0TITGlRt/EPlBRhjG4sYAKk=";
paramsBlob = "f4d24e9138dd4603380add165d2b0d970bef471fac194b436ebd50e6147c6588";
paramsBlobHash = "sha256-9NJOkTjdRgM4Ct0WXSsNlwvvRx+sGUtDbr1Q5hR8ZYg=";
}

View File

@@ -0,0 +1,10 @@
# <https://ollama.com/library/deepseek-r1>
{ mkOllamaModel }: mkOllamaModel {
modelName = "deepseek-r1";
variant = "7b";
manifestHash = "sha256-CowmaRAjL9MpHnHluh4FjMWvnUERks+IttMOkrbnMWM=";
modelBlob = "96c415656d377afbff962f6cdb2394ab092ccbcbaab4b82525bc4ca800fe8a49";
modelBlobHash = "sha256-lsQVZW03evv/li9s2yOUqwksy8uqtLglJbxMqAD+ikk=";
paramsBlob = "f4d24e9138dd4603380add165d2b0d970bef471fac194b436ebd50e6147c6588";
paramsBlobHash = "sha256-9NJOkTjdRgM4Ct0WXSsNlwvvRx+sGUtDbr1Q5hR8ZYg=";
}

View File

@@ -0,0 +1,12 @@
# <https://ollama.com/library/deepseek-r1>
# uncensored version of deepseek-r1
{ mkOllamaModel }: mkOllamaModel {
owner = "huihui_ai";
modelName = "deepseek-r1-abliterated";
variant = "14b";
manifestHash = "sha256-ayIJ/9dYLoMQpLOplpG35yU75gj+OLPW2XzTubGET/Q=";
modelBlob = "38b5e20078675a1e3040eced1859e432b423ec732c42f5dab03b0a8ae7ba1bdd";
modelBlobHash = "sha256-OLXiAHhnWh4wQOztGFnkMrQj7HMsQvXasDsKiue6G90=";
paramsBlob = "f4d24e9138dd4603380add165d2b0d970bef471fac194b436ebd50e6147c6588";
paramsBlobHash = "sha256-9NJOkTjdRgM4Ct0WXSsNlwvvRx+sGUtDbr1Q5hR8ZYg=";
}

View File

@@ -0,0 +1,12 @@
# <https://ollama.com/library/deepseek-r1>
# uncensored version of deepseek-r1
{ mkOllamaModel }: mkOllamaModel {
owner = "huihui_ai";
modelName = "deepseek-r1-abliterated";
variant = "32b";
manifestHash = "sha256-+1OzKWkSroqT/1xpORgrdd+PREiAWv3FA5zP7tyncgQ=";
modelBlob = "b3bc1a1ad6d5654cd7d8200389f6a96f84f832a5049c003bd47b168078fdf582";
modelBlobHash = "sha256-s7waGtbVZUzX2CADifapb4T4MqUEnAA71HsWgHj99YI=";
paramsBlob = "f4d24e9138dd4603380add165d2b0d970bef471fac194b436ebd50e6147c6588";
paramsBlobHash = "sha256-9NJOkTjdRgM4Ct0WXSsNlwvvRx+sGUtDbr1Q5hR8ZYg=";
}

View File

@@ -0,0 +1,12 @@
# <https://ollama.com/library/deepseek-r1>
# uncensored version of deepseek-r1
{ mkOllamaModel }: mkOllamaModel {
owner = "huihui_ai";
modelName = "deepseek-r1-abliterated";
variant = "70b";
manifestHash = "sha256-UPjQ/pgPFuoVNhCH1QvJ9dQWDmYnXYRK/vd/+ZO4CSA=";
modelBlob = "e30d4a7705b624845a113478563f2a47edb426b1508a8119c90376d433084ee2";
modelBlobHash = "sha256-4w1KdwW2JIRaETR4Vj8qR+20JrFQioEZyQN21DMITuI=";
paramsBlob = "f4d24e9138dd4603380add165d2b0d970bef471fac194b436ebd50e6147c6588";
paramsBlobHash = "sha256-9NJOkTjdRgM4Ct0WXSsNlwvvRx+sGUtDbr1Q5hR8ZYg=";
}

View File

@@ -0,0 +1,13 @@
# <https://ollama.com/library/dolphin-mistral>
# uncensored version of mistral
{ mkOllamaModel }: mkOllamaModel {
modelName = "dolphin-mistral";
variant = "7b";
manifestHash = "sha256-XcjFor5lENyyr7z/3txzrL1YaNLCXZQC9gRL6t49X3A=";
modelBlob = "11a57a9bd0bc7d5e12aa0cc3d83e8d34b776fe5a8c232b20d610ca9f4e8b4b23";
modelBlobHash = "sha256-EaV6m9C8fV4SqgzD2D6NNLd2/lqMIysg1hDKn06LSyM=";
paramsBlob = "f02dd72bb2423204352eabc5637b44d79d17f109fdb510a7c51455892aa2d216";
paramsBlobHash = "sha256-8C3XK7JCMgQ1LqvFY3tE150X8Qn9tRCnxRRViSqi0hY=";
systemBlob = "9640c2212a51f7df5840f7929448afa17cb33fbb173cf15e1d74883e932a3466";
systemBlobHash = "sha256-lkDCISpR999YQPeSlEivoXyzP7sXPPFeHXSIPpMqNGY=";
}

View File

@@ -0,0 +1,13 @@
# <https://ollama.com/library/dolphin-mixtral>
# uncensored version of mixtral
{ mkOllamaModel }: mkOllamaModel {
modelName = "dolphin-mixtral";
variant = "8x7b";
manifestHash = "sha256-T3bCjAQUPqeMr+MYmDy76wva0WqZNlw5uBizrI/lADc=";
modelBlob = "5041ba4278429fe475782b889471b5ff065a6cce5c3a539bd61d1e457f1961de";
modelBlobHash = "sha256-UEG6QnhCn+R1eCuIlHG1/wZabM5cOlOb1h0eRX8ZYd4=";
paramsBlob = "f02dd72bb2423204352eabc5637b44d79d17f109fdb510a7c51455892aa2d216";
paramsBlobHash = "sha256-8C3XK7JCMgQ1LqvFY3tE150X8Qn9tRCnxRRViSqi0hY=";
systemBlob = "9640c2212a51f7df5840f7929448afa17cb33fbb173cf15e1d74883e932a3466";
systemBlobHash = "sha256-lkDCISpR999YQPeSlEivoXyzP7sXPPFeHXSIPpMqNGY=";
}

View File

@@ -2,7 +2,7 @@
{ mkOllamaModel }: mkOllamaModel {
modelName = "gemma2";
variant = "27b";
manifestHash = "sha256-WnC1+AyReHHBypXiSHQtHgqspSkmSPPtc0RkRp6MIaE=";
manifestHash = "sha256-UyYbycGSwctfzImN06oV2gk/WrbwjhfkjPg4uxxYq/4=";
modelBlob = "d7e4b00a7d7a8d03d4eed9b0f3f61a427e9f0fc5dea6aeb414e41dee23dc8ecc";
modelBlobHash = "sha256-1+SwCn16jQPU7tmw8/YaQn6fD8Xepq60FOQd7iPcjsw=";
paramsBlob = "2490e7468436707d5156d7959cf3c6341cc46ee323084cfa3fcf30fe76e397dc";

View File

@@ -2,7 +2,7 @@
{ mkOllamaModel }: mkOllamaModel {
modelName = "llama3.2";
variant = "3b";
manifestHash = "sha256-Z0I0WdLn2VWqGnIGK1GnBPuvbwuCbSM1WFXp+ltJaN8=";
manifestHash = "sha256-qAxPF6zVUmX+7EA8eu+GvgwlmDqyedg/O806u8tbi3I=";
modelBlob = "dde5aa3fc5ffc17176b5e8bdc82f587b24b2678c6c66101bf7da77af9f7ccdff";
modelBlobHash = "sha256-3eWqP8X/wXF2tei9yC9YeySyZ4xsZhAb99p3r598zf8=";
paramsBlob = "56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb";

View File

@@ -0,0 +1,13 @@
# <https://ollama.com/artifish/llama3.2-uncensored>
{ mkOllamaModel }: mkOllamaModel {
owner = "artifish";
modelName = "llama3.2-uncensored";
variant = "latest";
manifestHash = "sha256-xzvqJuAEg7WLpZcpt0v8FkeXHa+h/mbIkNhFrmPiw04=";
modelBlob = "1a01383341be9bf04a904e168089401c3f0533b3af4089d3536d8b36e497ccd6";
modelBlobHash = "sha256-GgE4M0G+m/BKkE4WgIlAHD8FM7OvQInTU22LNuSXzNY=";
paramsBlob = "56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb";
paramsBlobHash = "sha256-VruL1HelGf+mlPxEnCQTxvDh07HIj6fjydiNOuSdTcs=";
systemBlob = "547c3e47ebd093e990745a1b4068995a29c392645f8255308d91349ffbcea5a5";
systemBlobHash = "sha256-VHw+R+vQk+mQdFobQGiZWinDkmRfglUwjZE0n/vOpaU=";
}

View File

@@ -0,0 +1,10 @@
# <https://ollama.com/library/llama3.3>
{ mkOllamaModel }: mkOllamaModel {
modelName = "llama3.3";
variant = "70b";
manifestHash = "sha256-putHSP0pkK0pUrIzWpWn+VLRoGEZoKpqLfbNBSqTo/o=";
modelBlob = "4824460d29f2058aaf6e1118a63a7a197a09bed509f0e7d4e2efb1ee273b447d";
modelBlobHash = "sha256-SCRGDSnyBYqvbhEYpjp6GXoJvtUJ8OfU4u+x7ic7RH0=";
paramsBlob = "56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb";
paramsBlobHash = "sha256-VruL1HelGf+mlPxEnCQTxvDh07HIj6fjydiNOuSdTcs=";
}

View File

@@ -0,0 +1,12 @@
# <https://ollama.com/huihui_ai/llama3.3-abliterated>
# uncensored version of llama 3.3
{ mkOllamaModel }: mkOllamaModel {
owner = "huihui_ai";
modelName = "llama3.3-abliterated";
variant = "70b";
manifestHash = "sha256-aUypPUtudmT+2FExojOiJ/ESaEPtHLhqADv8wJofOpc=";
modelBlob = "ca07b492de2cb9534482296866bcad31824907d2cb1b9407f017f5f569915b40";
modelBlobHash = "sha256-yge0kt4suVNEgiloZrytMYJJB9LLG5QH8Bf19WmRW0A=";
paramsBlob = "56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb";
paramsBlobHash = "sha256-VruL1HelGf+mlPxEnCQTxvDh07HIj6fjydiNOuSdTcs=";
}

View File

@@ -2,7 +2,7 @@
{ mkOllamaModel }: mkOllamaModel {
modelName = "magicoder";
variant = "7b";
manifestHash = "sha256-xImVZS0m8meZXB81pBF+qv+GydqgsaaVtDVwrsx8vS4=";
manifestHash = "sha256-gAfeBvXZ9I3APxZ/rCxO8gtlFdIHUPzGoeFaZBpISlA=";
modelBlob = "4a501ed4ce55e5611922b3ee422501ff7cc773b472d196c3c416859b6d375273";
modelBlobHash = "sha256-SlAe1M5V5WEZIrPuQiUB/3zHc7Ry0ZbDxBaFm203UnM=";
paramsBlob = "58e1b82a691f46c155e57be607f1031930ea0cccc22daf4447f91d360f74b2d2";

View File

@@ -2,7 +2,7 @@
{ mkOllamaModel }: mkOllamaModel {
modelName = "marco-o1";
variant = "7b";
manifestHash = "sha256-RUs48/4zT8/ylZMBOjc09ED87mXgUVfkCjT2hOOfBDo=";
manifestHash = "sha256-R1LmK6oKqXVOr8P51BacJhhDhxJaNCa8yxQ/cWneq5I=";
modelBlob = "234ea779a388b986a6c961440f175e75c7cd336f70614d7c5b043c09a5931ad7";
modelBlobHash = "sha256-I06neaOIuYamyWFEDxdedcfNM29wYU18WwQ8CaWTGtc=";
systemBlob = "8c772364849c7ab9cc387c82994af4e17861dabc91d9937e48ec6db602783c6a";

View File

@@ -2,7 +2,7 @@
{ mkOllamaModel }: mkOllamaModel {
modelName = "mistral-small";
variant = "22b";
manifestHash = "sha256-ko90yOH9L6slUJ6lySFOuMEa8dV9aLbaNq/bl+hWmdA=";
manifestHash = "sha256-0JXNVTsE5r3lcQcr89i8CojDQOARrPEqXU+gbuNviLw=";
modelBlob = "e5f39205cb1323dbfce381f15993d66ec7b40374b2cc1961bdf62828fb9709d1";
modelBlobHash = "sha256-5fOSBcsTI9v844HxWZPWbse0A3SyzBlhvfYoKPuXCdE=";
paramsBlob = "ac9aa3c4956dba22deb5330f3dfc21a403d74742ef7227033235a92a3808e4da";

View File

@@ -7,6 +7,7 @@
{
modelName,
variant,
owner ? "library",
manifestHash ? "",
# grab the *Blob from the manifest (trim the `sha256:` prefix).
# the manifest can be acquired by providing just the above parameters and building this package, then viewing the output
@@ -21,21 +22,25 @@ stdenv.mkDerivation {
name = modelName;
srcs = [
(fetchurl {
url = "https://registry.ollama.ai/v2/library/${modelName}/manifests/${variant}";
name = "manifest";
url = "https://registry.ollama.ai/v2/${owner}/${modelName}/manifests/${variant}";
hash = manifestHash;
})
] ++ lib.optionals (modelBlob != "") [
(fetchurl {
name = "model-blob";
url = "https://registry.ollama.ai/v2/llama/${modelName}:${variant}/blobs/sha256-${modelBlob}";
hash = modelBlobHash;
})
] ++ lib.optionals (paramsBlob != "") [
(fetchurl {
name = "params-blob";
url = "https://registry.ollama.ai/v2/llama/${modelName}:${variant}/blobs/sha256-${paramsBlob}";
hash = paramsBlobHash;
})
] ++ lib.optionals (systemBlob != "") [
(fetchurl {
name = "system-blob";
url = "https://registry.ollama.ai/v2/llama/${modelName}:${variant}/blobs/sha256-${systemBlob}";
hash = systemBlobHash;
})
@@ -60,17 +65,24 @@ stdenv.mkDerivation {
runHook preBuild
mkdir blobs
for _src in sha256-*; do
mv "$_src" blobs
done
${lib.optionalString (modelBlob != "") ''
mv model-blob blobs/sha256-${modelBlob}
''}
${lib.optionalString (paramsBlob != "") ''
mv params-blob blobs/sha256-${paramsBlob}
''}
${lib.optionalString (systemBlob != "") ''
mv system-blob blobs/sha256-${systemBlob}
''}
# lots of fields are not required by ollama,
# and removing them allows to also remove the files (hashes) they reference
jq 'del(.config)' < ${variant} \
jq 'del(.config)' < manifest \
| jq '. + { layers: .layers | map(select(.mediaType != "application/vnd.ollama.image.license")) }' \
| jq '. + { layers: .layers | map(select(.mediaType != "application/vnd.ollama.image.template")) }' \
| jq '. + { layers: .layers | map(select(.mediaType != "application/vnd.docker.container.image.v1+json")) }' \
> manifest
> manifest.new
mv manifest.new manifest
runHook postBuild
'';
@@ -97,11 +109,18 @@ stdenv.mkDerivation {
local blobType="$1"
local expectedBlobHash="$2"
local blobHash=$(cat manifest | jq ".layers.[] | select(.mediaType == \"application/vnd.ollama.image.$blobType\") | .digest[7:]")
local blobHashNoQuotes=''${blobHash//\"/}
if [ -n "$blobHash" ]; then
printf " %sBlob = %s;\n" "$blobType" "$blobHash"
fi
if [ "''${blobHash//\"/}" != "$expectedBlobHash" ]; then
if [ -n "$expectedBlobHash" -a ! -e "blobs/sha256-$blobHashNoQuotes" ]; then
printf " %sBlob doesn't exist at blobs/sha256-$blobHashNoQuotes\n"
mismatchedBlobs+=("$blobType")
fi
if [ "$blobHashNoQuotes" != "$expectedBlobHash" ]; then
mismatchedBlobs+=("$blobType")
fi
}
@@ -132,6 +151,6 @@ stdenv.mkDerivation {
};
meta = {
homepage = "https://ollama.com/library/${modelName}";
homepage = "https://ollama.com/${owner}/${modelName}";
};
}

View File

@@ -7,6 +7,13 @@
# - <https://huggingface.co/spaces/mike-ravkine/can-ai-code-results>
# - <https://eqbench.com/>
# - <https://evalplus.github.io/leaderboard.html>
#
# choosing a model, for sensitive/illicit things ("Uncensored General Intelligence"):
# - <https://huggingface.co/spaces/DontPlanToEnd/UGI-Leaderboard>
# - <https://www.reddit.com/r/LocalLLaMA/comments/1hk0ldo/december_2024_uncensored_llm_test_results/>
# - search "abliterated" or "abliterate"
# - search "uncensored"
# - search "Eric Hartford" <https://erichartford.com/uncensored-models>
{
lib,
newScope,
@@ -22,6 +29,16 @@ lib.recurseIntoAttrs (lib.makeScope newScope (self: with self; {
deepseek-coder-7b = callPackage ./deepseek-coder-7b.nix { };
deepseek-coder-v2-16b = callPackage ./deepseek-coder-v2-16b.nix { };
deepseek-coder-v2-16b-lite-instruct-q5_1 = callPackage ./deepseek-coder-v2-16b-lite-instruct-q5_1.nix { };
deepseek-r1-1_5b = callPackage ./deepseek-r1-1_5b.nix { };
deepseek-r1-7b = callPackage ./deepseek-r1-7b.nix { };
deepseek-r1-14b = callPackage ./deepseek-r1-14b.nix { };
deepseek-r1-32b = callPackage ./deepseek-r1-32b.nix { };
deepseek-r1-671b = callPackage ./deepseek-r1-671b.nix { };
deepseek-r1-abliterated-14b = callPackage ./deepseek-r1-abliterated-14b.nix { };
deepseek-r1-abliterated-32b = callPackage ./deepseek-r1-abliterated-32b.nix { };
deepseek-r1-abliterated-70b = callPackage ./deepseek-r1-abliterated-70b.nix { };
dolphin-mistral-7b = callPackage ./dolphin-mistral-7b.nix { };
dolphin-mixtral-8x7b = callPackage ./dolphin-mixtral-8x7b.nix { };
falcon2-11b = callPackage ./falcon2-11b.nix { };
gemma2-9b = callPackage ./gemma2-9b.nix { };
gemma2-27b = callPackage ./gemma2-27b.nix { };
@@ -30,6 +47,9 @@ lib.recurseIntoAttrs (lib.makeScope newScope (self: with self; {
llama3-chatqa-8b = callPackage ./llama3-chatqa-8b.nix { };
llama3_1-70b = callPackage ./llama3_1-70b.nix { };
llama3_2-3b = callPackage ./llama3_2-3b.nix { };
llama3_2-uncensored-3b = callPackage ./llama3_2-uncensored-3b.nix { };
llama3_3-70b = callPackage ./llama3_3-70b.nix { };
llama3_3-abliterated-70b = callPackage ./llama3_3-abliterated-70b.nix { };
magicoder-7b = callPackage ./magicoder-7b.nix { };
marco-o1-7b = callPackage ./marco-o1-7b.nix { };
mistral-7b = callPackage ./mistral-7b.nix { };
@@ -42,8 +62,12 @@ lib.recurseIntoAttrs (lib.makeScope newScope (self: with self; {
qwen2_5-14b = callPackage ./qwen2_5-14b.nix { };
qwen2_5-32b = callPackage ./qwen2_5-32b.nix { };
qwen2_5-32b-instruct-q2_K = callPackage ./qwen2_5-32b-instruct-q2_K.nix { };
qwen2_5-abliterate-7b = callPackage ./qwen2_5-abliterate-7b.nix { };
qwen2_5-abliterate-14b = callPackage ./qwen2_5-abliterate-14b.nix { };
qwen2_5-abliterate-32b = callPackage ./qwen2_5-abliterate-32b.nix { };
qwen2_5-coder-7b = callPackage ./qwen2_5-coder-7b.nix { };
qwq-32b = callPackage ./qwq-32b.nix { };
qwq-abliterated-32b = callPackage ./qwq-abliterated-32b.nix { };
solar-pro-22b = callPackage ./solar-pro-22b.nix { };
starcoder2-15b-instruct = callPackage ./starcoder2-15b-instruct.nix { };
wizardlm2-7b = callPackage ./wizardlm2-7b.nix { };

View File

@@ -2,7 +2,7 @@
{ mkOllamaModel }: mkOllamaModel {
modelName = "qwen2.5";
variant = "14b";
manifestHash = "sha256-1U+DYHu8mCbpzfSMeCgjYcGA9+mgNPSNQCOx5TQw92s=";
manifestHash = "sha256-fN9aAYfVxYzF02myVVkveEHRxGltRajIqUiUQDhbIvY=";
modelBlob = "2049f5674b1e92b4464e5729975c9689fcfbf0b0e4443ccf10b5339f370f9a54";
modelBlobHash = "sha256-IEn1Z0sekrRGTlcpl1yWifz78LDkRDzPELUznzcPmlQ=";
systemBlob = "66b9ea09bd5b7099cbb4fc820f31b575c0366fa439b08245566692c6784e281e";

View File

@@ -2,7 +2,7 @@
{ mkOllamaModel }: mkOllamaModel {
modelName = "qwen2.5";
variant = "32b";
manifestHash = "sha256-Gt8djxgzdAm9BK9FrMAz5dxFEP1+Sg86w0ESGzxsNuA=";
manifestHash = "sha256-nxO6Epmv6gnZqVb8aoW+zJkRWm1Zb64gGlSHoDvcQ2g=";
modelBlob = "eabc98a9bcbfce7fd70f3e07de599f8fda98120fefed5881934161ede8bd1a41";
modelBlobHash = "sha256-6ryYqby/zn/XDz4H3lmfj9qYEg/v7ViBk0Fh7ei9GkE=";
systemBlob = "66b9ea09bd5b7099cbb4fc820f31b575c0366fa439b08245566692c6784e281e";

View File

@@ -0,0 +1,12 @@
# <https://ollama.com/huihui_ai/qwen2.5-abliterate>
# uncensored version of qwen2.5
{ mkOllamaModel }: mkOllamaModel {
owner = "huihui_ai";
modelName = "qwen2.5-abliterate";
variant = "14b";
manifestHash = "sha256-qGXe8FVeBXD9oGuz6jVde48LXCZRBRPuFAR/U2kQhjA=";
modelBlob = "29ed0ac6f51294cdfcbdf77535162e751fac1fe7ebc87cb2893fb70f9e7b5edb";
modelBlobHash = "sha256-Ke0KxvUSlM38vfd1NRYudR+sH+fryHyyiT+3D557Xts=";
systemBlob = "66b9ea09bd5b7099cbb4fc820f31b575c0366fa439b08245566692c6784e281e";
systemBlobHash = "sha256-ZrnqCb1bcJnLtPyCDzG1dcA2b6Q5sIJFVmaSxnhOKB4=";
}

View File

@@ -0,0 +1,12 @@
# <https://ollama.com/huihui_ai/qwen2.5-abliterate>
# uncensored version of qwen2.5
{ mkOllamaModel }: mkOllamaModel {
owner = "huihui_ai";
modelName = "qwen2.5-abliterate";
variant = "32b";
manifestHash = "sha256-jcJWbTsgGMISTIcUKrpT4IrpPuQhMWVbJuyxKbU4If0=";
modelBlob = "70b5f74f481cdc895708221bd8a15e3a47293ab7cf50e75c80d7da7884a27cec";
modelBlobHash = "sha256-cLX3T0gc3IlXCCIb2KFeOkcpOrfPUOdcgNfaeISifOw=";
systemBlob = "66b9ea09bd5b7099cbb4fc820f31b575c0366fa439b08245566692c6784e281e";
systemBlobHash = "sha256-ZrnqCb1bcJnLtPyCDzG1dcA2b6Q5sIJFVmaSxnhOKB4=";
}

View File

@@ -0,0 +1,12 @@
# <https://ollama.com/huihui_ai/qwen2.5-abliterate>
# uncensored version of qwen2.5
{ mkOllamaModel }: mkOllamaModel {
owner = "huihui_ai";
modelName = "qwen2.5-abliterate";
variant = "7b";
manifestHash = "sha256-EDSCR1ybTUAymZ3V1zg0eMrYuWauaumE1SXa9zUsIhk=";
modelBlob = "212345411ab817a8d7669ed63f24a30f2e2a2cd297455a6aad1de50c82f7691c";
modelBlobHash = "sha256-ISNFQRq4F6jXZp7WPySjDy4qLNKXRVpqrR3lDIL3aRw=";
systemBlob = "66b9ea09bd5b7099cbb4fc820f31b575c0366fa439b08245566692c6784e281e";
systemBlobHash = "sha256-ZrnqCb1bcJnLtPyCDzG1dcA2b6Q5sIJFVmaSxnhOKB4=";
}

View File

@@ -2,7 +2,7 @@
{ mkOllamaModel }: mkOllamaModel {
modelName = "qwq";
variant = "32b";
manifestHash = "sha256-9i224DAvi8Onzjzaa0nh5HX2sfcTITDow1J0KVOdrBA=";
manifestHash = "sha256-RkB77aXAzf3PgD0jYoBJhSX1InGdY5g/WHWXcZiZYd8=";
modelBlob = "fa711da9efad72a93edc6b16aadc2dba1345f3c16491350483104978b1e89c91";
modelBlobHash = "sha256-+nEdqe+tcqk+3GsWqtwtuhNF88FkkTUEgxBJeLHonJE=";
paramsBlob = "f02dd72bb2423204352eabc5637b44d79d17f109fdb510a7c51455892aa2d216";

View File

@@ -0,0 +1,12 @@
# <https://ollama.com/huihui_ai/qwq-abliterated>
# uncensored version of qwq
{ mkOllamaModel }: mkOllamaModel {
owner = "huihui_ai";
modelName = "qwq-abliterated";
variant = "32b";
manifestHash = "sha256-EdT/0h+Uwtuluy5HO8EGKmmrl1tNIrSt33KUI3mOefo=";
modelBlob = "6278acec322cac64ac9f5f98578a16e6ca88d361ebb3f54b82a3a5d1b0208a61";
modelBlobHash = "sha256-Ynis7DIsrGSsn1+YV4oW5sqI02Hrs/VLgqOl0bAgimE=";
systemBlob = "50795fcf7f4df9be65090ce980b63e8d82f51b5cbad9492fa504aefa3ad3c9a0";
systemBlobHash = "sha256-UHlfz39N+b5lCQzpgLY+jYL1G1y62UkvpQSu+jrTyaA=";
}

View File

@@ -11,7 +11,7 @@
stdenv.mkDerivation rec {
pname = "opencellid";
version = "0-unstable-2025-01-02";
version = "0-unstable-2025-02-25";
src = fetchurl {
# this is a live url. updated... weekly? the server seems to silently ignore unrecognized query parameters,
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
# the API key should allow for at least 2 downloads per day (maybe more?)
# TODO: repackage this such that hashes can be stable (mirror the data in a versioned repo, and point to that here?)
url = "https://opencellid.org/ocid/downloads?token=${apiKey}&type=full&file=cell_towers.csv.gz&_stamp=${version}";
hash = "sha256-Zh3AjmXzYs1E7fvpR53ULkuVg42tvYSxB+SIhKmabPE=";
hash = "sha256-HTPZS9Vp8y+WmuB7RMjyhC7NFLl0i4YFjAO3e7X0AZg=";
};
unpackPhase = ''

View File

@@ -14,13 +14,14 @@ def main():
parser = argparse.ArgumentParser(description="remove a torrent and trash its data")
TransmissionApi.add_arguments(parser)
parser.add_argument("torrent", help="numerical ID of the torrent in the transmission list (see sane-bt-show)")
parser.add_argument("torrent", help="numerical ID of the torrent in the transmission list (see sane-bt-show)", nargs="+")
args = parser.parse_args()
bt_api = TransmissionApi.from_arguments(args)
torrent = args.torrent
torrents = args.torrent
bt_api.rm_torrent(torrent)
for torrent in torrents:
bt_api.rm_torrent(torrent)
if __name__ == "__main__":
main()

View File

@@ -6,6 +6,8 @@ systemctl stop \
dovecot2 \
duplicity \
duplicity.timer \
dyn-dns \
dyn-dns.timer \
ejabberd \
gitea \
goaccess \
@@ -25,6 +27,7 @@ systemctl stop \
matrix-synapse \
mautrix-signal \
monero \
murmur \
mx-puppet-discord \
navidrome \
nginx \
@@ -40,6 +43,7 @@ systemctl stop \
sftpgo \
signald \
slskd \
smartd \
systemctl \
tor \
transmission \

View File

@@ -92,7 +92,7 @@
buildNpmPackage,
buildPackages,
cups,
electron-bin,
electron_33-bin,
fetchFromGitHub,
fetchurl,
flac,
@@ -140,18 +140,21 @@ let
# '';
# };
# sqlcipherTarball = fetchurl {
# # this is a dependency of better-sqlite3.
# # version/url is found in <repo:signalapp/better-sqlite3:deps/download.js>
# # - checkout the better-sqlite3 tag which matches signal-dekstop's package.json "@signalapp/better-sqlite3" key.
# url = let
# BETTER_SQLITE3_VERSION = "9.0.8"; #< from Signal-Desktop/package.json
# HASH = "b0dbebe5b2d81879984bfa2318ba364fb4d436669ddc1668d2406eaaaee40b7e";
# SQLCIPHER_VERSION = "4.6.1-signal-patch2";
# EXTENSION_VERSION = "0.2.0";
# in "https://build-artifacts.signal.org/desktop/sqlcipher-v2-${SQLCIPHER_VERSION}--${EXTENSION_VERSION}-${HASH}.tar.gz";
# hash = "sha256-sNvr5bLYGHmYS/ojGLo2T7TUNmad3BZo0kBuqq7kC34=";
# };
# better-sqlite3 can be built from source, or use the prebuilt version from nixpkgs' signal-desktop.
# just do whatever's easiest (and works) at the time of upgrade; set `null` to use the prebuild
# sqlcipherTarball = null;
sqlcipherTarball = fetchurl {
# this is a dependency of better-sqlite3.
# version/url is found in <repo:signalapp/better-sqlite3:deps/download.js>
# - checkout the better-sqlite3 tag which matches signal-dekstop's package.json "@signalapp/better-sqlite3" key.
url = let
BETTER_SQLITE3_VERSION = "9.0.11"; #< from Signal-Desktop/package.json
HASH = "6253f886c40e49bf892d5cdc92b2eb200b12cd8d80c48ce5b05967cfd01ee8c7";
SQLCIPHER_VERSION = "4.6.1-signal-patch2";
EXTENSION_VERSION = "0.2.1-asm2";
in "https://build-artifacts.signal.org/desktop/sqlcipher-v2-${SQLCIPHER_VERSION}--${EXTENSION_VERSION}-${HASH}.tar.gz";
hash = "sha256-YlP4hsQOSb+JLVzckrLrIAsSzY2AxIzlsFlnz9Ae6Mc=";
};
# signal-fts5-extension = callPackage ./fts5-extension { };
# bettersqlitePatch = substituteAll {
@@ -169,7 +172,7 @@ let
# prefer to use the same electron version as everywhere else, and a `-bin` version to avoid 4hr rebuilds.
# the non-bin varieties *seem* to ship the wrong `electron.headers` property.
# - maybe they can work if i manually DL and ship the corresponding headers
electron' = electron-bin;
electron' = electron_33-bin;
buildNpmArch = if stdenv.buildPlatform.isAarch64 then "arm64" else "x64";
hostNpmArch = if stdenv.hostPlatform.isAarch64 then "arm64" else "x64";
@@ -177,17 +180,17 @@ let
in
buildNpmPackage rec {
pname = "signal-desktop-from-src";
version = "7.37.0";
version = "7.44.0";
src = fetchFromGitHub {
owner = "signalapp";
repo = "Signal-Desktop";
leaveDotGit = true; # signal calculates the release date via `git`
rev = "v${version}";
hash = "sha256-Uh2VzPmNTjlE5dsFiAhXR6lxV53IJG7IexZNArGTBhU=";
hash = "sha256-Gxb5kI2SAtJ/j9mHsL80yHS8XxFwHDlKUAxVcG2X9CE=";
};
npmDepsHash = "sha256-U1dWB1E36A+M7XLosxMd2oRifJ6czFxzuz3pOTiJ+oM=";
npmDepsHash = "sha256-r7HtaYBORc8I241EgTcLCZeZpi4rbqviOyKbfqJyJvE=";
patches = [
# ./debug.patch
@@ -266,7 +269,7 @@ buildNpmPackage rec {
dontWrapGApps = true;
# dontStrip = false;
# makeCacheWritable = true;
makeCacheWritable = true; # "Your cache folder contains root-owned files, due to a bug in previous versions of npm which has since been addressed."
npmRebuildFlags = [
# "--offline"
@@ -298,17 +301,19 @@ buildNpmPackage rec {
# provide necessities which were skipped as part of --ignore-scripts
rsync -arv ${ringrtcPrebuild}/ node_modules/@signalapp/ringrtc/
# option 1: replace the entire better-sqlite3 library with the prebuilt version from nixpkgs' signal-desktop
rsync -arv ${betterSqlitePrebuild}/ node_modules/@signalapp/better-sqlite3/
# patch so signal doesn't try to *rebuild* better-sqlite3
substituteInPlace node_modules/@signalapp/better-sqlite3/package.json \
--replace-fail '"download": "node ./deps/download.js"' '"download": "true"' \
--replace-fail '"build-release": "node-gyp rebuild --release"' '"build-release": "true"' \
--replace-fail '"install": "npm run download && npm run build-release"' '"install": "true"'
# option 2: replace only the sqlcipher plugin with Signal's prebuilt version,
# and build the rest of better-sqlite3 from source
# cp $${sqlcipherTarball} node_modules/@signalapp/better-sqlite3/deps/sqlcipher.tar.gz
${if sqlcipherTarball == null then ''
# option 1: replace the entire better-sqlite3 library with the prebuilt version from nixpkgs' signal-desktop
rsync -arv ${betterSqlitePrebuild}/ node_modules/@signalapp/better-sqlite3/
# patch so signal doesn't try to *rebuild* better-sqlite3
substituteInPlace node_modules/@signalapp/better-sqlite3/package.json \
--replace-fail '"download": "node ./deps/download.js"' '"download": "true"' \
--replace-fail '"build-release": "node-gyp rebuild --release"' '"build-release": "true"' \
--replace-fail '"install": "npm run download && npm run build-release"' '"install": "true"'
'' else ''
# option 2: replace only the sqlcipher plugin with Signal's prebuilt version,
# and build the rest of better-sqlite3 from source
cp ${sqlcipherTarball} node_modules/@signalapp/better-sqlite3/deps/sqlcipher.tar.gz
''}
# pushd node_modules/@signalapp/better-sqlite3
# # node-gyp isn't consistently linked into better-sqlite's `node_modules` (maybe due to version mismatch with signal-desktop's node-gyp?)

View File

@@ -6,8 +6,8 @@ let
src = fetchFromGitHub {
owner = "Mic92";
repo = "sops-nix";
rev = "015d461c16678fc02a2f405eb453abb509d4e1d4";
hash = "sha256-j9IdflJwRtqo9WpM0OfAZml47eBblUHGNQTe62OUqTw=";
rev = "07af005bb7d60c7f118d9d9f5530485da5d1e975";
hash = "sha256-7JAGezJ0Dn5qIyA2+T4Dt/xQgAbhCglh6lzCekTVMeU=";
};
flake = import "${src}/flake.nix";
evaluated = flake.outputs {
@@ -20,7 +20,7 @@ in src.overrideAttrs (base: {
# attributes required by update scripts
pname = "sops-nix";
# nix-update-script insists on this weird `assets-` version format
version = "assets-unstable-2025-01-20";
version = "assets-unstable-2025-02-11";
src = src;
passthru = base.passthru

View File

@@ -5,12 +5,12 @@
}:
stdenv.mkDerivation {
pname = "uassets";
version = "0-unstable-2025-01-28";
version = "0-unstable-2025-02-26";
src = fetchFromGitHub {
owner = "uBlockOrigin";
repo = "uAssets";
rev = "4773d7a59fd3ae536be906c96ac15aa241413f4d";
hash = "sha256-JSGIqZXyeCgMXxh9jlOKpkA43y6LL5br/F3aRfIzN7U=";
rev = "ce99a8689c57f18d221ea6f34c56c5b981bd35b0";
hash = "sha256-/okRfn7D9D0ZVVCnrKebZWmwpFnD+g6DN+osOLclypA=";
};
dontBuild = true;

View File

@@ -8,15 +8,15 @@ let
domain = "git.uninsane.org";
owner = "colin";
repo = "uninsane";
rev = "6f48a6f7adeb015f754b83ee7c8b3e595efa5a8b";
hash = "sha256-ZaYdvK9Y9+VMuoXcsUlYe4xS/yQbwQJDrRt2VlfQNo0=";
rev = "c5f071e8b1b946de47aa88b63c2d6a96e33b4590";
hash = "sha256-J6dFS1at7vfQFfWBxSHb2iTaBdQdtzkxG+c3F1eIltY=";
};
pkg = callPackage "${src}/default.nix" { };
in
pkg.overrideAttrs (base: {
inherit src;
pname = "uninsane-dot-org";
version = "0-unstable-2024-11-16";
version = "0-unstable-2025-02-09";
passthru = (base.passthru or {}) // {
updateScript = nix-update-script {
extraArgs = [ "--version" "branch" ];

View File

@@ -0,0 +1,702 @@
[
{
"pname": "BinarySerializer",
"version": "8.6.4.1",
"hash": "sha256-H+PpU8TWgzmqFs6QkurXXsnswf5LSDv0isfHpYvBxjI="
},
{
"pname": "CommunityToolkit.Diagnostics",
"version": "8.4.0",
"hash": "sha256-uAK5I/YOMeY9R2pX4rabPxq7J/NF8ob6IpQ+leTM8HA="
},
{
"pname": "CommunityToolkit.HighPerformance",
"version": "8.4.0",
"hash": "sha256-q9RZZvLlvk1sXuIr5wdBxyTf9o0G2mk23xtNGDf6vGs="
},
{
"pname": "Emgu.CV",
"version": "4.10.0.5680",
"hash": "sha256-j7I+xgLo8gB+5rKqW5FVtP6o3xqx3acrcMjKGr8ZlJ8="
},
{
"pname": "Emgu.CV",
"version": "4.9.0.5494",
"hash": "sha256-mU7daSkOHtA/obp0Cq67+K9yHJhLNM+XYh0B4jfWI8c="
},
{
"pname": "Emgu.CV.runtime.mini.macos",
"version": "4.9.0.5494",
"hash": "sha256-/Q560p1jViBIn2cKLymGMArtYEmd17HjZArHFTror/Y="
},
{
"pname": "Emgu.CV.runtime.mini.ubuntu-x64",
"version": "4.10.0.5680",
"hash": "sha256-1/7UpLgOeO05E8rO1YU35duS6rWgRLfJcL+NKfcl7JQ="
},
{
"pname": "Emgu.CV.runtime.mini.windows",
"version": "4.10.0.5680",
"hash": "sha256-l2ex5Ee3fT8gYgoOfFRYkDMxrJEzN6iQfmkpurkjyiw="
},
{
"pname": "Emgu.runtime.windows.msvc.rt.arm64",
"version": "19.42.34435",
"hash": "sha256-pTbkAxOA2C7VUSFkseCsCzJsJjEAAD+FvNhgRNWHHqs="
},
{
"pname": "Emgu.runtime.windows.msvc.rt.x64",
"version": "19.42.34435",
"hash": "sha256-9hnikUxzdcBaY/K1RWcOHgybynQmr1vjfF949DxaMmE="
},
{
"pname": "Emgu.runtime.windows.msvc.rt.x86",
"version": "19.42.34435",
"hash": "sha256-mQDyYqtJrZeKYMTd6JhtKaaY7NzdZWDuwxKwyQ+GxuU="
},
{
"pname": "K4os.Compression.LZ4",
"version": "1.3.8",
"hash": "sha256-OmT3JwO4qpkZDL7XqiFqZCyxySj64s9t+mXcN1T+IyA="
},
{
"pname": "KdTree",
"version": "1.4.1",
"hash": "sha256-R4+L26pJoliLiwMuxmJDoa3Vf16gBq417fN+iNCy7Yc="
},
{
"pname": "Microsoft.CodeAnalysis.Analyzers",
"version": "3.3.4",
"hash": "sha256-qDzTfZBSCvAUu9gzq2k+LOvh6/eRvJ9++VCNck/ZpnE="
},
{
"pname": "Microsoft.CodeAnalysis.Common",
"version": "4.12.0",
"hash": "sha256-mm/OKG3zPLAeTVGZtuLxSG+jpQDOchn1oyHqBBJW2Ho="
},
{
"pname": "Microsoft.CodeAnalysis.CSharp",
"version": "4.12.0",
"hash": "sha256-m1i1Q5pyEq4lAoYjNE9baEjTplH8+bXx5wSA+eMmehk="
},
{
"pname": "Microsoft.CodeAnalysis.CSharp.Scripting",
"version": "4.12.0",
"hash": "sha256-CiCGoxL/EgyLp7j1CT99x0SnUwMO/7zS1K6BCnO5XEs="
},
{
"pname": "Microsoft.CodeAnalysis.Scripting.Common",
"version": "4.12.0",
"hash": "sha256-Ci6ULpUvAqoHIcBGBk6/qincQgkh+bkyI+jDd2J8Y/Q="
},
{
"pname": "Microsoft.CSharp",
"version": "4.7.0",
"hash": "sha256-Enknv2RsFF68lEPdrf5M+BpV1kHoLTVRApKUwuk/pj0="
},
{
"pname": "Microsoft.IO.RecyclableMemoryStream",
"version": "3.0.1",
"hash": "sha256-unFg/5EcU/XKJbob4GtQC43Ydgi5VjeBGs7hfhj4EYo="
},
{
"pname": "Microsoft.NETCore.Platforms",
"version": "1.1.0",
"hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="
},
{
"pname": "Microsoft.NETCore.Platforms",
"version": "1.1.1",
"hash": "sha256-8hLiUKvy/YirCWlFwzdejD2Db3DaXhHxT7GSZx/znJg="
},
{
"pname": "Microsoft.NETCore.Targets",
"version": "1.1.0",
"hash": "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ="
},
{
"pname": "Microsoft.NETCore.Targets",
"version": "1.1.3",
"hash": "sha256-WLsf1NuUfRWyr7C7Rl9jiua9jximnVvzy6nk2D2bVRc="
},
{
"pname": "Microsoft.Win32.Primitives",
"version": "4.3.0",
"hash": "sha256-mBNDmPXNTW54XLnPAUwBRvkIORFM7/j0D0I2SyQPDEg="
},
{
"pname": "NETStandard.Library",
"version": "1.6.1",
"hash": "sha256-iNan1ix7RtncGWC9AjAZ2sk70DoxOsmEOgQ10fXm4Pw="
},
{
"pname": "Portable.BouncyCastle",
"version": "1.9.0",
"hash": "sha256-GOXM4TdTTodWlGzEfbMForTfTQI/ObJGnFZMSD6X8E4="
},
{
"pname": "runtime.any.System.Collections",
"version": "4.3.0",
"hash": "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8="
},
{
"pname": "runtime.any.System.Diagnostics.Tools",
"version": "4.3.0",
"hash": "sha256-8yLKFt2wQxkEf7fNfzB+cPUCjYn2qbqNgQ1+EeY2h/I="
},
{
"pname": "runtime.any.System.Diagnostics.Tracing",
"version": "4.3.0",
"hash": "sha256-dsmTLGvt8HqRkDWP8iKVXJCS+akAzENGXKPV18W2RgI="
},
{
"pname": "runtime.any.System.Globalization",
"version": "4.3.0",
"hash": "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU="
},
{
"pname": "runtime.any.System.Globalization.Calendars",
"version": "4.3.0",
"hash": "sha256-AYh39tgXJVFu8aLi9Y/4rK8yWMaza4S4eaxjfcuEEL4="
},
{
"pname": "runtime.any.System.IO",
"version": "4.3.0",
"hash": "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE="
},
{
"pname": "runtime.any.System.Reflection",
"version": "4.3.0",
"hash": "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk="
},
{
"pname": "runtime.any.System.Reflection.Extensions",
"version": "4.3.0",
"hash": "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8="
},
{
"pname": "runtime.any.System.Reflection.Primitives",
"version": "4.3.0",
"hash": "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ="
},
{
"pname": "runtime.any.System.Resources.ResourceManager",
"version": "4.3.0",
"hash": "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4="
},
{
"pname": "runtime.any.System.Runtime",
"version": "4.3.0",
"hash": "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM="
},
{
"pname": "runtime.any.System.Runtime.Handles",
"version": "4.3.0",
"hash": "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4="
},
{
"pname": "runtime.any.System.Runtime.InteropServices",
"version": "4.3.0",
"hash": "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA="
},
{
"pname": "runtime.any.System.Text.Encoding",
"version": "4.3.0",
"hash": "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs="
},
{
"pname": "runtime.any.System.Text.Encoding.Extensions",
"version": "4.3.0",
"hash": "sha256-6MYj0RmLh4EVqMtO/MRqBi0HOn5iG4x9JimgCCJ+EFM="
},
{
"pname": "runtime.any.System.Threading.Tasks",
"version": "4.3.0",
"hash": "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4="
},
{
"pname": "runtime.any.System.Threading.Timer",
"version": "4.3.0",
"hash": "sha256-BgHxXCIbicVZtpgMimSXixhFC3V+p5ODqeljDjO8hCs="
},
{
"pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-EbnOqPOrAgI9eNheXLR++VnY4pHzMsEKw1dFPJ/Fl2c="
},
{
"pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-mVg02TNvJc1BuHU03q3fH3M6cMgkKaQPBxraSHl/Btg="
},
{
"pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-g9Uiikrl+M40hYe0JMlGHe/lrR0+nN05YF64wzLmBBA="
},
{
"pname": "runtime.native.System",
"version": "4.3.0",
"hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="
},
{
"pname": "runtime.native.System.IO.Compression",
"version": "4.3.0",
"hash": "sha256-DWnXs4vlKoU6WxxvCArTJupV6sX3iBbZh8SbqfHace8="
},
{
"pname": "runtime.native.System.Net.Http",
"version": "4.3.0",
"hash": "sha256-c556PyheRwpYhweBjSfIwEyZHnAUB8jWioyKEcp/2dg="
},
{
"pname": "runtime.native.System.Security.Cryptography.Apple",
"version": "4.3.0",
"hash": "sha256-2IhBv0i6pTcOyr8FFIyfPEaaCHUmJZ8DYwLUwJ+5waw="
},
{
"pname": "runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I="
},
{
"pname": "runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-xqF6LbbtpzNC9n1Ua16PnYgXHU0LvblEROTfK4vIxX8="
},
{
"pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-aJBu6Frcg6webvzVcKNoUP1b462OAqReF2giTSyBzCQ="
},
{
"pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-Mpt7KN2Kq51QYOEVesEjhWcCGTqWckuPf8HlQ110qLY="
},
{
"pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple",
"version": "4.3.0",
"hash": "sha256-serkd4A7F6eciPiPJtUyJyxzdAtupEcWIZQ9nptEzIM="
},
{
"pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-JvMltmfVC53mCZtKDHE69G3RT6Id28hnskntP9MMP9U="
},
{
"pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-QfFxWTVRNBhN4Dm1XRbCf+soNQpy81PsZed3x6op/bI="
},
{
"pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-EaJHVc9aDZ6F7ltM2JwlIuiJvqM67CKRq682iVSo+pU="
},
{
"pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-PHR0+6rIjJswn89eoiWYY1DuU8u6xRJLrtjykAMuFmA="
},
{
"pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-LFkh7ua7R4rI5w2KGjcHlGXLecsncCy6kDXLuy4qD/Q="
},
{
"pname": "runtime.unix.Microsoft.Win32.Primitives",
"version": "4.3.0",
"hash": "sha256-LZb23lRXzr26tRS5aA0xyB08JxiblPDoA7HBvn6awXg="
},
{
"pname": "runtime.unix.System.Console",
"version": "4.3.1",
"hash": "sha256-dxyn/1Px4FKLZ2QMUrkFpW619Y1lhPeTiGLWYM6IbpY="
},
{
"pname": "runtime.unix.System.Diagnostics.Debug",
"version": "4.3.0",
"hash": "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI="
},
{
"pname": "runtime.unix.System.IO.FileSystem",
"version": "4.3.0",
"hash": "sha256-Pf4mRl6YDK2x2KMh0WdyNgv0VUNdSKVDLlHqozecy5I="
},
{
"pname": "runtime.unix.System.Net.Primitives",
"version": "4.3.0",
"hash": "sha256-pHJ+I6i16MV6m77uhTC6GPY6jWGReE3SSP3fVB59ti0="
},
{
"pname": "runtime.unix.System.Net.Sockets",
"version": "4.3.0",
"hash": "sha256-IvgOeA2JuBjKl5yAVGjPYMPDzs9phb3KANs95H9v1w4="
},
{
"pname": "runtime.unix.System.Private.Uri",
"version": "4.3.0",
"hash": "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs="
},
{
"pname": "runtime.unix.System.Runtime.Extensions",
"version": "4.3.0",
"hash": "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4="
},
{
"pname": "SixLabors.ImageSharp",
"version": "3.1.6",
"hash": "sha256-FQjLyC4158F1GyhlKjzjGo6TxAu698rYWTY9lkko/fA="
},
{
"pname": "System.AppContext",
"version": "4.3.0",
"hash": "sha256-yg95LNQOwFlA1tWxXdQkVyJqT4AnoDc+ACmrNvzGiZg="
},
{
"pname": "System.Buffers",
"version": "4.3.0",
"hash": "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk="
},
{
"pname": "System.Collections",
"version": "4.3.0",
"hash": "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc="
},
{
"pname": "System.Collections.Concurrent",
"version": "4.3.0",
"hash": "sha256-KMY5DfJnDeIsa13DpqvyN8NkReZEMAFnlmNglVoFIXI="
},
{
"pname": "System.Collections.Immutable",
"version": "8.0.0",
"hash": "sha256-F7OVjKNwpqbUh8lTidbqJWYi476nsq9n+6k0+QVRo3w="
},
{
"pname": "System.CommandLine",
"version": "2.0.0-beta4.22272.1",
"hash": "sha256-zSO+CYnMH8deBHDI9DHhCPj79Ce3GOzHCyH1/TiHxcc="
},
{
"pname": "System.Console",
"version": "4.3.0",
"hash": "sha256-Xh3PPBZr0pDbDaK8AEHbdGz7ePK6Yi1ZyRWI1JM6mbo="
},
{
"pname": "System.Diagnostics.Debug",
"version": "4.3.0",
"hash": "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM="
},
{
"pname": "System.Diagnostics.DiagnosticSource",
"version": "4.3.0",
"hash": "sha256-OFJRb0ygep0Z3yDBLwAgM/Tkfs4JCDtsNhwDH9cd1Xw="
},
{
"pname": "System.Diagnostics.Tools",
"version": "4.3.0",
"hash": "sha256-gVOv1SK6Ape0FQhCVlNOd9cvQKBvMxRX9K0JPVi8w0Y="
},
{
"pname": "System.Diagnostics.Tracing",
"version": "4.3.0",
"hash": "sha256-hCETZpHHGVhPYvb4C0fh4zs+8zv4GPoixagkLZjpa9Q="
},
{
"pname": "System.Drawing.Primitives",
"version": "4.3.0",
"hash": "sha256-W4uAdMGddDmR2vUn2qcFLMh6cylyIRW1o54F9xf8A1w="
},
{
"pname": "System.Globalization",
"version": "4.3.0",
"hash": "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI="
},
{
"pname": "System.Globalization.Calendars",
"version": "4.3.0",
"hash": "sha256-uNOD0EOVFgnS2fMKvMiEtI9aOw00+Pfy/H+qucAQlPc="
},
{
"pname": "System.Globalization.Extensions",
"version": "4.3.0",
"hash": "sha256-mmJWA27T0GRVuFP9/sj+4TrR4GJWrzNIk2PDrbr7RQk="
},
{
"pname": "System.IO",
"version": "4.3.0",
"hash": "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY="
},
{
"pname": "System.IO.Compression",
"version": "4.3.0",
"hash": "sha256-f5PrQlQgj5Xj2ZnHxXW8XiOivaBvfqDao9Sb6AVinyA="
},
{
"pname": "System.IO.Compression.ZipFile",
"version": "4.3.0",
"hash": "sha256-WQl+JgWs+GaRMeiahTFUbrhlXIHapzcpTFXbRvAtvvs="
},
{
"pname": "System.IO.FileSystem",
"version": "4.3.0",
"hash": "sha256-vNIYnvlayuVj0WfRfYKpDrhDptlhp1pN8CYmlVd2TXw="
},
{
"pname": "System.IO.FileSystem.Primitives",
"version": "4.3.0",
"hash": "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg="
},
{
"pname": "System.Linq",
"version": "4.3.0",
"hash": "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A="
},
{
"pname": "System.Linq.Expressions",
"version": "4.3.0",
"hash": "sha256-+3pvhZY7rip8HCbfdULzjlC9FPZFpYoQxhkcuFm2wk8="
},
{
"pname": "System.Memory",
"version": "4.6.0",
"hash": "sha256-OhAEKzUM6eEaH99DcGaMz2pFLG/q/N4KVWqqiBYUOFo="
},
{
"pname": "System.Net.Http",
"version": "4.3.0",
"hash": "sha256-UoBB7WPDp2Bne/fwxKF0nE8grJ6FzTMXdT/jfsphj8Q="
},
{
"pname": "System.Net.Http",
"version": "4.3.4",
"hash": "sha256-FMoU0K7nlPLxoDju0NL21Wjlga9GpnAoQjsFhFYYt00="
},
{
"pname": "System.Net.NameResolution",
"version": "4.3.0",
"hash": "sha256-eGZwCBExWsnirWBHyp2sSSSXp6g7I6v53qNmwPgtJ5c="
},
{
"pname": "System.Net.Primitives",
"version": "4.3.0",
"hash": "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE="
},
{
"pname": "System.Net.Sockets",
"version": "4.3.0",
"hash": "sha256-il7dr5VT/QWDg/0cuh+4Es2u8LY//+qqiY9BZmYxSus="
},
{
"pname": "System.ObjectModel",
"version": "4.3.0",
"hash": "sha256-gtmRkWP2Kwr3nHtDh0yYtce38z1wrGzb6fjm4v8wN6Q="
},
{
"pname": "System.Private.Uri",
"version": "4.3.0",
"hash": "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM="
},
{
"pname": "System.Reflection",
"version": "4.3.0",
"hash": "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY="
},
{
"pname": "System.Reflection.Emit",
"version": "4.3.0",
"hash": "sha256-5LhkDmhy2FkSxulXR+bsTtMzdU3VyyuZzsxp7/DwyIU="
},
{
"pname": "System.Reflection.Emit.ILGeneration",
"version": "4.3.0",
"hash": "sha256-mKRknEHNls4gkRwrEgi39B+vSaAz/Gt3IALtS98xNnA="
},
{
"pname": "System.Reflection.Emit.Lightweight",
"version": "4.3.0",
"hash": "sha256-rKx4a9yZKcajloSZHr4CKTVJ6Vjh95ni+zszPxWjh2I="
},
{
"pname": "System.Reflection.Extensions",
"version": "4.3.0",
"hash": "sha256-mMOCYzUenjd4rWIfq7zIX9PFYk/daUyF0A8l1hbydAk="
},
{
"pname": "System.Reflection.Metadata",
"version": "8.0.0",
"hash": "sha256-dQGC30JauIDWNWXMrSNOJncVa1umR1sijazYwUDdSIE="
},
{
"pname": "System.Reflection.Primitives",
"version": "4.3.0",
"hash": "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM="
},
{
"pname": "System.Reflection.TypeExtensions",
"version": "4.3.0",
"hash": "sha256-4U4/XNQAnddgQIHIJq3P2T80hN0oPdU2uCeghsDTWng="
},
{
"pname": "System.Reflection.TypeExtensions",
"version": "4.7.0",
"hash": "sha256-GEtCGXwtOnkYejSV+Tfl+DqyGq5jTUaVyL9eMupMHBM="
},
{
"pname": "System.Resources.ResourceManager",
"version": "4.3.0",
"hash": "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo="
},
{
"pname": "System.Runtime",
"version": "4.3.0",
"hash": "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg="
},
{
"pname": "System.Runtime",
"version": "4.3.1",
"hash": "sha256-R9T68AzS1PJJ7v6ARz9vo88pKL1dWqLOANg4pkQjkA0="
},
{
"pname": "System.Runtime.Extensions",
"version": "4.3.0",
"hash": "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o="
},
{
"pname": "System.Runtime.Extensions",
"version": "4.3.1",
"hash": "sha256-xll/AF6sF1soQ15prAPIVHSH69CiL4E9OHVDHyrm868="
},
{
"pname": "System.Runtime.Handles",
"version": "4.3.0",
"hash": "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms="
},
{
"pname": "System.Runtime.InteropServices",
"version": "4.3.0",
"hash": "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI="
},
{
"pname": "System.Runtime.InteropServices.RuntimeInformation",
"version": "4.3.0",
"hash": "sha256-MYpl6/ZyC6hjmzWRIe+iDoldOMW1mfbwXsduAnXIKGA="
},
{
"pname": "System.Runtime.Numerics",
"version": "4.3.0",
"hash": "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc="
},
{
"pname": "System.Security.Claims",
"version": "4.3.0",
"hash": "sha256-Fua/rDwAqq4UByRVomAxMPmDBGd5eImRqHVQIeSxbks="
},
{
"pname": "System.Security.Cryptography.Algorithms",
"version": "4.3.0",
"hash": "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8="
},
{
"pname": "System.Security.Cryptography.Cng",
"version": "4.3.0",
"hash": "sha256-u17vy6wNhqok91SrVLno2M1EzLHZm6VMca85xbVChsw="
},
{
"pname": "System.Security.Cryptography.Csp",
"version": "4.3.0",
"hash": "sha256-oefdTU/Z2PWU9nlat8uiRDGq/PGZoSPRgkML11pmvPQ="
},
{
"pname": "System.Security.Cryptography.Encoding",
"version": "4.3.0",
"hash": "sha256-Yuge89N6M+NcblcvXMeyHZ6kZDfwBv3LPMDiF8HhJss="
},
{
"pname": "System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-DL+D2sc2JrQiB4oAcUggTFyD8w3aLEjJfod5JPe+Oz4="
},
{
"pname": "System.Security.Cryptography.Primitives",
"version": "4.3.0",
"hash": "sha256-fnFi7B3SnVj5a+BbgXnbjnGNvWrCEU6Hp/wjsjWz318="
},
{
"pname": "System.Security.Cryptography.X509Certificates",
"version": "4.3.0",
"hash": "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0="
},
{
"pname": "System.Security.Principal",
"version": "4.3.0",
"hash": "sha256-rjudVUHdo8pNJg2EVEn0XxxwNo5h2EaYo+QboPkXlYk="
},
{
"pname": "System.Security.Principal.Windows",
"version": "4.3.0",
"hash": "sha256-mbdLVUcEwe78p3ZnB6jYsizNEqxMaCAWI3tEQNhRQAE="
},
{
"pname": "System.Text.Encoding",
"version": "4.3.0",
"hash": "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg="
},
{
"pname": "System.Text.Encoding.Extensions",
"version": "4.3.0",
"hash": "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc="
},
{
"pname": "System.Text.Json",
"version": "9.0.0",
"hash": "sha256-aM5Dh4okLnDv940zmoFAzRmqZre83uQBtGOImJpoIqk="
},
{
"pname": "System.Text.Json",
"version": "9.0.2",
"hash": "sha256-kftKUuGgZtF4APmp77U79ws76mEIi+R9+DSVGikA5y8="
},
{
"pname": "System.Text.RegularExpressions",
"version": "4.3.0",
"hash": "sha256-VLCk1D1kcN2wbAe3d0YQM/PqCsPHOuqlBY1yd2Yo+K0="
},
{
"pname": "System.Threading",
"version": "4.3.0",
"hash": "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc="
},
{
"pname": "System.Threading.Tasks",
"version": "4.3.0",
"hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w="
},
{
"pname": "System.Threading.Tasks.Extensions",
"version": "4.3.0",
"hash": "sha256-X2hQ5j+fxcmnm88Le/kSavjiGOmkcumBGTZKBLvorPc="
},
{
"pname": "System.Threading.ThreadPool",
"version": "4.3.0",
"hash": "sha256-wW0QdvssRoaOfQLazTGSnwYTurE4R8FxDx70pYkL+gg="
},
{
"pname": "System.Threading.Timer",
"version": "4.3.0",
"hash": "sha256-pmhslmhQhP32TWbBzoITLZ4BoORBqYk25OWbru04p9s="
},
{
"pname": "System.Xml.ReaderWriter",
"version": "4.3.0",
"hash": "sha256-QQ8KgU0lu4F5Unh+TbechO//zaAGZ4MfgvW72Cn1hzA="
},
{
"pname": "System.Xml.XDocument",
"version": "4.3.0",
"hash": "sha256-rWtdcmcuElNOSzCehflyKwHkDRpiOhJJs8CeQ0l1CCI="
}
]

View File

@@ -0,0 +1,43 @@
{
buildDotnetModule,
dotnetCorePackages,
emgucv,
fetchFromGitHub,
lib,
}:
buildDotnetModule rec {
pname = "UVtools";
version = "5.0.7";
src = fetchFromGitHub {
owner = "sn4k3";
repo = "UVtools";
rev = "v${version}";
hash = "sha256-QF+cGdz0Y5dreeKBlITX9z9PomLpcmlOQ5ft8/Sau2g=";
};
nugetDeps = ./deps.json;
dotnet-sdk = dotnetCorePackages.sdk_9_0;
dotnet-runtime = dotnetCorePackages.runtime_9_0;
runtimeDeps = [
emgucv
];
# available projects:
# - UVtools.Installer/UVtools.Installer.wixproj (needs WixToolset, not in nixpkgs)
# - UVtools.Core/UVtools.Core.csproj
# - UVtools.UI/UVtools.UI.csproj
# - Scripts/UVtools.ScriptSample/UVtools.ScriptSample.csproj
# - UVtools.AvaloniaControls/UVtools.AvaloniaControls.csproj
# - UVtools.Cmd/UVtools.Cmd.csproj
# TODO: install the UI, and maybe AvaloniaControls too
projectFile = "UVtools.Cmd/UVtools.Cmd.csproj";
passthru.updateScript = ./update.sh;
meta = {
description = "MSLA/DLP, file analysis, calibration, repair, conversion and manipulation";
maintainers = with lib.maintainers; [ colinsane ];
};
}

20
pkgs/by-name/uvtools/update.sh Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=./. -i bash -p curl jq common-updater-scripts
#shellcheck shell=bash
#
# TAKEN FROM <repo:nixos/nixpkgs:pkgs/by-name/ma/marksman/update.sh>
set -eu -o pipefail
version=$(curl -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
https://api.github.com/repos/sn4k3/UVtools/releases/latest | jq -e -r .tag_name)
old_version=$(nix-instantiate --eval -A uvtools.version | jq -e -r)
if [[ $version == "$old_version" ]]; then
echo "New version same as old version, nothing to do." >&2
exit 0
fi
update-source-version uvtools "${version/v/}"
$(nix-build -A uvtools.fetch-deps --no-out-link)

View File

@@ -1,6 +1,6 @@
{ mkVersionedHttpZim }: mkVersionedHttpZim {
owner = "other";
pname = "archlinux_en_all_maxi";
version = "2022-12";
hash = "sha256-Bj8AocoWTgDyjVlUSfDvNCMg6vKzOyJTFgY6qmRL7AY=";
version = "2025-02";
hash = "sha256-TWIChQ7ZN/FkeaAptLopEQPUny7HVAuuDNUuD1kumFQ=";
}

View File

@@ -1,5 +1,5 @@
{
"data": "ENC[AES256_GCM,data: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,iv:GMzdqF8GF8GdpkdnxqsVvqBu9ghUxnI9FuicaK5SpoA=,tag:qBx/TRO7fk1oYapd3/1YtA==,type:str]",
"data": "ENC[AES256_GCM,data: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,iv:icfqwBPi1Ee04fO3m+2yryoUwfpUdidilk5+WfEY7qA=,tag:nm1Xl6tv4sUXSQFUclc4cg==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
@@ -43,10 +43,10 @@
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwcXlNMlFUaWhXbmlPc0Ir\nT2hRd3BMQUZ1TkVkWGlrdjJ5ZnhPdWhPbTFBCmdzazV5bzV0aTNNaTFpaDlBOWU5\naUdBTFlEeWM5T1Q3UGhrZWdGZkVPUzQKLS0tIEloSFVJd2JCNmY0VkpqTGppRE1p\nQ2Mvekx0RWN5dlhxWmwwaDVnUUVDdFEKJgyAed3yBaIBwfxypG7RKV+u80SiQV89\ntU4YMw0j7GvnkVhPenB8q0w3yrslCh35GDvKkaMpfp8jVFIpcrRXtA==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-11-20T05:10:34Z",
"mac": "ENC[AES256_GCM,data:XhcN6ewXZPnKaDttnTdbE6tqio7avijA8Ulz024YVpLkIa/iYSBltKLJ7tK0CqNYdKZted3RFTGLRGGbZMTIZRgvCDCUngGb7NAgAvyHfJi2Oy+YRTBnLyMB2JEP8C638wlhYFqZ2qbuBsTshE709CKnI2LNcuI0NTqxt45ffoE=,iv:SnwgyZunxvJkHsgjhc0O+yhmePK3044Q4VBeUSgkSMk=,tag:lepNyBU/gDCI9y93yYWG0Q==,type:str]",
"lastmodified": "2025-02-22T04:49:49Z",
"mac": "ENC[AES256_GCM,data:zqejkScrdOKU5SesJ+26NPeY8xAdqgVZ5/fe7Tm9nMhdGrYzZRFGwinyRUUfcYHNPotisNiq1FCleoHOy7rimPJXLvXWgPQcoflDjUG85x5fVu0SLSJwb87TYxfC2HSvaAHmZ4lDfybt2KIBCixYOdQH2/lK9l8HYJzDZzUYseE=,iv:BXqOH3vABlz70SAD7YoaHa5VaD6ZPuFmEvKp+ks06ts=,tag:HqK1GgDQM+4adVFseZ43ow==,type:str]",
"pgp": null,
"unencrypted_suffix": "_unencrypted",
"version": "3.9.1"
"version": "3.9.4"
}
}