push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
{
lib,
stdenv,
fetchurl,
fetchFromGitHub,
autoreconfHook,
pkg-config,
cmrt,
libdrm,
libva,
libX11,
libGL,
wayland,
}:
stdenv.mkDerivation rec {
pname = "intel-hybrid-driver";
version = "1.0.2";
src = fetchFromGitHub {
owner = "intel";
repo = "intel-hybrid-driver";
rev = version;
sha256 = "sha256-uYX7RoU1XVzcC2ea3z/VBjmT47xmzK67Y4LaiFXyJZ8=";
};
patches = [
# driver_init: load libva-x11.so for any ABI version
(fetchurl {
url = "https://github.com/01org/intel-hybrid-driver/pull/26.diff";
sha256 = "1ql4mbi5x1d2a5c8mkjvciaq60zj8nhx912992winbhfkyvpb3gx";
})
];
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
cmrt
libdrm
libva
libX11
libGL
wayland
];
enableParallelBuilding = true;
# Workaround build failure on -fno-common toolchains like upstream gcc-10.
env.NIX_CFLAGS_COMPILE = "-fcommon";
configureFlags = [
"--enable-drm"
"--enable-x11"
"--enable-wayland"
];
postPatch = ''
patchShebangs ./src/shaders/gpp.py
'';
preConfigure = ''
sed -i -e "s,LIBVA_DRIVERS_PATH=.*,LIBVA_DRIVERS_PATH=$out/lib/dri," configure
'';
meta = with lib; {
homepage = "https://01.org/linuxmedia";
description = "Intel driver for the VAAPI library with partial HW acceleration";
license = licenses.mit;
maintainers = with maintainers; [ tadfisher ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,47 @@
{
lib,
buildGoModule,
fetchFromGitHub,
testers,
}:
buildGoModule (finalAttrs: {
pname = "vacuum-go";
version = "0.18.5";
src = fetchFromGitHub {
owner = "daveshanley";
repo = "vacuum";
# using refs/tags because simple version gives: 'the given path has multiple possibilities' error
tag = "v${finalAttrs.version}";
hash = "sha256-vsdSRsfGXjWlYxl3a6cGWJ7IadLP7KIM3lFkUlboTj4=";
};
vendorHash = "sha256-+GkxN20mZD/ZBTCjmjiDcEAJix2Ssn9HsNrUtQkrI18=";
env.CGO_ENABLED = 0;
ldflags = [
"-s"
"-w"
"-X main.version=v${finalAttrs.version}"
];
subPackages = [ "./vacuum.go" ];
passthru = {
tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command = "vacuum version";
version = "v${finalAttrs.version}";
};
};
meta = {
description = "World's fastest OpenAPI & Swagger linter";
homepage = "https://quobix.com/vacuum";
changelog = "https://github.com/daveshanley/vacuum/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
mainProgram = "vacuum";
maintainers = with lib.maintainers; [ konradmalik ];
};
})

View File

@@ -0,0 +1,72 @@
{
buildNpmPackage,
fetchFromGitHub,
lib,
electron,
makeWrapper,
writableTmpDirAsHomeHook,
}:
buildNpmPackage rec {
pname = "vacuum-tube";
version = "1.3.19";
src = fetchFromGitHub {
owner = "shy1132";
repo = "VacuumTube";
tag = "v${version}";
hash = "sha256-WJUxLS7rthRfnXbyHwcC53U/qUvqxlZL5EQk3IareFQ=";
};
npmDepsHash = "sha256-Q9a+B+kRj5n8XcZD1Ue+HMx/VP8/LfYb8Jm6SIPNY0U=";
env = {
ELECTRON_SKIP_BINARY_DOWNLOAD = true;
};
nativeBuildInputs = [
makeWrapper
writableTmpDirAsHomeHook
];
buildPhase = ''
runHook preBuild
npx electron-builder -l --dir \
-c.electronDist="${electron.dist}" \
-c.electronVersion=${electron.version}
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/opt
cp -r ./dist/*-unpacked $out/opt/VacuumTube
for i in 16 32 48 64 256 512; do
install -Dm644 "assets/icons/$i"x"$i.png" \
"$out/share/icons/hicolor/$i"x"$i/apps/rocks.shy.VacuumTube.png"
done
install -Dm644 flatpak/rocks.shy.VacuumTube.desktop $out/share/applications/VacuumTube.desktop
substituteInPlace $out/share/applications/VacuumTube.desktop \
--replace-fail 'Exec=startvacuumtube' 'Exec=VacuumTube'
makeWrapper "${electron}/bin/electron" "$out/bin/VacuumTube" \
--add-flags "$out/opt/VacuumTube/resources/app.asar" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
runHook postInstall
'';
meta = {
description = "YouTube Leanback on the desktop, with enhancements";
homepage = "https://github.com/shy1132/VacuumTube";
mainProgram = "VacuumTube";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ theCapypara ];
};
}

View File

@@ -0,0 +1,349 @@
From dc7156d8951242231cfd9142b3d5628815dc6589 Mon Sep 17 00:00:00 2001
From: Maximilian Bosch <maximilian@mbosch.me>
Date: Wed, 31 Mar 2021 14:30:01 +0200
Subject: [PATCH] Revert "Merge pull request #12225 from
chrisroberts/resolution-isolation"
This reverts commit 8a69d0c4dae035a4b1aa789bc4ec3db69c210df2, reversing
changes made to 5dd0a8c8acc36b654c13a5102e4327eedf1858f2.
-----
Rationale: NixOS-specific patch. The changes in here break our current
implementation of declarative plugins (only `vagrant-libvirt` atm).
---
bin/vagrant | 28 +--------------
lib/vagrant.rb | 2 +-
lib/vagrant/bundler.rb | 17 +++------
lib/vagrant/errors.rb | 12 -------
lib/vagrant/plugin/manager.rb | 22 ++----------
templates/locales/en.yml | 23 ++----------
test/unit/bin/vagrant_test.rb | 1 -
test/unit/vagrant/bundler_test.rb | 58 ++++++++++++++-----------------
8 files changed, 39 insertions(+), 124 deletions(-)
diff --git a/bin/vagrant b/bin/vagrant
index c019f30ff..ba7e40076 100755
--- a/bin/vagrant
+++ b/bin/vagrant
@@ -23,9 +23,9 @@ if idx = argv.index("--")
argv = argv.slice(0, idx)
end
-require_relative "../lib/vagrant/version"
# Fast path the version of Vagrant
if argv.include?("-v") || argv.include?("--version")
+ require_relative "../lib/vagrant/version"
puts "Vagrant #{Vagrant::VERSION}"
exit 0
end
@@ -82,29 +82,6 @@ end
$stdout.sync = true
$stderr.sync = true
-# Before we start activate all our dependencies
-# so we can provide correct resolutions later
-builtin_specs = []
-
-vagrant_spec = Gem::Specification.find_all_by_name("vagrant").detect do |spec|
- spec.version == Gem::Version.new(Vagrant::VERSION)
-end
-
-dep_activator = proc do |spec|
- spec.runtime_dependencies.each do |dep|
- gem(dep.name, *dep.requirement.as_list)
- dep_spec = Gem::Specification.find_all_by_name(dep.name).detect(&:activated?)
- if dep_spec
- builtin_specs << dep_spec
- dep_activator.call(dep_spec)
- end
- end
-end
-
-if vagrant_spec
- dep_activator.call(vagrant_spec)
-end
-
env = nil
begin
require 'vagrant'
@@ -113,9 +90,6 @@ begin
require 'vagrant/util/platform'
require 'vagrant/util/experimental'
- # Set our list of builtin specs
- Vagrant::Bundler.instance.builtin_specs = builtin_specs
-
# Schedule the cleanup of things
at_exit(&Vagrant::Bundler.instance.method(:deinit))
diff --git a/lib/vagrant.rb b/lib/vagrant.rb
index f790039d3..97e67e3b8 100644
--- a/lib/vagrant.rb
+++ b/lib/vagrant.rb
@@ -64,7 +64,7 @@ require "vagrant/plugin/manager"
# See https://github.com/rest-client/rest-client/issues/34#issuecomment-290858
# for more information
class VagrantLogger < Log4r::Logger
- def << msg
+ def << (msg)
debug(msg.strip)
end
end
diff --git a/lib/vagrant/bundler.rb b/lib/vagrant/bundler.rb
index eb2caabb0..d75f54362 100644
--- a/lib/vagrant/bundler.rb
+++ b/lib/vagrant/bundler.rb
@@ -192,11 +192,8 @@
attr_reader :env_plugin_gem_path
# @return [Pathname] Vagrant environment data path
attr_reader :environment_data_path
- # @return [Array<Gem::Specification>, nil] List of builtin specs
- attr_accessor :builtin_specs
def initialize
- @builtin_specs = []
@plugin_gem_path = Vagrant.user_data_path.join("gems", RUBY_VERSION).freeze
@logger = Log4r::Logger.new("vagrant::bundler")
end
@@ -298,6 +295,7 @@
# Never allow dependencies to be remotely satisfied during init
request_set.remote = false
+ repair_result = nil
begin
@logger.debug("resolving solution from available specification set")
# Resolve the request set to ensure proper activation order
@@ -672,6 +670,7 @@
self_spec.activate
@logger.info("Activated vagrant specification version - #{self_spec.version}")
end
+ self_spec.runtime_dependencies.each { |d| gem d.name, *d.requirement.as_list }
# discover all the gems we have available
list = {}
if Gem.respond_to?(:default_specifications_dir)
@@ -680,16 +679,10 @@
spec_dir = Gem::Specification.default_specifications_dir
end
directories = [spec_dir]
- if Vagrant.in_bundler?
- Gem::Specification.find_all{true}.each do |spec|
- list[spec.name] = spec
- end
- else
- builtin_specs.each do |spec|
- list[spec.name] = spec
- end
+ Gem::Specification.find_all{true}.each do |spec|
+ list[spec.name] = spec
end
- if Vagrant.in_installer?
+ if(!Object.const_defined?(:Bundler))
directories += Gem::Specification.dirs.find_all do |path|
!path.start_with?(Gem.user_dir)
end
diff --git a/lib/vagrant/errors.rb b/lib/vagrant/errors.rb
index 5cb861c06..782615bc4 100644
--- a/lib/vagrant/errors.rb
+++ b/lib/vagrant/errors.rb
@@ -691,18 +691,6 @@ module Vagrant
error_key(:provisioner_winrm_unsupported)
end
- class PluginNeedsDeveloperTools < VagrantError
- error_key(:plugin_needs_developer_tools)
- end
-
- class PluginMissingLibrary < VagrantError
- error_key(:plugin_missing_library)
- end
-
- class PluginMissingRubyDev < VagrantError
- error_key(:plugin_missing_ruby_dev)
- end
-
class PluginGemNotFound < VagrantError
error_key(:plugin_gem_not_found)
end
diff --git a/lib/vagrant/plugin/manager.rb b/lib/vagrant/plugin/manager.rb
index b73f07f9c..9058e68b3 100644
--- a/lib/vagrant/plugin/manager.rb
+++ b/lib/vagrant/plugin/manager.rb
@@ -182,26 +182,8 @@ module Vagrant
result
rescue Gem::GemNotFoundException
raise Errors::PluginGemNotFound, name: name
- rescue Gem::Exception => err
- @logger.warn("Failed to install plugin: #{err}")
- @logger.debug("#{err.class}: #{err}\n#{err.backtrace.join("\n")}")
- # Try and determine a cause for the failure
- case err.message
- when /install development tools first/
- raise Errors::PluginNeedsDeveloperTools
- when /library not found in default locations/
- lib = err.message.match(/(\w+) library not found in default locations/)
- if lib.nil?
- raise Errors::BundlerError, message: err.message
- end
- raise Errors::PluginMissingLibrary,
- library: lib.captures.first,
- name: name
- when /find header files for ruby/
- raise Errors::PluginMissingRubyDev
- else
- raise Errors::BundlerError, message: err.message
- end
+ rescue Gem::Exception => e
+ raise Errors::BundlerError, message: e.to_s
end
# Uninstalls the plugin with the given name.
diff --git a/templates/locales/en.yml b/templates/locales/en.yml
index edae9b477..782904f49 100644
--- a/templates/locales/en.yml
+++ b/templates/locales/en.yml
@@ -875,9 +875,9 @@ en:
matching this provider. For example, if you're using VirtualBox,
the clone environment must also be using VirtualBox.
cloud_init_not_found: |-
- cloud-init is not found. Please ensure that cloud-init is installed and
+ cloud-init is not found. Please ensure that cloud-init is installed and
available on path for guest '%{guest_name}'.
- cloud_init_command_failed: |-
+ cloud_init_command_failed: |-
cloud init command '%{cmd}' failed on guest '%{guest_name}'.
command_deprecated: |-
The command 'vagrant %{name}' has been deprecated and is no longer functional
@@ -1347,30 +1347,6 @@ en:
following command:
vagrant plugin install --local
- plugin_needs_developer_tools: |-
- Vagrant failed to install the requested plugin because development tools
- are required for installation but are not currently installed on this
- machine. Please install development tools and then try this command
- again.
- plugin_missing_library: |-
- Vagrant failed to install the requested plugin because it depends
- on development files for a library which is not currently installed
- on this system. The following library is required by the '%{name}'
- plugin:
-
- %{library}
-
- If a package manager is used on this system, please install the development
- package for the library. The name of the package will be similar to:
-
- %{library}-dev or %{library}-devel
-
- After the library and development files have been installed, please
- run the command again.
- plugin_missing_ruby_dev: |-
- Vagrant failed to install the requested plugin because the Ruby header
- files could not be found. Install the ruby development package for your
- system and then run this command again.
powershell_not_found: |-
Failed to locate the powershell executable on the available PATH. Please
ensure powershell is installed and available on the local PATH, then
@@ -3183,7 +3159,7 @@ en:
pushes:
file:
no_destination: "File destination must be specified."
-
+
autocomplete:
installed: |-
Autocomplete installed at paths:
diff --git a/test/unit/bin/vagrant_test.rb b/test/unit/bin/vagrant_test.rb
index dbbd52112..bc11309aa 100644
--- a/test/unit/bin/vagrant_test.rb
+++ b/test/unit/bin/vagrant_test.rb
@@ -33,7 +33,6 @@ describe "vagrant bin" do
allow(Kernel).to receive(:exit)
allow(Vagrant::Environment).to receive(:new).and_return(env)
allow(Vagrant).to receive(:in_installer?).and_return(true)
- allow(self).to receive(:require_relative)
end
after { expect(run_vagrant).to eq(exit_code) }
diff --git a/test/unit/vagrant/bundler_test.rb b/test/unit/vagrant/bundler_test.rb
index 69f425c66..00cedc021 100644
--- a/test/unit/vagrant/bundler_test.rb
+++ b/test/unit/vagrant/bundler_test.rb
@@ -809,46 +809,42 @@ describe Vagrant::Bundler do
end
end
- context "when bundler is not defined" do
- before { expect(Vagrant).to receive(:in_bundler?).and_return(false) }
-
- context "when running inside the installer" do
- before { expect(Vagrant).to receive(:in_installer?).and_return(true) }
+ context "when run time dependencies are defined" do
+ let(:vagrant_dep_specs) { [double("spec", name: "vagrant-dep", requirement: double("spec-req", as_list: []))] }
- it "should load gem specification directories" do
- expect(Gem::Specification).to receive(:dirs).and_return(spec_dirs)
- subject.send(:vagrant_internal_specs)
- end
+ it "should call #gem to activate the dependencies" do
+ expect(subject).to receive(:gem).with("vagrant-dep", any_args)
+ subject.send(:vagrant_internal_specs)
+ end
+ end
- context "when checking paths" do
- let(:spec_dirs) { [double("spec-dir", start_with?: in_user_dir)] }
- let(:in_user_dir) { true }
- let(:user_dir) { double("user-dir") }
+ context "when bundler is not defined" do
+ before { expect(Object).to receive(:const_defined?).with(:Bundler).and_return(false) }
- before { allow(Gem).to receive(:user_dir).and_return(user_dir) }
+ it "should load gem specification directories" do
+ expect(Gem::Specification).to receive(:dirs).and_return(spec_dirs)
+ subject.send(:vagrant_internal_specs)
+ end
- it "should check if path is within local user directory" do
- expect(spec_dirs.first).to receive(:start_with?).with(user_dir).and_return(false)
- subject.send(:vagrant_internal_specs)
- end
+ context "when checking paths" do
+ let(:spec_dirs) { [double("spec-dir", start_with?: in_user_dir)] }
+ let(:in_user_dir) { true }
+ let(:user_dir) { double("user-dir") }
- context "when path is not within user directory" do
- let(:in_user_dir) { false }
+ before { allow(Gem).to receive(:user_dir).and_return(user_dir) }
- it "should use path when loading specs" do
- expect(Gem::Specification).to receive(:each_spec) { |arg| expect(arg).to include(spec_dirs.first) }
- subject.send(:vagrant_internal_specs)
- end
- end
+ it "should check if path is within local user directory" do
+ expect(spec_dirs.first).to receive(:start_with?).with(user_dir).and_return(false)
+ subject.send(:vagrant_internal_specs)
end
- end
- context "when running outside the installer" do
- before { expect(Vagrant).to receive(:in_installer?).and_return(false) }
+ context "when path is not within user directory" do
+ let(:in_user_dir) { false }
- it "should not load gem specification directories" do
- expect(Gem::Specification).not_to receive(:dirs)
- subject.send(:vagrant_internal_specs)
+ it "should use path when loading specs" do
+ expect(Gem::Specification).to receive(:each_spec) { |arg| expect(arg).to include(spec_dirs.first) }
+ subject.send(:vagrant_internal_specs)
+ end
end
end
end
--
2.29.3

View File

@@ -0,0 +1,93 @@
From: Antonio Terceiro <terceiro@debian.org>
Date: Wed, 27 May 2015 09:36:17 -0300
Subject: Support system-installed plugins
Source: https://salsa.debian.org/ruby-team/vagrant/-/blob/9d86f222/debian/patches/0004-Support-system-installed-plugins.patch
Plugins must be installed as regular Ruby libraries, and they must
contain /usr/share/vagrant-plugins/plugins.d/$PLUGINNAME.json with the
following content:
{
"${PLUGINNAME}": {
"ruby_version":"$(ruby -e 'puts RUBY_VERSION')",
"vagrant_version":"$(cat /usr/share/vagrant/version.txt)",
"gem_version":"",
"require":"",
"sources":[]
}
}
---
lib/vagrant/plugin/manager.rb | 4 ++--
lib/vagrant/plugin/state_file.rb | 22 +++++++++++++++++++++-
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/lib/vagrant/plugin/manager.rb b/lib/vagrant/plugin/manager.rb
index 9058e68..2772131 100644
--- a/lib/vagrant/plugin/manager.rb
+++ b/lib/vagrant/plugin/manager.rb
@@ -18,7 +18,7 @@ module Vagrant
# Returns the path to the [StateFile] for system plugins.
def self.system_plugins_file
- dir = Vagrant.installer_embedded_dir
+ dir = '@system_plugin_dir@'
return nil if !dir
Pathname.new(dir).join("plugins.json")
end
@@ -38,7 +38,7 @@ module Vagrant
system_path = self.class.system_plugins_file
@system_file = nil
- @system_file = StateFile.new(system_path) if system_path && system_path.file?
+ @system_file = StateFile.new(system_path, true) if system_path && system_path.file?
@local_file = nil
@globalized = @localized = false
diff --git a/lib/vagrant/plugin/state_file.rb b/lib/vagrant/plugin/state_file.rb
index c6872d4..935d431 100644
--- a/lib/vagrant/plugin/state_file.rb
+++ b/lib/vagrant/plugin/state_file.rb
@@ -11,8 +11,9 @@ module Vagrant
# @return [Pathname] path to file
attr_reader :path
- def initialize(path)
+ def initialize(path, system = false)
@path = path
+ @system = system
@data = {}
if @path.exist?
@@ -28,6 +29,21 @@ module Vagrant
@data["version"] ||= "1"
@data["installed"] ||= {}
+ load_extra_plugins
+ end
+
+ def load_extra_plugins
+ extra_plugins = Dir.glob(@path.dirname.join('plugins.d', '*.json'))
+ extra_plugins.each do |filename|
+ json = File.read(filename)
+ begin
+ plugin_data = JSON.parse(json)
+ @data["installed"].merge!(plugin_data)
+ rescue JSON::ParserError => e
+ raise Vagrant::Errors::PluginStateFileParseError,
+ path: filename, message: e.message
+ end
+ end
end
# Add a plugin that is installed to the state file.
@@ -107,6 +123,10 @@ module Vagrant
f.close
FileUtils.mv(f.path, @path)
end
+ rescue Errno::EACCES
+ # Ignore permission denied against system-installed plugins; regular
+ # users are not supposed to write there.
+ raise unless @system
end
protected

View File

@@ -0,0 +1,857 @@
{
base64 = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g";
type = "gem";
};
version = "0.2.0";
};
bcrypt_pbkdf = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "04rb3rp9bdxn1y3qiflfpj7ccwb8ghrfbydh5vfz1l9px3fpg41g";
type = "gem";
};
version = "1.1.1";
};
bigdecimal = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "06sfv80bmxfczkqi3pb3yc9zicqhf94adh5f8hpkn3bsqqd1vlgz";
type = "gem";
};
version = "3.2.3";
};
builder = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0pw3r2lyagsxkm71bf44v5b74f7l9r7di22brbyji9fwz791hya9";
type = "gem";
};
version = "3.3.0";
};
childprocess = {
dependencies = [ "logger" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1v5nalaarxnfdm6rxb7q6fmc6nx097jd630ax6h9ch7xw95li3cs";
type = "gem";
};
version = "5.1.0";
};
concurrent-ruby = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1ipbrgvf0pp6zxdk5ascp6i29aybz2bx9wdrlchjmpx6mhvkwfw1";
type = "gem";
};
version = "1.3.5";
};
csv = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0gz7r2kazwwwyrwi95hbnhy54kwkfac5swh2gy5p5vw36fn38lbf";
type = "gem";
};
version = "3.3.5";
};
date = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0kz6mc4b9m49iaans6cbx031j9y7ldghpi5fzsdh0n3ixwa8w9mz";
type = "gem";
};
version = "3.4.1";
};
diff-lcs = {
groups = [
"default"
"development"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0qlrj2qyysc9avzlr4zs1py3x684hqm61n4czrsk1pyllz5x5q4s";
type = "gem";
};
version = "1.6.2";
};
ed25519 = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0zb2dr2ihb1qiknn5iaj1ha1w9p7lj9yq5waasndlfadz225ajji";
type = "gem";
};
version = "1.3.0";
};
erubi = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1naaxsqkv5b3vklab5sbb9sdpszrjzlfsbqpy7ncbnw510xi10m0";
type = "gem";
};
version = "1.13.1";
};
excon = {
dependencies = [ "logger" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1gj6h2r9ylkmz9wjlf6p04d3hw99qfnf0wb081lzjx3alk13ngfq";
type = "gem";
};
version = "1.3.0";
};
fake_ftp = {
groups = [ "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1zl9q9m4x7lz9890g0h1qqj7hcxnwzpjfnfbxadjblps7b5054q4";
type = "gem";
};
version = "0.3.0";
};
faraday = {
dependencies = [
"faraday-net_http"
"json"
"logger"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "09mcghancmn0s5cwk2xz581j3xm3xqxfv0yxg75axnyhrx9gy6f7";
type = "gem";
};
version = "2.13.4";
};
faraday-net_http = {
dependencies = [ "net-http" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0fxbckg468dabkkznv48ss8zv14d9cd8mh1rr3m98aw7wzx5fmq9";
type = "gem";
};
version = "3.4.1";
};
ffi = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "19kdyjg3kv7x0ad4xsd4swy5izsbb1vl1rpb6qqcqisr5s23awi9";
type = "gem";
};
version = "1.17.2";
};
grpc-tools = {
groups = [ "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0c994vqf1vnjvvb4np9bckj5ycxi3svf7kh6z0011vr4a7pvarym";
type = "gem";
};
version = "1.75.0";
};
gssapi = {
dependencies = [ "ffi" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1qdfhj12aq8v0y961v4xv96a1y2z80h3xhvzrs9vsfgf884g6765";
type = "gem";
};
version = "1.3.1";
};
gyoku = {
dependencies = [
"builder"
"rexml"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1kd2q59xpm39hpvmmvyi6g3f1fr05xjbnxwkrdqz4xy7hirqi79q";
type = "gem";
};
version = "1.4.0";
};
hashicorp-checkpoint = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "031lzv4v577zc4f2f918n3hgh3hsrc7rwhlpgrfa1c1f9dsfm34j";
type = "gem";
};
version = "0.1.6";
};
hashie = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1nh3arcrbz1rc1cr59qm53sdhqm137b258y8rcb4cvd3y98lwv4x";
type = "gem";
};
version = "5.0.0";
};
httpclient = {
dependencies = [ "mutex_m" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1j4qwj1nv66v3n9s4xqf64x2galvjm630bwa5xngicllwic5jr2b";
type = "gem";
};
version = "2.9.0";
};
i18n = {
dependencies = [ "concurrent-ruby" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "03sx3ahz1v5kbqjwxj48msw3maplpp2iyzs22l4jrzrqh4zmgfnf";
type = "gem";
};
version = "1.14.7";
};
ipaddr = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0wmgwqv6c1kq8cxbxddllnrlh5jjmjw73i1sqbnvq55zzn3l0zyb";
type = "gem";
};
version = "1.2.7";
};
json = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0hj6yxpi710g1pfyg0aysahqv6dzz8y3l949q1y6kw79a7br92dh";
type = "gem";
};
version = "2.14.1";
};
jwt = {
dependencies = [ "base64" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0dfm4bhl4fzn076igh0bmh2v1vphcrxdv6ldc46hdd3bkbqr2sdg";
type = "gem";
};
version = "3.1.2";
};
listen = {
dependencies = [
"rb-fsevent"
"rb-inotify"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0rwwsmvq79qwzl6324yc53py02kbrcww35si720490z5w0j497nv";
type = "gem";
};
version = "3.9.0";
};
little-plugger = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym";
type = "gem";
};
version = "1.1.4";
};
log4r = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv";
type = "gem";
};
version = "1.1.10";
};
logger = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "00q2zznygpbls8asz5knjvvj2brr3ghmqxgr83xnrdj4rk3xwvhr";
type = "gem";
};
version = "1.7.0";
};
logging = {
dependencies = [
"little-plugger"
"multi_json"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1jqcq2yxh973f3aw63nd3wxhqyhkncz3pf8v2gs3df0iqair725s";
type = "gem";
};
version = "2.4.0";
};
mime-types = {
dependencies = [
"logger"
"mime-types-data"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0mjyxl7c0xzyqdqa8r45hqg7jcw2prp3hkp39mdf223g4hfgdsyw";
type = "gem";
};
version = "3.7.0";
};
mime-types-data = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0706xids054kgngsgnywajcwydxkhnlydvy3yb202j5c8hv7h3hb";
type = "gem";
};
version = "3.2025.0916";
};
multi_json = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "06sabsvnw0x1aqdcswc6bqrqz6705548bfd8z22jxgxfjrn1yn3n";
type = "gem";
};
version = "1.17.0";
};
multi_xml = {
dependencies = [ "bigdecimal" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1kl7ax7zcj8czlxs6vn3kdhpnz1dwva4y5zwnavssfv193f9cyih";
type = "gem";
};
version = "0.7.2";
};
mutex_m = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0l875dw0lk7b2ywa54l0wjcggs94vb7gs8khfw9li75n2sn09jyg";
type = "gem";
};
version = "0.3.0";
};
net-ftp = {
dependencies = [
"net-protocol"
"time"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0kw7g0j35fla8438s90m72b3xr0mqnpgm910qcwrgnvyg903xmi8";
type = "gem";
};
version = "0.3.8";
};
net-http = {
dependencies = [ "uri" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1ysrwaabhf0sn24jrp0nnp51cdv0jf688mh5i6fsz63q2c6b48cn";
type = "gem";
};
version = "0.6.0";
};
net-protocol = {
dependencies = [ "timeout" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1a32l4x73hz200cm587bc29q8q9az278syw3x6fkc9d1lv5y0wxa";
type = "gem";
};
version = "0.2.2";
};
net-scp = {
dependencies = [ "net-ssh" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0p8s7l4pr6hkn0l6rxflsc11alwi1kfg5ysgvsq61lz5l690p6x9";
type = "gem";
};
version = "4.1.0";
};
net-sftp = {
dependencies = [ "net-ssh" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0r33aa2d61hv1psm0l0mm6ik3ycsnq8symv7h84kpyf2b7493fv5";
type = "gem";
};
version = "4.0.0";
};
net-ssh = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1w1ypxa3n6mskkwb00b489314km19l61p5h3bar6zr8cng27c80p";
type = "gem";
};
version = "7.3.0";
};
nori = {
dependencies = [ "bigdecimal" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0qb84bbi74q0zgs09sdkq750jf2ri3lblbry0xi4g1ard4rwsrk1";
type = "gem";
};
version = "2.7.1";
};
oauth2 = {
dependencies = [
"faraday"
"jwt"
"logger"
"multi_xml"
"rack"
"snaky_hash"
"version_gem"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0dcqwwlm8afr97mg1i633yia3hzd61f0j5csrspzsvf0mfp85qf4";
type = "gem";
};
version = "2.0.17";
};
ostruct = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "04nrir9wdpc4izqwqbysxyly8y7hsfr4fsv69rw91lfi9d5fv8lm";
type = "gem";
};
version = "0.6.3";
};
rack = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0cwy1br09dh5fklwf5xna7vabns8c1229kr2v0a0s6y2brz3zbrh";
type = "gem";
};
version = "3.2.1";
};
rake = {
groups = [ "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "14s4jdcs1a4saam9qmzbsa2bsh85rj9zfxny5z315x3gg0nhkxcn";
type = "gem";
};
version = "13.3.0";
};
rake-compiler = {
dependencies = [ "rake" ];
groups = [ "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "09s1vyfby7lqbw4jn27la4vikwjdxswzbp2wdyrjgbaddppp5hpf";
type = "gem";
};
version = "1.3.0";
};
rb-fsevent = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1zmf31rnpm8553lqwibvv3kkx0v7majm1f341xbxc0bk5sbhp423";
type = "gem";
};
version = "0.11.2";
};
rb-inotify = {
dependencies = [ "ffi" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0vmy8xgahixcz6hzwy4zdcyn2y6d6ri8dqv5xccgzc1r292019x0";
type = "gem";
};
version = "0.11.1";
};
rb-kqueue = {
dependencies = [ "ffi" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0vpq1dmmlbggfk399s7jq2rrnjp6r8774amfli75bqhjn1sk2bxg";
type = "gem";
};
version = "0.2.8";
};
rexml = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0hninnbvqd2pn40h863lbrn9p11gvdxp928izkag5ysx8b1s5q0r";
type = "gem";
};
version = "3.4.4";
};
rspec = {
dependencies = [
"rspec-core"
"rspec-expectations"
"rspec-mocks"
];
groups = [ "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0h11wynaki22a40rfq3ahcs4r36jdpz9acbb3m5dkf0mm67sbydr";
type = "gem";
};
version = "3.13.1";
};
rspec-core = {
dependencies = [ "rspec-support" ];
groups = [
"default"
"development"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "18sgga9zjrd5579m9rpb78l7yn9a0bjzwz51z5kiq4y6jwl6hgxb";
type = "gem";
};
version = "3.13.5";
};
rspec-expectations = {
dependencies = [
"diff-lcs"
"rspec-support"
];
groups = [
"default"
"development"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0dl8npj0jfpy31bxi6syc7jymyd861q277sfr6jawq2hv6hx791k";
type = "gem";
};
version = "3.13.5";
};
rspec-its = {
dependencies = [
"rspec-core"
"rspec-expectations"
];
groups = [ "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1xjikikx2sn9b7nbaza60xq7livjw9kp3a6gwbv5xz9zjd7k2164";
type = "gem";
};
version = "1.3.1";
};
rspec-mocks = {
dependencies = [
"diff-lcs"
"rspec-support"
];
groups = [
"default"
"development"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "10gajm8iscl7gb8q926hyna83bw3fx2zb4sqdzjrznjs51pqlcz4";
type = "gem";
};
version = "3.13.5";
};
rspec-support = {
groups = [
"default"
"development"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1cmgz34hwj5s3jwxhyl8mszs24nci12ffbrmr5jb1si74iqf739f";
type = "gem";
};
version = "3.13.6";
};
rubyntlm = {
dependencies = [ "base64" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1x8l0d1v88m40mby4jvgal46137cv8gga2lk7zlrxqlsp41380a7";
type = "gem";
};
version = "0.6.5";
};
rubyzip = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz";
type = "gem";
};
version = "2.3.2";
};
snaky_hash = {
dependencies = [
"hashie"
"version_gem"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0mnllrwhs7psw6xxs8x5yx85k12qjfdgs8zs0bxm70bfascx58r5";
type = "gem";
};
version = "2.0.3";
};
thor = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0d1g37j6sc7fkidf8rqlm3wh9zgyg3g7y8h2x1y34hmil5ywa8c3";
type = "gem";
};
version = "0.18.1";
};
time = {
dependencies = [ "date" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0qgarmdyqypzsaanf4w9vqrd9axrcrjqilxwrfmxp954102kcpq3";
type = "gem";
};
version = "0.4.1";
};
timeout = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "03p31w5ghqfsbz5mcjzvwgkw3h9lbvbknqvrdliy8pxmn9wz02cm";
type = "gem";
};
version = "0.4.3";
};
uri = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "04bhfvc25b07jaiaf62yrach7khhr5jlr5bx6nygg8pf11329wp9";
type = "gem";
};
version = "1.0.3";
};
vagrant-spec = {
dependencies = [
"childprocess"
"log4r"
"rspec"
"thor"
];
groups = [ "default" ];
platforms = [ ];
source = {
fetchSubmodules = false;
rev = "2a5afa7512753288b4ec1e26ec13bc6479b2fabb";
sha256 = "08l0qc7566126pqwn3cr91j5wgd2zqij8sacngr5yfsk2anl8fw0";
type = "git";
url = "https://github.com/hashicorp/vagrant-spec.git";
};
version = "0.0.1";
};
vagrant_cloud = {
dependencies = [
"excon"
"log4r"
"oauth2"
"rexml"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "09cmp6qsc92zy4j7xlair7yz1hgr40c8nrbh93krjcplkh55zvyv";
type = "gem";
};
version = "3.1.3";
};
version_gem = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "195r5qylwxwqbllnpli9c2pzin0lky6h3fw912h88g2lmri0j6hc";
type = "gem";
};
version = "1.1.9";
};
wdm = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0ivnnabxvr3dzvddfpd5x8d093zfd5vccns60z59jl9pdp5rsvf4";
type = "gem";
};
version = "0.2.0";
};
webrick = {
groups = [ "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "12d9n8hll67j737ym2zw4v23cn4vxyfkb6vyv1rzpwv6y6a3qbdl";
type = "gem";
};
version = "1.9.1";
};
winrm = {
dependencies = [
"builder"
"erubi"
"gssapi"
"gyoku"
"httpclient"
"logging"
"nori"
"rexml"
"rubyntlm"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "01jxpshw5kx5ha21ymaaj14vibv5bvm0dd80ccc6xl3jaxy7cszg";
type = "gem";
};
version = "2.3.9";
};
winrm-elevated = {
dependencies = [
"erubi"
"winrm"
"winrm-fs"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1lmlaii8qapn84wxdg5d82gbailracgk67d0qsnbdnffcg8kswzd";
type = "gem";
};
version = "1.2.3";
};
winrm-fs = {
dependencies = [
"erubi"
"logging"
"rubyzip"
"winrm"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0gb91k6s1yjqw387x4w1nkpnxblq3pjdqckayl0qvz5n3ygdsb0d";
type = "gem";
};
version = "1.3.5";
};
}

View File

@@ -0,0 +1,414 @@
{
builder = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0pw3r2lyagsxkm71bf44v5b74f7l9r7di22brbyji9fwz791hya9";
type = "gem";
};
version = "3.3.0";
};
diff-lcs = {
groups = [
"default"
"development"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1znxccz83m4xgpd239nyqxlifdb7m8rlfayk6s259186nkgj6ci7";
type = "gem";
};
version = "1.5.1";
};
diffy = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "19xaz5qmw0kg1rdsjh13vk7674bpcmjy6cnddx1cvl80vgkvjr22";
type = "gem";
};
version = "3.4.3";
};
excon = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "00p5fww0bakph4p9skc7ypjqbqc8crnw31nrmpdm8j4rr5kp4jb0";
type = "gem";
};
version = "1.2.2";
};
fog-core = {
dependencies = [
"builder"
"excon"
"formatador"
"mime-types"
];
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1rjv4iqr64arxv07bh84zzbr1y081h21592b5zjdrk937al8mq1z";
type = "gem";
};
version = "2.6.0";
};
fog-json = {
dependencies = [
"fog-core"
"multi_json"
];
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
type = "gem";
};
version = "1.2.0";
};
fog-libvirt = {
dependencies = [
"fog-core"
"fog-json"
"fog-xml"
"json"
"ruby-libvirt"
];
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "036ajdyj4fxnhqf108jgzjkpiknnr6dg7mrapn8jsagqdr2a2k21";
type = "gem";
};
version = "0.13.1";
};
fog-xml = {
dependencies = [
"fog-core"
"nokogiri"
];
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1vyyb2429xqzys39xyk2r3fal80qqn397aj2kqsjrgg2y6m59i41";
type = "gem";
};
version = "0.1.4";
};
formatador = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1l06bv4avphbdmr1y4g0rqlczr38k6r65b3zghrbj2ynyhm3xqjl";
type = "gem";
};
version = "1.1.0";
};
json = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1kvbzh8530pp3qf63zvx9hnb708x7plv9wfn5ibns3h3knnvs3kw";
type = "gem";
};
version = "2.9.0";
};
logger = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0q9jm4pzqxk92dq9a1y7gjwcw3dcsm1mnsdhi9ms5hw1dpnprzlx";
type = "gem";
};
version = "1.6.2";
};
mime-types = {
dependencies = [
"logger"
"mime-types-data"
];
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0r34mc3n7sxsbm9mzyzy8m3dvq7pwbryyc8m452axkj0g2axnwbg";
type = "gem";
};
version = "3.6.0";
};
mime-types-data = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0a7fq0wn2fdv57dsxfmjyzsjhxprh56k0zg3c4nm9il4s3v0mzig";
type = "gem";
};
version = "3.2024.1203";
};
mini_portile2 = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0x8asxl83msn815lwmb2d7q5p29p7drhjv5va0byhk60v9n16iwf";
type = "gem";
};
version = "2.8.8";
};
multi_json = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0pb1g1y3dsiahavspyzkdy39j4q377009f6ix0bh1ag4nqw43l0z";
type = "gem";
};
version = "1.15.0";
};
nokogiri = {
dependencies = [
"mini_portile2"
"racc"
];
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "18ajyy4d16q4ahnrfmj6d6z9ak21mnbn4wblx2vddck3lvwlpkny";
type = "gem";
};
version = "1.16.8";
};
parallel = {
groups = [
"default"
"development"
"test"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1vy7sjs2pgz4i96v5yk9b7aafbffnvq7nn419fgvw55qlavsnsyq";
type = "gem";
};
version = "1.26.3";
};
parallel_tests = {
dependencies = [ "parallel" ];
groups = [
"development"
"test"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "04i61bkra454var9dc79ak3yffl13mbqx8xv2rvidx9n7ins9cyn";
type = "gem";
};
version = "4.7.2";
};
racc = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0byn0c9nkahsl93y9ln5bysq4j31q8xkf2ws42swighxd4lnjzsa";
type = "gem";
};
version = "1.8.1";
};
rake = {
groups = [
"development"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "17850wcwkgi30p7yqh60960ypn7yibacjjha0av78zaxwvd3ijs6";
type = "gem";
};
version = "13.2.1";
};
rexml = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1j9p66pmfgxnzp76ksssyfyqqrg7281dyi3xyknl3wwraaw7a66p";
type = "gem";
};
version = "3.3.9";
};
rspec-core = {
dependencies = [ "rspec-support" ];
groups = [
"development"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "001kazj244cb6fbkmh7ap74csbr78717qaskqzqpir1q8xpdmywl";
type = "gem";
};
version = "3.13.2";
};
rspec-expectations = {
dependencies = [
"diff-lcs"
"rspec-support"
];
groups = [
"development"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf";
type = "gem";
};
version = "3.13.3";
};
rspec-mocks = {
dependencies = [
"diff-lcs"
"rspec-support"
];
groups = [
"development"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1vxxkb2sf2b36d8ca2nq84kjf85fz4x7wqcvb8r6a5hfxxfk69r3";
type = "gem";
};
version = "3.13.2";
};
rspec-support = {
groups = [
"default"
"development"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1v6v6xvxcpkrrsrv7v1xgf7sl0d71vcfz1cnrjflpf6r7x3a58yf";
type = "gem";
};
version = "3.13.2";
};
ruby-libvirt = {
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0r0igmwr22pi3dkkg1p79hjf8mr178qnz83q8fnaj87x7zk3qfyg";
type = "gem";
};
version = "0.8.4";
};
vagrant-libvirt = {
dependencies = [
"diffy"
"fog-core"
"fog-libvirt"
"nokogiri"
"rexml"
"xml-simple"
];
groups = [ "plugins" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "sha256-NMiRjrVQo2Ui9nOJwpDmNJUk+95gsT85pwFMIiw3bwQ=";
type = "gem";
};
version = "0.12.2";
};
xml-simple = {
dependencies = [ "rexml" ];
groups = [
"default"
"plugins"
];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0pb9plyl71mdbjr4kllfy53qx6g68ryxblmnq9dilvy837jk24fj";
type = "gem";
};
version = "1.1.9";
};
}

View File

@@ -0,0 +1,146 @@
{
stdenv,
lib,
fetchFromGitHub,
buildRubyGem,
bundlerEnv,
ruby_3_4,
libarchive,
libguestfs,
qemu,
writeText,
withLibvirt ? stdenv.hostPlatform.isLinux,
openssl,
}:
let
# NOTE: bumping the version and updating the hash is insufficient;
# you must use bundix to generate a new gemset.nix in the Vagrant source.
version = "2.4.9";
src = fetchFromGitHub {
owner = "hashicorp";
repo = "vagrant";
rev = "v${version}";
hash = "sha256-8csEIkXI5LPf5aZUuKYKALgwtG/skXFvMBimbCerEPY=";
};
ruby = ruby_3_4;
deps = bundlerEnv rec {
name = "${pname}-${version}";
pname = "vagrant";
inherit version;
inherit ruby;
gemdir = src;
gemfile = writeText "Gemfile" "";
lockfile = writeText "Gemfile.lock" "";
gemset = lib.recursiveUpdate (import ./gemset.nix) (
{
vagrant = {
source = {
type = "path";
path = src;
};
inherit version;
dontCheckForBrokenSymlinks = true;
};
}
// lib.optionalAttrs withLibvirt (import ./gemset_libvirt.nix)
);
# This replaces the gem symlinks with directories, resolving this
# error when running vagrant (I have no idea why):
# /nix/store/p4hrycs0zaa9x0gsqylbk577ppnryixr-vagrant-2.2.6/lib/ruby/gems/2.6.0/gems/i18n-1.1.1/lib/i18n/config.rb:6:in `<module:I18n>': uninitialized constant I18n::Config (NameError)
postBuild = ''
for gem in "$out"/lib/ruby/gems/*/gems/*; do
cp -a "$gem/" "$gem.new"
rm "$gem"
# needed on macOS, otherwise the mv yields permission denied
chmod +w "$gem.new"
mv "$gem.new" "$gem"
done
'';
};
in
buildRubyGem rec {
name = "${gemName}-${version}";
gemName = "vagrant";
inherit ruby version src;
doInstallCheck = true;
dontBuild = false;
# Some reports indicate that some connection types, particularly
# WinRM, suffer from "Digest initialization failed" errors. Adding
# openssl as a build input resolves this runtime error.
buildInputs = [ openssl ];
patches = [
./use-system-bundler-version.patch
./0004-Support-system-installed-plugins.patch
./0001-Revert-Merge-pull-request-12225-from-chrisroberts-re.patch
];
postPatch = ''
substituteInPlace lib/vagrant/plugin/manager.rb --subst-var-by \
system_plugin_dir "$out/vagrant-plugins"
'';
# PATH additions:
# - libarchive: Make `bsdtar` available for extracting downloaded boxes
# withLibvirt only:
# - libguestfs: Make 'virt-sysprep' available for 'vagrant package'
# - qemu: Make 'qemu-img' available for 'vagrant package'
postInstall =
let
pathAdditions = lib.makeSearchPath "bin" (
map (x: lib.getBin x) (
[
libarchive
]
++ lib.optionals withLibvirt [
libguestfs
qemu
]
)
);
in
''
wrapProgram "$out/bin/vagrant" \
--set GEM_PATH "${deps}/lib/ruby/gems/${ruby.version.libDir}" \
--prefix PATH ':' ${pathAdditions} \
--set-default VAGRANT_CHECKPOINT_DISABLE 1
mkdir -p "$out/vagrant-plugins/plugins.d"
echo '{}' > "$out/vagrant-plugins/plugins.json"
# install bash completion
mkdir -p $out/share/bash-completion/completions/
cp -av contrib/bash/completion.sh $out/share/bash-completion/completions/vagrant
# install zsh completion
mkdir -p $out/share/zsh/site-functions/
cp -av contrib/zsh/_vagrant $out/share/zsh/site-functions/
''
+ lib.optionalString withLibvirt ''
substitute ${./vagrant-libvirt.json.in} $out/vagrant-plugins/plugins.d/vagrant-libvirt.json \
--subst-var-by ruby_version ${ruby.version} \
--subst-var-by vagrant_version ${version}
'';
installCheckPhase = ''
HOME="$(mktemp -d)" $out/bin/vagrant init --output - > /dev/null
'';
passthru = {
inherit ruby deps;
};
meta = with lib; {
description = "Tool for building complete development environments";
homepage = "https://www.vagrantup.com/";
license = licenses.bsl11;
maintainers = with maintainers; [ tylerjl ];
platforms = with platforms; linux ++ darwin;
};
}

View File

@@ -0,0 +1,13 @@
diff --git a/lib/vagrant/bundler.rb b/lib/vagrant/bundler.rb
index 336ac1e05..1bfd84c0d 100644
--- a/lib/vagrant/bundler.rb
+++ b/lib/vagrant/bundler.rb
@@ -470,7 +470,7 @@ module Vagrant
source_list = {}
system_plugins = plugins.map do |plugin_name, plugin_info|
plugin_name if plugin_info["system"]
- end.compact
+ end.compact << "bundler"
installer_set = VagrantSet.new(:both)
installer_set.system_plugins = system_plugins

View File

@@ -0,0 +1,9 @@
{
"vagrant-libvirt": {
"ruby_version":"@ruby_version@",
"vagrant_version":"@vagrant_version@",
"gem_version":"",
"require":"",
"sources":[]
}
}

View File

@@ -0,0 +1,60 @@
{
stdenv,
lib,
fetchFromGitHub,
nix-update-script,
meson,
ninja,
pkg-config,
scdoc,
gnome-builder,
glib,
libgee,
json-glib,
jsonrpc-glib,
vala,
}:
stdenv.mkDerivation rec {
pname = "vala-language-server";
version = "0.48.7";
src = fetchFromGitHub {
owner = "vala-lang";
repo = "vala-language-server";
rev = version;
sha256 = "sha256-Vl5DjKBdpk03aPD+0xGoTwD9Slg1rREorqZGX5o10cY=";
};
passthru = {
updateScript = nix-update-script { };
};
nativeBuildInputs = [
meson
ninja
pkg-config
scdoc
]
++ lib.optionals stdenv.hostPlatform.isLinux [
# GNOME Builder Plugin
gnome-builder
];
buildInputs = [
glib
libgee
json-glib
jsonrpc-glib
vala
];
meta = with lib; {
description = "Code Intelligence for Vala & Genie";
mainProgram = "vala-language-server";
homepage = "https://github.com/vala-lang/vala-language-server";
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ andreasfelix ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,62 @@
{
lib,
stdenv,
fetchFromGitHub,
glib,
json-glib,
meson,
ninja,
pantheon,
pkg-config,
vala,
gettext,
wrapGAppsHook3,
unstableGitUpdater,
}:
stdenv.mkDerivation {
pname = "vala-lint";
version = "0-unstable-2025-08-03";
src = fetchFromGitHub {
owner = "vala-lang";
repo = "vala-lint";
rev = "a1d1a7bc0f740920e592fd788a836c402fd9825c";
sha256 = "sha256-63T+wLdnGtVBxKkkkj7gJx0ebApam922Z+cmk2R7Ys0=";
};
nativeBuildInputs = [
gettext
meson
ninja
pkg-config
vala
wrapGAppsHook3
];
buildInputs = [
glib
json-glib
];
doCheck = true;
passthru = {
updateScript = unstableGitUpdater {
url = "https://github.com/vala-lang/vala-lint.git";
};
};
meta = with lib; {
homepage = "https://github.com/vala-lang/vala-lint";
description = "Check Vala code files for code-style errors";
longDescription = ''
Small command line tool and library for checking Vala code files for code-style errors.
Based on the elementary Code-Style guidelines.
'';
license = licenses.gpl2Plus;
platforms = platforms.linux;
teams = [ teams.pantheon ];
mainProgram = "io.elementary.vala-lint";
};
}

View File

@@ -0,0 +1,62 @@
{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
rustPlatform,
pkg-config,
openssl,
vale,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "vale-ls";
version = "0.4.0";
src = fetchFromGitHub {
owner = "errata-ai";
repo = "vale-ls";
tag = "v${finalAttrs.version}";
hash = "sha256-lRRKRQTxgXF4E+XghJ5AOp+mtWtiCT13EcsPVydn4Uo=";
};
nativeBuildInputs = [
rustPlatform.bindgenHook
pkg-config
makeWrapper
];
buildInputs = [
openssl
];
checkFlags = [
# The following tests are reaching to the network.
"--skip=vale::tests"
]
++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
# This test does not account for the existence of aarch64-linux machines,
# despite upstream shipping artifacts for that architecture
"--skip=utils::tests::arch"
];
env.OPENSSL_NO_VENDOR = true;
cargoHash = "sha256-KPgi0wZh1+PTKUmvCkLGPf+DZW5Tt4dQVK/cdxjm/1A=";
postInstall = ''
wrapProgram $out/bin/vale-ls \
--suffix PATH : ${lib.makeBinPath [ vale ]}
'';
meta = {
description = "LSP implementation for the Vale command-line tool";
homepage = "https://github.com/errata-ai/vale-ls";
license = lib.licenses.mit;
mainProgram = "vale-ls";
maintainers = with lib.maintainers; [
foo-dogsquared
jansol
];
};
})

View File

@@ -0,0 +1,69 @@
{
lib,
buildGoModule,
fetchFromGitHub,
makeBinaryWrapper,
symlinkJoin,
versionCheckHook,
vale,
valeStyles,
}:
buildGoModule rec {
pname = "vale";
version = "3.12.0";
subPackages = [ "cmd/vale" ];
src = fetchFromGitHub {
owner = "errata-ai";
repo = "vale";
tag = "v${version}";
hash = "sha256-j228Gt2cHkO1XZv+KqH6U8EjttQzDZiOMLppdJUJwvA=";
};
vendorHash = "sha256-3gmgKcpCEeFjHpm+iKQvm4Cv5UfzFrcDDNIAnlY/a5s=";
ldflags = [
"-s"
"-X main.version=${version}"
];
# Tests require network access
doCheck = false;
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
passthru.withStyles =
selector:
symlinkJoin {
name = "vale-with-styles-${vale.version}";
paths = [ vale ] ++ selector valeStyles;
nativeBuildInputs = [ makeBinaryWrapper ];
postBuild = ''
wrapProgram "$out/bin/vale" \
--set VALE_STYLES_PATH "$out/share/vale/styles/"
'';
meta = {
inherit (vale.meta) mainProgram;
};
};
meta = {
description = "Syntax-aware linter for prose built with speed and extensibility in mind";
longDescription = ''
Vale in Nixpkgs offers the helper `.withStyles` allow you to install it
predefined styles:
```nix
vale.withStyles (s: [ s.alex s.google ])
```
'';
homepage = "https://vale.sh/";
changelog = "https://github.com/errata-ai/vale/releases/tag/v${version}";
mainProgram = "vale";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pbsds ];
};
}

View File

@@ -0,0 +1,158 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
nix-update-script,
}:
let
buildStyle =
{
name,
stylePath ? name,
...
}@args:
stdenvNoCC.mkDerivation (
{
pname = "vale-style-${lib.toLower name}";
dontConfigure = true;
dontBuild = true;
doCheck = false;
dontFixup = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/vale/styles
cp -R ${stylePath} "$out/share/vale/styles/${name}"
runHook postInstall
'';
passthru.updateScript = nix-update-script { };
meta = {
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ katexochen ];
}
// (args.meta or { });
}
// removeAttrs args [
"meta"
"name"
]
);
in
{
alex = buildStyle rec {
name = "alex";
version = "0.2.3";
src = fetchFromGitHub {
owner = "errata-ai";
repo = "alex";
rev = "v${version}";
hash = "sha256-p0CQg6ZLusSKr57SugwlnoDEoPNVY3UIM8rHHxOL2l0=";
};
meta = {
description = "Vale-compatible implementation of the guidelines enforced by the alex linter";
homepage = "https://github.com/errata-ai/alex";
license = lib.licenses.mit;
};
};
google = buildStyle rec {
name = "Google";
version = "0.6.3";
src = fetchFromGitHub {
owner = "errata-ai";
repo = "Google";
rev = "v${version}";
hash = "sha256-1aN7wCdShhMsBN83u7l+5Ffm2WKC8ltZyT3hPZCNWYo=";
};
meta = {
description = "Vale-compatible implementation of the Google Developer Documentation Style Guide";
homepage = "https://github.com/errata-ai/Google";
license = lib.licenses.mit;
};
};
joblint = buildStyle rec {
name = "Joblint";
version = "0.4.1";
src = fetchFromGitHub {
owner = "errata-ai";
repo = "Joblint";
rev = "v${version}";
hash = "sha256-zRz5ThOg5RLTZj3dYPe0PDvOF5DjO31lduSpi2Us87U=";
};
meta = {
description = "Vale-compatible implementation of the Joblint linter";
homepage = "https://github.com/errata-ai/Joblint";
license = lib.licenses.mit;
};
};
microsoft = buildStyle rec {
name = "Microsoft";
version = "0.14.2";
src = fetchFromGitHub {
owner = "errata-ai";
repo = "Microsoft";
rev = "v${version}";
hash = "sha256-Sie4bBeKPOFOJhgd+mLbiz4vG+xpKL0LnwnRQHzOw+Q=";
};
meta = {
description = "Vale-compatible implementation of the Microsoft Writing Style Guide";
homepage = "https://github.com/errata-ai/Microsoft";
license = lib.licenses.mit;
};
};
proselint = buildStyle rec {
name = "proselint";
version = "0.3.4";
src = fetchFromGitHub {
owner = "errata-ai";
repo = "proselint";
rev = "v${version}";
hash = "sha256-ryKJDX1JrvDWVKLC5qQGctweDf74yuwEXxl/IqumM4s=";
};
meta = {
description = "Vale-compatible implementation of Python's proselint linter";
homepage = "https://github.com/errata-ai/proselint";
license = lib.licenses.bsd3;
};
};
readability = buildStyle rec {
name = "Readability";
version = "0.1.1";
src = fetchFromGitHub {
owner = "errata-ai";
repo = "readability";
rev = "v${version}";
hash = "sha256-5Y9v8QsZjC2w3/pGIcL5nBdhpogyJznO5IFa0s8VOOI=";
};
meta = {
description = "Vale-compatible implementations of many popular \"readability\" metrics";
homepage = "https://github.com/errata-ai/readability";
license = lib.licenses.mit;
};
};
write-good = buildStyle rec {
name = "write-good";
version = "0.4.1";
src = fetchFromGitHub {
owner = "errata-ai";
repo = "write-good";
rev = "v${version}";
hash = "sha256-W/eHlXklAVlAnY8nLPi/SIKsg8UUnH8UkH99BDo5yKk=";
};
meta = {
description = "Vale-compatible implementation of the write-good linter";
homepage = "https://github.com/errata-ai/write-good";
license = lib.licenses.mit;
};
};
}

View File

@@ -0,0 +1,100 @@
{
lib,
stdenv,
fetchFromGitHub,
desktop-file-utils,
meson,
ninja,
pkg-config,
wrapGAppsHook4,
vala,
evolution-data-server-gtk4,
gdk-pixbuf,
glib,
glib-networking,
gnutls,
gst_all_1,
json-glib,
libadwaita,
libpeas2,
libphonenumber,
libportal-gtk4,
pipewire,
pulseaudio,
tinysparql,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "valent";
version = "1.0.0.alpha.46-unstable-2024-10-26";
src = fetchFromGitHub {
owner = "andyholmes";
repo = "valent";
rev = "165a2791d4bf3e7dee69e3dd7885dbe4948265b9";
hash = "sha256-7klvOvwyAg+Xno6zWo8UByjaS9OkOuCceuZcAIEgdyU=";
fetchSubmodules = true;
};
nativeBuildInputs = [
desktop-file-utils
meson
ninja
pkg-config
wrapGAppsHook4
vala
];
buildInputs = [
evolution-data-server-gtk4
gdk-pixbuf
glib
glib-networking
gnutls
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
json-glib
libadwaita
libpeas2
libphonenumber
libportal-gtk4
pipewire
pulseaudio
tinysparql
];
mesonFlags = [
(lib.mesonBool "plugin_bluez" true)
];
meta = {
description = "Implementation of the KDE Connect protocol, built on GNOME platform libraries";
mainProgram = "valent";
longDescription = ''
Note that you have to open firewall ports for other devices
to connect to it. Use either:
```nix
programs.kdeconnect = {
enable = true;
package = pkgs.valent;
}
```
or open corresponding firewall ports directly:
```nix
networking.firewall = rec {
allowedTCPPortRanges = [ { from = 1714; to = 1764; } ];
allowedUDPPortRanges = allowedTCPPortRanges;
}
```
'';
homepage = "https://valent.andyholmes.ca";
changelog = "https://github.com/andyholmes/valent/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = with lib.licenses; [
gpl3Plus
cc0
cc-by-sa-30
];
maintainers = with lib.maintainers; [ aleksana ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,54 @@
{
lib,
stdenv,
fetchFromGitHub,
boost,
cgal,
cmake,
gpp,
mpfr,
qt6Packages,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "valeronoi";
version = "0.2.2";
src = fetchFromGitHub {
owner = "ccoors";
repo = "valeronoi";
tag = "v${finalAttrs.version}";
hash = "sha256-5KXVSIqWDkXnpO+qgBzFtbJb444RW8dIVXp8Y/aAOrk=";
};
buildInputs = [
boost
cgal
gpp
mpfr
]
++ (with qt6Packages; [
qtbase
qtimageformats
qtsvg
]);
nativeBuildInputs = [
cmake
qt6Packages.wrapQtAppsHook
];
doCheck = true;
meta = {
homepage = "https://github.com/ccoors/Valeronoi/";
description = "WiFi mapping companion app for Valetudo";
license = lib.licenses.gpl3Only;
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [
nova-madeline
maeve
];
mainProgram = "valeronoi";
};
})

View File

@@ -0,0 +1,123 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
autoreconfHook,
perl,
gdb,
writeScript,
}:
stdenv.mkDerivation rec {
pname = "valgrind";
version = "3.25.1";
src = fetchurl {
url = "https://sourceware.org/pub/${pname}/${pname}-${version}.tar.bz2";
hash = "sha256-Yd640HJ7RcJo79wbO2yeZ5zZfL9e5LKNHerXyLeica8=";
};
patches = [
# Fix checks on Musl.
# https://bugs.kde.org/show_bug.cgi?id=453929
(fetchpatch {
url = "https://bugsfiles.kde.org/attachment.cgi?id=148912";
sha256 = "Za+7K93pgnuEUQ+jDItEzWlN0izhbynX2crSOXBBY/I=";
})
# Fix build on armv7l.
# see also https://bugs.kde.org/show_bug.cgi?id=454346
(fetchpatch {
url = "https://git.yoctoproject.org/poky/plain/meta/recipes-devtools/valgrind/valgrind/use-appropriate-march-mcpu-mfpu-for-ARM-test-apps.patch?id=b7a9250590a16f1bdc8c7b563da428df814d4292";
sha256 = "sha256-sBZzn98Sf/ETFv8ubivgA6Y6fBNcyR8beB3ICDAyAH0=";
})
];
outputs = [
"out"
"dev"
"man"
"doc"
];
hardeningDisable = [
"pie"
"stackprotector"
];
# GDB is needed to provide a sane default for `--db-command'.
# Perl is needed for `callgrind_{annotate,control}'.
buildInputs = [
gdb
perl
];
# Perl is also a native build input.
nativeBuildInputs = [
autoreconfHook
perl
];
enableParallelBuilding = true;
separateDebugInfo = stdenv.hostPlatform.isLinux;
preConfigure = lib.optionalString stdenv.hostPlatform.isFreeBSD ''
substituteInPlace configure --replace-fail '`uname -r`' ${stdenv.cc.libc.version}-
'';
configureFlags = lib.optional stdenv.hostPlatform.isx86_64 "--enable-only64bit";
doCheck = true;
postInstall = ''
for i in $out/libexec/valgrind/*.supp; do
substituteInPlace $i \
--replace 'obj:/lib' 'obj:*/lib' \
--replace 'obj:/usr/X11R6/lib' 'obj:*/lib' \
--replace 'obj:/usr/lib' 'obj:*/lib'
done
'';
passthru = {
updateScript = writeScript "update-valgrind" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl pcre common-updater-scripts
set -eu -o pipefail
# Expect the text in format of:
# 'Current release: <a href="/downloads/current.html#current">valgrind-3.19.0</a>'
new_version="$(curl -s https://valgrind.org/ |
pcregrep -o1 'Current release: .*>valgrind-([0-9.]+)</a>')"
update-source-version ${pname} "$new_version"
'';
};
meta = {
homepage = "https://valgrind.org/";
description = "Debugging and profiling tool suite";
longDescription = ''
Valgrind is an award-winning instrumentation framework for
building dynamic analysis tools. There are Valgrind tools that
can automatically detect many memory management and threading
bugs, and profile your programs in detail. You can also use
Valgrind to build new tools.
'';
license = lib.licenses.gpl2Plus;
maintainers = [ lib.maintainers.eelco ];
platforms =
with lib.platforms;
lib.intersectLists (x86 ++ power ++ s390x ++ armv7 ++ aarch64 ++ mips ++ riscv64) (
darwin ++ freebsd ++ illumos ++ linux
);
badPlatforms = [ lib.systems.inspect.platformPatterns.isStatic ];
# See: <https://hydra.nixos.org/build/128521440/nixlog/2>
#
# Darwinspecific derivation logic has been removed, check the
# history if you want to fix this.
broken = stdenv.hostPlatform.isDarwin;
};
}

