mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-24 22:50:49 +00:00
Merge staging-next into staging
This commit is contained in:
commit
7525d5acd3
|
@ -140,24 +140,27 @@ let
|
||||||
umount /crypt-ramfs 2>/dev/null
|
umount /crypt-ramfs 2>/dev/null
|
||||||
'';
|
'';
|
||||||
|
|
||||||
openCommand = name': { name, device, header, keyFile, keyFileSize, keyFileOffset, allowDiscards, yubikey, gpgCard, fido2, fallbackToPassword, preOpenCommands, postOpenCommands,... }: assert name' == name;
|
openCommand = name: dev: assert name == dev.name;
|
||||||
let
|
let
|
||||||
csopen = "cryptsetup luksOpen ${device} ${name} ${optionalString allowDiscards "--allow-discards"} ${optionalString (header != null) "--header=${header}"}";
|
csopen = "cryptsetup luksOpen ${dev.device} ${dev.name}"
|
||||||
cschange = "cryptsetup luksChangeKey ${device} ${optionalString (header != null) "--header=${header}"}";
|
+ optionalString dev.allowDiscards " --allow-discards"
|
||||||
|
+ optionalString dev.bypassWorkqueues " --perf-no_read_workqueue --perf-no_write_workqueue"
|
||||||
|
+ optionalString (dev.header != null) " --header=${dev.header}";
|
||||||
|
cschange = "cryptsetup luksChangeKey ${dev.device} ${optionalString (dev.header != null) "--header=${dev.header}"}";
|
||||||
in ''
|
in ''
|
||||||
# Wait for luksRoot (and optionally keyFile and/or header) to appear, e.g.
|
# Wait for luksRoot (and optionally keyFile and/or header) to appear, e.g.
|
||||||
# if on a USB drive.
|
# if on a USB drive.
|
||||||
wait_target "device" ${device} || die "${device} is unavailable"
|
wait_target "device" ${dev.device} || die "${dev.device} is unavailable"
|
||||||
|
|
||||||
${optionalString (header != null) ''
|
${optionalString (dev.header != null) ''
|
||||||
wait_target "header" ${header} || die "${header} is unavailable"
|
wait_target "header" ${dev.header} || die "${dev.header} is unavailable"
|
||||||
''}
|
''}
|
||||||
|
|
||||||
do_open_passphrase() {
|
do_open_passphrase() {
|
||||||
local passphrase
|
local passphrase
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
echo -n "Passphrase for ${device}: "
|
echo -n "Passphrase for ${dev.device}: "
|
||||||
passphrase=
|
passphrase=
|
||||||
while true; do
|
while true; do
|
||||||
if [ -e /crypt-ramfs/passphrase ]; then
|
if [ -e /crypt-ramfs/passphrase ]; then
|
||||||
|
@ -166,7 +169,7 @@ let
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
# ask cryptsetup-askpass
|
# ask cryptsetup-askpass
|
||||||
echo -n "${device}" > /crypt-ramfs/device
|
echo -n "${dev.device}" > /crypt-ramfs/device
|
||||||
|
|
||||||
# and try reading it from /dev/console with a timeout
|
# and try reading it from /dev/console with a timeout
|
||||||
IFS= read -t 1 -r passphrase
|
IFS= read -t 1 -r passphrase
|
||||||
|
@ -182,7 +185,7 @@ let
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo -n "Verifying passphrase for ${device}..."
|
echo -n "Verifying passphrase for ${dev.device}..."
|
||||||
echo -n "$passphrase" | ${csopen} --key-file=-
|
echo -n "$passphrase" | ${csopen} --key-file=-
|
||||||
if [ $? == 0 ]; then
|
if [ $? == 0 ]; then
|
||||||
echo " - success"
|
echo " - success"
|
||||||
|
@ -202,13 +205,13 @@ let
|
||||||
|
|
||||||
# LUKS
|
# LUKS
|
||||||
open_normally() {
|
open_normally() {
|
||||||
${if (keyFile != null) then ''
|
${if (dev.keyFile != null) then ''
|
||||||
if wait_target "key file" ${keyFile}; then
|
if wait_target "key file" ${dev.keyFile}; then
|
||||||
${csopen} --key-file=${keyFile} \
|
${csopen} --key-file=${dev.keyFile} \
|
||||||
${optionalString (keyFileSize != null) "--keyfile-size=${toString keyFileSize}"} \
|
${optionalString (dev.keyFileSize != null) "--keyfile-size=${toString dev.keyFileSize}"} \
|
||||||
${optionalString (keyFileOffset != null) "--keyfile-offset=${toString keyFileOffset}"}
|
${optionalString (dev.keyFileOffset != null) "--keyfile-offset=${toString dev.keyFileOffset}"}
|
||||||
else
|
else
|
||||||
${if fallbackToPassword then "echo" else "die"} "${keyFile} is unavailable"
|
${if dev.fallbackToPassword then "echo" else "die"} "${dev.keyFile} is unavailable"
|
||||||
echo " - failing back to interactive password prompt"
|
echo " - failing back to interactive password prompt"
|
||||||
do_open_passphrase
|
do_open_passphrase
|
||||||
fi
|
fi
|
||||||
|
@ -217,7 +220,7 @@ let
|
||||||
''}
|
''}
|
||||||
}
|
}
|
||||||
|
|
||||||
${optionalString (luks.yubikeySupport && (yubikey != null)) ''
|
${optionalString (luks.yubikeySupport && (dev.yubikey != null)) ''
|
||||||
# YubiKey
|
# YubiKey
|
||||||
rbtohex() {
|
rbtohex() {
|
||||||
( od -An -vtx1 | tr -d ' \n' )
|
( od -An -vtx1 | tr -d ' \n' )
|
||||||
|
@ -243,16 +246,16 @@ let
|
||||||
local new_response
|
local new_response
|
||||||
local new_k_luks
|
local new_k_luks
|
||||||
|
|
||||||
mount -t ${yubikey.storage.fsType} ${yubikey.storage.device} /crypt-storage || \
|
mount -t ${dev.yubikey.storage.fsType} ${dev.yubikey.storage.device} /crypt-storage || \
|
||||||
die "Failed to mount YubiKey salt storage device"
|
die "Failed to mount YubiKey salt storage device"
|
||||||
|
|
||||||
salt="$(cat /crypt-storage${yubikey.storage.path} | sed -n 1p | tr -d '\n')"
|
salt="$(cat /crypt-storage${dev.yubikey.storage.path} | sed -n 1p | tr -d '\n')"
|
||||||
iterations="$(cat /crypt-storage${yubikey.storage.path} | sed -n 2p | tr -d '\n')"
|
iterations="$(cat /crypt-storage${dev.yubikey.storage.path} | sed -n 2p | tr -d '\n')"
|
||||||
challenge="$(echo -n $salt | openssl-wrap dgst -binary -sha512 | rbtohex)"
|
challenge="$(echo -n $salt | openssl-wrap dgst -binary -sha512 | rbtohex)"
|
||||||
response="$(ykchalresp -${toString yubikey.slot} -x $challenge 2>/dev/null)"
|
response="$(ykchalresp -${toString dev.yubikey.slot} -x $challenge 2>/dev/null)"
|
||||||
|
|
||||||
for try in $(seq 3); do
|
for try in $(seq 3); do
|
||||||
${optionalString yubikey.twoFactor ''
|
${optionalString dev.yubikey.twoFactor ''
|
||||||
echo -n "Enter two-factor passphrase: "
|
echo -n "Enter two-factor passphrase: "
|
||||||
k_user=
|
k_user=
|
||||||
while true; do
|
while true; do
|
||||||
|
@ -278,9 +281,9 @@ let
|
||||||
''}
|
''}
|
||||||
|
|
||||||
if [ ! -z "$k_user" ]; then
|
if [ ! -z "$k_user" ]; then
|
||||||
k_luks="$(echo -n $k_user | pbkdf2-sha512 ${toString yubikey.keyLength} $iterations $response | rbtohex)"
|
k_luks="$(echo -n $k_user | pbkdf2-sha512 ${toString dev.yubikey.keyLength} $iterations $response | rbtohex)"
|
||||||
else
|
else
|
||||||
k_luks="$(echo | pbkdf2-sha512 ${toString yubikey.keyLength} $iterations $response | rbtohex)"
|
k_luks="$(echo | pbkdf2-sha512 ${toString dev.yubikey.keyLength} $iterations $response | rbtohex)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -n "$k_luks" | hextorb | ${csopen} --key-file=-
|
echo -n "$k_luks" | hextorb | ${csopen} --key-file=-
|
||||||
|
@ -302,7 +305,7 @@ let
|
||||||
[ "$opened" == false ] && die "Maximum authentication errors reached"
|
[ "$opened" == false ] && die "Maximum authentication errors reached"
|
||||||
|
|
||||||
echo -n "Gathering entropy for new salt (please enter random keys to generate entropy if this blocks for long)..."
|
echo -n "Gathering entropy for new salt (please enter random keys to generate entropy if this blocks for long)..."
|
||||||
for i in $(seq ${toString yubikey.saltLength}); do
|
for i in $(seq ${toString dev.yubikey.saltLength}); do
|
||||||
byte="$(dd if=/dev/random bs=1 count=1 2>/dev/null | rbtohex)";
|
byte="$(dd if=/dev/random bs=1 count=1 2>/dev/null | rbtohex)";
|
||||||
new_salt="$new_salt$byte";
|
new_salt="$new_salt$byte";
|
||||||
echo -n .
|
echo -n .
|
||||||
|
@ -310,25 +313,25 @@ let
|
||||||
echo "ok"
|
echo "ok"
|
||||||
|
|
||||||
new_iterations="$iterations"
|
new_iterations="$iterations"
|
||||||
${optionalString (yubikey.iterationStep > 0) ''
|
${optionalString (dev.yubikey.iterationStep > 0) ''
|
||||||
new_iterations="$(($new_iterations + ${toString yubikey.iterationStep}))"
|
new_iterations="$(($new_iterations + ${toString dev.yubikey.iterationStep}))"
|
||||||
''}
|
''}
|
||||||
|
|
||||||
new_challenge="$(echo -n $new_salt | openssl-wrap dgst -binary -sha512 | rbtohex)"
|
new_challenge="$(echo -n $new_salt | openssl-wrap dgst -binary -sha512 | rbtohex)"
|
||||||
|
|
||||||
new_response="$(ykchalresp -${toString yubikey.slot} -x $new_challenge 2>/dev/null)"
|
new_response="$(ykchalresp -${toString dev.yubikey.slot} -x $new_challenge 2>/dev/null)"
|
||||||
|
|
||||||
if [ ! -z "$k_user" ]; then
|
if [ ! -z "$k_user" ]; then
|
||||||
new_k_luks="$(echo -n $k_user | pbkdf2-sha512 ${toString yubikey.keyLength} $new_iterations $new_response | rbtohex)"
|
new_k_luks="$(echo -n $k_user | pbkdf2-sha512 ${toString dev.yubikey.keyLength} $new_iterations $new_response | rbtohex)"
|
||||||
else
|
else
|
||||||
new_k_luks="$(echo | pbkdf2-sha512 ${toString yubikey.keyLength} $new_iterations $new_response | rbtohex)"
|
new_k_luks="$(echo | pbkdf2-sha512 ${toString dev.yubikey.keyLength} $new_iterations $new_response | rbtohex)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -n "$new_k_luks" | hextorb > /crypt-ramfs/new_key
|
echo -n "$new_k_luks" | hextorb > /crypt-ramfs/new_key
|
||||||
echo -n "$k_luks" | hextorb | ${cschange} --key-file=- /crypt-ramfs/new_key
|
echo -n "$k_luks" | hextorb | ${cschange} --key-file=- /crypt-ramfs/new_key
|
||||||
|
|
||||||
if [ $? == 0 ]; then
|
if [ $? == 0 ]; then
|
||||||
echo -ne "$new_salt\n$new_iterations" > /crypt-storage${yubikey.storage.path}
|
echo -ne "$new_salt\n$new_iterations" > /crypt-storage${dev.yubikey.storage.path}
|
||||||
else
|
else
|
||||||
echo "Warning: Could not update LUKS key, current challenge persists!"
|
echo "Warning: Could not update LUKS key, current challenge persists!"
|
||||||
fi
|
fi
|
||||||
|
@ -338,7 +341,7 @@ let
|
||||||
}
|
}
|
||||||
|
|
||||||
open_with_hardware() {
|
open_with_hardware() {
|
||||||
if wait_yubikey ${toString yubikey.gracePeriod}; then
|
if wait_yubikey ${toString dev.yubikey.gracePeriod}; then
|
||||||
do_open_yubikey
|
do_open_yubikey
|
||||||
else
|
else
|
||||||
echo "No YubiKey found, falling back to non-YubiKey open procedure"
|
echo "No YubiKey found, falling back to non-YubiKey open procedure"
|
||||||
|
@ -347,7 +350,7 @@ let
|
||||||
}
|
}
|
||||||
''}
|
''}
|
||||||
|
|
||||||
${optionalString (luks.gpgSupport && (gpgCard != null)) ''
|
${optionalString (luks.gpgSupport && (dev.gpgCard != null)) ''
|
||||||
|
|
||||||
do_open_gpg_card() {
|
do_open_gpg_card() {
|
||||||
# Make all of these local to this function
|
# Make all of these local to this function
|
||||||
|
@ -355,12 +358,12 @@ let
|
||||||
local pin
|
local pin
|
||||||
local opened
|
local opened
|
||||||
|
|
||||||
gpg --import /gpg-keys/${device}/pubkey.asc > /dev/null 2> /dev/null
|
gpg --import /gpg-keys/${dev.device}/pubkey.asc > /dev/null 2> /dev/null
|
||||||
|
|
||||||
gpg --card-status > /dev/null 2> /dev/null
|
gpg --card-status > /dev/null 2> /dev/null
|
||||||
|
|
||||||
for try in $(seq 3); do
|
for try in $(seq 3); do
|
||||||
echo -n "PIN for GPG Card associated with device ${device}: "
|
echo -n "PIN for GPG Card associated with device ${dev.device}: "
|
||||||
pin=
|
pin=
|
||||||
while true; do
|
while true; do
|
||||||
if [ -e /crypt-ramfs/passphrase ]; then
|
if [ -e /crypt-ramfs/passphrase ]; then
|
||||||
|
@ -382,8 +385,8 @@ let
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo -n "Verifying passphrase for ${device}..."
|
echo -n "Verifying passphrase for ${dev.device}..."
|
||||||
echo -n "$pin" | gpg -q --batch --passphrase-fd 0 --pinentry-mode loopback -d /gpg-keys/${device}/cryptkey.gpg 2> /dev/null | ${csopen} --key-file=- > /dev/null 2> /dev/null
|
echo -n "$pin" | gpg -q --batch --passphrase-fd 0 --pinentry-mode loopback -d /gpg-keys/${dev.device}/cryptkey.gpg 2> /dev/null | ${csopen} --key-file=- > /dev/null 2> /dev/null
|
||||||
if [ $? == 0 ]; then
|
if [ $? == 0 ]; then
|
||||||
echo " - success"
|
echo " - success"
|
||||||
${if luks.reusePassphrases then ''
|
${if luks.reusePassphrases then ''
|
||||||
|
@ -403,7 +406,7 @@ let
|
||||||
}
|
}
|
||||||
|
|
||||||
open_with_hardware() {
|
open_with_hardware() {
|
||||||
if wait_gpgcard ${toString gpgCard.gracePeriod}; then
|
if wait_gpgcard ${toString dev.gpgCard.gracePeriod}; then
|
||||||
do_open_gpg_card
|
do_open_gpg_card
|
||||||
else
|
else
|
||||||
echo "No GPG Card found, falling back to normal open procedure"
|
echo "No GPG Card found, falling back to normal open procedure"
|
||||||
|
@ -412,15 +415,15 @@ let
|
||||||
}
|
}
|
||||||
''}
|
''}
|
||||||
|
|
||||||
${optionalString (luks.fido2Support && (fido2.credential != null)) ''
|
${optionalString (luks.fido2Support && (dev.fido2.credential != null)) ''
|
||||||
|
|
||||||
open_with_hardware() {
|
open_with_hardware() {
|
||||||
local passsphrase
|
local passsphrase
|
||||||
|
|
||||||
${if fido2.passwordLess then ''
|
${if dev.fido2.passwordLess then ''
|
||||||
export passphrase=""
|
export passphrase=""
|
||||||
'' else ''
|
'' else ''
|
||||||
read -rsp "FIDO2 salt for ${device}: " passphrase
|
read -rsp "FIDO2 salt for ${dev.device}: " passphrase
|
||||||
echo
|
echo
|
||||||
''}
|
''}
|
||||||
${optionalString (lib.versionOlder kernelPackages.kernel.version "5.4") ''
|
${optionalString (lib.versionOlder kernelPackages.kernel.version "5.4") ''
|
||||||
|
@ -428,7 +431,7 @@ let
|
||||||
echo "Please move your mouse to create needed randomness."
|
echo "Please move your mouse to create needed randomness."
|
||||||
''}
|
''}
|
||||||
echo "Waiting for your FIDO2 device..."
|
echo "Waiting for your FIDO2 device..."
|
||||||
fido2luks open ${device} ${name} ${fido2.credential} --await-dev ${toString fido2.gracePeriod} --salt string:$passphrase
|
fido2luks open ${dev.device} ${dev.name} ${dev.fido2.credential} --await-dev ${toString dev.fido2.gracePeriod} --salt string:$passphrase
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "No FIDO2 key found, falling back to normal open procedure"
|
echo "No FIDO2 key found, falling back to normal open procedure"
|
||||||
open_normally
|
open_normally
|
||||||
|
@ -437,16 +440,16 @@ let
|
||||||
''}
|
''}
|
||||||
|
|
||||||
# commands to run right before we mount our device
|
# commands to run right before we mount our device
|
||||||
${preOpenCommands}
|
${dev.preOpenCommands}
|
||||||
|
|
||||||
${if (luks.yubikeySupport && (yubikey != null)) || (luks.gpgSupport && (gpgCard != null)) || (luks.fido2Support && (fido2.credential != null)) then ''
|
${if (luks.yubikeySupport && (dev.yubikey != null)) || (luks.gpgSupport && (dev.gpgCard != null)) || (luks.fido2Support && (dev.fido2.credential != null)) then ''
|
||||||
open_with_hardware
|
open_with_hardware
|
||||||
'' else ''
|
'' else ''
|
||||||
open_normally
|
open_normally
|
||||||
''}
|
''}
|
||||||
|
|
||||||
# commands to run right after we mounted our device
|
# commands to run right after we mounted our device
|
||||||
${postOpenCommands}
|
${dev.postOpenCommands}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
askPass = pkgs.writeScriptBin "cryptsetup-askpass" ''
|
askPass = pkgs.writeScriptBin "cryptsetup-askpass" ''
|
||||||
|
@ -621,6 +624,17 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bypassWorkqueues = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = ''
|
||||||
|
Whether to bypass dm-crypt's internal read and write workqueues.
|
||||||
|
Enabling this should improve performance on SSDs; see
|
||||||
|
<link xlink:href="https://wiki.archlinux.org/index.php/Dm-crypt/Specialties#Disable_workqueue_for_increased_solid_state_drive_(SSD)_performance">here</link>
|
||||||
|
for more information. Needs Linux 5.9 or later.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
fallbackToPassword = mkOption {
|
fallbackToPassword = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
|
@ -833,6 +847,11 @@ in
|
||||||
{ assertion = !(luks.fido2Support && luks.yubikeySupport);
|
{ assertion = !(luks.fido2Support && luks.yubikeySupport);
|
||||||
message = "FIDO2 and YubiKey may not be used at the same time.";
|
message = "FIDO2 and YubiKey may not be used at the same time.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{ assertion = any (dev: dev.bypassWorkqueues) (attrValues luks.devices)
|
||||||
|
-> versionAtLeast kernelPackages.kernel.version "5.9";
|
||||||
|
message = "boot.initrd.luks.devices.<name>.bypassWorkqueues is not supported for kernels older than 5.9";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
# actually, sbp2 driver is the one enabling the DMA attack, but this needs to be tested
|
# actually, sbp2 driver is the one enabling the DMA attack, but this needs to be tested
|
||||||
|
|
|
@ -29,6 +29,11 @@ let
|
||||||
, withNodeJs ? false
|
, withNodeJs ? false
|
||||||
, withRuby ? true
|
, withRuby ? true
|
||||||
|
|
||||||
|
# expects a list of plugin configuration
|
||||||
|
# expects { plugin=far-vim; config = "let g:far#source='rg'"; optional = false; }
|
||||||
|
, plugins ? []
|
||||||
|
# forwarded to configure.customRC
|
||||||
|
, customRC ? ""
|
||||||
# same values as in vimUtils.vimrcContent
|
# same values as in vimUtils.vimrcContent
|
||||||
, configure ? { }
|
, configure ? { }
|
||||||
|
|
||||||
|
@ -44,7 +49,33 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
requiredPlugins = vimUtils.requiredPlugins configure;
|
# transform all plugins into an attrset
|
||||||
|
pluginsNormalized = map (x: if x ? plugin then { optional = false; } // x else { plugin = x; optional = false;}) plugins;
|
||||||
|
|
||||||
|
|
||||||
|
configurePatched = configure // {
|
||||||
|
packages.nix = {
|
||||||
|
start = lib.filter (f: f != null)
|
||||||
|
(map (x: if x.optional == false then x.plugin else null)
|
||||||
|
pluginsNormalized);
|
||||||
|
opt = lib.filter (f: f != null)
|
||||||
|
(map (x: if x.optional == true then x.plugin else null)
|
||||||
|
pluginsNormalized);
|
||||||
|
};
|
||||||
|
customRC = pluginRc + customRC;
|
||||||
|
};
|
||||||
|
|
||||||
|
# A function to get the configuration string (if any) from an element of 'plugins'
|
||||||
|
pluginConfig = p:
|
||||||
|
if (p.config or "") != "" then ''
|
||||||
|
" ${p.plugin.pname or p.plugin.name} {{{
|
||||||
|
${p.config}
|
||||||
|
" }}}
|
||||||
|
'' else "";
|
||||||
|
|
||||||
|
pluginRc = lib.concatMapStrings pluginConfig pluginsNormalized;
|
||||||
|
|
||||||
|
requiredPlugins = vimUtils.requiredPlugins configurePatched;
|
||||||
getDeps = attrname: map (plugin: plugin.${attrname} or (_: [ ]));
|
getDeps = attrname: map (plugin: plugin.${attrname} or (_: [ ]));
|
||||||
|
|
||||||
pluginPython3Packages = getDeps "python3Dependencies" requiredPlugins;
|
pluginPython3Packages = getDeps "python3Dependencies" requiredPlugins;
|
||||||
|
@ -89,12 +120,13 @@ let
|
||||||
"--suffix" "PATH" ":" binPath
|
"--suffix" "PATH" ":" binPath
|
||||||
];
|
];
|
||||||
|
|
||||||
manifestRc = vimUtils.vimrcContent (configure // { customRC = ""; });
|
|
||||||
neovimRcContent = vimUtils.vimrcContent configure;
|
manifestRc = vimUtils.vimrcContent (configurePatched // { customRC = ""; }) ;
|
||||||
|
neovimRcContent = vimUtils.vimrcContent configurePatched;
|
||||||
in
|
in
|
||||||
assert withPython2 -> throw "Python2 support has been removed from neovim, please remove withPython2 and extraPython2Packages.";
|
assert withPython2 -> throw "Python2 support has been removed from neovim, please remove withPython2 and extraPython2Packages.";
|
||||||
|
|
||||||
args // {
|
builtins.removeAttrs args ["plugins"] // {
|
||||||
wrapperArgs = makeWrapperArgs;
|
wrapperArgs = makeWrapperArgs;
|
||||||
inherit neovimRcContent;
|
inherit neovimRcContent;
|
||||||
inherit manifestRc;
|
inherit manifestRc;
|
||||||
|
|
|
@ -11,8 +11,9 @@ neovim:
|
||||||
|
|
||||||
let
|
let
|
||||||
wrapper = {
|
wrapper = {
|
||||||
# should contain all args but the binary
|
extraName ? ""
|
||||||
wrapperArgs ? ""
|
# should contain all args but the binary. Can be either a string or list
|
||||||
|
, wrapperArgs ? []
|
||||||
, manifestRc ? null
|
, manifestRc ? null
|
||||||
, withPython2 ? false
|
, withPython2 ? false
|
||||||
, withPython3 ? true, python3Env ? null
|
, withPython3 ? true, python3Env ? null
|
||||||
|
@ -20,10 +21,18 @@ let
|
||||||
, rubyEnv ? null
|
, rubyEnv ? null
|
||||||
, vimAlias ? false
|
, vimAlias ? false
|
||||||
, viAlias ? false
|
, viAlias ? false
|
||||||
|
|
||||||
|
# additional argument not generated by makeNeovimConfig
|
||||||
|
# it will append "-u <customRc>" to the wrapped arguments
|
||||||
|
# set to false if you want to control where to save the generated config
|
||||||
|
# (e.g., in ~/.config/init.vim or project/.nvimrc)
|
||||||
|
, wrapRc ? true
|
||||||
, ...
|
, ...
|
||||||
}:
|
}@args:
|
||||||
let
|
let
|
||||||
|
|
||||||
|
wrapperArgsStr = if isString wrapperArgs then wrapperArgs else lib.escapeShellArgs wrapperArgs;
|
||||||
|
|
||||||
# If configure != {}, we can't generate the rplugin.vim file with e.g
|
# If configure != {}, we can't generate the rplugin.vim file with e.g
|
||||||
# NVIM_SYSTEM_RPLUGIN_MANIFEST *and* NVIM_RPLUGIN_MANIFEST env vars set in
|
# NVIM_SYSTEM_RPLUGIN_MANIFEST *and* NVIM_RPLUGIN_MANIFEST env vars set in
|
||||||
# the wrapper. That's why only when configure != {} (tested both here and
|
# the wrapper. That's why only when configure != {} (tested both here and
|
||||||
|
@ -31,13 +40,15 @@ let
|
||||||
# wrapper with most arguments we need, excluding those that cause problems to
|
# wrapper with most arguments we need, excluding those that cause problems to
|
||||||
# generate rplugin.vim, but still required for the final wrapper.
|
# generate rplugin.vim, but still required for the final wrapper.
|
||||||
finalMakeWrapperArgs =
|
finalMakeWrapperArgs =
|
||||||
[ "${neovim}/bin/nvim" "${placeholder "out"}/bin/nvim" ] ++
|
[ "${neovim}/bin/nvim" "${placeholder "out"}/bin/nvim" ]
|
||||||
[ "--set" "NVIM_SYSTEM_RPLUGIN_MANIFEST" "${placeholder "out"}/rplugin.vim" ];
|
++ [ "--set" "NVIM_SYSTEM_RPLUGIN_MANIFEST" "${placeholder "out"}/rplugin.vim" ]
|
||||||
|
++ optionals wrapRc [ "--add-flags" "-u ${writeText "init.vim" args.neovimRcContent}" ]
|
||||||
|
;
|
||||||
in
|
in
|
||||||
assert withPython2 -> throw "Python2 support has been removed from the neovim wrapper, please remove withPython2 and python2Env.";
|
assert withPython2 -> throw "Python2 support has been removed from the neovim wrapper, please remove withPython2 and python2Env.";
|
||||||
|
|
||||||
symlinkJoin {
|
symlinkJoin {
|
||||||
name = "neovim-${lib.getVersion neovim}";
|
name = "neovim-${lib.getVersion neovim}${extraName}";
|
||||||
# Remove the symlinks created by symlinkJoin which we need to perform
|
# Remove the symlinks created by symlinkJoin which we need to perform
|
||||||
# extra actions upon
|
# extra actions upon
|
||||||
postBuild = lib.optionalString stdenv.isLinux ''
|
postBuild = lib.optionalString stdenv.isLinux ''
|
||||||
|
@ -66,7 +77,7 @@ let
|
||||||
in ''
|
in ''
|
||||||
echo "Generating remote plugin manifest"
|
echo "Generating remote plugin manifest"
|
||||||
export NVIM_RPLUGIN_MANIFEST=$out/rplugin.vim
|
export NVIM_RPLUGIN_MANIFEST=$out/rplugin.vim
|
||||||
makeWrapper ${lib.escapeShellArgs manifestWrapperArgs} ${wrapperArgs}
|
makeWrapper ${lib.escapeShellArgs manifestWrapperArgs} ${wrapperArgsStr}
|
||||||
|
|
||||||
# Some plugins assume that the home directory is accessible for
|
# Some plugins assume that the home directory is accessible for
|
||||||
# initializing caches, temporary files, etc. Even if the plugin isn't
|
# initializing caches, temporary files, etc. Even if the plugin isn't
|
||||||
|
@ -96,7 +107,7 @@ let
|
||||||
'')
|
'')
|
||||||
+ ''
|
+ ''
|
||||||
rm $out/bin/nvim
|
rm $out/bin/nvim
|
||||||
makeWrapper ${lib.escapeShellArgs finalMakeWrapperArgs} ${wrapperArgs}
|
makeWrapper ${lib.escapeShellArgs finalMakeWrapperArgs} ${wrapperArgsStr}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
paths = [ neovim ];
|
paths = [ neovim ];
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
mkYarnPackage rec {
|
mkYarnPackage rec {
|
||||||
pname = "vieb";
|
pname = "vieb";
|
||||||
version = "4.5.1";
|
version = "5.0.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jelmerro";
|
owner = "jelmerro";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-7/oB2Inj+iMXzigqbCNJUY7dNrFBals2BOOl+Lp+ESs=";
|
sha256 = "sha256-0fbH2tmrgbu/XQg1piK9f56cow+R/Qe6bYMdbeV/mus=";
|
||||||
};
|
};
|
||||||
|
|
||||||
packageJSON = ./package.json;
|
packageJSON = ./package.json;
|
||||||
|
|
|
@ -1,19 +1,21 @@
|
||||||
{
|
{
|
||||||
"name": "vieb",
|
"name": "vieb",
|
||||||
"productName": "Vieb",
|
"productName": "Vieb",
|
||||||
"version": "4.5.1",
|
"version": "5.0.0",
|
||||||
"description": "Vim Inspired Electron Browser",
|
"description": "Vim Inspired Electron Browser",
|
||||||
"bin": "app.js",
|
"bin": "app.js",
|
||||||
"main": "app/index.js",
|
"main": "app/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "jest --coverage --collectCoverageFrom 'app/**/*.js' -u && eslint app && echo 'All good :)'",
|
|
||||||
"dev": "electron app --datafolder ./ViebData/",
|
|
||||||
"start": "electron app",
|
|
||||||
"build": "node build.js",
|
"build": "node build.js",
|
||||||
"buildall": "node build.js --linux --win --mac",
|
"buildall": "node build.js --linux --win --mac",
|
||||||
"buildlinux": "node build.js --linux",
|
"buildlinux": "node build.js --linux",
|
||||||
|
"buildmac": "node build.js --mac",
|
||||||
"buildwin": "node build.js --win",
|
"buildwin": "node build.js --win",
|
||||||
"buildmac": "node build.js --mac"
|
"dev": "electron app --datafolder=./ViebData/",
|
||||||
|
"fix": "eslint --fix app .eslintrc.js build.js",
|
||||||
|
"lint": "eslint app .eslintrc.js build.js",
|
||||||
|
"start": "electron app",
|
||||||
|
"test": "jest --testEnvironment jsdom --coverage --collectCoverageFrom 'app/**/*.js' -u && npm run lint && echo 'All good :)'"
|
||||||
},
|
},
|
||||||
"repository": "https://github.com/Jelmerro/Vieb",
|
"repository": "https://github.com/Jelmerro/Vieb",
|
||||||
"homepage": "https://vieb.dev",
|
"homepage": "https://vieb.dev",
|
||||||
|
@ -28,15 +30,18 @@
|
||||||
"license": "GPL-3.0-or-later",
|
"license": "GPL-3.0-or-later",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"archiver": "5.3.0",
|
"archiver": "5.3.0",
|
||||||
"electron": "12.0.5",
|
"electron": "13.0.1",
|
||||||
"electron-builder": "22.10.5",
|
"electron-builder": "22.10.5",
|
||||||
"eslint": "7.25.0",
|
"eslint": "7.27.0",
|
||||||
"eslint-plugin-compat": "^3.9.0",
|
"eslint-plugin-compat": "^3.9.0",
|
||||||
"jest": "26.6.3"
|
"eslint-plugin-sort-keys-fix": "1.1.1",
|
||||||
|
"jest-environment-jsdom": "^27.0.1",
|
||||||
|
"jest": "27.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"7zip-bin": "5.1.1",
|
"7zip-bin": "5.1.1",
|
||||||
"@cliqz/adblocker-electron": "1.20.4",
|
"@cliqz/adblocker-electron": "1.20.6",
|
||||||
|
"@cliqz/adblocker-electron-preload": "1.20.6",
|
||||||
"is-svg": "4.3.1",
|
"is-svg": "4.3.1",
|
||||||
"rimraf": "3.0.2"
|
"rimraf": "3.0.2"
|
||||||
},
|
},
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -19,13 +19,13 @@ let
|
||||||
in
|
in
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "argo";
|
pname = "argo";
|
||||||
version = "3.0.4";
|
version = "3.0.6";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "argoproj";
|
owner = "argoproj";
|
||||||
repo = "argo";
|
repo = "argo";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-zswX6nt7AxxTMznbY4Rk0A8j2PpSNht+gbTMbDr2yuY=";
|
sha256 = "sha256-QD5V6Bz/wfbyNPoXizjhPGyHN7ieotsYbwLTz2ADfcY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = "sha256-YjVAoMyGKMHLGEPeOOkCKCzeWFiUsXfJIKcw5GYoljg=";
|
vendorSha256 = "sha256-YjVAoMyGKMHLGEPeOOkCKCzeWFiUsXfJIKcw5GYoljg=";
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "helm-secrets";
|
pname = "helm-secrets";
|
||||||
version = "3.6.1";
|
version = "3.7.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jkroepke";
|
owner = "jkroepke";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-RACETma0AaqaAfe0HWC541/i+knr+emMUauFWnkEuMI=";
|
hash = "sha256-AM+TLeSrXjn10DiQzXSqSwTqsc7CjTdnf6TWetden7g=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
|
@ -28,7 +28,7 @@ let
|
||||||
else "");
|
else "");
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
pname = "signal-desktop";
|
pname = "signal-desktop";
|
||||||
version = "5.2.1"; # Please backport all updates to the stable channel.
|
version = "5.3.0"; # Please backport all updates to the stable channel.
|
||||||
# All releases have a limited lifetime and "expire" 90 days after the release.
|
# All releases have a limited lifetime and "expire" 90 days after the release.
|
||||||
# When releases "expire" the application becomes unusable until an update is
|
# When releases "expire" the application becomes unusable until an update is
|
||||||
# applied. The expiration date for the current release can be extracted with:
|
# applied. The expiration date for the current release can be extracted with:
|
||||||
|
@ -38,7 +38,7 @@ in stdenv.mkDerivation rec {
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
||||||
sha256 = "0hkl8h49565kncvczv5fv4gak55lycygwb8i8igkgc4my0ykzs2z";
|
sha256 = "15lclxw3njih90zlh2n90v8ljg0wnglw5w8jrpa7rbd789yagvq7";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -137,7 +137,7 @@ in stdenv.mkDerivation rec {
|
||||||
--replace /opt/Signal/signal-desktop $out/bin/signal-desktop
|
--replace /opt/Signal/signal-desktop $out/bin/signal-desktop
|
||||||
|
|
||||||
autoPatchelf --no-recurse -- $out/lib/Signal/
|
autoPatchelf --no-recurse -- $out/lib/Signal/
|
||||||
patchelf --add-needed ${libpulseaudio}/lib/libpulse.so $out/lib/Signal/resources/app.asar.unpacked/node_modules/ringrtc/build/linux/libringrtc.node
|
patchelf --add-needed ${libpulseaudio}/lib/libpulse.so $out/lib/Signal/resources/app.asar.unpacked/node_modules/ringrtc/build/linux/libringrtc-x64.node
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
|
|
|
@ -7,7 +7,11 @@ stdenv.mkDerivation rec {
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "leanprover-community";
|
owner = "leanprover-community";
|
||||||
repo = "lean";
|
repo = "lean";
|
||||||
rev = "v${version}";
|
# lean's version string contains the commit sha1 it was built
|
||||||
|
# from. this is then used to check whether an olean file should be
|
||||||
|
# rebuilt. don't use a tag as rev because this will get replaced into
|
||||||
|
# src/githash.h.in in preConfigure.
|
||||||
|
rev = "a5822ea47ebc52eec6323d8f1b60f6ec025daf99";
|
||||||
sha256 = "sha256-gJhbkl19iilNyfCt2TfPmghYA3yCjg6kS+yk/x/k14Y=";
|
sha256 = "sha256-gJhbkl19iilNyfCt2TfPmghYA3yCjg6kS+yk/x/k14Y=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -20,6 +24,13 @@ stdenv.mkDerivation rec {
|
||||||
# library.
|
# library.
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
||||||
|
preConfigure = assert builtins.stringLength src.rev == 40; ''
|
||||||
|
substituteInPlace src/githash.h.in \
|
||||||
|
--subst-var-by GIT_SHA1 "${src.rev}"
|
||||||
|
substituteInPlace library/init/version.lean.in \
|
||||||
|
--subst-var-by GIT_SHA1 "${src.rev}"
|
||||||
|
'';
|
||||||
|
|
||||||
postPatch = "patchShebangs .";
|
postPatch = "patchShebangs .";
|
||||||
|
|
||||||
postInstall = lib.optionalString stdenv.isDarwin ''
|
postInstall = lib.optionalString stdenv.isDarwin ''
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "aioshelly";
|
pname = "aioshelly";
|
||||||
version = "0.6.3";
|
version = "0.6.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "home-assistant-libs";
|
owner = "home-assistant-libs";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-c4EFR7rcYdrCdM0AfmX/d7cP4woh6P1iAjeSQV9ieKM=";
|
sha256 = "sha256-QRCqkaKhPQQjNt9mw8nlTB5YKLmIZbXfrxarb3Ksr5k=";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -9,14 +9,14 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "pyfritzhome";
|
pname = "pyfritzhome";
|
||||||
version = "0.6.0";
|
version = "0.6.1";
|
||||||
disabled = pythonOlder "3.5";
|
disabled = pythonOlder "3.5";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "hthiery";
|
owner = "hthiery";
|
||||||
repo = "python-fritzhome";
|
repo = "python-fritzhome";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1wzys84hxrjcg86fcn7f7i2i6979qwcpny2afk5rvwljh8f7bli5";
|
sha256 = "sha256-CEoXb7D/8Iksw4aJYNqANkmfhd0yxIIuabaTdWI3RNc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [ requests ];
|
propagatedBuildInputs = [ requests ];
|
||||||
|
|
37
pkgs/development/python-modules/qcengine/default.nix
Normal file
37
pkgs/development/python-modules/qcengine/default.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{ buildPythonPackage, lib, fetchPypi, pyyaml, qcelemental, pydantic
|
||||||
|
, py-cpuinfo, psutil, pytestrunner, pytest, pytestcov
|
||||||
|
} :
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "qcengine";
|
||||||
|
version = "0.19.0";
|
||||||
|
|
||||||
|
checkInputs = [
|
||||||
|
pytestrunner
|
||||||
|
pytestcov
|
||||||
|
pytest
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
pyyaml
|
||||||
|
qcelemental
|
||||||
|
pydantic
|
||||||
|
py-cpuinfo
|
||||||
|
psutil
|
||||||
|
];
|
||||||
|
|
||||||
|
src = fetchPypi {
|
||||||
|
inherit pname version;
|
||||||
|
sha256 = "0lz9r0fh31mcixdhayiwfc69cp8if9b3nkrk7gxdrb6vhbfrxhij";
|
||||||
|
};
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Quantum chemistry program executor and IO standardizer (QCSchema) for quantum chemistry";
|
||||||
|
homepage = "http://docs.qcarchive.molssi.org/projects/qcelemental/en/latest/";
|
||||||
|
license = licenses.bsd3;
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
maintainers = [ maintainers.sheepforce ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -3,15 +3,15 @@
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "include-what-you-use";
|
pname = "include-what-you-use";
|
||||||
# Also bump llvmPackages in all-packages.nix to the supported version!
|
# Also bump llvmPackages in all-packages.nix to the supported version!
|
||||||
version = "0.14";
|
version = "0.16";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
sha256 = "1vq0c8jqspvlss8hbazml44fi0mbslgnp2i9wcr0qrjpvfbl6623";
|
sha256 = "sha256-jW/JslU0O8Hl7EWeOVEt8dUcYOA1YpheAHYDYRn/Whw=";
|
||||||
url = "${meta.homepage}/downloads/${pname}-${version}.src.tar.gz";
|
url = "${meta.homepage}/downloads/${pname}-${version}.src.tar.gz";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = with llvmPackages; [ cmake llvm.dev llvm clang-unwrapped python3];
|
nativeBuildInputs = with llvmPackages; [ cmake llvm.dev llvm python3];
|
||||||
buildInputs = [ llvmPackages.libclang ];
|
buildInputs = with llvmPackages; [ libclang clang-unwrapped ];
|
||||||
|
|
||||||
cmakeFlags = [ "-DIWYU_LLVM_ROOT_PATH=${llvmPackages.clang-unwrapped}" ];
|
cmakeFlags = [ "-DIWYU_LLVM_ROOT_PATH=${llvmPackages.clang-unwrapped}" ];
|
||||||
|
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "packet-cli";
|
pname = "packet-cli";
|
||||||
version = "0.3.0";
|
version = "0.5.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "packethost";
|
owner = "packethost";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-P1Bn6vli0d/MroHUsioTWBrjWN+UZmSo3qmzo+fCDwM=";
|
sha256 = "0dlcx186l8kh6w3i4dvj7v90lhjkgvq1xkjb2vijy6399z41grw2";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = "sha256-PjKiUdhN87guPAa0loZrWYuwbl0HaspuIjmKgyq4Zp8=";
|
vendorSha256 = "1y1c369gsaf5crkdvv5g8d9p2g5602x2gcj8zy1q3wjx9lwhl0i6";
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
ln -s $out/bin/packet-cli $out/bin/packet
|
ln -s $out/bin/packet-cli $out/bin/packet
|
||||||
|
@ -23,6 +23,6 @@ buildGoModule rec {
|
||||||
description = "Official Packet CLI";
|
description = "Official Packet CLI";
|
||||||
homepage = "https://github.com/packethost/packet-cli";
|
homepage = "https://github.com/packethost/packet-cli";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ Br1ght0ne ];
|
maintainers = with maintainers; [ Br1ght0ne nshalman ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -232,8 +232,7 @@ let
|
||||||
let
|
let
|
||||||
/* pathogen mostly can set &rtp at startup time. Its used very commonly.
|
/* pathogen mostly can set &rtp at startup time. Its used very commonly.
|
||||||
*/
|
*/
|
||||||
pathogenImpl = lib.optionalString (pathogen != null)
|
pathogenImpl = let
|
||||||
(let
|
|
||||||
knownPlugins = pathogen.knownPlugins or vimPlugins;
|
knownPlugins = pathogen.knownPlugins or vimPlugins;
|
||||||
|
|
||||||
plugins = findDependenciesRecursively (map (pluginToDrv knownPlugins) pathogen.pluginNames);
|
plugins = findDependenciesRecursively (map (pluginToDrv knownPlugins) pathogen.pluginNames);
|
||||||
|
@ -244,15 +243,15 @@ let
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
''
|
''
|
||||||
let &rtp.=(empty(&rtp)?"":',')."${vimPlugins.pathogen.rtp}"
|
let &rtp.=(empty(&rtp)?"":',')."${vimPlugins.vim-pathogen.rtp}"
|
||||||
execute pathogen#infect('${pluginsEnv}/{}')
|
execute pathogen#infect('${pluginsEnv}/{}')
|
||||||
|
|
||||||
filetype indent plugin on | syn on
|
filetype indent plugin on | syn on
|
||||||
'');
|
'';
|
||||||
|
|
||||||
/* vim-plug is an extremely popular vim plugin manager.
|
/* vim-plug is an extremely popular vim plugin manager.
|
||||||
*/
|
*/
|
||||||
plugImpl = lib.optionalString (plug != null)
|
plugImpl =
|
||||||
(''
|
(''
|
||||||
source ${vimPlugins.vim-plug.rtp}/plug.vim
|
source ${vimPlugins.vim-plug.rtp}/plug.vim
|
||||||
call plug#begin('/dev/null')
|
call plug#begin('/dev/null')
|
||||||
|
@ -340,10 +339,12 @@ let
|
||||||
|
|
||||||
entries = [
|
entries = [
|
||||||
beforePlugins
|
beforePlugins
|
||||||
vamImpl pathogenImpl plugImpl
|
vamImpl
|
||||||
(nativeImpl packages)
|
(nativeImpl packages)
|
||||||
customRC
|
customRC
|
||||||
];
|
]
|
||||||
|
++ lib.optional (pathogen != null) pathogenImpl
|
||||||
|
++ lib.optional (plug != null) plugImpl;
|
||||||
|
|
||||||
in
|
in
|
||||||
lib.concatStringsSep "\n" (lib.filter (x: x != null && x != "") entries);
|
lib.concatStringsSep "\n" (lib.filter (x: x != null && x != "") entries);
|
||||||
|
|
|
@ -18,11 +18,11 @@ let
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "keycloak";
|
pname = "keycloak";
|
||||||
version = "13.0.0";
|
version = "13.0.1";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://github.com/keycloak/keycloak/releases/download/${version}/keycloak-${version}.zip";
|
url = "https://github.com/keycloak/keycloak/releases/download/${version}/keycloak-${version}.zip";
|
||||||
sha256 = "sha256-jpjAPldmJkyXGsokw9MO1u0VysYBXeQ8MamEPWvBGvs=";
|
sha256 = "sha256-81i8Yf9rEuHtUDqYThUCn0/Lb9YokRi4tGi/Ooyyxr8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
|
@ -1,14 +1,43 @@
|
||||||
{ vimUtils, vim_configurable, neovim, vimPlugins
|
{ vimUtils, vim_configurable, writeText, neovim, vimPlugins
|
||||||
, lib, fetchFromGitHub,
|
, lib, fetchFromGitHub, neovimUtils, wrapNeovimUnstable
|
||||||
|
, neovim-unwrapped
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (vimUtils) buildVimPluginFrom2Nix;
|
inherit (vimUtils) buildVimPluginFrom2Nix;
|
||||||
|
|
||||||
packages.myVimPackage.start = with vimPlugins; [ vim-nix ];
|
packages.myVimPackage.start = with vimPlugins; [ vim-nix ];
|
||||||
|
|
||||||
|
plugins = with vimPlugins; [
|
||||||
|
{
|
||||||
|
plugin = vim-obsession;
|
||||||
|
config = ''
|
||||||
|
map <Leader>$ <Cmd>Obsession<CR>
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
nvimConfNix = neovimUtils.makeNeovimConfig {
|
||||||
|
inherit plugins;
|
||||||
|
customRC = ''
|
||||||
|
" just a comment
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
wrapNeovim = suffix: config:
|
||||||
|
wrapNeovimUnstable neovim-unwrapped (config // {
|
||||||
|
extraName = suffix;
|
||||||
|
wrapRc = true;
|
||||||
|
});
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
vim_empty_config = vimUtils.vimrcFile { beforePlugins = ""; customRC = ""; };
|
vim_empty_config = vimUtils.vimrcFile { beforePlugins = ""; customRC = ""; };
|
||||||
|
|
||||||
|
### neovim tests
|
||||||
|
##################
|
||||||
|
nvim_with_plugins = wrapNeovim "-with-plugins" nvimConfNix;
|
||||||
|
|
||||||
|
### vim tests
|
||||||
|
##################
|
||||||
vim_with_vim2nix = vim_configurable.customize {
|
vim_with_vim2nix = vim_configurable.customize {
|
||||||
name = "vim"; vimrcConfig.vam.pluginDictionaries = [ "vim-addon-vim2nix" ];
|
name = "vim"; vimrcConfig.vam.pluginDictionaries = [ "vim-addon-vim2nix" ];
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "abcMIDI";
|
pname = "abcMIDI";
|
||||||
version = "2021.05.19";
|
version = "2021.05.25";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://ifdo.ca/~seymour/runabc/${pname}-${version}.zip";
|
url = "https://ifdo.ca/~seymour/runabc/${pname}-${version}.zip";
|
||||||
sha256 = "sha256-QdzP9CJrENLVYnWFTvRqn6Jz95zD6JWIMpnCa34QGas=";
|
sha256 = "sha256-lgKrDR+2KRl6vvZJp2nmY493agQx+FoQ+/SNNV4lA/A=";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
34
pkgs/tools/games/amidst/default.nix
Normal file
34
pkgs/tools/games/amidst/default.nix
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchurl
|
||||||
|
, makeWrapper
|
||||||
|
, jre8 }: # TODO: Update this to the latest version of java upon the next release. This is currently not done because of https://github.com/toolbox4minecraft/amidst/issues/960
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "amidst";
|
||||||
|
version = "4.6";
|
||||||
|
|
||||||
|
src = fetchurl { # TODO: Compile from src
|
||||||
|
url = "https://github.com/toolbox4minecraft/amidst/releases/download/v${version}/amidst-v${lib.replaceStrings [ "." ] [ "-" ] version}.jar";
|
||||||
|
sha256 = "0nz6xfhshy36j8k81kqdfbbxih96l7f3s9156f9lmw0mi1qlyzqk";
|
||||||
|
};
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ jre8 makeWrapper ];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/{bin,lib/amidst}
|
||||||
|
cp $src $out/lib/amidst/amidst.jar
|
||||||
|
makeWrapper ${jre8}/bin/java $out/bin/amidst \
|
||||||
|
--add-flags "-jar $out/lib/amidst/amidst.jar"
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://github.com/toolbox4minecraft/amidst";
|
||||||
|
description = "Advanced Minecraft Interface and Data/Structure Tracking";
|
||||||
|
license = licenses.gpl3Only;
|
||||||
|
maintainers = [ maintainers.ivar ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,34 +1,46 @@
|
||||||
{ lib, stdenv, fetchurl, perl }:
|
{ lib, stdenv, perl, installShellFiles, fetchFromGitHub }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "3.03+dfsg2";
|
|
||||||
pname = "cowsay";
|
pname = "cowsay";
|
||||||
|
version = "3.04";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchFromGitHub {
|
||||||
url = "http://http.debian.net/debian/pool/main/c/cowsay/cowsay_${version}.orig.tar.gz";
|
owner = "tnalpgge";
|
||||||
sha256 = "0ghqnkp8njc3wyqx4mlg0qv0v0pc996x2nbyhqhz66bbgmf9d29v";
|
repo = "rank-amateur-cowsay";
|
||||||
|
rev = "cowsay-${version}";
|
||||||
|
sha256 = "sha256-9jCaQ6Um6Nl9j0/urrMCRcsGeubRN3VWD3jDM/AshRg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ perl ];
|
buildInputs = [ perl ];
|
||||||
|
|
||||||
postBuild = ''
|
nativeBuildInputs = [ installShellFiles ];
|
||||||
|
|
||||||
|
# overriding buildPhase because we don't want to use the install.sh script
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild;
|
||||||
substituteInPlace cowsay --replace "%BANGPERL%" "!${perl}/bin/perl" \
|
substituteInPlace cowsay --replace "%BANGPERL%" "!${perl}/bin/perl" \
|
||||||
--replace "%PREFIX%" "$out"
|
--replace "%PREFIX%" "$out"
|
||||||
|
runHook postBuild;
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/{bin,man/man1,share/cows}
|
runHook preInstall
|
||||||
install -m755 cowsay $out/bin/cowsay
|
install -Dm755 cowsay $out/bin/cowsay
|
||||||
ln -s cowsay $out/bin/cowthink
|
ln -s $out/bin/cowsay $out/bin/cowthink
|
||||||
install -m644 cowsay.1 $out/man/man1/cowsay.1
|
|
||||||
ln -s cowsay.1 $out/man/man1/cowthink.1
|
installManPage cowsay.1
|
||||||
install -m644 cows/* -t $out/share/cows/
|
ln -s $man/share/man/man1/cowsay.1.gz $man/share/man/man1/cowthink.1.gz
|
||||||
|
|
||||||
|
install -Dm644 cows/* -t $out/share/cows/
|
||||||
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
outputs = [ "out" "man" ];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A program which generates ASCII pictures of a cow with a message";
|
description = "A program which generates ASCII pictures of a cow with a message";
|
||||||
homepage = "https://en.wikipedia.org/wiki/Cowsay";
|
homepage = "https://github.com/tnalpgge/rank-amateur-cowsay";
|
||||||
license = licenses.gpl1;
|
license = licenses.gpl3Only;
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
maintainers = [ maintainers.rob ];
|
maintainers = [ maintainers.rob ];
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "hwinfo";
|
pname = "hwinfo";
|
||||||
version = "21.73";
|
version = "21.74";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "opensuse";
|
owner = "opensuse";
|
||||||
repo = "hwinfo";
|
repo = "hwinfo";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-u5EXU+BrTMeDbZAv8WyBTyFcZHdBIUMpJSLTYgf3Mo8=";
|
sha256 = "sha256-pPL/RYL8eVPuX71kT64p/ZkUE4uVFALMVj8mWZM3NuU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|
|
@ -850,6 +850,8 @@ in
|
||||||
|
|
||||||
auditwheel = callPackage ../tools/package-management/auditwheel { };
|
auditwheel = callPackage ../tools/package-management/auditwheel { };
|
||||||
|
|
||||||
|
amidst = callPackage ../tools/games/amidst { };
|
||||||
|
|
||||||
gobgp = callPackage ../tools/networking/gobgp { };
|
gobgp = callPackage ../tools/networking/gobgp { };
|
||||||
|
|
||||||
metapixel = callPackage ../tools/graphics/metapixel { };
|
metapixel = callPackage ../tools/graphics/metapixel { };
|
||||||
|
@ -13367,7 +13369,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
include-what-you-use = callPackage ../development/tools/analysis/include-what-you-use {
|
include-what-you-use = callPackage ../development/tools/analysis/include-what-you-use {
|
||||||
llvmPackages = llvmPackages_10;
|
llvmPackages = llvmPackages_12;
|
||||||
};
|
};
|
||||||
|
|
||||||
indent = callPackage ../development/tools/misc/indent { };
|
indent = callPackage ../development/tools/misc/indent { };
|
||||||
|
|
|
@ -7013,6 +7013,8 @@ in {
|
||||||
|
|
||||||
qcelemental = callPackage ../development/python-modules/qcelemental { };
|
qcelemental = callPackage ../development/python-modules/qcelemental { };
|
||||||
|
|
||||||
|
qcengine = callPackage ../development/python-modules/qcengine { };
|
||||||
|
|
||||||
qdarkstyle = callPackage ../development/python-modules/qdarkstyle { };
|
qdarkstyle = callPackage ../development/python-modules/qdarkstyle { };
|
||||||
|
|
||||||
qdldl = callPackage ../development/python-modules/qdldl { };
|
qdldl = callPackage ../development/python-modules/qdldl { };
|
||||||
|
|
Loading…
Reference in a new issue