Compare commits
89 Commits
2025-01-30
...
2025-03-02
Author | SHA1 | Date | |
---|---|---|---|
0448603731 | |||
989f321c53 | |||
64a2d60d89 | |||
ccd343f0b6 | |||
4be7222f98 | |||
e8ab744bcc | |||
cf001326cd | |||
e93d04c09e | |||
df0e072645 | |||
5f8f8a44ba | |||
de8a544acd | |||
06add1cc55 | |||
fc40b9671e | |||
68fc360586 | |||
5f79ddde03 | |||
13f38d6fd7 | |||
3b44f05af0 | |||
79d567cd01 | |||
6bb6e4319c | |||
4c72d1af8e | |||
9b0c90be7d | |||
3f7000f2f8 | |||
ffb08b1195 | |||
4fd4f6fa2f | |||
9e6eb1eb94 | |||
33108ea9e1 | |||
8153e5e033 | |||
04d1da8e39 | |||
1aad4622a7 | |||
6f6851f565 | |||
acb00e7f8a | |||
621cc83740 | |||
d399a824e4 | |||
ec77f8f6b9 | |||
d5226957bf | |||
0b1c94d4a3 | |||
64f23282e2 | |||
a530ee8ae4 | |||
87c58c312d | |||
dad4dd1860 | |||
b8e2205a15 | |||
9029127ea8 | |||
4134525019 | |||
e4fe5e0cd4 | |||
dc0ad5ed20 | |||
e4ba0d3c83 | |||
e7ce6a2ef6 | |||
16f4afbc60 | |||
21cb18885c | |||
a636e19198 | |||
0327d7072a | |||
396efcd357 | |||
79b4e5a652 | |||
233ee5be43 | |||
da2217f194 | |||
ab55adb52d | |||
d419a3cb08 | |||
ba38fbc4e5 | |||
925c0faa05 | |||
8ec309e33f | |||
bec429a04d | |||
77f62d247f | |||
f6cddfb7e8 | |||
290fd281b9 | |||
690abc305f | |||
e6d028b01d | |||
9733f8af7a | |||
203aa4b470 | |||
6542919831 | |||
5d42f5a6e5 | |||
a5054deef0 | |||
3ed2d08a77 | |||
e2775ea266 | |||
d077036bb6 | |||
7a149d8f2f | |||
44f05916f2 | |||
5a88a10a19 | |||
ac899b614b | |||
f1c7c32e84 | |||
9399fd0254 | |||
cb1a72cb71 | |||
6d5c75b38c | |||
6ba9743f05 | |||
2ffaf1f3d8 | |||
3dea4370d7 | |||
cebedc43c7 | |||
14d5910e79 | |||
45526bd583 | |||
a42bd18d14 |
1
TODO.md
1
TODO.md
@@ -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
|
||||
|
@@ -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.
|
||||
|
@@ -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; [
|
||||
|
@@ -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;
|
||||
|
@@ -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})
|
||||
|
@@ -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
|
||||
@@ -106,13 +108,13 @@ let
|
||||
(fromDb "omny.fm/shows/the-dollop-with-dave-anthony-and-gareth-reynolds") # The Dollop history/comedy
|
||||
(fromDb "omny.fm/shows/weird-little-guys") # Cool Zone Media
|
||||
(fromDb "originstories.libsyn.com" // uncat)
|
||||
(fromDb "politicspoliticspolitics.com" // pol) # don't judge me. Justin Robert Young.
|
||||
(fromDb "podcast.ergaster.org/@flintandsilicon" // tech) # Thib's podcast: public interest tech, gnome, etc: <https://fed.uninsane.org/users/$ALLO9MZ5g5CsQTCBH6>
|
||||
(fromDb "politicalorphanage.libsyn.com" // pol)
|
||||
(fromDb "reverseengineering.libsyn.com/rss" // tech) # UnNamed Reverse Engineering Podcast
|
||||
(fromDb "rss.acast.com/ft-tech-tonic" // tech) # Financial Time's: Tech Tonic
|
||||
(fromDb "rss.art19.com/the-portal" // rat) # Eric Weinstein
|
||||
(fromDb "seattlenice.buzzsprout.com" // pol) # Seattle Nice
|
||||
(fromDb "sites.libsyn.com/438684" // humor) # Quorators - digging up *weird* Quota questions
|
||||
(fromDb "speedboatdope.com" // pol) # Chapo Trap House (premium feed)
|
||||
(fromDb "srslywrong.com" // pol)
|
||||
(fromDb "sharkbytes.transistor.fm" // tech) # Wireshark Podcast o_0
|
||||
@@ -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
|
||||
@@ -138,6 +139,7 @@ let
|
||||
# (fromDb "feeds.simplecast.com/xKJ93w_w" // uncat) # Atlas Obscura
|
||||
# (fromDb "lastweekinai.com" // tech) # Last Week in AI
|
||||
# (fromDb "mintcast.org" // tech)
|
||||
# (fromDb "politicspoliticspolitics.com" // pol) # don't judge me. Justin Robert Young.
|
||||
# (fromDb "podcast.posttv.com/itunes/post-reports.xml" // pol)
|
||||
# (fromDb "podcast.sustainoss.org" // tech) # "Sustainable tech", only... it somehow manages to avoid any tech which is actually sustainable, and most of the time doesn't even talk about Open Source Software (!). normie/surface-level/"feel good"
|
||||
# (fromDb "podcast.thelinuxexp.com" // tech) # low-brow linux/foss PR announcements
|
||||
@@ -147,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>
|
||||
@@ -274,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")
|
||||
@@ -283,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?
|
||||
];
|
||||
|
@@ -1,11 +1,14 @@
|
||||
# debugging:
|
||||
# - `man named`
|
||||
# - `man named.conf`
|
||||
# - `systemctl stop bind`
|
||||
# - `sudo /nix/store/0zpdy93sd3fgbxgvf8dsxhn8fbbya8d2-bind-9.18.28/sbin/named -g -u named -4 -c /nix/store/f1mp0myzmfms71h9vinwxpn2i9362a9a-named.conf`
|
||||
# - `-g` = don't fork
|
||||
# - `-u named` = start as superuser (to claim port 53), then drop to user `named`
|
||||
{ config, lib, ... }:
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
hostCfg = config.sane.hosts.by-name."${config.networking.hostName}";
|
||||
bindCfg = config.services.bind;
|
||||
in
|
||||
{
|
||||
config = lib.mkIf (!config.sane.services.hickory-dns.asSystemResolver) {
|
||||
@@ -53,5 +56,53 @@ in
|
||||
networking.resolvconf.useLocalResolver = false; #< we manage resolvconf explicitly, above
|
||||
|
||||
# TODO: how to exempt `pool.ntp.org` from DNSSEC checks, as i did when using unbound?
|
||||
|
||||
# allow runtime insertion of zones or other config changes:
|
||||
# add your supplemental config as a toplevel file in /run/named/dhcp-configs/, then `systemctl restart bind`
|
||||
services.bind.extraConfig = ''
|
||||
include "/run/named/dhcp-configs.conf";
|
||||
'';
|
||||
services.bind.extraOptions = ''
|
||||
// we can't guarantee that all forwarders support DNSSEC,
|
||||
// and as of 2025-01-30 BIND9 gives no way to disable DNSSEC per-forwarder/zone,
|
||||
// so just disable it globally
|
||||
dnssec-validation no;
|
||||
'';
|
||||
# re-implement the nixos default bind config, but without `options { forwarders { }; };`,
|
||||
# as having an empty `forwarders` at the top-level prevents me from forwarding the `.` zone in a separate statement
|
||||
# (which i want to do to allow sane-vpn to forward all DNS).
|
||||
services.bind.configFile = pkgs.writeText "named.conf" ''
|
||||
include "/etc/bind/rndc.key";
|
||||
controls {
|
||||
inet 127.0.0.1 allow {localhost;} keys {"rndc-key";};
|
||||
};
|
||||
|
||||
acl cachenetworks { ${lib.concatMapStrings (entry: " ${entry}; ") bindCfg.cacheNetworks} };
|
||||
acl badnetworks { ${lib.concatMapStrings (entry: " ${entry}; ") bindCfg.blockedNetworks} };
|
||||
|
||||
options {
|
||||
listen-on { ${lib.concatMapStrings (entry: " ${entry}; ") bindCfg.listenOn} };
|
||||
listen-on-v6 { ${lib.concatMapStrings (entry: " ${entry}; ") bindCfg.listenOnIpv6} };
|
||||
allow-query-cache { cachenetworks; };
|
||||
blackhole { badnetworks; };
|
||||
//v disable top-level forwards, so that i can do forwarding more generically in `zone FOO { ... }` directives.
|
||||
// forward ${bindCfg.forward};
|
||||
// forwarders { ${lib.concatMapStrings (entry: " ${entry}; ") bindCfg.forwarders} };
|
||||
directory "${bindCfg.directory}";
|
||||
pid-file "/run/named/named.pid";
|
||||
${bindCfg.extraOptions}
|
||||
};
|
||||
|
||||
${bindCfg.extraConfig}
|
||||
'';
|
||||
|
||||
systemd.services.bind.serviceConfig.ExecStartPre = pkgs.writeShellScript "named-generate-config" ''
|
||||
mkdir -p /run/named/dhcp-configs
|
||||
chmod g+w /run/named/dhcp-configs
|
||||
echo "// FILE GENERATED BY bind.service's ExecStartPre: CHANGES TO THIS FILE WILL BE OVERWRITTEN" > /run/named/dhcp-configs.conf
|
||||
for c in $(ls /run/named/dhcp-configs/); do
|
||||
cat "/run/named/dhcp-configs/$c" >> /run/named/dhcp-configs.conf
|
||||
done
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
@@ -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
|
||||
@@ -284,7 +284,9 @@ in
|
||||
guiBaseApps = declPackageSet [
|
||||
# "abaddon" # discord client
|
||||
"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
|
||||
@@ -326,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
|
||||
@@ -379,11 +381,10 @@ in
|
||||
"pcTuiApps"
|
||||
####
|
||||
"audacity"
|
||||
# "blanket" # ambient noise generator
|
||||
"brave" # for the integrated wallet -- as a backup
|
||||
# "cantata" # music player (mpd frontend)
|
||||
# "chromium" # chromium takes hours to build. brave is chromium-based, distributed in binary form, so prefer it.
|
||||
# "cups"
|
||||
"cups"
|
||||
"discord" # x86-only
|
||||
# "electrum"
|
||||
"element-desktop"
|
||||
@@ -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;
|
||||
|
13
hosts/common/programs/blanket.nix
Normal file
13
hosts/common/programs/blanket.nix
Normal 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;
|
||||
};
|
||||
}
|
@@ -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
|
||||
[{
|
||||
|
@@ -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
|
||||
'';
|
||||
|
13
hosts/common/programs/cargo.nix
Normal file
13
hosts/common/programs/cargo.nix
Normal 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" ];
|
||||
};
|
||||
}
|
19
hosts/common/programs/confy.nix
Normal file
19
hosts/common/programs/confy.nix
Normal 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
|
||||
];
|
||||
};
|
||||
}
|
@@ -11,11 +11,12 @@ let
|
||||
in
|
||||
{
|
||||
sane.programs.cups = {
|
||||
sandbox.method = null; #< TODO: sandbox
|
||||
suggestedPrograms = [
|
||||
"system-config-printer"
|
||||
];
|
||||
};
|
||||
sane.programs.system-config-printer = {};
|
||||
sane.programs.system-config-printer.sandbox.method = null; #< TODO: sandbox
|
||||
|
||||
services.printing = lib.mkIf cfg.enabled {
|
||||
enable = true;
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
};
|
||||
}
|
||||
|
@@ -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"
|
||||
];
|
||||
|
@@ -1,3 +1,4 @@
|
||||
# TODO: get printing to work under papers. until then, use evince if you need to print!
|
||||
{ ... }:
|
||||
{
|
||||
sane.programs.papers = {
|
||||
|
@@ -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";
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
}
|
||||
|
@@ -20,6 +20,7 @@
|
||||
"feedbackd" # moby, so `fbcli` can control vibrator and LEDs
|
||||
"input" # for /dev/input/<xyz>... TODO:is this still necessary?
|
||||
"media" # servo
|
||||
"named" # for `sane-vpn {up,down}`
|
||||
"networkmanager"
|
||||
"nixbuild"
|
||||
"plugdev" # desko, for ZSA/QMK/udev
|
||||
|
@@ -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)
|
||||
};
|
||||
}
|
||||
|
@@ -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")
|
||||
|
||||
|
@@ -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
|
||||
[]
|
||||
);
|
||||
|
@@ -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
|
||||
}
|
9
modules/data/feeds/sources/malicious.life/default.json
Normal file
9
modules/data/feeds/sources/malicious.life/default.json
Normal 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
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"description": "Comedians Clare O'Kane, Alex Ptak, and Jeremy Kaplowitz explore the mysterious land of Quora.com to answer life's questions.",
|
||||
"is_podcast": true,
|
||||
"site_name": "",
|
||||
"site_url": "",
|
||||
"title": "Quorators",
|
||||
"url": "https://feeds.libsyn.com/438684/rss",
|
||||
"velocity": 0.238
|
||||
}
|
@@ -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,
|
||||
|
@@ -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";
|
||||
|
@@ -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 = ''
|
||||
|
@@ -178,6 +178,46 @@ in with final; {
|
||||
# shell = runtimeShell;
|
||||
# };
|
||||
|
||||
blanket = prev.blanket.override {
|
||||
blueprint-compiler = wrapBlueprint [
|
||||
buildPackages.gdk-pixbuf
|
||||
buildPackages.glib
|
||||
buildPackages.graphene
|
||||
buildPackages.gtk4
|
||||
buildPackages.harfbuzz
|
||||
buildPackages.libadwaita
|
||||
buildPackages.pango
|
||||
];
|
||||
};
|
||||
|
||||
# 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;
|
||||
@@ -290,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;
|
||||
@@ -415,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"
|
||||
@@ -435,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 ++ [
|
||||
@@ -595,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"
|
||||
@@ -889,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;
|
||||
}
|
||||
|
@@ -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 {
|
||||
|
117
pkgs/by-name/emgucv/package.nix
Normal file
117
pkgs/by-name/emgucv/package.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@@ -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 = [
|
||||
|
@@ -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
|
||||
|
@@ -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; {
|
||||
|
@@ -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 = [
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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 = [
|
||||
|
@@ -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 = [
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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:
|
||||
|
@@ -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";
|
||||
|
@@ -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";
|
||||
|
@@ -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";
|
||||
|
10
pkgs/by-name/ollamaPackages/deepseek-r1-14b.nix
Normal file
10
pkgs/by-name/ollamaPackages/deepseek-r1-14b.nix
Normal 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=";
|
||||
}
|
10
pkgs/by-name/ollamaPackages/deepseek-r1-1_5b.nix
Normal file
10
pkgs/by-name/ollamaPackages/deepseek-r1-1_5b.nix
Normal 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=";
|
||||
}
|
10
pkgs/by-name/ollamaPackages/deepseek-r1-32b.nix
Normal file
10
pkgs/by-name/ollamaPackages/deepseek-r1-32b.nix
Normal 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=";
|
||||
}
|
10
pkgs/by-name/ollamaPackages/deepseek-r1-671b.nix
Normal file
10
pkgs/by-name/ollamaPackages/deepseek-r1-671b.nix
Normal 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=";
|
||||
}
|
10
pkgs/by-name/ollamaPackages/deepseek-r1-7b.nix
Normal file
10
pkgs/by-name/ollamaPackages/deepseek-r1-7b.nix
Normal 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=";
|
||||
}
|
12
pkgs/by-name/ollamaPackages/deepseek-r1-abliterated-14b.nix
Normal file
12
pkgs/by-name/ollamaPackages/deepseek-r1-abliterated-14b.nix
Normal 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=";
|
||||
}
|
12
pkgs/by-name/ollamaPackages/deepseek-r1-abliterated-32b.nix
Normal file
12
pkgs/by-name/ollamaPackages/deepseek-r1-abliterated-32b.nix
Normal 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=";
|
||||
}
|
12
pkgs/by-name/ollamaPackages/deepseek-r1-abliterated-70b.nix
Normal file
12
pkgs/by-name/ollamaPackages/deepseek-r1-abliterated-70b.nix
Normal 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=";
|
||||
}
|
13
pkgs/by-name/ollamaPackages/dolphin-mistral-7b.nix
Normal file
13
pkgs/by-name/ollamaPackages/dolphin-mistral-7b.nix
Normal 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=";
|
||||
}
|
13
pkgs/by-name/ollamaPackages/dolphin-mixtral-8x7b.nix
Normal file
13
pkgs/by-name/ollamaPackages/dolphin-mixtral-8x7b.nix
Normal 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=";
|
||||
}
|
@@ -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";
|
||||
|
@@ -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";
|
||||
|
13
pkgs/by-name/ollamaPackages/llama3_2-uncensored-3b.nix
Normal file
13
pkgs/by-name/ollamaPackages/llama3_2-uncensored-3b.nix
Normal 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=";
|
||||
}
|
10
pkgs/by-name/ollamaPackages/llama3_3-70b.nix
Normal file
10
pkgs/by-name/ollamaPackages/llama3_3-70b.nix
Normal 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=";
|
||||
}
|
12
pkgs/by-name/ollamaPackages/llama3_3-abliterated-70b.nix
Normal file
12
pkgs/by-name/ollamaPackages/llama3_3-abliterated-70b.nix
Normal 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=";
|
||||
}
|
@@ -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";
|
||||
|
@@ -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";
|
||||
|
@@ -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";
|
||||
|
@@ -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}";
|
||||
};
|
||||
}
|
||||
|
@@ -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 { };
|
||||
|
@@ -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";
|
||||
|
@@ -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";
|
||||
|
12
pkgs/by-name/ollamaPackages/qwen2_5-abliterate-14b.nix
Normal file
12
pkgs/by-name/ollamaPackages/qwen2_5-abliterate-14b.nix
Normal 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=";
|
||||
}
|
12
pkgs/by-name/ollamaPackages/qwen2_5-abliterate-32b.nix
Normal file
12
pkgs/by-name/ollamaPackages/qwen2_5-abliterate-32b.nix
Normal 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=";
|
||||
}
|
12
pkgs/by-name/ollamaPackages/qwen2_5-abliterate-7b.nix
Normal file
12
pkgs/by-name/ollamaPackages/qwen2_5-abliterate-7b.nix
Normal 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=";
|
||||
}
|
@@ -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";
|
||||
|
12
pkgs/by-name/ollamaPackages/qwq-abliterated-32b.nix
Normal file
12
pkgs/by-name/ollamaPackages/qwq-abliterated-32b.nix
Normal 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=";
|
||||
}
|
@@ -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 = ''
|
||||
|
@@ -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()
|
||||
|
@@ -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 \
|
||||
|
@@ -151,11 +151,6 @@ def get_dns_resolvers_for_dev(dev: str) -> list[str]:
|
||||
"""
|
||||
passt/pasta can't proxy to e.g. 127.0.0.53, but it can to 127.0.0.1 and anything routable by the device
|
||||
"""
|
||||
nameservers = nameservers_from_resolvconf(RESOLVCONF)
|
||||
if nameservers == []:
|
||||
nameservers = [ "127.0.0.1 "] #< libc default if unspecified
|
||||
if "127.0.0.1" in nameservers:
|
||||
return [ "127.0.0.1" ]
|
||||
|
||||
# output looks like IP4.DNS[1]:192.168.0.1
|
||||
nmcli_stdout = subprocess.check_output([
|
||||
@@ -169,8 +164,37 @@ def get_dns_resolvers_for_dev(dev: str) -> list[str]:
|
||||
_fname, ns = line.split(":")
|
||||
nameservers.append(ns)
|
||||
|
||||
if nameservers == []:
|
||||
nameservers = nameservers_from_resolvconf(RESOLVCONF)
|
||||
if nameservers == []:
|
||||
nameservers = [ "127.0.0.1 "] #< libc default if unspecified
|
||||
|
||||
# old logic from when i was using systemd-resolved (127.0.0.53, which pasta couldn't reach). safe to remove?
|
||||
# if "127.0.0.1" in nameservers:
|
||||
# return [ "127.0.0.1" ]
|
||||
|
||||
return nameservers
|
||||
|
||||
def get_addr_v4_for_dev(dev: str) -> str | None:
|
||||
# output looks like IP4.ADDRESS[1]:192.168.1.72
|
||||
nmcli_stdout = subprocess.check_output([
|
||||
"nmcli", "-t", "-f", "IP4.ADDRESS", "device", "show", dev
|
||||
]).decode("utf-8")
|
||||
addrs = []
|
||||
for line in nmcli_stdout.splitlines():
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
_fname, addr = line.split(":")
|
||||
if not addr:
|
||||
continue
|
||||
if "/" in addr:
|
||||
addr, _subnet = addr.split("/")
|
||||
if not addr:
|
||||
continue
|
||||
addrs.append(addr)
|
||||
|
||||
return addrs[0] if len(addrs) else None
|
||||
|
||||
def get_connected_networks() -> list[str]:
|
||||
# output looks like:
|
||||
@@ -211,8 +235,9 @@ def get_vpn(vpn_name: str) -> VpnConfig:
|
||||
return load_vpns()[vpn_name]
|
||||
elif vpn_name == "none":
|
||||
dev = get_default_dev()
|
||||
addr_v4 = get_addr_v4_for_dev(dev)
|
||||
dns = get_dns_resolvers_for_dev(dev)
|
||||
return VpnConfig(dev=dev or "all", dns=dns)
|
||||
return VpnConfig(dev=dev or "all", addr_v4=addr_v4, dns=dns)
|
||||
elif vpn_name == "unmetered":
|
||||
for dev in get_connected_networks():
|
||||
dns = get_dns_resolvers_for_dev(dev)
|
||||
@@ -245,9 +270,10 @@ def vpn_do(config: VpnConfig, cmd: list[str]) -> None:
|
||||
# exec instead of subprocess so that (hopefully) the process inherits stdin/stdout.
|
||||
os.execvp("bunpen", wrapped_cmd)
|
||||
|
||||
def vpn_toggle(config: VpnConfig, dir_: ToggleDir) -> None:
|
||||
print("old IP address ...")
|
||||
_ = subprocess.run(["sane-ip-check", "--no-upnp", "--retry-duration", "2"])
|
||||
def vpn_toggle(config: VpnConfig, dir_: ToggleDir, do_ip_check: bool = True) -> None:
|
||||
if do_ip_check:
|
||||
print("old IP address ...")
|
||||
_ = subprocess.run(["sane-ip-check", "--no-upnp", "--retry-duration", "2"])
|
||||
|
||||
if config.priority_main and config.priority_fwmark:
|
||||
verb = {
|
||||
@@ -276,10 +302,36 @@ def vpn_toggle(config: VpnConfig, dir_: ToggleDir) -> None:
|
||||
|
||||
dns_toggle(config.dns, dir_)
|
||||
|
||||
print("new IP address ...")
|
||||
subprocess.check_call(["sane-ip-check", "--no-upnp"])
|
||||
if do_ip_check:
|
||||
print("new IP address ...")
|
||||
subprocess.check_call(["sane-ip-check", "--no-upnp"])
|
||||
|
||||
def dns_toggle(dns: list[str], dir_: ToggleDir) -> None:
|
||||
def dns_toggle_bind(dns: list[str], dir_: ToggleDir) -> None:
|
||||
if dir_ == ToggleDir.Up:
|
||||
formatted_nameservers = "\n".join(f"{ns};" for ns in dns)
|
||||
text = f'''
|
||||
zone . {{
|
||||
//v XXX(2025-01-30): BIND9 doesn't allow dnssec-validation per-zone. put this in toplevel `options` instead.
|
||||
// dnssec-validation no; // compatibility: many network-specific DNS servers fail DNSSEC, by design
|
||||
type forward;
|
||||
forward first;
|
||||
forwarders {{
|
||||
{formatted_nameservers}
|
||||
}};
|
||||
}};
|
||||
'''
|
||||
elif dir_ == ToggleDir.Down:
|
||||
text = ""
|
||||
|
||||
if not os.path.isdir("/run/named/dhcp-configs"):
|
||||
logger.info("not restarting bind because it appears to not be in use")
|
||||
return
|
||||
|
||||
with open("/run/named/dhcp-configs/210-sane-vpn.conf", "w") as f:
|
||||
f.write(text)
|
||||
subprocess.check_call([ "systemctl", "restart", "bind" ])
|
||||
|
||||
def dns_toggle_hickory(dns: list[str], dir_: ToggleDir) -> None:
|
||||
if dir_ == ToggleDir.Up:
|
||||
formatted_nameservers = ",\n".join(
|
||||
'{ socket_addr = "{ns}:53", protocol = "udp", trust_nx_responses = false }'.replace("{ns}", ns)
|
||||
@@ -304,6 +356,10 @@ stores = {{ type = "forward", name_servers = [
|
||||
f.write(text)
|
||||
subprocess.check_call([ "systemctl", "restart", "hickory-dns-localhost" ])
|
||||
|
||||
def dns_toggle(dns: list[str], dir_: ToggleDir) -> None:
|
||||
dns_toggle_bind(dns, dir_)
|
||||
dns_toggle_hickory(dns, dir_)
|
||||
|
||||
def main():
|
||||
logging.basicConfig()
|
||||
logging.getLogger().setLevel(logging.INFO)
|
||||
@@ -336,18 +392,18 @@ def main():
|
||||
|
||||
logger.debug(f"sane-vpn {subcommand} region={region} ...")
|
||||
|
||||
do_ip_check = region != "none"
|
||||
vpn_config = get_vpn(region)
|
||||
|
||||
if args.no_proxy_dns:
|
||||
vpn_config.dns = []
|
||||
|
||||
|
||||
if subcommand == "do":
|
||||
vpn_do(vpn_config, args.command)
|
||||
elif subcommand == "down":
|
||||
vpn_toggle(vpn_config, ToggleDir.Down)
|
||||
vpn_toggle(vpn_config, ToggleDir.Down, do_ip_check=do_ip_check)
|
||||
elif subcommand == "up":
|
||||
vpn_toggle(vpn_config, ToggleDir.Up)
|
||||
vpn_toggle(vpn_config, ToggleDir.Up, do_ip_check=do_ip_check)
|
||||
else:
|
||||
print(parser.usage)
|
||||
sys.exit(1)
|
||||
|
@@ -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?)
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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" ];
|
||||
|
702
pkgs/by-name/uvtools/deps.json
Normal file
702
pkgs/by-name/uvtools/deps.json
Normal 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="
|
||||
}
|
||||
]
|
43
pkgs/by-name/uvtools/package.nix
Normal file
43
pkgs/by-name/uvtools/package.nix
Normal 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
20
pkgs/by-name/uvtools/update.sh
Executable 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)
|
@@ -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=";
|
||||
}
|
||||
|
@@ -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"
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user