View File

@@ -0,0 +1,101 @@
{
fetchFromGitHub,
git,
jdk_headless,
jre_headless,
makeWrapper,
python3,
stdenvNoCC,
lib,
testers,
}:
let
pname = "validator-nu";
version = "23.4.11-unstable-2023-12-18";
src = fetchFromGitHub {
owner = "validator";
repo = "validator";
rev = "c3a401feb6555affdc891337f5a40af238f9ac2d";
fetchSubmodules = true;
hash = "sha256-pcA3HXduzFKzoOHhor12qvzbGSSvo3k3Bpy2MvvQlCI=";
};
deps = stdenvNoCC.mkDerivation {
pname = "${pname}-deps";
inherit version src;
nativeBuildInputs = [
git
jdk_headless
python3
python3.pkgs.certifi
];
buildPhase = ''
python checker.py dldeps
'';
installPhase = ''
mkdir "$out"
mv dependencies extras "$out"
'';
outputHashMode = "recursive";
outputHash = "sha256-LPtxpUd7LAYZHJL7elgcZOTaTgHqeqquiB9hiuajA6c=";
};
in
stdenvNoCC.mkDerivation (finalAttrs: {
inherit pname version src;
nativeBuildInputs = [
git
jdk_headless
makeWrapper
python3
];
postPatch = ''
substituteInPlace build/build.py --replace-warn \
'validatorVersion = "%s.%s.%s" % (year, month, day)' \
'validatorVersion = "${finalAttrs.version}"'
'';
buildPhase = ''
ln -s '${deps}/dependencies' '${deps}/extras' .
JAVA_HOME='${jdk_headless}' python checker.py build
'';
installPhase = ''
runHook preInstall
mkdir -p "$out/bin" "$out/share/java"
mv build/dist/vnu.jar "$out/share/java/"
makeWrapper "${jre_headless}/bin/java" "$out/bin/vnu" \
--add-flags "-jar '$out/share/java/vnu.jar'"
runHook postInstall
'';
passthru.tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
};
meta = {
description = "Helps you catch problems in your HTML/CSS/SVG";
homepage = "https://validator.github.io/validator/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
andersk
ivan
];
mainProgram = "vnu";
platforms = lib.platforms.all;
sourceProvenance = with lib.sourceTypes; [
binaryBytecode
fromSource
];
};
})

