Merge branch 'master' into staging-next
This commit is contained in:
commit
4aad2947f8
365
doc/languages-frameworks/ruby.section.md
Normal file
365
doc/languages-frameworks/ruby.section.md
Normal file
@ -0,0 +1,365 @@
|
||||
---
|
||||
title: Ruby
|
||||
author: Michael Fellinger
|
||||
date: 2019-05-23
|
||||
---
|
||||
|
||||
# Ruby
|
||||
|
||||
## User Guide
|
||||
|
||||
### Using Ruby
|
||||
|
||||
#### Overview
|
||||
|
||||
Several versions of Ruby interpreters are available on Nix, as well as over 250 gems and many applications written in Ruby.
|
||||
The attribute `ruby` refers to the default Ruby interpreter, which is currently
|
||||
MRI 2.5. It's also possible to refer to specific versions, e.g. `ruby_2_6`, `jruby`, or `mruby`.
|
||||
|
||||
In the nixpkgs tree, Ruby packages can be found throughout, depending on what
|
||||
they do, and are called from the main package set. Ruby gems, however are
|
||||
separate sets, and there's one default set for each interpreter (currently MRI
|
||||
only).
|
||||
|
||||
There are two main approaches for using Ruby with gems.
|
||||
One is to use a specifically locked `Gemfile` for an application that has very strict dependencies.
|
||||
The other is to depend on the common gems, which we'll explain further down, and
|
||||
rely on them being updated regularly.
|
||||
|
||||
The interpreters have common attributes, namely `gems`, and `withPackages`. So
|
||||
you can refer to `ruby.gems.nokogiri`, or `ruby_2_5.gems.nokogiri` to get the
|
||||
Nokogiri gem already compiled and ready to use.
|
||||
|
||||
Since not all gems have executables like `nokogiri`, it's usually more
|
||||
convenient to use the `withPackages` function like this:
|
||||
`ruby.withPackages (p: with p; [ nokogiri ])`. This will also make sure that the
|
||||
Ruby in your environment will be able to find the gem and it can be used in your
|
||||
Ruby code (for example via `ruby` or `irb` executables) via `require "nokogiri"`
|
||||
as usual.
|
||||
|
||||
#### Temporary Ruby environment with `nix-shell`
|
||||
|
||||
Rather than having a single Ruby environment shared by all Ruby
|
||||
development projects on a system, Nix allows you to create separate
|
||||
environments per project. `nix-shell` gives you the possibility to
|
||||
temporarily load another environment akin to a combined `chruby` or
|
||||
`rvm` and `bundle exec`.
|
||||
|
||||
There are two methods for loading a shell with Ruby packages. The first and
|
||||
recommended method is to create an environment with `ruby.withPackages` and load
|
||||
that.
|
||||
|
||||
```shell
|
||||
nix-shell -p "ruby.withPackages (ps: with ps; [ nokogiri pry ])"
|
||||
```
|
||||
|
||||
The other method, which is not recommended, is to create an environment and list
|
||||
all the packages directly.
|
||||
|
||||
```shell
|
||||
nix-shell -p ruby.gems.nokogiri ruby.gems.pry
|
||||
```
|
||||
|
||||
Again, it's possible to launch the interpreter from the shell. The Ruby
|
||||
interpreter has the attribute `gems` which contains all Ruby gems for that
|
||||
specific interpreter.
|
||||
|
||||
##### Load environment from `.nix` expression
|
||||
|
||||
As explained in the Nix manual, `nix-shell` can also load an expression from a
|
||||
`.nix` file. Say we want to have Ruby 2.5, `nokogori`, and `pry`. Consider a
|
||||
`shell.nix` file with:
|
||||
|
||||
```nix
|
||||
with import <nixpkgs> {};
|
||||
ruby.withPackages (ps: with ps; [ nokogiri pry ])
|
||||
```
|
||||
|
||||
What's happening here?
|
||||
|
||||
1. We begin with importing the Nix Packages collections. `import <nixpkgs>`
|
||||
imports the `<nixpkgs>` function, `{}` calls it and the `with` statement
|
||||
brings all attributes of `nixpkgs` in the local scope. These attributes form
|
||||
the main package set.
|
||||
2. Then we create a Ruby environment with the `withPackages` function.
|
||||
3. The `withPackages` function expects us to provide a function as an argument
|
||||
that takes the set of all ruby gems and returns a list of packages to include
|
||||
in the environment. Here, we select the packages `nokogiri` and `pry` from
|
||||
the package set.
|
||||
|
||||
##### Execute command with `--run`
|
||||
|
||||
A convenient flag for `nix-shell` is `--run`. It executes a command in the
|
||||
`nix-shell`. We can e.g. directly open a `pry` REPL:
|
||||
|
||||
```shell
|
||||
nix-shell -p "ruby.withPackages (ps: with ps; [ nokogiri pry ])" --run "pry"
|
||||
```
|
||||
|
||||
Or immediately require `nokogiri` in pry:
|
||||
|
||||
```shell
|
||||
nix-shell -p "ruby.withPackages (ps: with ps; [ nokogiri pry ])" --run "pry -rnokogiri"
|
||||
```
|
||||
|
||||
Or run a script using this environment:
|
||||
|
||||
```shell
|
||||
nix-shell -p "ruby.withPackages (ps: with ps; [ nokogiri pry ])" --run "ruby example.rb"
|
||||
```
|
||||
|
||||
##### Using `nix-shell` as shebang
|
||||
|
||||
In fact, for the last case, there is a more convenient method. You can add a
|
||||
[shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) to your script
|
||||
specifying which dependencies `nix-shell` needs. With the following shebang, you
|
||||
can just execute `./example.rb`, and it will run with all dependencies.
|
||||
|
||||
```ruby
|
||||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -i ruby -p "ruby.withPackages (ps: with ps; [ nokogiri rest-client ])"
|
||||
|
||||
require 'nokogiri'
|
||||
require 'rest-client'
|
||||
|
||||
body = RestClient.get('http://example.com').body
|
||||
puts Nokogiri::HTML(body).at('h1').text
|
||||
```
|
||||
|
||||
### Developing with Ruby
|
||||
|
||||
#### Using an existing Gemfile
|
||||
|
||||
In most cases, you'll already have a `Gemfile.lock` listing all your dependencies.
|
||||
This can be used to generate a `gemset.nix` which is used to fetch the gems and
|
||||
combine them into a single environment.
|
||||
The reason why you need to have a separate file for this, is that Nix requires
|
||||
you to have a checksum for each input to your build.
|
||||
Since the `Gemfile.lock` that `bundler` generates doesn't provide us with
|
||||
checksums, we have to first download each gem, calculate its SHA256, and store
|
||||
it in this separate file.
|
||||
|
||||
So the steps from having just a `Gemfile` to a `gemset.nix` are:
|
||||
|
||||
```shell
|
||||
bundle lock
|
||||
bundix
|
||||
```
|
||||
|
||||
If you already have a `Gemfile.lock`, you can simply run `bundix` and it will
|
||||
work the same.
|
||||
|
||||
To update the gems in your `Gemfile.lock`, you may use the `bundix -l` flag,
|
||||
which will create a new `Gemfile.lock` in case the `Gemfile` has a more recent
|
||||
time of modification.
|
||||
|
||||
Once the `gemset.nix` is generated, it can be used in a
|
||||
`bundlerEnv` derivation. Here is an example you could use for your `shell.nix`:
|
||||
|
||||
```nix
|
||||
# ...
|
||||
let
|
||||
gems = bundlerEnv {
|
||||
name = "gems-for-some-project";
|
||||
gemdir = ./.;
|
||||
};
|
||||
in mkShell { buildInputs = [ gems gems.wrappedRuby ]; }
|
||||
```
|
||||
|
||||
With this file in your directory, you can run `nix-shell` to build and use the gems.
|
||||
The important parts here are `bundlerEnv` and `wrappedRuby`.
|
||||
|
||||
The `bundlerEnv` is a wrapper over all the gems in your gemset. This means that
|
||||
all the `/lib` and `/bin` directories will be available, and the executables of
|
||||
all gems (even of indirect dependencies) will end up in your `$PATH`.
|
||||
The `wrappedRuby` provides you with all executables that come with Ruby itself,
|
||||
but wrapped so they can easily find the gems in your gemset.
|
||||
|
||||
One common issue that you might have is that you have Ruby 2.6, but also
|
||||
`bundler` in your gemset. That leads to a conflict for `/bin/bundle` and
|
||||
`/bin/bundler`. You can resolve this by wrapping either your Ruby or your gems
|
||||
in a `lowPrio` call. So in order to give the `bundler` from your gemset
|
||||
priority, it would be used like this:
|
||||
|
||||
```nix
|
||||
# ...
|
||||
mkShell { buildInputs = [ gems (lowPrio gems.wrappedRuby) ]; }
|
||||
```
|
||||
|
||||
|
||||
#### Gem-specific configurations and workarounds
|
||||
|
||||
In some cases, especially if the gem has native extensions, you might need to
|
||||
modify the way the gem is built.
|
||||
|
||||
This is done via a common configuration file that includes all of the
|
||||
workarounds for each gem.
|
||||
|
||||
This file lives at `/pkgs/development/ruby-modules/gem-config/default.nix`,
|
||||
since it already contains a lot of entries, it should be pretty easy to add the
|
||||
modifications you need for your needs.
|
||||
|
||||
In the meanwhile, or if the modification is for a private gem, you can also add
|
||||
the configuration to only your own environment.
|
||||
|
||||
Two places that allow this modification are the `ruby` derivation, or `bundlerEnv`.
|
||||
|
||||
Here's the `ruby` one:
|
||||
|
||||
```nix
|
||||
{ pg_version ? "10", pkgs ? import <nixpkgs> { } }:
|
||||
let
|
||||
myRuby = pkgs.ruby.override {
|
||||
defaultGemConfig = pkgs.defaultGemConfig // {
|
||||
pg = attrs: {
|
||||
buildFlags =
|
||||
[ "--with-pg-config=${pkgs."postgresql_${pg_version}"}/bin/pg_config" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
in myRuby.withPackages (ps: with ps; [ pg ])
|
||||
```
|
||||
|
||||
And an example with `bundlerEnv`:
|
||||
|
||||
```nix
|
||||
{ pg_version ? "10", pkgs ? import <nixpkgs> { } }:
|
||||
let
|
||||
gems = pkgs.bundlerEnv {
|
||||
name = "gems-for-some-project";
|
||||
gemdir = ./.;
|
||||
gemConfig = pkgs.defaultGemConfig // {
|
||||
pg = attrs: {
|
||||
buildFlags =
|
||||
[ "--with-pg-config=${pkgs."postgresql_${pg_version}"}/bin/pg_config" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
in mkShell { buildInputs = [ gems gems.wrappedRuby ]; }
|
||||
```
|
||||
|
||||
And finally via overlays:
|
||||
|
||||
```nix
|
||||
{ pg_version ? "10" }:
|
||||
let
|
||||
pkgs = import <nixpkgs> {
|
||||
overlays = [
|
||||
(self: super: {
|
||||
defaultGemConfig = super.defaultGemConfig // {
|
||||
pg = attrs: {
|
||||
buildFlags = [
|
||||
"--with-pg-config=${
|
||||
pkgs."postgresql_${pg_version}"
|
||||
}/bin/pg_config"
|
||||
];
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
in pkgs.ruby.withPackages (ps: with ps; [ pg ])
|
||||
```
|
||||
|
||||
Then we can get whichever postgresql version we desire and the `pg` gem will
|
||||
always reference it correctly:
|
||||
|
||||
```shell
|
||||
$ nix-shell --argstr pg_version 9_4 --run 'ruby -rpg -e "puts PG.library_version"'
|
||||
90421
|
||||
|
||||
$ nix-shell --run 'ruby -rpg -e "puts PG.library_version"'
|
||||
100007
|
||||
```
|
||||
|
||||
Of course for this use-case one could also use overlays since the configuration
|
||||
for `pg` depends on the `postgresql` alias, but for demonstration purposes this
|
||||
has to suffice.
|
||||
|
||||
#### Adding a gem to the default gemset
|
||||
|
||||
Now that you know how to get a working Ruby environment with Nix, it's time to
|
||||
go forward and start actually developing with Ruby.
|
||||
We will first have a look at how Ruby gems are packaged on Nix. Then, we will
|
||||
look at how you can use development mode with your code.
|
||||
|
||||
All gems in the standard set are automatically generated from a single
|
||||
`Gemfile`. The dependency resolution is done with `bundler` and makes it more
|
||||
likely that all gems are compatible to each other.
|
||||
|
||||
In order to add a new gem to nixpkgs, you can put it into the
|
||||
`/pkgs/development/ruby-modules/with-packages/Gemfile` and run
|
||||
`./maintainers/scripts/update-ruby-packages`.
|
||||
|
||||
To test that it works, you can then try using the gem with:
|
||||
|
||||
```shell
|
||||
NIX_PATH=nixpkgs=$PWD nix-shell -p "ruby.withPackages (ps: with ps; [ name-of-your-gem ])"
|
||||
```
|
||||
|
||||
#### Packaging applications
|
||||
|
||||
A common task is to add a ruby executable to nixpkgs, popular examples would be
|
||||
`chef`, `jekyll`, or `sass`. A good way to do that is to use the `bundlerApp`
|
||||
function, that allows you to make a package that only exposes the listed
|
||||
executables, otherwise the package may cause conflicts through common paths like
|
||||
`bin/rake` or `bin/bundler` that aren't meant to be used.
|
||||
|
||||
The absolute easiest way to do that is to write a
|
||||
`Gemfile` along these lines:
|
||||
|
||||
```ruby
|
||||
source 'https://rubygems.org' do
|
||||
gem 'mdl'
|
||||
end
|
||||
```
|
||||
|
||||
If you want to package a specific version, you can use the standard Gemfile
|
||||
syntax for that, e.g. `gem 'mdl', '0.5.0'`, but if you want the latest stable
|
||||
version anyway, it's easier to update by simply running the `bundle lock` and
|
||||
`bundix` steps again.
|
||||
|
||||
Now you can also also make a `default.nix` that looks like this:
|
||||
|
||||
```nix
|
||||
{ lib, bundlerApp }:
|
||||
|
||||
bundlerApp {
|
||||
pname = "mdl";
|
||||
gemdir = ./.;
|
||||
exes = [ "mdl" ];
|
||||
}
|
||||
```
|
||||
|
||||
All that's left to do is to generate the corresponding `Gemfile.lock` and
|
||||
`gemset.nix` as described above in the `Using an existing Gemfile` section.
|
||||
|
||||
##### Packaging executables that require wrapping
|
||||
|
||||
Sometimes your app will depend on other executables at runtime, and tries to
|
||||
find it through the `PATH` environment variable.
|
||||
|
||||
In this case, you can provide a `postBuild` hook to `bundlerApp` that wraps the
|
||||
gem in another script that prefixes the `PATH`.
|
||||
|
||||
Of course you could also make a custom `gemConfig` if you know exactly how to
|
||||
patch it, but it's usually much easier to maintain with a simple wrapper so the
|
||||
patch doesn't have to be adjusted for each version.
|
||||
|
||||
Here's another example:
|
||||
|
||||
```nix
|
||||
{ lib, bundlerApp, makeWrapper, git, gnutar, gzip }:
|
||||
|
||||
bundlerApp {
|
||||
pname = "r10k";
|
||||
gemdir = ./.;
|
||||
exes = [ "r10k" ];
|
||||
|
||||
buildInputs = [ makeWrapper ];
|
||||
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/r10k --prefix PATH : ${lib.makeBinPath [ git gnutar gzip ]}
|
||||
'';
|
||||
}
|
||||
```
|
@ -1225,11 +1225,15 @@
|
||||
githubId = 25088352;
|
||||
name = "Christian Kögler";
|
||||
};
|
||||
ckampka = {
|
||||
kampka = {
|
||||
email = "christian@kampka.net";
|
||||
github = "kampka";
|
||||
githubId = 422412;
|
||||
name = "Christian Kampka";
|
||||
keys = [{
|
||||
longkeyid = "ed25519/0x1CBE9645DD68E915";
|
||||
fingerprint = "F7FA 0BD0 8775 337C F6AB 4A14 1CBE 9645 DD68 E915";
|
||||
}];
|
||||
};
|
||||
ckauhaus = {
|
||||
email = "kc@flyingcircus.io";
|
||||
@ -1633,6 +1637,12 @@
|
||||
githubId = 10913120;
|
||||
name = "Dje4321";
|
||||
};
|
||||
dkabot = {
|
||||
email = "dkabot@dkabot.com";
|
||||
github = "dkabot";
|
||||
githubId = 1316469;
|
||||
name = "Naomi Morse";
|
||||
};
|
||||
dmalikov = {
|
||||
email = "malikov.d.y@gmail.com";
|
||||
github = "dmalikov";
|
||||
@ -3069,6 +3079,16 @@
|
||||
githubId = 8735102;
|
||||
name = "John Ramsden";
|
||||
};
|
||||
jojosch = {
|
||||
name = "Johannes Schleifenbaum";
|
||||
email = "johannes@js-webcoding.de";
|
||||
github = "jojosch";
|
||||
githubId = 327488;
|
||||
keys = [{
|
||||
longkeyid = "ed25519/059093B1A278BCD0";
|
||||
fingerprint = "7249 70E6 A661 D84E 8B47 678A 0590 93B1 A278 BCD0";
|
||||
}];
|
||||
};
|
||||
joko = {
|
||||
email = "ioannis.koutras@gmail.com";
|
||||
github = "jokogr";
|
||||
@ -4584,6 +4604,12 @@
|
||||
githubId = 9939720;
|
||||
name = "Philippe Nguyen";
|
||||
};
|
||||
nrdxp = {
|
||||
email = "tim.deh@pm.me";
|
||||
github = "nrdxp";
|
||||
githubId = 34083928;
|
||||
name = "Tim DeHerrera";
|
||||
};
|
||||
nshalman = {
|
||||
email = "nahamu@gmail.com";
|
||||
github = "nshalman";
|
||||
@ -5409,6 +5435,12 @@
|
||||
githubId = 852967;
|
||||
name = "Russell O'Connor";
|
||||
};
|
||||
roelvandijk = {
|
||||
email = "roel@lambdacube.nl";
|
||||
github = "roelvandijk";
|
||||
githubId = 710906;
|
||||
name = "Roel van Dijk";
|
||||
};
|
||||
romildo = {
|
||||
email = "malaquias@gmail.com";
|
||||
github = "romildo";
|
||||
|
13
maintainers/scripts/update-ruby-packages
Executable file
13
maintainers/scripts/update-ruby-packages
Executable file
@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p bundler bundix
|
||||
|
||||
set -euf -o pipefail
|
||||
|
||||
(
|
||||
cd pkgs/development/ruby-modules/with-packages
|
||||
rm -f gemset.nix Gemfile.lock
|
||||
bundle lock
|
||||
bundix
|
||||
mv gemset.nix ../../../top-level/ruby-packages.nix
|
||||
rm -f Gemfile.lock
|
||||
)
|
@ -135,7 +135,17 @@
|
||||
<literal>./programs/dwm-status.nix</literal>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The new <varname>hardware.printers</varname> module allows to declaratively configure CUPS printers
|
||||
via the <varname>ensurePrinters</varname> and
|
||||
<varname>ensureDefaultPrinter</varname> options.
|
||||
<varname>ensurePrinters</varname> will never delete existing printers,
|
||||
but will make sure that the given printers are configured as declared.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</section>
|
||||
|
||||
<section xmlns="http://docbook.org/ns/docbook"
|
||||
|
133
nixos/modules/hardware/openrazer.nix
Normal file
133
nixos/modules/hardware/openrazer.nix
Normal file
@ -0,0 +1,133 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.hardware.openrazer;
|
||||
kernelPackages = config.boot.kernelPackages;
|
||||
|
||||
toPyBoolStr = b: if b then "True" else "False";
|
||||
|
||||
daemonExe = "${pkgs.openrazer-daemon}/bin/openrazer-daemon --config ${daemonConfFile}";
|
||||
|
||||
daemonConfFile = pkgs.writeTextFile {
|
||||
name = "razer.conf";
|
||||
text = ''
|
||||
[General]
|
||||
verbose_logging = ${toPyBoolStr cfg.verboseLogging}
|
||||
|
||||
[Startup]
|
||||
sync_effects_enabled = ${toPyBoolStr cfg.syncEffectsEnabled}
|
||||
devices_off_on_screensaver = ${toPyBoolStr cfg.devicesOffOnScreensaver}
|
||||
mouse_battery_notifier = ${toPyBoolStr cfg.mouseBatteryNotifier}
|
||||
|
||||
[Statistics]
|
||||
key_statistics = ${toPyBoolStr cfg.keyStatistics}
|
||||
'';
|
||||
};
|
||||
|
||||
dbusServiceFile = pkgs.writeTextFile rec {
|
||||
name = "org.razer.service";
|
||||
destination = "/share/dbus-1/services/${name}";
|
||||
text = ''
|
||||
[D-BUS Service]
|
||||
Name=org.razer
|
||||
Exec=${daemonExe}
|
||||
SystemdService=openrazer-daemon.service
|
||||
'';
|
||||
};
|
||||
|
||||
drivers = [
|
||||
"razerkbd"
|
||||
"razermouse"
|
||||
"razerfirefly"
|
||||
"razerkraken"
|
||||
"razermug"
|
||||
"razercore"
|
||||
];
|
||||
in
|
||||
{
|
||||
options = {
|
||||
hardware.openrazer = {
|
||||
enable = mkEnableOption "OpenRazer drivers and userspace daemon.";
|
||||
|
||||
verboseLogging = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable verbose logging. Logs debug messages.
|
||||
'';
|
||||
};
|
||||
|
||||
syncEffectsEnabled = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Set the sync effects flag to true so any assignment of
|
||||
effects will work across devices.
|
||||
'';
|
||||
};
|
||||
|
||||
devicesOffOnScreensaver = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Turn off the devices when the systems screensaver kicks in.
|
||||
'';
|
||||
};
|
||||
|
||||
mouseBatteryNotifier = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Mouse battery notifier.
|
||||
'';
|
||||
};
|
||||
|
||||
keyStatistics = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Collects number of keypresses per hour per key used to
|
||||
generate a heatmap.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
boot.extraModulePackages = [ kernelPackages.openrazer ];
|
||||
boot.kernelModules = drivers;
|
||||
|
||||
# Makes the man pages available so you can succesfully run
|
||||
# > systemctl --user help openrazer-daemon
|
||||
environment.systemPackages = [ pkgs.python3Packages.openrazer-daemon.man ];
|
||||
|
||||
services.udev.packages = [ kernelPackages.openrazer ];
|
||||
services.dbus.packages = [ dbusServiceFile ];
|
||||
|
||||
# A user must be a member of the plugdev group in order to start
|
||||
# the openrazer-daemon. Therefore we make sure that the plugdev
|
||||
# group exists.
|
||||
users.groups.plugdev = {};
|
||||
|
||||
systemd.user.services.openrazer-daemon = {
|
||||
description = "Daemon to manage razer devices in userspace";
|
||||
unitConfig.Documentation = "man:openrazer-daemon(8)";
|
||||
# Requires a graphical session so the daemon knows when the screensaver
|
||||
# starts. See the 'devicesOffOnScreensaver' option.
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
partOf = [ "graphical-session.target" ];
|
||||
serviceConfig = {
|
||||
Type = "dbus";
|
||||
BusName = "org.razer";
|
||||
ExecStart = "${daemonExe} --foreground";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ roelvandijk ];
|
||||
};
|
||||
}
|
135
nixos/modules/hardware/printers.nix
Normal file
135
nixos/modules/hardware/printers.nix
Normal file
@ -0,0 +1,135 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.hardware.printers;
|
||||
ppdOptionsString = options: optionalString (options != {})
|
||||
(concatStringsSep " "
|
||||
(mapAttrsToList (name: value: "-o '${name}'='${value}'") options)
|
||||
);
|
||||
ensurePrinter = p: ''
|
||||
${pkgs.cups}/bin/lpadmin -p '${p.name}' -E \
|
||||
${optionalString (p.location != null) "-L '${p.location}'"} \
|
||||
${optionalString (p.description != null) "-D '${p.description}'"} \
|
||||
-v '${p.deviceUri}' \
|
||||
-m '${p.model}' \
|
||||
${ppdOptionsString p.ppdOptions}
|
||||
'';
|
||||
ensureDefaultPrinter = name: ''
|
||||
${pkgs.cups}/bin/lpoptions -d '${name}'
|
||||
'';
|
||||
|
||||
# "graph but not # or /" can't be implemented as regex alone due to missing lookahead support
|
||||
noInvalidChars = str: all (c: c != "#" && c != "/") (stringToCharacters str);
|
||||
printerName = (types.addCheck (types.strMatching "[[:graph:]]+") noInvalidChars)
|
||||
// { description = "printable string without spaces, # and /"; };
|
||||
|
||||
|
||||
in {
|
||||
options = {
|
||||
hardware.printers = {
|
||||
ensureDefaultPrinter = mkOption {
|
||||
type = types.nullOr printerName;
|
||||
default = null;
|
||||
description = ''
|
||||
Ensures the named printer is the default CUPS printer / printer queue.
|
||||
'';
|
||||
};
|
||||
ensurePrinters = mkOption {
|
||||
description = ''
|
||||
Will regularly ensure that the given CUPS printers are configured as declared here.
|
||||
If a printer's options are manually changed afterwards, they will be overwritten eventually.
|
||||
This option will never delete any printer, even if removed from this list.
|
||||
You can check existing printers with <command>lpstat -s</command>
|
||||
and remove printers with <command>lpadmin -x <printer-name></command>.
|
||||
Printers not listed here can still be manually configured.
|
||||
'';
|
||||
default = [];
|
||||
type = types.listOf (types.submodule {
|
||||
options = {
|
||||
name = mkOption {
|
||||
type = printerName;
|
||||
example = "BrotherHL_Workroom";
|
||||
description = ''
|
||||
Name of the printer / printer queue.
|
||||
May contain any printable characters except "/", "#", and space.
|
||||
'';
|
||||
};
|
||||
location = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "Workroom";
|
||||
description = ''
|
||||
Optional human-readable location.
|
||||
'';
|
||||
};
|
||||
description = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "Brother HL-5140";
|
||||
description = ''
|
||||
Optional human-readable description.
|
||||
'';
|
||||
};
|
||||
deviceUri = mkOption {
|
||||
type = types.str;
|
||||
example = [
|
||||
"ipp://printserver.local/printers/BrotherHL_Workroom"
|
||||
"usb://HP/DESKJET%20940C?serial=CN16E6C364BH"
|
||||
];
|
||||
description = ''
|
||||
How to reach the printer.
|
||||
<command>lpinfo -v</command> shows a list of supported device URIs and schemes.
|
||||
'';
|
||||
};
|
||||
model = mkOption {
|
||||
type = types.str;
|
||||
example = literalExample ''
|
||||
gutenprint.''${lib.version.majorMinor (lib.getVersion pkgs.cups)}://brother-hl-5140/expert
|
||||
'';
|
||||
description = ''
|
||||
Location of the ppd driver file for the printer.
|
||||
<command>lpinfo -m</command> shows a list of supported models.
|
||||
'';
|
||||
};
|
||||
ppdOptions = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
example = {
|
||||
"PageSize" = "A4";
|
||||
"Duplex" = "DuplexNoTumble";
|
||||
};
|
||||
default = {};
|
||||
description = ''
|
||||
Sets PPD options for the printer.
|
||||
<command>lpoptions [-p printername] -l</command> shows suported PPD options for the given printer.
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf (cfg.ensurePrinters != [] && config.services.printing.enable) {
|
||||
systemd.services."ensure-printers" = let
|
||||
cupsUnit = if config.services.printing.startWhenNeeded then "cups.socket" else "cups.service";
|
||||
in {
|
||||
description = "Ensure NixOS-configured CUPS printers";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = [ cupsUnit ];
|
||||
# in contrast to cups.socket, for cups.service, this is actually not enough,
|
||||
# as the cups service reports its activation before clients can actually interact with it.
|
||||
# Because of this, commands like `lpinfo -v` will report a bad file descriptor
|
||||
# due to the missing UNIX socket without sufficient sleep time.
|
||||
after = [ cupsUnit ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
};
|
||||
|
||||
# sleep 10 is required to wait until cups.service is actually initialized and has created its UNIX socket file
|
||||
script = (optionalString (!config.services.printing.startWhenNeeded) "sleep 10\n")
|
||||
+ (concatMapStringsSep "\n" ensurePrinter cfg.ensurePrinters)
|
||||
+ optionalString (cfg.ensureDefaultPrinter != null) (ensureDefaultPrinter cfg.ensureDefaultPrinter);
|
||||
};
|
||||
};
|
||||
}
|
@ -58,7 +58,9 @@
|
||||
./hardware/network/intel-2200bg.nix
|
||||
./hardware/nitrokey.nix
|
||||
./hardware/opengl.nix
|
||||
./hardware/openrazer.nix
|
||||
./hardware/pcmcia.nix
|
||||
./hardware/printers.nix
|
||||
./hardware/raid/hpsa.nix
|
||||
./hardware/steam-hardware.nix
|
||||
./hardware/usb-wwan.nix
|
||||
@ -281,6 +283,7 @@
|
||||
./services/databases/virtuoso.nix
|
||||
./services/desktops/accountsservice.nix
|
||||
./services/desktops/bamf.nix
|
||||
./services/desktops/blueman.nix
|
||||
./services/desktops/deepin/deepin.nix
|
||||
./services/desktops/dleyna-renderer.nix
|
||||
./services/desktops/dleyna-server.nix
|
||||
@ -698,6 +701,7 @@
|
||||
./services/networking/supybot.nix
|
||||
./services/networking/syncthing.nix
|
||||
./services/networking/syncthing-relay.nix
|
||||
./services/networking/syncplay.nix
|
||||
./services/networking/tcpcrypt.nix
|
||||
./services/networking/teamspeak3.nix
|
||||
./services/networking/tedicross.nix
|
||||
|
25
nixos/modules/services/desktops/blueman.nix
Normal file
25
nixos/modules/services/desktops/blueman.nix
Normal file
@ -0,0 +1,25 @@
|
||||
# blueman service
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.blueman;
|
||||
in {
|
||||
###### interface
|
||||
options = {
|
||||
services.blueman = {
|
||||
enable = mkEnableOption "blueman";
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.blueman ];
|
||||
|
||||
services.dbus.packages = [ pkgs.blueman ];
|
||||
|
||||
systemd.packages = [ pkgs.blueman ];
|
||||
};
|
||||
}
|
@ -22,11 +22,11 @@ with lib;
|
||||
|
||||
config = mkIf config.services.gnome3.glib-networking.enable {
|
||||
|
||||
services.dbus.packages = [ pkgs.gnome3.glib-networking ];
|
||||
services.dbus.packages = [ pkgs.glib-networking ];
|
||||
|
||||
systemd.packages = [ pkgs.gnome3.glib-networking ];
|
||||
systemd.packages = [ pkgs.glib-networking ];
|
||||
|
||||
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gnome3.glib-networking.out}/lib/gio/modules" ];
|
||||
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.glib-networking.out}/lib/gio/modules" ];
|
||||
|
||||
};
|
||||
|
||||
|
80
nixos/modules/services/networking/syncplay.nix
Normal file
80
nixos/modules/services/networking/syncplay.nix
Normal file
@ -0,0 +1,80 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.syncplay;
|
||||
|
||||
cmdArgs =
|
||||
[ "--port" cfg.port ]
|
||||
++ optionals (cfg.salt != null) [ "--salt" cfg.salt ]
|
||||
++ optionals (cfg.certDir != null) [ "--tls" cfg.certDir ];
|
||||
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.syncplay = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "If enabled, start the Syncplay server.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.int;
|
||||
default = 8999;
|
||||
description = ''
|
||||
TCP port to bind to.
|
||||
'';
|
||||
};
|
||||
|
||||
salt = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Salt to allow room operator passwords generated by this server
|
||||
instance to still work when the server is restarted.
|
||||
'';
|
||||
};
|
||||
|
||||
certDir = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
TLS certificates directory to use for encryption. See
|
||||
<link xlink:href="https://github.com/Syncplay/syncplay/wiki/TLS-support"/>.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "nobody";
|
||||
description = ''
|
||||
User to use when running Syncplay.
|
||||
'';
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "nogroup";
|
||||
description = ''
|
||||
Group to use when running Syncplay.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.syncplay = {
|
||||
description = "Syncplay Service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-online.target "];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.syncplay}/bin/syncplay-server ${escapeShellArgs cmdArgs}";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -3,7 +3,7 @@
|
||||
import ./make-test.nix ({ pkgs, ...} : {
|
||||
name = "containers-tmpfs";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ ckampka ];
|
||||
maintainers = [ kampka ];
|
||||
};
|
||||
|
||||
machine =
|
||||
|
@ -1,99 +1,114 @@
|
||||
# Test printing via CUPS.
|
||||
|
||||
import ./make-test.nix ({pkgs, ... }: {
|
||||
import ./make-test.nix ({pkgs, ... }:
|
||||
let
|
||||
printingServer = startWhenNeeded: {
|
||||
services.printing.enable = true;
|
||||
services.printing.startWhenNeeded = startWhenNeeded;
|
||||
services.printing.listenAddresses = [ "*:631" ];
|
||||
services.printing.defaultShared = true;
|
||||
services.printing.extraConf =
|
||||
''
|
||||
<Location />
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</Location>
|
||||
'';
|
||||
networking.firewall.allowedTCPPorts = [ 631 ];
|
||||
# Add a HP Deskjet printer connected via USB to the server.
|
||||
hardware.printers.ensurePrinters = [{
|
||||
name = "DeskjetLocal";
|
||||
deviceUri = "usb://foobar/printers/foobar";
|
||||
model = "drv:///sample.drv/deskjet.ppd";
|
||||
}];
|
||||
};
|
||||
printingClient = startWhenNeeded: {
|
||||
services.printing.enable = true;
|
||||
services.printing.startWhenNeeded = startWhenNeeded;
|
||||
# Add printer to the client as well, via IPP.
|
||||
hardware.printers.ensurePrinters = [{
|
||||
name = "DeskjetRemote";
|
||||
deviceUri = "ipp://${if startWhenNeeded then "socketActivatedServer" else "serviceServer"}/printers/DeskjetLocal";
|
||||
model = "drv:///sample.drv/deskjet.ppd";
|
||||
}];
|
||||
hardware.printers.ensureDefaultPrinter = "DeskjetRemote";
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
name = "printing";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ domenkozar eelco matthewbauer ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
socketActivatedServer = { ... }: (printingServer true);
|
||||
serviceServer = { ... }: (printingServer false);
|
||||
|
||||
server =
|
||||
{ ... }:
|
||||
{ services.printing.enable = true;
|
||||
services.printing.listenAddresses = [ "*:631" ];
|
||||
services.printing.defaultShared = true;
|
||||
services.printing.extraConf =
|
||||
''
|
||||
<Location />
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</Location>
|
||||
'';
|
||||
networking.firewall.allowedTCPPorts = [ 631 ];
|
||||
};
|
||||
|
||||
client =
|
||||
{ ... }:
|
||||
{ services.printing.enable = true;
|
||||
};
|
||||
|
||||
socketActivatedClient = { ... }: (printingClient true);
|
||||
serviceClient = { ... }: (printingClient false);
|
||||
};
|
||||
|
||||
testScript =
|
||||
''
|
||||
startAll;
|
||||
|
||||
$client->succeed("lpstat -r") =~ /scheduler is running/ or die;
|
||||
# check local encrypted connections work without error
|
||||
$client->succeed("lpstat -E -r") =~ /scheduler is running/ or die;
|
||||
# Test that UNIX socket is used for connections.
|
||||
$client->succeed("lpstat -H") =~ "/run/cups/cups.sock" or die;
|
||||
# Test that HTTP server is available too.
|
||||
$client->succeed("curl --fail http://localhost:631/");
|
||||
$client->succeed("curl --fail http://server:631/");
|
||||
$server->fail("curl --fail --connect-timeout 2 http://client:631/");
|
||||
|
||||
# Add a HP Deskjet printer connected via USB to the server.
|
||||
$server->succeed("lpadmin -p DeskjetLocal -E -v usb://foobar/printers/foobar");
|
||||
|
||||
# Add it to the client as well via IPP.
|
||||
$client->succeed("lpadmin -p DeskjetRemote -E -v ipp://server/printers/DeskjetLocal");
|
||||
$client->succeed("lpadmin -d DeskjetRemote");
|
||||
|
||||
# Do some status checks.
|
||||
$client->succeed("lpstat -a") =~ /DeskjetRemote accepting requests/ or die;
|
||||
$client->succeed("lpstat -h server:631 -a") =~ /DeskjetLocal accepting requests/ or die;
|
||||
$client->succeed("cupsdisable DeskjetRemote");
|
||||
$client->succeed("lpq") =~ /DeskjetRemote is not ready.*no entries/s or die;
|
||||
$client->succeed("cupsenable DeskjetRemote");
|
||||
$client->succeed("lpq") =~ /DeskjetRemote is ready.*no entries/s or die;
|
||||
|
||||
# Test printing various file types.
|
||||
foreach my $file ("${pkgs.groff.doc}/share/doc/*/examples/mom/penguin.pdf",
|
||||
"${pkgs.groff.doc}/share/doc/*/meref.ps",
|
||||
"${pkgs.cups.out}/share/doc/cups/images/cups.png",
|
||||
"${pkgs.pcre.doc}/share/doc/pcre/pcre.txt")
|
||||
{
|
||||
$file =~ /([^\/]*)$/; my $fn = $1;
|
||||
|
||||
subtest "print $fn", sub {
|
||||
|
||||
# Print the file on the client.
|
||||
$client->succeed("lp $file");
|
||||
$client->sleep(10);
|
||||
$client->succeed("lpq") =~ /active.*root.*$fn/ or die;
|
||||
|
||||
# Ensure that a raw PCL file appeared in the server's queue
|
||||
# (showing that the right filters have been applied). Of
|
||||
# course, since there is no actual USB printer attached, the
|
||||
# file will stay in the queue forever.
|
||||
$server->waitForFile("/var/spool/cups/d*-001");
|
||||
$server->sleep(10);
|
||||
$server->succeed("lpq -a") =~ /$fn/ or die;
|
||||
|
||||
# Delete the job on the client. It should disappear on the
|
||||
# server as well.
|
||||
$client->succeed("lprm");
|
||||
$client->sleep(10);
|
||||
$client->succeed("lpq -a") =~ /no entries/;
|
||||
Machine::retry sub {
|
||||
return 1 if $server->succeed("lpq -a") =~ /no entries/;
|
||||
# Make sure that cups is up on both sides.
|
||||
$serviceServer->waitForUnit("cups.service");
|
||||
$serviceClient->waitForUnit("cups.service");
|
||||
# wait until cups is fully initialized and ensure-printers has executed with 10s delay
|
||||
$serviceClient->sleep(20);
|
||||
$socketActivatedClient->waitUntilSucceeds("systemctl status ensure-printers | grep -q -E 'code=exited, status=0/SUCCESS'");
|
||||
sub testPrinting {
|
||||
my ($client, $server) = (@_);
|
||||
my $clientHostname = $client->name();
|
||||
my $serverHostname = $server->name();
|
||||
$client->succeed("lpstat -r") =~ /scheduler is running/ or die;
|
||||
# Test that UNIX socket is used for connections.
|
||||
$client->succeed("lpstat -H") =~ "/var/run/cups/cups.sock" or die;
|
||||
# Test that HTTP server is available too.
|
||||
$client->succeed("curl --fail http://localhost:631/");
|
||||
$client->succeed("curl --fail http://$serverHostname:631/");
|
||||
$server->fail("curl --fail --connect-timeout 2 http://$clientHostname:631/");
|
||||
# Do some status checks.
|
||||
$client->succeed("lpstat -a") =~ /DeskjetRemote accepting requests/ or die;
|
||||
$client->succeed("lpstat -h $serverHostname:631 -a") =~ /DeskjetLocal accepting requests/ or die;
|
||||
$client->succeed("cupsdisable DeskjetRemote");
|
||||
$client->succeed("lpq") =~ /DeskjetRemote is not ready.*no entries/s or die;
|
||||
$client->succeed("cupsenable DeskjetRemote");
|
||||
$client->succeed("lpq") =~ /DeskjetRemote is ready.*no entries/s or die;
|
||||
# Test printing various file types.
|
||||
foreach my $file ("${pkgs.groff.doc}/share/doc/*/examples/mom/penguin.pdf",
|
||||
"${pkgs.groff.doc}/share/doc/*/meref.ps",
|
||||
"${pkgs.cups.out}/share/doc/cups/images/cups.png",
|
||||
"${pkgs.pcre.doc}/share/doc/pcre/pcre.txt")
|
||||
{
|
||||
$file =~ /([^\/]*)$/; my $fn = $1;
|
||||
subtest "print $fn", sub {
|
||||
# Print the file on the client.
|
||||
$client->succeed("lp $file");
|
||||
$client->waitUntilSucceeds("lpq | grep -q -E 'active.*root.*$fn'");
|
||||
# Ensure that a raw PCL file appeared in the server's queue
|
||||
# (showing that the right filters have been applied). Of
|
||||
# course, since there is no actual USB printer attached, the
|
||||
# file will stay in the queue forever.
|
||||
$server->waitForFile("/var/spool/cups/d*-001");
|
||||
$server->waitUntilSucceeds("lpq -a | grep -q -E '$fn'");
|
||||
# Delete the job on the client. It should disappear on the
|
||||
# server as well.
|
||||
$client->succeed("lprm");
|
||||
$client->waitUntilSucceeds("lpq -a | grep -q -E 'no entries'");
|
||||
Machine::retry sub {
|
||||
return 1 if $server->succeed("lpq -a") =~ /no entries/;
|
||||
};
|
||||
# The queue is empty already, so this should be safe.
|
||||
# Otherwise, pairs of "c*"-"d*-001" files might persist.
|
||||
$server->execute("rm /var/spool/cups/*");
|
||||
};
|
||||
# The queue is empty already, so this should be safe.
|
||||
# Otherwise, pairs of "c*"-"d*-001" files might persist.
|
||||
$server->execute("rm /var/spool/cups/*");
|
||||
};
|
||||
}
|
||||
}
|
||||
'';
|
||||
testPrinting($serviceClient, $serviceServer);
|
||||
testPrinting($socketActivatedClient, $socketActivatedServer);
|
||||
'';
|
||||
})
|
||||
|
@ -6,11 +6,11 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "musescore";
|
||||
version = "3.0.5";
|
||||
version = "3.2.3";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://download.musescore.com/releases/MuseScore-${version}/MuseScore-${version}.zip";
|
||||
sha256 = "1pbf6v0l3nixxr8k5igwhj09wnqvw92av6q6yjrbb3kyjh5br2d8";
|
||||
url = "https://github.com/musescore/MuseScore/releases/download/v${version}/MuseScore-${version}.zip";
|
||||
sha256 = "17mr0c8whw6vz86lp1j36rams4h8virc4z68fld0q3rpq6g05szs";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchurl, cmake, pkgconfig, xlibsWrapper
|
||||
{ stdenv, mkDerivation, fetchurl, cmake, pkgconfig, xlibsWrapper
|
||||
, qtbase, qttools, qtmultimedia, qtx11extras
|
||||
# transports
|
||||
, curl, libmms
|
||||
@ -28,7 +28,7 @@
|
||||
# Qmmp installs working .desktop file(s) all by itself, so we don't need to
|
||||
# handle that.
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
mkDerivation rec {
|
||||
name = "qmmp-1.3.3";
|
||||
|
||||
src = fetchurl {
|
||||
|
@ -1,46 +1,82 @@
|
||||
{ stdenv, fetchurl, cmake, qt5, zlib, taglib, pkgconfig, pcre, gst_all_1 }:
|
||||
{ mkDerivation
|
||||
, cmake
|
||||
, fetchgit
|
||||
, gst_all_1
|
||||
, lib
|
||||
, libpulseaudio
|
||||
, ninja
|
||||
, pcre
|
||||
, pkgconfig
|
||||
, qtbase
|
||||
, qttools
|
||||
, taglib
|
||||
, zlib
|
||||
}:
|
||||
|
||||
let
|
||||
version = "1.1.1-git1-20180828";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
mkDerivation rec {
|
||||
pname = "sayonara-player";
|
||||
inherit version;
|
||||
version = "1.5.1-stable5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://sayonara-player.com/sw/sayonara-player-${version}.tar.gz";
|
||||
sha256 = "0rvy47qvavrp03zjdrw025dmq9fq5aaii3q1qq8b94byarl0c5kn";
|
||||
src = fetchgit {
|
||||
url = "https://git.sayonara-player.com/sayonara.git";
|
||||
rev = version;
|
||||
sha256 = "13l7r3gaszrkyf4z8rdijfzxvcnilax4ki2mcm30wqk8d4g4qdzj";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkgconfig ];
|
||||
buildInputs = with qt5; with gst_all_1;
|
||||
[ gstreamer gst-plugins-base gst-plugins-good gst-plugins-ugly
|
||||
pcre qtbase qttools taglib zlib
|
||||
];
|
||||
|
||||
# CMake Error at src/GUI/Resources/Icons/cmake_install.cmake:49 (file):
|
||||
# file cannot create directory: /usr/share/icons. Maybe need administrative
|
||||
# privileges.
|
||||
# Call Stack (most recent call first):
|
||||
# src/GUI/Resources/cmake_install.cmake:50 (include)
|
||||
# src/GUI/cmake_install.cmake:50 (include)
|
||||
# src/cmake_install.cmake:59 (include)
|
||||
# cmake_install.cmake:42 (include)
|
||||
# all this can go with version 1.5.2
|
||||
postPatch = ''
|
||||
substituteInPlace src/GUI/Resources/Icons/CMakeLists.txt \
|
||||
--replace "/usr/share" "$out/share"
|
||||
# if we don't delete this, sayonara will look here instead of the provided taglib
|
||||
rm -r src/3rdParty/taglib
|
||||
|
||||
for f in \
|
||||
src/DBus/DBusNotifications.cpp \
|
||||
src/Gui/Resources/Icons/CMakeLists.txt \
|
||||
src/Utils/Utils.cpp \
|
||||
test/Util/FileHelperTest.cpp \
|
||||
; do
|
||||
|
||||
substituteInPlace $f --replace /usr $out
|
||||
done
|
||||
|
||||
substituteInPlace src/Components/Shutdown/Shutdown.cpp \
|
||||
--replace /usr/bin/systemctl systemctl
|
||||
'';
|
||||
|
||||
# [ 65%] Building CXX object src/Components/Engine/CMakeFiles/say_comp_engine.dir/AbstractPipeline.cpp.o
|
||||
# /tmp/nix-build-sayonara-player-1.0.0-git5-20180115.drv-0/sayonara-player/src/Components/Engine/AbstractPipeline.cpp:28:32: fatal error: gst/app/gstappsink.h: No such file or directory
|
||||
# #include <gst/app/gstappsink.h>
|
||||
nativeBuildInputs = [ cmake ninja pkgconfig qttools ];
|
||||
|
||||
buildInputs = [
|
||||
libpulseaudio
|
||||
pcre
|
||||
qtbase
|
||||
taglib
|
||||
zlib
|
||||
]
|
||||
++ (with gst_all_1; [
|
||||
gstreamer
|
||||
gst-plugins-base
|
||||
gst-plugins-good
|
||||
gst-plugins-bad
|
||||
gst-plugins-ugly
|
||||
]);
|
||||
|
||||
# we carry the patched taglib 1.11.1 that doesn't break ogg but sayonara just
|
||||
# checks for the version
|
||||
cmakeFlags = [
|
||||
"-DWITH_SYSTEM_TAGLIB=ON"
|
||||
];
|
||||
|
||||
# gstreamer cannot otherwise be found
|
||||
NIX_CFLAGS_COMPILE = "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0";
|
||||
|
||||
meta = with stdenv.lib;
|
||||
{ description = "Sayonara music player";
|
||||
homepage = https://sayonara-player.com/;
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.deepfire ];
|
||||
};
|
||||
postInstall = ''
|
||||
qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Sayonara music player";
|
||||
homepage = "https://sayonara-player.com/";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ deepfire ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -78,8 +78,6 @@ stdenv.mkDerivation {
|
||||
|
||||
buildInputs = [ squashfsTools makeWrapper ];
|
||||
|
||||
doConfigure = false;
|
||||
doBuild = false;
|
||||
dontStrip = true;
|
||||
dontPatchELF = true;
|
||||
|
||||
|
91
pkgs/applications/audio/strawberry/default.nix
Normal file
91
pkgs/applications/audio/strawberry/default.nix
Normal file
@ -0,0 +1,91 @@
|
||||
{ mkDerivation
|
||||
, stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkgconfig
|
||||
, alsaLib
|
||||
, boost
|
||||
, chromaprint
|
||||
, fftw
|
||||
, gnutls
|
||||
, libcdio
|
||||
, libmtp
|
||||
, libpthreadstubs
|
||||
, libtasn1
|
||||
, libXdmcp
|
||||
, pcre
|
||||
, protobuf
|
||||
, sqlite
|
||||
, taglib
|
||||
, libpulseaudio ? null
|
||||
, libselinux ? null
|
||||
, libsepol ? null
|
||||
, p11_kit ? null
|
||||
, utillinux ? null
|
||||
, qtbase
|
||||
, qtx11extras
|
||||
, qttools
|
||||
, withGstreamer ? true
|
||||
, gst_all_1 ? null
|
||||
, withVlc ? true
|
||||
, vlc ? null
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "strawberry";
|
||||
version = "0.6.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jonaski";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "01j5jzzicy895kg9sjy46lbcm5kvf3642d3q5wwb2fyvyq1fbcv0";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
alsaLib
|
||||
boost
|
||||
chromaprint
|
||||
fftw
|
||||
gnutls
|
||||
libcdio
|
||||
libmtp
|
||||
libpthreadstubs
|
||||
libtasn1
|
||||
libXdmcp
|
||||
pcre
|
||||
protobuf
|
||||
sqlite
|
||||
taglib
|
||||
qtbase
|
||||
qtx11extras
|
||||
]
|
||||
++ lib.optionals stdenv.isLinux [
|
||||
libpulseaudio
|
||||
libselinux
|
||||
libsepol
|
||||
p11_kit
|
||||
utillinux
|
||||
]
|
||||
++ lib.optionals withGstreamer (with gst_all_1; [
|
||||
gstreamer
|
||||
gst-plugins-base
|
||||
gst-plugins-good
|
||||
])
|
||||
++ lib.optional withVlc vlc;
|
||||
|
||||
nativeBuildInputs = [ cmake pkgconfig qttools ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DUSE_SYSTEM_TAGLIB=ON"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Music player and music collection organizer";
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ peterhoeg ];
|
||||
# upstream says darwin should work but they lack maintainers as of 0.6.3
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "go-ethereum";
|
||||
version = "1.9.2";
|
||||
version = "1.9.3";
|
||||
|
||||
goPackagePath = "github.com/ethereum/go-ethereum";
|
||||
|
||||
@ -17,7 +17,7 @@ buildGoPackage rec {
|
||||
owner = "ethereum";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0lymwylh4j63fzj9jy7mcw676a2ksgpsj9mazif1r3d2q73h9m88";
|
||||
sha256 = "0lv6gxp34j26hqazcvyr4c7rsl1vljm6cfzkcmlapsjdgym505bg";
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
|
||||
++ optional withQt5 "--enable-liblightdm-qt5";
|
||||
|
||||
installFlags = [
|
||||
"sysconfdir=${placeholder ''out''}/etc"
|
||||
"sysconfdir=${placeholder "out"}/etc"
|
||||
"localstatedir=\${TMPDIR}"
|
||||
];
|
||||
|
||||
|
@ -1,5 +0,0 @@
|
||||
{ parinfer-rust }:
|
||||
|
||||
{
|
||||
inherit parinfer-rust;
|
||||
}
|
11
pkgs/applications/editors/kakoune/plugins/default.nix
Normal file
11
pkgs/applications/editors/kakoune/plugins/default.nix
Normal file
@ -0,0 +1,11 @@
|
||||
{ pkgs, parinfer-rust }:
|
||||
|
||||
{
|
||||
inherit parinfer-rust;
|
||||
|
||||
kak-auto-pairs = pkgs.callPackage ./kak-auto-pairs.nix { };
|
||||
kak-buffers = pkgs.callPackage ./kak-buffers.nix { };
|
||||
kak-fzf = pkgs.callPackage ./kak-fzf.nix { };
|
||||
kak-powerline = pkgs.callPackage ./kak-powerline.nix { };
|
||||
kak-vertical-selection = pkgs.callPackage ./kak-vertical-selection.nix { };
|
||||
}
|
24
pkgs/applications/editors/kakoune/plugins/kak-auto-pairs.nix
Normal file
24
pkgs/applications/editors/kakoune/plugins/kak-auto-pairs.nix
Normal file
@ -0,0 +1,24 @@
|
||||
{ stdenv, fetchFromGitHub }:
|
||||
stdenv.mkDerivation {
|
||||
name = "kak-auto-pairs";
|
||||
version = "2019-07-27";
|
||||
src = fetchFromGitHub {
|
||||
owner = "alexherbo2";
|
||||
repo = "auto-pairs.kak";
|
||||
rev = "886449b1a04d43e5deb2f0ef4b1aead6084c7a5f";
|
||||
sha256 = "0knfhdvslzw1f1r1k16733yhkczrg3yijjz6n2qwira84iv3239j";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/kak/autoload/plugins
|
||||
cp -r rc $out/share/kak/autoload/plugins/auto-pairs
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib;
|
||||
{ description = "Kakoune extension to enable automatic closing of pairs";
|
||||
homepage = "https://github.com/alexherbo2/auto-pairs.kak";
|
||||
license = licenses.publicDoman;
|
||||
maintainers = with maintainers; [ nrdxp ];
|
||||
platform = platforms.all;
|
||||
};
|
||||
}
|
24
pkgs/applications/editors/kakoune/plugins/kak-buffers.nix
Normal file
24
pkgs/applications/editors/kakoune/plugins/kak-buffers.nix
Normal file
@ -0,0 +1,24 @@
|
||||
{ stdenv, fetchFromGitHub }:
|
||||
stdenv.mkDerivation {
|
||||
name = "kak-buffers";
|
||||
version = "2019-04-03";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Delapouite";
|
||||
repo = "kakoune-buffers";
|
||||
rev = "3b35b23ac2be661a37c085d34dd04d066450f757";
|
||||
sha256 = "0f3g0v1sjinii3ig9753jjj35v2km4h9bcfw9xgzwz8b10d75bax";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/kak/autoload/plugins
|
||||
cp -r buffers.kak $out/share/kak/autoload/plugins
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib;
|
||||
{ description = "Ease navigation between opened buffers in Kakoune";
|
||||
homepage = "https://github.com/Delapouite/kakoune-buffers";
|
||||
license = licenses.publicDoman;
|
||||
maintainers = with maintainers; [ nrdxp ];
|
||||
platform = platforms.all;
|
||||
};
|
||||
}
|
38
pkgs/applications/editors/kakoune/plugins/kak-fzf.nix
Normal file
38
pkgs/applications/editors/kakoune/plugins/kak-fzf.nix
Normal file
@ -0,0 +1,38 @@
|
||||
{ stdenv, fetchFromGitHub, fzf }:
|
||||
|
||||
assert stdenv.lib.asserts.assertOneOf "fzf" fzf.pname [ "fzf" "skim" ];
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "kak-fzf";
|
||||
version = "2019-07-16";
|
||||
src = fetchFromGitHub {
|
||||
owner = "andreyorst";
|
||||
repo = "fzf.kak";
|
||||
rev = "ede90d3e02bceb714f997adfcbab8260b42e0a19";
|
||||
sha256 = "18w90j3fpk2ddn68497s33n66aap8phw5636y1r7pqsa641zdxcv";
|
||||
};
|
||||
|
||||
configurePhase = ''
|
||||
if [[ -x "${fzf}/bin/fzf" ]]; then
|
||||
fzfImpl='${fzf}/bin/fzf'
|
||||
else
|
||||
fzfImpl='${fzf}/bin/sk'
|
||||
fi
|
||||
|
||||
substituteInPlace rc/fzf.kak \
|
||||
--replace \'fzf\' \'"$fzfImpl"\'
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/kak/autoload/plugins
|
||||
cp -r rc $out/share/kak/autoload/plugins/fzf
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib;
|
||||
{ description = "Kakoune plugin that brings integration with fzf";
|
||||
homepage = "https://github.com/andreyorst/fzf.kak";
|
||||
license = licenses.publicDoman;
|
||||
maintainers = with maintainers; [ nrdxp ];
|
||||
platform = platforms.all;
|
||||
};
|
||||
}
|
29
pkgs/applications/editors/kakoune/plugins/kak-powerline.nix
Normal file
29
pkgs/applications/editors/kakoune/plugins/kak-powerline.nix
Normal file
@ -0,0 +1,29 @@
|
||||
{ stdenv, git, fetchFromGitHub }:
|
||||
stdenv.mkDerivation {
|
||||
name = "kak-powerline";
|
||||
version = "2019-07-23";
|
||||
src = fetchFromGitHub {
|
||||
owner = "andreyorst";
|
||||
repo = "powerline.kak";
|
||||
rev = "82b01eb6c97c7380b7da253db1fd484a5de13ea4";
|
||||
sha256 = "1480wp2jc7c84z1wqmpf09lzny6kbnbhiiym2ffaddxrd4ns9i6z";
|
||||
};
|
||||
|
||||
configurePhase = ''
|
||||
substituteInPlace rc/modules/git.kak \
|
||||
--replace \'git\' \'${git}/bin/git\'
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/kak/autoload/plugins
|
||||
cp -r rc $out/share/kak/autoload/plugins/powerline
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib;
|
||||
{ description = "Kakoune modeline, but with passion";
|
||||
homepage = "https://github.com/andreyorst/powerline.kak";
|
||||
license = licenses.publicDoman;
|
||||
maintainers = with maintainers; [ nrdxp ];
|
||||
platform = platforms.all;
|
||||
};
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
{ stdenv, fetchFromGitHub }:
|
||||
stdenv.mkDerivation {
|
||||
name = "kak-vertical-selection";
|
||||
version = "2019-04-11";
|
||||
src = fetchFromGitHub {
|
||||
owner = "occivink";
|
||||
repo = "kakoune-vertical-selection";
|
||||
rev = "c420f8b867ce47375fac303886e31623669a42b7";
|
||||
sha256 = "13jdyd2j45wvgqvxdzw9zww14ly93bqjb6700zzxj7mkbiff6wsb";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/kak/autoload/plugins
|
||||
cp -r vertical-selection.kak $out/share/kak/autoload/plugins
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib;
|
||||
{ description = "Select up and down lines that match the same pattern in Kakoune";
|
||||
homepage = "https://github.com/occivink/kakoune-vertical-selection";
|
||||
license = licenses.publicDoman;
|
||||
maintainers = with maintainers; [ nrdxp ];
|
||||
platform = platforms.all;
|
||||
};
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
{ lib, fetchFromGitHub }:
|
||||
rec {
|
||||
version = "8.1.1866";
|
||||
version = "8.1.1967";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vim";
|
||||
repo = "vim";
|
||||
rev = "v${version}";
|
||||
sha256 = "00db529ynin71b5drch9rd9l85bcqdpbsl3mcc0xnv770f97sa0w";
|
||||
sha256 = "0cdfi67jwv8j982i1jxdfqv4aqglig8f0hzadgygk69i0wwkymwk";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
@ -26,11 +26,10 @@ stdenv.mkDerivation rec {
|
||||
url = https://github.com/EUA/wxHexEditor/commit/d0fa3ddc3e9dc9b05f90b650991ef134f74eed01.patch;
|
||||
sha256 = "1wcb70hrnhq72frj89prcqylpqs74xrfz3kdfdkq84p5qfz9svyj";
|
||||
})
|
||||
./missing-semicolon.patch
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
make OPTFLAGS="-fopenmp"
|
||||
'';
|
||||
makeFlags = [ "OPTFLAGS=-fopenmp" ];
|
||||
|
||||
meta = {
|
||||
description = "Hex Editor / Disk Editor for Huge Files or Devices";
|
||||
|
@ -0,0 +1,35 @@
|
||||
diff --git a/src/HexDialogs.cpp b/src/HexDialogs.cpp
|
||||
index 091a6f9..12e6a78 100644
|
||||
--- a/src/HexDialogs.cpp
|
||||
+++ b/src/HexDialogs.cpp
|
||||
@@ -420,7 +420,7 @@ void FindDialog::OnChar( wxKeyEvent& event ){
|
||||
}
|
||||
|
||||
void FindDialog::EventHandler( wxCommandEvent& event ){
|
||||
- WX_CLEAR_ARRAY(parent->HighlightArray )
|
||||
+ WX_CLEAR_ARRAY(parent->HighlightArray );
|
||||
parent->HighlightArray.Shrink();
|
||||
|
||||
if( event.GetId() == btnFind->GetId())
|
||||
diff --git a/src/HexEditorCtrl/HexEditorCtrl.cpp b/src/HexEditorCtrl/HexEditorCtrl.cpp
|
||||
index 7a3b0e2..f12097f 100644
|
||||
--- a/src/HexEditorCtrl/HexEditorCtrl.cpp
|
||||
+++ b/src/HexEditorCtrl/HexEditorCtrl.cpp
|
||||
@@ -64,9 +64,9 @@ HexEditorCtrl::~HexEditorCtrl( void ){
|
||||
Dynamic_Disconnector();
|
||||
Clear();
|
||||
|
||||
- WX_CLEAR_ARRAY(MainTagArray)
|
||||
- WX_CLEAR_ARRAY(HighlightArray)
|
||||
- WX_CLEAR_ARRAY(CompareArray)
|
||||
+ WX_CLEAR_ARRAY(MainTagArray);
|
||||
+ WX_CLEAR_ARRAY(HighlightArray);
|
||||
+ WX_CLEAR_ARRAY(CompareArray);
|
||||
|
||||
MainTagArray.Shrink();
|
||||
HighlightArray.Shrink();
|
||||
@@ -1224,4 +1224,3 @@ void wxHugeScrollBar::OnOffsetScroll( wxScrollEvent& event ){
|
||||
#endif
|
||||
event.Skip();
|
||||
}
|
||||
-
|
38
pkgs/applications/graphics/azpainter/default.nix
Normal file
38
pkgs/applications/graphics/azpainter/default.nix
Normal file
@ -0,0 +1,38 @@
|
||||
{ stdenv, fetchFromGitHub, autoreconfHook
|
||||
, libX11, libXext, libXi
|
||||
, freetype, fontconfig
|
||||
, libpng, libjpeg
|
||||
, zlib
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "azpainter";
|
||||
version = "2.1.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Symbian9";
|
||||
repo = pname;
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "1hrr9lhsbjyzar3nxvli6cazr7zhyzh0p8hwpg4g9ga6njs8vi8m";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook ];
|
||||
|
||||
buildInputs = [
|
||||
libX11 libXext libXi
|
||||
freetype fontconfig
|
||||
libpng libjpeg
|
||||
zlib
|
||||
];
|
||||
|
||||
configureFlags = [
|
||||
"--with-freetype-dir=${stdenv.lib.getDev freetype}/include/freetype2"
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Full color painting software for illustration drawing";
|
||||
homepage = "https://osdn.net/projects/azpainter";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ dtzWill ];
|
||||
};
|
||||
}
|
@ -7,7 +7,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dbeaver-ce";
|
||||
version = "6.1.4";
|
||||
version = "6.1.5";
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "dbeaver";
|
||||
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz";
|
||||
sha256 = "1l4skcannbzddhm773dm3hwv3a7b3xy569gydcfczgdlgzgmlfjq";
|
||||
sha256 = "0lkycm1152wd56i1hjq7q3sd05h51fyz99qr2n65lwi33vz2qk9m";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
@ -65,6 +65,6 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
license = licenses.asl20;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = [ maintainers.samueldr ];
|
||||
maintainers = [ maintainers.jojosch ];
|
||||
};
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
{ stdenv, fetchgit, cmake, file, qtbase, qttools, solid }:
|
||||
{ stdenv, mkDerivation, fetchgit, cmake, file, qtbase, qttools, solid }:
|
||||
|
||||
let
|
||||
version = "git-2016-01-10";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
mkDerivation {
|
||||
pname = "dfilemanager";
|
||||
inherit version;
|
||||
src = fetchgit {
|
||||
@ -14,7 +14,7 @@ stdenv.mkDerivation {
|
||||
|
||||
buildInputs = [ cmake qtbase qttools file solid ];
|
||||
|
||||
cmakeFlags = "-DQT5BUILD=true";
|
||||
cmakeFlags = [ "-DQT5BUILD=true" ];
|
||||
|
||||
meta = {
|
||||
homepage = http://dfilemanager.sourceforge.net/;
|
||||
|
@ -1,14 +1,15 @@
|
||||
{ stdenv, fetchgit, autoreconfHook, pkgconfig, libxml2 }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "evtest-1.33";
|
||||
pname = "evtest";
|
||||
version = "1.34";
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||
buildInputs = [ libxml2 ];
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://anongit.freedesktop.org/evtest";
|
||||
rev = "refs/tags/evtest-1.33";
|
||||
url = "git://anongit.freedesktop.org/${pname}";
|
||||
rev = "refs/tags/${pname}-${version}";
|
||||
sha256 = "168gdhzj11f4nk94a6z696sm8v1njzwww69bn6wr97l17897913g";
|
||||
};
|
||||
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "gallery_dl";
|
||||
version = "1.10.2";
|
||||
version = "1.10.3";
|
||||
|
||||
src = python3Packages.fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "09q9l747vv6nrkscj08dv970qs6nm2azjcm015xf3bd5ab91l44r";
|
||||
sha256 = "1ippn0zbjy69n178vh4wgyzy6723ynvj2w23mzqw7v2mzcvkhmdz";
|
||||
};
|
||||
|
||||
doCheck = false;
|
||||
|
@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
makeFlags = [
|
||||
"prefix=${placeholder ''out''}"
|
||||
"prefix=${placeholder "out"}"
|
||||
"GTK=3"
|
||||
"CC=cc"
|
||||
"CXX=c++"
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "josm";
|
||||
version = "15238";
|
||||
version = "15322";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
|
||||
sha256 = "0zh84glb4545av0s1qnccqqp8nrnfsr7rnwgbqpwwzvc2ngk91gv";
|
||||
sha256 = "1i6cxs6rvqjwh7yfji5701xdzpnaxcv97gsd692fjrwasnsx1f1i";
|
||||
};
|
||||
|
||||
buildInputs = [ jdk11 makeWrapper ];
|
||||
|
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
|
||||
patches = [ add-apocrypha add-install-target ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=${placeholder ''out''}"
|
||||
"PREFIX=${placeholder "out"}"
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -64,8 +64,8 @@ stdenv.mkDerivation rec {
|
||||
|
||||
# fix paths
|
||||
makeFlags = [
|
||||
"INTROSPECTION_GIRDIR=${placeholder ''out''}/share/gir-1.0/"
|
||||
"INTROSPECTION_TYPELIBDIR=${placeholder ''out''}/lib/girepository-1.0"
|
||||
"INTROSPECTION_GIRDIR=${placeholder "out"}/share/gir-1.0/"
|
||||
"INTROSPECTION_TYPELIBDIR=${placeholder "out"}/lib/girepository-1.0"
|
||||
];
|
||||
|
||||
# Make plank's application launcher hidden in Pantheon
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, lib, fetchurl
|
||||
{ stdenv, lib, fetchurl, makeWrapper
|
||||
, autoreconfHook, pkgconfig, libxkbcommon, pango, which, git
|
||||
, cairo, libxcb, xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification
|
||||
, bison, flex, librsvg, check
|
||||
@ -19,11 +19,16 @@ stdenv.mkDerivation rec {
|
||||
sed -i 's/~root/~nobody/g' test/helper-expand.c
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper ];
|
||||
buildInputs = [ libxkbcommon pango cairo git bison flex librsvg check
|
||||
libstartup_notification libxcb xcbutil xcbutilwm xcbutilxrm which
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/rofi-theme-selector \
|
||||
--prefix XDG_DATA_DIRS : $out/share
|
||||
'';
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -1,55 +1,40 @@
|
||||
{ stdenv, fetchurl, docbook_xsl, dbus, dbus-glib, expat
|
||||
, gsettings-desktop-schemas, gdk-pixbuf, gtk3, hicolor-icon-theme
|
||||
, imagemagick, itstool, librsvg, libtool, libxslt, makeWrapper
|
||||
, pkgconfig, python, pythonPackages, vte
|
||||
, wrapGAppsHook}:
|
||||
{ at-spi2-core, cmake, dbus, dbus-glib, docbook_xsl, epoxy, fetchpatch, fetchFromGitHub
|
||||
, glib, gtk3, harfbuzz, hicolor-icon-theme, libXdmcp, libXtst, libpthreadstubs
|
||||
, libselinux, libsepol, libtasn1, libxkbcommon, libxslt, p11-kit, pcre
|
||||
, pkgconfig, stdenv, utillinuxMinimal, vte, wrapGAppsHook, xmlto
|
||||
}:
|
||||
|
||||
# TODO: Still getting following warning.
|
||||
# WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
|
||||
# Seems related to this:
|
||||
# https://forums.gentoo.org/viewtopic-t-947210-start-0.html
|
||||
|
||||
let version = "3.3.2";
|
||||
in stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "roxterm";
|
||||
inherit version;
|
||||
version = "3.7.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/roxterm/${pname}-${version}.tar.xz";
|
||||
sha256 = "0vjh7k4jm4bd01j88w9bmvq27zqsajjzy131fpi81zkii5lisl1k";
|
||||
src = fetchFromGitHub {
|
||||
owner = "realh";
|
||||
repo = "roxterm";
|
||||
rev = version;
|
||||
sha256 = "042hchvgk9jzz035zsgnfhh8105zvspbzz6b78waylsdlgqn0pp1";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||
|
||||
buildInputs =
|
||||
[ docbook_xsl expat imagemagick itstool librsvg libtool libxslt
|
||||
makeWrapper python pythonPackages.lockfile dbus dbus-glib
|
||||
gdk-pixbuf gsettings-desktop-schemas gtk3
|
||||
hicolor-icon-theme vte ];
|
||||
|
||||
NIX_CFLAGS_COMPILE = [ "-I${dbus-glib.dev}/include/dbus-1.0"
|
||||
"-I${dbus.dev}/include/dbus-1.0"
|
||||
"-I${dbus.lib}/lib/dbus-1.0/include" ];
|
||||
|
||||
# Fix up python path so the lockfile library is on it.
|
||||
PYTHONPATH = stdenv.lib.makeSearchPathOutput "lib" python.sitePackages [
|
||||
pythonPackages.lockfile
|
||||
patches = [
|
||||
# This is the commit directly after v3.7.5. It is needed to get roxterm to
|
||||
# build correctly. It can be removed when v3.7.6 (or v3.8.0) has been
|
||||
# released.
|
||||
(fetchpatch {
|
||||
url = "https://github.com/realh/roxterm/commit/f7c38fd48bd1810e16d82794bdfb61a9760a2fe1.patch";
|
||||
sha256 = "1v77b7ilgf8zy1npxxcyc06mq6lck6bi6lw4aksnq3mi61n5znmx";
|
||||
})
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
# Fix up the LD_LIBRARY_PATH so that expat is on it
|
||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${expat.out}/lib"
|
||||
nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook libxslt ];
|
||||
|
||||
python mscript.py configure --prefix="$out" --disable-nls --disable-translations
|
||||
python mscript.py build
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
python mscript.py install
|
||||
'';
|
||||
buildInputs =
|
||||
[ gtk3 dbus dbus-glib vte pcre harfbuzz libpthreadstubs libXdmcp
|
||||
utillinuxMinimal glib hicolor-icon-theme docbook_xsl xmlto libselinux
|
||||
libsepol libxkbcommon epoxy at-spi2-core libXtst libtasn1 p11-kit
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://roxterm.sourceforge.net/;
|
||||
homepage = "https://github.com/realh/roxterm";
|
||||
license = licenses.gpl3;
|
||||
description = "Tabbed, VTE-based terminal emulator";
|
||||
longDescription = ''
|
||||
|
@ -14,9 +14,9 @@ stdenv.mkDerivation rec {
|
||||
nativeBuildInputs = [ cmake pkgconfig ];
|
||||
buildInputs = [ glib pcre json-glib ];
|
||||
cmakeFlags = [
|
||||
"-DCHROMIUM_MANIFEST_DESTINATION=${placeholder ''out''}/etc/chromium/native-messaging-hosts"
|
||||
"-DCHROME_MANIFEST_DESTINATION=${placeholder ''out''}/etc/opt/chrome/native-messaging-hosts"
|
||||
"-DFIREFOX_MANIFEST_DESTINATION=${placeholder ''out''}/lib/mozilla/native-messaging-hosts"
|
||||
"-DCHROMIUM_MANIFEST_DESTINATION=${placeholder "out"}/etc/chromium/native-messaging-hosts"
|
||||
"-DCHROME_MANIFEST_DESTINATION=${placeholder "out"}/etc/opt/chrome/native-messaging-hosts"
|
||||
"-DFIREFOX_MANIFEST_DESTINATION=${placeholder "out"}/lib/mozilla/native-messaging-hosts"
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -5,13 +5,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "wtf";
|
||||
version = "0.20.0";
|
||||
version = "0.21.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wtfutil";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "03k3x3fnxz23b75n5x8mlr6srr063q3dwq05wh55b4bgqsf7lgzd";
|
||||
sha256 = "0sd8vrx7nak0by4whdmd9jzr66zm48knv1w1aqi90709fv98brm9";
|
||||
};
|
||||
|
||||
modSha256 = "1nqnjpkrjbb75yfbzh3v3vc4xy5a2aqm9jr40hwq589a4l9p5pw2";
|
||||
|
@ -8,12 +8,12 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2.19";
|
||||
version = "2.20";
|
||||
pname = "links2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "${meta.homepage}/download/links-${version}.tar.bz2";
|
||||
sha256 = "02ls11c02p7xvsdjyb43rrzr850i1yly003r812z0w5vv5yqqxbh";
|
||||
sha256 = "0bchwqa87dc8cb55spyybkqpc456pp4x2n9aw587wr7pn96cvp9v";
|
||||
};
|
||||
|
||||
buildInputs = with stdenv.lib;
|
||||
|
@ -9,8 +9,6 @@ stdenv.mkDerivation {
|
||||
|
||||
outputs = [ "out" "man" ];
|
||||
|
||||
doBuild = false;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p \
|
||||
"$out/bin" \
|
||||
|
@ -53,11 +53,11 @@ stdenv.mkDerivation {
|
||||
];
|
||||
|
||||
configureFlags = [
|
||||
"--with-nautilus-extension-dir=${placeholder ''nautilusExtension''}/lib/nautilus/extensions-3.0"
|
||||
"--with-nautilus-extension-dir=${placeholder "nautilusExtension"}/lib/nautilus/extensions-3.0"
|
||||
];
|
||||
|
||||
makeFlags = [
|
||||
"EMBLEM_DIR=${placeholder ''nautilusExtension''}/share/nautilus-dropbox/emblems"
|
||||
"EMBLEM_DIR=${placeholder "nautilusExtension"}/share/nautilus-dropbox/emblems"
|
||||
];
|
||||
|
||||
meta = {
|
||||
|
@ -3,19 +3,19 @@
|
||||
let
|
||||
common = { stname, target, postInstall ? "" }:
|
||||
buildGoModule rec {
|
||||
version = "1.2.1";
|
||||
version = "1.2.2";
|
||||
name = "${stname}-${version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "syncthing";
|
||||
repo = "syncthing";
|
||||
rev = "v${version}";
|
||||
sha256 = "0q1x6kd5kaij8mvs6yll2vqfzrbb31y5hpg6g5kjc8gngwv4rl6v";
|
||||
sha256 = "0zkyjnjrla0vpvidwwr4z4kxc9cyjcfbjdzsr34xz7rw3jswswm9";
|
||||
};
|
||||
|
||||
goPackagePath = "github.com/syncthing/syncthing";
|
||||
|
||||
modSha256 = "1daixrpdj97ck02853hwp8l158sja5a7a37h0gdbwb1lgf5hsn05";
|
||||
modSha256 = "0pp2gjx227crggph924q7sg6ak8nyl8nlsffpmawq4zl1908lsrd";
|
||||
|
||||
patches = [
|
||||
./add-stcli-target.patch
|
||||
|
@ -0,0 +1,12 @@
|
||||
Index: gnucash-3.6/gnucash/register/register-gnome/CMakeLists.txt
|
||||
===================================================================
|
||||
--- gnucash-3.6.orig/gnucash/register/register-gnome/CMakeLists.txt
|
||||
+++ gnucash-3.6/gnucash/register/register-gnome/CMakeLists.txt
|
||||
@@ -1,6 +1,7 @@
|
||||
add_subdirectory(test)
|
||||
|
||||
#GTK before 3.14 didn't have GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK
|
||||
+include(CheckSymbolExists)
|
||||
check_symbol_exists(GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK gdk/gdktypes.h have_mod_mask)
|
||||
if (NOT have_mod_mask)
|
||||
if (MAC_INTEGRATION)
|
@ -47,6 +47,8 @@ stdenv.mkDerivation rec {
|
||||
# Should probably be removed next version bump
|
||||
CXXFLAGS = [ "-Wno-deprecated-declarations" ];
|
||||
|
||||
patches = [ ./cmake_check_symbol_exists.patch ];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs .
|
||||
'';
|
||||
|
@ -36,9 +36,6 @@ let
|
||||
qtbase qtdeclarative qtsvg qtlocation qtwebchannel qtwebengine
|
||||
];
|
||||
|
||||
doConfigure = false;
|
||||
doBuild = false;
|
||||
|
||||
installPhase = ''
|
||||
# Extract eagle tarball
|
||||
mkdir "$out"
|
||||
|
@ -16,7 +16,7 @@ stdenv.mkDerivation {
|
||||
|
||||
# This uses '/bin/bash', '/usr/local' and 'lex' by default
|
||||
makeFlags = [
|
||||
"PREFIX=${placeholder ''out''}"
|
||||
"PREFIX=${placeholder "out"}"
|
||||
"LEX=flex"
|
||||
"RGBDEF=${netpbm}/share/netpbm/misc/rgb.txt"
|
||||
];
|
||||
|
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=${placeholder ''out''}"
|
||||
"PREFIX=${placeholder "out"}"
|
||||
"ENABLE_MAN=yes"
|
||||
"DOCBOOK_XSL=${docbook_xsl}/share/xml/docbook-xsl-nons/manpages/docbook.xsl"
|
||||
];
|
||||
|
@ -21,9 +21,9 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=${placeholder ''out''}"
|
||||
"INSTALL_LIB=${placeholder ''out''}/bin"
|
||||
"INSTALL_MAN=${placeholder ''out''}/share/man/man1"
|
||||
"PREFIX=${placeholder "out"}"
|
||||
"INSTALL_LIB=${placeholder "out"}/bin"
|
||||
"INSTALL_MAN=${placeholder "out"}/share/man/man1"
|
||||
];
|
||||
|
||||
patches = [
|
||||
|
@ -43,15 +43,15 @@ assert vdpauSupport -> libvdpau != null;
|
||||
assert useWayland -> wayland != null && wayland-protocols != null && waylandpp != null && libxkbcommon != null;
|
||||
|
||||
let
|
||||
kodiReleaseDate = "20190627";
|
||||
kodiVersion = "18.3";
|
||||
kodiReleaseDate = "20190901";
|
||||
kodiVersion = "18.4";
|
||||
rel = "Leia";
|
||||
|
||||
kodi_src = fetchFromGitHub {
|
||||
owner = "xbmc";
|
||||
repo = "xbmc";
|
||||
rev = "${kodiVersion}-${rel}";
|
||||
sha256 = "18fbl5hs3aqccrn0m3x7hp95wlafjav0yvrwmb5q3gj24mwf6jld";
|
||||
sha256 = "1m0295czxabdcqyqf5m94av9d88pzhnzjvyfs1q07xqq82h313p7";
|
||||
};
|
||||
|
||||
cmakeProto = fetchurl {
|
||||
|
@ -59,20 +59,21 @@ let
|
||||
codecs_src =
|
||||
let
|
||||
dir = http://www.mplayerhq.hu/MPlayer/releases/codecs/;
|
||||
version = "20071007";
|
||||
in
|
||||
if stdenv.hostPlatform.system == "i686-linux" then fetchurl {
|
||||
url = "${dir}/essential-20071007.tar.bz2";
|
||||
url = "${dir}/essential-${version}.tar.bz2";
|
||||
sha256 = "18vls12n12rjw0mzw4pkp9vpcfmd1c21rzha19d7zil4hn7fs2ic";
|
||||
} else if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl {
|
||||
url = "${dir}/essential-amd64-20071007.tar.bz2";
|
||||
url = "${dir}/essential-amd64-${version}.tar.bz2";
|
||||
sha256 = "13xf5b92w1ra5hw00ck151lypbmnylrnznq9hhb0sj36z5wz290x";
|
||||
} else if stdenv.hostPlatform.system == "powerpc-linux" then fetchurl {
|
||||
url = "${dir}/essential-ppc-20071007.tar.bz2";
|
||||
url = "${dir}/essential-ppc-${version}.tar.bz2";
|
||||
sha256 = "18mlj8dp4wnz42xbhdk1jlz2ygra6fbln9wyrcyvynxh96g1871z";
|
||||
} else null;
|
||||
|
||||
codecs = if codecs_src != null then stdenv.mkDerivation {
|
||||
name = "MPlayer-codecs-essential-20071007";
|
||||
pname = "MPlayer-codecs-essential";
|
||||
|
||||
src = codecs_src;
|
||||
|
||||
@ -89,11 +90,12 @@ let
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "mplayer-1.3.0";
|
||||
pname = "mplayer";
|
||||
version = "1.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.3.0.tar.xz";
|
||||
sha256 = "0hwqn04bdknb2ic88xd75smffxx63scvz0zvwvjb56nqj9n89l1s";
|
||||
url = "http://www.mplayerhq.hu/MPlayer/releases/MPlayer-${version}.tar.xz";
|
||||
sha256 = "0j5mflr0wnklxsvnpmxvk704hscyn2785hvvihj2i3a7b3anwnc2";
|
||||
};
|
||||
|
||||
prePatch = ''
|
||||
@ -218,6 +220,6 @@ stdenv.mkDerivation {
|
||||
homepage = http://mplayerhq.hu;
|
||||
license = "GPL";
|
||||
maintainers = [ stdenv.lib.maintainers.eelco ];
|
||||
platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
|
||||
platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
|
||||
};
|
||||
}
|
||||
|
@ -1,7 +1,14 @@
|
||||
{ stdenv, mkDerivationWith, fetchFromGitHub
|
||||
{ stdenv, mkDerivationWith, fetchFromGitHub, fetchpatch
|
||||
, doxygen, python3Packages, libopenshot
|
||||
, wrapGAppsHook, gtk3 }:
|
||||
|
||||
let
|
||||
fixPermissions = fetchpatch rec {
|
||||
url = https://github.com/OpenShot/openshot-qt/pull/2973.patch;
|
||||
sha256 = "037rh0p3k4sdzprlpyb73byjq3qhqk5zd0d4iin6bq602r8bbp0n";
|
||||
};
|
||||
in
|
||||
|
||||
mkDerivationWith python3Packages.buildPythonApplication rec {
|
||||
pname = "openshot-qt";
|
||||
version = "2.4.4";
|
||||
@ -13,6 +20,8 @@ mkDerivationWith python3Packages.buildPythonApplication rec {
|
||||
sha256 = "0mg63v36h7l8kv2sgf6x8c1n3ygddkqqwlciz7ccxpbm4x1idqba";
|
||||
};
|
||||
|
||||
patches = [ fixPermissions ];
|
||||
|
||||
nativeBuildInputs = [ doxygen wrapGAppsHook ];
|
||||
|
||||
buildInputs = [ gtk3 ];
|
||||
|
@ -1,35 +0,0 @@
|
||||
{ stdenv, fetchurl, iasl, flex, bison }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cbfstool";
|
||||
version = "4.9";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://coreboot.org/releases/coreboot-${version}.tar.xz";
|
||||
sha256 = "0xkai65d3z9fivwscbkm7ndcw2p9g794xz8fwdv979w77n5qsdij";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ flex bison ];
|
||||
buildInputs = [ iasl ];
|
||||
|
||||
buildPhase = ''
|
||||
export LEX=${flex}/bin/flex
|
||||
make -C util/cbfstool
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp util/cbfstool/cbfstool $out/bin
|
||||
cp util/cbfstool/fmaptool $out/bin
|
||||
cp util/cbfstool/rmodtool $out/bin
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Management utility for CBFS formatted ROM images";
|
||||
homepage = https://www.coreboot.org;
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.tstrobel ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -56,8 +56,6 @@ stdenv.mkDerivation {
|
||||
}
|
||||
'';
|
||||
|
||||
doConfigure = false;
|
||||
|
||||
buildPhase = ''
|
||||
# Build kernel modules.
|
||||
cd src
|
||||
|
@ -1,36 +1,40 @@
|
||||
{ stdenv, fetchurl, cmake, gettext
|
||||
{ stdenv, fetchFromGitHub, cmake, gettext, perl, asciidoc
|
||||
, libjpeg, libtiff, libungif, libpng, imlib, expat
|
||||
, freetype, fontconfig, pkgconfig, gdk-pixbuf
|
||||
, mkfontdir, libX11, libXft, libXext, libXinerama
|
||||
, libXrandr, libICE, libSM, libXpm, libXdmcp, libxcb
|
||||
, libpthreadstubs, pcre }:
|
||||
, libpthreadstubs, pcre, libXdamage, libXcomposite, libXfixes
|
||||
, libsndfile, fribidi }:
|
||||
|
||||
with stdenv.lib;
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "icewm";
|
||||
version = "1.4.2";
|
||||
version = "1.6.0";
|
||||
|
||||
buildInputs =
|
||||
[ cmake gettext libjpeg libtiff libungif libpng imlib expat
|
||||
freetype fontconfig pkgconfig gdk-pixbuf mkfontdir libX11
|
||||
libXft libXext libXinerama libXrandr libICE libSM libXpm
|
||||
libXdmcp libxcb libpthreadstubs pcre ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/bbidulock/icewm/archive/${version}.tar.gz";
|
||||
sha256 = "05chzjjnb4n4j05ld2gmhhr07c887qb4j9inwg9izhvml51af1bw";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bbidulock";
|
||||
repo = "icewm";
|
||||
rev = version;
|
||||
sha256 = "1l8hjmb19d7ds7z21cx207h86wkjcmmmamcnalgkwh4alvbawc2p";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
export cmakeFlags="-DPREFIX=$out -DCFGDIR=/etc/icewm"
|
||||
nativeBuildInputs = [ cmake pkgconfig perl asciidoc ];
|
||||
|
||||
buildInputs = [
|
||||
gettext libjpeg libtiff libungif libpng imlib expat
|
||||
freetype fontconfig gdk-pixbuf mkfontdir libX11
|
||||
libXft libXext libXinerama libXrandr libICE libSM libXpm
|
||||
libXdmcp libxcb libpthreadstubs pcre libsndfile fribidi
|
||||
libXdamage libXcomposite libXfixes
|
||||
];
|
||||
|
||||
cmakeFlags = [ "-DPREFIX=$out" "-DCFGDIR=/etc/icewm" ];
|
||||
|
||||
# install legacy themes
|
||||
postInstall = ''
|
||||
cp -r ../lib/themes/{gtk2,Natural,nice,nice2,warp3,warp4,yellowmotif} $out/share/icewm/themes/
|
||||
'';
|
||||
|
||||
patches = [ ./fix-strlcat_strlcpy.patch ] ++
|
||||
stdenv.lib.optional stdenv.hostPlatform.isMusl ./musl.patch;
|
||||
|
||||
patchFlags = [ "-p0" ];
|
||||
|
||||
meta = {
|
||||
meta = with stdenv.lib; {
|
||||
description = "A simple, lightweight X window manager";
|
||||
longDescription = ''
|
||||
IceWM is a window manager for the X Window System. The goal of
|
||||
|
@ -1,236 +0,0 @@
|
||||
--- src/apppstatus.cc 2017-07-30 10:59:06.000000000 +0200
|
||||
+++ src/apppstatus.cc 2017-08-09 09:12:54.332052762 +0200
|
||||
@@ -366,7 +366,7 @@
|
||||
sscanf(p, "%s %s %s %s %s", val[0], val[1], val[2], val[3], val[4]);
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (strncmp(val[i+1], "?", 1) != 0)
|
||||
- strlcpy(phoneNumber, val[i+1], sizeof phoneNumber);
|
||||
+ my_strlcpy(phoneNumber, val[i+1], sizeof phoneNumber);
|
||||
}
|
||||
}
|
||||
|
||||
--- src/base.h 2017-07-30 10:59:06.000000000 +0200
|
||||
+++ src/base.h 2017-08-09 09:11:13.082025484 +0200
|
||||
@@ -44,9 +44,9 @@
|
||||
/*** String Functions *********************************************************/
|
||||
|
||||
/* Prefer this as a safer alternative over strcpy. Return strlen(from). */
|
||||
-size_t strlcpy(char *dest, const char *from, size_t dest_size);
|
||||
+size_t my_strlcpy(char *dest, const char *from, size_t dest_size);
|
||||
/* Prefer this over strcat. Return strlen(dest) + strlen(from). */
|
||||
-size_t strlcat(char *dest, const char *from, size_t dest_size);
|
||||
+size_t my_strlcat(char *dest, const char *from, size_t dest_size);
|
||||
|
||||
char *newstr(char const *str);
|
||||
char *newstr(char const *str, int len);
|
||||
--- src/gnome2.cc 2017-07-30 10:59:06.000000000 +0200
|
||||
+++ src/gnome2.cc 2017-08-09 09:11:21.819027846 +0200
|
||||
@@ -158,8 +158,8 @@
|
||||
const int plen = strlen(fPath);
|
||||
|
||||
char tmp[256];
|
||||
- strlcpy(tmp, fPath, sizeof tmp);
|
||||
- strlcat(tmp, "/.directory", sizeof tmp);
|
||||
+ my_strlcpy(tmp, fPath, sizeof tmp);
|
||||
+ my_strlcat(tmp, "/.directory", sizeof tmp);
|
||||
|
||||
if (isDir && !stat(tmp, &sb)) { // looks like kde/gnome1 style
|
||||
|
||||
@@ -279,8 +279,8 @@
|
||||
|
||||
while ((file = readdir(dir)) != NULL) {
|
||||
char fullpath[256];
|
||||
- strlcpy(fullpath, dirname, sizeof fullpath);
|
||||
- strlcat(fullpath, file->d_name, sizeof fullpath);
|
||||
+ my_strlcpy(fullpath, dirname, sizeof fullpath);
|
||||
+ my_strlcat(fullpath, file->d_name, sizeof fullpath);
|
||||
GnomeDesktopItem *ditem =
|
||||
gnome_desktop_item_new_from_file(fullpath,
|
||||
(GnomeDesktopItemLoadFlags)0,
|
||||
--- src/icehelp.cc 2017-07-30 10:59:06.000000000 +0200
|
||||
+++ src/icehelp.cc 2017-08-09 09:11:31.490030459 +0200
|
||||
@@ -1790,8 +1790,8 @@
|
||||
const size_t size = 9 + strlen(cfmt) + strlen(cstr) + strlen(crea);
|
||||
char *cbuf = (char *)malloc(size);
|
||||
snprintf(cbuf, size, cfmt, cstr);
|
||||
- strlcat(cbuf, ":\n ", size);
|
||||
- strlcat(cbuf, crea, size);
|
||||
+ my_strlcat(cbuf, ":\n ", size);
|
||||
+ my_strlcat(cbuf, crea, size);
|
||||
|
||||
node *root = new node(node::div);
|
||||
flist<node> nodes(root);
|
||||
--- src/icesm.cc 2017-07-30 10:59:06.000000000 +0200
|
||||
+++ src/icesm.cc 2017-08-09 09:13:12.946057758 +0200
|
||||
@@ -28,10 +28,10 @@
|
||||
wordexp_t w;
|
||||
if (wordexp(trim(buf), &w, 0) != 0 || w.we_wordc == 0)
|
||||
return false;
|
||||
- size_t len = strlcpy(buf, trim(w.we_wordv[0]), bufsiz);
|
||||
+ size_t len = my_strlcpy(buf, trim(w.we_wordv[0]), bufsiz);
|
||||
for (size_t k = 1; k < w.we_wordc && len < bufsiz; ++k) {
|
||||
- strlcat(buf, " ", bufsiz);
|
||||
- len = strlcat(buf, trim(w.we_wordv[k]), bufsiz);
|
||||
+ my_strlcat(buf, " ", bufsiz);
|
||||
+ len = my_strlcat(buf, trim(w.we_wordv[k]), bufsiz);
|
||||
}
|
||||
wordfree(&w);
|
||||
if (len >= bufsiz)
|
||||
@@ -39,7 +39,7 @@
|
||||
#else
|
||||
char *str = trim(buf);
|
||||
if (str > buf)
|
||||
- strlcpy(buf, str, bufsiz);
|
||||
+ my_strlcpy(buf, str, bufsiz);
|
||||
#endif
|
||||
if (buf[0] == '#' || buf[0] == '=')
|
||||
buf[0] = 0;
|
||||
--- src/icesound.cc 2017-07-30 10:59:06.000000000 +0200
|
||||
+++ src/icesound.cc 2017-08-09 09:11:26.686029161 +0200
|
||||
@@ -145,8 +145,8 @@
|
||||
char * findSample(int sid) {
|
||||
char basefname[1024];
|
||||
|
||||
- strlcpy(basefname, gui_events[sid].name, sizeof basefname);
|
||||
- strlcat(basefname, ".wav", sizeof basefname);
|
||||
+ my_strlcpy(basefname, gui_events[sid].name, sizeof basefname);
|
||||
+ my_strlcat(basefname, ".wav", sizeof basefname);
|
||||
|
||||
return findSample(basefname);
|
||||
}
|
||||
--- src/misc.cc 2017-07-30 10:59:06.000000000 +0200
|
||||
+++ src/misc.cc 2017-08-09 09:13:39.372064834 +0200
|
||||
@@ -448,7 +448,7 @@
|
||||
#endif
|
||||
|
||||
/* Prefer this as a safer alternative over strcpy. Return strlen(from). */
|
||||
-size_t strlcpy(char *dest, const char *from, size_t dest_size)
|
||||
+size_t my_strlcpy(char *dest, const char *from, size_t dest_size)
|
||||
{
|
||||
const char *in = from;
|
||||
if (dest_size > 0) {
|
||||
@@ -463,12 +463,12 @@
|
||||
}
|
||||
|
||||
/* Prefer this over strcat. Return strlen(dest) + strlen(from). */
|
||||
-size_t strlcat(char *dest, const char *from, size_t dest_size)
|
||||
+size_t my_strlcat(char *dest, const char *from, size_t dest_size)
|
||||
{
|
||||
char *to = dest;
|
||||
char *const stop = to + dest_size - 1;
|
||||
while (to < stop && *to) ++to;
|
||||
- return to - dest + strlcpy(to, from, dest_size - (to - dest));
|
||||
+ return to - dest + my_strlcpy(to, from, dest_size - (to - dest));
|
||||
}
|
||||
|
||||
char *newstr(char const *str) {
|
||||
--- src/strtest.cc 2017-07-30 10:59:06.000000000 +0200
|
||||
+++ src/strtest.cc 2017-08-09 09:13:24.395060823 +0200
|
||||
@@ -286,63 +286,63 @@
|
||||
strtest tester("strlc");
|
||||
char d[10] = "@";
|
||||
size_t n;
|
||||
- n = strlcpy(d, "", 0);
|
||||
+ n = my_strlcpy(d, "", 0);
|
||||
sequal(d, "@");
|
||||
assert(d, n == 0);
|
||||
|
||||
- n = strlcpy(d, "a", 0);
|
||||
+ n = my_strlcpy(d, "a", 0);
|
||||
sequal(d, "@");
|
||||
assert(d, n == 1);
|
||||
|
||||
- n = strlcpy(d, "", 1);
|
||||
+ n = my_strlcpy(d, "", 1);
|
||||
sequal(d, "");
|
||||
assert(d, n == 0);
|
||||
|
||||
- n = strlcpy(d, "a", 1);
|
||||
+ n = my_strlcpy(d, "a", 1);
|
||||
sequal(d, "");
|
||||
assert(d, n == 1);
|
||||
|
||||
- n = strlcpy(d, "a", 2);
|
||||
+ n = my_strlcpy(d, "a", 2);
|
||||
sequal(d, "a");
|
||||
assert(d, n == 1);
|
||||
|
||||
- n = strlcpy(d, "ab", 2);
|
||||
+ n = my_strlcpy(d, "ab", 2);
|
||||
sequal(d, "a");
|
||||
assert(d, n == 2);
|
||||
|
||||
- n = strlcpy(d, "ab", 3);
|
||||
+ n = my_strlcpy(d, "ab", 3);
|
||||
sequal(d, "ab");
|
||||
assert(d, n == 2);
|
||||
|
||||
- n = strlcpy(d, "abc", sizeof d);
|
||||
+ n = my_strlcpy(d, "abc", sizeof d);
|
||||
sequal(d, "abc");
|
||||
assert(d, n == 3);
|
||||
|
||||
- n = strlcat(d, "def", 4);
|
||||
+ n = my_strlcat(d, "def", 4);
|
||||
sequal(d, "abc");
|
||||
assert(d, n == 6);
|
||||
|
||||
- n = strlcat(d, "def", sizeof d);
|
||||
+ n = my_strlcat(d, "def", sizeof d);
|
||||
sequal(d, "abcdef");
|
||||
assert(d, n == 6);
|
||||
|
||||
- n = strlcat(d, "ghijkl", sizeof d);
|
||||
+ n = my_strlcat(d, "ghijkl", sizeof d);
|
||||
sequal(d, "abcdefghi");
|
||||
assert(d, n == 12);
|
||||
|
||||
- n = strlcpy(d, "123", sizeof d);
|
||||
+ n = my_strlcpy(d, "123", sizeof d);
|
||||
sequal(d, "123");
|
||||
assert(d, n == 3);
|
||||
|
||||
- n = strlcpy(d, d + 1, sizeof d);
|
||||
+ n = my_strlcpy(d, d + 1, sizeof d);
|
||||
sequal(d, "23");
|
||||
assert(d, n == 2);
|
||||
|
||||
- n = strlcpy(d, d + 1, sizeof d);
|
||||
+ n = my_strlcpy(d, d + 1, sizeof d);
|
||||
sequal(d, "3");
|
||||
assert(d, n == 1);
|
||||
|
||||
- n = strlcpy(d, d + 1, sizeof d);
|
||||
+ n = my_strlcpy(d, d + 1, sizeof d);
|
||||
sequal(d, "");
|
||||
assert(d, n == 0);
|
||||
}
|
||||
@@ -418,7 +418,7 @@
|
||||
while (a.next()) {
|
||||
const char *e = a.entry();
|
||||
assert(e, strcoll(buf, e) < 0);
|
||||
- strlcpy(buf, e, sizeof buf);
|
||||
+ my_strlcpy(buf, e, sizeof buf);
|
||||
}
|
||||
assert(buf, strcoll(buf, "~~~~~~~~~") < 0);
|
||||
}
|
||||
@@ -437,7 +437,7 @@
|
||||
cstring c(s.entry());
|
||||
const char *e = c.c_str();
|
||||
assert(e, strcoll(buf, e) < 0);
|
||||
- strlcpy(buf, e, sizeof buf);
|
||||
+ my_strlcpy(buf, e, sizeof buf);
|
||||
}
|
||||
assert(buf, strcoll(buf, "~~~~~~~~~") < 0);
|
||||
}
|
||||
--- src/udir.cc 2017-07-30 10:59:06.000000000 +0200
|
||||
+++ src/udir.cc 2017-08-09 09:13:28.346061883 +0200
|
||||
@@ -66,7 +66,7 @@
|
||||
if (impl) {
|
||||
DirPtr dirp(impl);
|
||||
if (dirp.next()) {
|
||||
- strlcpy(fEntry, dirp.name(), sizeof fEntry);
|
||||
+ my_strlcpy(fEntry, dirp.name(), sizeof fEntry);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
--- src/ylocale.cc 2017-07-30 10:59:06.000000000 +0200
|
||||
+++ src/ylocale.cc 2017-08-09 08:15:50.938841549 +0200
|
||||
@@ -55,6 +55,8 @@
|
||||
int const codesetItems[] = {
|
||||
#ifdef CONFIG_NL_CODESETS
|
||||
CONFIG_NL_CODESETS
|
||||
+#elif !defined(__GLIBC__)
|
||||
+ CODESET, 0
|
||||
#else
|
||||
CODESET, _NL_CTYPE_CODESET_NAME, 0
|
||||
#endif
|
||||
--- src/globit.c 2017-07-30 10:59:06.000000000 +0200
|
||||
+++ src/globit.c 2017-08-09 08:17:18.691824584 +0200
|
||||
@@ -143,7 +143,9 @@
|
||||
} else if (*pattern == '~') {
|
||||
/* yes, tilde */
|
||||
is_absolute = 2;
|
||||
+#if defined(__GLIBC__)
|
||||
glob_flags |= GLOB_TILDE;
|
||||
+#endif
|
||||
/* any slash in the pattern? */
|
||||
while (*cp && *cp != '/')
|
||||
++cp;
|
@ -5,13 +5,13 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "nix-prefetch-github";
|
||||
version = "2.3";
|
||||
version = "2.3.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "seppeljordan";
|
||||
repo = "nix-prefetch-github";
|
||||
rev = "v${version}";
|
||||
sha256 = "0b2hgfyxhlqq6lyi5cr98dz6if5kl6b3kq67f2lzfkalydywl1dh";
|
||||
sha256 = "13wvq13iiva97a16kahfpxar5ppb015nnbn7d4v9s9jyxdickc2c";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
|
@ -381,4 +381,37 @@ rec {
|
||||
# Copy a list of paths to the Nix store.
|
||||
copyPathsToStore = builtins.map copyPathToStore;
|
||||
|
||||
/* Applies a list of patches to a source directory.
|
||||
*
|
||||
* Examples:
|
||||
*
|
||||
* # Patching nixpkgs:
|
||||
* applyPatches {
|
||||
* src = pkgs.path;
|
||||
* patches = [
|
||||
* (pkgs.fetchpatch {
|
||||
* url = "https://github.com/NixOS/nixpkgs/commit/1f770d20550a413e508e081ddc08464e9d08ba3d.patch";
|
||||
* sha256 = "1nlzx171y3r3jbk0qhvnl711kmdk57jlq4na8f8bs8wz2pbffymr";
|
||||
* })
|
||||
* ];
|
||||
* }
|
||||
*/
|
||||
applyPatches =
|
||||
{ src
|
||||
, name ? (if builtins.typeOf src == "path"
|
||||
then builtins.baseNameOf src
|
||||
else
|
||||
if builtins.isAttrs src && builtins.hasAttr "name" src
|
||||
then src.name
|
||||
else throw "applyPatches: please supply a `name` argument because a default name can only be computed when the `src` is a path or is an attribute set with a `name` attribute."
|
||||
) + "-patched"
|
||||
, patches ? []
|
||||
, postPatch ? ""
|
||||
}: stdenvNoCC.mkDerivation {
|
||||
inherit name src patches postPatch;
|
||||
preferLocalBuild = true;
|
||||
allowSubstitutes = false;
|
||||
phases = "unpackPhase patchPhase installPhase";
|
||||
installPhase = "cp -R ./ $out";
|
||||
};
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
{ stdenv, fetchzip }:
|
||||
|
||||
let
|
||||
version = "2.2.1";
|
||||
version = "2.3.0";
|
||||
in fetchzip {
|
||||
name = "iosevka-bin-${version}";
|
||||
|
||||
@ -12,7 +12,7 @@ in fetchzip {
|
||||
unzip -j $downloadedFile \*.ttc -d $out/share/fonts/iosevka
|
||||
'';
|
||||
|
||||
sha256 = "0d5ys9k8adj9v1hpwbmjqshzpjlnyj81xwp0328vc5q8pvjcfly6";
|
||||
sha256 = "0nry6zsmvcj44rijhbvrry84rh5hrixzb4n1mx9c27vvpy33a56w";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://be5invis.github.io/Iosevka/;
|
||||
|
@ -1,6 +1,6 @@
|
||||
{ fetchurl }:
|
||||
|
||||
fetchurl {
|
||||
url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/2b4df08d487f0821b932f92392b67fe12dc1d42c.tar.gz";
|
||||
sha256 = "02d06fr2jr69za5751z25c3x3zspiwdmlhmdmxaj1g48v00gbfag";
|
||||
url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/93bcfb09798da885d29304fa4dab1e234e3b728e.tar.gz";
|
||||
sha256 = "1mv5kxqldakapzbmch2b88mynng268njq3dxbkmyzli8fwnllra2";
|
||||
}
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "materia-theme";
|
||||
version = "20190315";
|
||||
version = "20190831";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nana-4";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1fpipwvwxjiriqhysqgx51rnax73hyd5jkyxhc2g3y73s5r2xq82";
|
||||
sha256 = "19b2wyq38wj3id0an47jln1y3zp5ih3kbrgmfpjp6bbdrmfcyccf";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ glib libxml2 bc ];
|
||||
|
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
|
||||
go-dbus-generator
|
||||
];
|
||||
|
||||
makeFlags = [ "GOPATH=${placeholder ''out''}/share/go" ];
|
||||
makeFlags = [ "GOPATH=${placeholder "out"}/share/go" ];
|
||||
|
||||
postPatch = ''
|
||||
sed -i -e 's:/share/gocode:/share/go:' Makefile
|
||||
|
@ -30,7 +30,7 @@ mkDerivation rec {
|
||||
|
||||
makeFlags = [
|
||||
"DEB_HOST_MULTIARCH="
|
||||
"PREFIX=${placeholder ''out''}"
|
||||
"PREFIX=${placeholder "out"}"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
|
@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
|
||||
# fix default background url
|
||||
sed -i -e 's,/usr/share/backgrounds/default_background.jpg,/usr/share/backgrounds/deepin/desktop.jpg,' \
|
||||
overrides/common/com.deepin.wrap.gnome.desktop.override
|
||||
|
||||
|
||||
fixPath ${deepin-wallpapers} /usr/share/backgrounds \
|
||||
overrides/common/com.deepin.wrap.gnome.desktop.override
|
||||
|
||||
@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
|
||||
# /usr/share/desktop-directories
|
||||
'';
|
||||
|
||||
makeFlags = [ "PREFIX=${placeholder ''out''}" ];
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
doCheck = true;
|
||||
checkTarget = "test";
|
||||
|
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
||||
python3Packages.python
|
||||
];
|
||||
|
||||
makeFlags = [ "PREFIX=${placeholder ''out''}" ];
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
postPatch = ''
|
||||
sed -e 's/sudo cp/cp/' -i src/generate_mo.py
|
||||
|
@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
propagatedUserEnvPkgs = [ gtk-engine-murrine ];
|
||||
|
||||
makeFlags = [ "PREFIX=${placeholder ''out''}" ];
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
passthru.updateScript = deepin.updateScript { inherit ;name = "${pname}-${version}"; };
|
||||
|
||||
|
@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
buildTargets = "all hicolor-links";
|
||||
installTargets = "install-icons install-cursors";
|
||||
installFlags = [ "PREFIX=${placeholder ''out''}" ];
|
||||
installFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
postInstall = ''
|
||||
cp -a ./Sea ./usr/share/icons/hicolor "$out"/share/icons/
|
||||
|
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "1sw4nrn7q7wk1hpicm05apyc0mihaw42iqm52wb8ib8gm1qiylr9";
|
||||
};
|
||||
|
||||
makeFlags = [ "PREFIX=${placeholder ''out''}" ];
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
passthru.updateScript = deepin.updateScript { inherit ;name = "${pname}-${version}"; };
|
||||
|
||||
|
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "06fqyad9f50gcjsjkh7929yyaprahdjhnd0dr4gl2797a7wysl3f";
|
||||
};
|
||||
|
||||
makeFlags = [ "PREFIX=${placeholder ''out''}" ];
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
postPatch = ''
|
||||
sed -i -e 's:/share/gocode:/share/go:' Makefile
|
||||
|
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=${placeholder ''out''}"
|
||||
"PREFIX=${placeholder "out"}"
|
||||
"GOCACHE=$(TMPDIR)/go-cache"
|
||||
];
|
||||
|
||||
|
@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=${placeholder ''out''}"
|
||||
"PREFIX=${placeholder "out"}"
|
||||
"GOCACHE=$(TMPDIR)/go-cache"
|
||||
];
|
||||
|
||||
|
@ -25,7 +25,7 @@ mkDerivation rec {
|
||||
];
|
||||
|
||||
qmakeFlags = [
|
||||
"INSTALL_PATH=${placeholder ''out''}/${qtbase.qtPluginPrefix}/platforms"
|
||||
"INSTALL_PATH=${placeholder "out"}/${qtbase.qtPluginPrefix}/platforms"
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
@ -57,8 +57,6 @@ lib.makeScope pkgs.newScope (self: with self; {
|
||||
|
||||
#### DESKTOP
|
||||
|
||||
gvfs = pkgs.gvfs.override { gnome = self; };
|
||||
|
||||
# Removed from recent GNOME releases, but still required
|
||||
scrollkeeper = callPackage ./desktop/scrollkeeper { };
|
||||
|
||||
@ -78,7 +76,10 @@ lib.makeScope pkgs.newScope (self: with self; {
|
||||
glib glibmm atk atkmm cairo pango pangomm gdk_pixbuf gtkmm2 libcanberra-gtk2
|
||||
|
||||
# Included for backwards compatibility
|
||||
libsoup libwnck gtk-doc gnome-doc-utils rarian;
|
||||
libsoup libwnck gtk-doc gnome-doc-utils rarian
|
||||
|
||||
gvfs # added 2019-09-03
|
||||
;
|
||||
|
||||
gtk = pkgs.gtk2;
|
||||
gtkmm = pkgs.gtkmm2;
|
||||
|
@ -23,8 +23,8 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
configureFlags = [
|
||||
"--with-pkcs11-config=${placeholder ''out''}/etc/pkcs11/" # installation directories
|
||||
"--with-pkcs11-modules=${placeholder ''out''}/lib/pkcs11/"
|
||||
"--with-pkcs11-config=${placeholder "out"}/etc/pkcs11/" # installation directories
|
||||
"--with-pkcs11-modules=${placeholder "out"}/lib/pkcs11/"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
|
@ -34,8 +34,8 @@ stdenv.mkDerivation rec {
|
||||
configureFlags = [
|
||||
"--with-httpd=${apacheHttpd.out}/bin/httpd"
|
||||
"--with-modules-path=${apacheHttpd.dev}/modules"
|
||||
"--with-systemduserunitdir=${placeholder ''out''}/etc/systemd/user"
|
||||
"--with-nautilusdir=${placeholder ''out''}/lib/nautilus/extensions-3.0"
|
||||
"--with-systemduserunitdir=${placeholder "out"}/etc/systemd/user"
|
||||
"--with-nautilusdir=${placeholder "out"}/lib/nautilus/extensions-3.0"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -12,8 +12,8 @@ stdenv.mkDerivation rec {
|
||||
domain = "gitlab.gnome.org";
|
||||
owner = "GNOME";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0p8ky306dnm4alkncmsnd8r2awpsi37p0bzvkv313pgqw2hbwq9i";
|
||||
rev = "74e3126b77eb5f27c0ae3f53b0aff2d2eebc15af"; # patches of tip from gnome-3-28 branch
|
||||
sha256 = "0gw1n1w3i040w5mv30kkg7g8a59ymjlc5yaklip0ngg8xv76g0zi";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ fetchurl, substituteAll, stdenv, pkgconfig, gnome3, gettext, gobject-introspection, upower, cairo
|
||||
{ fetchurl, fetchpatch, substituteAll, stdenv, pkgconfig, gnome3, gettext, gobject-introspection, upower, cairo
|
||||
, pango, cogl, clutter, libstartup_notification, zenity, libcanberra-gtk3
|
||||
, ninja, xkeyboard_config, libxkbfile, libxkbcommon, libXtst, libinput
|
||||
, gsettings-desktop-schemas, glib, gtk3, gnome-desktop
|
||||
@ -55,6 +55,13 @@ stdenv.mkDerivation rec {
|
||||
src = ./fix-paths.patch;
|
||||
inherit zenity;
|
||||
})
|
||||
# Fix a segmentation fault in dri_flush_front_buffer() upon
|
||||
# suspend/resume. This change should be removed when Mutter
|
||||
# is updated to 3.34.
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.gnome.org/GNOME/mutter/commit/8307c0f7ab60760de53f764e6636893733543be8.diff";
|
||||
sha256 = "1hzfva71xdqvvnx5smjsrjlgyrmc7dj94mpylkak0gwda5si0h2n";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
|
@ -53,10 +53,6 @@ lib.makeScope pkgs.newScope (self: with self; {
|
||||
|
||||
gjs = callPackage ./core/gjs { };
|
||||
|
||||
glib-networking = pkgs.glib-networking.override {
|
||||
inherit (pkgs) gsettings-desktop-schemas;
|
||||
};
|
||||
|
||||
gnome-backgrounds = callPackage ./core/gnome-backgrounds { };
|
||||
|
||||
gnome-bluetooth = callPackage ./core/gnome-bluetooth { };
|
||||
@ -111,7 +107,7 @@ lib.makeScope pkgs.newScope (self: with self; {
|
||||
|
||||
gucharmap = callPackage ./core/gucharmap { };
|
||||
|
||||
gvfs = pkgs.gvfs.override { gnome = gnome3; gnomeSupport = true; };
|
||||
gvfs = pkgs.gvfs.override { gnomeSupport = true; };
|
||||
|
||||
eog = callPackage ./core/eog { };
|
||||
|
||||
@ -348,6 +344,7 @@ lib.makeScope pkgs.newScope (self: with self; {
|
||||
inherit (pkgs) gsettings-desktop-schemas; # added 2019-04-16
|
||||
inherit (pkgs) gnome-video-effects; # added 2019-08-19
|
||||
inherit (pkgs) gnome-online-accounts grilo grilo-plugins tracker tracker-miners gnome-photos; # added 2019-08-23
|
||||
inherit (pkgs) glib-networking; # added 2019-09-02
|
||||
|
||||
defaultIconTheme = adwaita-icon-theme;
|
||||
gtk = gtk3;
|
||||
|
33
pkgs/desktops/gnome-3/extensions/arc-menu/default.nix
Normal file
33
pkgs/desktops/gnome-3/extensions/arc-menu/default.nix
Normal file
@ -0,0 +1,33 @@
|
||||
{ stdenv, fetchFromGitLab, glib, gettext, substituteAll, gnome-menus }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-arc-menu";
|
||||
version = "31";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "LinxGem33";
|
||||
repo = "Arc-Menu";
|
||||
rev = "v${version}-stable";
|
||||
sha256 = "124jgdy6mw76nrkq3f0y7qkhdm39wg273zifdvwbgpvirwzxbia1";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(substituteAll {
|
||||
src = ./fix_gmenu.patch;
|
||||
gmenu_path = "${gnome-menus}/lib/girepository-1.0";
|
||||
})
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
glib gettext
|
||||
];
|
||||
|
||||
makeFlags = [ "INSTALL_BASE=$(out)/share/gnome-shell/extensions" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Gnome shell extension designed to replace the standard menu found in Gnome 3";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ dkabot ];
|
||||
homepage = https://gitlab.com/LinxGem33/Arc-Menu;
|
||||
};
|
||||
}
|
12
pkgs/desktops/gnome-3/extensions/arc-menu/fix_gmenu.patch
Normal file
12
pkgs/desktops/gnome-3/extensions/arc-menu/fix_gmenu.patch
Normal file
@ -0,0 +1,12 @@
|
||||
--- a/extension.js
|
||||
+++ b/extension.js
|
||||
@@ -29,6 +29,8 @@
|
||||
* https://github.com/The-Panacea-Projects/Gnomenu
|
||||
*/
|
||||
|
||||
+
|
||||
+imports.gi.GIRepository.Repository.prepend_search_path('@gmenu_path@');
|
||||
|
||||
// Import Libraries
|
||||
const Main = imports.ui.main;
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-dash-to-panel";
|
||||
version = "19";
|
||||
version = "23";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "home-sweet-gnome";
|
||||
repo = "dash-to-panel";
|
||||
rev = "v${version}";
|
||||
sha256 = "0r26ph6zq87kvglydv00rf24mshz7l4r38zf9niyp3mxyzz6rwys";
|
||||
sha256 = "12smkz3clcvgicr0pdc0fk6igf82nw4hzih1ywv9q43xkqh9w1i6";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
|
||||
uuid = "taskwhisperer-extension@infinicode.de";
|
||||
|
||||
makeFlags = [
|
||||
"INSTALLBASE=${placeholder ''out''}/share/gnome-shell/extensions"
|
||||
"INSTALLBASE=${placeholder "out"}/share/gnome-shell/extensions"
|
||||
];
|
||||
|
||||
patches = [
|
||||
|
@ -68,7 +68,7 @@ in stdenv.mkDerivation rec {
|
||||
doCheck = true;
|
||||
|
||||
configureFlags = [
|
||||
"--with-libpanel-applet-dir=${placeholder ''out''}/share/gnome-panel/applets"
|
||||
"--with-libpanel-applet-dir=${placeholder "out"}/share/gnome-panel/applets"
|
||||
];
|
||||
|
||||
passthru = {
|
||||
|
@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
|
||||
switchboard
|
||||
];
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Universal Access Plug";
|
||||
|
@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
|
||||
./remove-update-button.patch
|
||||
];
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard About Plug";
|
||||
|
@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
|
||||
switchboard
|
||||
];
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Applications Plug";
|
||||
|
@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
|
||||
switchboard
|
||||
];
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Bluetooth Plug";
|
||||
|
@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
|
||||
./clock-format.patch
|
||||
];
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Date & Time Plug";
|
||||
|
@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
|
||||
switchboard
|
||||
];
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Displays Plug";
|
||||
|
@ -57,7 +57,7 @@ stdenv.mkDerivation rec {
|
||||
})
|
||||
];
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Keyboard Plug";
|
||||
|
@ -54,7 +54,7 @@ stdenv.mkDerivation rec {
|
||||
switchboard
|
||||
];
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Mouse & Touchpad Plug";
|
||||
|
@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Networking Plug";
|
||||
|
@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
|
||||
switchboard
|
||||
];
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Notifications Plug";
|
||||
|
@ -58,7 +58,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Desktop Plug";
|
||||
|
@ -66,10 +66,10 @@ stdenv.mkDerivation rec {
|
||||
--subst-var-by GSD_GSETTINGS_PATH ${glib.getSchemaPath elementary-settings-daemon}
|
||||
'';
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_DBUS_1_SYSTEM_BUS_SERVICES_DIR = "${placeholder ''out''}/share/dbus-1/system-services";
|
||||
PKG_CONFIG_DBUS_1_SYSCONFDIR = "${placeholder ''out''}/etc";
|
||||
PKG_CONFIG_POLKIT_GOBJECT_1_POLICYDIR = "${placeholder ''out''}/share/polkit-1/actions";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
PKG_CONFIG_DBUS_1_SYSTEM_BUS_SERVICES_DIR = "${placeholder "out"}/share/dbus-1/system-services";
|
||||
PKG_CONFIG_DBUS_1_SYSCONFDIR = "${placeholder "out"}/etc";
|
||||
PKG_CONFIG_POLKIT_GOBJECT_1_POLICYDIR = "${placeholder "out"}/share/polkit-1/actions";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Power Plug";
|
||||
|
@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
|
||||
switchboard
|
||||
];
|
||||
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard";
|
||||
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Switchboard Printers Plug";
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user