Merge master into haskell-updates
This commit is contained in:
commit
8de0afeb83
@ -4745,6 +4745,12 @@
|
||||
githubId = 4956158;
|
||||
name = "Robin Stumm";
|
||||
};
|
||||
DerRockWolf = {
|
||||
email = "git@rockwolf.eu";
|
||||
github = "DerRockWolf";
|
||||
githubId = 50499906;
|
||||
name = "DerRockWolf";
|
||||
};
|
||||
DerTim1 = {
|
||||
email = "tim.digel@active-group.de";
|
||||
github = "DerTim1";
|
||||
@ -4826,6 +4832,12 @@
|
||||
github = "dfithian";
|
||||
githubId = 8409320;
|
||||
};
|
||||
dflores = {
|
||||
email = "dflores.country455@passinbox.com";
|
||||
name = "David Flores";
|
||||
github = "dflores1";
|
||||
githubId = 8538265;
|
||||
};
|
||||
dfordivam = {
|
||||
email = "dfordivam+nixpkgs@gmail.com";
|
||||
github = "dfordivam";
|
||||
@ -6795,6 +6807,15 @@
|
||||
githubId = 21362942;
|
||||
name = "Fugi";
|
||||
};
|
||||
funkeleinhorn = {
|
||||
email = "git@funkeleinhorn.com";
|
||||
github = "funkeleinhorn";
|
||||
githubId = 103313934;
|
||||
name = "Funkeleinhorn";
|
||||
keys = [{
|
||||
fingerprint = "689D 1C81 DA0D 1EB2 F029 D24E C7BE A25A 0A33 5A72";
|
||||
}];
|
||||
};
|
||||
fusion809 = {
|
||||
email = "brentonhorne77@gmail.com";
|
||||
github = "fusion809";
|
||||
@ -7459,6 +7480,13 @@
|
||||
githubId = 201997;
|
||||
name = "Eric Seidel";
|
||||
};
|
||||
grimmauld = {
|
||||
name = "Sören Bender";
|
||||
email = "soeren@benjos.de";
|
||||
github = "LordGrimmauld";
|
||||
githubId = 49513131;
|
||||
matrix = "@grimmauld:grimmauld.de";
|
||||
};
|
||||
grindhold = {
|
||||
name = "grindhold";
|
||||
email = "grindhold+nix@skarphed.org";
|
||||
@ -7788,6 +7816,12 @@
|
||||
matrix = "@chris:netsoj.nl";
|
||||
name = "Chris Josten";
|
||||
};
|
||||
hennk = {
|
||||
email = "henning.kiel@gmail.com";
|
||||
github = "hennk";
|
||||
githubId = 328259;
|
||||
name = "Henning Kiel";
|
||||
};
|
||||
henrikolsson = {
|
||||
email = "henrik@fixme.se";
|
||||
github = "henrikolsson";
|
||||
@ -8666,6 +8700,12 @@
|
||||
github = "j4m3s-s";
|
||||
githubId = 9413812;
|
||||
};
|
||||
jab = {
|
||||
name = "Joshua Bronson";
|
||||
email = "jabronson@gmail.com";
|
||||
github = "jab";
|
||||
githubId = 64992;
|
||||
};
|
||||
jacbart = {
|
||||
name = "Jack Bartlett";
|
||||
email = "jacbart@gmail.com";
|
||||
@ -10329,6 +10369,12 @@
|
||||
githubId = 691290;
|
||||
name = "Keshav Kini";
|
||||
};
|
||||
kintrix = {
|
||||
email = "kintrix007@proton.me";
|
||||
github = "kintrix007";
|
||||
githubId = 60898798;
|
||||
name = "kintrix";
|
||||
};
|
||||
kinzoku = {
|
||||
email = "kinzokudev4869@gmail.com";
|
||||
github = "kinzoku-dev";
|
||||
@ -11497,6 +11543,15 @@
|
||||
githubId = 3717454;
|
||||
name = "Lucas Bergman";
|
||||
};
|
||||
lucas-deangelis = {
|
||||
email = "deangelis.lucas@outlook.com";
|
||||
github = "lucas-deangelis";
|
||||
githubId = 55180995;
|
||||
name = "Lucas De Angelis";
|
||||
keys = [{
|
||||
fingerprint = "3C8B D3AD 93BB 1F36 B8FF 30BD 8627 E5ED F74B 5BF4";
|
||||
}];
|
||||
};
|
||||
lucasew = {
|
||||
email = "lucas59356@gmail.com";
|
||||
github = "lucasew";
|
||||
@ -12495,6 +12550,12 @@
|
||||
fingerprint = "D709 03C8 0BE9 ACDC 14F0 3BFB 77BF E531 397E DE94";
|
||||
}];
|
||||
};
|
||||
mdorman = {
|
||||
email = "mdorman@jaunder.io";
|
||||
github = "mdorman";
|
||||
githubId = 333344;
|
||||
name = "Michael Alan Dorman";
|
||||
};
|
||||
mdr = {
|
||||
email = "MattRussellUK@gmail.com";
|
||||
github = "mdr";
|
||||
@ -12526,6 +12587,12 @@
|
||||
githubId = 1631737;
|
||||
name = "Mikhail Medvedev";
|
||||
};
|
||||
meebey = {
|
||||
email = "meebey@meebey.net";
|
||||
github = "meebey";
|
||||
githubId = 318066;
|
||||
name = "Mirco Bauer";
|
||||
};
|
||||
megheaiulian = {
|
||||
email = "iulian.meghea@gmail.com";
|
||||
github = "megheaiulian";
|
||||
|
@ -32,6 +32,11 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- Julia environments can now be built with arbitrary packages from the ecosystem using the `.withPackages` function. For example: `julia.withPackages ["Plots"]`.
|
||||
|
||||
- The PipeWire and WirePlumber modules have removed support for using
|
||||
`environment.etc."pipewire/..."` and `environment.etc."wireplumber/..."`.
|
||||
Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for PipeWire and
|
||||
`services.pipewire.wireplumber.configPackages` for WirePlumber instead."
|
||||
|
||||
- A new option `systemd.sysusers.enable` was added. If enabled, users and
|
||||
groups are created with systemd-sysusers instead of with a custom perl script.
|
||||
|
||||
@ -141,6 +146,9 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||
|
||||
- The `power.ups` module now generates `upsd.conf`, `upsd.users` and `upsmon.conf` automatically from a set of new configuration options. This breaks compatibility with existing `power.ups` setups where these files were created manually. Back up these files before upgrading NixOS.
|
||||
|
||||
- `programs.nix-ld.libraries` no longer sets `baseLibraries` via the option's default but in config and now merges any additional libraries with the default ones.
|
||||
This means that `lib.mkForce` must be used to clear the list of default libraries.
|
||||
|
||||
- `pdns` was updated to version [v4.9.x](https://doc.powerdns.com/authoritative/changelog/4.9.html), which introduces breaking changes. Check out the [Upgrade Notes](https://doc.powerdns.com/authoritative/upgrading.html#to-4-9-0) for details.
|
||||
|
||||
- `unrar` was updated to v7. See [changelog](https://www.rarlab.com/unrar7notes.htm) for more information.
|
||||
@ -441,6 +449,10 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||
|
||||
- `nextcloud-setup.service` no longer changes the group of each file & directory inside `/var/lib/nextcloud/{config,data,store-apps}` if one of these directories has the wrong owner group. This was part of transitioning the group used for `/var/lib/nextcloud`, but isn't necessary anymore.
|
||||
|
||||
- `services.kavita` now uses the freeform option `services.kavita.settings` for the application settings file.
|
||||
The options `services.kavita.ipAdresses` and `services.kavita.port` now exist at `services.kavita.settings.IpAddresses`
|
||||
and `services.kavita.settings.IpAddresses`.
|
||||
|
||||
- The `krb5` module has been rewritten and moved to `security.krb5`, moving all options but `security.krb5.enable` and `security.krb5.package` into `security.krb5.settings`.
|
||||
|
||||
- Gitea 1.21 upgrade has several breaking changes, including:
|
||||
|
@ -1250,6 +1250,5 @@ class Machine:
|
||||
check_return=False,
|
||||
check_output=False,
|
||||
)
|
||||
self.wait_for_console_text(r"systemd\[1\]:.*Switching root\.")
|
||||
self.connected = False
|
||||
self.connect()
|
||||
|
@ -193,6 +193,7 @@
|
||||
./programs/gnome-disks.nix
|
||||
./programs/gnome-terminal.nix
|
||||
./programs/gnupg.nix
|
||||
./programs/goldwarden.nix
|
||||
./programs/gpaste.nix
|
||||
./programs/gphoto2.nix
|
||||
./programs/haguichi.nix
|
||||
@ -1107,6 +1108,11 @@
|
||||
./services/networking/rpcbind.nix
|
||||
./services/networking/rxe.nix
|
||||
./services/networking/sabnzbd.nix
|
||||
./services/networking/scion/scion.nix
|
||||
./services/networking/scion/scion-control.nix
|
||||
./services/networking/scion/scion-daemon.nix
|
||||
./services/networking/scion/scion-dispatcher.nix
|
||||
./services/networking/scion/scion-router.nix
|
||||
./services/networking/seafile.nix
|
||||
./services/networking/searx.nix
|
||||
./services/networking/shadowsocks.nix
|
||||
|
50
nixos/modules/programs/goldwarden.nix
Normal file
50
nixos/modules/programs/goldwarden.nix
Normal file
@ -0,0 +1,50 @@
|
||||
{ lib, config, pkgs, ... }:
|
||||
let
|
||||
cfg = config.programs.goldwarden;
|
||||
in
|
||||
{
|
||||
options.programs.goldwarden = {
|
||||
enable = lib.mkEnableOption "Goldwarden";
|
||||
package = lib.mkPackageOption pkgs "goldwarden" {};
|
||||
useSshAgent = lib.mkEnableOption "Goldwarden's SSH Agent" // { default = true; };
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
assertions = [{
|
||||
assertion = cfg.useSshAgent -> !config.programs.ssh.startAgent;
|
||||
message = "Only one ssh-agent can be used at a time.";
|
||||
}];
|
||||
|
||||
environment = {
|
||||
etc = lib.mkIf config.programs.chromium.enable {
|
||||
"chromium/native-messaging-hosts/com.8bit.bitwarden.json".source = "${cfg.package}/etc/chromium/native-messaging-hosts/com.8bit.bitwarden.json";
|
||||
"opt/chrome/native-messaging-hosts/com.8bit.bitwarden.json".source = "${cfg.package}/etc/chrome/native-messaging-hosts/com.8bit.bitwarden.json";
|
||||
};
|
||||
|
||||
extraInit = lib.mkIf cfg.useSshAgent ''
|
||||
if [ -z "$SSH_AUTH_SOCK" -a -n "$HOME" ]; then
|
||||
export SSH_AUTH_SOCK="$HOME/.goldwarden-ssh-agent.sock"
|
||||
fi
|
||||
'';
|
||||
|
||||
systemPackages = [
|
||||
# for cli and polkit action
|
||||
cfg.package
|
||||
# binary exec's into pinentry which should match the DE
|
||||
config.programs.gnupg.agent.pinentryPackage
|
||||
];
|
||||
};
|
||||
|
||||
programs.firefox.nativeMessagingHosts.packages = [ cfg.package ];
|
||||
|
||||
# see https://github.com/quexten/goldwarden/blob/main/cmd/goldwarden.service
|
||||
systemd.user.services.goldwarden = {
|
||||
description = "Goldwarden daemon";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
after = [ "graphical-session.target" ];
|
||||
serviceConfig.ExecStart = "${lib.getExe cfg.package} daemonize";
|
||||
path = [ config.programs.gnupg.agent.pinentryPackage ];
|
||||
unitConfig.ConditionUser = "!@system";
|
||||
};
|
||||
};
|
||||
}
|
@ -3,7 +3,7 @@ let
|
||||
cfg = config.programs.nix-ld;
|
||||
|
||||
nix-ld-libraries = pkgs.buildEnv {
|
||||
name = "lb-library-path";
|
||||
name = "ld-library-path";
|
||||
pathsToLink = [ "/lib" ];
|
||||
paths = map lib.getLib cfg.libraries;
|
||||
# TODO make glibc here configurable?
|
||||
@ -13,25 +13,6 @@ let
|
||||
extraPrefix = "/share/nix-ld";
|
||||
ignoreCollisions = true;
|
||||
};
|
||||
|
||||
# We currently take all libraries from systemd and nix as the default.
|
||||
# Is there a better list?
|
||||
baseLibraries = with pkgs; [
|
||||
zlib
|
||||
zstd
|
||||
stdenv.cc.cc
|
||||
curl
|
||||
openssl
|
||||
attr
|
||||
libssh
|
||||
bzip2
|
||||
libxml2
|
||||
acl
|
||||
libsodium
|
||||
util-linux
|
||||
xz
|
||||
systemd
|
||||
];
|
||||
in
|
||||
{
|
||||
meta.maintainers = [ lib.maintainers.mic92 ];
|
||||
@ -41,7 +22,7 @@ in
|
||||
libraries = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
description = lib.mdDoc "Libraries that automatically become available to all programs. The default set includes common libraries.";
|
||||
default = baseLibraries;
|
||||
default = [ ];
|
||||
defaultText = lib.literalExpression "baseLibraries derived from systemd and nix dependencies.";
|
||||
};
|
||||
};
|
||||
@ -57,5 +38,24 @@ in
|
||||
NIX_LD = "/run/current-system/sw/share/nix-ld/lib/ld.so";
|
||||
NIX_LD_LIBRARY_PATH = "/run/current-system/sw/share/nix-ld/lib";
|
||||
};
|
||||
|
||||
# We currently take all libraries from systemd and nix as the default.
|
||||
# Is there a better list?
|
||||
programs.nix-ld.libraries = with pkgs; [
|
||||
zlib
|
||||
zstd
|
||||
stdenv.cc.cc
|
||||
curl
|
||||
openssl
|
||||
attr
|
||||
libssh
|
||||
bzip2
|
||||
libxml2
|
||||
acl
|
||||
libsodium
|
||||
util-linux
|
||||
xz
|
||||
systemd
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -1,14 +1,21 @@
|
||||
# PipeWire service.
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (builtins) attrNames concatMap length;
|
||||
inherit (lib) maintainers teams;
|
||||
inherit (lib.attrsets) attrByPath attrsToList concatMapAttrs filterAttrs;
|
||||
inherit (lib.lists) flatten optional optionals;
|
||||
inherit (lib.modules) mkIf mkRemovedOptionModule;
|
||||
inherit (lib.options) literalExpression mkEnableOption mkOption mkPackageOption;
|
||||
inherit (lib.strings) concatMapStringsSep hasPrefix optionalString;
|
||||
inherit (lib.types) attrsOf bool listOf package;
|
||||
|
||||
json = pkgs.formats.json {};
|
||||
mapToFiles = location: config: concatMapAttrs (name: value: { "share/pipewire/${location}.conf.d/${name}.conf" = json.generate "${name}" value; }) config;
|
||||
extraConfigPkgFromFiles = locations: filesSet: pkgs.runCommand "pipewire-extra-config" { } ''
|
||||
mkdir -p ${lib.concatMapStringsSep " " (l: "$out/share/pipewire/${l}.conf.d") locations}
|
||||
${lib.concatMapStringsSep ";" ({name, value}: "ln -s ${value} $out/${name}") (lib.attrsToList filesSet)}
|
||||
mkdir -p ${concatMapStringsSep " " (l: "$out/share/pipewire/${l}.conf.d") locations}
|
||||
${concatMapStringsSep ";" ({name, value}: "ln -s ${value} $out/${name}") (attrsToList filesSet)}
|
||||
'';
|
||||
cfg = config.services.pipewire;
|
||||
enable32BitAlsaPlugins = cfg.alsa.support32Bit
|
||||
@ -40,15 +47,15 @@ let
|
||||
name = "pipewire-configs";
|
||||
paths = configPackages
|
||||
++ [ extraConfigPkg ]
|
||||
++ lib.optionals cfg.wireplumber.enable cfg.wireplumber.configPackages;
|
||||
++ optionals cfg.wireplumber.enable cfg.wireplumber.configPackages;
|
||||
pathsToLink = [ "/share/pipewire" ];
|
||||
};
|
||||
|
||||
requiredLv2Packages = lib.flatten
|
||||
requiredLv2Packages = flatten
|
||||
(
|
||||
lib.concatMap
|
||||
concatMap
|
||||
(p:
|
||||
lib.attrByPath ["passthru" "requiredLv2Packages"] [] p
|
||||
attrByPath ["passthru" "requiredLv2Packages"] [] p
|
||||
)
|
||||
configPackages
|
||||
);
|
||||
@ -59,58 +66,58 @@ let
|
||||
pathsToLink = [ "/lib/lv2" ];
|
||||
};
|
||||
in {
|
||||
meta.maintainers = teams.freedesktop.members ++ [ lib.maintainers.k900 ];
|
||||
meta.maintainers = teams.freedesktop.members ++ [ maintainers.k900 ];
|
||||
|
||||
###### interface
|
||||
options = {
|
||||
services.pipewire = {
|
||||
enable = mkEnableOption (lib.mdDoc "PipeWire service");
|
||||
enable = mkEnableOption "PipeWire service";
|
||||
|
||||
package = mkPackageOption pkgs "pipewire" { };
|
||||
|
||||
socketActivation = mkOption {
|
||||
default = true;
|
||||
type = types.bool;
|
||||
description = lib.mdDoc ''
|
||||
type = bool;
|
||||
description = ''
|
||||
Automatically run PipeWire when connections are made to the PipeWire socket.
|
||||
'';
|
||||
};
|
||||
|
||||
audio = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
enable = mkOption {
|
||||
type = bool;
|
||||
# this is for backwards compatibility
|
||||
default = cfg.alsa.enable || cfg.jack.enable || cfg.pulse.enable;
|
||||
defaultText = lib.literalExpression "config.services.pipewire.alsa.enable || config.services.pipewire.jack.enable || config.services.pipewire.pulse.enable";
|
||||
description = lib.mdDoc "Whether to use PipeWire as the primary sound server";
|
||||
defaultText = literalExpression "config.services.pipewire.alsa.enable || config.services.pipewire.jack.enable || config.services.pipewire.pulse.enable";
|
||||
description = "Whether to use PipeWire as the primary sound server";
|
||||
};
|
||||
};
|
||||
|
||||
alsa = {
|
||||
enable = mkEnableOption (lib.mdDoc "ALSA support");
|
||||
support32Bit = mkEnableOption (lib.mdDoc "32-bit ALSA support on 64-bit systems");
|
||||
enable = mkEnableOption "ALSA support";
|
||||
support32Bit = mkEnableOption "32-bit ALSA support on 64-bit systems";
|
||||
};
|
||||
|
||||
jack = {
|
||||
enable = mkEnableOption (lib.mdDoc "JACK audio emulation");
|
||||
enable = mkEnableOption "JACK audio emulation";
|
||||
};
|
||||
|
||||
raopOpenFirewall = mkOption {
|
||||
type = lib.types.bool;
|
||||
type = bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
description = ''
|
||||
Opens UDP/6001-6002, required by RAOP/Airplay for timing and control data.
|
||||
'';
|
||||
};
|
||||
|
||||
pulse = {
|
||||
enable = mkEnableOption (lib.mdDoc "PulseAudio server emulation");
|
||||
enable = mkEnableOption "PulseAudio server emulation";
|
||||
};
|
||||
|
||||
systemWide = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
systemWide = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
description = ''
|
||||
If true, a system-wide PipeWire service and socket is enabled
|
||||
allowing all users in the "pipewire" group to use it simultaneously.
|
||||
If false, then user units are used instead, restricting access to
|
||||
@ -124,7 +131,7 @@ in {
|
||||
|
||||
extraConfig = {
|
||||
pipewire = mkOption {
|
||||
type = lib.types.attrsOf json.type;
|
||||
type = attrsOf json.type;
|
||||
default = {};
|
||||
example = {
|
||||
"10-clock-rate" = {
|
||||
@ -138,7 +145,7 @@ in {
|
||||
};
|
||||
};
|
||||
};
|
||||
description = lib.mdDoc ''
|
||||
description = ''
|
||||
Additional configuration for the PipeWire server.
|
||||
|
||||
Every item in this attrset becomes a separate drop-in file in `/etc/pipewire/pipewire.conf.d`.
|
||||
@ -157,7 +164,7 @@ in {
|
||||
'';
|
||||
};
|
||||
client = mkOption {
|
||||
type = lib.types.attrsOf json.type;
|
||||
type = attrsOf json.type;
|
||||
default = {};
|
||||
example = {
|
||||
"10-no-resample" = {
|
||||
@ -166,7 +173,7 @@ in {
|
||||
};
|
||||
};
|
||||
};
|
||||
description = lib.mdDoc ''
|
||||
description = ''
|
||||
Additional configuration for the PipeWire client library, used by most applications.
|
||||
|
||||
Every item in this attrset becomes a separate drop-in file in `/etc/pipewire/client.conf.d`.
|
||||
@ -177,7 +184,7 @@ in {
|
||||
'';
|
||||
};
|
||||
client-rt = mkOption {
|
||||
type = lib.types.attrsOf json.type;
|
||||
type = attrsOf json.type;
|
||||
default = {};
|
||||
example = {
|
||||
"10-alsa-linear-volume" = {
|
||||
@ -186,7 +193,7 @@ in {
|
||||
};
|
||||
};
|
||||
};
|
||||
description = lib.mdDoc ''
|
||||
description = ''
|
||||
Additional configuration for the PipeWire client library, used by real-time applications and legacy ALSA clients.
|
||||
|
||||
Every item in this attrset becomes a separate drop-in file in `/etc/pipewire/client-rt.conf.d`.
|
||||
@ -198,7 +205,7 @@ in {
|
||||
'';
|
||||
};
|
||||
jack = mkOption {
|
||||
type = lib.types.attrsOf json.type;
|
||||
type = attrsOf json.type;
|
||||
default = {};
|
||||
example = {
|
||||
"20-hide-midi" = {
|
||||
@ -207,7 +214,7 @@ in {
|
||||
};
|
||||
};
|
||||
};
|
||||
description = lib.mdDoc ''
|
||||
description = ''
|
||||
Additional configuration for the PipeWire JACK server and client library.
|
||||
|
||||
Every item in this attrset becomes a separate drop-in file in `/etc/pipewire/jack.conf.d`.
|
||||
@ -218,7 +225,7 @@ in {
|
||||
'';
|
||||
};
|
||||
pipewire-pulse = mkOption {
|
||||
type = lib.types.attrsOf json.type;
|
||||
type = attrsOf json.type;
|
||||
default = {};
|
||||
example = {
|
||||
"15-force-s16-info" = {
|
||||
@ -232,7 +239,7 @@ in {
|
||||
}];
|
||||
};
|
||||
};
|
||||
description = lib.mdDoc ''
|
||||
description = ''
|
||||
Additional configuration for the PipeWire PulseAudio server.
|
||||
|
||||
Every item in this attrset becomes a separate drop-in file in `/etc/pipewire/pipewire-pulse.conf.d`.
|
||||
@ -248,10 +255,32 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
configPackages = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
configPackages = mkOption {
|
||||
type = listOf package;
|
||||
default = [];
|
||||
description = lib.mdDoc ''
|
||||
example = literalExpression ''[
|
||||
(pkgs.writeTextDir "share/pipewire/pipewire.conf.d/10-loopback.conf" '''
|
||||
context.modules = [
|
||||
{ name = libpipewire-module-loopback
|
||||
args = {
|
||||
node.description = "Scarlett Focusrite Line 1"
|
||||
capture.props = {
|
||||
audio.position = [ FL ]
|
||||
stream.dont-remix = true
|
||||
node.target = "alsa_input.usb-Focusrite_Scarlett_Solo_USB_Y7ZD17C24495BC-00.analog-stereo"
|
||||
node.passive = true
|
||||
}
|
||||
playback.props = {
|
||||
node.name = "SF_mono_in_1"
|
||||
media.class = "Audio/Source"
|
||||
audio.position = [ MONO ]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
''')
|
||||
]'';
|
||||
description = ''
|
||||
List of packages that provide PipeWire configuration, in the form of
|
||||
`share/pipewire/*/*.conf` files.
|
||||
|
||||
@ -260,11 +289,11 @@ in {
|
||||
'';
|
||||
};
|
||||
|
||||
extraLv2Packages = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
extraLv2Packages = mkOption {
|
||||
type = listOf package;
|
||||
default = [];
|
||||
example = lib.literalExpression "[ pkgs.lsp-plugins ]";
|
||||
description = lib.mdDoc ''
|
||||
example = literalExpression "[ pkgs.lsp-plugins ]";
|
||||
description = ''
|
||||
List of packages that provide LV2 plugins in `lib/lv2` that should
|
||||
be made available to PipeWire for [filter chains][wiki-filter-chain].
|
||||
|
||||
@ -279,11 +308,11 @@ in {
|
||||
};
|
||||
|
||||
imports = [
|
||||
(lib.mkRemovedOptionModule ["services" "pipewire" "config"] ''
|
||||
(mkRemovedOptionModule ["services" "pipewire" "config"] ''
|
||||
Overriding default PipeWire configuration through NixOS options never worked correctly and is no longer supported.
|
||||
Please create drop-in configuration files via `services.pipewire.extraConfig` instead.
|
||||
'')
|
||||
(lib.mkRemovedOptionModule ["services" "pipewire" "media-session"] ''
|
||||
(mkRemovedOptionModule ["services" "pipewire" "media-session"] ''
|
||||
pipewire-media-session is no longer supported upstream and has been removed.
|
||||
Please switch to `services.pipewire.wireplumber` instead.
|
||||
'')
|
||||
@ -306,12 +335,12 @@ in {
|
||||
message = "Using PipeWire's ALSA/PulseAudio compatibility layers requires running PipeWire as the sound server. Set `services.pipewire.audio.enable` to true.";
|
||||
}
|
||||
{
|
||||
assertion = builtins.length
|
||||
(builtins.attrNames
|
||||
assertion = length
|
||||
(attrNames
|
||||
(
|
||||
lib.filterAttrs
|
||||
filterAttrs
|
||||
(name: value:
|
||||
lib.hasPrefix "pipewire/" name || name == "pipewire"
|
||||
hasPrefix "pipewire/" name || name == "pipewire"
|
||||
)
|
||||
config.environment.etc
|
||||
)) == 1;
|
||||
@ -320,7 +349,7 @@ in {
|
||||
];
|
||||
|
||||
environment.systemPackages = [ cfg.package ]
|
||||
++ lib.optional cfg.jack.enable jack-libs;
|
||||
++ optional cfg.jack.enable jack-libs;
|
||||
|
||||
systemd.packages = [ cfg.package ];
|
||||
|
||||
@ -336,16 +365,16 @@ in {
|
||||
systemd.user.sockets.pipewire.enable = !cfg.systemWide;
|
||||
systemd.user.services.pipewire.enable = !cfg.systemWide;
|
||||
|
||||
systemd.services.pipewire.environment.LV2_PATH = lib.mkIf cfg.systemWide "${lv2Plugins}/lib/lv2";
|
||||
systemd.user.services.pipewire.environment.LV2_PATH = lib.mkIf (!cfg.systemWide) "${lv2Plugins}/lib/lv2";
|
||||
systemd.services.pipewire.environment.LV2_PATH = mkIf cfg.systemWide "${lv2Plugins}/lib/lv2";
|
||||
systemd.user.services.pipewire.environment.LV2_PATH = mkIf (!cfg.systemWide) "${lv2Plugins}/lib/lv2";
|
||||
|
||||
# Mask pw-pulse if it's not wanted
|
||||
systemd.user.services.pipewire-pulse.enable = cfg.pulse.enable;
|
||||
systemd.user.sockets.pipewire-pulse.enable = cfg.pulse.enable;
|
||||
|
||||
systemd.sockets.pipewire.wantedBy = lib.mkIf cfg.socketActivation [ "sockets.target" ];
|
||||
systemd.user.sockets.pipewire.wantedBy = lib.mkIf cfg.socketActivation [ "sockets.target" ];
|
||||
systemd.user.sockets.pipewire-pulse.wantedBy = lib.mkIf cfg.socketActivation [ "sockets.target" ];
|
||||
systemd.sockets.pipewire.wantedBy = mkIf cfg.socketActivation [ "sockets.target" ];
|
||||
systemd.user.sockets.pipewire.wantedBy = mkIf cfg.socketActivation [ "sockets.target" ];
|
||||
systemd.user.sockets.pipewire-pulse.wantedBy = mkIf cfg.socketActivation [ "sockets.target" ];
|
||||
|
||||
services.udev.packages = [ cfg.package ];
|
||||
|
||||
@ -377,18 +406,18 @@ in {
|
||||
};
|
||||
|
||||
environment.sessionVariables.LD_LIBRARY_PATH =
|
||||
lib.mkIf cfg.jack.enable [ "${cfg.package.jack}/lib" ];
|
||||
mkIf cfg.jack.enable [ "${cfg.package.jack}/lib" ];
|
||||
|
||||
networking.firewall.allowedUDPPorts = lib.mkIf cfg.raopOpenFirewall [ 6001 6002 ];
|
||||
networking.firewall.allowedUDPPorts = mkIf cfg.raopOpenFirewall [ 6001 6002 ];
|
||||
|
||||
users = lib.mkIf cfg.systemWide {
|
||||
users = mkIf cfg.systemWide {
|
||||
users.pipewire = {
|
||||
uid = config.ids.uids.pipewire;
|
||||
group = "pipewire";
|
||||
extraGroups = [
|
||||
"audio"
|
||||
"video"
|
||||
] ++ lib.optional config.security.rtkit.enable "rtkit";
|
||||
] ++ optional config.security.rtkit.enable "rtkit";
|
||||
description = "PipeWire system service user";
|
||||
isSystemUser = true;
|
||||
home = "/var/lib/pipewire";
|
||||
|
@ -1,46 +1,65 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (builtins) attrNames concatMap length;
|
||||
inherit (lib) maintainers;
|
||||
inherit (lib.attrsets) attrByPath filterAttrs;
|
||||
inherit (lib.lists) flatten optional;
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.options) literalExpression mkOption;
|
||||
inherit (lib.strings) hasPrefix;
|
||||
inherit (lib.types) bool listOf package;
|
||||
|
||||
pwCfg = config.services.pipewire;
|
||||
cfg = pwCfg.wireplumber;
|
||||
pwUsedForAudio = pwCfg.audio.enable;
|
||||
in
|
||||
{
|
||||
meta.maintainers = [ lib.maintainers.k900 ];
|
||||
meta.maintainers = [ maintainers.k900 ];
|
||||
|
||||
options = {
|
||||
services.pipewire.wireplumber = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = config.services.pipewire.enable;
|
||||
defaultText = lib.literalExpression "config.services.pipewire.enable";
|
||||
description = lib.mdDoc "Whether to enable WirePlumber, a modular session / policy manager for PipeWire";
|
||||
enable = mkOption {
|
||||
type = bool;
|
||||
default = pwCfg.enable;
|
||||
defaultText = literalExpression "config.services.pipewire.enable";
|
||||
description = "Whether to enable WirePlumber, a modular session / policy manager for PipeWire";
|
||||
};
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
package = mkOption {
|
||||
type = package;
|
||||
default = pkgs.wireplumber;
|
||||
defaultText = lib.literalExpression "pkgs.wireplumber";
|
||||
description = lib.mdDoc "The WirePlumber derivation to use.";
|
||||
defaultText = literalExpression "pkgs.wireplumber";
|
||||
description = "The WirePlumber derivation to use.";
|
||||
};
|
||||
|
||||
configPackages = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
configPackages = mkOption {
|
||||
type = listOf package;
|
||||
default = [ ];
|
||||
description = lib.mdDoc ''
|
||||
example = literalExpression ''[
|
||||
(pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/10-bluez.conf" '''
|
||||
monitor.bluez.properties = {
|
||||
bluez5.roles = [ a2dp_sink a2dp_source bap_sink bap_source hsp_hs hsp_ag hfp_hf hfp_ag ]
|
||||
bluez5.codecs = [ sbc sbc_xq aac ]
|
||||
bluez5.enable-sbc-xq = true
|
||||
bluez5.hfphsp-backend = "native"
|
||||
}
|
||||
''')
|
||||
]'';
|
||||
description = ''
|
||||
List of packages that provide WirePlumber configuration, in the form of
|
||||
`share/wireplumber/*/*.lua` files.
|
||||
`share/wireplumber/*/*.conf` files.
|
||||
|
||||
LV2 dependencies will be picked up from config packages automatically
|
||||
via `passthru.requiredLv2Packages`.
|
||||
'';
|
||||
};
|
||||
|
||||
extraLv2Packages = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
extraLv2Packages = mkOption {
|
||||
type = listOf package;
|
||||
default = [];
|
||||
example = lib.literalExpression "[ pkgs.lsp-plugins ]";
|
||||
description = lib.mdDoc ''
|
||||
example = literalExpression "[ pkgs.lsp-plugins ]";
|
||||
description = ''
|
||||
List of packages that provide LV2 plugins in `lib/lv2` that should
|
||||
be made available to WirePlumber for [filter chains][wiki-filter-chain].
|
||||
|
||||
@ -78,8 +97,8 @@ in
|
||||
'';
|
||||
|
||||
configPackages = cfg.configPackages
|
||||
++ lib.optional (!pwUsedForAudio) pwNotForAudioConfigPkg
|
||||
++ lib.optional config.services.pipewire.systemWide systemwideConfigPkg;
|
||||
++ optional (!pwUsedForAudio) pwNotForAudioConfigPkg
|
||||
++ optional pwCfg.systemWide systemwideConfigPkg;
|
||||
|
||||
configs = pkgs.buildEnv {
|
||||
name = "wireplumber-configs";
|
||||
@ -87,11 +106,11 @@ in
|
||||
pathsToLink = [ "/share/wireplumber" ];
|
||||
};
|
||||
|
||||
requiredLv2Packages = lib.flatten
|
||||
requiredLv2Packages = flatten
|
||||
(
|
||||
lib.concatMap
|
||||
concatMap
|
||||
(p:
|
||||
lib.attrByPath ["passthru" "requiredLv2Packages"] [] p
|
||||
attrByPath ["passthru" "requiredLv2Packages"] [] p
|
||||
)
|
||||
configPackages
|
||||
);
|
||||
@ -102,19 +121,19 @@ in
|
||||
pathsToLink = [ "/lib/lv2" ];
|
||||
};
|
||||
in
|
||||
lib.mkIf cfg.enable {
|
||||
mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = !config.hardware.bluetooth.hsphfpd.enable;
|
||||
message = "Using WirePlumber conflicts with hsphfpd, as it provides the same functionality. `hardware.bluetooth.hsphfpd.enable` needs be set to false";
|
||||
}
|
||||
{
|
||||
assertion = builtins.length
|
||||
(builtins.attrNames
|
||||
assertion = length
|
||||
(attrNames
|
||||
(
|
||||
lib.filterAttrs
|
||||
filterAttrs
|
||||
(name: value:
|
||||
lib.hasPrefix "wireplumber/" name || name == "wireplumber"
|
||||
hasPrefix "wireplumber/" name || name == "wireplumber"
|
||||
)
|
||||
config.environment.etc
|
||||
)) == 1;
|
||||
@ -128,19 +147,19 @@ in
|
||||
|
||||
systemd.packages = [ cfg.package ];
|
||||
|
||||
systemd.services.wireplumber.enable = config.services.pipewire.systemWide;
|
||||
systemd.user.services.wireplumber.enable = !config.services.pipewire.systemWide;
|
||||
systemd.services.wireplumber.enable = pwCfg.systemWide;
|
||||
systemd.user.services.wireplumber.enable = !pwCfg.systemWide;
|
||||
|
||||
systemd.services.wireplumber.wantedBy = [ "pipewire.service" ];
|
||||
systemd.user.services.wireplumber.wantedBy = [ "pipewire.service" ];
|
||||
|
||||
systemd.services.wireplumber.environment = lib.mkIf config.services.pipewire.systemWide {
|
||||
systemd.services.wireplumber.environment = mkIf pwCfg.systemWide {
|
||||
# Force WirePlumber to use system dbus.
|
||||
DBUS_SESSION_BUS_ADDRESS = "unix:path=/run/dbus/system_bus_socket";
|
||||
LV2_PATH = "${lv2Plugins}/lib/lv2";
|
||||
};
|
||||
|
||||
systemd.user.services.wireplumber.environment.LV2_PATH =
|
||||
lib.mkIf (!config.services.pipewire.systemWide) "${lv2Plugins}/lib/lv2";
|
||||
mkIf (!pwCfg.systemWide) "${lv2Plugins}/lib/lv2";
|
||||
};
|
||||
}
|
||||
|
69
nixos/modules/services/networking/scion/scion-control.nix
Normal file
69
nixos/modules/services/networking/scion/scion-control.nix
Normal file
@ -0,0 +1,69 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.scion.scion-control;
|
||||
toml = pkgs.formats.toml { };
|
||||
defaultConfig = {
|
||||
general = {
|
||||
id = "cs";
|
||||
config_dir = "/etc/scion";
|
||||
reconnect_to_dispatcher = true;
|
||||
};
|
||||
beacon_db = {
|
||||
connection = "/var/lib/scion-control/control.beacon.db";
|
||||
};
|
||||
path_db = {
|
||||
connection = "/var/lib/scion-control/control.path.db";
|
||||
};
|
||||
trust_db = {
|
||||
connection = "/var/lib/scion-control/control.trust.db";
|
||||
};
|
||||
log.console = {
|
||||
level = "info";
|
||||
};
|
||||
};
|
||||
configFile = toml.generate "scion-control.toml" (defaultConfig // cfg.settings);
|
||||
in
|
||||
{
|
||||
options.services.scion.scion-control = {
|
||||
enable = mkEnableOption (lib.mdDoc "the scion-control service");
|
||||
settings = mkOption {
|
||||
default = { };
|
||||
type = toml.type;
|
||||
example = literalExpression ''
|
||||
{
|
||||
path_db = {
|
||||
connection = "/var/lib/scion-control/control.path.db";
|
||||
};
|
||||
log.console = {
|
||||
level = "info";
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = lib.mdDoc ''
|
||||
scion-control configuration. Refer to
|
||||
<https://docs.scion.org/en/latest/manuals/common.html>
|
||||
for details on supported values.
|
||||
'';
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.scion-control = {
|
||||
description = "SCION Control Service";
|
||||
after = [ "network-online.target" "scion-dispatcher.service" ];
|
||||
wants = [ "network-online.target" "scion-dispatcher.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
Group = if (config.services.scion.scion-dispatcher.enable == true) then "scion" else null;
|
||||
ExecStart = "${pkgs.scion}/bin/scion-control --config ${configFile}";
|
||||
DynamicUser = true;
|
||||
Restart = "on-failure";
|
||||
BindPaths = [ "/dev/shm:/run/shm" ];
|
||||
StateDirectory = "scion-control";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
64
nixos/modules/services/networking/scion/scion-daemon.nix
Normal file
64
nixos/modules/services/networking/scion/scion-daemon.nix
Normal file
@ -0,0 +1,64 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.scion.scion-daemon;
|
||||
toml = pkgs.formats.toml { };
|
||||
defaultConfig = {
|
||||
general = {
|
||||
id = "sd";
|
||||
config_dir = "/etc/scion";
|
||||
reconnect_to_dispatcher = true;
|
||||
};
|
||||
path_db = {
|
||||
connection = "/var/lib/scion-daemon/sd.path.db";
|
||||
};
|
||||
trust_db = {
|
||||
connection = "/var/lib/scion-daemon/sd.trust.db";
|
||||
};
|
||||
log.console = {
|
||||
level = "info";
|
||||
};
|
||||
};
|
||||
configFile = toml.generate "scion-daemon.toml" (defaultConfig // cfg.settings);
|
||||
in
|
||||
{
|
||||
options.services.scion.scion-daemon = {
|
||||
enable = mkEnableOption (lib.mdDoc "the scion-daemon service");
|
||||
settings = mkOption {
|
||||
default = { };
|
||||
type = toml.type;
|
||||
example = literalExpression ''
|
||||
{
|
||||
path_db = {
|
||||
connection = "/var/lib/scion-daemon/sd.path.db";
|
||||
};
|
||||
log.console = {
|
||||
level = "info";
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = lib.mdDoc ''
|
||||
scion-daemon configuration. Refer to
|
||||
<https://docs.scion.org/en/latest/manuals/common.html>
|
||||
for details on supported values.
|
||||
'';
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.scion-daemon = {
|
||||
description = "SCION Daemon";
|
||||
after = [ "network-online.target" "scion-dispatcher.service" ];
|
||||
wants = [ "network-online.target" "scion-dispatcher.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.scion}/bin/scion-daemon --config ${configFile}";
|
||||
Restart = "on-failure";
|
||||
DynamicUser = true;
|
||||
StateDirectory = "scion-daemon";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
74
nixos/modules/services/networking/scion/scion-dispatcher.nix
Normal file
74
nixos/modules/services/networking/scion/scion-dispatcher.nix
Normal file
@ -0,0 +1,74 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.scion.scion-dispatcher;
|
||||
toml = pkgs.formats.toml { };
|
||||
defaultConfig = {
|
||||
dispatcher = {
|
||||
id = "dispatcher";
|
||||
socket_file_mode = "0770";
|
||||
application_socket = "/dev/shm/dispatcher/default.sock";
|
||||
};
|
||||
log.console = {
|
||||
level = "info";
|
||||
};
|
||||
};
|
||||
configFile = toml.generate "scion-dispatcher.toml" (defaultConfig // cfg.settings);
|
||||
in
|
||||
{
|
||||
options.services.scion.scion-dispatcher = {
|
||||
enable = mkEnableOption (lib.mdDoc "the scion-dispatcher service");
|
||||
settings = mkOption {
|
||||
default = { };
|
||||
type = toml.type;
|
||||
example = literalExpression ''
|
||||
{
|
||||
dispatcher = {
|
||||
id = "dispatcher";
|
||||
socket_file_mode = "0770";
|
||||
application_socket = "/dev/shm/dispatcher/default.sock";
|
||||
};
|
||||
log.console = {
|
||||
level = "info";
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = lib.mdDoc ''
|
||||
scion-dispatcher configuration. Refer to
|
||||
<https://docs.scion.org/en/latest/manuals/common.html>
|
||||
for details on supported values.
|
||||
'';
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
# Needed for group ownership of the dispatcher socket
|
||||
users.groups.scion = {};
|
||||
|
||||
# scion programs hardcode path to dispatcher in /run/shm, and is not
|
||||
# configurable at runtime upstream plans to obsolete the dispatcher in
|
||||
# favor of an SCMP daemon, at which point this can be removed.
|
||||
system.activationScripts.scion-dispatcher = ''
|
||||
ln -sf /dev/shm /run/shm
|
||||
'';
|
||||
|
||||
systemd.services.scion-dispatcher = {
|
||||
description = "SCION Dispatcher";
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
Group = "scion";
|
||||
DynamicUser = true;
|
||||
BindPaths = [ "/dev/shm:/run/shm" ];
|
||||
ExecStartPre = "${pkgs.coreutils}/bin/rm -rf /run/shm/dispatcher";
|
||||
ExecStart = "${pkgs.scion}/bin/scion-dispatcher --config ${configFile}";
|
||||
Restart = "on-failure";
|
||||
StateDirectory = "scion-dispatcher";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
49
nixos/modules/services/networking/scion/scion-router.nix
Normal file
49
nixos/modules/services/networking/scion/scion-router.nix
Normal file
@ -0,0 +1,49 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.scion.scion-router;
|
||||
toml = pkgs.formats.toml { };
|
||||
defaultConfig = {
|
||||
general = {
|
||||
id = "br";
|
||||
config_dir = "/etc/scion";
|
||||
};
|
||||
};
|
||||
configFile = toml.generate "scion-router.toml" (defaultConfig // cfg.settings);
|
||||
in
|
||||
{
|
||||
options.services.scion.scion-router = {
|
||||
enable = mkEnableOption (lib.mdDoc "the scion-router service");
|
||||
settings = mkOption {
|
||||
default = { };
|
||||
type = toml.type;
|
||||
example = literalExpression ''
|
||||
{
|
||||
general.id = "br";
|
||||
}
|
||||
'';
|
||||
description = lib.mdDoc ''
|
||||
scion-router configuration. Refer to
|
||||
<https://docs.scion.org/en/latest/manuals/common.html>
|
||||
for details on supported values.
|
||||
'';
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.scion-router = {
|
||||
description = "SCION Router";
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.scion}/bin/scion-router --config ${configFile}";
|
||||
Restart = "on-failure";
|
||||
DynamicUser = true;
|
||||
StateDirectory = "scion-router";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
39
nixos/modules/services/networking/scion/scion.nix
Normal file
39
nixos/modules/services/networking/scion/scion.nix
Normal file
@ -0,0 +1,39 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.scion;
|
||||
in
|
||||
{
|
||||
options.services.scion = {
|
||||
enable = mkEnableOption (lib.mdDoc "all of the scion components and services");
|
||||
bypassBootstrapWarning = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
bypass Nix warning about SCION PKI bootstrapping
|
||||
'';
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
services.scion = {
|
||||
scion-dispatcher.enable = true;
|
||||
scion-daemon.enable = true;
|
||||
scion-router.enable = true;
|
||||
scion-control.enable = true;
|
||||
};
|
||||
assertions = [
|
||||
{ assertion = cfg.bypassBootstrapWarning == true;
|
||||
message = ''
|
||||
SCION is a routing protocol and requires bootstrapping with a manual, imperative key signing ceremony. You may want to join an existing Isolation Domain (ISD) such as scionlab.org, or bootstrap your own. If you have completed and configured the public key infrastructure for SCION and are sure this process is complete, then add the following to your configuration:
|
||||
|
||||
services.scion.bypassBootstrapWarning = true;
|
||||
|
||||
refer to docs.scion.org for more information
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ in
|
||||
};
|
||||
|
||||
implicitPolicyTarget = mkOption {
|
||||
type = policy;
|
||||
type = types.enum [ "allow" "block" "reject" ];
|
||||
default = "block";
|
||||
description = lib.mdDoc ''
|
||||
How to treat USB devices that don't match any rule in the policy.
|
||||
@ -110,7 +110,7 @@ in
|
||||
};
|
||||
|
||||
insertedDevicePolicy = mkOption {
|
||||
type = policy;
|
||||
type = types.enum [ "block" "reject" "apply-policy" ];
|
||||
default = "apply-policy";
|
||||
description = lib.mdDoc ''
|
||||
How to treat USB devices that are already connected after the daemon
|
||||
|
@ -2,7 +2,18 @@
|
||||
|
||||
let
|
||||
cfg = config.services.kavita;
|
||||
in {
|
||||
settingsFormat = pkgs.formats.json { };
|
||||
appsettings = settingsFormat.generate "appsettings.json" ({ TokenKey = "@TOKEN@"; } // cfg.settings);
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
(lib.mkChangedOptionModule [ "services" "kavita" "ipAdresses" ] [ "services" "kavita" "settings" "IpAddresses" ] (config:
|
||||
let value = lib.getAttrFromPath [ "services" "kavita" "ipAdresses" ] config; in
|
||||
lib.concatStringsSep "," value
|
||||
))
|
||||
(lib.mkRenamedOptionModule [ "services" "kavita" "port" ] [ "services" "kavita" "settings" "Port" ])
|
||||
];
|
||||
|
||||
options.services.kavita = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc "Kavita reading server");
|
||||
|
||||
@ -27,16 +38,31 @@ in {
|
||||
It can be generated with `head -c 32 /dev/urandom | base64`.
|
||||
'';
|
||||
};
|
||||
port = lib.mkOption {
|
||||
default = 5000;
|
||||
type = lib.types.port;
|
||||
description = lib.mdDoc "Port to bind to.";
|
||||
};
|
||||
ipAdresses = lib.mkOption {
|
||||
default = ["0.0.0.0" "::"];
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = lib.mdDoc "IP Addresses to bind to. The default is to bind
|
||||
to all IPv4 and IPv6 addresses.";
|
||||
|
||||
settings = lib.mkOption {
|
||||
default = { };
|
||||
description = lib.mdDoc ''
|
||||
Kavita configuration options, as configured in {file}`appsettings.json`.
|
||||
'';
|
||||
type = lib.types.submodule {
|
||||
freeformType = settingsFormat.type;
|
||||
|
||||
options = {
|
||||
Port = lib.mkOption {
|
||||
default = 5000;
|
||||
type = lib.types.port;
|
||||
description = lib.mdDoc "Port to bind to.";
|
||||
};
|
||||
|
||||
IpAddresses = lib.mkOption {
|
||||
default = "0.0.0.0,::";
|
||||
type = lib.types.commas;
|
||||
description = lib.mdDoc ''
|
||||
IP Addresses to bind to. The default is to bind to all IPv4 and IPv6 addresses.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@ -46,18 +72,15 @@ in {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
preStart = ''
|
||||
umask u=rwx,g=rx,o=
|
||||
cat > "${cfg.dataDir}/config/appsettings.json" <<EOF
|
||||
{
|
||||
"TokenKey": "$(cat ${cfg.tokenKeyFile})",
|
||||
"Port": ${toString cfg.port},
|
||||
"IpAddresses": "${lib.concatStringsSep "," cfg.ipAdresses}"
|
||||
}
|
||||
EOF
|
||||
install -m600 ${appsettings} ${lib.escapeShellArg cfg.dataDir}/config/appsettings.json
|
||||
${pkgs.replace-secret}/bin/replace-secret '@TOKEN@' \
|
||||
''${CREDENTIALS_DIRECTORY}/token \
|
||||
'${cfg.dataDir}/config/appsettings.json'
|
||||
'';
|
||||
serviceConfig = {
|
||||
WorkingDirectory = cfg.dataDir;
|
||||
ExecStart = "${lib.getExe cfg.package}";
|
||||
LoadCredential = [ "token:${cfg.tokenKeyFile}" ];
|
||||
ExecStart = lib.getExe cfg.package;
|
||||
Restart = "always";
|
||||
User = cfg.user;
|
||||
};
|
||||
|
@ -63,7 +63,7 @@ in
|
||||
};
|
||||
|
||||
options.services.pretix = {
|
||||
enable = mkEnableOption "pretix";
|
||||
enable = mkEnableOption "Pretix, a ticket shop application for conferences, festivals, concerts, etc.";
|
||||
|
||||
package = mkPackageOption pkgs "pretix" { };
|
||||
|
||||
|
@ -263,6 +263,7 @@ in
|
||||
{
|
||||
INCUS_LXC_TEMPLATE_CONFIG = "${pkgs.lxcfs}/share/lxc/config";
|
||||
INCUS_OVMF_PATH = ovmf;
|
||||
INCUS_USBIDS_PATH = "${pkgs.hwdata}/share/hwdata/usb.ids";
|
||||
PATH = lib.mkForce serverBinPath;
|
||||
}
|
||||
(lib.mkIf (cfg.ui.enable) { "INCUS_UI" = cfg.ui.package; })
|
||||
|
@ -791,6 +791,7 @@ in {
|
||||
sanoid = handleTest ./sanoid.nix {};
|
||||
scaphandre = handleTest ./scaphandre.nix {};
|
||||
schleuder = handleTest ./schleuder.nix {};
|
||||
scion-freestanding-deployment = handleTest ./scion/freestanding-deployment {};
|
||||
scrutiny = handleTest ./scrutiny.nix {};
|
||||
sddm = handleTest ./sddm.nix {};
|
||||
seafile = handleTest ./seafile.nix {};
|
||||
@ -963,6 +964,7 @@ in {
|
||||
user-activation-scripts = handleTest ./user-activation-scripts.nix {};
|
||||
user-expiry = runTest ./user-expiry.nix;
|
||||
user-home-mode = handleTest ./user-home-mode.nix {};
|
||||
ustreamer = handleTest ./ustreamer.nix {};
|
||||
uwsgi = handleTest ./uwsgi.nix {};
|
||||
v2ray = handleTest ./v2ray.nix {};
|
||||
varnish60 = handleTest ./varnish.nix { package = pkgs.varnish60; };
|
||||
|
@ -1,4 +1,4 @@
|
||||
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
name = "kavita";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ misterio77 ];
|
||||
@ -8,29 +8,35 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
||||
kavita = { config, pkgs, ... }: {
|
||||
services.kavita = {
|
||||
enable = true;
|
||||
port = 5000;
|
||||
tokenKeyFile = builtins.toFile "kavita.key" "QfpjFvjT83BLtZ74GE3U3Q==";
|
||||
tokenKeyFile = builtins.toFile "kavita.key" "d26ba694b455271a8872415830fb7b5c58f8da98f9ef7f58b2ca4c34bd406512";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = let
|
||||
regUrl = "http://kavita:5000/api/Account/register";
|
||||
payload = builtins.toFile "payload.json" (builtins.toJSON {
|
||||
username = "foo";
|
||||
password = "correcthorsebatterystaple";
|
||||
email = "foo@bar";
|
||||
});
|
||||
in ''
|
||||
kavita.start
|
||||
kavita.wait_for_unit("kavita.service")
|
||||
testScript =
|
||||
let
|
||||
regUrl = "http://kavita:5000/api/Account/register";
|
||||
loginUrl = "http://kavita:5000/api/Account/login";
|
||||
localeUrl = "http://kavita:5000/api/locale";
|
||||
in
|
||||
''
|
||||
import json
|
||||
|
||||
# Check that static assets are working
|
||||
kavita.wait_until_succeeds("curl http://kavita:5000/site.webmanifest | grep Kavita")
|
||||
kavita.start
|
||||
kavita.wait_for_unit("kavita.service")
|
||||
|
||||
# Check that registration is working
|
||||
kavita.succeed("curl -fX POST ${regUrl} --json @${payload}")
|
||||
# But only for the first one
|
||||
kavita.fail("curl -fX POST ${regUrl} --json @${payload}")
|
||||
'';
|
||||
# Check that static assets are working
|
||||
kavita.wait_until_succeeds("curl http://kavita:5000/site.webmanifest | grep Kavita")
|
||||
|
||||
# Check that registration is working
|
||||
kavita.succeed("""curl -fX POST ${regUrl} --json '{"username": "foo", "password": "correcthorsebatterystaple"}'""")
|
||||
# But only for the first one
|
||||
kavita.fail("""curl -fX POST ${regUrl} --json '{"username": "foo", "password": "correcthorsebatterystaple"}'""")
|
||||
|
||||
# Log in and retrieve token
|
||||
session = json.loads(kavita.succeed("""curl -fX POST ${loginUrl} --json '{"username": "foo", "password": "correcthorsebatterystaple"}'"""))
|
||||
# Check list of locales
|
||||
locales = json.loads(kavita.succeed(f"curl -fX GET ${localeUrl} -H 'Authorization: Bearer {session['token']}'"))
|
||||
assert len(locales) > 0, "expected a list of locales"
|
||||
'';
|
||||
})
|
||||
|
@ -1,5 +1,5 @@
|
||||
f: {
|
||||
system,
|
||||
system ? builtins.currentSystem,
|
||||
pkgs ? import ../.. { inherit system; config = {}; overlays = []; },
|
||||
...
|
||||
} @ args:
|
||||
|
12
nixos/tests/scion/freestanding-deployment/README.rst
Normal file
12
nixos/tests/scion/freestanding-deployment/README.rst
Normal file
@ -0,0 +1,12 @@
|
||||
This NixOS VM test implements the network topology outlined in https://github.com/scionproto/scion/blob/27983125bccac6b84d1f96f406853aab0e460405/doc/tutorials/deploy.rst#sample-scion-demo-topology, below is an excerpt from that document
|
||||
|
||||
Sample SCION Demo Topology
|
||||
..........................
|
||||
|
||||
The topology of the ISD includes the inter-AS connections to neighboring ASes, and defines the underlay IP/UDP addresses of services and routers running in this AS. This is specified in topology files - this guide later explains how to configure these files. A following graphic depicts the topology on a high level.
|
||||
|
||||
.. figure:: https://github.com/scionproto/scion/raw/27983125bccac6b84d1f96f406853aab0e460405/doc/tutorials/deploy/SCION-deployment-guide.drawio.png
|
||||
:width: 95 %
|
||||
:figwidth: 100 %
|
||||
|
||||
*Figure 1 - Topology of the sample SCION demo environment. It consists of 1 ISD, 3 core ASes and 2 non-core ASes.*
|
172
nixos/tests/scion/freestanding-deployment/default.nix
Normal file
172
nixos/tests/scion/freestanding-deployment/default.nix
Normal file
@ -0,0 +1,172 @@
|
||||
# implements https://github.com/scionproto/scion/blob/27983125bccac6b84d1f96f406853aab0e460405/doc/tutorials/deploy.rst
|
||||
import ../../make-test-python.nix ({ pkgs, ... }:
|
||||
let
|
||||
trust-root-configuration-keys = pkgs.runCommand "generate-trc-keys.sh" {
|
||||
buildInputs = [
|
||||
pkgs.scion
|
||||
];
|
||||
} ''
|
||||
set -euo pipefail
|
||||
|
||||
mkdir /tmp/tutorial-scion-certs && cd /tmp/tutorial-scion-certs
|
||||
mkdir AS{1..5}
|
||||
|
||||
# Create voting and root keys and (self-signed) certificates for core ASes
|
||||
pushd AS1
|
||||
scion-pki certificate create --not-after=3650d --profile=sensitive-voting <(echo '{"isd_as": "42-ffaa:1:1", "common_name": "42-ffaa:1:1 sensitive voting cert"}') sensitive-voting.pem sensitive-voting.key
|
||||
scion-pki certificate create --not-after=3650d --profile=regular-voting <(echo '{"isd_as": "42-ffaa:1:1", "common_name": "42-ffaa:1:1 regular voting cert"}') regular-voting.pem regular-voting.key
|
||||
scion-pki certificate create --not-after=3650d --profile=cp-root <(echo '{"isd_as": "42-ffaa:1:1", "common_name": "42-ffaa:1:1 cp root cert"}') cp-root.pem cp-root.key
|
||||
popd
|
||||
|
||||
pushd AS2
|
||||
scion-pki certificate create --not-after=3650d --profile=cp-root <(echo '{"isd_as": "42-ffaa:1:2", "common_name": "42-ffaa:1:2 cp root cert"}') cp-root.pem cp-root.key
|
||||
popd
|
||||
|
||||
pushd AS3
|
||||
scion-pki certificate create --not-after=3650d --profile=sensitive-voting <(echo '{"isd_as": "42-ffaa:1:3", "common_name": "42-ffaa:1:3 sensitive voting cert"}') sensitive-voting.pem sensitive-voting.key
|
||||
scion-pki certificate create --not-after=3650d --profile=regular-voting <(echo '{"isd_as": "42-ffaa:1:3", "common_name": "42-ffaa:1:3 regular voting cert"}') regular-voting.pem regular-voting.key
|
||||
popd
|
||||
|
||||
# Create the TRC (Trust Root Configuration)
|
||||
mkdir tmp
|
||||
echo '
|
||||
isd = 42
|
||||
description = "Demo ISD 42"
|
||||
serial_version = 1
|
||||
base_version = 1
|
||||
voting_quorum = 2
|
||||
|
||||
core_ases = ["ffaa:1:1", "ffaa:1:2", "ffaa:1:3"]
|
||||
authoritative_ases = ["ffaa:1:1", "ffaa:1:2", "ffaa:1:3"]
|
||||
cert_files = ["AS1/sensitive-voting.pem", "AS1/regular-voting.pem", "AS1/cp-root.pem", "AS2/cp-root.pem", "AS3/sensitive-voting.pem", "AS3/regular-voting.pem"]
|
||||
|
||||
[validity]
|
||||
not_before = '$(date +%s)'
|
||||
validity = "365d"' \
|
||||
> trc-B1-S1-pld.tmpl
|
||||
|
||||
scion-pki trc payload --out=tmp/ISD42-B1-S1.pld.der --template trc-B1-S1-pld.tmpl
|
||||
rm trc-B1-S1-pld.tmpl
|
||||
|
||||
# Sign and bundle the TRC
|
||||
scion-pki trc sign tmp/ISD42-B1-S1.pld.der AS1/sensitive-voting.{pem,key} --out tmp/ISD42-B1-S1.AS1-sensitive.trc
|
||||
scion-pki trc sign tmp/ISD42-B1-S1.pld.der AS1/regular-voting.{pem,key} --out tmp/ISD42-B1-S1.AS1-regular.trc
|
||||
scion-pki trc sign tmp/ISD42-B1-S1.pld.der AS3/sensitive-voting.{pem,key} --out tmp/ISD42-B1-S1.AS3-sensitive.trc
|
||||
scion-pki trc sign tmp/ISD42-B1-S1.pld.der AS3/regular-voting.{pem,key} --out tmp/ISD42-B1-S1.AS3-regular.trc
|
||||
|
||||
scion-pki trc combine tmp/ISD42-B1-S1.AS{1,3}-{sensitive,regular}.trc --payload tmp/ISD42-B1-S1.pld.der --out ISD42-B1-S1.trc
|
||||
rm tmp -r
|
||||
|
||||
# Create CA key and certificate for issuing ASes
|
||||
pushd AS1
|
||||
scion-pki certificate create --profile=cp-ca <(echo '{"isd_as": "42-ffaa:1:1", "common_name": "42-ffaa:1:1 CA cert"}') cp-ca.pem cp-ca.key --ca cp-root.pem --ca-key cp-root.key
|
||||
popd
|
||||
pushd AS2
|
||||
scion-pki certificate create --profile=cp-ca <(echo '{"isd_as": "42-ffaa:1:2", "common_name": "42-ffaa:1:2 CA cert"}') cp-ca.pem cp-ca.key --ca cp-root.pem --ca-key cp-root.key
|
||||
popd
|
||||
|
||||
# Create AS key and certificate chains
|
||||
scion-pki certificate create --profile=cp-as <(echo '{"isd_as": "42-ffaa:1:1", "common_name": "42-ffaa:1:1 AS cert"}') AS1/cp-as.pem AS1/cp-as.key --ca AS1/cp-ca.pem --ca-key AS1/cp-ca.key --bundle
|
||||
scion-pki certificate create --profile=cp-as <(echo '{"isd_as": "42-ffaa:1:2", "common_name": "42-ffaa:1:2 AS cert"}') AS2/cp-as.pem AS2/cp-as.key --ca AS2/cp-ca.pem --ca-key AS2/cp-ca.key --bundle
|
||||
scion-pki certificate create --profile=cp-as <(echo '{"isd_as": "42-ffaa:1:3", "common_name": "42-ffaa:1:3 AS cert"}') AS3/cp-as.pem AS3/cp-as.key --ca AS1/cp-ca.pem --ca-key AS1/cp-ca.key --bundle
|
||||
scion-pki certificate create --profile=cp-as <(echo '{"isd_as": "42-ffaa:1:4", "common_name": "42-ffaa:1:4 AS cert"}') AS4/cp-as.pem AS4/cp-as.key --ca AS1/cp-ca.pem --ca-key AS1/cp-ca.key --bundle
|
||||
scion-pki certificate create --profile=cp-as <(echo '{"isd_as": "42-ffaa:1:5", "common_name": "42-ffaa:1:5 AS cert"}') AS5/cp-as.pem AS5/cp-as.key --ca AS2/cp-ca.pem --ca-key AS2/cp-ca.key --bundle
|
||||
|
||||
for i in {1..5}
|
||||
do
|
||||
mkdir -p $out/AS$i
|
||||
cp AS$i/cp-as.{key,pem} $out/AS$i
|
||||
done
|
||||
|
||||
mv *.trc $out
|
||||
'';
|
||||
imports = hostId: [
|
||||
({
|
||||
services.scion = {
|
||||
enable = true;
|
||||
bypassBootstrapWarning = true;
|
||||
};
|
||||
networking = {
|
||||
useNetworkd = true;
|
||||
useDHCP = false;
|
||||
};
|
||||
systemd.network.networks."01-eth1" = {
|
||||
name = "eth1";
|
||||
networkConfig.Address = "192.168.1.${toString hostId}/24";
|
||||
};
|
||||
environment.etc = {
|
||||
"scion/topology.json".source = ./topology${toString hostId}.json;
|
||||
"scion/crypto/as".source = trust-root-configuration-keys + "/AS${toString hostId}";
|
||||
"scion/certs/ISD42-B1-S1.trc".source = trust-root-configuration-keys + "/ISD42-B1-S1.trc";
|
||||
"scion/keys/master0.key".text = "U${toString hostId}v4k23ZXjGDwDofg/Eevw==";
|
||||
"scion/keys/master1.key".text = "dBMko${toString hostId}qMS8DfrN/zP2OUdA==";
|
||||
};
|
||||
environment.systemPackages = [
|
||||
pkgs.scion
|
||||
];
|
||||
})
|
||||
];
|
||||
in
|
||||
{
|
||||
name = "scion-test";
|
||||
nodes = {
|
||||
scion01 = { ... }: {
|
||||
imports = (imports 1);
|
||||
};
|
||||
scion02 = { ... }: {
|
||||
imports = (imports 2);
|
||||
};
|
||||
scion03 = { ... }: {
|
||||
imports = (imports 3);
|
||||
};
|
||||
scion04 = { ... }: {
|
||||
imports = (imports 4);
|
||||
};
|
||||
scion05 = { ... }: {
|
||||
imports = (imports 5);
|
||||
};
|
||||
};
|
||||
testScript = let
|
||||
pingAll = pkgs.writeShellScript "ping-all-scion.sh" ''
|
||||
addresses="42-ffaa:1:1 42-ffaa:1:2 42-ffaa:1:3 42-ffaa:1:4 42-ffaa:1:5"
|
||||
timeout=100
|
||||
wait_for_all() {
|
||||
for as in "$@"
|
||||
do
|
||||
scion showpaths $as --no-probe > /dev/null
|
||||
return 1
|
||||
done
|
||||
return 0
|
||||
}
|
||||
ping_all() {
|
||||
for as in "$@"
|
||||
do
|
||||
scion ping "$as,127.0.0.1" -c 3
|
||||
done
|
||||
return 0
|
||||
}
|
||||
for i in $(seq 0 $timeout); do
|
||||
wait_for_all $addresses && exit 0
|
||||
ping_all $addresses && exit 0
|
||||
sleep 1
|
||||
done
|
||||
'';
|
||||
in
|
||||
''
|
||||
# List of AS instances
|
||||
machines = [scion01, scion02, scion03, scion04, scion05]
|
||||
|
||||
# Wait for scion-control.service on all instances
|
||||
for i in machines:
|
||||
i.wait_for_unit("scion-control.service")
|
||||
|
||||
# Execute pingAll command on all instances
|
||||
for i in machines:
|
||||
i.succeed("${pingAll} >&2")
|
||||
|
||||
# Restart scion-dispatcher and ping again to test robustness
|
||||
for i in machines:
|
||||
i.succeed("systemctl restart scion-dispatcher >&2")
|
||||
i.succeed("${pingAll} >&2")
|
||||
'';
|
||||
})
|
51
nixos/tests/scion/freestanding-deployment/topology1.json
Normal file
51
nixos/tests/scion/freestanding-deployment/topology1.json
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"attributes": [
|
||||
"core"
|
||||
],
|
||||
"isd_as": "42-ffaa:1:1",
|
||||
"mtu": 1472,
|
||||
"control_service": {
|
||||
"cs": {
|
||||
"addr": "127.0.0.1:31000"
|
||||
}
|
||||
},
|
||||
"discovery_service": {
|
||||
"cs": {
|
||||
"addr": "127.0.0.1:31000"
|
||||
}
|
||||
},
|
||||
"border_routers": {
|
||||
"br": {
|
||||
"internal_addr": "127.0.0.1:31002",
|
||||
"interfaces": {
|
||||
"1": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.1:50014",
|
||||
"remote": "192.168.1.4:50014"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:4",
|
||||
"link_to": "child",
|
||||
"mtu": 1472
|
||||
},
|
||||
"2": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.1:50012",
|
||||
"remote": "192.168.1.2:50012"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:2",
|
||||
"link_to": "core",
|
||||
"mtu": 1472
|
||||
},
|
||||
"3": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.1:50013",
|
||||
"remote": "192.168.1.3:50013"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:3",
|
||||
"link_to": "core",
|
||||
"mtu": 1472
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
51
nixos/tests/scion/freestanding-deployment/topology2.json
Normal file
51
nixos/tests/scion/freestanding-deployment/topology2.json
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"attributes": [
|
||||
"core"
|
||||
],
|
||||
"isd_as": "42-ffaa:1:2",
|
||||
"mtu": 1472,
|
||||
"control_service": {
|
||||
"cs": {
|
||||
"addr": "127.0.0.1:31000"
|
||||
}
|
||||
},
|
||||
"discovery_service": {
|
||||
"cs": {
|
||||
"addr": "127.0.0.1:31000"
|
||||
}
|
||||
},
|
||||
"border_routers": {
|
||||
"br": {
|
||||
"internal_addr": "127.0.0.1:31002",
|
||||
"interfaces": {
|
||||
"1": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.2:50012",
|
||||
"remote": "192.168.1.1:50012"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:1",
|
||||
"link_to": "core",
|
||||
"mtu": 1472
|
||||
},
|
||||
"2": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.2:50023",
|
||||
"remote": "192.168.1.3:50023"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:3",
|
||||
"link_to": "core",
|
||||
"mtu": 1472
|
||||
},
|
||||
"3": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.2:50025",
|
||||
"remote": "192.168.1.5:50025"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:5",
|
||||
"link_to": "child",
|
||||
"mtu": 1472
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
60
nixos/tests/scion/freestanding-deployment/topology3.json
Normal file
60
nixos/tests/scion/freestanding-deployment/topology3.json
Normal file
@ -0,0 +1,60 @@
|
||||
{
|
||||
"attributes": [
|
||||
"core"
|
||||
],
|
||||
"isd_as": "42-ffaa:1:3",
|
||||
"mtu": 1472,
|
||||
"control_service": {
|
||||
"cs": {
|
||||
"addr": "127.0.0.1:31000"
|
||||
}
|
||||
},
|
||||
"discovery_service": {
|
||||
"cs": {
|
||||
"addr": "127.0.0.1:31000"
|
||||
}
|
||||
},
|
||||
"border_routers": {
|
||||
"br": {
|
||||
"internal_addr": "127.0.0.1:31002",
|
||||
"interfaces": {
|
||||
"1": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.3:50013",
|
||||
"remote": "192.168.1.1:50013"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:1",
|
||||
"link_to": "core",
|
||||
"mtu": 1472
|
||||
},
|
||||
"2": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.3:50023",
|
||||
"remote": "192.168.1.2:50023"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:2",
|
||||
"link_to": "core",
|
||||
"mtu": 1472
|
||||
},
|
||||
"3": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.3:50034",
|
||||
"remote": "192.168.1.4:50034"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:4",
|
||||
"link_to": "child",
|
||||
"mtu": 1472
|
||||
},
|
||||
"4": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.3:50035",
|
||||
"remote": "192.168.1.5:50035"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:5",
|
||||
"link_to": "child",
|
||||
"mtu": 1472
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
40
nixos/tests/scion/freestanding-deployment/topology4.json
Normal file
40
nixos/tests/scion/freestanding-deployment/topology4.json
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"attributes": [],
|
||||
"isd_as": "42-ffaa:1:4",
|
||||
"mtu": 1472,
|
||||
"control_service": {
|
||||
"cs": {
|
||||
"addr": "127.0.0.1:31000"
|
||||
}
|
||||
},
|
||||
"discovery_service": {
|
||||
"cs": {
|
||||
"addr": "127.0.0.1:31000"
|
||||
}
|
||||
},
|
||||
"border_routers": {
|
||||
"br": {
|
||||
"internal_addr": "127.0.0.1:31002",
|
||||
"interfaces": {
|
||||
"1": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.4:50014",
|
||||
"remote": "192.168.1.1:50014"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:1",
|
||||
"link_to": "parent",
|
||||
"mtu": 1472
|
||||
},
|
||||
"2": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.4:50034",
|
||||
"remote": "192.168.1.3:50034"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:3",
|
||||
"link_to": "parent",
|
||||
"mtu": 1472
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
40
nixos/tests/scion/freestanding-deployment/topology5.json
Normal file
40
nixos/tests/scion/freestanding-deployment/topology5.json
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"attributes": [],
|
||||
"isd_as": "42-ffaa:1:5",
|
||||
"mtu": 1472,
|
||||
"control_service": {
|
||||
"cs": {
|
||||
"addr": "127.0.0.1:31000"
|
||||
}
|
||||
},
|
||||
"discovery_service": {
|
||||
"cs": {
|
||||
"addr": "127.0.0.1:31000"
|
||||
}
|
||||
},
|
||||
"border_routers": {
|
||||
"br": {
|
||||
"internal_addr": "127.0.0.1:31002",
|
||||
"interfaces": {
|
||||
"1": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.5:50025",
|
||||
"remote": "192.168.1.2:50025"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:2",
|
||||
"link_to": "parent",
|
||||
"mtu": 1472
|
||||
},
|
||||
"2": {
|
||||
"underlay": {
|
||||
"public": "192.168.1.5:50035",
|
||||
"remote": "192.168.1.3:50035"
|
||||
},
|
||||
"isd_as": "42-ffaa:1:3",
|
||||
"link_to": "parent",
|
||||
"mtu": 1472
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
75
nixos/tests/ustreamer.nix
Normal file
75
nixos/tests/ustreamer.nix
Normal file
@ -0,0 +1,75 @@
|
||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
name = "ustreamer-vmtest";
|
||||
nodes = {
|
||||
client = {...}: {
|
||||
environment.systemPackages = [ pkgs.curl ];
|
||||
};
|
||||
camera = {config, ...}: let
|
||||
configFile = pkgs.writeText "akvcam-configFile" ''
|
||||
[Cameras]
|
||||
cameras/size = 2
|
||||
|
||||
cameras/1/type = output
|
||||
cameras/1/mode = mmap, userptr, rw
|
||||
cameras/1/description = Virtual Camera (output device)
|
||||
cameras/1/formats = 2
|
||||
cameras/1/videonr = 7
|
||||
|
||||
cameras/2/type = capture
|
||||
cameras/2/mode = mmap, rw
|
||||
cameras/2/description = Virtual Camera
|
||||
cameras/2/formats = 1, 2
|
||||
cameras/2/videonr = 9
|
||||
|
||||
[Connections]
|
||||
connections/size = 1
|
||||
connections/1/connection = 1:2
|
||||
|
||||
[Formats]
|
||||
formats/size = 2
|
||||
|
||||
formats/1/format = YUY2
|
||||
formats/1/width = 640
|
||||
formats/1/height = 480
|
||||
formats/1/fps = 30
|
||||
|
||||
formats/2/format = RGB24, YUY2
|
||||
formats/2/width = 640
|
||||
formats/2/height = 480
|
||||
formats/2/fps = 20/1, 15/2
|
||||
'';
|
||||
in {
|
||||
environment.systemPackages = [ pkgs.ustreamer ];
|
||||
networking.firewall.enable = false;
|
||||
systemd.services.ustreamer = {
|
||||
description = "ustreamer service";
|
||||
wantedBy = ["multi-user.target"];
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
ExecStart = "${pkgs.ustreamer}/bin/ustreamer --host=0.0.0.0 --port 8000 --device /dev/video9 --device-timeout=8";
|
||||
PrivateTmp = true;
|
||||
BindReadOnlyPaths = "/dev/video9";
|
||||
SupplementaryGroups = [
|
||||
"video"
|
||||
];
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
boot.extraModulePackages = [config.boot.kernelPackages.akvcam];
|
||||
boot.kernelModules = ["akvcam"];
|
||||
boot.extraModprobeConfig = ''
|
||||
options akvcam config_file=${configFile}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
camera.wait_for_unit("ustreamer.service")
|
||||
camera.wait_for_open_port(8000)
|
||||
|
||||
client.wait_for_unit("multi-user.target")
|
||||
client.succeed("curl http://camera:8000")
|
||||
'';
|
||||
})
|
@ -6,18 +6,19 @@
|
||||
, alsa-utils
|
||||
, alsa-lib
|
||||
, gtk4
|
||||
, openssl
|
||||
, wrapGAppsHook4
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "alsa-scarlett-gui";
|
||||
version = "0.3.3";
|
||||
version = "0.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "geoffreybennett";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-lIwDNyzuvolDhTVCslCtUfbsC/TxKtxQF97h0zYxp9k=";
|
||||
sha256 = "sha256-+74JRQn2xwgPHZSrp5b+uny0+aLnsFvx/cOKIdj4J40=";
|
||||
};
|
||||
|
||||
NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated-declarations" ];
|
||||
@ -25,7 +26,7 @@ stdenv.mkDerivation rec {
|
||||
makeFlags = [ "DESTDIR=\${out}" "PREFIX=''" ];
|
||||
sourceRoot = "${src.name}/src";
|
||||
nativeBuildInputs = [ pkg-config wrapGAppsHook4 makeWrapper ];
|
||||
buildInputs = [ gtk4 alsa-lib ];
|
||||
buildInputs = [ gtk4 alsa-lib openssl ];
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/alsa-scarlett-gui --prefix PATH : ${lib.makeBinPath [ alsa-utils ]}
|
||||
|
||||
@ -37,11 +38,11 @@ stdenv.mkDerivation rec {
|
||||
hardeningDisable = [ "fortify3" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "GUI for alsa controls presented by Focusrite Scarlett Gen 2/3 Mixer Driver";
|
||||
description = "GUI for alsa controls presented by Focusrite Scarlett Gen 2/3/4 Mixer Driver";
|
||||
mainProgram = "alsa-scarlett-gui";
|
||||
homepage = "https://github.com/geoffreybennett/alsa-scarlett-gui";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ sebtm ];
|
||||
maintainers = with maintainers; [ mdorman ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -5,11 +5,11 @@
|
||||
|
||||
let
|
||||
pname = "codux";
|
||||
version = "15.22.2";
|
||||
version = "15.23.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/wixplosives/codux-versions/releases/download/${version}/Codux-${version}.x86_64.AppImage";
|
||||
sha256 = "sha256-aYGZPoA2Tux6pmpZFShkZB+os34jZczXsfmYN/pu+Ic=";
|
||||
sha256 = "sha256-9ZzWsLEPEG+PDrDf9lU4ODGOD6/fvMbGBSo9BEQrkn4=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 { inherit pname version src; };
|
||||
|
@ -110,6 +110,27 @@ in
|
||||
variant = "macport";
|
||||
rev = "emacs-28.2-mac-9.1";
|
||||
hash = "sha256-Ne2jQ2nVLNiQmnkkOXVc5AkLVkTpm8pFC7VNY2gQjPE=";
|
||||
patches = fetchpatch: [
|
||||
# CVE-2022-45939
|
||||
(fetchpatch {
|
||||
url = "https://git.savannah.gnu.org/cgit/emacs.git/patch/?id=d48bb4874bc6cd3e69c7a15fc3c91cc141025c51";
|
||||
hash = "sha256-TiBQkexn/eb6+IqJNDqR/Rn7S7LVdHmL/21A5tGsyJs=";
|
||||
})
|
||||
|
||||
# https://lists.gnu.org/archive/html/emacs-devel/2024-03/msg00611.html
|
||||
(fetchpatch {
|
||||
url = "https://gitweb.gentoo.org/proj/emacs-patches.git/plain/emacs/28.2/10_all_org-macro-eval.patch?id=af40e12cb742510e5d40a06ffc6dfca97e340dd6";
|
||||
hash = "sha256-OdGt4e9JGjWJPkfJhbYsmQQc6jart4BH5aIKPIbWKFs=";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://gitweb.gentoo.org/proj/emacs-patches.git/plain/emacs/28.2/11_all_untrusted-content.patch?id=af40e12cb742510e5d40a06ffc6dfca97e340dd6";
|
||||
hash = "sha256-wa2bsnCt5yFx0+RAFZGBPI+OoKkbrfkkMer/KBEc/wA=";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://gitweb.gentoo.org/proj/emacs-patches.git/plain/emacs/28.2/12_all_org-remote-unsafe.patch?id=af40e12cb742510e5d40a06ffc6dfca97e340dd6";
|
||||
hash = "sha256-b6WU1o3PfDV/6BTPfPNUFny6oERJCNsDrvflxX3Yvek=";
|
||||
})
|
||||
];
|
||||
});
|
||||
|
||||
emacs29-macport = import ./make-emacs.nix (mkArgs {
|
||||
|
@ -16985,6 +16985,18 @@ final: prev:
|
||||
meta.homepage = "https://github.com/samodostal/image.nvim/";
|
||||
};
|
||||
|
||||
texpresso-vim = buildVimPlugin {
|
||||
pname = "texpresso.vim";
|
||||
version = "2024-03-08";
|
||||
src = fetchFromGitHub {
|
||||
owner = "let-def";
|
||||
repo = "texpresso.vim";
|
||||
rev = "04816dcdddc27e6c50fc2a4faff0ef1675a7ee8e";
|
||||
sha256 = "08lzl0g1b287agscd345yg9cmxsj2vlbg83s1mgsa13qn81y6jga";
|
||||
};
|
||||
meta.homepage = "https://github.com/let-def/texpresso.vim/";
|
||||
};
|
||||
|
||||
tinykeymap = buildVimPlugin {
|
||||
pname = "tinykeymap";
|
||||
version = "2024-02-17";
|
||||
|
@ -901,6 +901,7 @@ https://github.com/wincent/terminus/,,
|
||||
https://github.com/oberblastmeister/termwrapper.nvim/,,
|
||||
https://github.com/ternjs/tern_for_vim/,,
|
||||
https://github.com/KeitaNakamura/tex-conceal.vim/,,
|
||||
https://github.com/let-def/texpresso.vim/,HEAD,
|
||||
https://github.com/johmsalas/text-case.nvim/,HEAD,
|
||||
https://github.com/ron89/thesaurus_query.vim/,,
|
||||
https://github.com/itchyny/thumbnail.vim/,,
|
||||
|
@ -6,16 +6,17 @@
|
||||
, enableNewDynarec ? enableDynarec && stdenv.hostPlatform.isAarch
|
||||
, enableVncRenderer ? false
|
||||
, unfreeEnableDiscord ? false
|
||||
, unfreeEnableRoms ? false
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "86Box";
|
||||
version = "4.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "86Box";
|
||||
repo = "86Box";
|
||||
rev = "v${version}";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-JYOJFXiUTLRs6AEMYNx88PwcVw13ChQzV1ZE5OtX6Ds=";
|
||||
};
|
||||
|
||||
@ -48,38 +49,46 @@ stdenv.mkDerivation rec {
|
||||
++ lib.optional (!enableDynarec) "-DDYNAREC=OFF"
|
||||
++ lib.optional (!unfreeEnableDiscord) "-DDISCORD=OFF";
|
||||
|
||||
postInstall = lib.optional stdenv.isLinux ''
|
||||
postInstall = lib.optionalString stdenv.isLinux ''
|
||||
install -Dm644 -t $out/share/applications $src/src/unix/assets/net.86box.86Box.desktop
|
||||
|
||||
for size in 48 64 72 96 128 192 256 512; do
|
||||
install -Dm644 -t $out/share/icons/hicolor/"$size"x"$size"/apps \
|
||||
$src/src/unix/assets/"$size"x"$size"/net.86box.86Box.png
|
||||
done;
|
||||
''
|
||||
+ lib.optionalString unfreeEnableRoms ''
|
||||
mkdir -p $out/share/86Box
|
||||
ln -s ${finalAttrs.passthru.roms} $out/share/86Box/roms
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
roms = fetchFromGitHub {
|
||||
owner = "86Box";
|
||||
repo = "roms";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-1HtoizO0QIGNjQTW0clzRp40h1ulw55+iTYz12UJSms=";
|
||||
};
|
||||
};
|
||||
|
||||
# Some libraries are loaded dynamically, but QLibrary doesn't seem to search
|
||||
# the runpath, so use a wrapper instead.
|
||||
postFixup = let
|
||||
preFixup = let
|
||||
libPath = lib.makeLibraryPath ([
|
||||
libpcap
|
||||
] ++ lib.optional unfreeEnableDiscord discord-gamesdk);
|
||||
libPathVar = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
|
||||
in
|
||||
''
|
||||
wrapProgram $out/bin/86Box \
|
||||
"''${qtWrapperArgs[@]}" \
|
||||
--prefix ${libPathVar} : "${libPath}"
|
||||
in ''
|
||||
makeWrapperArgs+=(--prefix ${libPathVar} : "${libPath}")
|
||||
'';
|
||||
|
||||
# Do not wrap twice.
|
||||
dontWrapQtApps = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Emulator of x86-based machines based on PCem.";
|
||||
mainProgram = "86Box";
|
||||
homepage = "https://86box.net/";
|
||||
license = with licenses; [ gpl2Only ] ++ optional unfreeEnableDiscord unfree;
|
||||
license = with licenses; [ gpl2Only ]
|
||||
++ optional (unfreeEnableDiscord || unfreeEnableRoms) unfree;
|
||||
maintainers = [ maintainers.jchw ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
@ -1,4 +1,5 @@
|
||||
{ lib, stdenv
|
||||
{ lib
|
||||
, stdenv
|
||||
, cmake
|
||||
, fetchFromGitHub
|
||||
, wrapQtAppsHook
|
||||
@ -93,6 +94,7 @@ stdenv.mkDerivation rec {
|
||||
description = "Very customizable imageboard/booru downloader with powerful filenaming features";
|
||||
license = licenses.asl20;
|
||||
homepage = "https://bionus.github.io/imgbrd-grabber/";
|
||||
mainProgram = "Grabber";
|
||||
maintainers = [ maintainers.evanjs ];
|
||||
};
|
||||
}
|
||||
|
@ -16,7 +16,6 @@
|
||||
cudaSupport ? config.cudaSupport,
|
||||
dbus,
|
||||
embree,
|
||||
fetchpatch,
|
||||
fetchurl,
|
||||
fetchzip,
|
||||
ffmpeg,
|
||||
@ -68,7 +67,7 @@
|
||||
pkg-config,
|
||||
potrace,
|
||||
pugixml,
|
||||
python310Packages, # must use instead of python3.pkgs, see https://github.com/NixOS/nixpkgs/issues/211340
|
||||
python311Packages, # must use instead of python3.pkgs, see https://github.com/NixOS/nixpkgs/issues/211340
|
||||
rocmPackages, # comes with a significantly larger closure size
|
||||
runCommand,
|
||||
spaceNavSupport ? stdenv.isLinux,
|
||||
@ -82,7 +81,7 @@
|
||||
}:
|
||||
|
||||
let
|
||||
python3Packages = python310Packages;
|
||||
python3Packages = python311Packages;
|
||||
python3 = python3Packages.python;
|
||||
pyPkgsOpenusd = python3Packages.openusd.override { withOsl = false; };
|
||||
|
||||
@ -100,25 +99,14 @@ in
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "blender";
|
||||
version = "4.0.2";
|
||||
version = "4.1.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.blender.org/source/${finalAttrs.pname}-${finalAttrs.version}.tar.xz";
|
||||
hash = "sha256-qqDnKdp1kc+/RXcq92NFl32qp7EaCvNdmPkxPiRgd6M=";
|
||||
hash = "sha256-3AAtguPDQMk4VcZoRzDQGAG2aaKbHMa3XuuZC6aecj8=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./draco.patch
|
||||
(fetchpatch {
|
||||
url = "https://projects.blender.org/blender/blender/commit/cf4365e555a759d5b3225bce77858374cb07faad.diff";
|
||||
hash = "sha256-Nypd04yFSHYa7RBa8kNmoApqJrU4qpaOle3tkj44d4g=";
|
||||
})
|
||||
(fetchpatch {
|
||||
# https://projects.blender.org/blender/blender/issues/117145
|
||||
url = "https://projects.blender.org/blender/blender/commit/eb99895c972b6c713294f68a34798aa51d36034a.patch";
|
||||
hash = "sha256-95nG5mW408lhKJ2BppgaUwBMMeXeGyBqho6mCfB53GI=";
|
||||
})
|
||||
] ++ lib.optional stdenv.isDarwin ./darwin.patch;
|
||||
patches = [ ./draco.patch ] ++ lib.optional stdenv.isDarwin ./darwin.patch;
|
||||
|
||||
postPatch =
|
||||
(
|
||||
@ -247,7 +235,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
]
|
||||
++ lib.optionals (!stdenv.isAarch64) [
|
||||
embree
|
||||
openimagedenoise
|
||||
(openimagedenoise.override { inherit cudaSupport; })
|
||||
]
|
||||
++ (
|
||||
if (!stdenv.isDarwin) then
|
||||
|
@ -6,6 +6,9 @@
|
||||
, autoreconfHook
|
||||
, pkg-config
|
||||
|
||||
, waylandSupport ? true
|
||||
, x11Support ? true
|
||||
|
||||
, cairo
|
||||
, glib
|
||||
, libnotify
|
||||
@ -13,6 +16,8 @@
|
||||
, wl-clipboard
|
||||
, xclip
|
||||
, xsel
|
||||
, xdotool
|
||||
, wtype
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
@ -38,9 +43,12 @@ stdenv.mkDerivation rec {
|
||||
postFixup = ''
|
||||
chmod +x $out/share/rofi-emoji/clipboard-adapter.sh
|
||||
wrapProgram $out/share/rofi-emoji/clipboard-adapter.sh \
|
||||
--prefix PATH ":" ${lib.makeBinPath [ libnotify wl-clipboard xclip xsel ]}
|
||||
--prefix PATH ":" ${lib.makeBinPath ([ libnotify wl-clipboard xclip xsel ]
|
||||
++ lib.optionals waylandSupport [ wtype ]
|
||||
++ lib.optionals x11Support [ xdotool ])}
|
||||
'';
|
||||
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
pkg-config
|
||||
|
@ -1,11 +1,11 @@
|
||||
{
|
||||
stable = {
|
||||
chromedriver = {
|
||||
hash_darwin = "sha256-yRLbe3xl0L/PfRcVB4LA6JeDvLpgUhtKZiAfyB2v/ZE=";
|
||||
hash_darwin = "sha256-sB6gH5k5zK1IIctBTXQpxlgmLEoIatcLDYO+WIFaYxA=";
|
||||
hash_darwin_aarch64 =
|
||||
"sha256-TMreCFF9Lo+9gy7kzZWd9Mjep0CYa3Cxn4kr9BNTdkE=";
|
||||
hash_linux = "sha256-rM2usA0zDZ1aXvkbvm+l0xalViEJIxu8ZYZvoTkNiis=";
|
||||
version = "123.0.6312.58";
|
||||
"sha256-sikyGQG0Y14eNjT3f/Z50cPmm38T58X7zQIGopXOHOs=";
|
||||
hash_linux = "sha256-2WZmRXyvxN3hXeOoPQXL6lU6Xki9iUmTdETRxOkIYD0=";
|
||||
version = "123.0.6312.86";
|
||||
};
|
||||
deps = {
|
||||
gn = {
|
||||
@ -15,9 +15,9 @@
|
||||
version = "2024-02-19";
|
||||
};
|
||||
};
|
||||
hash = "sha256-GrCYCUjxV16tinqrIqW4DQD51dKIgKNu2fLLz9Yqq7k=";
|
||||
hash_deb_amd64 = "sha256-z+UC7wUsWAX7kPIgk8S9ujW2n6HlUp0m3zHTvsAiTps=";
|
||||
version = "123.0.6312.58";
|
||||
hash = "sha256-b72MiRv4uxolKE92tK224FvyA56NM3FcCjijkc9m3ro=";
|
||||
hash_deb_amd64 = "sha256-JsEJw8aEptesRiCtIrfHRQu1xq27TzHSmUr+dsvnV7o=";
|
||||
version = "123.0.6312.86";
|
||||
};
|
||||
ungoogled-chromium = {
|
||||
deps = {
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "cilium-cli";
|
||||
version = "0.16.0";
|
||||
version = "0.16.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cilium";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-RJJETvgLdE/fJtd1LMShJ7Hm8/s1zUybhec6YPT44wg=";
|
||||
hash = "sha256-WD0CUPl9Qkalhog2IbefMkiLiVZFW59X21sYH4hUqZs=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "fn";
|
||||
version = "0.6.29";
|
||||
version = "0.6.30";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fnproject";
|
||||
repo = "cli";
|
||||
rev = version;
|
||||
hash = "sha256-hN9Kok2+ZNYZsG+3ffzr1jGfIMg99JzgzC0x585KDF4=";
|
||||
hash = "sha256-1j0Hd/SYoBhelCIFUFxkByczWSYFXjTE9TVH9E3Km+Y=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
@ -9,13 +9,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "kaniko";
|
||||
version = "1.21.1";
|
||||
version = "1.22.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "GoogleContainerTools";
|
||||
repo = "kaniko";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-mVoXJPNkG0VPTaZ1pg6oB5qa/bYQa9Gn82CoGRsVwWg=";
|
||||
hash = "sha256-EL54lr5i6F4F9sdjQJZ3X+mmj4tWXVX2db8CkRe8WzI=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "krelay";
|
||||
version = "0.0.8";
|
||||
version = "0.0.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "knight42";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-KR5lBLgzv9yjL3JvCjg8dxXWmPgagnnKxYtrPunAyXY=";
|
||||
hash = "sha256-8UMbSsZzk9GPQR+d8ybqRQa1ouL6h8nzk/O7j0jJyk4=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-vaWdJyPOLsrLrhipBvUCOHo/TjnJz4Qpvj3lvUPHomU=";
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "popeye";
|
||||
version = "0.21.1";
|
||||
version = "0.21.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
rev = "v${version}";
|
||||
owner = "derailed";
|
||||
repo = "popeye";
|
||||
sha256 = "sha256-zk3SMIvaFV6t+VCMvcmMaHpTEYx/LinaPLNXUU+JSwk=";
|
||||
sha256 = "sha256-NhQER6XeicpQY0rYisGvkUCHYsURJqt6xVKc9F0CmtE=";
|
||||
};
|
||||
|
||||
ldflags = [
|
||||
|
@ -13,11 +13,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "appflowy";
|
||||
version = "0.5.2";
|
||||
version = "0.5.3";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/AppFlowy-IO/appflowy/releases/download/${version}/AppFlowy-${version}-linux-x86_64.tar.gz";
|
||||
hash = "sha256-yXrdV/m6Ss9DyYleA5K7Wz1RUa8fznDJl5Yvco+jaiA=";
|
||||
hash = "sha256-BFPtT8/DvSsZY1ckrXRZn6F0+pSRRZLoqc638JKUpjQ=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
@ -8,11 +8,11 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "quisk";
|
||||
version = "4.2.29";
|
||||
version = "4.2.30";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-xG6nRSk0txUMPPuNRK+hOeqLfCfPt6KcacAtcdZT5E8=";
|
||||
sha256 = "sha256-1CpIb8Hj9hpsOkxhY3HNKaYYbWa5cZY5//WAzeuvY/o=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -10,13 +10,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "iqtree";
|
||||
version = "2.2.2.7";
|
||||
version = "2.3.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "iqtree";
|
||||
repo = "iqtree2";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-XyjVo5TYMoB+ZOAGc4ivYqFGnEO1M7mhxXrG45TP44Y=";
|
||||
hash = "sha256-GaNumiTGa6mxvFifv730JFgKrRxG41gJN+ci3imDbzs=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
let
|
||||
pname = "alt-ergo";
|
||||
version = "2.5.2";
|
||||
version = "2.5.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/OCamlPro/alt-ergo/releases/download/v${version}/alt-ergo-${version}.tbz";
|
||||
hash = "sha256-9GDBcBH49sheO5AjmDsznMEbw0JSrnSOcIIRN40/aJU=";
|
||||
hash = "sha256-tmWLZBLfdmfYlCQq+zcUneeueDAE6AJeZMy8kfNCC04=";
|
||||
};
|
||||
in
|
||||
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cytoscape";
|
||||
version = "3.10.1";
|
||||
version = "3.10.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/cytoscape/cytoscape/releases/download/${version}/${pname}-unix-${version}.tar.gz";
|
||||
sha256 = "sha256-fqxAsnpMYCYj0hW2oxu/NH4PqesRlWPs5eDSeSjy1aU=";
|
||||
sha256 = "sha256-ArT+g3GbtSxq3FvRi1H4z/kpsmcFCmKhzEJI4bCK44E=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -20,12 +20,12 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "gitea";
|
||||
version = "1.21.9";
|
||||
version = "1.21.10";
|
||||
|
||||
# not fetching directly from the git repo, because that lacks several vendor files for the web UI
|
||||
src = fetchurl {
|
||||
url = "https://dl.gitea.com/gitea/${version}/gitea-src-${version}.tar.gz";
|
||||
hash = "sha256-4o5pSkC9jl8rI68naorDrRE4Rm0/chj3+cRxZqoziIU=";
|
||||
hash = "sha256-g/aDRIAKaPi8AWWJL4N8CZt2N4HBEWK7xSBvjrcPDD8=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
@ -5,13 +5,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "droidcam";
|
||||
version = "2.1.2";
|
||||
version = "2.1.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "aramg";
|
||||
repo = "droidcam";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-NZ6sKLE/Sq4VBJSf7iG0CgdVwmU8JXQH/utbobBEFi0=";
|
||||
sha256 = "sha256-Pwq7PDj+MH1wzrUyfva2F2+oELm4Sb1EJPUUCsHYb7k=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -637,7 +637,7 @@ rec {
|
||||
if tag != null
|
||||
then tag
|
||||
else
|
||||
lib.head (lib.strings.splitString "-" (baseNameOf result.outPath));
|
||||
lib.head (lib.strings.splitString "-" (baseNameOf (builtins.unsafeDiscardStringContext result.outPath)));
|
||||
} ''
|
||||
${lib.optionalString (tag == null) ''
|
||||
outName="$(basename "$out")"
|
||||
@ -1001,7 +1001,7 @@ rec {
|
||||
if tag != null
|
||||
then tag
|
||||
else
|
||||
lib.head (lib.strings.splitString "-" (baseNameOf conf.outPath));
|
||||
lib.head (lib.strings.splitString "-" (baseNameOf (builtins.unsafeDiscardStringContext conf.outPath)));
|
||||
paths = buildPackages.referencesByPopularity overallClosure;
|
||||
nativeBuildInputs = [ jq ];
|
||||
} ''
|
||||
|
@ -4,9 +4,9 @@ version = 3
|
||||
|
||||
[[package]]
|
||||
name = "eyre"
|
||||
version = "0.6.11"
|
||||
version = "0.6.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799"
|
||||
checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec"
|
||||
dependencies = [
|
||||
"indenter",
|
||||
"once_cell",
|
||||
|
@ -7,16 +7,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "ast-grep";
|
||||
version = "0.19.4";
|
||||
version = "0.20.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ast-grep";
|
||||
repo = "ast-grep";
|
||||
rev = version;
|
||||
hash = "sha256-hKqj3LVu/3ndGoZQYyH1yCm5vF0/Ck5bkTKjLIkcUys=";
|
||||
hash = "sha256-vOHBrz/a42jRyQs7oJLkg3/ra3SMR9FKuiwJ9RrFizw=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-Fli97ANWHZvvBC6hImymELkpBqqrAOm006LROj3R3sM=";
|
||||
cargoHash = "sha256-T30V9FYNmh2Rg5ZFc9elcf4ZbTR1vwieirawEs3a4sI=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
65
pkgs/by-name/bt/bt-migrate/package.nix
Normal file
65
pkgs/by-name/bt/bt-migrate/package.nix
Normal file
@ -0,0 +1,65 @@
|
||||
{ lib
|
||||
, boost
|
||||
, cmake
|
||||
, cxxopts
|
||||
, digestpp
|
||||
, fetchFromGitHub
|
||||
, fmt
|
||||
, jsoncons
|
||||
, pugixml
|
||||
, sqlite
|
||||
, sqlite_orm
|
||||
, stdenv
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
pname = "bt-migrate";
|
||||
version = "0-unstable-2023-08-17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mikedld";
|
||||
repo = "bt-migrate";
|
||||
rev = "e15a489c0c76f98355586ebbee08223af4e9bf50";
|
||||
hash = "sha256-kA6yxhbIh3ThmgF8Zyoe3I79giLVmdNr9IIrw5Xx4s0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
cxxopts
|
||||
fmt
|
||||
jsoncons
|
||||
pugixml
|
||||
sqlite_orm
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.strings.cmakeBool "USE_VCPKG" false)
|
||||
# NOTE: digestpp does not have proper CMake packaging (yet?)
|
||||
(lib.strings.cmakeBool "USE_FETCHCONTENT" true)
|
||||
(lib.strings.cmakeFeature "FETCHCONTENT_SOURCE_DIR_DIGESTPP" "${digestpp}/include/digestpp")
|
||||
];
|
||||
|
||||
# NOTE: no install target in CMake...
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
cp BtMigrate $out/bin
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Torrent state migration tool";
|
||||
homepage = "https://github.com/mikedld/bt-migrate?tab=readme-ov-file";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ ambroisie ];
|
||||
mainProgram = "BtMigrate";
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
32
pkgs/by-name/cg/cgterm/package.nix
Normal file
32
pkgs/by-name/cg/cgterm/package.nix
Normal file
@ -0,0 +1,32 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, SDL
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "cg-term";
|
||||
version = "1.7b2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MagerValp";
|
||||
repo = "CGTerm";
|
||||
rev = "01e35d64c29bccee52211b0afc66035a10e4792a"; # no tags
|
||||
hash = "sha256-Gk7t9wnVCRWwnqcItS3j031VqJnBqk6rHw1SABtzqfE=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
SDL
|
||||
];
|
||||
|
||||
makeFlags = [ "CC:=$(CC)" "PREFIX=$(out)" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "C/G telnet client for C64 BBS's";
|
||||
homepage = "https://github.com/MagerValp/CGTerm";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [ matthewcroughan ];
|
||||
mainProgram = "cg-term";
|
||||
platforms = platforms.all;
|
||||
};
|
||||
})
|
507
pkgs/by-name/cr/crunchy-cli/Cargo.lock
generated
507
pkgs/by-name/cr/crunchy-cli/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -5,17 +5,18 @@
|
||||
, openssl
|
||||
, pkg-config
|
||||
, rustPlatform
|
||||
, nix-update-script
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "crunchy-cli";
|
||||
version = "3.2.5";
|
||||
version = "3.3.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "crunchy-labs";
|
||||
repo = "crunchy-cli";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-hzmTwUd+bQwr+5UtXKMalJZUDxOC5nhXNTXbYZN8xtA=";
|
||||
hash = "sha256-qpbAUqtSOLO1m4gF7+rwArIEpbGnssqw1B/kPrmOhm0=";
|
||||
};
|
||||
|
||||
cargoLock = {
|
||||
@ -39,11 +40,13 @@ rustPlatform.buildRustPackage rec {
|
||||
OPENSSL_NO_VENDOR = true;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Command-line downloader for Crunchyroll";
|
||||
homepage = "https://github.com/crunchy-labs/crunchy-cli";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ stepbrobd ];
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ stepbrobd ];
|
||||
mainProgram = "crunchy-cli";
|
||||
};
|
||||
}
|
||||
|
32
pkgs/by-name/di/digestpp/package.nix
Normal file
32
pkgs/by-name/di/digestpp/package.nix
Normal file
@ -0,0 +1,32 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, stdenvNoCC
|
||||
}:
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "digestpp";
|
||||
version = "0-unstable-2023-11-07";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kerukuro";
|
||||
repo = "digestpp";
|
||||
rev = "ebb699402c244e22c3aff61d2239bcb2e87b8ef8";
|
||||
hash = "sha256-9X/P7DgZB6bSYjQWRli4iAXEFjhmACOVv3EYQrXuH5c=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/include/digestpp
|
||||
cp -r *.hpp algorithm/ detail/ $out/include/digestpp
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "C++11 header-only message digest library";
|
||||
homepage = "https://github.com/kerukuro/digestpp";
|
||||
license = licenses.unlicense;
|
||||
maintainers = with maintainers; [ ambroisie ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
26
pkgs/by-name/di/dipc/package.nix
Normal file
26
pkgs/by-name/di/dipc/package.nix
Normal file
@ -0,0 +1,26 @@
|
||||
{ lib
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "dipc";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "doprz";
|
||||
repo = "dipc";
|
||||
rev = "bf578bd9474084b7099ef665138667e486dce671";
|
||||
hash = "sha256-RXEC8bwdnUOaDmYIb7ci/JD+vi16tBn55FRsUmwaRzk=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-XQ85T64K1NLdSOtAFr0XluvFNTaHzoWKxoQtBQ+uSKQ=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Convert your favorite images and wallpapers with your favorite color palettes/themes";
|
||||
homepage = "https://github.com/doprz/dipc";
|
||||
license = with licenses; [ mit asl20 ];
|
||||
maintainers = with maintainers; [ ByteSudoer ];
|
||||
mainProgram = "dipc";
|
||||
};
|
||||
}
|
45
pkgs/by-name/dm/dmalloc/package.nix
Normal file
45
pkgs/by-name/dm/dmalloc/package.nix
Normal file
@ -0,0 +1,45 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, testers
|
||||
, dmalloc
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dmalloc";
|
||||
version = "5.6.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "j256";
|
||||
repo = "dmalloc";
|
||||
rev = "dmalloc_release_${lib.replaceStrings ["."] ["_"] version}";
|
||||
hash = "sha256-P63I9s32C3v1q+Sy9joK0HKYb0ebBu9g72tTTwxvkz8=";
|
||||
};
|
||||
|
||||
configureFlags = [
|
||||
"--enable-cxx"
|
||||
"--enable-shlib"
|
||||
"--enable-threads"
|
||||
];
|
||||
|
||||
passthru.tests.version = testers.testVersion {
|
||||
package = dmalloc;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Debug Malloc memory allocation debugging C library";
|
||||
longDescription = ''
|
||||
The debug memory allocation or "dmalloc" library has been designed as a
|
||||
drop in replacement for the system's malloc, realloc, calloc, free and
|
||||
other memory management routines while providing powerful debugging
|
||||
facilities configurable at runtime. These facilities include such things
|
||||
as memory-leak tracking, fence-post write detection, file/line number
|
||||
reporting, and general logging of statistics.
|
||||
'';
|
||||
homepage = "https://dmalloc.com";
|
||||
license = licenses.isc;
|
||||
maintainers = with maintainers; [ azahi ];
|
||||
platforms = platforms.all;
|
||||
mainProgram = "dmalloc";
|
||||
};
|
||||
}
|
@ -5,13 +5,13 @@ rustPlatform.buildRustPackage rec {
|
||||
# Since then, `dust` has been freed up, allowing this package to take that attribute.
|
||||
# However in order for tools like `nix-env` to detect package updates, keep `du-dust` for pname.
|
||||
pname = "du-dust";
|
||||
version = "0.9.0";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bootandy";
|
||||
repo = "dust";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-5X7gRMTUrG6ecZnwExBTadOJo/HByohTMDsgxFmp1HM=";
|
||||
hash = "sha256-KTsB9QqcLafG2XNj8PdkzwVrFDmpBQzNyDLajT/JDz0=";
|
||||
# Remove unicode file names which leads to different checksums on HFS+
|
||||
# vs. other filesystems because of unicode normalisation.
|
||||
postFetch = ''
|
||||
@ -19,7 +19,7 @@ rustPlatform.buildRustPackage rec {
|
||||
'';
|
||||
};
|
||||
|
||||
cargoHash = "sha256-uc7jbA8HqsH1bSJgbnUVT/f7F7kZJ4Jf3yyFvseH7no=";
|
||||
cargoHash = "sha256-d6Mnuo6JlbuHUGz+UCmC8jvNks3SpeP/aNQGXHBzB+8=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
@ -36,7 +36,7 @@ rustPlatform.buildRustPackage rec {
|
||||
description = "du + rust = dust. Like du but more intuitive";
|
||||
homepage = "https://github.com/bootandy/dust";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ infinisil ];
|
||||
maintainers = with maintainers; [ aaronjheng ];
|
||||
mainProgram = "dust";
|
||||
};
|
||||
}
|
||||
|
39
pkgs/by-name/et/ethercat/package.nix
Normal file
39
pkgs/by-name/et/ethercat/package.nix
Normal file
@ -0,0 +1,39 @@
|
||||
{ autoreconfHook
|
||||
, cmake
|
||||
, lib
|
||||
, pkg-config
|
||||
, stdenv
|
||||
, fetchFromGitLab
|
||||
, gitUpdater
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "ethercat";
|
||||
version = "1.6-alpha";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "etherlab.org";
|
||||
repo = "ethercat";
|
||||
rev = "refs/tags/${finalAttrs.version}";
|
||||
hash = "sha256-kzyA6h0rZFEROLcFZoU+2fIQ/Y0NwtdPuliKDbwkHrE=";
|
||||
};
|
||||
|
||||
separateDebugInfo = true;
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkg-config ];
|
||||
|
||||
configureFlags = [
|
||||
"--enable-userlib=yes"
|
||||
"--enable-kernel=no"
|
||||
];
|
||||
|
||||
passthru.updateScript = gitUpdater { };
|
||||
|
||||
meta = with lib; {
|
||||
description = "IgH EtherCAT Master for Linux";
|
||||
homepage = "https://etherlab.org/ethercat";
|
||||
changelog = "https://gitlab.com/etherlab.org/ethercat/-/blob/${finalAttrs.version}/NEWS";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ stv0g ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
})
|
@ -17,16 +17,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "eza";
|
||||
version = "0.18.8";
|
||||
version = "0.18.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "eza-community";
|
||||
repo = "eza";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-VKBiISHZmSqLf/76svKHqmQtsj+Trz41GhCJxgGY76Y=";
|
||||
hash = "sha256-SXGJTxTHCizgVBLp5fO5Appfe1B3+DFrobxc/aIlJRo=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-xFLnd0Pw3AtA4Nrg5rlqJj0fYOZ2xeNtS5vnAMWk4sc=";
|
||||
cargoHash = "sha256-COq1WSX7DUoXb7ojISyzmDV/a3zqXI0oKCSsPPi4/CA=";
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config installShellFiles pandoc ];
|
||||
buildInputs = [ zlib ]
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
buildDotnetGlobalTool {
|
||||
pname = "fantomas";
|
||||
version = "6.2.3";
|
||||
version = "6.3.0";
|
||||
|
||||
nugetSha256 = "sha256-Aol10o5Q7l8s6SdX0smVdi3ec2IgAx+gMksAMjXhIfU=";
|
||||
nugetSha256 = "sha256-PWiyzkiDL8LBE/fwClS0d6PrE0D5pKYYZiMDZmyk9Y0=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "F# source code formatter";
|
||||
|
@ -10,13 +10,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "fastcdr";
|
||||
version = "2.2.0";
|
||||
version = "2.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "eProsima";
|
||||
repo = "Fast-CDR";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-hhYNgBLJCTZV/fgHEH7rxlTy+qpShAykxHLbPtPA/Uw=";
|
||||
hash = "sha256-9eIPGGrDBsxLbX+oR++jg8ddUYKOC3nLnqg0q1bxPZU=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
83
pkgs/by-name/fa/fastqc/package.nix
Normal file
83
pkgs/by-name/fa/fastqc/package.nix
Normal file
@ -0,0 +1,83 @@
|
||||
{ lib,
|
||||
stdenv,
|
||||
fetchzip,
|
||||
jre,
|
||||
perl,
|
||||
makeWrapper,
|
||||
imagemagick,
|
||||
makeDesktopItem,
|
||||
copyDesktopItems,
|
||||
desktopToDarwinBundle,
|
||||
testers
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "fastqc";
|
||||
version = "0.12.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v${finalAttrs.version}.zip";
|
||||
hash = "sha256-TenRG2x8ivJ2HM2ZpLaJShp0yI0Qc6K5lW5/NJFAa1I";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper imagemagick ]
|
||||
++ lib.optional stdenv.isLinux copyDesktopItems # postInstallHook
|
||||
++ lib.optional stdenv.isDarwin desktopToDarwinBundle; #fixupOutputHook
|
||||
buildInputs = [ jre perl];
|
||||
|
||||
desktopItem = (makeDesktopItem {
|
||||
name = "FastQC";
|
||||
exec = "fastqc";
|
||||
icon = "fastqc";
|
||||
desktopName = "FastQC";
|
||||
comment = finalAttrs.meta.description;
|
||||
categories = [ "Science" ];
|
||||
});
|
||||
desktopItems = [ finalAttrs.desktopItem ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/{bin,FastQC}
|
||||
cp -r $src/* $out/FastQC
|
||||
|
||||
# Create desktop item
|
||||
mkdir -p $out/share/{applications,icons}
|
||||
# Freedesktop doesn't support windows ICO files. Use imagemagick to convert it to PNG
|
||||
convert $out/FastQC/fastqc_icon.ico $out/share/icons/fastqc.png
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
makeWrapper $out/FastQC/fastqc $out/bin/fastqc --prefix PATH : ${jre}/bin
|
||||
'';
|
||||
|
||||
passthru.tests.version = testers.testVersion {
|
||||
package = finalAttrs.finalPackage;
|
||||
version = "v${finalAttrs.version}";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "A quality control application for high throughput sequence data";
|
||||
longDescription = ''
|
||||
FastQC aims to provide a simple way to do some quality control checks on raw sequence data coming from high throughput sequencing pipelines. It provides a modular set of analyses which you can use to give a quick impression of whether your data has any problems of which you should be aware before doing any further analysis.
|
||||
|
||||
The main functions of FastQC are
|
||||
|
||||
- Import of data from BAM, SAM or FastQ files (any variant)
|
||||
- Providing a quick overview to tell you in which areas there may be problems
|
||||
- Summary graphs and tables to quickly assess your data
|
||||
- Export of results to an HTML based permanent report
|
||||
- Offline operation to allow automated generation of reports without running the interactive application
|
||||
'';
|
||||
homepage = "https://www.bioinformatics.babraham.ac.uk/projects/fastqc/";
|
||||
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
|
||||
license = with lib.licenses; [ gpl3Plus asl20 ];
|
||||
maintainers = [ lib.maintainers.dflores ];
|
||||
mainProgram = "fastqc";
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
})
|
@ -2,15 +2,17 @@
|
||||
, installShellFiles
|
||||
, lib
|
||||
, libftdi1
|
||||
, libgpiod_1
|
||||
, libgpiod
|
||||
, libjaylink
|
||||
, libusb1
|
||||
, pciutils
|
||||
, pkg-config
|
||||
, stdenv
|
||||
, withJlink ? true
|
||||
, withGpio ? stdenv.isLinux
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "flashprog";
|
||||
version = "1.0.1";
|
||||
|
||||
@ -24,24 +26,36 @@ stdenv.mkDerivation rec {
|
||||
installShellFiles
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libftdi1
|
||||
libjaylink
|
||||
libusb1
|
||||
] ++ lib.optionals (!stdenv.isDarwin) [
|
||||
libgpiod_1
|
||||
pciutils
|
||||
] ++ lib.optionals (withJlink) [
|
||||
libjaylink
|
||||
] ++ lib.optionals (withGpio) [
|
||||
libgpiod
|
||||
];
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" "libinstall" ]
|
||||
++ lib.optionals stdenv.isDarwin [ "CONFIG_ENABLE_LIBPCI_PROGRAMMERS=no" ]
|
||||
++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [ "CONFIG_INTERNAL_X86=no" "CONFIG_INTERNAL_DMI=no" "CONFIG_RAYER_SPI=0" ];
|
||||
makeFlags =
|
||||
let
|
||||
yesNo = flag: if flag then "yes" else "no";
|
||||
in
|
||||
[
|
||||
"libinstall"
|
||||
"PREFIX=$(out)"
|
||||
"CONFIG_JLINK_SPI=${yesNo withJlink}"
|
||||
"CONFIG_LINUX_GPIO_SPI=${yesNo withGpio}"
|
||||
"CONFIG_ENABLE_LIBPCI_PROGRAMMERS=${yesNo (!stdenv.isDarwin)}"
|
||||
"CONFIG_INTERNAL_X86=${yesNo (!(stdenv.isDarwin) && stdenv.isx86_64)}"
|
||||
"CONFIG_INTERNAL_DMI=${yesNo (!(stdenv.isDarwin) && stdenv.isx86_64)}"
|
||||
"CONFIG_RAYER_SPI=${yesNo (!(stdenv.isDarwin) && stdenv.isx86_64)}"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://flashprog.org";
|
||||
description = "Utility for reading, writing, erasing and verifying flash ROM chips";
|
||||
license = with licenses; [ gpl2 gpl2Plus ];
|
||||
license = with licenses; [ gpl2Plus ];
|
||||
maintainers = with maintainers; [ felixsinger ];
|
||||
platforms = platforms.all;
|
||||
mainProgram = "flashprog";
|
||||
|
36
pkgs/by-name/gl/glas/package.nix
Normal file
36
pkgs/by-name/gl/glas/package.nix
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
lib,
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "glas";
|
||||
version = "0.2.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "maurobalbi";
|
||||
repo = "glas";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-y1sPDCHIfECEhKP6EQs3kDrX/yM+ni0irfPe1c50jJU=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-h27NqsVOW+LM83xtSAV7cvlRbznGE87aJb2/WeSmfOY=";
|
||||
|
||||
doInstallCheck = true;
|
||||
postInstallCheck = ''
|
||||
$out/bin/glas --help > /dev/null
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "A language server for the Gleam programming language.";
|
||||
homepage = "https://github.com/maurobalbi/glas";
|
||||
changelog = "https://github.com/maurobalbi/glas/tag/v${version}";
|
||||
license = with lib.licenses; [
|
||||
asl20
|
||||
mit
|
||||
];
|
||||
mainProgram = "glas";
|
||||
maintainers = with lib.maintainers; [ payas ];
|
||||
};
|
||||
}
|
@ -13,24 +13,23 @@
|
||||
, graphene
|
||||
, gst_all_1
|
||||
, glib-networking
|
||||
, darwin
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "glide-media-player";
|
||||
version = "0.6.2";
|
||||
version = "0.6.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "philn";
|
||||
repo = "glide";
|
||||
rev = version;
|
||||
hash = "sha256-SN/1Yf4fHlDbJ2X6DGktsn1GFW8bbkeznlO1S8sBZyg=";
|
||||
hash = "sha256-rWWMMuA41uFWazIJBVLxzaCrR5X5tI4x+GXXYkfeqz8=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
name = "${pname}-${version}";
|
||||
hash = "sha256-2Ma7ZAKFiAQXFWFze4RLwGu33d/vC6FVW6fJdqwED20=";
|
||||
hash = "sha256-Kvdbo5tkhwsah9W7Y5zqpoA3bVHfmjGj7Cjsqxkljls=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@ -41,8 +40,6 @@ stdenv.mkDerivation rec {
|
||||
patchShebangs --build \
|
||||
scripts/meson_post_install.py \
|
||||
build-aux/cargo-build.py
|
||||
'' + lib.optionalString stdenv.isDarwin ''
|
||||
sed -i "/wayland,x11egl,x11glx/d" meson.build
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -64,8 +61,6 @@ stdenv.mkDerivation rec {
|
||||
gst_all_1.gst-plugins-bad
|
||||
gst_all_1.gst-plugins-good
|
||||
glib-networking
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk_11_0.frameworks.IOKit
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
@ -74,8 +69,7 @@ stdenv.mkDerivation rec {
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ aleksana ];
|
||||
mainProgram = "glide";
|
||||
platforms = platforms.unix;
|
||||
# error: could not find system library 'gstreamer-gl-1.0' required by the 'gstreamer-gl-sys' crate
|
||||
broken = stdenv.isDarwin && stdenv.isx86_64;
|
||||
# Required gdk4-{wayland,x11} and gstreamer-gl not available on darwin
|
||||
platforms = subtractLists platforms.darwin platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -1,43 +1,102 @@
|
||||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
, makeBinaryWrapper
|
||||
, fetchpatch
|
||||
, gobject-introspection
|
||||
, gtk4
|
||||
, libadwaita
|
||||
, libfido2
|
||||
, dbus
|
||||
, pinentry-gnome3
|
||||
, nix-update-script
|
||||
, libnotify
|
||||
, python3
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "goldwarden";
|
||||
version = "0.2.13";
|
||||
version = "0.2.13-unstable-2024-03-14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "quexten";
|
||||
repo = "goldwarden";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-4KxPtsIEW46p+cFx6yeSdNlsffy9U31k+ZSkE6V0AFc=";
|
||||
rev = "d6e1cd263365611e520a2ef6c7847c9da19362f1";
|
||||
hash = "sha256-IItKOmE0xHKO2u5jp7R20/T2eSvQ3QCxlzp6R4oiqf8=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
url = "https://github.com/quexten/goldwarden/pull/140/commits/c134a0e61d51079c44865f68ab65cfb3aea6f8f2.patch";
|
||||
hash = "sha256-nClC/FYq3muXMeYXln+VVGUhanqElEgJRosWeSTNlmM=";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://github.com/quexten/goldwarden/pull/140/commits/86d4f907fba241fd66d0fb3c109c0281a9766bb4.patch";
|
||||
hash = "sha256-A8PBzfyd2blFIjCeO4xOVJMQjnEPwtK4wTcRcfsjyDk=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace browserbiometrics/chrome-com.8bit.bitwarden.json browserbiometrics/mozilla-com.8bit.bitwarden.json \
|
||||
--replace-fail "@PATH@" "$out/bin/goldwarden"
|
||||
|
||||
substituteInPlace gui/com.quexten.Goldwarden.desktop \
|
||||
--replace-fail "Exec=goldwarden_ui_main.py" "Exec=$out/bin/goldwarden-gui"
|
||||
substituteInPlace gui/src/gui/browserbiometrics.py \
|
||||
--replace-fail "flatpak run --filesystem=home --command=goldwarden com.quexten.Goldwarden" "goldwarden"
|
||||
substituteInPlace gui/src/gui/ssh.py \
|
||||
--replace-fail "flatpak run --command=goldwarden com.quexten.Goldwarden" "goldwarden" \
|
||||
--replace-fail 'SSH_AUTH_SOCK=/home/$USER/.var/app/com.quexten.Goldwarden/data/ssh-auth-sock' 'SSH_AUTH_SOCK=/home/$USER/.goldwarden-ssh-agent.sock'
|
||||
substituteInPlace gui/src/{linux/main.py,linux/monitors/dbus_monitor.py,gui/settings.py} \
|
||||
--replace-fail "python3" "${(python3.buildEnv.override { extraLibs = pythonPath; }).interpreter}"
|
||||
'';
|
||||
|
||||
vendorHash = "sha256-IH0p7t1qInA9rNYv6ekxDN/BT5Kguhh4cZfmL+iqwVU=";
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
|
||||
nativeBuildInputs = [makeBinaryWrapper];
|
||||
nativeBuildInputs = [
|
||||
gobject-introspection
|
||||
python3.pkgs.wrapPython
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [libfido2];
|
||||
buildInputs = [
|
||||
gtk4
|
||||
libadwaita
|
||||
libfido2
|
||||
libnotify
|
||||
];
|
||||
|
||||
pythonPath = with python3.pkgs; [
|
||||
dbus-python
|
||||
pygobject3
|
||||
tendo
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/goldwarden \
|
||||
--suffix PATH : ${lib.makeBinPath [dbus pinentry-gnome3]}
|
||||
chmod +x gui/goldwarden_ui_main.py
|
||||
ln -s $out/share/goldwarden/goldwarden_ui_main.py $out/bin/goldwarden-gui
|
||||
mkdir -p $out/share/goldwarden
|
||||
cp -r gui/* $out/share/goldwarden/
|
||||
rm $out/share/goldwarden/{com.quexten.Goldwarden.desktop,com.quexten.Goldwarden.metainfo.xml,goldwarden.svg,python3-requirements.json,requirements.txt}
|
||||
|
||||
install -Dm644 $src/resources/com.quexten.goldwarden.policy -t $out/share/polkit-1/actions
|
||||
install -D gui/com.quexten.Goldwarden.desktop -t $out/share/applications
|
||||
install -D gui/goldwarden.svg -t $out/share/icons/hicolor/scalable/apps
|
||||
install -Dm644 gui/com.quexten.Goldwarden.metainfo.xml -t $out/share/metainfo
|
||||
install -Dm644 resources/com.quexten.goldwarden.policy -t $out/share/polkit-1/actions
|
||||
|
||||
install -D browserbiometrics/chrome-com.8bit.bitwarden.json $out/etc/chrome/native-messaging-hosts/com.8bit.bitwarden.json
|
||||
install -D browserbiometrics/chrome-com.8bit.bitwarden.json $out/etc/chromium/native-messaging-hosts/com.8bit.bitwarden.json
|
||||
install -D browserbiometrics/chrome-com.8bit.bitwarden.json $out/etc/edge/native-messaging-hosts/com.8bit.bitwarden.json
|
||||
install -D browserbiometrics/mozilla-com.8bit.bitwarden.json $out/lib/mozilla/native-messaging-hosts/com.8bit.bitwarden.json
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script {};
|
||||
dontWrapGApps = true;
|
||||
postFixup = ''
|
||||
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
||||
wrapPythonProgramsIn $out/share/goldwarden "$out/share/goldwarden $pythonPath"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A feature-packed Bitwarden compatible desktop integration";
|
||||
description = "Feature-packed Bitwarden compatible desktop integration";
|
||||
homepage = "https://github.com/quexten/goldwarden";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ arthsmn ];
|
||||
|
54
pkgs/by-name/gt/gtkhash/package.nix
Normal file
54
pkgs/by-name/gt/gtkhash/package.nix
Normal file
@ -0,0 +1,54 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, stdenv
|
||||
, meson
|
||||
, ninja
|
||||
, cmake
|
||||
, pkg-config
|
||||
, wrapGAppsHook
|
||||
, gtk3
|
||||
, glib
|
||||
, openssl
|
||||
, nettle
|
||||
, libb2
|
||||
, libgcrypt
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gtkhash";
|
||||
version = "1.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
repo = "gtkhash";
|
||||
owner = "gtkhash";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-XpgTolpTSsW3i0xk19tt4cn9qANoeiq7YnBBR6g8ioU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
cmake
|
||||
pkg-config
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk3
|
||||
glib
|
||||
openssl
|
||||
nettle
|
||||
libb2
|
||||
libgcrypt
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
meta = with lib; {
|
||||
description = "A cross-platform desktop utility for computing message digests or checksums";
|
||||
homepage = "https://gtkhash.org";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ ByteSudoer ];
|
||||
mainProgram = "gtkhash";
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
From 32a4beecbf8098fdbb15ef5f36088956922630f7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber@stgraber.org>
|
||||
Date: Fri, 23 Feb 2024 18:47:15 -0500
|
||||
Subject: [PATCH] incusd/device/disk: Fix incorrect block volume usage
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Stéphane Graber <stgraber@stgraber.org>
|
||||
---
|
||||
internal/server/device/disk.go | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/internal/server/device/disk.go b/internal/server/device/disk.go
|
||||
index 0d19e21139..4f9a3e7c1b 100644
|
||||
--- a/internal/server/device/disk.go
|
||||
+++ b/internal/server/device/disk.go
|
||||
@@ -339,6 +339,11 @@ func (d *disk) validateConfig(instConf instance.ConfigReader) error {
|
||||
var usedBy []string
|
||||
|
||||
err = storagePools.VolumeUsedByInstanceDevices(d.state, d.pool.Name(), storageProjectName, &dbVolume.StorageVolume, true, func(inst db.InstanceArgs, project api.Project, usedByDevices []string) error {
|
||||
+ // Don't count the current instance.
|
||||
+ if d.inst != nil && d.inst.Project().Name == inst.Project && d.inst.Name() == inst.Name {
|
||||
+ return nil
|
||||
+ }
|
||||
+
|
||||
usedBy = append(usedBy, inst.Name)
|
||||
|
||||
return nil
|
@ -31,10 +31,8 @@ buildGoModule {
|
||||
subPackages = [ "cmd/incus" ];
|
||||
|
||||
postInstall = ''
|
||||
# use custom bash completion as it has extra logic for e.g. instance names
|
||||
installShellCompletion --bash --name incus ./scripts/bash/incus
|
||||
|
||||
installShellCompletion --cmd incus \
|
||||
--bash <($out/bin/incus completion bash) \
|
||||
--fish <($out/bin/incus completion fish) \
|
||||
--zsh <($out/bin/incus completion zsh)
|
||||
'';
|
||||
|
@ -45,12 +45,6 @@ buildGoModule rec {
|
||||
inherit hash;
|
||||
};
|
||||
|
||||
# replace with env var > 0.6 https://github.com/lxc/incus/pull/610
|
||||
postPatch = ''
|
||||
substituteInPlace internal/usbid/load.go \
|
||||
--replace-fail "/usr/share/misc/usb.ids" "${hwdata}/share/hwdata/usb.ids"
|
||||
'';
|
||||
|
||||
excludedPackages = [
|
||||
# statically compile these
|
||||
"cmd/incus-agent"
|
||||
@ -103,10 +97,8 @@ buildGoModule rec {
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
# use custom bash completion as it has extra logic for e.g. instance names
|
||||
installShellCompletion --bash --name incus ./scripts/bash/incus
|
||||
|
||||
installShellCompletion --cmd incus \
|
||||
--bash <($out/bin/incus completion bash) \
|
||||
--fish <($out/bin/incus completion fish) \
|
||||
--zsh <($out/bin/incus completion zsh)
|
||||
'';
|
||||
|
@ -1,9 +1,6 @@
|
||||
import ./generic.nix {
|
||||
hash = "sha256-tGuAS0lZvoYb+TvmCklQ8TADZhbm4w/lhdI0ycS4/0o=";
|
||||
version = "0.6.0";
|
||||
vendorHash = "sha256-+WmgLOEBJ/7GF596iiTgyTPxn8l+hE6RVqjLKfCi5rs=";
|
||||
patches = [
|
||||
# fix storage bug, fixed in > 0.6
|
||||
./529.patch
|
||||
];
|
||||
hash = "sha256-6TLoua3rooDRyPc5BPYgzU/oeVy6F8h+p3UtKGPZkAE=";
|
||||
version = "0.7.0";
|
||||
vendorHash = "sha256-Slw58pszT6sbpxK6/f+ojA+uStt0zSWxztFTm5ovZr8=";
|
||||
patches = [ ];
|
||||
}
|
||||
|
@ -10,12 +10,19 @@ def main [--lts = false, --regex: string] {
|
||||
let current_version = nix eval --raw -f default.nix $"($attr).version" | str trim
|
||||
|
||||
if $latest_tag != $current_version {
|
||||
print $"Updating: new ($latest_tag) != old ($current_version)"
|
||||
update-source-version $attr $latest_tag $"--file=($file)"
|
||||
|
||||
let oldVendorHash = nix-instantiate . --eval --strict -A $"($attr).goModules.drvAttrs.outputHash" --json | from json
|
||||
let vendorHash = do { nix-build -A $"($attr).goModules" } | complete | get stderr | lines | str trim | find --regex 'got:[[:space:]]*sha256' | split row ' ' | last
|
||||
open $file | str replace $oldVendorHash $vendorHash | save --force $file
|
||||
let checkBuild = do { nix-build -A $"($attr).goModules" } | complete
|
||||
let vendorHash = $checkBuild.stderr | lines | str trim | find --regex 'got:[[:space:]]*sha256' | split row ' ' | last
|
||||
|
||||
if $vendorHash != null {
|
||||
open $file | str replace $oldVendorHash $vendorHash | save --force $file
|
||||
} else {
|
||||
print $checkBuild.stderr
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
{"lts?": $lts, before: $current_version, after: $latest_tag}
|
||||
|
32
pkgs/by-name/it/itsycal/package.nix
Normal file
32
pkgs/by-name/it/itsycal/package.nix
Normal file
@ -0,0 +1,32 @@
|
||||
{ lib
|
||||
, fetchzip
|
||||
, stdenvNoCC
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "itsycal";
|
||||
version = "0.15.3";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://itsycal.s3.amazonaws.com/Itsycal-${finalAttrs.version}.zip";
|
||||
hash = "sha256-jpTlJY7yAARrkHzreQKbFaKj0sYp950R0qPPcDeY6AE=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/Applications/Itsycal.app
|
||||
cp -R . $out/Applications/Itsycal.app
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Itsycal is a tiny menu bar calendar";
|
||||
homepage = "https://www.mowglii.com/itsycal/";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ donteatoreo ];
|
||||
platforms = lib.platforms.darwin;
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
};
|
||||
})
|
@ -16,13 +16,13 @@
|
||||
assert lib.assertOneOf "graphicsLibrary" graphicsLibrary [ "SDL2" "GLFW" ];
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "jazz2";
|
||||
version = "2.5.0";
|
||||
version = "2.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "deathkiller";
|
||||
repo = "jazz2-native";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-IFsSIfHmSE6B1bpc5RWetJnlkv/jjlAUvRFV1pvVVNo=";
|
||||
hash = "sha256-ZTQz6+2myUIJr2HqiwYksM7qiwXrd4+3+h1TC6FuPFU=";
|
||||
};
|
||||
|
||||
patches = [ ./nocontent.patch ];
|
||||
|
28
pkgs/by-name/jo/job-security/package.nix
Normal file
28
pkgs/by-name/jo/job-security/package.nix
Normal file
@ -0,0 +1,28 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "job-security";
|
||||
version = "unstable-0-2024-03-24";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "yshui";
|
||||
repo = "job-security";
|
||||
rev = "3881a4a0e66afe19cbdba3f43d0f85732796f977";
|
||||
hash = "sha256-mXmDzBsHdiim0bWrs0SvgtMZmKnYVz/RV9LNqPHHlnk=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-W5evL36ByUUjvSwa3Nmf4MT2oZYoQ8kmchNOxUwmpuE=";
|
||||
|
||||
meta = {
|
||||
description = "Job control from anywhere";
|
||||
homepage = "https://github.com/yshui/job-security";
|
||||
license = with lib.licenses; [ asl20 mit mpl20 ];
|
||||
maintainers = with lib.maintainers; [ fgaz ];
|
||||
mainProgram = "jobs";
|
||||
broken = stdenv.isDarwin;
|
||||
};
|
||||
}
|
@ -6,11 +6,11 @@
|
||||
|
||||
appimageTools.wrapType2 rec {
|
||||
pname = "lunar-client";
|
||||
version = "3.2.3";
|
||||
version = "3.2.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://launcherupdates.lunarclientcdn.com/Lunar%20Client-${version}.AppImage";
|
||||
hash = "sha512-2zuVURKDw+Z/8I1AO8G5KPVOlPIZC/Mbt9jK5gn9CV1zmRiWKL+m1/Bw9/h7fanBdm0fhfLklplmlTTabPm7dg==";
|
||||
hash = "sha512-KaQvjtSzQzebzPrcFBntCqP6fRbenH9tQo4LYO1TwDoJ7pAeZ8D4kSMRaRfFV0CPZ/pDnKECYdKXAuaujOpw8g==";
|
||||
};
|
||||
|
||||
extraInstallCommands =
|
||||
|
@ -1,27 +1,22 @@
|
||||
{ lib
|
||||
, stdenvNoCC
|
||||
, fetchurl
|
||||
, unzip
|
||||
, fetchzip
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "mousecape";
|
||||
version = "1813";
|
||||
|
||||
src = fetchurl {
|
||||
src = fetchzip {
|
||||
url = "https://github.com/alexzielenski/Mousecape/releases/download/${finalAttrs.version}/Mousecape_${finalAttrs.version}.zip";
|
||||
hash = "sha256-lp7HFGr1J+iQCUWVDplF8rFcTrGf+DX4baYzLsUi/9I=";
|
||||
hash = "sha256-VjbvrXfsRFpbTJfIHFvyCxRdDcGNv0zzLToWn7lyLM8=";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/Applications
|
||||
mv Mousecape.app $out/Applications
|
||||
mkdir -p $out/Applications/Mousecape.app
|
||||
cp -R . $out/Applications/Mousecape.app/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
@ -30,7 +25,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
description = "A cursor manager for macOS built using private, nonintrusive CoreGraphics APIs";
|
||||
homepage = "https://github.com/alexzielenski/Mousecape";
|
||||
license = with lib; licenses.free;
|
||||
maintainers = with lib; with maintainers; [ DontEatOreo ];
|
||||
maintainers = with lib; with maintainers; [ donteatoreo ];
|
||||
platforms = with lib; platforms.darwin;
|
||||
sourceProvenance = with lib; with sourceTypes; [ binaryNativeCode ];
|
||||
};
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "plumber";
|
||||
version = "2.6.0";
|
||||
version = "2.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "streamdal";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-H1tyMedYKj1bePNcaEWYP3njHw57cJ0jgxwC7zDXQvk=";
|
||||
hash = "sha256-7sOj21ZTmo3KJ8CduH25jA4gmXLMKi5QWAng6nP0dsQ=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
@ -7,10 +7,10 @@
|
||||
inherit buildUnstable;
|
||||
}).overrideAttrs (finalAttrs: _: {
|
||||
pname = "renode-unstable";
|
||||
version = "1.15.0+20240320git97be875a3";
|
||||
version = "1.15.0+20240323git3bd8e280d";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://builds.renode.io/renode-${finalAttrs.version}.linux-portable.tar.gz";
|
||||
hash = "sha256-+1tOZ44fg/Z4n4gjPylRQlRE7KnL0AGcODlue/HLb3I=";
|
||||
hash = "sha256-hIPBM9PE6vtqo8XJvOWS3mIa9Vr7v9bcMdXmeQzBYsk=";
|
||||
};
|
||||
})
|
||||
|
@ -2,6 +2,7 @@
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
, fetchpatch2
|
||||
, nixosTests
|
||||
}:
|
||||
let
|
||||
version = "0.10.0";
|
||||
@ -42,6 +43,16 @@ buildGoModule {
|
||||
${skipTest 1 "TestOpensslCompatible" "scion-pki/trcs/sign_test.go"}
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
set +e
|
||||
mv $out/bin/gateway $out/bin/scion-ip-gateway
|
||||
mv $out/bin/dispatcher $out/bin/scion-dispatcher
|
||||
mv $out/bin/router $out/bin/scion-router
|
||||
mv $out/bin/control $out/bin/scion-control
|
||||
mv $out/bin/daemon $out/bin/scion-daemon
|
||||
set -e
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
patches = [
|
||||
@ -51,6 +62,10 @@ buildGoModule {
|
||||
})
|
||||
];
|
||||
|
||||
passthru.tests = {
|
||||
inherit (nixosTests) scion-freestanding-deployment;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "A future Internet architecture utilizing path-aware networking";
|
||||
homepage = "https://scion-architecture.net/";
|
||||
|
105
pkgs/by-name/sm/smuxi/package.nix
Normal file
105
pkgs/by-name/sm/smuxi/package.nix
Normal file
@ -0,0 +1,105 @@
|
||||
{ stdenv
|
||||
, autoconf, automake, itstool, intltool, pkg-config
|
||||
, fetchFromGitHub
|
||||
, glib
|
||||
, gettext
|
||||
, sqlite
|
||||
, mono
|
||||
, stfl
|
||||
, makeWrapper, lib
|
||||
, guiSupport ? true
|
||||
, gtk-sharp-2_0
|
||||
, gdk-pixbuf
|
||||
, pango
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "smuxi";
|
||||
version = "unstable-2023-07-01";
|
||||
|
||||
runtimeLoaderEnvVariableName = if stdenv.isDarwin then
|
||||
"DYLD_FALLBACK_LIBRARY_PATH"
|
||||
else
|
||||
"LD_LIBRARY_PATH";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "meebey";
|
||||
repo = "smuxi";
|
||||
rev = "3e4b5050b66944532e95df3c31245c8ae6379b3f";
|
||||
hash = "sha256-zSsckcEPEX99v3RkM4O4+Get5tnz4FOpiodoTGTZq+8=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ autoconf automake itstool intltool gettext
|
||||
mono
|
||||
stfl
|
||||
makeWrapper ] ++ lib.optionals (guiSupport) [
|
||||
gtk-sharp-2_0
|
||||
# loaded at runtime by GTK#
|
||||
gdk-pixbuf pango
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
NOCONFIGURE=1 NOGIT=1 ./autogen.sh
|
||||
'';
|
||||
|
||||
configureFlags = [
|
||||
"--disable-frontend-gnome"
|
||||
"--enable-frontend-stfl"
|
||||
] ++ lib.optional guiSupport "--enable-frontend-gnome";
|
||||
|
||||
postInstall = ''
|
||||
makeWrapper "${mono}/bin/mono" "$out/bin/smuxi-message-buffer" \
|
||||
--add-flags "$out/lib/smuxi/smuxi-message-buffer.exe" \
|
||||
--prefix ${runtimeLoaderEnvVariableName} : ${lib.makeLibraryPath [
|
||||
gettext sqlite
|
||||
]}
|
||||
|
||||
makeWrapper "${mono}/bin/mono" "$out/bin/smuxi-server" \
|
||||
--add-flags "$out/lib/smuxi/smuxi-server.exe" \
|
||||
--prefix ${runtimeLoaderEnvVariableName} : ${lib.makeLibraryPath [
|
||||
gettext sqlite
|
||||
]}
|
||||
|
||||
makeWrapper "${mono}/bin/mono" "$out/bin/smuxi-frontend-stfl" \
|
||||
--add-flags "$out/lib/smuxi/smuxi-frontend-stfl.exe" \
|
||||
--prefix ${runtimeLoaderEnvVariableName} : ${lib.makeLibraryPath [
|
||||
gettext sqlite stfl
|
||||
]}
|
||||
|
||||
makeWrapper "${mono}/bin/mono" "$out/bin/smuxi-frontend-gnome" \
|
||||
--add-flags "$out/lib/smuxi/smuxi-frontend-gnome.exe" \
|
||||
--prefix MONO_GAC_PREFIX : ${if guiSupport then gtk-sharp-2_0 else ""} \
|
||||
--prefix ${runtimeLoaderEnvVariableName} : ${lib.makeLibraryPath [
|
||||
gettext
|
||||
glib
|
||||
sqlite
|
||||
gtk-sharp-2_0
|
||||
gtk-sharp-2_0.gtk gdk-pixbuf pango
|
||||
]}
|
||||
|
||||
# install log4net and nini libraries
|
||||
mkdir -p $out/lib/smuxi/
|
||||
cp -a lib/log4net.dll $out/lib/smuxi/
|
||||
cp -a lib/Nini.dll $out/lib/smuxi/
|
||||
|
||||
# install GTK+ icon theme on Darwin
|
||||
${if guiSupport && stdenv.isDarwin then "
|
||||
mkdir -p $out/lib/smuxi/icons/
|
||||
cp -a images/Smuxi-Symbolic $out/lib/smuxi/icons/
|
||||
" else ""}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://smuxi.im/";
|
||||
downloadPage = "https://smuxi.im/download/";
|
||||
changelog = "https://github.com/meebey/smuxi/releases/tag/v${version}";
|
||||
description = "irssi-inspired, detachable, cross-platform, multi-protocol (IRC, XMPP/Jabber) chat client for the GNOME desktop";
|
||||
platforms = platforms.unix;
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [
|
||||
meebey
|
||||
];
|
||||
};
|
||||
}
|
35
pkgs/by-name/sq/sqlite_orm/package.nix
Normal file
35
pkgs/by-name/sq/sqlite_orm/package.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{ lib
|
||||
, cmake
|
||||
, fetchFromGitHub
|
||||
, sqlite
|
||||
, stdenv
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "sqlite_orm";
|
||||
version = "1.8.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fnc12";
|
||||
repo = "sqlite_orm";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-KqphGFcnR1Y11KqL7sxODSv7lEvcURdF6kLd3cg84kc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
sqlite
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Light header only SQLite ORM";
|
||||
homepage = "https://sqliteorm.com/";
|
||||
license = licenses.agpl3Only; # MIT license is commercial
|
||||
maintainers = with maintainers; [ ambroisie ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
})
|
34
pkgs/by-name/ss/ssh-tpm-agent/package.nix
Normal file
34
pkgs/by-name/ss/ssh-tpm-agent/package.nix
Normal file
@ -0,0 +1,34 @@
|
||||
{ lib
|
||||
, buildGo122Module
|
||||
, fetchFromGitHub
|
||||
, openssl
|
||||
}:
|
||||
|
||||
buildGo122Module rec {
|
||||
pname = "ssh-tpm-agent";
|
||||
version = "0.3.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Foxboron";
|
||||
repo = "ssh-tpm-agent";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-8CGSiCOcns4cWkYWqibs6hAFRipYabKPCpkhxF4OE8w=";
|
||||
};
|
||||
|
||||
proxyVendor = true;
|
||||
|
||||
vendorHash = "sha256-zUAIesBeuh1zlxXcjKSNmMawZGgUr9z3NzT0XKn/YCQ=";
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "SSH agent with support for TPM sealed keys for public key authentication";
|
||||
homepage = "https://github.com/Foxboron/ssh-agent-tpm";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ sgo ];
|
||||
mainProgram = "ssh-tpm-agent";
|
||||
};
|
||||
}
|
80
pkgs/by-name/st/stackit-cli/package.nix
Normal file
80
pkgs/by-name/st/stackit-cli/package.nix
Normal file
@ -0,0 +1,80 @@
|
||||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
, installShellFiles
|
||||
, makeWrapper
|
||||
, less
|
||||
, xdg-utils
|
||||
, testers
|
||||
, runCommand
|
||||
, stackit-cli
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "stackit-cli";
|
||||
version = "0.1.0-prerelease.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "stackitcloud";
|
||||
repo = "stackit-cli";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-GS3ZXarhXs1xuVmiLPMrrzXnO79R1+2va0x7N7CKNjQ=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Cill5hq8KVeKGRX2u9oIudi/s8XHIW5C8sgbTshrLY4=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
CGO_ENABLED = 0;
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
"-X main.version=${version}"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ installShellFiles makeWrapper ];
|
||||
|
||||
preCheck = ''
|
||||
export HOME=$TMPDIR # needed because the binary always creates a dir & config file
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
export HOME=$TMPDIR # needed because the binary always creates a dir & config file
|
||||
mv $out/bin/{${pname},stackit} # rename the binary
|
||||
|
||||
installShellCompletion --cmd stackit --bash <($out/bin/stackit completion bash)
|
||||
installShellCompletion --cmd stackit --zsh <($out/bin/stackit completion zsh)
|
||||
installShellCompletion --cmd stackit --fish <($out/bin/stackit completion fish)
|
||||
# Use this instead, once https://github.com/stackitcloud/stackit-cli/issues/153 is fixed:
|
||||
# installShellCompletion --cmd stackit \
|
||||
# --bash <($out/bin/stackit completion bash) \
|
||||
# --zsh <($out/bin/stackit completion zsh) \
|
||||
# --fish <($out/bin/stackit completion fish)
|
||||
# Ensure that all 3 completion scripts exist AND have content (should be kept for regression testing)
|
||||
[ $(find $out/share -not -empty -type f | wc -l) -eq 3 ]
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/stackit \
|
||||
--suffix PATH : ${lib.makeBinPath [ less xdg-utils ]}
|
||||
'';
|
||||
|
||||
nativeCheckInputs = [ less ];
|
||||
|
||||
passthru.tests = {
|
||||
version = testers.testVersion {
|
||||
package = stackit-cli;
|
||||
command = "HOME=$TMPDIR stackit --version";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "CLI to manage STACKIT cloud services";
|
||||
homepage = "https://github.com/stackitcloud/stackit-cli";
|
||||
changelog = "https://github.com/stackitcloud/stackit-cli/releases/tag/v${version}";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ DerRockWolf ];
|
||||
mainProgram = "stackit";
|
||||
};
|
||||
}
|
@ -3,8 +3,8 @@
|
||||
fetchFromGitHub,
|
||||
installShellFiles,
|
||||
lib,
|
||||
makeWrapper,
|
||||
nix-update-script,
|
||||
stdenv,
|
||||
steampipe,
|
||||
testers,
|
||||
}:
|
||||
@ -16,30 +16,48 @@ buildGoModule rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "turbot";
|
||||
repo = "steampipe";
|
||||
rev = "v${version}";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-Oz1T9koeXnmHc5oru1apUtmhhvKi/gAtg/Hb7HKkkP0=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-U0BeGCRLjL56ZmVKcKqrrPTCXpShJzJq5/wnXDKax6g=";
|
||||
proxyVendor = true;
|
||||
|
||||
patchPhase = ''
|
||||
runHook prePatch
|
||||
postPatch = ''
|
||||
# Patch test that relies on looking up homedir in user struct to prefer ~
|
||||
substituteInPlace pkg/steampipeconfig/shared_test.go \
|
||||
--replace 'filehelpers "github.com/turbot/go-kit/files"' "" \
|
||||
--replace 'filepaths.SteampipeDir, _ = filehelpers.Tildefy("~/.steampipe")' 'filepaths.SteampipeDir = "~/.steampipe"';
|
||||
runHook postPatch
|
||||
--replace-fail 'filehelpers "github.com/turbot/go-kit/files"' "" \
|
||||
--replace-fail 'filepaths.SteampipeDir, _ = filehelpers.Tildefy("~/.steampipe")' 'filepaths.SteampipeDir = "~/.steampipe"';
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
nativeBuildInputs = [
|
||||
installShellFiles
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
];
|
||||
|
||||
# panic: could not create backups directory: mkdir /var/empty/.steampipe: operation not permitted
|
||||
doCheck = !stdenv.isDarwin;
|
||||
doCheck = true;
|
||||
|
||||
checkFlags =
|
||||
let
|
||||
skippedTests = [
|
||||
# panic: could not create backups directory: mkdir /var/empty/.steampipe: operation not permitted
|
||||
"TestTrimBackups"
|
||||
# Skip tests that require network access
|
||||
"TestIsPortBindable"
|
||||
];
|
||||
in
|
||||
[ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ];
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/steampipe \
|
||||
--set-default STEAMPIPE_UPDATE_CHECK false \
|
||||
--set-default STEAMPIPE_TELEMETRY none
|
||||
|
||||
INSTALL_DIR=$(mktemp -d)
|
||||
installShellCompletion --cmd steampipe \
|
||||
--bash <($out/bin/steampipe --install-dir $INSTALL_DIR completion bash) \
|
||||
@ -56,12 +74,12 @@ buildGoModule rec {
|
||||
updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://steampipe.io/";
|
||||
description = "select * from cloud;";
|
||||
license = licenses.agpl3Only;
|
||||
mainProgram = "steampipe";
|
||||
maintainers = with maintainers; [ hardselius ];
|
||||
meta = {
|
||||
changelog = "https://github.com/turbot/steampipe/blob/v${version}/CHANGELOG.md";
|
||||
description = "Dynamically query your cloud, code, logs & more with SQL";
|
||||
homepage = "https://steampipe.io/";
|
||||
license = lib.licenses.agpl3Only;
|
||||
mainProgram = "steampipe";
|
||||
maintainers = with lib.maintainers; [ hardselius anthonyroussel ];
|
||||
};
|
||||
}
|
||||
|
37
pkgs/by-name/sw/swaymux/package.nix
Normal file
37
pkgs/by-name/sw/swaymux/package.nix
Normal file
@ -0,0 +1,37 @@
|
||||
{ cmake
|
||||
, fetchFromGitea
|
||||
, lib
|
||||
, nlohmann_json
|
||||
, qt6
|
||||
, stdenv
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
version = "1.0";
|
||||
pname = "swaymux";
|
||||
|
||||
src = fetchFromGitea {
|
||||
rev = "v${finalAttrs.version}";
|
||||
domain = "git.grimmauld.de";
|
||||
owner = "Grimmauld";
|
||||
repo = "swaymux";
|
||||
hash = "sha256-M85pqfYnYeVPTZXKtjg/ks5LUl3u2onG9Nfn8Xs+BSA=";
|
||||
};
|
||||
|
||||
buildInputs = [ qt6.qtwayland nlohmann_json qt6.qtbase];
|
||||
nativeBuildInputs = [ cmake qt6.wrapQtAppsHook ];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = with lib; {
|
||||
changelog = "https://git.grimmauld.de/Grimmauld/swaymux/commits/branch/main";
|
||||
description = "A program to quickly navigate sway";
|
||||
homepage = "https://git.grimmauld.de/Grimmauld/swaymux";
|
||||
license = licenses.bsd3;
|
||||
longDescription = ''
|
||||
Swaymux allows the user to quickly navigate and administrate outputs, workspaces and containers in a tmux-style approach.
|
||||
'';
|
||||
mainProgram = "swaymux";
|
||||
maintainers = with maintainers; [ grimmauld ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
})
|
40
pkgs/by-name/ug/ugrep-indexer/package.nix
Normal file
40
pkgs/by-name/ug/ugrep-indexer/package.nix
Normal file
@ -0,0 +1,40 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, brotli
|
||||
, bzip2
|
||||
, lz4
|
||||
, xz
|
||||
, zlib
|
||||
, zstd
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "ugrep-indexer";
|
||||
version = "0.9.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Genivia";
|
||||
repo = "ugrep-indexer";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-ZXZF9ZSdfQ2gxi5JkDJCUzMbkTs9KLzZBsyYxR/v4tI=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
brotli
|
||||
bzip2
|
||||
lz4
|
||||
zlib
|
||||
zstd
|
||||
xz
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Utility that recursively indexes files to speed up recursive grepping";
|
||||
homepage = "https://github.com/Genivia/ugrep-indexer";
|
||||
changelog = "https://github.com/Genivia/ugrep-indexer/releases/tag/v${finalAttrs.version}";
|
||||
maintainers = with maintainers; [ mikaelfangel ];
|
||||
license = licenses.bsd3;
|
||||
platforms = platforms.all;
|
||||
};
|
||||
})
|
55
pkgs/by-name/vl/vlc-bittorrent/package.nix
Normal file
55
pkgs/by-name/vl/vlc-bittorrent/package.nix
Normal file
@ -0,0 +1,55 @@
|
||||
{ lib
|
||||
, autoconf-archive
|
||||
, autoreconfHook
|
||||
, boost
|
||||
, fetchFromGitHub
|
||||
, libtorrent-rasterbar
|
||||
, libvlc
|
||||
, openssl
|
||||
, pkg-config
|
||||
, stdenv
|
||||
}:
|
||||
|
||||
# VLC does not know where the vlc-bittorrent package is installed.
|
||||
# make sure to have something like:
|
||||
# environment.variables.VLC_PLUGIN_PATH = "${pkgs.vlc-bittorrent}";
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "vlc-bittorrent";
|
||||
version = "2.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "johang";
|
||||
repo = "vlc-bittorrent";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-7FHeQYHbMKZJ3yeHqxTTAUwghTje+gEX8gSEJzfG5sQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf-archive
|
||||
autoreconfHook
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
libtorrent-rasterbar
|
||||
libvlc
|
||||
openssl
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
# It's a library, should not have a desktop file
|
||||
postFixup = ''
|
||||
rm -r $out/share/
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A bittorrent plugin for VLC";
|
||||
homepage = "https://github.com/johang/vlc-bittorrent";
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.kintrix ];
|
||||
};
|
||||
})
|
@ -55,16 +55,16 @@ assert (extraParameters != null) -> set != null;
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "Iosevka${toString set}";
|
||||
version = "29.0.3";
|
||||
version = "29.0.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "be5invis";
|
||||
repo = "iosevka";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-7vNfmrQ/B+T9hF5/ikIU1RvBcSRStnEmOY7VPbrll6s=";
|
||||
hash = "sha256-dkFvgiGCHvBp7gBNAG08cfpTc0c7b2oU56xfxjPHhm8=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-FGGhuMlDhXd97AY23/ZPlrcrmirZIooAYJaskn2aM6w=";
|
||||
npmDepsHash = "sha256-IvMO0LZy/vlNxsp2D5pK97l6OIltrjv8iZ2CGl2XhFM=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
remarshal
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "rime-data";
|
||||
version = "0.38.20211002";
|
||||
version = "0.38.20231116";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "plum";
|
||||
rev = "1730556e1da5a08bb8e0a656c4780a46851a2913";
|
||||
sha256 = "sha256-D7rPUxcB3QkCtisfBLHPiqfgL5lqmxjSiuEcpE63elw=";
|
||||
rev = "6f502ff6fa87789847fa18200415318e705bffa4";
|
||||
sha256 = "sha256-DNSLP0dzzgJ6XzwvxGPeRqRrRIUV/GwD2+8cz9bYAwA=";
|
||||
};
|
||||
|
||||
buildInputs = [ librime ];
|
||||
|
@ -5,8 +5,8 @@ mkdir -p package/rime
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-array";
|
||||
rev = "d10f2f8b2aec7c7e736ace01e8a399e5ae5e7c3a";
|
||||
sha256 = "sha256-4t6+gh2V57SueDp9Tn6vTuxQCZNGzjLdJEhzIEqRjdI=";
|
||||
rev = "b37aad383ff6e71e457aa6d1d47d2040af8649b9";
|
||||
sha256 = "0krvxnjr35r49wwi6bcjdnld6zbk791l7vm294wmdy36qfp2924y";
|
||||
}} package/rime/array
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
@ -23,14 +23,14 @@ ln -sv ${fetchFromGitHub {
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-cantonese";
|
||||
rev = "b6f800c74eb639816d56d0d5601aaa96c8963178";
|
||||
sha256 = "1a4ksacbz8l30y3y5c017d0hzwik8knplglb3yswy7l4hsvaanyh";
|
||||
rev = "e3c6b17e638ac8a9aeab4d5852e5909b049c5ab3";
|
||||
sha256 = "171a64l17yb6isgiih2z0cp2vgzvdcn0vby3rk8556b0ir4j545q";
|
||||
}} package/rime/cantonese
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-combo-pinyin";
|
||||
rev = "a84065a86b272c76215215bd6f03c506b6e7097c";
|
||||
sha256 = "1f0b4kakw0x26gmx7xi4f94nbjlb8lvi9bks4f92jswa045vnd87";
|
||||
rev = "17b66079a23a00d3214639fee2b8ae97d3e620dc";
|
||||
sha256 = "1izx29hawfryapfzadysjbb2zfw0yq6vwsw56khkf6gsaz1faamn";
|
||||
}} package/rime/combo-pinyin
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
@ -41,14 +41,14 @@ ln -sv ${fetchFromGitHub {
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-emoji";
|
||||
rev = "4c8c51f4a3bc7298c99376eda9bbd86070fc4fa1";
|
||||
sha256 = "0175jqh210fncafqckr9zzaw55qpswmqjrykwms1apmc68l43122";
|
||||
rev = "a18b09997e7c457066e4c92adf249a4b3e235f9c";
|
||||
sha256 = "0gaa9r3yx1s135jlqxp85iyygcwqgz2k4n1bpvjr2n8xkn9297b6";
|
||||
}} package/rime/emoji
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-essay";
|
||||
rev = "9db2e77305e75798baf3ec8dcf1f82785b5e1be9";
|
||||
sha256 = "03ypkkaadd5qmyg26n24a66cll90xvcimgbmiyv4d33jradiqg22";
|
||||
rev = "e0519d0579722a0871efb68189272cba61a7350b";
|
||||
sha256 = "1g7188vgklxindvm6p65b5jlm6z47fdmhmp0hqrrd6smg9pz4qpw";
|
||||
}} package/rime/essay
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
@ -59,32 +59,32 @@ ln -sv ${fetchFromGitHub {
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-jyutping";
|
||||
rev = "1e24baa6998815c716c581effe8ec65ee87c4e8c";
|
||||
sha256 = "0s2rckpwlrm3n7w1csnqyi5p9mkpp3z87s7mrm2vc9sv06rpv7zl";
|
||||
rev = "50100769f645bf92afef5170e3bf42be5147b41b";
|
||||
sha256 = "1dmw2ssbqxbs93iab0whjzncsvv66vyw3hwb30kly2v18bwkagq0";
|
||||
}} package/rime/jyutping
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-luna-pinyin";
|
||||
rev = "623adb022b094d540218b287c2e601509eee3347";
|
||||
sha256 = "06pcwp09l5wkqv7792gbsl31xnlb3gr9q6bgbp94vvq6m2ycahqz";
|
||||
rev = "79aeae200a7370720be98232844c0715f277e1c0";
|
||||
sha256 = "06vff5hq85dkbmqch9d3w2rww2n8sk41c7say0pdlkfphyjs76ps";
|
||||
}} package/rime/luna-pinyin
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-middle-chinese";
|
||||
rev = "9fad7a7c0c26167d5e6e85db8df48a15c7f7d4f0";
|
||||
sha256 = "0a0bqrlzg0k692xblqnh1rh1fwwqqb205xwxlihgji85n8ibcgph";
|
||||
rev = "582e144e525525ac2b6c2498097d7c7919e84174";
|
||||
sha256 = "0ixj2f3syc0hv9n5r0cavcq0jrdf1www2frjl11855gwydp4lsx5";
|
||||
}} package/rime/middle-chinese
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-pinyin-simp";
|
||||
rev = "b0e84cda02c613ebdedc127a26131b3800f45a8e";
|
||||
sha256 = "05v804qr3a9xvjzp9yid7231fi2l2yrl47ybbvql61z9k36ab094";
|
||||
rev = "52b9c75f085479799553f2499c4f4c611d618cdf";
|
||||
sha256 = "1zi9yqgijb4r3q5ah89hdwbli5xhlmg19xj8sq1grnpfbw2hbdbj";
|
||||
}} package/rime/pinyin-simp
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-prelude";
|
||||
rev = "3de303ffaa731dba07b0462ce59f4767e1219ad2";
|
||||
sha256 = "0g7a0bla58rh1v3md59k6adk185pilb4z8i2i0pqdl4nwqp40n2p";
|
||||
rev = "dd84abecc33f0b05469f1d744e32d2b60b3529e3";
|
||||
sha256 = "14wn86xqvb6r73pgksi51wgfc70pj95iqrl85m2i0fwl43zg2y5g";
|
||||
}} package/rime/prelude
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
@ -113,20 +113,20 @@ ln -sv ${fetchFromGitHub {
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-stroke";
|
||||
rev = "ea8576d1accd6fda339e96b415caadb56e2a07d1";
|
||||
sha256 = "07h6nq9867hjrd2v3h1pnr940sdrw4mqrzj43siz1rzjxz3s904r";
|
||||
rev = "e6c7608925009636577ff7469eecc870f1de18f3";
|
||||
sha256 = "1rzclksf09s9js6z9mjm4ibgybr6kg2c4xq4j6sg9b3pnjbjwv8g";
|
||||
}} package/rime/stroke
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-terra-pinyin";
|
||||
rev = "ce7b9249612f575d2f43d51fcacd31d1b4e0ef1b";
|
||||
sha256 = "0vm303f4lrdmdmif5klrp6w29vn9z2vzw33cw0y83pcnz39wiads";
|
||||
rev = "9427853de91d645d9aca9ceace8fe9e9d8bc5b50";
|
||||
sha256 = "0f1wiqasy41hp3kw3qc5zk6z0rgfrswdw91kc66v1w1a3skb6wpp";
|
||||
}} package/rime/terra-pinyin
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
repo = "rime-wubi";
|
||||
rev = "f1876f08f1d4a9696395be0070c0e8e4353c44cb";
|
||||
sha256 = "1d9y9rqssacria9d0hla96czsqv2wkfm6z926m1x269ryv96zxvk";
|
||||
rev = "152a0d3f3efe40cae216d1e3b338242446848d07";
|
||||
sha256 = "1p2ikcw40q84fx0ixarm1jfp8ax276pabansybchrj34cqs53sr1";
|
||||
}} package/rime/wubi
|
||||
ln -sv ${fetchFromGitHub {
|
||||
owner = "rime";
|
||||
|
@ -37,7 +37,7 @@ mixRelease {
|
||||
# of the no-deps-check requirement
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
mix do compile --no-deps-check, elixir_ls.release
|
||||
mix do compile --no-deps-check, elixir_ls.release${lib.optionalString (lib.versionAtLeast elixir.version "1.16.0") "2"}
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
|
@ -1,19 +1,22 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, unzip
|
||||
, fetchFromGitHub
|
||||
, zlib
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "atasm";
|
||||
version = "1.09";
|
||||
version = "1.23";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://atari.miribilist.com/${pname}/${pname}${builtins.replaceStrings ["."] [""] version}.zip";
|
||||
hash = "sha256-26shhw2r30GZIPz6S1rf6dOLKRpgpLwrqCRZX3+8PvA=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "CycoPH";
|
||||
repo = "atasm";
|
||||
rev = "V${version}";
|
||||
hash = "sha256-U1HNYTiXO6WZEQJl2icY0ZEVy82CsL1mKR7Xgj9OZ14=";
|
||||
};
|
||||
|
||||
makefile = "Makefile";
|
||||
|
||||
patches = [
|
||||
# make install fails because atasm.txt was moved; report to upstream
|
||||
./0000-file-not-found.diff
|
||||
@ -23,10 +26,6 @@ stdenv.mkDerivation rec {
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
unzip
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
zlib
|
||||
];
|
||||
@ -42,9 +41,10 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
preInstall = ''
|
||||
mkdir -p $out/bin/
|
||||
install -d $out/share/doc/${pname} $out/man/man1
|
||||
installFlagsArray+=(
|
||||
DESTDIR=$out
|
||||
DESTDIR=$out/bin/
|
||||
DOCDIR=$out/share/doc/${pname}
|
||||
MANDIR=$out/man/man1
|
||||
)
|
||||
@ -55,9 +55,10 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://atari.miribilist.com/atasm/";
|
||||
homepage = "https://github.com/CycoPH/atasm";
|
||||
description = "A commandline 6502 assembler compatible with Mac/65";
|
||||
license = licenses.gpl2Plus;
|
||||
changelog = "https://github.com/CycoPH/atasm/releases/tag/V${version}";
|
||||
maintainers = with maintainers; [ AndersonTorres ];
|
||||
platforms = with platforms; unix;
|
||||
};
|
||||
|
@ -213,6 +213,7 @@ in let
|
||||
(!stdenv.targetPlatform.isWasm && stdenv.targetPlatform.useLLVM or false)
|
||||
"-lunwind"
|
||||
++ lib.optional stdenv.targetPlatform.isWasm "-fno-exceptions";
|
||||
nixSupport.cc-ldflags = lib.optionals (!stdenv.targetPlatform.isWasm) [ "-L${targetLlvmLibraries.libunwind}/lib" ];
|
||||
};
|
||||
|
||||
clangNoLibcxx = wrapCCWith rec {
|
||||
|
@ -227,7 +227,13 @@ self: super: builtins.intersectAttrs super {
|
||||
ghc-debug-brick = enableSeparateBinOutput super.ghc-debug-brick;
|
||||
nixfmt = enableSeparateBinOutput super.nixfmt;
|
||||
calligraphy = enableSeparateBinOutput super.calligraphy;
|
||||
niv = enableSeparateBinOutput (self.generateOptparseApplicativeCompletions [ "niv" ] super.niv);
|
||||
niv = overrideCabal (drv: {
|
||||
buildTools = (drv.buildTools or []) ++ [ pkgs.buildPackages.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram ''${!outputBin}/bin/niv --prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.nix ]}
|
||||
'';
|
||||
})
|
||||
(enableSeparateBinOutput (self.generateOptparseApplicativeCompletions [ "niv" ] super.niv));
|
||||
ghcid = enableSeparateBinOutput super.ghcid;
|
||||
ormolu = self.generateOptparseApplicativeCompletions [ "ormolu" ] (enableSeparateBinOutput super.ormolu);
|
||||
hnix = self.generateOptparseApplicativeCompletions [ "hnix" ] super.hnix;
|
||||
|
@ -65,7 +65,7 @@ stdenv.mkDerivation rec {
|
||||
meta = with lib; {
|
||||
description = "Graphical User Interface Toolkit for mono and .Net";
|
||||
homepage = "https://www.mono-project.com/docs/gui/gtksharp";
|
||||
platforms = platforms.linux;
|
||||
platforms = platforms.unix;
|
||||
license = licenses.gpl2;
|
||||
};
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user