View File

@@ -0,0 +1,29 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
}:
stdenv.mkDerivation rec {
pname = "valijson";
version = "1.0.6";
src = fetchFromGitHub {
owner = "tristanpenman";
repo = "valijson";
rev = "v${version}";
hash = "sha256-3hQrCCDOrJx4XwTzJNTRPLghd+uoWKVDISa8rLaGiRM=";
};
nativeBuildInputs = [
cmake
];
meta = with lib; {
description = "Header-only C++ library for JSON Schema validation, with support for many popular parsers";
homepage = "https://github.com/tristanpenman/valijson";
license = licenses.bsd2;
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,126 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
lua,
jemalloc,
pkg-config,
nixosTests,
tcl,
which,
ps,
getconf,
withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd,
systemd,
# dependency ordering is broken at the moment when building with openssl
tlsSupport ? !stdenv.hostPlatform.isStatic,
openssl,
# Using system jemalloc fixes cross-compilation and various setups.
# However the experimental 'active defragmentation' feature of valkey requires
# their custom patched version of jemalloc.
useSystemJemalloc ? true,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "valkey";
version = "8.1.4";
src = fetchFromGitHub {
owner = "valkey-io";
repo = "valkey";
rev = finalAttrs.version;
hash = "sha256-obtmiDobMs/POqYH5XjqpzmjVrEC6gUsTc1rREDJ8tw=";
};
patches = lib.optional useSystemJemalloc ./use_system_jemalloc.patch;
nativeBuildInputs = [ pkg-config ];
buildInputs = [
lua
]
++ lib.optional useSystemJemalloc jemalloc
++ lib.optional withSystemd systemd
++ lib.optional tlsSupport openssl;
strictDeps = true;
preBuild = lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace src/Makefile --replace-fail "-flto" ""
'';
# More cross-compiling fixes.
makeFlags = [
"PREFIX=${placeholder "out"}"
]
++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
"AR=${stdenv.cc.targetPrefix}ar"
"RANLIB=${stdenv.cc.targetPrefix}ranlib"
]
++ lib.optionals withSystemd [ "USE_SYSTEMD=yes" ]
++ lib.optionals tlsSupport [ "BUILD_TLS=yes" ];
enableParallelBuilding = true;
hardeningEnable = lib.optionals (!stdenv.hostPlatform.isDarwin) [ "pie" ];
env.NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.cc.isClang [ "-std=c11" ]);
# darwin currently lacks a pure `pgrep` which is extensively used here
doCheck = !stdenv.hostPlatform.isDarwin;
nativeCheckInputs = [
which
tcl
ps
]
++ lib.optionals stdenv.hostPlatform.isStatic [ getconf ];
checkPhase = ''
runHook preCheck
# disable test "Connect multiple replicas at the same time": even
# upstream find this test too timing-sensitive
substituteInPlace tests/integration/replication.tcl \
--replace-fail 'foreach mdl {no yes} dualchannel {no yes}' 'foreach mdl {} dualchannel {}'
substituteInPlace tests/support/server.tcl \
--replace-fail 'exec /usr/bin/env' 'exec env'
sed -i '/^proc wait_load_handlers_disconnected/{n ; s/wait_for_condition 50 100/wait_for_condition 50 500/; }' \
tests/support/util.tcl
CLIENTS="$NIX_BUILD_CORES"
if (( $CLIENTS > 4)); then
CLIENTS=4
fi
# Skip some more flaky tests.
# Skip test requiring custom jemalloc (unit/memefficiency).
./runtest \
--no-latency \
--timeout 2000 \
--clients "$CLIENTS" \
--tags -leaks \
--skipunit unit/memefficiency \
--skipunit integration/failover \
--skipunit integration/aof-multi-part
runHook postCheck
'';
passthru = {
tests.redis = nixosTests.redis;
serverBin = "valkey-server";
};
meta = with lib; {
homepage = "https://valkey.io/";
description = "High-performance data structure server that primarily serves key/value workloads";
license = licenses.bsd3;
platforms = platforms.all;
maintainers = [ ];
changelog = "https://github.com/valkey-io/valkey/releases/tag/${finalAttrs.version}";
mainProgram = "valkey-cli";
};
})

