Merge branch 'staging-next' into staging

This commit is contained in:
Vladimír Čunát 2019-09-05 10:23:46 +02:00
commit e5dece4cbf
No known key found for this signature in database
GPG Key ID: E747DF1F9575A3AA
220 changed files with 7360 additions and 2088 deletions

View 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 ]}
'';
}
```

View File

@ -1225,11 +1225,15 @@
githubId = 25088352; githubId = 25088352;
name = "Christian Kögler"; name = "Christian Kögler";
}; };
ckampka = { kampka = {
email = "christian@kampka.net"; email = "christian@kampka.net";
github = "kampka"; github = "kampka";
githubId = 422412; githubId = 422412;
name = "Christian Kampka"; name = "Christian Kampka";
keys = [{
longkeyid = "ed25519/0x1CBE9645DD68E915";
fingerprint = "F7FA 0BD0 8775 337C F6AB 4A14 1CBE 9645 DD68 E915";
}];
}; };
ckauhaus = { ckauhaus = {
email = "kc@flyingcircus.io"; email = "kc@flyingcircus.io";
@ -1633,6 +1637,12 @@
githubId = 10913120; githubId = 10913120;
name = "Dje4321"; name = "Dje4321";
}; };
dkabot = {
email = "dkabot@dkabot.com";
github = "dkabot";
githubId = 1316469;
name = "Naomi Morse";
};
dmalikov = { dmalikov = {
email = "malikov.d.y@gmail.com"; email = "malikov.d.y@gmail.com";
github = "dmalikov"; github = "dmalikov";
@ -3069,6 +3079,16 @@
githubId = 8735102; githubId = 8735102;
name = "John Ramsden"; 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 = { joko = {
email = "ioannis.koutras@gmail.com"; email = "ioannis.koutras@gmail.com";
github = "jokogr"; github = "jokogr";
@ -4584,6 +4604,12 @@
githubId = 9939720; githubId = 9939720;
name = "Philippe Nguyen"; name = "Philippe Nguyen";
}; };
nrdxp = {
email = "tim.deh@pm.me";
github = "nrdxp";
githubId = 34083928;
name = "Tim DeHerrera";
};
nshalman = { nshalman = {
email = "nahamu@gmail.com"; email = "nahamu@gmail.com";
github = "nshalman"; github = "nshalman";
@ -5409,6 +5435,12 @@
githubId = 852967; githubId = 852967;
name = "Russell O'Connor"; name = "Russell O'Connor";
}; };
roelvandijk = {
email = "roel@lambdacube.nl";
github = "roelvandijk";
githubId = 710906;
name = "Roel van Dijk";
};
romildo = { romildo = {
email = "malaquias@gmail.com"; email = "malaquias@gmail.com";
github = "romildo"; github = "romildo";

View 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
)

View File

@ -135,7 +135,17 @@
<literal>./programs/dwm-status.nix</literal> <literal>./programs/dwm-status.nix</literal>
</para> </para>
</listitem> </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> </itemizedlist>
</section> </section>
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"

View 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 ];
};
}

View 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 &lt;printer-name&gt;</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);
};
};
}

View File

@ -58,7 +58,9 @@
./hardware/network/intel-2200bg.nix ./hardware/network/intel-2200bg.nix
./hardware/nitrokey.nix ./hardware/nitrokey.nix
./hardware/opengl.nix ./hardware/opengl.nix
./hardware/openrazer.nix
./hardware/pcmcia.nix ./hardware/pcmcia.nix
./hardware/printers.nix
./hardware/raid/hpsa.nix ./hardware/raid/hpsa.nix
./hardware/steam-hardware.nix ./hardware/steam-hardware.nix
./hardware/usb-wwan.nix ./hardware/usb-wwan.nix
@ -281,6 +283,7 @@
./services/databases/virtuoso.nix ./services/databases/virtuoso.nix
./services/desktops/accountsservice.nix ./services/desktops/accountsservice.nix
./services/desktops/bamf.nix ./services/desktops/bamf.nix
./services/desktops/blueman.nix
./services/desktops/deepin/deepin.nix ./services/desktops/deepin/deepin.nix
./services/desktops/dleyna-renderer.nix ./services/desktops/dleyna-renderer.nix
./services/desktops/dleyna-server.nix ./services/desktops/dleyna-server.nix
@ -698,6 +701,7 @@
./services/networking/supybot.nix ./services/networking/supybot.nix
./services/networking/syncthing.nix ./services/networking/syncthing.nix
./services/networking/syncthing-relay.nix ./services/networking/syncthing-relay.nix
./services/networking/syncplay.nix
./services/networking/tcpcrypt.nix ./services/networking/tcpcrypt.nix
./services/networking/teamspeak3.nix ./services/networking/teamspeak3.nix
./services/networking/tedicross.nix ./services/networking/tedicross.nix

View 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 ];
};
}

View File

@ -22,11 +22,11 @@ with lib;
config = mkIf config.services.gnome3.glib-networking.enable { 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" ];
}; };

View 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;
};
};
};
}

View File

@ -3,7 +3,7 @@
import ./make-test.nix ({ pkgs, ...} : { import ./make-test.nix ({ pkgs, ...} : {
name = "containers-tmpfs"; name = "containers-tmpfs";
meta = with pkgs.stdenv.lib.maintainers; { meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ ckampka ]; maintainers = [ kampka ];
}; };
machine = machine =

View File

@ -1,16 +1,10 @@
# Test printing via CUPS. # Test printing via CUPS.
import ./make-test.nix ({pkgs, ... }: { import ./make-test.nix ({pkgs, ... }:
name = "printing"; let
meta = with pkgs.stdenv.lib.maintainers; { printingServer = startWhenNeeded: {
maintainers = [ domenkozar eelco matthewbauer ]; services.printing.enable = true;
}; services.printing.startWhenNeeded = startWhenNeeded;
nodes = {
server =
{ ... }:
{ services.printing.enable = true;
services.printing.listenAddresses = [ "*:631" ]; services.printing.listenAddresses = [ "*:631" ];
services.printing.defaultShared = true; services.printing.defaultShared = true;
services.printing.extraConf = services.printing.extraConf =
@ -21,44 +15,69 @@ import ./make-test.nix ({pkgs, ... }: {
</Location> </Location>
''; '';
networking.firewall.allowedTCPPorts = [ 631 ]; 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";
}; };
client = in
{ ... }:
{ services.printing.enable = true; {
name = "printing";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ domenkozar eelco matthewbauer ];
}; };
nodes = {
socketActivatedServer = { ... }: (printingServer true);
serviceServer = { ... }: (printingServer false);
socketActivatedClient = { ... }: (printingClient true);
serviceClient = { ... }: (printingClient false);
}; };
testScript = testScript =
'' ''
startAll; startAll;
# 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; $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. # Test that UNIX socket is used for connections.
$client->succeed("lpstat -H") =~ "/run/cups/cups.sock" or die; $client->succeed("lpstat -H") =~ "/var/run/cups/cups.sock" or die;
# Test that HTTP server is available too. # Test that HTTP server is available too.
$client->succeed("curl --fail http://localhost:631/"); $client->succeed("curl --fail http://localhost:631/");
$client->succeed("curl --fail http://server:631/"); $client->succeed("curl --fail http://$serverHostname:631/");
$server->fail("curl --fail --connect-timeout 2 http://client:631/"); $server->fail("curl --fail --connect-timeout 2 http://$clientHostname: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. # Do some status checks.
$client->succeed("lpstat -a") =~ /DeskjetRemote accepting requests/ or die; $client->succeed("lpstat -a") =~ /DeskjetRemote accepting requests/ or die;
$client->succeed("lpstat -h server:631 -a") =~ /DeskjetLocal accepting requests/ or die; $client->succeed("lpstat -h $serverHostname:631 -a") =~ /DeskjetLocal accepting requests/ or die;
$client->succeed("cupsdisable DeskjetRemote"); $client->succeed("cupsdisable DeskjetRemote");
$client->succeed("lpq") =~ /DeskjetRemote is not ready.*no entries/s or die; $client->succeed("lpq") =~ /DeskjetRemote is not ready.*no entries/s or die;
$client->succeed("cupsenable DeskjetRemote"); $client->succeed("cupsenable DeskjetRemote");
$client->succeed("lpq") =~ /DeskjetRemote is ready.*no entries/s or die; $client->succeed("lpq") =~ /DeskjetRemote is ready.*no entries/s or die;
# Test printing various file types. # Test printing various file types.
foreach my $file ("${pkgs.groff.doc}/share/doc/*/examples/mom/penguin.pdf", foreach my $file ("${pkgs.groff.doc}/share/doc/*/examples/mom/penguin.pdf",
"${pkgs.groff.doc}/share/doc/*/meref.ps", "${pkgs.groff.doc}/share/doc/*/meref.ps",
@ -66,27 +85,20 @@ import ./make-test.nix ({pkgs, ... }: {
"${pkgs.pcre.doc}/share/doc/pcre/pcre.txt") "${pkgs.pcre.doc}/share/doc/pcre/pcre.txt")
{ {
$file =~ /([^\/]*)$/; my $fn = $1; $file =~ /([^\/]*)$/; my $fn = $1;
subtest "print $fn", sub { subtest "print $fn", sub {
# Print the file on the client. # Print the file on the client.
$client->succeed("lp $file"); $client->succeed("lp $file");
$client->sleep(10); $client->waitUntilSucceeds("lpq | grep -q -E 'active.*root.*$fn'");
$client->succeed("lpq") =~ /active.*root.*$fn/ or die;
# Ensure that a raw PCL file appeared in the server's queue # Ensure that a raw PCL file appeared in the server's queue
# (showing that the right filters have been applied). Of # (showing that the right filters have been applied). Of
# course, since there is no actual USB printer attached, the # course, since there is no actual USB printer attached, the
# file will stay in the queue forever. # file will stay in the queue forever.
$server->waitForFile("/var/spool/cups/d*-001"); $server->waitForFile("/var/spool/cups/d*-001");
$server->sleep(10); $server->waitUntilSucceeds("lpq -a | grep -q -E '$fn'");
$server->succeed("lpq -a") =~ /$fn/ or die;
# Delete the job on the client. It should disappear on the # Delete the job on the client. It should disappear on the
# server as well. # server as well.
$client->succeed("lprm"); $client->succeed("lprm");
$client->sleep(10); $client->waitUntilSucceeds("lpq -a | grep -q -E 'no entries'");
$client->succeed("lpq -a") =~ /no entries/;
Machine::retry sub { Machine::retry sub {
return 1 if $server->succeed("lpq -a") =~ /no entries/; return 1 if $server->succeed("lpq -a") =~ /no entries/;
}; };
@ -95,5 +107,8 @@ import ./make-test.nix ({pkgs, ... }: {
$server->execute("rm /var/spool/cups/*"); $server->execute("rm /var/spool/cups/*");
}; };
} }
}
testPrinting($serviceClient, $serviceServer);
testPrinting($socketActivatedClient, $socketActivatedServer);
''; '';
}) })

View File

@ -6,11 +6,11 @@
mkDerivation rec { mkDerivation rec {
pname = "musescore"; pname = "musescore";
version = "3.0.5"; version = "3.2.3";
src = fetchzip { src = fetchzip {
url = "https://download.musescore.com/releases/MuseScore-${version}/MuseScore-${version}.zip"; url = "https://github.com/musescore/MuseScore/releases/download/v${version}/MuseScore-${version}.zip";
sha256 = "1pbf6v0l3nixxr8k5igwhj09wnqvw92av6q6yjrbb3kyjh5br2d8"; sha256 = "17mr0c8whw6vz86lp1j36rams4h8virc4z68fld0q3rpq6g05szs";
stripRoot = false; stripRoot = false;
}; };

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, cmake, pkgconfig, xlibsWrapper { stdenv, mkDerivation, fetchurl, cmake, pkgconfig, xlibsWrapper
, qtbase, qttools, qtmultimedia, qtx11extras , qtbase, qttools, qtmultimedia, qtx11extras
# transports # transports
, curl, libmms , curl, libmms
@ -28,7 +28,7 @@
# Qmmp installs working .desktop file(s) all by itself, so we don't need to # Qmmp installs working .desktop file(s) all by itself, so we don't need to
# handle that. # handle that.
stdenv.mkDerivation rec { mkDerivation rec {
name = "qmmp-1.3.3"; name = "qmmp-1.3.3";
src = fetchurl { src = fetchurl {

View File

@ -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 mkDerivation rec {
version = "1.1.1-git1-20180828";
in
stdenv.mkDerivation {
pname = "sayonara-player"; pname = "sayonara-player";
inherit version; version = "1.5.1-stable5";
src = fetchurl { src = fetchgit {
url = "https://sayonara-player.com/sw/sayonara-player-${version}.tar.gz"; url = "https://git.sayonara-player.com/sayonara.git";
sha256 = "0rvy47qvavrp03zjdrw025dmq9fq5aaii3q1qq8b94byarl0c5kn"; rev = version;
sha256 = "13l7r3gaszrkyf4z8rdijfzxvcnilax4ki2mcm30wqk8d4g4qdzj";
}; };
nativeBuildInputs = [ cmake pkgconfig ]; # all this can go with version 1.5.2
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)
postPatch = '' postPatch = ''
substituteInPlace src/GUI/Resources/Icons/CMakeLists.txt \ # if we don't delete this, sayonara will look here instead of the provided taglib
--replace "/usr/share" "$out/share" 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 nativeBuildInputs = [ cmake ninja pkgconfig qttools ];
# /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> 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"; NIX_CFLAGS_COMPILE = "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0";
meta = with stdenv.lib; postInstall = ''
{ description = "Sayonara music player"; qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
homepage = https://sayonara-player.com/; '';
meta = with lib; {
description = "Sayonara music player";
homepage = "https://sayonara-player.com/";
license = licenses.gpl3; license = licenses.gpl3;
platforms = platforms.linux; maintainers = with maintainers; [ deepfire ];
maintainers = [ maintainers.deepfire ]; platforms = platforms.unix;
}; };
} }

View File

@ -78,8 +78,6 @@ stdenv.mkDerivation {
buildInputs = [ squashfsTools makeWrapper ]; buildInputs = [ squashfsTools makeWrapper ];
doConfigure = false;
doBuild = false;
dontStrip = true; dontStrip = true;
dontPatchELF = true; dontPatchELF = true;

View 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;
};
}

View File

@ -2,7 +2,7 @@
buildGoPackage rec { buildGoPackage rec {
pname = "go-ethereum"; pname = "go-ethereum";
version = "1.9.2"; version = "1.9.3";
goPackagePath = "github.com/ethereum/go-ethereum"; goPackagePath = "github.com/ethereum/go-ethereum";
@ -17,7 +17,7 @@ buildGoPackage rec {
owner = "ethereum"; owner = "ethereum";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "0lymwylh4j63fzj9jy7mcw676a2ksgpsj9mazif1r3d2q73h9m88"; sha256 = "0lv6gxp34j26hqazcvyr4c7rsl1vljm6cfzkcmlapsjdgym505bg";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
++ optional withQt5 "--enable-liblightdm-qt5"; ++ optional withQt5 "--enable-liblightdm-qt5";
installFlags = [ installFlags = [
"sysconfdir=${placeholder ''out''}/etc" "sysconfdir=${placeholder "out"}/etc"
"localstatedir=\${TMPDIR}" "localstatedir=\${TMPDIR}"
]; ];

View File

@ -1,5 +0,0 @@
{ parinfer-rust }:
{
inherit parinfer-rust;
}

View 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 { };
}

View 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;
};
}

View 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;
};
}

View 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;
};
}

View 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;
};
}

View File

@ -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;
};
}

View File

@ -1,12 +1,12 @@
{ lib, fetchFromGitHub }: { lib, fetchFromGitHub }:
rec { rec {
version = "8.1.1866"; version = "8.1.1967";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "vim"; owner = "vim";
repo = "vim"; repo = "vim";
rev = "v${version}"; rev = "v${version}";
sha256 = "00db529ynin71b5drch9rd9l85bcqdpbsl3mcc0xnv770f97sa0w"; sha256 = "0cdfi67jwv8j982i1jxdfqv4aqglig8f0hzadgygk69i0wwkymwk";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -26,11 +26,10 @@ stdenv.mkDerivation rec {
url = https://github.com/EUA/wxHexEditor/commit/d0fa3ddc3e9dc9b05f90b650991ef134f74eed01.patch; url = https://github.com/EUA/wxHexEditor/commit/d0fa3ddc3e9dc9b05f90b650991ef134f74eed01.patch;
sha256 = "1wcb70hrnhq72frj89prcqylpqs74xrfz3kdfdkq84p5qfz9svyj"; sha256 = "1wcb70hrnhq72frj89prcqylpqs74xrfz3kdfdkq84p5qfz9svyj";
}) })
./missing-semicolon.patch
]; ];
buildPhase = '' makeFlags = [ "OPTFLAGS=-fopenmp" ];
make OPTFLAGS="-fopenmp"
'';
meta = { meta = {
description = "Hex Editor / Disk Editor for Huge Files or Devices"; description = "Hex Editor / Disk Editor for Huge Files or Devices";

View File

@ -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();
}
-

View 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 ];
};
}

View File

@ -7,7 +7,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "dbeaver-ce"; pname = "dbeaver-ce";
version = "6.1.4"; version = "6.1.5";
desktopItem = makeDesktopItem { desktopItem = makeDesktopItem {
name = "dbeaver"; name = "dbeaver";
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz"; url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz";
sha256 = "1l4skcannbzddhm773dm3hwv3a7b3xy569gydcfczgdlgzgmlfjq"; sha256 = "0lkycm1152wd56i1hjq7q3sd05h51fyz99qr2n65lwi33vz2qk9m";
}; };
installPhase = '' installPhase = ''
@ -65,6 +65,6 @@ stdenv.mkDerivation rec {
''; '';
license = licenses.asl20; license = licenses.asl20;
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
maintainers = [ maintainers.samueldr ]; maintainers = [ maintainers.jojosch ];
}; };
} }

View File

@ -1,9 +1,9 @@
{ stdenv, fetchgit, cmake, file, qtbase, qttools, solid }: { stdenv, mkDerivation, fetchgit, cmake, file, qtbase, qttools, solid }:
let let
version = "git-2016-01-10"; version = "git-2016-01-10";
in in
stdenv.mkDerivation { mkDerivation {
pname = "dfilemanager"; pname = "dfilemanager";
inherit version; inherit version;
src = fetchgit { src = fetchgit {
@ -14,7 +14,7 @@ stdenv.mkDerivation {
buildInputs = [ cmake qtbase qttools file solid ]; buildInputs = [ cmake qtbase qttools file solid ];
cmakeFlags = "-DQT5BUILD=true"; cmakeFlags = [ "-DQT5BUILD=true" ];
meta = { meta = {
homepage = http://dfilemanager.sourceforge.net/; homepage = http://dfilemanager.sourceforge.net/;

View File

@ -1,14 +1,15 @@
{ stdenv, fetchgit, autoreconfHook, pkgconfig, libxml2 }: { stdenv, fetchgit, autoreconfHook, pkgconfig, libxml2 }:
stdenv.mkDerivation { stdenv.mkDerivation rec {
name = "evtest-1.33"; pname = "evtest";
version = "1.34";
nativeBuildInputs = [ autoreconfHook pkgconfig ]; nativeBuildInputs = [ autoreconfHook pkgconfig ];
buildInputs = [ libxml2 ]; buildInputs = [ libxml2 ];
src = fetchgit { src = fetchgit {
url = "git://anongit.freedesktop.org/evtest"; url = "git://anongit.freedesktop.org/${pname}";
rev = "refs/tags/evtest-1.33"; rev = "refs/tags/${pname}-${version}";
sha256 = "168gdhzj11f4nk94a6z696sm8v1njzwww69bn6wr97l17897913g"; sha256 = "168gdhzj11f4nk94a6z696sm8v1njzwww69bn6wr97l17897913g";
}; };

View File

@ -2,11 +2,11 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "gallery_dl"; pname = "gallery_dl";
version = "1.10.2"; version = "1.10.3";
src = python3Packages.fetchPypi { src = python3Packages.fetchPypi {
inherit pname version; inherit pname version;
sha256 = "09q9l747vv6nrkscj08dv970qs6nm2azjcm015xf3bd5ab91l44r"; sha256 = "1ippn0zbjy69n178vh4wgyzy6723ynvj2w23mzqw7v2mzcvkhmdz";
}; };
doCheck = false; doCheck = false;

View File

@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
]; ];
makeFlags = [ makeFlags = [
"prefix=${placeholder ''out''}" "prefix=${placeholder "out"}"
"GTK=3" "GTK=3"
"CC=cc" "CC=cc"
"CXX=c++" "CXX=c++"

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "josm"; pname = "josm";
version = "15238"; version = "15322";
src = fetchurl { src = fetchurl {
url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar"; url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
sha256 = "0zh84glb4545av0s1qnccqqp8nrnfsr7rnwgbqpwwzvc2ngk91gv"; sha256 = "1i6cxs6rvqjwh7yfji5701xdzpnaxcv97gsd692fjrwasnsx1f1i";
}; };
buildInputs = [ jdk11 makeWrapper ]; buildInputs = [ jdk11 makeWrapper ];

View File

@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
patches = [ add-apocrypha add-install-target ]; patches = [ add-apocrypha add-install-target ];
makeFlags = [ makeFlags = [
"PREFIX=${placeholder ''out''}" "PREFIX=${placeholder "out"}"
]; ];
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -64,8 +64,8 @@ stdenv.mkDerivation rec {
# fix paths # fix paths
makeFlags = [ makeFlags = [
"INTROSPECTION_GIRDIR=${placeholder ''out''}/share/gir-1.0/" "INTROSPECTION_GIRDIR=${placeholder "out"}/share/gir-1.0/"
"INTROSPECTION_TYPELIBDIR=${placeholder ''out''}/lib/girepository-1.0" "INTROSPECTION_TYPELIBDIR=${placeholder "out"}/lib/girepository-1.0"
]; ];
# Make plank's application launcher hidden in Pantheon # Make plank's application launcher hidden in Pantheon

View File

@ -1,4 +1,4 @@
{ stdenv, lib, fetchurl { stdenv, lib, fetchurl, makeWrapper
, autoreconfHook, pkgconfig, libxkbcommon, pango, which, git , autoreconfHook, pkgconfig, libxkbcommon, pango, which, git
, cairo, libxcb, xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification , cairo, libxcb, xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification
, bison, flex, librsvg, check , bison, flex, librsvg, check
@ -19,11 +19,16 @@ stdenv.mkDerivation rec {
sed -i 's/~root/~nobody/g' test/helper-expand.c 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 buildInputs = [ libxkbcommon pango cairo git bison flex librsvg check
libstartup_notification libxcb xcbutil xcbutilwm xcbutilxrm which libstartup_notification libxcb xcbutil xcbutilwm xcbutilxrm which
]; ];
postInstall = ''
wrapProgram $out/bin/rofi-theme-selector \
--prefix XDG_DATA_DIRS : $out/share
'';
doCheck = false; doCheck = false;
meta = with lib; { meta = with lib; {

View File

@ -1,55 +1,40 @@
{ stdenv, fetchurl, docbook_xsl, dbus, dbus-glib, expat { at-spi2-core, cmake, dbus, dbus-glib, docbook_xsl, epoxy, fetchpatch, fetchFromGitHub
, gsettings-desktop-schemas, gdk-pixbuf, gtk3, hicolor-icon-theme , glib, gtk3, harfbuzz, hicolor-icon-theme, libXdmcp, libXtst, libpthreadstubs
, imagemagick, itstool, librsvg, libtool, libxslt, makeWrapper , libselinux, libsepol, libtasn1, libxkbcommon, libxslt, p11-kit, pcre
, pkgconfig, python, pythonPackages, vte , pkgconfig, stdenv, utillinuxMinimal, vte, wrapGAppsHook, xmlto
, wrapGAppsHook}: }:
# TODO: Still getting following warning. stdenv.mkDerivation rec {
# 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 {
pname = "roxterm"; pname = "roxterm";
inherit version; version = "3.7.5";
src = fetchurl { src = fetchFromGitHub {
url = "mirror://sourceforge/roxterm/${pname}-${version}.tar.xz"; owner = "realh";
sha256 = "0vjh7k4jm4bd01j88w9bmvq27zqsajjzy131fpi81zkii5lisl1k"; repo = "roxterm";
rev = version;
sha256 = "042hchvgk9jzz035zsgnfhh8105zvspbzz6b78waylsdlgqn0pp1";
}; };
nativeBuildInputs = [ pkgconfig wrapGAppsHook ]; patches = [
# This is the commit directly after v3.7.5. It is needed to get roxterm to
buildInputs = # build correctly. It can be removed when v3.7.6 (or v3.8.0) has been
[ docbook_xsl expat imagemagick itstool librsvg libtool libxslt # released.
makeWrapper python pythonPackages.lockfile dbus dbus-glib (fetchpatch {
gdk-pixbuf gsettings-desktop-schemas gtk3 url = "https://github.com/realh/roxterm/commit/f7c38fd48bd1810e16d82794bdfb61a9760a2fe1.patch";
hicolor-icon-theme vte ]; sha256 = "1v77b7ilgf8zy1npxxcyc06mq6lck6bi6lw4aksnq3mi61n5znmx";
})
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
]; ];
buildPhase = '' nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook libxslt ];
# Fix up the LD_LIBRARY_PATH so that expat is on it
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${expat.out}/lib"
python mscript.py configure --prefix="$out" --disable-nls --disable-translations buildInputs =
python mscript.py build [ 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
installPhase = '' ];
python mscript.py install
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://roxterm.sourceforge.net/; homepage = "https://github.com/realh/roxterm";
license = licenses.gpl3; license = licenses.gpl3;
description = "Tabbed, VTE-based terminal emulator"; description = "Tabbed, VTE-based terminal emulator";
longDescription = '' longDescription = ''

View File

@ -14,9 +14,9 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];
buildInputs = [ glib pcre json-glib ]; buildInputs = [ glib pcre json-glib ];
cmakeFlags = [ cmakeFlags = [
"-DCHROMIUM_MANIFEST_DESTINATION=${placeholder ''out''}/etc/chromium/native-messaging-hosts" "-DCHROMIUM_MANIFEST_DESTINATION=${placeholder "out"}/etc/chromium/native-messaging-hosts"
"-DCHROME_MANIFEST_DESTINATION=${placeholder ''out''}/etc/opt/chrome/native-messaging-hosts" "-DCHROME_MANIFEST_DESTINATION=${placeholder "out"}/etc/opt/chrome/native-messaging-hosts"
"-DFIREFOX_MANIFEST_DESTINATION=${placeholder ''out''}/lib/mozilla/native-messaging-hosts" "-DFIREFOX_MANIFEST_DESTINATION=${placeholder "out"}/lib/mozilla/native-messaging-hosts"
]; ];
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -5,13 +5,13 @@
buildGoModule rec { buildGoModule rec {
pname = "wtf"; pname = "wtf";
version = "0.20.0"; version = "0.21.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "wtfutil"; owner = "wtfutil";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "03k3x3fnxz23b75n5x8mlr6srr063q3dwq05wh55b4bgqsf7lgzd"; sha256 = "0sd8vrx7nak0by4whdmd9jzr66zm48knv1w1aqi90709fv98brm9";
}; };
modSha256 = "1nqnjpkrjbb75yfbzh3v3vc4xy5a2aqm9jr40hwq589a4l9p5pw2"; modSha256 = "1nqnjpkrjbb75yfbzh3v3vc4xy5a2aqm9jr40hwq589a4l9p5pw2";

View File

@ -8,12 +8,12 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2.19"; version = "2.20";
pname = "links2"; pname = "links2";
src = fetchurl { src = fetchurl {
url = "${meta.homepage}/download/links-${version}.tar.bz2"; url = "${meta.homepage}/download/links-${version}.tar.bz2";
sha256 = "02ls11c02p7xvsdjyb43rrzr850i1yly003r812z0w5vv5yqqxbh"; sha256 = "0bchwqa87dc8cb55spyybkqpc456pp4x2n9aw587wr7pn96cvp9v";
}; };
buildInputs = with stdenv.lib; buildInputs = with stdenv.lib;

View File

@ -9,8 +9,6 @@ stdenv.mkDerivation {
outputs = [ "out" "man" ]; outputs = [ "out" "man" ];
doBuild = false;
installPhase = '' installPhase = ''
mkdir -p \ mkdir -p \
"$out/bin" \ "$out/bin" \

View File

@ -53,11 +53,11 @@ stdenv.mkDerivation {
]; ];
configureFlags = [ configureFlags = [
"--with-nautilus-extension-dir=${placeholder ''nautilusExtension''}/lib/nautilus/extensions-3.0" "--with-nautilus-extension-dir=${placeholder "nautilusExtension"}/lib/nautilus/extensions-3.0"
]; ];
makeFlags = [ makeFlags = [
"EMBLEM_DIR=${placeholder ''nautilusExtension''}/share/nautilus-dropbox/emblems" "EMBLEM_DIR=${placeholder "nautilusExtension"}/share/nautilus-dropbox/emblems"
]; ];
meta = { meta = {

View File

@ -3,19 +3,19 @@
let let
common = { stname, target, postInstall ? "" }: common = { stname, target, postInstall ? "" }:
buildGoModule rec { buildGoModule rec {
version = "1.2.1"; version = "1.2.2";
name = "${stname}-${version}"; name = "${stname}-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "syncthing"; owner = "syncthing";
repo = "syncthing"; repo = "syncthing";
rev = "v${version}"; rev = "v${version}";
sha256 = "0q1x6kd5kaij8mvs6yll2vqfzrbb31y5hpg6g5kjc8gngwv4rl6v"; sha256 = "0zkyjnjrla0vpvidwwr4z4kxc9cyjcfbjdzsr34xz7rw3jswswm9";
}; };
goPackagePath = "github.com/syncthing/syncthing"; goPackagePath = "github.com/syncthing/syncthing";
modSha256 = "1daixrpdj97ck02853hwp8l158sja5a7a37h0gdbwb1lgf5hsn05"; modSha256 = "0pp2gjx227crggph924q7sg6ak8nyl8nlsffpmawq4zl1908lsrd";
patches = [ patches = [
./add-stcli-target.patch ./add-stcli-target.patch

View File

@ -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)

View File

@ -47,6 +47,8 @@ stdenv.mkDerivation rec {
# Should probably be removed next version bump # Should probably be removed next version bump
CXXFLAGS = [ "-Wno-deprecated-declarations" ]; CXXFLAGS = [ "-Wno-deprecated-declarations" ];
patches = [ ./cmake_check_symbol_exists.patch ];
postPatch = '' postPatch = ''
patchShebangs . patchShebangs .
''; '';

View File

@ -36,9 +36,6 @@ let
qtbase qtdeclarative qtsvg qtlocation qtwebchannel qtwebengine qtbase qtdeclarative qtsvg qtlocation qtwebchannel qtwebengine
]; ];
doConfigure = false;
doBuild = false;
installPhase = '' installPhase = ''
# Extract eagle tarball # Extract eagle tarball
mkdir "$out" mkdir "$out"

View File

@ -16,7 +16,7 @@ stdenv.mkDerivation {
# This uses '/bin/bash', '/usr/local' and 'lex' by default # This uses '/bin/bash', '/usr/local' and 'lex' by default
makeFlags = [ makeFlags = [
"PREFIX=${placeholder ''out''}" "PREFIX=${placeholder "out"}"
"LEX=flex" "LEX=flex"
"RGBDEF=${netpbm}/share/netpbm/misc/rgb.txt" "RGBDEF=${netpbm}/share/netpbm/misc/rgb.txt"
]; ];

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
''; '';
makeFlags = [ makeFlags = [
"PREFIX=${placeholder ''out''}" "PREFIX=${placeholder "out"}"
"ENABLE_MAN=yes" "ENABLE_MAN=yes"
"DOCBOOK_XSL=${docbook_xsl}/share/xml/docbook-xsl-nons/manpages/docbook.xsl" "DOCBOOK_XSL=${docbook_xsl}/share/xml/docbook-xsl-nons/manpages/docbook.xsl"
]; ];

View File

@ -21,9 +21,9 @@ stdenv.mkDerivation rec {
]; ];
makeFlags = [ makeFlags = [
"PREFIX=${placeholder ''out''}" "PREFIX=${placeholder "out"}"
"INSTALL_LIB=${placeholder ''out''}/bin" "INSTALL_LIB=${placeholder "out"}/bin"
"INSTALL_MAN=${placeholder ''out''}/share/man/man1" "INSTALL_MAN=${placeholder "out"}/share/man/man1"
]; ];
patches = [ patches = [

View File

@ -43,15 +43,15 @@ assert vdpauSupport -> libvdpau != null;
assert useWayland -> wayland != null && wayland-protocols != null && waylandpp != null && libxkbcommon != null; assert useWayland -> wayland != null && wayland-protocols != null && waylandpp != null && libxkbcommon != null;
let let
kodiReleaseDate = "20190627"; kodiReleaseDate = "20190901";
kodiVersion = "18.3"; kodiVersion = "18.4";
rel = "Leia"; rel = "Leia";
kodi_src = fetchFromGitHub { kodi_src = fetchFromGitHub {
owner = "xbmc"; owner = "xbmc";
repo = "xbmc"; repo = "xbmc";
rev = "${kodiVersion}-${rel}"; rev = "${kodiVersion}-${rel}";
sha256 = "18fbl5hs3aqccrn0m3x7hp95wlafjav0yvrwmb5q3gj24mwf6jld"; sha256 = "1m0295czxabdcqyqf5m94av9d88pzhnzjvyfs1q07xqq82h313p7";
}; };
cmakeProto = fetchurl { cmakeProto = fetchurl {

View File

@ -59,20 +59,21 @@ let
codecs_src = codecs_src =
let let
dir = http://www.mplayerhq.hu/MPlayer/releases/codecs/; dir = http://www.mplayerhq.hu/MPlayer/releases/codecs/;
version = "20071007";
in in
if stdenv.hostPlatform.system == "i686-linux" then fetchurl { if stdenv.hostPlatform.system == "i686-linux" then fetchurl {
url = "${dir}/essential-20071007.tar.bz2"; url = "${dir}/essential-${version}.tar.bz2";
sha256 = "18vls12n12rjw0mzw4pkp9vpcfmd1c21rzha19d7zil4hn7fs2ic"; sha256 = "18vls12n12rjw0mzw4pkp9vpcfmd1c21rzha19d7zil4hn7fs2ic";
} else if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl { } 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"; sha256 = "13xf5b92w1ra5hw00ck151lypbmnylrnznq9hhb0sj36z5wz290x";
} else if stdenv.hostPlatform.system == "powerpc-linux" then fetchurl { } 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"; sha256 = "18mlj8dp4wnz42xbhdk1jlz2ygra6fbln9wyrcyvynxh96g1871z";
} else null; } else null;
codecs = if codecs_src != null then stdenv.mkDerivation { codecs = if codecs_src != null then stdenv.mkDerivation {
name = "MPlayer-codecs-essential-20071007"; pname = "MPlayer-codecs-essential";
src = codecs_src; src = codecs_src;
@ -88,12 +89,13 @@ let
in in
stdenv.mkDerivation { stdenv.mkDerivation rec {
name = "mplayer-1.3.0"; pname = "mplayer";
version = "1.4";
src = fetchurl { src = fetchurl {
url = "http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.3.0.tar.xz"; url = "http://www.mplayerhq.hu/MPlayer/releases/MPlayer-${version}.tar.xz";
sha256 = "0hwqn04bdknb2ic88xd75smffxx63scvz0zvwvjb56nqj9n89l1s"; sha256 = "0j5mflr0wnklxsvnpmxvk704hscyn2785hvvihj2i3a7b3anwnc2";
}; };
prePatch = '' prePatch = ''
@ -218,6 +220,6 @@ stdenv.mkDerivation {
homepage = http://mplayerhq.hu; homepage = http://mplayerhq.hu;
license = "GPL"; license = "GPL";
maintainers = [ stdenv.lib.maintainers.eelco ]; maintainers = [ stdenv.lib.maintainers.eelco ];
platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
}; };
} }

View File

@ -1,7 +1,14 @@
{ stdenv, mkDerivationWith, fetchFromGitHub { stdenv, mkDerivationWith, fetchFromGitHub, fetchpatch
, doxygen, python3Packages, libopenshot , doxygen, python3Packages, libopenshot
, wrapGAppsHook, gtk3 }: , wrapGAppsHook, gtk3 }:
let
fixPermissions = fetchpatch rec {
url = https://github.com/OpenShot/openshot-qt/pull/2973.patch;
sha256 = "037rh0p3k4sdzprlpyb73byjq3qhqk5zd0d4iin6bq602r8bbp0n";
};
in
mkDerivationWith python3Packages.buildPythonApplication rec { mkDerivationWith python3Packages.buildPythonApplication rec {
pname = "openshot-qt"; pname = "openshot-qt";
version = "2.4.4"; version = "2.4.4";
@ -13,6 +20,8 @@ mkDerivationWith python3Packages.buildPythonApplication rec {
sha256 = "0mg63v36h7l8kv2sgf6x8c1n3ygddkqqwlciz7ccxpbm4x1idqba"; sha256 = "0mg63v36h7l8kv2sgf6x8c1n3ygddkqqwlciz7ccxpbm4x1idqba";
}; };
patches = [ fixPermissions ];
nativeBuildInputs = [ doxygen wrapGAppsHook ]; nativeBuildInputs = [ doxygen wrapGAppsHook ];
buildInputs = [ gtk3 ]; buildInputs = [ gtk3 ];

View File

@ -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;
};
}

View File

@ -56,8 +56,6 @@ stdenv.mkDerivation {
} }
''; '';
doConfigure = false;
buildPhase = '' buildPhase = ''
# Build kernel modules. # Build kernel modules.
cd src cd src

View File

@ -1,36 +1,40 @@
{ stdenv, fetchurl, cmake, gettext { stdenv, fetchFromGitHub, cmake, gettext, perl, asciidoc
, libjpeg, libtiff, libungif, libpng, imlib, expat , libjpeg, libtiff, libungif, libpng, imlib, expat
, freetype, fontconfig, pkgconfig, gdk-pixbuf , freetype, fontconfig, pkgconfig, gdk-pixbuf
, mkfontdir, libX11, libXft, libXext, libXinerama , mkfontdir, libX11, libXft, libXext, libXinerama
, libXrandr, libICE, libSM, libXpm, libXdmcp, libxcb , libXrandr, libICE, libSM, libXpm, libXdmcp, libxcb
, libpthreadstubs, pcre }: , libpthreadstubs, pcre, libXdamage, libXcomposite, libXfixes
, libsndfile, fribidi }:
with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "icewm"; pname = "icewm";
version = "1.4.2"; version = "1.6.0";
buildInputs = src = fetchFromGitHub {
[ cmake gettext libjpeg libtiff libungif libpng imlib expat owner = "bbidulock";
freetype fontconfig pkgconfig gdk-pixbuf mkfontdir libX11 repo = "icewm";
libXft libXext libXinerama libXrandr libICE libSM libXpm rev = version;
libXdmcp libxcb libpthreadstubs pcre ]; sha256 = "1l8hjmb19d7ds7z21cx207h86wkjcmmmamcnalgkwh4alvbawc2p";
src = fetchurl {
url = "https://github.com/bbidulock/icewm/archive/${version}.tar.gz";
sha256 = "05chzjjnb4n4j05ld2gmhhr07c887qb4j9inwg9izhvml51af1bw";
}; };
preConfigure = '' nativeBuildInputs = [ cmake pkgconfig perl asciidoc ];
export cmakeFlags="-DPREFIX=$out -DCFGDIR=/etc/icewm"
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 ] ++ meta = with stdenv.lib; {
stdenv.lib.optional stdenv.hostPlatform.isMusl ./musl.patch;
patchFlags = [ "-p0" ];
meta = {
description = "A simple, lightweight X window manager"; description = "A simple, lightweight X window manager";
longDescription = '' longDescription = ''
IceWM is a window manager for the X Window System. The goal of IceWM is a window manager for the X Window System. The goal of

View File

@ -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;
}
}

View File

@ -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;

View File

@ -5,13 +5,13 @@
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "nix-prefetch-github"; pname = "nix-prefetch-github";
version = "2.3"; version = "2.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "seppeljordan"; owner = "seppeljordan";
repo = "nix-prefetch-github"; repo = "nix-prefetch-github";
rev = "v${version}"; rev = "v${version}";
sha256 = "0b2hgfyxhlqq6lyi5cr98dz6if5kl6b3kq67f2lzfkalydywl1dh"; sha256 = "13wvq13iiva97a16kahfpxar5ppb015nnbn7d4v9s9jyxdickc2c";
}; };
propagatedBuildInputs = with python3.pkgs; [ propagatedBuildInputs = with python3.pkgs; [

View File

@ -381,4 +381,37 @@ rec {
# Copy a list of paths to the Nix store. # Copy a list of paths to the Nix store.
copyPathsToStore = builtins.map copyPathToStore; 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";
};
} }

View File

@ -1,7 +1,7 @@
{ stdenv, fetchzip }: { stdenv, fetchzip }:
let let
version = "2.2.1"; version = "2.3.0";
in fetchzip { in fetchzip {
name = "iosevka-bin-${version}"; name = "iosevka-bin-${version}";
@ -12,7 +12,7 @@ in fetchzip {
unzip -j $downloadedFile \*.ttc -d $out/share/fonts/iosevka unzip -j $downloadedFile \*.ttc -d $out/share/fonts/iosevka
''; '';
sha256 = "0d5ys9k8adj9v1hpwbmjqshzpjlnyj81xwp0328vc5q8pvjcfly6"; sha256 = "0nry6zsmvcj44rijhbvrry84rh5hrixzb4n1mx9c27vvpy33a56w";
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://be5invis.github.io/Iosevka/; homepage = https://be5invis.github.io/Iosevka/;

View File

@ -1,6 +1,6 @@
{ fetchurl }: { fetchurl }:
fetchurl { fetchurl {
url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/2b4df08d487f0821b932f92392b67fe12dc1d42c.tar.gz"; url = "https://github.com/commercialhaskell/all-cabal-hashes/archive/93bcfb09798da885d29304fa4dab1e234e3b728e.tar.gz";
sha256 = "02d06fr2jr69za5751z25c3x3zspiwdmlhmdmxaj1g48v00gbfag"; sha256 = "1mv5kxqldakapzbmch2b88mynng268njq3dxbkmyzli8fwnllra2";
} }

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "materia-theme"; pname = "materia-theme";
version = "20190315"; version = "20190831";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nana-4"; owner = "nana-4";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "1fpipwvwxjiriqhysqgx51rnax73hyd5jkyxhc2g3y73s5r2xq82"; sha256 = "19b2wyq38wj3id0an47jln1y3zp5ih3kbrgmfpjp6bbdrmfcyccf";
}; };
nativeBuildInputs = [ glib libxml2 bc ]; nativeBuildInputs = [ glib libxml2 bc ];

View File

@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
go-dbus-generator go-dbus-generator
]; ];
makeFlags = [ "GOPATH=${placeholder ''out''}/share/go" ]; makeFlags = [ "GOPATH=${placeholder "out"}/share/go" ];
postPatch = '' postPatch = ''
sed -i -e 's:/share/gocode:/share/go:' Makefile sed -i -e 's:/share/gocode:/share/go:' Makefile

View File

@ -30,7 +30,7 @@ mkDerivation rec {
makeFlags = [ makeFlags = [
"DEB_HOST_MULTIARCH=" "DEB_HOST_MULTIARCH="
"PREFIX=${placeholder ''out''}" "PREFIX=${placeholder "out"}"
]; ];
postPatch = '' postPatch = ''

View File

@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
# /usr/share/desktop-directories # /usr/share/desktop-directories
''; '';
makeFlags = [ "PREFIX=${placeholder ''out''}" ]; makeFlags = [ "PREFIX=${placeholder "out"}" ];
doCheck = true; doCheck = true;
checkTarget = "test"; checkTarget = "test";

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
python3Packages.python python3Packages.python
]; ];
makeFlags = [ "PREFIX=${placeholder ''out''}" ]; makeFlags = [ "PREFIX=${placeholder "out"}" ];
postPatch = '' postPatch = ''
sed -e 's/sudo cp/cp/' -i src/generate_mo.py sed -e 's/sudo cp/cp/' -i src/generate_mo.py

View File

@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
propagatedUserEnvPkgs = [ gtk-engine-murrine ]; propagatedUserEnvPkgs = [ gtk-engine-murrine ];
makeFlags = [ "PREFIX=${placeholder ''out''}" ]; makeFlags = [ "PREFIX=${placeholder "out"}" ];
passthru.updateScript = deepin.updateScript { inherit ;name = "${pname}-${version}"; }; passthru.updateScript = deepin.updateScript { inherit ;name = "${pname}-${version}"; };

View File

@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
buildTargets = "all hicolor-links"; buildTargets = "all hicolor-links";
installTargets = "install-icons install-cursors"; installTargets = "install-icons install-cursors";
installFlags = [ "PREFIX=${placeholder ''out''}" ]; installFlags = [ "PREFIX=${placeholder "out"}" ];
postInstall = '' postInstall = ''
cp -a ./Sea ./usr/share/icons/hicolor "$out"/share/icons/ cp -a ./Sea ./usr/share/icons/hicolor "$out"/share/icons/

View File

@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
sha256 = "1sw4nrn7q7wk1hpicm05apyc0mihaw42iqm52wb8ib8gm1qiylr9"; sha256 = "1sw4nrn7q7wk1hpicm05apyc0mihaw42iqm52wb8ib8gm1qiylr9";
}; };
makeFlags = [ "PREFIX=${placeholder ''out''}" ]; makeFlags = [ "PREFIX=${placeholder "out"}" ];
passthru.updateScript = deepin.updateScript { inherit ;name = "${pname}-${version}"; }; passthru.updateScript = deepin.updateScript { inherit ;name = "${pname}-${version}"; };

View File

@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
sha256 = "06fqyad9f50gcjsjkh7929yyaprahdjhnd0dr4gl2797a7wysl3f"; sha256 = "06fqyad9f50gcjsjkh7929yyaprahdjhnd0dr4gl2797a7wysl3f";
}; };
makeFlags = [ "PREFIX=${placeholder ''out''}" ]; makeFlags = [ "PREFIX=${placeholder "out"}" ];
postPatch = '' postPatch = ''
sed -i -e 's:/share/gocode:/share/go:' Makefile sed -i -e 's:/share/gocode:/share/go:' Makefile

View File

@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
]; ];
makeFlags = [ makeFlags = [
"PREFIX=${placeholder ''out''}" "PREFIX=${placeholder "out"}"
"GOCACHE=$(TMPDIR)/go-cache" "GOCACHE=$(TMPDIR)/go-cache"
]; ];

View File

@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
''; '';
makeFlags = [ makeFlags = [
"PREFIX=${placeholder ''out''}" "PREFIX=${placeholder "out"}"
"GOCACHE=$(TMPDIR)/go-cache" "GOCACHE=$(TMPDIR)/go-cache"
]; ];

View File

@ -25,7 +25,7 @@ mkDerivation rec {
]; ];
qmakeFlags = [ qmakeFlags = [
"INSTALL_PATH=${placeholder ''out''}/${qtbase.qtPluginPrefix}/platforms" "INSTALL_PATH=${placeholder "out"}/${qtbase.qtPluginPrefix}/platforms"
]; ];
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -57,8 +57,6 @@ lib.makeScope pkgs.newScope (self: with self; {
#### DESKTOP #### DESKTOP
gvfs = pkgs.gvfs.override { gnome = self; };
# Removed from recent GNOME releases, but still required # Removed from recent GNOME releases, but still required
scrollkeeper = callPackage ./desktop/scrollkeeper { }; 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 glib glibmm atk atkmm cairo pango pangomm gdk_pixbuf gtkmm2 libcanberra-gtk2
# Included for backwards compatibility # 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; gtk = pkgs.gtk2;
gtkmm = pkgs.gtkmm2; gtkmm = pkgs.gtkmm2;

View File

@ -23,8 +23,8 @@ stdenv.mkDerivation rec {
]; ];
configureFlags = [ configureFlags = [
"--with-pkcs11-config=${placeholder ''out''}/etc/pkcs11/" # installation directories "--with-pkcs11-config=${placeholder "out"}/etc/pkcs11/" # installation directories
"--with-pkcs11-modules=${placeholder ''out''}/lib/pkcs11/" "--with-pkcs11-modules=${placeholder "out"}/lib/pkcs11/"
]; ];
postPatch = '' postPatch = ''

View File

@ -34,8 +34,8 @@ stdenv.mkDerivation rec {
configureFlags = [ configureFlags = [
"--with-httpd=${apacheHttpd.out}/bin/httpd" "--with-httpd=${apacheHttpd.out}/bin/httpd"
"--with-modules-path=${apacheHttpd.dev}/modules" "--with-modules-path=${apacheHttpd.dev}/modules"
"--with-systemduserunitdir=${placeholder ''out''}/etc/systemd/user" "--with-systemduserunitdir=${placeholder "out"}/etc/systemd/user"
"--with-nautilusdir=${placeholder ''out''}/lib/nautilus/extensions-3.0" "--with-nautilusdir=${placeholder "out"}/lib/nautilus/extensions-3.0"
]; ];
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -12,8 +12,8 @@ stdenv.mkDerivation rec {
domain = "gitlab.gnome.org"; domain = "gitlab.gnome.org";
owner = "GNOME"; owner = "GNOME";
repo = pname; repo = pname;
rev = version; rev = "74e3126b77eb5f27c0ae3f53b0aff2d2eebc15af"; # patches of tip from gnome-3-28 branch
sha256 = "0p8ky306dnm4alkncmsnd8r2awpsi37p0bzvkv313pgqw2hbwq9i"; sha256 = "0gw1n1w3i040w5mv30kkg7g8a59ymjlc5yaklip0ngg8xv76g0zi";
}; };
patches = [ patches = [

View File

@ -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 , pango, cogl, clutter, libstartup_notification, zenity, libcanberra-gtk3
, ninja, xkeyboard_config, libxkbfile, libxkbcommon, libXtst, libinput , ninja, xkeyboard_config, libxkbfile, libxkbcommon, libXtst, libinput
, gsettings-desktop-schemas, glib, gtk3, gnome-desktop , gsettings-desktop-schemas, glib, gtk3, gnome-desktop
@ -55,6 +55,13 @@ stdenv.mkDerivation rec {
src = ./fix-paths.patch; src = ./fix-paths.patch;
inherit zenity; 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 = '' postPatch = ''

View File

@ -53,10 +53,6 @@ lib.makeScope pkgs.newScope (self: with self; {
gjs = callPackage ./core/gjs { }; gjs = callPackage ./core/gjs { };
glib-networking = pkgs.glib-networking.override {
inherit (pkgs) gsettings-desktop-schemas;
};
gnome-backgrounds = callPackage ./core/gnome-backgrounds { }; gnome-backgrounds = callPackage ./core/gnome-backgrounds { };
gnome-bluetooth = callPackage ./core/gnome-bluetooth { }; gnome-bluetooth = callPackage ./core/gnome-bluetooth { };
@ -111,7 +107,7 @@ lib.makeScope pkgs.newScope (self: with self; {
gucharmap = callPackage ./core/gucharmap { }; gucharmap = callPackage ./core/gucharmap { };
gvfs = pkgs.gvfs.override { gnome = gnome3; gnomeSupport = true; }; gvfs = pkgs.gvfs.override { gnomeSupport = true; };
eog = callPackage ./core/eog { }; 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) gsettings-desktop-schemas; # added 2019-04-16
inherit (pkgs) gnome-video-effects; # added 2019-08-19 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) 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; defaultIconTheme = adwaita-icon-theme;
gtk = gtk3; gtk = gtk3;

View 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;
};
}

View 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;

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "gnome-shell-dash-to-panel"; pname = "gnome-shell-dash-to-panel";
version = "19"; version = "23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "home-sweet-gnome"; owner = "home-sweet-gnome";
repo = "dash-to-panel"; repo = "dash-to-panel";
rev = "v${version}"; rev = "v${version}";
sha256 = "0r26ph6zq87kvglydv00rf24mshz7l4r38zf9niyp3mxyzz6rwys"; sha256 = "12smkz3clcvgicr0pdc0fk6igf82nw4hzih1ywv9q43xkqh9w1i6";
}; };
buildInputs = [ buildInputs = [

View File

@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
uuid = "taskwhisperer-extension@infinicode.de"; uuid = "taskwhisperer-extension@infinicode.de";
makeFlags = [ makeFlags = [
"INSTALLBASE=${placeholder ''out''}/share/gnome-shell/extensions" "INSTALLBASE=${placeholder "out"}/share/gnome-shell/extensions"
]; ];
patches = [ patches = [

View File

@ -68,7 +68,7 @@ in stdenv.mkDerivation rec {
doCheck = true; doCheck = true;
configureFlags = [ configureFlags = [
"--with-libpanel-applet-dir=${placeholder ''out''}/share/gnome-panel/applets" "--with-libpanel-applet-dir=${placeholder "out"}/share/gnome-panel/applets"
]; ];
passthru = { passthru = {

View File

@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
switchboard 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; { meta = with stdenv.lib; {
description = "Switchboard Universal Access Plug"; description = "Switchboard Universal Access Plug";

View File

@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
./remove-update-button.patch ./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; { meta = with stdenv.lib; {
description = "Switchboard About Plug"; description = "Switchboard About Plug";

View File

@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
switchboard 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; { meta = with stdenv.lib; {
description = "Switchboard Applications Plug"; description = "Switchboard Applications Plug";

View File

@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
switchboard 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; { meta = with stdenv.lib; {
description = "Switchboard Bluetooth Plug"; description = "Switchboard Bluetooth Plug";

View File

@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
./clock-format.patch ./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; { meta = with stdenv.lib; {
description = "Switchboard Date & Time Plug"; description = "Switchboard Date & Time Plug";

View File

@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
switchboard 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; { meta = with stdenv.lib; {
description = "Switchboard Displays Plug"; description = "Switchboard Displays Plug";

View File

@ -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; { meta = with stdenv.lib; {
description = "Switchboard Keyboard Plug"; description = "Switchboard Keyboard Plug";

View File

@ -54,7 +54,7 @@ stdenv.mkDerivation rec {
switchboard 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; { meta = with stdenv.lib; {
description = "Switchboard Mouse & Touchpad Plug"; description = "Switchboard Mouse & Touchpad Plug";

View File

@ -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; { meta = with stdenv.lib; {
description = "Switchboard Networking Plug"; description = "Switchboard Networking Plug";

View File

@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
switchboard 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; { meta = with stdenv.lib; {
description = "Switchboard Notifications Plug"; description = "Switchboard Notifications Plug";

View File

@ -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; { meta = with stdenv.lib; {
description = "Switchboard Desktop Plug"; description = "Switchboard Desktop Plug";

View File

@ -66,10 +66,10 @@ stdenv.mkDerivation rec {
--subst-var-by GSD_GSETTINGS_PATH ${glib.getSchemaPath elementary-settings-daemon} --subst-var-by GSD_GSETTINGS_PATH ${glib.getSchemaPath elementary-settings-daemon}
''; '';
PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder ''out''}/lib/switchboard"; 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_SYSTEM_BUS_SERVICES_DIR = "${placeholder "out"}/share/dbus-1/system-services";
PKG_CONFIG_DBUS_1_SYSCONFDIR = "${placeholder ''out''}/etc"; PKG_CONFIG_DBUS_1_SYSCONFDIR = "${placeholder "out"}/etc";
PKG_CONFIG_POLKIT_GOBJECT_1_POLICYDIR = "${placeholder ''out''}/share/polkit-1/actions"; PKG_CONFIG_POLKIT_GOBJECT_1_POLICYDIR = "${placeholder "out"}/share/polkit-1/actions";
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Switchboard Power Plug"; description = "Switchboard Power Plug";

View File

@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
switchboard 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; { meta = with stdenv.lib; {
description = "Switchboard Printers Plug"; description = "Switchboard Printers Plug";

Some files were not shown because too many files have changed in this diff Show More