View File

@@ -0,0 +1,15 @@
diff --git a/src/Makefile b/src/Makefile
index 3bc9f11c0..a4b23d986 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -229,8 +229,8 @@ endif
ifeq ($(MALLOC),jemalloc)
DEPENDENCY_TARGETS+= jemalloc
- FINAL_CFLAGS+= -DUSE_JEMALLOC -I../deps/jemalloc/include
- FINAL_LIBS := ../deps/jemalloc/lib/libjemalloc.a $(FINAL_LIBS)
+ FINAL_CFLAGS+= -DUSE_JEMALLOC -DJEMALLOC_NO_DEMANGLE -I/usr/include/jemalloc
+ FINAL_LIBS := -ljemalloc $(FINAL_LIBS)
endif
ifeq ($(BUILD_TLS),yes)

View File

@@ -0,0 +1,46 @@
{
lib,
buildGoModule,
fetchFromGitHub,
testers,
vals,
}:
buildGoModule rec {
pname = "vals";
version = "0.42.2";
src = fetchFromGitHub {
rev = "v${version}";
owner = "helmfile";
repo = "vals";
sha256 = "sha256-NdK7toICK9NJ6H8trCYJCEFE0weYH1Ban7dSlG1SM/c=";
};
vendorHash = "sha256-FjTxef9LHQopxiJYJFcAWcGJk5byVcEBlQFUssbfYwY=";
proxyVendor = true;
ldflags = [
"-s"
"-w"
"-X main.version=${version}"
];
# Tests require connectivity to various backends.
doCheck = false;
passthru.tests.version = testers.testVersion {
package = vals;
command = "vals version";
};
meta = {
description = "Helm-like configuration values loader with support for various sources";
mainProgram = "vals";
license = lib.licenses.asl20;
homepage = "https://github.com/helmfile/vals";
changelog = "https://github.com/helmfile/vals/releases/v${version}";
maintainers = with lib.maintainers; [ stehessel ];
};
}

View File

@@ -0,0 +1,73 @@
{
lib,
python3Packages,
fetchFromGitHub,
meson,
ninja,
pkg-config,
blueprint-compiler,
desktop-file-utils,
gtk4,
gst_all_1,
libsoup_3,
libadwaita,
wrapGAppsHook4,
nix-update-script,
}:
python3Packages.buildPythonApplication rec {
pname = "valuta";
version = "1.3.2";
pyproject = false;
src = fetchFromGitHub {
owner = "ideveCore";
repo = "Valuta";
rev = "v${version}";
hash = "sha256-g2x+pqs7dXdTMSxzSU5TeQtE+Q+tdQ93xaMtUVEE5/U=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
blueprint-compiler
desktop-file-utils
wrapGAppsHook4
];
buildInputs = [
gtk4
gst_all_1.gstreamer
libsoup_3
libadwaita
];
propagatedBuildInputs = with python3Packages; [
babel
dbus-python
pygobject3
];
dontWrapGApps = true;
# Arguments to be passed to `makeWrapper`, only used by buildPython*
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
description = "Simple application for converting currencies, with support for various APIs";
homepage = "https://github.com/ideveCore/Valuta";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ arthsmn ];
teams = [ teams.gnome-circle ];
mainProgram = "currencyconverter";
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,41 @@
# set VAMP_PATH ?
# plugins available on sourceforge and http://www.vamp-plugins.org/download.html (various licenses)
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
libsndfile,
}:
stdenv.mkDerivation rec {
pname = "vamp-plugin-sdk";
version = "2.10";
src = fetchFromGitHub {
owner = "vamp-plugins";
repo = "vamp-plugin-sdk";
rev = "vamp-plugin-sdk-v${version}";
hash = "sha256-5jNA6WmeIOVjkEMZXB5ijxyfJT88alVndBif6dnUFdI=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libsndfile ];
# build is susceptible to race conditions: https://github.com/vamp-plugins/vamp-plugin-sdk/issues/12
enableParallelBuilding = false;
makeFlags = [
"AR:=$(AR)"
"RANLIB:=$(RANLIB)"
]
++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "-o test";
meta = with lib; {
description = "Audio processing plugin system for plugins that extract descriptive information from audio data";
homepage = "https://vamp-plugins.org/";
license = licenses.bsd3;
maintainers = [ maintainers.marcweber ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,57 @@
diff --git a/core/Main.cc b/core/Main.cc
index 2b0d97b..9ba985d 100644
--- a/core/Main.cc
+++ b/core/Main.cc
@@ -77,9 +77,13 @@ int main(int argc, char** argv)
setUsageHelp("USAGE: %s [options] <input-file> <result-output-file>\n\n where input may be either in plain or gzipped DIMACS.\n");
// printf("This is MiniSat 2.0 beta\n");
-#if defined(__linux__)
- fpu_control_t oldcw, newcw;
- _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
+#if defined(__linux__) && defined(__x86_64__)
+ fenv_t fenv;
+
+ fegetenv(&fenv);
+ fenv.__control_word &= ~0x300; /* _FPU_EXTENDED */
+ fenv.__control_word |= 0x200; /* _FPU_DOUBLE */
+ fesetenv(&fenv);
printf("WARNING: for repeatability, setting FPU to use double precision\n");
#endif
// Extra options:
diff --git a/simp/Main.cc b/simp/Main.cc
index 2804d7f..7fbdb33 100644
--- a/simp/Main.cc
+++ b/simp/Main.cc
@@ -78,9 +78,13 @@ int main(int argc, char** argv)
setUsageHelp("USAGE: %s [options] <input-file> <result-output-file>\n\n where input may be either in plain or gzipped DIMACS.\n");
// printf("This is MiniSat 2.0 beta\n");
-#if defined(__linux__)
- fpu_control_t oldcw, newcw;
- _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
+#if defined(__linux__) && defined(__x86_64__)
+ fenv_t fenv;
+
+ fegetenv(&fenv);
+ fenv.__control_word &= ~0x300; /* _FPU_EXTENDED */
+ fenv.__control_word |= 0x200; /* _FPU_DOUBLE */
+ fesetenv(&fenv);
printf("WARNING: for repeatability, setting FPU to use double precision\n");
#endif
// Extra options:
diff --git a/utils/System.h b/utils/System.h
index 1758192..840bee5 100644
--- a/utils/System.h
+++ b/utils/System.h
@@ -21,8 +21,8 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA
#ifndef Minisat_System_h
#define Minisat_System_h
-#if defined(__linux__)
-#include <fpu_control.h>
+#if defined(__linux__) && defined(__x86_64__)
+#include <fenv.h>
#endif
#include "mtl/IntTypes.h"

View File

@@ -0,0 +1,61 @@
{
lib,
stdenv,
fetchFromGitHub,
z3,
zlib,
}:
stdenv.mkDerivation rec {
pname = "vampire";
version = "4.9";
src = fetchFromGitHub {
owner = "vprover";
repo = "vampire";
tag = "v${version}casc2024";
hash = "sha256-NHAlPIy33u+TRmTuFoLRlPCvi3g62ilTfJ0wleboMNU=";
};
buildInputs = [
z3
zlib
];
makeFlags = [
"vampire_z3_rel"
"CC:=$(CC)"
"CXX:=$(CXX)"
];
postPatch = ''
patch -p1 -i ${./minisat-fenv.patch} -d Minisat || true
'';
enableParallelBuilding = true;
fixupPhase = ''
runHook preFixup
rm -rf z3
runHook postFixup
'';
installPhase = ''
runHook preInstall
install -m0755 -D vampire_z3_rel* $out/bin/vampire
runHook postInstall
'';
meta = {
homepage = "https://vprover.github.io/";
description = "Vampire Theorem Prover";
mainProgram = "vampire";
platforms = lib.platforms.unix;
license = lib.licenses.bsd3;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
fetchFromGitHub,
stdenv,
cmake,
SDL2,
}:
stdenv.mkDerivation {
pname = "clunk";
version = "1.0-unstable-2020-06-25";
src = fetchFromGitHub {
owner = "stalkerg";
repo = "clunk";
rev = "6d4cbbe1b6f1e202b9945d20073952b254e8d530";
hash = "sha256-cz6v7rQYIoLf53Od7THmDPmBfhn8DBP7+uOIZRF0gc8=";
};
buildInputs = [ SDL2 ];
nativeBuildInputs = [ cmake ];
meta = {
description = "Clunk - real-time binaural sound generation library. Versions for Vangers game. Porting to SDL2 and fix some errors";
homepage = "https://github.com/stalkerg/clunk";
platforms = lib.platforms.all;
license = with lib.licenses; [ lgpl21Plus ];
maintainers = with lib.maintainers; [ _3JlOy-PYCCKUi ];
};
}

View File

@@ -0,0 +1,55 @@
{
lib,
fetchFromGitHub,
callPackage,
stdenv,
cmake,
SDL2,
SDL2_net,
libogg,
libvorbis,
ffmpeg,
zlib,
}:
let
clunk = callPackage ./clunk.nix { };
in
stdenv.mkDerivation {
pname = "vangers";
version = "2.0-unstable-2024-09-30";
src = fetchFromGitHub {
owner = "KranX";
repo = "Vangers";
rev = "72145feed605856c6711bbbcb4f9db99db3434fd";
hash = "sha256-IhCQh60wBzaRsj72Y8NUHrv9lvss0fmgHjzrO/subOI=";
};
buildInputs = [
SDL2
SDL2_net
libogg
libvorbis
ffmpeg
clunk
zlib
];
nativeBuildInputs = [ cmake ];
installPhase = ''
mkdir -p $out/bin
install -T -m755 server/vangers_server $out/bin/vangers_server
install -T -m755 src/vangers $out/bin/vangers
install -T -m755 surmap/surmap $out/bin/surmap
'';
meta = {
description = "Video game that combines elements of the racing and role-playing genres";
homepage = "https://github.com/KranX/Vangers";
mainProgram = "vangers";
platforms = lib.platforms.all;
license = with lib.licenses; [ gpl3Only ];
maintainers = with lib.maintainers; [ _3JlOy-PYCCKUi ];
};
}

View File

@@ -0,0 +1,43 @@
{
python312Packages,
fetchFromGitHub,
lib,
}:
python312Packages.buildPythonApplication {
pname = "vanguards";
version = "0.3.1";
pyproject = true;
build-system = [ python312Packages.setuptools ];
dependencies = [ python312Packages.stem ];
#tries to access the network during the tests, which fails
doCheck = false;
src = fetchFromGitHub {
owner = "mikeperry-tor";
repo = "vanguards";
rev = "8132fa0e556fbcbb3538ff9b48a2180c0c5e8fbd";
sha256 = "sha256-XauSTgoH6zXv2DXyX2lQc6gy6Ysm41fKnyuWZ3hj7kI=";
};
patches = [ ./python-3.12.patch ];
postPatch = ''
# fix import cycle issue
substituteInPlace src/vanguards/main.py --replace-fail \
'import stem.response.events' 'import stem.socket; import stem.control; import stem.response.events'
'';
pythonImportsCheck = [ "vanguards" ];
meta = {
maintainers = with lib.maintainers; [ ForgottenBeast ];
mainProgram = "vanguards";
license = lib.licenses.mit;
homepage = "https://github.com/mikeperry-tor/vanguards";
description = "Protects TOR hidden services against guard node attacks";
longDescription = ''
Runs alongside tor and interacts with its control port
in order to protect and alert against guard node attacks on hidden services
'';
};
}

View File

@@ -0,0 +1,51 @@
Origin: https://github.com/mikeperry-tor/vanguards/pull/105/commits/183d24775521feb3ed61b681088347279c3fc84c
From: Dave Jones <dave@waveform.org.uk>
Date: Wed, 28 Aug 2024 12:54:24 +0100
Subject: [PATCH] Python 3.12 compatibility
Python 3.12 removes the deprecated `SafeConfigParser` class. This patch
switches the code to using ConfigParser and read_file from Python 3.x,
and patches 2.7's SafeConfigParser to a compatible definition.
---
src/vanguards/config.py | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/vanguards/config.py b/src/vanguards/config.py
index 1c33391..b8e3f9c 100644
--- a/src/vanguards/config.py
+++ b/src/vanguards/config.py
@@ -16,9 +16,12 @@
from .logger import plog
try:
- from configparser import SafeConfigParser, Error
+ from configparser import ConfigParser, Error
except ImportError:
from ConfigParser import SafeConfigParser, Error
+ class ConfigParser(SafeConfigParser):
+ def read_file(self, f, source=None):
+ return self.readfp(f, source)
################# Global options ##################
@@ -209,7 +212,7 @@ def set_options_from_module(config, module, section):
config.set(section, param, str(val))
def generate_config():
- config = SafeConfigParser(allow_no_value=True)
+ config = ConfigParser(allow_no_value=True)
set_options_from_module(config, sys.modules[__name__], "Global")
set_options_from_module(config, vanguards, "Vanguards")
set_options_from_module(config, bandguards, "Bandguards")
@@ -219,9 +222,9 @@ def generate_config():
return config
def apply_config(config_file):
- config = SafeConfigParser(allow_no_value=True)
+ config = ConfigParser(allow_no_value=True)
- config.readfp(open(config_file, "r"))
+ config.read_file(open(config_file, "r"))
get_options_for_module(config, sys.modules[__name__], "Global")
get_options_for_module(config, vanguards, "Vanguards")

View File

@@ -0,0 +1,62 @@
{
stdenvNoCC,
lib,
fetchzip,
xorg,
hicolor-icon-theme,
}:
stdenvNoCC.mkDerivation rec {
pname = "vanilla-dmz";
version = "0.4.5";
src = fetchzip {
url = "mirror://debian/pool/main/d/dmz-cursor-theme/dmz-cursor-theme_${version}.tar.xz";
sha256 = "14r8fri4byyzavzdifpga6118hxqjwpzd11xxj28s16zxcanq16m";
};
buildInputs = [
xorg.xcursorgen
];
propagatedBuildInputs = [
hicolor-icon-theme
];
dontDropIconThemeCache = true;
buildPhase = ''
runHook preBuild
for theme in DMZ-{White,Black}; do
pushd $theme/pngs
./make.sh
popd
done
runHook postBuild
'';
installPhase = ''
runHook preInstall
for theme in DMZ-{White,Black}; do
mkdir -p $out/share/icons/$theme/cursors
cp -a $theme/xcursors/* $out/share/icons/$theme/cursors/
install -m644 $theme/index.theme $out/share/icons/$theme/index.theme
done
ln -s $out/share/icons/{DMZ-White,Vanilla-DMZ}
ln -s $out/share/icons/{DMZ-Black,Vanilla-DMZ-AA}
runHook postInstall
'';
meta = with lib; {
homepage = "http://jimmac.musichall.cz";
description = "Style neutral scalable cursor theme";
platforms = platforms.all;
license = licenses.cc-by-sa-30;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,181 @@
{
lib,
stdenv,
stdenvNoCC,
fetchFromGitHub,
# buildInputs
SDL2,
libcxx,
openal,
# nativeBuildInputs
cmake,
git,
pkg-config,
imagemagick,
libicns,
copyDesktopItems,
makeDesktopItem,
# passthru
callPackage,
symlinkJoin,
rsync,
appName,
CMAKE_BUILD_TYPE ? "RelWithDebInfo", # "Choose the type of build, recommended options are: Debug Release RelWithDebInfo"
}:
assert lib.assertOneOf "appName" appName [
"vanillatd"
"vanillara"
];
stdenv.mkDerivation (finalAttrs: {
pname = appName;
version = "0.0.0";
src = fetchFromGitHub {
owner = "TheAssemblyArmada";
repo = "Vanilla-Conquer";
# FIXME: This version has format-security
rev = "ebc8083d5d149f98abc20f460a512a2d16fdc59f";
hash = "sha256-iUF9UFc0FMvOwLkGqSyLYGy5E8YqNySqDp5VVUa+u4o=";
};
# TODO: Remove this. Just add this flag to ignore the format-security error temporarily.
NIX_CFLAGS_COMPILE = "-Wno-error=format-security";
buildInputs = [
SDL2
libcxx
openal
];
nativeBuildInputs = [
cmake
git
pkg-config
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
imagemagick
libicns
]
++ lib.optionals stdenv.hostPlatform.isLinux [
copyDesktopItems
];
cmakeFlags = [
(lib.cmakeBool "BUILD_VANILLATD" (appName == "vanillatd"))
(lib.cmakeBool "BUILD_VANILLARA" (appName == "vanillara"))
(lib.cmakeBool "BUILD_REMASTERTD" (appName == "remastertd"))
(lib.cmakeBool "BUILD_REMASTERRA" (appName == "remasterra"))
(lib.cmakeFeature "CMAKE_BUILD_TYPE" CMAKE_BUILD_TYPE)
];
# TODO: Fix this from the upstream
# remove the old FindSDL2.cmake logic, use cmake's built-in SDL2 support
# replace ${SDL2_LIBRARY} to SDL2::SDL2 in CMakeLists.txt
preConfigure = ''
rm cmake/FindSDL2.cmake
sed -i 's/..SDL2_LIBRARY./SDL2::SDL2/g' CMakeLists.txt
'';
installPhase =
if stdenv.hostPlatform.isDarwin then
''
runHook preInstall
mkdir -p $out/Applications
mv ${appName}.app $out/Applications
runHook postInstall
''
else
''
runHook preInstall
mkdir -p $out/bin
mv ${appName} $out/bin/${appName}
install -Dm644 ../resources/${appName}_icon.svg $out/share/icons/hicolor/scalable/apps/${appName}.svg
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = appName;
desktopName = appName;
comment =
{
"vanillatd" = "Command & Conquer: Tiberian Dawn";
"vanillara" = "Command & Conquer: Red Alert";
}
."${appName}";
exec = appName;
terminal = false;
icon = appName;
startupWMClass = appName;
categories = [ "Game" ];
})
];
passthru =
let
packages = callPackage ./passthru-packages.nix { inherit appName; };
in
{
inherit packages;
withPackages =
cb:
let
dataDerivation = symlinkJoin {
name = "${appName}-data";
paths = if builtins.isFunction cb then cb packages else cb;
};
in
stdenvNoCC.mkDerivation {
pname = "${appName}-with-packages";
inherit (finalAttrs.finalPackage) version meta;
buildInputs = [ dataDerivation ] ++ finalAttrs.buildInputs;
nativeBuildInputs = [ rsync ];
buildCommand =
let
Default_Data_Path =
if stdenv.hostPlatform.isDarwin then
"$out/Applications/${appName}.app/Contents/share/${appName}"
else
"$out/share/${appName}";
in
''
# The default Data_Path() is rely on the Program_Path(), which is the real path of executable, so we need to make executable non symlink here.
rsync --archive --mkpath --chmod=a+w ${finalAttrs.finalPackage}/ $out/
# Symlink the data derivation to the default data path
mkdir -p ${dirOf Default_Data_Path}
ln -s ${dataDerivation} ${Default_Data_Path}
# Fix `error: suspicious ownership or permission on '/nix/store/xxx-0.0.0' for output 'out'; rejecting this build output`
chmod 755 $out
'';
};
};
meta = {
description =
{
"vanillatd" =
"Vanilla Conquer is a modern, multi-platform source port of Command & Conquer: Tiberian Dawn";
"vanillara" =
"Vanilla Conquer is a modern, multi-platform source port of Command & Conquer: Red Alert";
}
."${appName}";
homepage = "https://github.com/TheAssemblyArmada/Vanilla-Conquer";
license = with lib.licenses; [ gpl3Only ];
sourceProvenance = with lib.sourceTypes; [ fromSource ];
maintainers = with lib.maintainers; [ xiaoxiangmoe ];
platforms = with lib.platforms; darwin ++ linux;
};
})

View File

@@ -0,0 +1,102 @@
{
lib,
stdenvNoCC,
unar,
appName,
fetchurl,
...
}:
builtins.mapAttrs
(
name: buildCommand:
stdenvNoCC.mkDerivation {
inherit name buildCommand;
nativeBuildInputs = [ unar ];
meta = {
sourceProvenance = with lib.sourceTypes; [
binaryBytecode
];
license = with lib.licenses; [
unfree
];
};
}
)
(
if appName == "vanillatd" then
let
CCDEMO1_ZIP = fetchurl {
url = "https://archive.org/download/CommandConquerDemo/cc1demo1.zip";
hash = "sha256-KdM4SctFCocmJCbMWbJbql4DO5TC40leyU+BPzvAn4c=";
};
CCDEMO2_ZIP = fetchurl {
url = "https://archive.org/download/CommandConquerDemo/cc1demo2.zip";
hash = "sha256-pCgEuE5AFcJur3qUOTmP3GCb/Wp7p7JyVn8Yeq17PEg=";
};
demo = ''
unar -no-directory ${CCDEMO1_ZIP} DEMO.MIX DEMOL.MIX SOUNDS.MIX SPEECH.MIX
unar -no-directory ${CCDEMO2_ZIP} DEMOM.MIX
mkdir -p $out
mv DEMO.MIX $out/demo.mix
mv DEMOL.MIX $out/demol.mix
mv SOUNDS.MIX $out/sounds.mix
mv SPEECH.MIX $out/speech.mix
mv DEMOM.MIX $out/demom.mix
'';
in
# see https://github.com/TheAssemblyArmada/Vanilla-Conquer/wiki/Installing-VanillaTD
{
inherit demo;
}
else if appName == "vanillara" then
let
RA95DEMO_ZIP = fetchurl {
url = "https://archive.org/download/CommandConquerRedAlert_1020/ra95demo.zip";
hash = "sha256-jEi9tTUj6k01OnkU2SNM5OPm9YMu60eztrAFhT6HSNI=";
};
demo = ''
unar -no-directory ${RA95DEMO_ZIP} ra95demo/INSTALL/MAIN.MIX ra95demo/INSTALL/REDALERT.MIX
install -D ra95demo/INSTALL/REDALERT.MIX $out/redalert.mix
install -D ra95demo/INSTALL/MAIN.MIX $out/main.mix
'';
REDALERT_ALLIED_ISO = fetchurl {
url = "https://archive.org/download/cnc-red-alert/redalert_allied.iso";
hash = "sha256-Npx6hSTJetFlcb/Fi3UQEGuP0iLk9LIrRmAI7WgEtdw=";
};
REDALERT_SOVIETS_ISO = fetchurl {
url = "https://archive.org/download/cnc-red-alert/redalert_soviets.iso";
hash = "sha256-aJGr+w1BaGaLwX/pU0lMmu6Cgn9pZ2D/aVafBdtds2Q=";
};
retail-allied = ''
unar -output-directory allied -no-directory ${REDALERT_ALLIED_ISO} MAIN.MIX INSTALL/REDALERT.MIX
mkdir -p $out/allied/
mv allied/INSTALL/REDALERT.MIX $out/redalert.mix
mv allied/MAIN.MIX $out/allied/main.mix
'';
retail-soviet = ''
unar -output-directory soviet -no-directory ${REDALERT_SOVIETS_ISO} MAIN.MIX INSTALL/REDALERT.MIX
mkdir -p $out/soviet/
mv soviet/INSTALL/REDALERT.MIX $out/redalert.mix
mv soviet/MAIN.MIX $out/soviet/main.mix
'';
retail = ''
unar -output-directory allied -no-directory ${REDALERT_ALLIED_ISO} MAIN.MIX INSTALL/REDALERT.MIX
unar -output-directory soviet -no-directory ${REDALERT_SOVIETS_ISO} MAIN.MIX
mkdir -p $out/allied/ $out/soviet/
mv allied/INSTALL/REDALERT.MIX $out/redalert.mix
mv allied/MAIN.MIX $out/allied/main.mix
mv soviet/MAIN.MIX $out/soviet/main.mix
'';
in
# see https://github.com/TheAssemblyArmada/Vanilla-Conquer/wiki/Installing-VanillaRA
{
inherit
demo
retail-allied
retail-soviet
retail
;
}
else
{ }
)

View File

@@ -0,0 +1,77 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
juce,
pkg-config,
alsa-lib,
fftwFloat,
fontconfig,
freetype,
libGL,
libX11,
libXcursor,
libXext,
libXinerama,
libXrandr,
libjack2,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vaporizer2";
version = "3.5.0-unstable-2024-09-14";
src = fetchFromGitHub {
owner = "VASTDynamics";
repo = "Vaporizer2";
rev = "1c56c4be304255f1c397dad725ea784f15a55ef5";
hash = "sha256-/J0HqiXc84JEIsEyb1MlzAqpmJZEe8jP07fEcJSEZz8=";
fetchSubmodules = true;
};
strictDeps = true;
nativeBuildInputs = [
cmake
juce
pkg-config
];
buildInputs = [
alsa-lib
fftwFloat
fontconfig
freetype
libGL
libX11
libXcursor
libXext
libXinerama
libXrandr
libjack2
];
cmakeFlags = [
(lib.cmakeFeature "USE_SYSTEM_JUCE" "ON")
];
# LTO needs special setup on Linux
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace-fail 'juce::juce_recommended_lto_flags' '# Not forcing LTO'
'';
meta = {
description = "Wavetable synthesizer";
longDescription = ''
Hybrid wavetable additive / subtractive VST / AU / AAX synthesizer / sampler workstation plugin
'';
homepage = "https://www.vast-dynamics.com/?q=Vaporizer2";
downloadPage = "https://github.com/VASTDynamics/Vaporizer2";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ eljamm ];
mainProgram = "VASTvaporizer2";
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,64 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
vapoursynth,
ffmpeg,
xxHash,
gitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vapoursynth-bestsource";
version = "13";
outputs = [
"out"
"dev"
];
src = fetchFromGitHub {
fetchSubmodules = true;
owner = "vapoursynth";
repo = "bestsource";
tag = "R${finalAttrs.version}";
hash = "sha256-c+FMFWICDS8Plj6GE2vvhWPmf56Vk10j41HUK1q20/U=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
];
buildInputs = [
vapoursynth
(ffmpeg.override { withLcms2 = true; })
xxHash
];
postPatch = ''
substituteInPlace meson.build \
--replace-fail "vapoursynth_dep.get_variable(pkgconfig: 'libdir')" "get_option('libdir')"
'';
passthru.updateScript = gitUpdater {
rev-prefix = "R";
ignoredVersions = "*-RC*";
};
meta = {
description = "Wrapper library around FFmpeg that ensures sample and frame accurate access to audio and video";
homepage = "https://github.com/vapoursynth/bestsource";
license = with lib.licenses; [
mit
wtfpl
gpl2Plus
];
maintainers = with lib.maintainers; [ snaki ];
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,55 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
boost,
vapoursynth,
opencl-headers,
ocl-icd,
openclSupport ? true,
}:
stdenv.mkDerivation {
pname = "vapoursynth-eedi3";
version = "unstable-2019-09-30";
src = fetchFromGitHub {
owner = "HomeOfVapourSynthEvolution";
repo = "VapourSynth-EEDI3";
rev = "d11bdb37c7a7118cd095b53d9f8fbbac02a06ac0";
hash = "sha256-MIUf6sOnJ2uqGw3ixEHy1ijzlLFkQauwtm1vfgmYmcg=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
];
buildInputs = [
boost
vapoursynth
]
++ lib.optionals openclSupport [
ocl-icd
opencl-headers
];
postPatch = ''
substituteInPlace meson.build \
--replace-fail "vapoursynth_dep.get_pkgconfig_variable('libdir')" "get_option('libdir')"
'';
mesonFlags = [ (lib.mesonBool "opencl" openclSupport) ];
meta = {
description = "Filter for VapourSynth";
homepage = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-EEDI3";
license = with lib.licenses; [ gpl2Plus ];
maintainers = with lib.maintainers; [ snaki ];
platforms = lib.platforms.x86_64;
};
}

View File

@@ -0,0 +1,41 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
autoreconfHook,
vapoursynth,
nasm,
fftwFloat,
}:
stdenv.mkDerivation rec {
pname = "vapoursynth-mvtools";
version = "24";
src = fetchFromGitHub {
owner = "dubhater";
repo = "vapoursynth-mvtools";
rev = "v${version}";
hash = "sha256-bEifU1PPNOBr6o9D6DGIzTaG4xjygBxkQYnZxd/4SwQ=";
};
nativeBuildInputs = [
pkg-config
autoreconfHook
];
buildInputs = [
nasm
vapoursynth
fftwFloat
];
configureFlags = [ "--libdir=$(out)/lib/vapoursynth" ];
meta = with lib; {
description = "Set of filters for motion estimation and compensation";
homepage = "https://github.com/dubhater/vapoursynth-mvtools";
license = licenses.gpl2;
maintainers = with maintainers; [ rnhmjoj ];
};
}

View File

@@ -0,0 +1,54 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
autoreconfHook,
pkg-config,
vapoursynth,
yasm,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vapoursynth-nnedi3";
version = "12";
src = fetchFromGitHub {
owner = "dubhater";
repo = "vapoursynth-nnedi3";
tag = "v${finalAttrs.version}";
hash = "sha256-jd/PCXhbCZGMsoXjekbeqMSRVBJAy4INdpkTbZFjVO0=";
};
patches = [
(fetchpatch {
name = "build-fixes-for-aarch64-apple-silicon.patch";
url = "https://github.com/dubhater/vapoursynth-nnedi3/commit/15c15080ed4406929aa0d2d6a3f83ca3e26bc979.patch";
hash = "sha256-8gNj4LixfrGq0MaIYdZuwSK/2iyh1E9s/uuSBJHZwx8=";
})
];
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
vapoursynth
yasm
];
configureFlags = [ "--libdir=$(out)/lib/vapoursynth" ];
postInstall = ''
rm -f $out/lib/vapoursynth/*.la
'';
meta = {
description = "Filter for VapourSynth";
homepage = "https://github.com/dubhater/vapoursynth-nnedi3";
license = with lib.licenses; [ gpl2Plus ];
maintainers = with lib.maintainers; [ snaki ];
platforms = with lib.platforms; x86_64 ++ aarch64;
};
})

View File

@@ -0,0 +1,50 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
boost,
vapoursynth,
opencl-headers,
ocl-icd,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vapoursynth-nnedi3cl";
version = "8";
src = fetchFromGitHub {
owner = "HomeOfVapourSynthEvolution";
repo = "VapourSynth-NNEDI3CL";
tag = "r${finalAttrs.version}";
hash = "sha256-zW/qEtZTDJOTarXbXhv+nks25eePutLDpLck4TuMKUk=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
];
buildInputs = [
boost
vapoursynth
ocl-icd
opencl-headers
];
postPatch = ''
substituteInPlace meson.build \
--replace-fail "vapoursynth_dep.get_pkgconfig_variable('libdir')" "get_option('libdir')"
'';
meta = {
description = "Filter for VapourSynth";
homepage = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-NNEDI3CL";
license = with lib.licenses; [ gpl2Plus ];
maintainers = with lib.maintainers; [ snaki ];
platforms = lib.platforms.x86_64;
};
})

View File

@@ -0,0 +1,55 @@
{
lib,
stdenv,
fetchFromGitHub,
vapoursynth,
}:
stdenv.mkDerivation {
pname = "vapoursynth-znedi3";
version = "unstable-2023-07-09";
src = fetchFromGitHub {
fetchSubmodules = true;
owner = "sekrit-twc";
repo = "znedi3";
rev = "68dc130bc37615fd912d1dc1068261f00f54b146";
hash = "sha256-QC+hMMfp6XwW4PqsN6sip1Y7ttiYn/xuxq/pUg/trog=";
};
buildInputs = [ vapoursynth ];
postPatch = ''
rm -rf vsxx/vapoursynth
ln -s ${vapoursynth}/include/vapoursynth vsxx/vapoursynth
'';
makeFlags = [
"CPPFLAGS=-DNNEDI3_WEIGHTS_PATH='\"$(out)/share/nnedi3/nnedi3_weights.bin\"'"
]
++ lib.optionals stdenv.hostPlatform.isx86 [
"X86=1"
"X86_AVX512=1"
];
installPhase = ''
runHook preInstall
install -D -t $out/lib/vapoursynth vsznedi3.so
install -D -m644 -t $out/share/nnedi3 nnedi3_weights.bin
runHook postInstall
'';
meta = {
inherit (vapoursynth.meta) platforms;
description = "Filter for VapourSynth";
homepage = "https://github.com/sekrit-twc/znedi3";
license = with lib.licenses; [
gpl2Plus
wtfpl
lgpl21
];
maintainers = with lib.maintainers; [ snaki ];
};
}

View File

@@ -0,0 +1,96 @@
{
lib,
stdenv,
mkDerivation,
fetchFromGitHub,
makeWrapper,
runCommand,
python3,
vapoursynth,
qmake,
qtbase,
qtwebsockets,
}:
let
unwrapped = mkDerivation rec {
pname = "vapoursynth-editor";
version = "R19-mod-4";
src = fetchFromGitHub {
owner = "YomikoR";
repo = "vapoursynth-editor";
rev = lib.toLower version;
hash = "sha256-+/9j9DJDGXbuTvE8ZXIu6wjcof39SyatS36Q6y9hLPg=";
};
postPatch = ''
substituteInPlace pro/vsedit/vsedit.pro \
--replace-fail "TARGET = vsedit-32bit" "TARGET = vsedit"
'';
nativeBuildInputs = [ qmake ];
buildInputs = [
qtbase
vapoursynth
qtwebsockets
];
dontWrapQtApps = true;
preConfigure = "cd pro";
preFixup = ''
cd ../build/release*
mkdir -p $out/bin
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/Applications
for bin in vsedit{,-job-server{,-watcher}}; do
mv $bin.app $out/Applications
makeQtWrapper $out/Applications/$bin.app/Contents/MacOS/$bin $out/bin/$bin
wrapQtApp $out/Applications/$bin.app/Contents/MacOS/$bin
done
''
+ lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
for bin in vsedit{,-job-server{,-watcher}}; do
mv $bin $out/bin
wrapQtApp $out/bin/$bin
done
'';
passthru = {
inherit withPlugins;
};
meta = with lib; {
description = "Cross-platform editor for VapourSynth scripts";
homepage = "https://github.com/YomikoR/VapourSynth-Editor";
license = licenses.mit;
maintainers = [ ];
platforms = platforms.all;
};
};
withPlugins =
plugins:
let
vapoursynthWithPlugins = vapoursynth.withPlugins plugins;
in
runCommand "${unwrapped.name}-with-plugins"
{
nativeBuildInputs = [ makeWrapper ];
passthru = {
withPlugins = plugins': withPlugins (plugins ++ plugins');
};
}
''
mkdir -p $out/bin
for bin in vsedit{,-job-server{,-watcher}}; do
makeWrapper ${unwrapped}/bin/$bin $out/bin/$bin \
--prefix PYTHONPATH : ${vapoursynthWithPlugins}/${python3.sitePackages} \
--prefix LD_LIBRARY_PATH : ${vapoursynthWithPlugins}/lib
done
'';
in
withPlugins [ ]

View File

@@ -0,0 +1,117 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
autoreconfHook,
makeWrapper,
runCommandCC,
runCommand,
vapoursynth,
buildEnv,
zimg,
libass,
python3,
testers,
}:
stdenv.mkDerivation rec {
pname = "vapoursynth";
version = "72";
src = fetchFromGitHub {
owner = "vapoursynth";
repo = "vapoursynth";
rev = "R${version}";
hash = "sha256-LRRz4471Rl/HwJ14zAkU/f2Acuofja8c0pGkuWihhsM=";
};
nativeBuildInputs = [
pkg-config
autoreconfHook
makeWrapper
];
buildInputs = [
zimg
libass
(python3.withPackages (
ps: with ps; [
sphinx
cython
]
))
];
enableParallelBuilding = true;
doInstallCheck = !stdenv.hostPlatform.isDarwin;
passthru = rec {
# If vapoursynth is added to the build inputs of mpv and then
# used in the wrapping of it, we want to know once inside the
# wrapper, what python3 version was used to build vapoursynth so
# the right python3.sitePackages will be used there.
inherit python3;
withPlugins = import ./plugin-interface.nix {
inherit
lib
python3
buildEnv
runCommandCC
stdenv
runCommand
vapoursynth
makeWrapper
withPlugins
;
};
tests.version = testers.testVersion {
package = vapoursynth;
# Check Core version to prevent false positive with API version
version = "Core R${version}";
};
};
postPatch = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
# Export weak symbol nixPluginDir to permit override of default plugin path
sed -E -i \
-e 's/(VS_PATH_PLUGINDIR)/(nixPluginDir ? nixPluginDir : \1)/g' \
-e '1i\extern char const __attribute__((weak)) nixPluginDir[];' \
src/core/vscore.cpp
'';
postInstall = ''
wrapProgram $out/bin/vspipe \
--prefix PYTHONPATH : $out/${python3.sitePackages}
# VapourSynth does not include any plugins by default
# and emits a warning when the system plugin directory does not exist.
mkdir $out/lib/vapoursynth
'';
installCheckPhase = ''
runHook preInstallCheck
libv="$out/lib/libvapoursynth${stdenv.hostPlatform.extensions.sharedLibrary}"
if ! $NM -g -P "$libv" | grep -q '^nixPluginDir w'; then
echo "Weak symbol nixPluginDir is missing from $libv." >&2
exit 1
fi
runHook postInstallCheck
'';
meta = with lib; {
description = "Video processing framework with the future in mind";
homepage = "http://www.vapoursynth.com/";
license = licenses.lgpl21;
platforms = platforms.all;
maintainers = with maintainers; [
rnhmjoj
sbruder
snaki
];
mainProgram = "vspipe";
};
}

View File

@@ -0,0 +1,135 @@
{
lib,
python3,
buildEnv,
runCommandCC,
stdenv,
runCommand,
vapoursynth,
makeWrapper,
withPlugins,
}:
plugins:
let
pythonEnvironment = python3.buildEnv.override { extraLibs = plugins; };
getRecursivePropagatedBuildInputs =
pkgs:
lib.flatten (
map (
pkg:
let
cleanPropagatedBuildInputs = lib.filter lib.isDerivation pkg.propagatedBuildInputs;
in
cleanPropagatedBuildInputs ++ (getRecursivePropagatedBuildInputs cleanPropagatedBuildInputs)
) pkgs
);
deepPlugins = lib.unique (plugins ++ (getRecursivePropagatedBuildInputs plugins));
pluginsEnv = buildEnv {
name = "vapoursynth-plugins-env";
pathsToLink = [ "/lib/vapoursynth" ];
paths = deepPlugins;
};
# Override default plugin path through nixPluginDir symbol
nixPlugins =
runCommandCC "libvapoursynth-nix-plugins${ext}"
{
executable = true;
preferLocalBuild = true;
allowSubstitutes = false;
src = ''
char const nixPluginDir[] = "${pluginsEnv}/lib/vapoursynth";
'';
}
''
$CC -x c -shared -fPIC - -o "$out" <<<"$src"
'';
ext = stdenv.hostPlatform.extensions.sharedLibrary;
in
if stdenv.hostPlatform.isDarwin then
vapoursynth.overrideAttrs (previousAttrs: {
pname = "vapoursynth-with-plugins";
configureFlags = (previousAttrs.configureFlags or [ ]) ++ [
"--with-plugindir=${pluginsEnv}/lib/vapoursynth"
];
})
else
runCommand "${vapoursynth.name}-with-plugins"
{
nativeBuildInputs = [ makeWrapper ];
passthru = {
inherit python3;
inherit (vapoursynth) src version;
withPlugins = plugins': withPlugins (plugins ++ plugins');
};
}
''
mkdir -p \
$out/bin \
$out/lib/pkgconfig \
$out/lib/vapoursynth \
$out/${python3.sitePackages}
for textFile in \
lib/pkgconfig/vapoursynth{,-script}.pc \
lib/libvapoursynth.la \
lib/libvapoursynth-script.la \
${python3.sitePackages}/vapoursynth.la
do
substitute ${vapoursynth}/$textFile $out/$textFile \
--replace "${vapoursynth}" "$out"
done
for binaryPlugin in ${pluginsEnv}/lib/vapoursynth/*; do
ln -s $binaryPlugin $out/''${binaryPlugin#"${pluginsEnv}/"}
done
for pythonPlugin in ${pythonEnvironment}/${python3.sitePackages}/*; do
ln -s $pythonPlugin $out/''${pythonPlugin#"${pythonEnvironment}/"}
done
for binaryFile in \
lib/libvapoursynth${ext} \
lib/libvapoursynth-script${ext}.0.0.0
do
old_rpath=$(patchelf --print-rpath ${vapoursynth}/$binaryFile)
new_rpath="$old_rpath:$out/lib"
patchelf \
--set-rpath "$new_rpath" \
--output $out/$binaryFile \
${vapoursynth}/$binaryFile
patchelf \
--add-needed libvapoursynth-nix-plugins${ext} \
$out/$binaryFile
done
for binaryFile in \
${python3.sitePackages}/vapoursynth${ext} \
bin/.vspipe-wrapped
do
old_rpath=$(patchelf --print-rpath ${vapoursynth}/$binaryFile)
new_rpath="''${old_rpath//"${vapoursynth}"/"$out"}"
patchelf \
--set-rpath "$new_rpath" \
--output $out/$binaryFile \
${vapoursynth}/$binaryFile
done
ln -s ${nixPlugins} $out/lib/libvapoursynth-nix-plugins${ext}
ln -s ${vapoursynth}/include $out/include
ln -s ${vapoursynth}/lib/vapoursynth/* $out/lib/vapoursynth
ln -s \
libvapoursynth-script${ext}.0.0.0 \
$out/lib/libvapoursynth-script${ext}
ln -s \
libvapoursynth-script${ext}.0.0.0 \
$out/lib/libvapoursynth-script${ext}.0
makeWrapper $out/bin/.vspipe-wrapped $out/bin/vspipe \
--prefix PYTHONPATH : $out/${python3.sitePackages}
''

View File

@@ -0,0 +1,72 @@
{
lib,
python3Packages,
fetchFromGitHub,
aria2,
meson,
ninja,
pkg-config,
gobject-introspection,
wrapGAppsHook4,
desktop-file-utils,
libadwaita,
ffmpeg,
}:
python3Packages.buildPythonApplication rec {
pname = "varia";
version = "2025.7.19-1";
pyproject = false;
src = fetchFromGitHub {
owner = "giantpinkrobots";
repo = "varia";
tag = "v${version}";
hash = "sha256-gdHg1q33HMTpH3DFdMx6RAVvcOuu6Rcigt9HoUgPqDM=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gobject-introspection
wrapGAppsHook4
desktop-file-utils
];
buildInputs = [
libadwaita
];
dependencies = with python3Packages; [
pygobject3
aria2p
yt-dlp
];
postInstall = ''
rm $out/bin/varia
mv $out/bin/varia-py.py $out/bin/varia
'';
dontWrapGApps = true;
# This replaces original varia wrapper
preFixup = ''
makeWrapperArgs+=(
"''${gappsWrapperArgs[@]}"
--add-flag "${lib.getExe aria2}"
--add-flag "${lib.getExe ffmpeg}"
--add-flag "NOSNAP"
)
'';
meta = {
description = "Simple download manager based on aria2 and libadwaita";
homepage = "https://giantpinkrobots.github.io/varia";
license = lib.licenses.mpl20;
mainProgram = "varia";
maintainers = with lib.maintainers; [ aleksana ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
ninja,
gitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "variant-lite";
version = "2.0.0";
src = fetchFromGitHub {
owner = "martinmoene";
repo = "variant-lite";
tag = "v${finalAttrs.version}";
hash = "sha256-zLyzNzeD0C4e7CYqCCsPzkqa2cH5pSbL9vNVIxdkEfc=";
};
nativeBuildInputs = [
cmake
ninja
];
cmakeFlags = [
# https://github.com/martinmoene/variant-lite/issues/50
(lib.cmakeBool "VARIANT_LITE_OPT_BUILD_TESTS" false)
];
doCheck = true;
passthru = {
updateScript = gitUpdater { rev-prefix = "v"; };
};
meta = {
description = "C++17-like variant, a type-safe union for C++98, C++11 and later in a single-file header-only library";
homepage = "https://github.com/martinmoene/variant-lite";
changelog = "https://github.com/martinmoene/variant-lite/blob/v${finalAttrs.version}/CHANGES.txt";
license = lib.licenses.boost;
maintainers = with lib.maintainers; [ titaniumtown ];
};
})

View File

@@ -0,0 +1,115 @@
{
lib,
python3Packages,
fetchFromGitHub,
gexiv2,
gobject-introspection,
gtk3,
hicolor-icon-theme,
intltool,
libnotify,
librsvg,
runtimeShell,
wrapGAppsHook3,
fehSupport ? false,
feh,
imagemagickSupport ? true,
imagemagick,
appindicatorSupport ? true,
libayatana-appindicator,
bash,
}:
python3Packages.buildPythonApplication rec {
pname = "variety";
version = "0.8.13";
pyproject = true;
src = fetchFromGitHub {
owner = "varietywalls";
repo = "variety";
tag = version;
hash = "sha256-7CTJ3hWddbOX/UfZ1qX9rPNGTfkxQ4pxu23sq9ulgv4=";
};
nativeBuildInputs = [
intltool
wrapGAppsHook3
gobject-introspection
];
buildInputs = [
gexiv2
gtk3
hicolor-icon-theme
libnotify
librsvg
]
++ lib.optional appindicatorSupport libayatana-appindicator;
build-system = with python3Packages; [ setuptools ];
dependencies =
with python3Packages;
[
beautifulsoup4
configobj
dbus-python
distutils-extra
httplib2
lxml
pillow
pycairo
pygobject3
requests
setuptools
]
++ lib.optional fehSupport feh
++ lib.optional imagemagickSupport imagemagick;
doCheck = false;
# Prevent double wrapping, let the Python wrapper use the args in preFixup.
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
prePatch = ''
substituteInPlace variety_lib/varietyconfig.py \
--replace-fail "__variety_data_directory__ = \"../data\"" \
"__variety_data_directory__ = \"$out/share/variety\""
substituteInPlace variety/VarietyWindow.py \
--replace-fail '[script,' '["${runtimeShell}", script,' \
--replace-fail 'check_output(script)' 'check_output(["${runtimeShell}", script])'
substituteInPlace data/variety-autostart.desktop.template \
--replace-fail "/bin/bash" "${lib.getExe bash}" \
--replace-fail "{VARIETY_PATH}" "variety"
'';
pythonImportsCheck = [ "variety" ];
meta = {
homepage = "https://github.com/varietywalls/variety";
description = "Wallpaper manager for Linux systems";
mainProgram = "variety";
longDescription = ''
Variety is a wallpaper manager for Linux systems. It supports numerous
desktops and wallpaper sources, including local files and online services:
Flickr, Wallhaven, Unsplash, and more.
Where supported, Variety sits as a tray icon to allow easy pausing and
resuming. Otherwise, its desktop entry menu provides a similar set of
options.
Variety also includes a range of image effects, such as oil painting and
blur, as well as options to layer quotes and a clock onto the background.
'';
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
p3psi
zfnmxt
];
};
}

View File

@@ -0,0 +1,44 @@
{
lib,
stdenv,
fetchurl,
jre,
makeWrapper,
}:
stdenv.mkDerivation rec {
pname = "varscan";
version = "2.4.6";
src = fetchurl {
url = "https://github.com/dkoboldt/varscan/raw/master/VarScan.v${version}.jar";
sha256 = "sha256-6CcjC0epbKsDXFxxeOUImSGh4cjR5INqawL/iOOkwqs=";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ jre ];
dontUnpack = true;
installPhase = ''
mkdir -p $out/libexec/varscan
cp $src $out/libexec/varscan/varscan.jar
mkdir -p $out/bin
makeWrapper ${jre}/bin/java $out/bin/varscan --add-flags "-jar $out/libexec/varscan/varscan.jar"
'';
meta = with lib; {
description = "Variant calling and somatic mutation/CNV detection for next-generation sequencing data";
# VarScan 2 is free for non-commercial use by academic,
# government, and non-profit/not-for-profit institutions. A
# commercial version of the software is available, and licensed
# through the Office of Technology Management at Washington
# University School of Medicine.
license = licenses.unfree;
homepage = "https://github.com/dkoboldt/varscan";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
maintainers = with maintainers; [ jbedo ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,85 @@
{
lib,
stdenv,
fetchzip,
glib,
jre,
makeWrapper,
wrapGAppsHook3,
makeDesktopItem,
copyDesktopItems,
versionCheckHook,
}:
stdenv.mkDerivation rec {
pname = "VASSAL";
version = "3.7.17";
src = fetchzip {
url = "https://github.com/vassalengine/vassal/releases/download/${version}/${pname}-${version}-linux.tar.bz2";
sha256 = "sha256-UQ2Y6A1zPVqMSyNTWpfrqdeSLF4AbuAVm0A4jeZdsW8=";
};
buildInputs = [
glib
];
nativeBuildInputs = [
makeWrapper
wrapGAppsHook3
copyDesktopItems
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share/vassal $out/doc
cp CHANGES LICENSE README.md $out
cp -R lib/* $out/share/vassal
cp -R doc/* $out/doc
makeWrapper ${jre}/bin/java $out/bin/vassal \
--add-flags "-Duser.dir=$out -cp $out/share/vassal/Vengine.jar \
VASSAL.launch.ModuleManager"
install -Dm444 -t "$out/share/icons/hicolor/scalable/apps/" VASSAL.svg
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = "VASSAL";
exec = "vassal";
icon = "VASSAL";
desktopName = "VASSAL";
comment = "The open-source boardgame engine";
categories = [ "Game" ];
startupWMClass = "VASSAL-launch-ModuleManager";
})
];
# Don't move doc to share/, VASSAL expects it to be in the root
forceShare = [
"man"
"info"
];
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
versionCheckProgram = "${placeholder "out"}/bin/vassal";
versionCheckProgramArg = "--version";
meta = with lib; {
description = "Free, open-source boardgame engine";
homepage = "https://vassalengine.org/";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.lgpl21Only;
maintainers = with maintainers; [ tvestelind ];
platforms = with lib.platforms; unix ++ windows;
mainProgram = "vassal";
};
}

View File

@@ -0,0 +1,25 @@
From 78e78dc10e2a4fd84ef0041d346d8f6d162f22c6 Mon Sep 17 00:00:00 2001
From: ThePuzzlemaker <tpzker@thepuzzlemaker.info>
Date: Wed, 24 Jul 2024 21:18:04 -0500
Subject: [PATCH] Fix build on JDK 21+
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 5a3254b..42b1405 100644
--- a/pom.xml
+++ b/pom.xml
@@ -59,7 +59,7 @@
<maven.compiler.target>${java.version}</maven.compiler.target>
<java.version>15</java.version>
- <lombok.version>1.18.22</lombok.version>
+ <lombok.version>1.18.30</lombok.version>
<javafx.version>17.0.1</javafx.version>
<slf4j.version>1.7.32</slf4j.version>
<mvvmfx.version>1.9.0-SNAPSHOT</mvvmfx.version>
--
2.44.1

View File

@@ -0,0 +1,102 @@
{
lib,
stdenv,
jdk,
maven,
makeWrapper,
fetchFromGitHub,
libGL,
libxkbcommon,
wayland,
fontconfig,
libX11,
libXcursor,
libXi,
libXrandr,
libXxf86vm,
libXtst,
copyDesktopItems,
makeDesktopItem,
}:
let
libPath = lib.makeLibraryPath [
libGL
libxkbcommon
wayland
libX11
libXcursor
libXi
libXrandr
libXxf86vm
libXtst
fontconfig
];
in
maven.buildMavenPackage rec {
pname = "vatprism";
version = "0.3.5";
src = fetchFromGitHub {
owner = "marvk";
repo = "vatprism";
tag = "v${version}";
hash = "sha256-ofEwHUCm79roHe2bawmKFw2QHhIonnlkFG5nhE6uN+g=";
};
nativeBuildInputs = [
makeWrapper
copyDesktopItems
];
# https://github.com/marvk/vatprism/pull/141
patches = [ ./0001-Fix-build-on-JDK-21.patch ];
desktopItems = [
(makeDesktopItem {
name = "vatprism";
desktopName = "VATprism";
exec = "vatprism";
terminal = false;
icon = "vatprism";
})
];
mvnHash =
if (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) then
"sha256-x0nFt2C7dZqMdllI1+Io9SPBY2J/dVgBTVb9T24vFFI="
else
"sha256-9uyNCUqnMgpiwm2kz544pWNB/SkRpASm2Dln0e4yZos=";
installPhase = ''
runHook preInstall
# create the bin directory
mkdir -p $out/bin $out/share/icons/hicolor/256x256/apps
# copy out the JAR
# Maven already setup the classpath to use m2 repository layout
# with the prefix of lib/
cp target-fat-jar/vatsim-map-${version}-fat.jar $out/
cp src/main/resources/net/marvk/fs/vatsim/map/icon-256.png $out/share/icons/hicolor/256x256/apps/vatprism.png
# create a wrapper that will automatically set the classpath
# this should be the paths from the dependency derivation
makeWrapper ${jdk}/bin/java $out/bin/vatprism \
--add-flags "-jar $out/vatsim-map-${version}-fat.jar" \
--set JAVA_HOME ${jdk.home} \
--suffix LD_LIBRARY_PATH : ${libPath}
runHook postInstall
'';
meta = {
description = "VATSIM map and data explorer";
longDescription = ''
VATprism is a VATSIM Map and VATSIM Data Explorer, VATSIM being the
Virtual Air Traffic Simulation Network. VATprism allows users to explore
available ATC services, connected pilots, Airports, Flight and Upper
Information Regions and more!
'';
homepage = "https://vatprism.org/";
mainProgram = "vatprism";
license = lib.licenses.agpl3Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ thepuzzlemaker ];
};
}

View File

@@ -0,0 +1,80 @@
{
lib,
stdenv,
fetchzip,
}:
stdenv.mkDerivation rec {
pname = "vault-bin";
version = "1.20.4";
src =
let
inherit (stdenv.hostPlatform) system;
selectSystem = attrs: attrs.${system} or (throw "Unsupported system: ${system}");
suffix = selectSystem {
x86_64-linux = "linux_amd64";
aarch64-linux = "linux_arm64";
i686-linux = "linux_386";
x86_64-darwin = "darwin_amd64";
aarch64-darwin = "darwin_arm64";
};
hash = selectSystem {
x86_64-linux = "sha256-n687yeuM1+1m2TfgT3AaMBOfE8cqbbG0Gq9Imb9olno=";
aarch64-linux = "sha256-+MRuCMkskd29xaoAjj42Re1eRra3SKMiciUOG9HwsN4=";
i686-linux = "sha256-L1zYFc2nam/pFq/groxeWvyK+ujHOHqvUkR96hPC7jU=";
x86_64-darwin = "sha256-t0j3Wr6IrFfN6FcZ3ZF+9qYjR/K6R8o06ebLJohr54w=";
aarch64-darwin = "sha256-F/M9ULCkfArlBcLqfR8i1gVcspfe8XEag6etdFXQmqA=";
};
in
fetchzip {
url = "https://releases.hashicorp.com/vault/${version}/vault_${version}_${suffix}.zip";
stripRoot = false;
inherit hash;
};
dontConfigure = true;
dontBuild = true;
dontStrip = stdenv.hostPlatform.isDarwin;
installPhase = ''
runHook preInstall
install -D vault $out/bin/vault
runHook postInstall
'';
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
$out/bin/vault --help
$out/bin/vault version
runHook postInstallCheck
'';
dontPatchELF = true;
dontPatchShebangs = true;
passthru.updateScript = ./update-bin.sh;
meta = with lib; {
description = "Tool for managing secrets, this binary includes the UI";
homepage = "https://www.vaultproject.io";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.bsl11;
maintainers = with maintainers; [
offline
psyanticy
Chili-Man
techknowlogick
];
teams = [ teams.serokell ];
mainProgram = "vault";
platforms = [
"x86_64-linux"
"i686-linux"
"x86_64-darwin"
"aarch64-darwin"
"aarch64-linux"
];
};
}

View File

@@ -0,0 +1,40 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl gnused gawk nix-prefetch
set -euo pipefail
ROOT="$(dirname "$(readlink -f "$0")")"
NIX_DRV="$ROOT/package.nix"
if [ ! -f "$NIX_DRV" ]; then
echo "ERROR: cannot find vault-bin in $ROOT"
exit 1
fi
function calc_hash () {
local version=$1
local arch=$2
url="https://releases.hashicorp.com/vault/${version}/vault_${version}_${arch}.zip"
zip_hash=$(nix-prefetch-url --unpack $url)
nix --extra-experimental-features nix-command hash to-sri --type sha256 "$zip_hash"
}
replace_sha() {
sed -i "s#$1 = \"sha256-.\{44\}\"#$1 = \"$2\"#" "$NIX_DRV"
}
# https://releases.hashicorp.com/vault/1.9.4/vault_1.9.4_linux_arm64.zip
VAULT_VER=$(curl -Ls -w "%{url_effective}" -o /dev/null https://github.com/hashicorp/vault/releases/latest | awk -F'/' '{print $NF}' | sed 's/v//')
VAULT_LINUX_X86_SHA256=$(calc_hash "$VAULT_VER" "linux_386")
VAULT_LINUX_X64_SHA256=$(calc_hash "$VAULT_VER" "linux_amd64")
VAULT_DARWIN_X64_SHA256=$(calc_hash "$VAULT_VER" "darwin_amd64")
VAULT_LINUX_AARCH64_SHA256=$(calc_hash "$VAULT_VER" "linux_arm64")
VAULT_DARWIN_AARCH64_SHA256=$(calc_hash "$VAULT_VER" "darwin_arm64")
sed -i "s/version = \".*\"/version = \"$VAULT_VER\"/" "$NIX_DRV"
replace_sha "i686-linux" "$VAULT_LINUX_X86_SHA256"
replace_sha "x86_64-linux" "$VAULT_LINUX_X64_SHA256"
replace_sha "x86_64-darwin" "$VAULT_DARWIN_X64_SHA256"
replace_sha "aarch64-linux" "$VAULT_LINUX_AARCH64_SHA256"
replace_sha "aarch64-darwin" "$VAULT_DARWIN_AARCH64_SHA256"

View File

@@ -0,0 +1,27 @@
{
lib,
fetchFromGitHub,
buildGoModule,
}:
buildGoModule rec {
pname = "vault-medusa";
version = "0.7.3";
src = fetchFromGitHub {
owner = "jonasvinther";
repo = "medusa";
rev = "v${version}";
sha256 = "sha256-pMCkJMY5KFkNsmv/LFYZrDmrq2G7fw1fl9HEYGAKuIM=";
};
vendorHash = "sha256-+bGuWOFmglvW/qB+6VlOPeoB9lwkikksQPuDKE/2kXw=";
meta = with lib; {
description = "Cli tool for importing and exporting Hashicorp Vault secrets";
mainProgram = "medusa";
homepage = "https://github.com/jonasvinther/medusa";
license = licenses.mit;
maintainers = with maintainers; [ onny ];
};
}

View File

@@ -0,0 +1,50 @@
{
buildGoModule,
fetchFromGitHub,
makeWrapper,
lib,
openssh,
testers,
vault-ssh-plus,
}:
buildGoModule rec {
pname = "vault-ssh-plus";
version = "0.7.8";
src = fetchFromGitHub {
owner = "isometry";
repo = "vault-ssh-plus";
rev = "v${version}";
hash = "sha256-5rajB4pSRp7Pw4yx0u6MoOLxfkWWjhB7T2JGGb8ICRU=";
};
vendorHash = "sha256-IfT8F8zqWSfGh/XlISDTTZju8i3dEHG33lrZqJz1nX8=";
nativeBuildInputs = [ makeWrapper ];
ldflags = [
"-s"
"-w"
"-X main.version=${version}"
];
postInstall = ''
mv $out/bin/vault-ssh-plus $out/bin/vssh
wrapProgram $out/bin/vssh --prefix PATH : ${lib.makeBinPath [ openssh ]};
'';
passthru.tests.version = testers.testVersion {
package = vault-ssh-plus;
command = "vssh --version";
version = "v${version}";
};
meta = {
homepage = "https://github.com/isometry/vault-ssh-plus";
changelog = "https://github.com/isometry/vault-ssh-plus/releases/tag/v${version}";
description = "Automatically use HashiCorp Vault SSH Client Key Signing with ssh(1)";
mainProgram = "vssh";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ lesuisse ];
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
rustPlatform,
stdenv,
buildPackages,
installShellFiles,
nix-update-script,
}:
let
version = "0.13.0";
in
rustPlatform.buildRustPackage {
pname = "vault-tasks";
inherit version;
src = fetchFromGitHub {
owner = "louis-thevenet";
repo = "vault-tasks";
rev = "v${version}";
hash = "sha256-XWeY2l82n51O4/LKPOJZOXf7PCRPOUshFg832iDvmuA=";
};
cargoHash = "sha256-znc2oKpovsXyrUhKvBVMorv7yWM39xNgaNDiq/5I6Dg=";
nativeBuildInputs = [
installShellFiles
];
postInstall = ''
install -Dm444 desktop/vault-tasks.desktop -t $out/share/applications
''
+ (
let
vault-tasks =
if stdenv.buildPlatform.canExecute stdenv.hostPlatform then
placeholder "out"
else
buildPackages.vault-tasks;
in
''
# vault-tasks tries to load a config file from ~/.config/ before generating completions
export HOME="$(mktemp -d)"
installShellCompletion --cmd vault-tasks \
--bash <(${vault-tasks}/bin/vault-tasks generate-completions bash) \
--fish <(${vault-tasks}/bin/vault-tasks generate-completions fish) \
--zsh <(${vault-tasks}/bin/vault-tasks generate-completions zsh)
''
);
passthru.updateScript = nix-update-script { };
meta = {
description = "TUI Markdown Task Manager";
longDescription = ''
vault-tasks is a TUI Markdown task manager.
It will parse any Markdown file or vault and display the tasks it contains.
'';
homepage = "https://github.com/louis-thevenet/vault-tasks";
license = lib.licenses.mit;
mainProgram = "vault-tasks";
maintainers = with lib.maintainers; [ louis-thevenet ];
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
let
version = "0.7.2";
in
buildGoModule {
pname = "vault-unseal";
inherit version;
src = fetchFromGitHub {
owner = "lrstanley";
repo = "vault-unseal";
rev = "v${version}";
hash = "sha256-xv33wx/JjvpL9ryyWeZde+a6UPWqYXQcsAxOzmHFAyo=";
};
vendorHash = "sha256-hhTJB1g35vB5dLOEY7V7V5ma7Zzyq2bo9kk3gpEcEsY=";
meta = {
changelog = "https://github.com/lrstanley/vault-unseal/releases/tag/v${version}";
description = "Auto-unseal utility for Hashicorp Vault";
homepage = "https://github.com/lrstanley/vault-unseal";
license = lib.licenses.mit;
mainProgram = "vault-unseal";
maintainers = with lib.maintainers; [ mjm ];
};
}

View File

@@ -0,0 +1,88 @@
{
stdenv,
lib,
fetchFromGitHub,
buildGoModule,
installShellFiles,
nixosTests,
makeWrapper,
gawk,
glibc,
}:
buildGoModule rec {
pname = "vault";
version = "1.20.4";
src = fetchFromGitHub {
owner = "hashicorp";
repo = "vault";
rev = "v${version}";
hash = "sha256-GZ+/NzOjcKTYOq4HajKGD68RNxIdXxfLo/pAewaZ8F8=";
};
vendorHash = "sha256-mhT5s1nIdX/57TDEaWwbni0E7DX0W0WwwvrSr7L66hI=";
proxyVendor = true;
postPatch = ''
# Remove defunct github.com/hashicorp/go-cmp dependency
sed -i '/github\.com\/hashicorp\/go-cmp/d' go.mod
sed -i '/github\.com\/hashicorp\/go-cmp/d' go.sum
'';
subPackages = [ "." ];
nativeBuildInputs = [
installShellFiles
makeWrapper
];
tags = [ "vault" ];
ldflags = [
"-s"
"-w"
"-X github.com/hashicorp/vault/sdk/version.GitCommit=${src.rev}"
"-X github.com/hashicorp/vault/sdk/version.Version=${version}"
"-X github.com/hashicorp/vault/sdk/version.VersionPrerelease="
];
postInstall = ''
echo "complete -C $out/bin/vault vault" > vault.bash
installShellCompletion vault.bash
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
wrapProgram $out/bin/vault \
--prefix PATH ${
lib.makeBinPath [
gawk
glibc
]
}
'';
passthru.tests = {
inherit (nixosTests)
vault
vault-postgresql
vault-dev
vault-agent
;
};
meta = {
homepage = "https://www.vaultproject.io/";
description = "Tool for managing secrets";
changelog = "https://github.com/hashicorp/vault/blob/v${version}/CHANGELOG.md";
license = lib.licenses.bsl11;
mainProgram = "vault";
maintainers = with lib.maintainers; [
rushmorem
lnl7
offline
Chili-Man
techknowlogick
];
};
}

View File

@@ -0,0 +1,89 @@
{
lib,
stdenv,
fetchFromGitHub,
replaceVars,
appstream-glib,
desktop-file-utils,
meson,
ninja,
pkg-config,
python3,
rustPlatform,
rustc,
cargo,
wrapGAppsHook3,
glib,
gtk4,
libadwaita,
wayland,
gocryptfs,
cryfs,
fuse,
util-linux,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vaults";
version = "0.10.0";
src = fetchFromGitHub {
owner = "mpobaschnig";
repo = "vaults";
tag = finalAttrs.version;
hash = "sha256-B4CNEghMfP+r0poyhE102zC1Yd2U5ocV1MCMEVEMjEY=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-my4CxFIEN19juo/ya2vlkejQTaZsyoYLtFTR7iCT9s0=";
};
patches = [
(replaceVars ./remove_flatpak_dependency.patch {
cryfs = lib.getExe' cryfs "cryfs";
gocryptfs = lib.getExe' gocryptfs "gocryptfs";
fusermount = lib.getExe' fuse "fusermount";
umount = lib.getExe' util-linux "umount";
})
];
postPatch = ''
patchShebangs build-aux
'';
nativeBuildInputs = [
desktop-file-utils
meson
ninja
pkg-config
wrapGAppsHook3
cargo
rustc
rustPlatform.cargoSetupHook
];
buildInputs = [
appstream-glib
gtk4
python3
glib
libadwaita
wayland
gocryptfs
cryfs
];
meta = {
description = "GTK frontend for encrypted vaults supporting gocryptfs and CryFS for encryption";
homepage = "https://mpobaschnig.github.io/vaults/";
changelog = "https://github.com/mpobaschnig/vaults/releases/tag/${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
benneti
aleksana
];
mainProgram = "vaults";
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,139 @@
diff --git a/src/backend/cryfs.rs b/src/backend/cryfs.rs
index 089bf03..157c72a 100644
--- a/src/backend/cryfs.rs
+++ b/src/backend/cryfs.rs
@@ -35,13 +35,7 @@ fn get_binary_path(vault_config: &VaultConfig) -> String {
}
}
- let global_config = GlobalConfigManager::instance().get_flatpak_info();
- let instance_path = global_config
- .section(Some("Instance"))
- .unwrap()
- .get("app-path")
- .unwrap();
- let cryfs_instance_path = instance_path.to_owned() + "/bin/cryfs";
+ let cryfs_instance_path = "@cryfs@".to_string();
log::info!("CryFS binary path: {}", cryfs_instance_path);
cryfs_instance_path
}
@@ -49,9 +43,7 @@ fn get_binary_path(vault_config: &VaultConfig) -> String {
pub fn is_available(vault_config: &VaultConfig) -> Result<bool, BackendError> {
log::trace!("is_available({:?})", vault_config);
- let output = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let output = Command::new(get_binary_path(vault_config))
.arg("--version")
.output()?;
log::debug!("CryFS output: {:?}", output);
@@ -64,9 +56,7 @@ pub fn is_available(vault_config: &VaultConfig) -> Result<bool, BackendError> {
pub fn init(vault_config: &VaultConfig, password: String) -> Result<(), BackendError> {
log::trace!("init({:?}, password: <redacted>)", vault_config);
- let mut child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let mut child = Command::new(get_binary_path(vault_config))
.env("CRYFS_FRONTEND", "noninteractive")
.stdin(Stdio::piped())
.stdout(Stdio::piped())
@@ -106,9 +96,7 @@ pub fn init(vault_config: &VaultConfig, password: String) -> Result<(), BackendE
pub fn open(vault_config: &VaultConfig, password: String) -> Result<(), BackendError> {
log::trace!("open({:?}, password: <redacted>)", vault_config);
- let mut child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let mut child = Command::new(get_binary_path(vault_config))
.env("CRYFS_FRONTEND", "noninteractive")
.stdin(Stdio::piped())
.stdout(Stdio::piped())
@@ -143,9 +131,7 @@ pub fn open(vault_config: &VaultConfig, password: String) -> Result<(), BackendE
pub fn close(vault_config: &VaultConfig) -> Result<(), BackendError> {
log::trace!("close({:?})", vault_config);
- let child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg("fusermount")
+ let child = Command::new("@fusermount@")
.arg("-u")
.stdout(Stdio::piped())
.arg(&vault_config.mount_directory)
diff --git a/src/backend/gocryptfs.rs b/src/backend/gocryptfs.rs
index 9638f3a..ffa8f44 100644
--- a/src/backend/gocryptfs.rs
+++ b/src/backend/gocryptfs.rs
@@ -35,13 +35,7 @@ fn get_binary_path(vault_config: &VaultConfig) -> String {
}
}
- let global_config = GlobalConfigManager::instance().get_flatpak_info();
- let instance_path = global_config
- .section(Some("Instance"))
- .unwrap()
- .get("app-path")
- .unwrap();
- let gocryptfs_instance_path = instance_path.to_owned() + "/bin/gocryptfs";
+ let gocryptfs_instance_path = "@gocryptfs@".to_string();
log::info!("gocryptfs binary path: {}", gocryptfs_instance_path);
gocryptfs_instance_path
}
@@ -49,9 +43,7 @@ fn get_binary_path(vault_config: &VaultConfig) -> String {
pub fn is_available(vault_config: &VaultConfig) -> Result<bool, BackendError> {
log::trace!("is_available({:?})", vault_config);
- let output = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let output = Command::new(get_binary_path(vault_config))
.arg("--version")
.output()?;
log::debug!("gocryptfs output: {:?}", output);
@@ -64,9 +56,7 @@ pub fn is_available(vault_config: &VaultConfig) -> Result<bool, BackendError> {
pub fn init(vault_config: &VaultConfig, password: String) -> Result<(), BackendError> {
log::trace!("init({:?}, password: <redacted>)", vault_config);
- let mut child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let mut child = Command::new(get_binary_path(vault_config))
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.arg("--init")
@@ -104,9 +94,7 @@ pub fn init(vault_config: &VaultConfig, password: String) -> Result<(), BackendE
pub fn open(vault_config: &VaultConfig, password: String) -> Result<(), BackendError> {
log::trace!("open({:?}, password: <redacted>)", vault_config);
- let mut child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg(get_binary_path(vault_config))
+ let mut child = Command::new(get_binary_path(vault_config))
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.arg("-q")
@@ -142,9 +130,7 @@ pub fn open(vault_config: &VaultConfig, password: String) -> Result<(), BackendE
pub fn close(vault_config: &VaultConfig) -> Result<(), BackendError> {
log::trace!("close({:?}, password: <redacted>)", vault_config);
- let child = Command::new("flatpak-spawn")
- .arg("--host")
- .arg("umount")
+ let child = Command::new("@umount@")
.stdout(Stdio::piped())
.arg(&vault_config.mount_directory)
.spawn()?;
diff --git a/src/global_config_manager.rs b/src/global_config_manager.rs
index 619bb18..cea9ac3 100644
--- a/src/global_config_manager.rs
+++ b/src/global_config_manager.rs
@@ -102,7 +102,7 @@ impl GlobalConfigManager {
let object: Self = glib::Object::new();
*object.imp().flatpak_info.borrow_mut() =
- Ini::load_from_file("/.flatpak-info").expect("Could not load .flatpak-info");
+ Ini::load_from_file("/.flatpak-info").unwrap_or_else(|_| Ini::new());
match user_config_dir().as_os_str().to_str() {
Some(user_config_directory) => {

View File

@@ -0,0 +1,65 @@
{
lib,
stdenv,
callPackage,
rustPlatform,
fetchFromGitHub,
nixosTests,
pkg-config,
openssl,
libiconv,
dbBackend ? "sqlite",
libmysqlclient,
libpq,
}:
let
webvault = callPackage ./webvault.nix { };
in
rustPlatform.buildRustPackage rec {
pname = "vaultwarden";
version = "1.34.3";
src = fetchFromGitHub {
owner = "dani-garcia";
repo = "vaultwarden";
rev = version;
hash = "sha256-Dj0ySVRvBZ/57+UHas3VI8bi/0JBRqn0IW1Dq+405J0=";
};
cargoHash = "sha256-4sDagd2XGamBz1XvDj4ycRVJ0F+4iwHOPlj/RglNDqE=";
# used for "Server Installed" version in admin panel
env.VW_VERSION = version;
nativeBuildInputs = [ pkg-config ];
buildInputs = [
openssl
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
libiconv
]
++ lib.optional (dbBackend == "mysql") libmysqlclient
++ lib.optional (dbBackend == "postgresql") libpq;
buildFeatures = dbBackend;
passthru = {
inherit webvault;
tests = nixosTests.vaultwarden;
updateScript = callPackage ./update.nix { };
};
meta = {
description = "Unofficial Bitwarden compatible server written in Rust";
homepage = "https://github.com/dani-garcia/vaultwarden";
changelog = "https://github.com/dani-garcia/vaultwarden/releases/tag/${version}";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [
dotlambda
SuperSandro2000
];
mainProgram = "vaultwarden";
};
}

View File

@@ -0,0 +1,41 @@
{
writeShellApplication,
lib,
nix,
nix-prefetch-git,
nix-update,
curl,
git,
gnugrep,
gnused,
jq,
yq,
}:
lib.getExe (writeShellApplication {
name = "update-vaultwarden";
runtimeInputs = [
curl
git
gnugrep
gnused
jq
yq
nix
nix-prefetch-git
nix-update
];
text = ''
VAULTWARDEN_VERSION=$(curl --silent https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest | jq -r '.tag_name')
nix-update "vaultwarden" --version "$VAULTWARDEN_VERSION"
URL="https://raw.githubusercontent.com/dani-garcia/vaultwarden/''${VAULTWARDEN_VERSION}/docker/DockerSettings.yaml"
WEBVAULT_VERSION="$(curl --silent "$URL" | yq -r ".vault_version" | sed s/^v//)"
old_hash="$(nix --extra-experimental-features nix-command eval -f default.nix --raw vaultwarden.webvault.bw_web_builds.outputHash)"
new_hash="$(nix-prefetch-git https://github.com/dani-garcia/bw_web_builds.git --rev "v$WEBVAULT_VERSION" | jq --raw-output ".sha256")"
new_hash_sri="$(nix --extra-experimental-features nix-command hash to-sri --type sha256 "$new_hash")"
sed -e "s#$old_hash#$new_hash_sri#" -i pkgs/tools/security/vaultwarden/webvault.nix
nix-update "vaultwarden.webvault" --version "$WEBVAULT_VERSION"
'';
})

View File

@@ -0,0 +1,67 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
nixosTests,
python3,
vaultwarden,
}:
buildNpmPackage rec {
pname = "vaultwarden-webvault";
version = "2025.7.0.0";
src = fetchFromGitHub {
owner = "vaultwarden";
repo = "vw_web_builds";
tag = "v${version}";
hash = "sha256-CnVOi4xE0+VFTm0yI4++MBv8w0vgtsRE5E2RwsLojMI=";
};
npmDepsHash = "sha256-QoZtiZpS8jVIaGKHcfKbtBrrn+RcMRvm1/oF23nPPQw=";
nativeBuildInputs = [
python3
];
makeCacheWritable = true;
env = {
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
npm_config_build_from_source = "true";
};
npmRebuildFlags = [
# FIXME one of the esbuild versions fails to download @esbuild/linux-x64
"--ignore-scripts"
];
npmBuildScript = "dist:oss:selfhost";
npmBuildFlags = [
"--workspace"
"apps/web"
];
npmFlags = [ "--legacy-peer-deps" ];
installPhase = ''
runHook preInstall
mkdir -p $out/share/vaultwarden
mv apps/web/build $out/share/vaultwarden/vault
runHook postInstall
'';
passthru = {
tests = nixosTests.vaultwarden;
};
meta = {
description = "Integrates the web vault into vaultwarden";
homepage = "https://github.com/dani-garcia/bw_web_builds";
changelog = "https://github.com/dani-garcia/bw_web_builds/releases/tag/v${lib.concatStringsSep "." (lib.take 3 (lib.versions.splitVersion version))}";
platforms = lib.platforms.all;
license = lib.licenses.gpl3Plus;
inherit (vaultwarden.meta) maintainers;
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
}:
stdenvNoCC.mkDerivation rec {
pname = "vazir-code-font";
version = "1.1.2";
src = fetchFromGitHub {
owner = "rastikerdar";
repo = "vazir-code-font";
rev = "v${version}";
hash = "sha256-iBojse3eHr4ucZtPfpkN+mmO6sEExY8WcAallyPgMsI=";
};
installPhase = ''
runHook preInstall
find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/truetype {} \;
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/rastikerdar/vazir-code-font";
description = "Persian (farsi) Monospaced Font for coding";
license = licenses.publicDomain;
platforms = platforms.all;
maintainers = [ maintainers.dearrude ];
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
}:
stdenvNoCC.mkDerivation rec {
pname = "vazir-fonts";
version = "33.003";
src = fetchFromGitHub {
owner = "rastikerdar";
repo = "vazir-font";
rev = "v${version}";
hash = "sha256-C1UtfrRFzz0uv/hj8e7huXe4sNd5h7ozVhirWEAyXGg=";
};
dontBuild = true;
installPhase = ''
runHook preInstall
find . -name '*.ttf' -exec install -m444 -Dt $out/share/fonts/truetype {} \;
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/rastikerdar/vazir-font";
description = "Persian (Farsi) Font - قلم (فونت) فارسی وزیر";
license = licenses.ofl;
platforms = platforms.all;
maintainers = [ ];
};
}