Merge branch 'staging-next' into staging
This commit is contained in:
commit
e5dece4cbf
365
doc/languages-frameworks/ruby.section.md
Normal file
365
doc/languages-frameworks/ruby.section.md
Normal file
@ -0,0 +1,365 @@
|
|||||||
|
---
|
||||||
|
title: Ruby
|
||||||
|
author: Michael Fellinger
|
||||||
|
date: 2019-05-23
|
||||||
|
---
|
||||||
|
|
||||||
|
# Ruby
|
||||||
|
|
||||||
|
## User Guide
|
||||||
|
|
||||||
|
### Using Ruby
|
||||||
|
|
||||||
|
#### Overview
|
||||||
|
|
||||||
|
Several versions of Ruby interpreters are available on Nix, as well as over 250 gems and many applications written in Ruby.
|
||||||
|
The attribute `ruby` refers to the default Ruby interpreter, which is currently
|
||||||
|
MRI 2.5. It's also possible to refer to specific versions, e.g. `ruby_2_6`, `jruby`, or `mruby`.
|
||||||
|
|
||||||
|
In the nixpkgs tree, Ruby packages can be found throughout, depending on what
|
||||||
|
they do, and are called from the main package set. Ruby gems, however are
|
||||||
|
separate sets, and there's one default set for each interpreter (currently MRI
|
||||||
|
only).
|
||||||
|
|
||||||
|
There are two main approaches for using Ruby with gems.
|
||||||
|
One is to use a specifically locked `Gemfile` for an application that has very strict dependencies.
|
||||||
|
The other is to depend on the common gems, which we'll explain further down, and
|
||||||
|
rely on them being updated regularly.
|
||||||
|
|
||||||
|
The interpreters have common attributes, namely `gems`, and `withPackages`. So
|
||||||
|
you can refer to `ruby.gems.nokogiri`, or `ruby_2_5.gems.nokogiri` to get the
|
||||||
|
Nokogiri gem already compiled and ready to use.
|
||||||
|
|
||||||
|
Since not all gems have executables like `nokogiri`, it's usually more
|
||||||
|
convenient to use the `withPackages` function like this:
|
||||||
|
`ruby.withPackages (p: with p; [ nokogiri ])`. This will also make sure that the
|
||||||
|
Ruby in your environment will be able to find the gem and it can be used in your
|
||||||
|
Ruby code (for example via `ruby` or `irb` executables) via `require "nokogiri"`
|
||||||
|
as usual.
|
||||||
|
|
||||||
|
#### Temporary Ruby environment with `nix-shell`
|
||||||
|
|
||||||
|
Rather than having a single Ruby environment shared by all Ruby
|
||||||
|
development projects on a system, Nix allows you to create separate
|
||||||
|
environments per project. `nix-shell` gives you the possibility to
|
||||||
|
temporarily load another environment akin to a combined `chruby` or
|
||||||
|
`rvm` and `bundle exec`.
|
||||||
|
|
||||||
|
There are two methods for loading a shell with Ruby packages. The first and
|
||||||
|
recommended method is to create an environment with `ruby.withPackages` and load
|
||||||
|
that.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
nix-shell -p "ruby.withPackages (ps: with ps; [ nokogiri pry ])"
|
||||||
|
```
|
||||||
|
|
||||||
|
The other method, which is not recommended, is to create an environment and list
|
||||||
|
all the packages directly.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
nix-shell -p ruby.gems.nokogiri ruby.gems.pry
|
||||||
|
```
|
||||||
|
|
||||||
|
Again, it's possible to launch the interpreter from the shell. The Ruby
|
||||||
|
interpreter has the attribute `gems` which contains all Ruby gems for that
|
||||||
|
specific interpreter.
|
||||||
|
|
||||||
|
##### Load environment from `.nix` expression
|
||||||
|
|
||||||
|
As explained in the Nix manual, `nix-shell` can also load an expression from a
|
||||||
|
`.nix` file. Say we want to have Ruby 2.5, `nokogori`, and `pry`. Consider a
|
||||||
|
`shell.nix` file with:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
with import <nixpkgs> {};
|
||||||
|
ruby.withPackages (ps: with ps; [ nokogiri pry ])
|
||||||
|
```
|
||||||
|
|
||||||
|
What's happening here?
|
||||||
|
|
||||||
|
1. We begin with importing the Nix Packages collections. `import <nixpkgs>`
|
||||||
|
imports the `<nixpkgs>` function, `{}` calls it and the `with` statement
|
||||||
|
brings all attributes of `nixpkgs` in the local scope. These attributes form
|
||||||
|
the main package set.
|
||||||
|
2. Then we create a Ruby environment with the `withPackages` function.
|
||||||
|
3. The `withPackages` function expects us to provide a function as an argument
|
||||||
|
that takes the set of all ruby gems and returns a list of packages to include
|
||||||
|
in the environment. Here, we select the packages `nokogiri` and `pry` from
|
||||||
|
the package set.
|
||||||
|
|
||||||
|
##### Execute command with `--run`
|
||||||
|
|
||||||
|
A convenient flag for `nix-shell` is `--run`. It executes a command in the
|
||||||
|
`nix-shell`. We can e.g. directly open a `pry` REPL:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
nix-shell -p "ruby.withPackages (ps: with ps; [ nokogiri pry ])" --run "pry"
|
||||||
|
```
|
||||||
|
|
||||||
|
Or immediately require `nokogiri` in pry:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
nix-shell -p "ruby.withPackages (ps: with ps; [ nokogiri pry ])" --run "pry -rnokogiri"
|
||||||
|
```
|
||||||
|
|
||||||
|
Or run a script using this environment:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
nix-shell -p "ruby.withPackages (ps: with ps; [ nokogiri pry ])" --run "ruby example.rb"
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Using `nix-shell` as shebang
|
||||||
|
|
||||||
|
In fact, for the last case, there is a more convenient method. You can add a
|
||||||
|
[shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) to your script
|
||||||
|
specifying which dependencies `nix-shell` needs. With the following shebang, you
|
||||||
|
can just execute `./example.rb`, and it will run with all dependencies.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
#! /usr/bin/env nix-shell
|
||||||
|
#! nix-shell -i ruby -p "ruby.withPackages (ps: with ps; [ nokogiri rest-client ])"
|
||||||
|
|
||||||
|
require 'nokogiri'
|
||||||
|
require 'rest-client'
|
||||||
|
|
||||||
|
body = RestClient.get('http://example.com').body
|
||||||
|
puts Nokogiri::HTML(body).at('h1').text
|
||||||
|
```
|
||||||
|
|
||||||
|
### Developing with Ruby
|
||||||
|
|
||||||
|
#### Using an existing Gemfile
|
||||||
|
|
||||||
|
In most cases, you'll already have a `Gemfile.lock` listing all your dependencies.
|
||||||
|
This can be used to generate a `gemset.nix` which is used to fetch the gems and
|
||||||
|
combine them into a single environment.
|
||||||
|
The reason why you need to have a separate file for this, is that Nix requires
|
||||||
|
you to have a checksum for each input to your build.
|
||||||
|
Since the `Gemfile.lock` that `bundler` generates doesn't provide us with
|
||||||
|
checksums, we have to first download each gem, calculate its SHA256, and store
|
||||||
|
it in this separate file.
|
||||||
|
|
||||||
|
So the steps from having just a `Gemfile` to a `gemset.nix` are:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
bundle lock
|
||||||
|
bundix
|
||||||
|
```
|
||||||
|
|
||||||
|
If you already have a `Gemfile.lock`, you can simply run `bundix` and it will
|
||||||
|
work the same.
|
||||||
|
|
||||||
|
To update the gems in your `Gemfile.lock`, you may use the `bundix -l` flag,
|
||||||
|
which will create a new `Gemfile.lock` in case the `Gemfile` has a more recent
|
||||||
|
time of modification.
|
||||||
|
|
||||||
|
Once the `gemset.nix` is generated, it can be used in a
|
||||||
|
`bundlerEnv` derivation. Here is an example you could use for your `shell.nix`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
# ...
|
||||||
|
let
|
||||||
|
gems = bundlerEnv {
|
||||||
|
name = "gems-for-some-project";
|
||||||
|
gemdir = ./.;
|
||||||
|
};
|
||||||
|
in mkShell { buildInputs = [ gems gems.wrappedRuby ]; }
|
||||||
|
```
|
||||||
|
|
||||||
|
With this file in your directory, you can run `nix-shell` to build and use the gems.
|
||||||
|
The important parts here are `bundlerEnv` and `wrappedRuby`.
|
||||||
|
|
||||||
|
The `bundlerEnv` is a wrapper over all the gems in your gemset. This means that
|
||||||
|
all the `/lib` and `/bin` directories will be available, and the executables of
|
||||||
|
all gems (even of indirect dependencies) will end up in your `$PATH`.
|
||||||
|
The `wrappedRuby` provides you with all executables that come with Ruby itself,
|
||||||
|
but wrapped so they can easily find the gems in your gemset.
|
||||||
|
|
||||||
|
One common issue that you might have is that you have Ruby 2.6, but also
|
||||||
|
`bundler` in your gemset. That leads to a conflict for `/bin/bundle` and
|
||||||
|
`/bin/bundler`. You can resolve this by wrapping either your Ruby or your gems
|
||||||
|
in a `lowPrio` call. So in order to give the `bundler` from your gemset
|
||||||
|
priority, it would be used like this:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
# ...
|
||||||
|
mkShell { buildInputs = [ gems (lowPrio gems.wrappedRuby) ]; }
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
#### Gem-specific configurations and workarounds
|
||||||
|
|
||||||
|
In some cases, especially if the gem has native extensions, you might need to
|
||||||
|
modify the way the gem is built.
|
||||||
|
|
||||||
|
This is done via a common configuration file that includes all of the
|
||||||
|
workarounds for each gem.
|
||||||
|
|
||||||
|
This file lives at `/pkgs/development/ruby-modules/gem-config/default.nix`,
|
||||||
|
since it already contains a lot of entries, it should be pretty easy to add the
|
||||||
|
modifications you need for your needs.
|
||||||
|
|
||||||
|
In the meanwhile, or if the modification is for a private gem, you can also add
|
||||||
|
the configuration to only your own environment.
|
||||||
|
|
||||||
|
Two places that allow this modification are the `ruby` derivation, or `bundlerEnv`.
|
||||||
|
|
||||||
|
Here's the `ruby` one:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ pg_version ? "10", pkgs ? import <nixpkgs> { } }:
|
||||||
|
let
|
||||||
|
myRuby = pkgs.ruby.override {
|
||||||
|
defaultGemConfig = pkgs.defaultGemConfig // {
|
||||||
|
pg = attrs: {
|
||||||
|
buildFlags =
|
||||||
|
[ "--with-pg-config=${pkgs."postgresql_${pg_version}"}/bin/pg_config" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in myRuby.withPackages (ps: with ps; [ pg ])
|
||||||
|
```
|
||||||
|
|
||||||
|
And an example with `bundlerEnv`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ pg_version ? "10", pkgs ? import <nixpkgs> { } }:
|
||||||
|
let
|
||||||
|
gems = pkgs.bundlerEnv {
|
||||||
|
name = "gems-for-some-project";
|
||||||
|
gemdir = ./.;
|
||||||
|
gemConfig = pkgs.defaultGemConfig // {
|
||||||
|
pg = attrs: {
|
||||||
|
buildFlags =
|
||||||
|
[ "--with-pg-config=${pkgs."postgresql_${pg_version}"}/bin/pg_config" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in mkShell { buildInputs = [ gems gems.wrappedRuby ]; }
|
||||||
|
```
|
||||||
|
|
||||||
|
And finally via overlays:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ pg_version ? "10" }:
|
||||||
|
let
|
||||||
|
pkgs = import <nixpkgs> {
|
||||||
|
overlays = [
|
||||||
|
(self: super: {
|
||||||
|
defaultGemConfig = super.defaultGemConfig // {
|
||||||
|
pg = attrs: {
|
||||||
|
buildFlags = [
|
||||||
|
"--with-pg-config=${
|
||||||
|
pkgs."postgresql_${pg_version}"
|
||||||
|
}/bin/pg_config"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in pkgs.ruby.withPackages (ps: with ps; [ pg ])
|
||||||
|
```
|
||||||
|
|
||||||
|
Then we can get whichever postgresql version we desire and the `pg` gem will
|
||||||
|
always reference it correctly:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ nix-shell --argstr pg_version 9_4 --run 'ruby -rpg -e "puts PG.library_version"'
|
||||||
|
90421
|
||||||
|
|
||||||
|
$ nix-shell --run 'ruby -rpg -e "puts PG.library_version"'
|
||||||
|
100007
|
||||||
|
```
|
||||||
|
|
||||||
|
Of course for this use-case one could also use overlays since the configuration
|
||||||
|
for `pg` depends on the `postgresql` alias, but for demonstration purposes this
|
||||||
|
has to suffice.
|
||||||
|
|
||||||
|
#### Adding a gem to the default gemset
|
||||||
|
|
||||||
|
Now that you know how to get a working Ruby environment with Nix, it's time to
|
||||||
|
go forward and start actually developing with Ruby.
|
||||||
|
We will first have a look at how Ruby gems are packaged on Nix. Then, we will
|
||||||
|
look at how you can use development mode with your code.
|
||||||
|
|
||||||
|
All gems in the standard set are automatically generated from a single
|
||||||
|
`Gemfile`. The dependency resolution is done with `bundler` and makes it more
|
||||||
|
likely that all gems are compatible to each other.
|
||||||
|
|
||||||
|
In order to add a new gem to nixpkgs, you can put it into the
|
||||||
|
`/pkgs/development/ruby-modules/with-packages/Gemfile` and run
|
||||||
|
`./maintainers/scripts/update-ruby-packages`.
|
||||||
|
|
||||||
|
To test that it works, you can then try using the gem with:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
NIX_PATH=nixpkgs=$PWD nix-shell -p "ruby.withPackages (ps: with ps; [ name-of-your-gem ])"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Packaging applications
|
||||||
|
|
||||||
|
A common task is to add a ruby executable to nixpkgs, popular examples would be
|
||||||
|
`chef`, `jekyll`, or `sass`. A good way to do that is to use the `bundlerApp`
|
||||||
|
function, that allows you to make a package that only exposes the listed
|
||||||
|
executables, otherwise the package may cause conflicts through common paths like
|
||||||
|
`bin/rake` or `bin/bundler` that aren't meant to be used.
|
||||||
|
|
||||||
|
The absolute easiest way to do that is to write a
|
||||||
|
`Gemfile` along these lines:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
source 'https://rubygems.org' do
|
||||||
|
gem 'mdl'
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to package a specific version, you can use the standard Gemfile
|
||||||
|
syntax for that, e.g. `gem 'mdl', '0.5.0'`, but if you want the latest stable
|
||||||
|
version anyway, it's easier to update by simply running the `bundle lock` and
|
||||||
|
`bundix` steps again.
|
||||||
|
|
||||||
|
Now you can also also make a `default.nix` that looks like this:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ lib, bundlerApp }:
|
||||||
|
|
||||||
|
bundlerApp {
|
||||||
|
pname = "mdl";
|
||||||
|
gemdir = ./.;
|
||||||
|
exes = [ "mdl" ];
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
All that's left to do is to generate the corresponding `Gemfile.lock` and
|
||||||
|
`gemset.nix` as described above in the `Using an existing Gemfile` section.
|
||||||
|
|
||||||
|
##### Packaging executables that require wrapping
|
||||||
|
|
||||||
|
Sometimes your app will depend on other executables at runtime, and tries to
|
||||||
|
find it through the `PATH` environment variable.
|
||||||
|
|
||||||
|
In this case, you can provide a `postBuild` hook to `bundlerApp` that wraps the
|
||||||
|
gem in another script that prefixes the `PATH`.
|
||||||
|
|
||||||
|
Of course you could also make a custom `gemConfig` if you know exactly how to
|
||||||
|
patch it, but it's usually much easier to maintain with a simple wrapper so the
|
||||||
|
patch doesn't have to be adjusted for each version.
|
||||||
|
|
||||||
|
Here's another example:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ lib, bundlerApp, makeWrapper, git, gnutar, gzip }:
|
||||||
|
|
||||||
|
bundlerApp {
|
||||||
|
pname = "r10k";
|
||||||
|
gemdir = ./.;
|
||||||
|
exes = [ "r10k" ];
|
||||||
|
|
||||||
|
buildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
wrapProgram $out/bin/r10k --prefix PATH : ${lib.makeBinPath [ git gnutar gzip ]}
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
```
|
@ -1225,11 +1225,15 @@
|
|||||||
githubId = 25088352;
|
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";
|
||||||
|
13
maintainers/scripts/update-ruby-packages
Executable file
13
maintainers/scripts/update-ruby-packages
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i bash -p bundler bundix
|
||||||
|
|
||||||
|
set -euf -o pipefail
|
||||||
|
|
||||||
|
(
|
||||||
|
cd pkgs/development/ruby-modules/with-packages
|
||||||
|
rm -f gemset.nix Gemfile.lock
|
||||||
|
bundle lock
|
||||||
|
bundix
|
||||||
|
mv gemset.nix ../../../top-level/ruby-packages.nix
|
||||||
|
rm -f Gemfile.lock
|
||||||
|
)
|
@ -135,7 +135,17 @@
|
|||||||
<literal>./programs/dwm-status.nix</literal>
|
<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"
|
||||||
|
133
nixos/modules/hardware/openrazer.nix
Normal file
133
nixos/modules/hardware/openrazer.nix
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.hardware.openrazer;
|
||||||
|
kernelPackages = config.boot.kernelPackages;
|
||||||
|
|
||||||
|
toPyBoolStr = b: if b then "True" else "False";
|
||||||
|
|
||||||
|
daemonExe = "${pkgs.openrazer-daemon}/bin/openrazer-daemon --config ${daemonConfFile}";
|
||||||
|
|
||||||
|
daemonConfFile = pkgs.writeTextFile {
|
||||||
|
name = "razer.conf";
|
||||||
|
text = ''
|
||||||
|
[General]
|
||||||
|
verbose_logging = ${toPyBoolStr cfg.verboseLogging}
|
||||||
|
|
||||||
|
[Startup]
|
||||||
|
sync_effects_enabled = ${toPyBoolStr cfg.syncEffectsEnabled}
|
||||||
|
devices_off_on_screensaver = ${toPyBoolStr cfg.devicesOffOnScreensaver}
|
||||||
|
mouse_battery_notifier = ${toPyBoolStr cfg.mouseBatteryNotifier}
|
||||||
|
|
||||||
|
[Statistics]
|
||||||
|
key_statistics = ${toPyBoolStr cfg.keyStatistics}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
dbusServiceFile = pkgs.writeTextFile rec {
|
||||||
|
name = "org.razer.service";
|
||||||
|
destination = "/share/dbus-1/services/${name}";
|
||||||
|
text = ''
|
||||||
|
[D-BUS Service]
|
||||||
|
Name=org.razer
|
||||||
|
Exec=${daemonExe}
|
||||||
|
SystemdService=openrazer-daemon.service
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
drivers = [
|
||||||
|
"razerkbd"
|
||||||
|
"razermouse"
|
||||||
|
"razerfirefly"
|
||||||
|
"razerkraken"
|
||||||
|
"razermug"
|
||||||
|
"razercore"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
hardware.openrazer = {
|
||||||
|
enable = mkEnableOption "OpenRazer drivers and userspace daemon.";
|
||||||
|
|
||||||
|
verboseLogging = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to enable verbose logging. Logs debug messages.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
syncEffectsEnabled = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Set the sync effects flag to true so any assignment of
|
||||||
|
effects will work across devices.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
devicesOffOnScreensaver = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Turn off the devices when the systems screensaver kicks in.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
mouseBatteryNotifier = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Mouse battery notifier.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
keyStatistics = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Collects number of keypresses per hour per key used to
|
||||||
|
generate a heatmap.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
boot.extraModulePackages = [ kernelPackages.openrazer ];
|
||||||
|
boot.kernelModules = drivers;
|
||||||
|
|
||||||
|
# Makes the man pages available so you can succesfully run
|
||||||
|
# > systemctl --user help openrazer-daemon
|
||||||
|
environment.systemPackages = [ pkgs.python3Packages.openrazer-daemon.man ];
|
||||||
|
|
||||||
|
services.udev.packages = [ kernelPackages.openrazer ];
|
||||||
|
services.dbus.packages = [ dbusServiceFile ];
|
||||||
|
|
||||||
|
# A user must be a member of the plugdev group in order to start
|
||||||
|
# the openrazer-daemon. Therefore we make sure that the plugdev
|
||||||
|
# group exists.
|
||||||
|
users.groups.plugdev = {};
|
||||||
|
|
||||||
|
systemd.user.services.openrazer-daemon = {
|
||||||
|
description = "Daemon to manage razer devices in userspace";
|
||||||
|
unitConfig.Documentation = "man:openrazer-daemon(8)";
|
||||||
|
# Requires a graphical session so the daemon knows when the screensaver
|
||||||
|
# starts. See the 'devicesOffOnScreensaver' option.
|
||||||
|
wantedBy = [ "graphical-session.target" ];
|
||||||
|
partOf = [ "graphical-session.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "dbus";
|
||||||
|
BusName = "org.razer";
|
||||||
|
ExecStart = "${daemonExe} --foreground";
|
||||||
|
Restart = "always";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
maintainers = with lib.maintainers; [ roelvandijk ];
|
||||||
|
};
|
||||||
|
}
|
135
nixos/modules/hardware/printers.nix
Normal file
135
nixos/modules/hardware/printers.nix
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.hardware.printers;
|
||||||
|
ppdOptionsString = options: optionalString (options != {})
|
||||||
|
(concatStringsSep " "
|
||||||
|
(mapAttrsToList (name: value: "-o '${name}'='${value}'") options)
|
||||||
|
);
|
||||||
|
ensurePrinter = p: ''
|
||||||
|
${pkgs.cups}/bin/lpadmin -p '${p.name}' -E \
|
||||||
|
${optionalString (p.location != null) "-L '${p.location}'"} \
|
||||||
|
${optionalString (p.description != null) "-D '${p.description}'"} \
|
||||||
|
-v '${p.deviceUri}' \
|
||||||
|
-m '${p.model}' \
|
||||||
|
${ppdOptionsString p.ppdOptions}
|
||||||
|
'';
|
||||||
|
ensureDefaultPrinter = name: ''
|
||||||
|
${pkgs.cups}/bin/lpoptions -d '${name}'
|
||||||
|
'';
|
||||||
|
|
||||||
|
# "graph but not # or /" can't be implemented as regex alone due to missing lookahead support
|
||||||
|
noInvalidChars = str: all (c: c != "#" && c != "/") (stringToCharacters str);
|
||||||
|
printerName = (types.addCheck (types.strMatching "[[:graph:]]+") noInvalidChars)
|
||||||
|
// { description = "printable string without spaces, # and /"; };
|
||||||
|
|
||||||
|
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
hardware.printers = {
|
||||||
|
ensureDefaultPrinter = mkOption {
|
||||||
|
type = types.nullOr printerName;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Ensures the named printer is the default CUPS printer / printer queue.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
ensurePrinters = mkOption {
|
||||||
|
description = ''
|
||||||
|
Will regularly ensure that the given CUPS printers are configured as declared here.
|
||||||
|
If a printer's options are manually changed afterwards, they will be overwritten eventually.
|
||||||
|
This option will never delete any printer, even if removed from this list.
|
||||||
|
You can check existing printers with <command>lpstat -s</command>
|
||||||
|
and remove printers with <command>lpadmin -x <printer-name></command>.
|
||||||
|
Printers not listed here can still be manually configured.
|
||||||
|
'';
|
||||||
|
default = [];
|
||||||
|
type = types.listOf (types.submodule {
|
||||||
|
options = {
|
||||||
|
name = mkOption {
|
||||||
|
type = printerName;
|
||||||
|
example = "BrotherHL_Workroom";
|
||||||
|
description = ''
|
||||||
|
Name of the printer / printer queue.
|
||||||
|
May contain any printable characters except "/", "#", and space.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
location = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
example = "Workroom";
|
||||||
|
description = ''
|
||||||
|
Optional human-readable location.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
description = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
example = "Brother HL-5140";
|
||||||
|
description = ''
|
||||||
|
Optional human-readable description.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
deviceUri = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = [
|
||||||
|
"ipp://printserver.local/printers/BrotherHL_Workroom"
|
||||||
|
"usb://HP/DESKJET%20940C?serial=CN16E6C364BH"
|
||||||
|
];
|
||||||
|
description = ''
|
||||||
|
How to reach the printer.
|
||||||
|
<command>lpinfo -v</command> shows a list of supported device URIs and schemes.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
model = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = literalExample ''
|
||||||
|
gutenprint.''${lib.version.majorMinor (lib.getVersion pkgs.cups)}://brother-hl-5140/expert
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Location of the ppd driver file for the printer.
|
||||||
|
<command>lpinfo -m</command> shows a list of supported models.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
ppdOptions = mkOption {
|
||||||
|
type = types.attrsOf types.str;
|
||||||
|
example = {
|
||||||
|
"PageSize" = "A4";
|
||||||
|
"Duplex" = "DuplexNoTumble";
|
||||||
|
};
|
||||||
|
default = {};
|
||||||
|
description = ''
|
||||||
|
Sets PPD options for the printer.
|
||||||
|
<command>lpoptions [-p printername] -l</command> shows suported PPD options for the given printer.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (cfg.ensurePrinters != [] && config.services.printing.enable) {
|
||||||
|
systemd.services."ensure-printers" = let
|
||||||
|
cupsUnit = if config.services.printing.startWhenNeeded then "cups.socket" else "cups.service";
|
||||||
|
in {
|
||||||
|
description = "Ensure NixOS-configured CUPS printers";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
requires = [ cupsUnit ];
|
||||||
|
# in contrast to cups.socket, for cups.service, this is actually not enough,
|
||||||
|
# as the cups service reports its activation before clients can actually interact with it.
|
||||||
|
# Because of this, commands like `lpinfo -v` will report a bad file descriptor
|
||||||
|
# due to the missing UNIX socket without sufficient sleep time.
|
||||||
|
after = [ cupsUnit ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
};
|
||||||
|
|
||||||
|
# sleep 10 is required to wait until cups.service is actually initialized and has created its UNIX socket file
|
||||||
|
script = (optionalString (!config.services.printing.startWhenNeeded) "sleep 10\n")
|
||||||
|
+ (concatMapStringsSep "\n" ensurePrinter cfg.ensurePrinters)
|
||||||
|
+ optionalString (cfg.ensureDefaultPrinter != null) (ensureDefaultPrinter cfg.ensureDefaultPrinter);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -58,7 +58,9 @@
|
|||||||
./hardware/network/intel-2200bg.nix
|
./hardware/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
|
||||||
|
25
nixos/modules/services/desktops/blueman.nix
Normal file
25
nixos/modules/services/desktops/blueman.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# blueman service
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.blueman;
|
||||||
|
in {
|
||||||
|
###### interface
|
||||||
|
options = {
|
||||||
|
services.blueman = {
|
||||||
|
enable = mkEnableOption "blueman";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
###### implementation
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.blueman ];
|
||||||
|
|
||||||
|
services.dbus.packages = [ pkgs.blueman ];
|
||||||
|
|
||||||
|
systemd.packages = [ pkgs.blueman ];
|
||||||
|
};
|
||||||
|
}
|
@ -22,11 +22,11 @@ with lib;
|
|||||||
|
|
||||||
config = mkIf config.services.gnome3.glib-networking.enable {
|
config = mkIf config.services.gnome3.glib-networking.enable {
|
||||||
|
|
||||||
services.dbus.packages = [ pkgs.gnome3.glib-networking ];
|
services.dbus.packages = [ pkgs.glib-networking ];
|
||||||
|
|
||||||
systemd.packages = [ pkgs.gnome3.glib-networking ];
|
systemd.packages = [ pkgs.glib-networking ];
|
||||||
|
|
||||||
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gnome3.glib-networking.out}/lib/gio/modules" ];
|
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.glib-networking.out}/lib/gio/modules" ];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
80
nixos/modules/services/networking/syncplay.nix
Normal file
80
nixos/modules/services/networking/syncplay.nix
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.syncplay;
|
||||||
|
|
||||||
|
cmdArgs =
|
||||||
|
[ "--port" cfg.port ]
|
||||||
|
++ optionals (cfg.salt != null) [ "--salt" cfg.salt ]
|
||||||
|
++ optionals (cfg.certDir != null) [ "--tls" cfg.certDir ];
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
services.syncplay = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "If enabled, start the Syncplay server.";
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 8999;
|
||||||
|
description = ''
|
||||||
|
TCP port to bind to.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
salt = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Salt to allow room operator passwords generated by this server
|
||||||
|
instance to still work when the server is restarted.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
certDir = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
TLS certificates directory to use for encryption. See
|
||||||
|
<link xlink:href="https://github.com/Syncplay/syncplay/wiki/TLS-support"/>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "nobody";
|
||||||
|
description = ''
|
||||||
|
User to use when running Syncplay.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
group = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "nogroup";
|
||||||
|
description = ''
|
||||||
|
Group to use when running Syncplay.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
systemd.services.syncplay = {
|
||||||
|
description = "Syncplay Service";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network-online.target "];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.syncplay}/bin/syncplay-server ${escapeShellArgs cmdArgs}";
|
||||||
|
User = cfg.user;
|
||||||
|
Group = cfg.group;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -3,7 +3,7 @@
|
|||||||
import ./make-test.nix ({ pkgs, ...} : {
|
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 =
|
||||||
|
@ -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);
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -78,8 +78,6 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
buildInputs = [ squashfsTools makeWrapper ];
|
buildInputs = [ squashfsTools makeWrapper ];
|
||||||
|
|
||||||
doConfigure = false;
|
|
||||||
doBuild = false;
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
dontPatchELF = true;
|
dontPatchELF = true;
|
||||||
|
|
||||||
|
91
pkgs/applications/audio/strawberry/default.nix
Normal file
91
pkgs/applications/audio/strawberry/default.nix
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
{ mkDerivation
|
||||||
|
, stdenv
|
||||||
|
, lib
|
||||||
|
, fetchFromGitHub
|
||||||
|
, cmake
|
||||||
|
, pkgconfig
|
||||||
|
, alsaLib
|
||||||
|
, boost
|
||||||
|
, chromaprint
|
||||||
|
, fftw
|
||||||
|
, gnutls
|
||||||
|
, libcdio
|
||||||
|
, libmtp
|
||||||
|
, libpthreadstubs
|
||||||
|
, libtasn1
|
||||||
|
, libXdmcp
|
||||||
|
, pcre
|
||||||
|
, protobuf
|
||||||
|
, sqlite
|
||||||
|
, taglib
|
||||||
|
, libpulseaudio ? null
|
||||||
|
, libselinux ? null
|
||||||
|
, libsepol ? null
|
||||||
|
, p11_kit ? null
|
||||||
|
, utillinux ? null
|
||||||
|
, qtbase
|
||||||
|
, qtx11extras
|
||||||
|
, qttools
|
||||||
|
, withGstreamer ? true
|
||||||
|
, gst_all_1 ? null
|
||||||
|
, withVlc ? true
|
||||||
|
, vlc ? null
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation rec {
|
||||||
|
pname = "strawberry";
|
||||||
|
version = "0.6.3";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "jonaski";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "01j5jzzicy895kg9sjy46lbcm5kvf3642d3q5wwb2fyvyq1fbcv0";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
alsaLib
|
||||||
|
boost
|
||||||
|
chromaprint
|
||||||
|
fftw
|
||||||
|
gnutls
|
||||||
|
libcdio
|
||||||
|
libmtp
|
||||||
|
libpthreadstubs
|
||||||
|
libtasn1
|
||||||
|
libXdmcp
|
||||||
|
pcre
|
||||||
|
protobuf
|
||||||
|
sqlite
|
||||||
|
taglib
|
||||||
|
qtbase
|
||||||
|
qtx11extras
|
||||||
|
]
|
||||||
|
++ lib.optionals stdenv.isLinux [
|
||||||
|
libpulseaudio
|
||||||
|
libselinux
|
||||||
|
libsepol
|
||||||
|
p11_kit
|
||||||
|
utillinux
|
||||||
|
]
|
||||||
|
++ lib.optionals withGstreamer (with gst_all_1; [
|
||||||
|
gstreamer
|
||||||
|
gst-plugins-base
|
||||||
|
gst-plugins-good
|
||||||
|
])
|
||||||
|
++ lib.optional withVlc vlc;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake pkgconfig qttools ];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DUSE_SYSTEM_TAGLIB=ON"
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Music player and music collection organizer";
|
||||||
|
license = licenses.gpl2;
|
||||||
|
maintainers = with maintainers; [ peterhoeg ];
|
||||||
|
# upstream says darwin should work but they lack maintainers as of 0.6.3
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
buildGoPackage rec {
|
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; {
|
||||||
|
@ -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}"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
{ parinfer-rust }:
|
|
||||||
|
|
||||||
{
|
|
||||||
inherit parinfer-rust;
|
|
||||||
}
|
|
11
pkgs/applications/editors/kakoune/plugins/default.nix
Normal file
11
pkgs/applications/editors/kakoune/plugins/default.nix
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{ pkgs, parinfer-rust }:
|
||||||
|
|
||||||
|
{
|
||||||
|
inherit parinfer-rust;
|
||||||
|
|
||||||
|
kak-auto-pairs = pkgs.callPackage ./kak-auto-pairs.nix { };
|
||||||
|
kak-buffers = pkgs.callPackage ./kak-buffers.nix { };
|
||||||
|
kak-fzf = pkgs.callPackage ./kak-fzf.nix { };
|
||||||
|
kak-powerline = pkgs.callPackage ./kak-powerline.nix { };
|
||||||
|
kak-vertical-selection = pkgs.callPackage ./kak-vertical-selection.nix { };
|
||||||
|
}
|
24
pkgs/applications/editors/kakoune/plugins/kak-auto-pairs.nix
Normal file
24
pkgs/applications/editors/kakoune/plugins/kak-auto-pairs.nix
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{ stdenv, fetchFromGitHub }:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "kak-auto-pairs";
|
||||||
|
version = "2019-07-27";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "alexherbo2";
|
||||||
|
repo = "auto-pairs.kak";
|
||||||
|
rev = "886449b1a04d43e5deb2f0ef4b1aead6084c7a5f";
|
||||||
|
sha256 = "0knfhdvslzw1f1r1k16733yhkczrg3yijjz6n2qwira84iv3239j";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/kak/autoload/plugins
|
||||||
|
cp -r rc $out/share/kak/autoload/plugins/auto-pairs
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib;
|
||||||
|
{ description = "Kakoune extension to enable automatic closing of pairs";
|
||||||
|
homepage = "https://github.com/alexherbo2/auto-pairs.kak";
|
||||||
|
license = licenses.publicDoman;
|
||||||
|
maintainers = with maintainers; [ nrdxp ];
|
||||||
|
platform = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
24
pkgs/applications/editors/kakoune/plugins/kak-buffers.nix
Normal file
24
pkgs/applications/editors/kakoune/plugins/kak-buffers.nix
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{ stdenv, fetchFromGitHub }:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "kak-buffers";
|
||||||
|
version = "2019-04-03";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "Delapouite";
|
||||||
|
repo = "kakoune-buffers";
|
||||||
|
rev = "3b35b23ac2be661a37c085d34dd04d066450f757";
|
||||||
|
sha256 = "0f3g0v1sjinii3ig9753jjj35v2km4h9bcfw9xgzwz8b10d75bax";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/kak/autoload/plugins
|
||||||
|
cp -r buffers.kak $out/share/kak/autoload/plugins
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib;
|
||||||
|
{ description = "Ease navigation between opened buffers in Kakoune";
|
||||||
|
homepage = "https://github.com/Delapouite/kakoune-buffers";
|
||||||
|
license = licenses.publicDoman;
|
||||||
|
maintainers = with maintainers; [ nrdxp ];
|
||||||
|
platform = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
38
pkgs/applications/editors/kakoune/plugins/kak-fzf.nix
Normal file
38
pkgs/applications/editors/kakoune/plugins/kak-fzf.nix
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, fzf }:
|
||||||
|
|
||||||
|
assert stdenv.lib.asserts.assertOneOf "fzf" fzf.pname [ "fzf" "skim" ];
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "kak-fzf";
|
||||||
|
version = "2019-07-16";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "andreyorst";
|
||||||
|
repo = "fzf.kak";
|
||||||
|
rev = "ede90d3e02bceb714f997adfcbab8260b42e0a19";
|
||||||
|
sha256 = "18w90j3fpk2ddn68497s33n66aap8phw5636y1r7pqsa641zdxcv";
|
||||||
|
};
|
||||||
|
|
||||||
|
configurePhase = ''
|
||||||
|
if [[ -x "${fzf}/bin/fzf" ]]; then
|
||||||
|
fzfImpl='${fzf}/bin/fzf'
|
||||||
|
else
|
||||||
|
fzfImpl='${fzf}/bin/sk'
|
||||||
|
fi
|
||||||
|
|
||||||
|
substituteInPlace rc/fzf.kak \
|
||||||
|
--replace \'fzf\' \'"$fzfImpl"\'
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/kak/autoload/plugins
|
||||||
|
cp -r rc $out/share/kak/autoload/plugins/fzf
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib;
|
||||||
|
{ description = "Kakoune plugin that brings integration with fzf";
|
||||||
|
homepage = "https://github.com/andreyorst/fzf.kak";
|
||||||
|
license = licenses.publicDoman;
|
||||||
|
maintainers = with maintainers; [ nrdxp ];
|
||||||
|
platform = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
29
pkgs/applications/editors/kakoune/plugins/kak-powerline.nix
Normal file
29
pkgs/applications/editors/kakoune/plugins/kak-powerline.nix
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{ stdenv, git, fetchFromGitHub }:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "kak-powerline";
|
||||||
|
version = "2019-07-23";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "andreyorst";
|
||||||
|
repo = "powerline.kak";
|
||||||
|
rev = "82b01eb6c97c7380b7da253db1fd484a5de13ea4";
|
||||||
|
sha256 = "1480wp2jc7c84z1wqmpf09lzny6kbnbhiiym2ffaddxrd4ns9i6z";
|
||||||
|
};
|
||||||
|
|
||||||
|
configurePhase = ''
|
||||||
|
substituteInPlace rc/modules/git.kak \
|
||||||
|
--replace \'git\' \'${git}/bin/git\'
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/kak/autoload/plugins
|
||||||
|
cp -r rc $out/share/kak/autoload/plugins/powerline
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib;
|
||||||
|
{ description = "Kakoune modeline, but with passion";
|
||||||
|
homepage = "https://github.com/andreyorst/powerline.kak";
|
||||||
|
license = licenses.publicDoman;
|
||||||
|
maintainers = with maintainers; [ nrdxp ];
|
||||||
|
platform = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
{ stdenv, fetchFromGitHub }:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "kak-vertical-selection";
|
||||||
|
version = "2019-04-11";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "occivink";
|
||||||
|
repo = "kakoune-vertical-selection";
|
||||||
|
rev = "c420f8b867ce47375fac303886e31623669a42b7";
|
||||||
|
sha256 = "13jdyd2j45wvgqvxdzw9zww14ly93bqjb6700zzxj7mkbiff6wsb";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/kak/autoload/plugins
|
||||||
|
cp -r vertical-selection.kak $out/share/kak/autoload/plugins
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib;
|
||||||
|
{ description = "Select up and down lines that match the same pattern in Kakoune";
|
||||||
|
homepage = "https://github.com/occivink/kakoune-vertical-selection";
|
||||||
|
license = licenses.publicDoman;
|
||||||
|
maintainers = with maintainers; [ nrdxp ];
|
||||||
|
platform = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
@ -1,12 +1,12 @@
|
|||||||
{ lib, fetchFromGitHub }:
|
{ 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;
|
||||||
|
@ -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";
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
diff --git a/src/HexDialogs.cpp b/src/HexDialogs.cpp
|
||||||
|
index 091a6f9..12e6a78 100644
|
||||||
|
--- a/src/HexDialogs.cpp
|
||||||
|
+++ b/src/HexDialogs.cpp
|
||||||
|
@@ -420,7 +420,7 @@ void FindDialog::OnChar( wxKeyEvent& event ){
|
||||||
|
}
|
||||||
|
|
||||||
|
void FindDialog::EventHandler( wxCommandEvent& event ){
|
||||||
|
- WX_CLEAR_ARRAY(parent->HighlightArray )
|
||||||
|
+ WX_CLEAR_ARRAY(parent->HighlightArray );
|
||||||
|
parent->HighlightArray.Shrink();
|
||||||
|
|
||||||
|
if( event.GetId() == btnFind->GetId())
|
||||||
|
diff --git a/src/HexEditorCtrl/HexEditorCtrl.cpp b/src/HexEditorCtrl/HexEditorCtrl.cpp
|
||||||
|
index 7a3b0e2..f12097f 100644
|
||||||
|
--- a/src/HexEditorCtrl/HexEditorCtrl.cpp
|
||||||
|
+++ b/src/HexEditorCtrl/HexEditorCtrl.cpp
|
||||||
|
@@ -64,9 +64,9 @@ HexEditorCtrl::~HexEditorCtrl( void ){
|
||||||
|
Dynamic_Disconnector();
|
||||||
|
Clear();
|
||||||
|
|
||||||
|
- WX_CLEAR_ARRAY(MainTagArray)
|
||||||
|
- WX_CLEAR_ARRAY(HighlightArray)
|
||||||
|
- WX_CLEAR_ARRAY(CompareArray)
|
||||||
|
+ WX_CLEAR_ARRAY(MainTagArray);
|
||||||
|
+ WX_CLEAR_ARRAY(HighlightArray);
|
||||||
|
+ WX_CLEAR_ARRAY(CompareArray);
|
||||||
|
|
||||||
|
MainTagArray.Shrink();
|
||||||
|
HighlightArray.Shrink();
|
||||||
|
@@ -1224,4 +1224,3 @@ void wxHugeScrollBar::OnOffsetScroll( wxScrollEvent& event ){
|
||||||
|
#endif
|
||||||
|
event.Skip();
|
||||||
|
}
|
||||||
|
-
|
38
pkgs/applications/graphics/azpainter/default.nix
Normal file
38
pkgs/applications/graphics/azpainter/default.nix
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, autoreconfHook
|
||||||
|
, libX11, libXext, libXi
|
||||||
|
, freetype, fontconfig
|
||||||
|
, libpng, libjpeg
|
||||||
|
, zlib
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "azpainter";
|
||||||
|
version = "2.1.4";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "Symbian9";
|
||||||
|
repo = pname;
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
sha256 = "1hrr9lhsbjyzar3nxvli6cazr7zhyzh0p8hwpg4g9ga6njs8vi8m";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ autoreconfHook ];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libX11 libXext libXi
|
||||||
|
freetype fontconfig
|
||||||
|
libpng libjpeg
|
||||||
|
zlib
|
||||||
|
];
|
||||||
|
|
||||||
|
configureFlags = [
|
||||||
|
"--with-freetype-dir=${stdenv.lib.getDev freetype}/include/freetype2"
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Full color painting software for illustration drawing";
|
||||||
|
homepage = "https://osdn.net/projects/azpainter";
|
||||||
|
license = licenses.gpl3Plus;
|
||||||
|
maintainers = with maintainers; [ dtzWill ];
|
||||||
|
};
|
||||||
|
}
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
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 ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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/;
|
||||||
|
@ -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";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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++"
|
||||||
|
@ -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 ];
|
||||||
|
@ -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; {
|
||||||
|
@ -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
|
||||||
|
@ -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; {
|
||||||
|
@ -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 = ''
|
||||||
|
@ -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; {
|
||||||
|
@ -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";
|
||||||
|
@ -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;
|
||||||
|
@ -9,8 +9,6 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
outputs = [ "out" "man" ];
|
outputs = [ "out" "man" ];
|
||||||
|
|
||||||
doBuild = false;
|
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p \
|
mkdir -p \
|
||||||
"$out/bin" \
|
"$out/bin" \
|
||||||
|
@ -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 = {
|
||||||
|
@ -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
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
Index: gnucash-3.6/gnucash/register/register-gnome/CMakeLists.txt
|
||||||
|
===================================================================
|
||||||
|
--- gnucash-3.6.orig/gnucash/register/register-gnome/CMakeLists.txt
|
||||||
|
+++ gnucash-3.6/gnucash/register/register-gnome/CMakeLists.txt
|
||||||
|
@@ -1,6 +1,7 @@
|
||||||
|
add_subdirectory(test)
|
||||||
|
|
||||||
|
#GTK before 3.14 didn't have GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK
|
||||||
|
+include(CheckSymbolExists)
|
||||||
|
check_symbol_exists(GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK gdk/gdktypes.h have_mod_mask)
|
||||||
|
if (NOT have_mod_mask)
|
||||||
|
if (MAC_INTEGRATION)
|
@ -47,6 +47,8 @@ stdenv.mkDerivation rec {
|
|||||||
# Should probably be removed next version bump
|
# 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 .
|
||||||
'';
|
'';
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
];
|
];
|
||||||
|
@ -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"
|
||||||
];
|
];
|
||||||
|
@ -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 = [
|
||||||
|
@ -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 {
|
||||||
|
@ -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" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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 ];
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
{ stdenv, fetchurl, iasl, flex, bison }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "cbfstool";
|
|
||||||
version = "4.9";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://coreboot.org/releases/coreboot-${version}.tar.xz";
|
|
||||||
sha256 = "0xkai65d3z9fivwscbkm7ndcw2p9g794xz8fwdv979w77n5qsdij";
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [ flex bison ];
|
|
||||||
buildInputs = [ iasl ];
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
export LEX=${flex}/bin/flex
|
|
||||||
make -C util/cbfstool
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
cp util/cbfstool/cbfstool $out/bin
|
|
||||||
cp util/cbfstool/fmaptool $out/bin
|
|
||||||
cp util/cbfstool/rmodtool $out/bin
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
description = "Management utility for CBFS formatted ROM images";
|
|
||||||
homepage = https://www.coreboot.org;
|
|
||||||
license = licenses.gpl2;
|
|
||||||
maintainers = [ maintainers.tstrobel ];
|
|
||||||
platforms = platforms.linux;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -56,8 +56,6 @@ stdenv.mkDerivation {
|
|||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
doConfigure = false;
|
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
# Build kernel modules.
|
# Build kernel modules.
|
||||||
cd src
|
cd src
|
||||||
|
@ -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
|
||||||
|
@ -1,236 +0,0 @@
|
|||||||
--- src/apppstatus.cc 2017-07-30 10:59:06.000000000 +0200
|
|
||||||
+++ src/apppstatus.cc 2017-08-09 09:12:54.332052762 +0200
|
|
||||||
@@ -366,7 +366,7 @@
|
|
||||||
sscanf(p, "%s %s %s %s %s", val[0], val[1], val[2], val[3], val[4]);
|
|
||||||
for (i = 0; i < 4; i++) {
|
|
||||||
if (strncmp(val[i+1], "?", 1) != 0)
|
|
||||||
- strlcpy(phoneNumber, val[i+1], sizeof phoneNumber);
|
|
||||||
+ my_strlcpy(phoneNumber, val[i+1], sizeof phoneNumber);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--- src/base.h 2017-07-30 10:59:06.000000000 +0200
|
|
||||||
+++ src/base.h 2017-08-09 09:11:13.082025484 +0200
|
|
||||||
@@ -44,9 +44,9 @@
|
|
||||||
/*** String Functions *********************************************************/
|
|
||||||
|
|
||||||
/* Prefer this as a safer alternative over strcpy. Return strlen(from). */
|
|
||||||
-size_t strlcpy(char *dest, const char *from, size_t dest_size);
|
|
||||||
+size_t my_strlcpy(char *dest, const char *from, size_t dest_size);
|
|
||||||
/* Prefer this over strcat. Return strlen(dest) + strlen(from). */
|
|
||||||
-size_t strlcat(char *dest, const char *from, size_t dest_size);
|
|
||||||
+size_t my_strlcat(char *dest, const char *from, size_t dest_size);
|
|
||||||
|
|
||||||
char *newstr(char const *str);
|
|
||||||
char *newstr(char const *str, int len);
|
|
||||||
--- src/gnome2.cc 2017-07-30 10:59:06.000000000 +0200
|
|
||||||
+++ src/gnome2.cc 2017-08-09 09:11:21.819027846 +0200
|
|
||||||
@@ -158,8 +158,8 @@
|
|
||||||
const int plen = strlen(fPath);
|
|
||||||
|
|
||||||
char tmp[256];
|
|
||||||
- strlcpy(tmp, fPath, sizeof tmp);
|
|
||||||
- strlcat(tmp, "/.directory", sizeof tmp);
|
|
||||||
+ my_strlcpy(tmp, fPath, sizeof tmp);
|
|
||||||
+ my_strlcat(tmp, "/.directory", sizeof tmp);
|
|
||||||
|
|
||||||
if (isDir && !stat(tmp, &sb)) { // looks like kde/gnome1 style
|
|
||||||
|
|
||||||
@@ -279,8 +279,8 @@
|
|
||||||
|
|
||||||
while ((file = readdir(dir)) != NULL) {
|
|
||||||
char fullpath[256];
|
|
||||||
- strlcpy(fullpath, dirname, sizeof fullpath);
|
|
||||||
- strlcat(fullpath, file->d_name, sizeof fullpath);
|
|
||||||
+ my_strlcpy(fullpath, dirname, sizeof fullpath);
|
|
||||||
+ my_strlcat(fullpath, file->d_name, sizeof fullpath);
|
|
||||||
GnomeDesktopItem *ditem =
|
|
||||||
gnome_desktop_item_new_from_file(fullpath,
|
|
||||||
(GnomeDesktopItemLoadFlags)0,
|
|
||||||
--- src/icehelp.cc 2017-07-30 10:59:06.000000000 +0200
|
|
||||||
+++ src/icehelp.cc 2017-08-09 09:11:31.490030459 +0200
|
|
||||||
@@ -1790,8 +1790,8 @@
|
|
||||||
const size_t size = 9 + strlen(cfmt) + strlen(cstr) + strlen(crea);
|
|
||||||
char *cbuf = (char *)malloc(size);
|
|
||||||
snprintf(cbuf, size, cfmt, cstr);
|
|
||||||
- strlcat(cbuf, ":\n ", size);
|
|
||||||
- strlcat(cbuf, crea, size);
|
|
||||||
+ my_strlcat(cbuf, ":\n ", size);
|
|
||||||
+ my_strlcat(cbuf, crea, size);
|
|
||||||
|
|
||||||
node *root = new node(node::div);
|
|
||||||
flist<node> nodes(root);
|
|
||||||
--- src/icesm.cc 2017-07-30 10:59:06.000000000 +0200
|
|
||||||
+++ src/icesm.cc 2017-08-09 09:13:12.946057758 +0200
|
|
||||||
@@ -28,10 +28,10 @@
|
|
||||||
wordexp_t w;
|
|
||||||
if (wordexp(trim(buf), &w, 0) != 0 || w.we_wordc == 0)
|
|
||||||
return false;
|
|
||||||
- size_t len = strlcpy(buf, trim(w.we_wordv[0]), bufsiz);
|
|
||||||
+ size_t len = my_strlcpy(buf, trim(w.we_wordv[0]), bufsiz);
|
|
||||||
for (size_t k = 1; k < w.we_wordc && len < bufsiz; ++k) {
|
|
||||||
- strlcat(buf, " ", bufsiz);
|
|
||||||
- len = strlcat(buf, trim(w.we_wordv[k]), bufsiz);
|
|
||||||
+ my_strlcat(buf, " ", bufsiz);
|
|
||||||
+ len = my_strlcat(buf, trim(w.we_wordv[k]), bufsiz);
|
|
||||||
}
|
|
||||||
wordfree(&w);
|
|
||||||
if (len >= bufsiz)
|
|
||||||
@@ -39,7 +39,7 @@
|
|
||||||
#else
|
|
||||||
char *str = trim(buf);
|
|
||||||
if (str > buf)
|
|
||||||
- strlcpy(buf, str, bufsiz);
|
|
||||||
+ my_strlcpy(buf, str, bufsiz);
|
|
||||||
#endif
|
|
||||||
if (buf[0] == '#' || buf[0] == '=')
|
|
||||||
buf[0] = 0;
|
|
||||||
--- src/icesound.cc 2017-07-30 10:59:06.000000000 +0200
|
|
||||||
+++ src/icesound.cc 2017-08-09 09:11:26.686029161 +0200
|
|
||||||
@@ -145,8 +145,8 @@
|
|
||||||
char * findSample(int sid) {
|
|
||||||
char basefname[1024];
|
|
||||||
|
|
||||||
- strlcpy(basefname, gui_events[sid].name, sizeof basefname);
|
|
||||||
- strlcat(basefname, ".wav", sizeof basefname);
|
|
||||||
+ my_strlcpy(basefname, gui_events[sid].name, sizeof basefname);
|
|
||||||
+ my_strlcat(basefname, ".wav", sizeof basefname);
|
|
||||||
|
|
||||||
return findSample(basefname);
|
|
||||||
}
|
|
||||||
--- src/misc.cc 2017-07-30 10:59:06.000000000 +0200
|
|
||||||
+++ src/misc.cc 2017-08-09 09:13:39.372064834 +0200
|
|
||||||
@@ -448,7 +448,7 @@
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Prefer this as a safer alternative over strcpy. Return strlen(from). */
|
|
||||||
-size_t strlcpy(char *dest, const char *from, size_t dest_size)
|
|
||||||
+size_t my_strlcpy(char *dest, const char *from, size_t dest_size)
|
|
||||||
{
|
|
||||||
const char *in = from;
|
|
||||||
if (dest_size > 0) {
|
|
||||||
@@ -463,12 +463,12 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Prefer this over strcat. Return strlen(dest) + strlen(from). */
|
|
||||||
-size_t strlcat(char *dest, const char *from, size_t dest_size)
|
|
||||||
+size_t my_strlcat(char *dest, const char *from, size_t dest_size)
|
|
||||||
{
|
|
||||||
char *to = dest;
|
|
||||||
char *const stop = to + dest_size - 1;
|
|
||||||
while (to < stop && *to) ++to;
|
|
||||||
- return to - dest + strlcpy(to, from, dest_size - (to - dest));
|
|
||||||
+ return to - dest + my_strlcpy(to, from, dest_size - (to - dest));
|
|
||||||
}
|
|
||||||
|
|
||||||
char *newstr(char const *str) {
|
|
||||||
--- src/strtest.cc 2017-07-30 10:59:06.000000000 +0200
|
|
||||||
+++ src/strtest.cc 2017-08-09 09:13:24.395060823 +0200
|
|
||||||
@@ -286,63 +286,63 @@
|
|
||||||
strtest tester("strlc");
|
|
||||||
char d[10] = "@";
|
|
||||||
size_t n;
|
|
||||||
- n = strlcpy(d, "", 0);
|
|
||||||
+ n = my_strlcpy(d, "", 0);
|
|
||||||
sequal(d, "@");
|
|
||||||
assert(d, n == 0);
|
|
||||||
|
|
||||||
- n = strlcpy(d, "a", 0);
|
|
||||||
+ n = my_strlcpy(d, "a", 0);
|
|
||||||
sequal(d, "@");
|
|
||||||
assert(d, n == 1);
|
|
||||||
|
|
||||||
- n = strlcpy(d, "", 1);
|
|
||||||
+ n = my_strlcpy(d, "", 1);
|
|
||||||
sequal(d, "");
|
|
||||||
assert(d, n == 0);
|
|
||||||
|
|
||||||
- n = strlcpy(d, "a", 1);
|
|
||||||
+ n = my_strlcpy(d, "a", 1);
|
|
||||||
sequal(d, "");
|
|
||||||
assert(d, n == 1);
|
|
||||||
|
|
||||||
- n = strlcpy(d, "a", 2);
|
|
||||||
+ n = my_strlcpy(d, "a", 2);
|
|
||||||
sequal(d, "a");
|
|
||||||
assert(d, n == 1);
|
|
||||||
|
|
||||||
- n = strlcpy(d, "ab", 2);
|
|
||||||
+ n = my_strlcpy(d, "ab", 2);
|
|
||||||
sequal(d, "a");
|
|
||||||
assert(d, n == 2);
|
|
||||||
|
|
||||||
- n = strlcpy(d, "ab", 3);
|
|
||||||
+ n = my_strlcpy(d, "ab", 3);
|
|
||||||
sequal(d, "ab");
|
|
||||||
assert(d, n == 2);
|
|
||||||
|
|
||||||
- n = strlcpy(d, "abc", sizeof d);
|
|
||||||
+ n = my_strlcpy(d, "abc", sizeof d);
|
|
||||||
sequal(d, "abc");
|
|
||||||
assert(d, n == 3);
|
|
||||||
|
|
||||||
- n = strlcat(d, "def", 4);
|
|
||||||
+ n = my_strlcat(d, "def", 4);
|
|
||||||
sequal(d, "abc");
|
|
||||||
assert(d, n == 6);
|
|
||||||
|
|
||||||
- n = strlcat(d, "def", sizeof d);
|
|
||||||
+ n = my_strlcat(d, "def", sizeof d);
|
|
||||||
sequal(d, "abcdef");
|
|
||||||
assert(d, n == 6);
|
|
||||||
|
|
||||||
- n = strlcat(d, "ghijkl", sizeof d);
|
|
||||||
+ n = my_strlcat(d, "ghijkl", sizeof d);
|
|
||||||
sequal(d, "abcdefghi");
|
|
||||||
assert(d, n == 12);
|
|
||||||
|
|
||||||
- n = strlcpy(d, "123", sizeof d);
|
|
||||||
+ n = my_strlcpy(d, "123", sizeof d);
|
|
||||||
sequal(d, "123");
|
|
||||||
assert(d, n == 3);
|
|
||||||
|
|
||||||
- n = strlcpy(d, d + 1, sizeof d);
|
|
||||||
+ n = my_strlcpy(d, d + 1, sizeof d);
|
|
||||||
sequal(d, "23");
|
|
||||||
assert(d, n == 2);
|
|
||||||
|
|
||||||
- n = strlcpy(d, d + 1, sizeof d);
|
|
||||||
+ n = my_strlcpy(d, d + 1, sizeof d);
|
|
||||||
sequal(d, "3");
|
|
||||||
assert(d, n == 1);
|
|
||||||
|
|
||||||
- n = strlcpy(d, d + 1, sizeof d);
|
|
||||||
+ n = my_strlcpy(d, d + 1, sizeof d);
|
|
||||||
sequal(d, "");
|
|
||||||
assert(d, n == 0);
|
|
||||||
}
|
|
||||||
@@ -418,7 +418,7 @@
|
|
||||||
while (a.next()) {
|
|
||||||
const char *e = a.entry();
|
|
||||||
assert(e, strcoll(buf, e) < 0);
|
|
||||||
- strlcpy(buf, e, sizeof buf);
|
|
||||||
+ my_strlcpy(buf, e, sizeof buf);
|
|
||||||
}
|
|
||||||
assert(buf, strcoll(buf, "~~~~~~~~~") < 0);
|
|
||||||
}
|
|
||||||
@@ -437,7 +437,7 @@
|
|
||||||
cstring c(s.entry());
|
|
||||||
const char *e = c.c_str();
|
|
||||||
assert(e, strcoll(buf, e) < 0);
|
|
||||||
- strlcpy(buf, e, sizeof buf);
|
|
||||||
+ my_strlcpy(buf, e, sizeof buf);
|
|
||||||
}
|
|
||||||
assert(buf, strcoll(buf, "~~~~~~~~~") < 0);
|
|
||||||
}
|
|
||||||
--- src/udir.cc 2017-07-30 10:59:06.000000000 +0200
|
|
||||||
+++ src/udir.cc 2017-08-09 09:13:28.346061883 +0200
|
|
||||||
@@ -66,7 +66,7 @@
|
|
||||||
if (impl) {
|
|
||||||
DirPtr dirp(impl);
|
|
||||||
if (dirp.next()) {
|
|
||||||
- strlcpy(fEntry, dirp.name(), sizeof fEntry);
|
|
||||||
+ my_strlcpy(fEntry, dirp.name(), sizeof fEntry);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
--- src/ylocale.cc 2017-07-30 10:59:06.000000000 +0200
|
|
||||||
+++ src/ylocale.cc 2017-08-09 08:15:50.938841549 +0200
|
|
||||||
@@ -55,6 +55,8 @@
|
|
||||||
int const codesetItems[] = {
|
|
||||||
#ifdef CONFIG_NL_CODESETS
|
|
||||||
CONFIG_NL_CODESETS
|
|
||||||
+#elif !defined(__GLIBC__)
|
|
||||||
+ CODESET, 0
|
|
||||||
#else
|
|
||||||
CODESET, _NL_CTYPE_CODESET_NAME, 0
|
|
||||||
#endif
|
|
||||||
--- src/globit.c 2017-07-30 10:59:06.000000000 +0200
|
|
||||||
+++ src/globit.c 2017-08-09 08:17:18.691824584 +0200
|
|
||||||
@@ -143,7 +143,9 @@
|
|
||||||
} else if (*pattern == '~') {
|
|
||||||
/* yes, tilde */
|
|
||||||
is_absolute = 2;
|
|
||||||
+#if defined(__GLIBC__)
|
|
||||||
glob_flags |= GLOB_TILDE;
|
|
||||||
+#endif
|
|
||||||
/* any slash in the pattern? */
|
|
||||||
while (*cp && *cp != '/')
|
|
||||||
++cp;
|
|
@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
python3.pkgs.buildPythonApplication rec {
|
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; [
|
||||||
|
@ -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";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -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/;
|
||||||
|
@ -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";
|
||||||
}
|
}
|
||||||
|
@ -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 ];
|
||||||
|
@ -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
|
||||||
|
@ -30,7 +30,7 @@ mkDerivation rec {
|
|||||||
|
|
||||||
makeFlags = [
|
makeFlags = [
|
||||||
"DEB_HOST_MULTIARCH="
|
"DEB_HOST_MULTIARCH="
|
||||||
"PREFIX=${placeholder ''out''}"
|
"PREFIX=${placeholder "out"}"
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -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";
|
||||||
|
@ -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
|
||||||
|
@ -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}"; };
|
||||||
|
|
||||||
|
@ -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/
|
||||||
|
@ -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}"; };
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
|
|||||||
];
|
];
|
||||||
|
|
||||||
makeFlags = [
|
makeFlags = [
|
||||||
"PREFIX=${placeholder ''out''}"
|
"PREFIX=${placeholder "out"}"
|
||||||
"GOCACHE=$(TMPDIR)/go-cache"
|
"GOCACHE=$(TMPDIR)/go-cache"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
makeFlags = [
|
makeFlags = [
|
||||||
"PREFIX=${placeholder ''out''}"
|
"PREFIX=${placeholder "out"}"
|
||||||
"GOCACHE=$(TMPDIR)/go-cache"
|
"GOCACHE=$(TMPDIR)/go-cache"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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 = ''
|
||||||
|
@ -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 = [
|
||||||
|
@ -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 = [
|
||||||
|
@ -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 = ''
|
||||||
|
@ -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;
|
||||||
|
33
pkgs/desktops/gnome-3/extensions/arc-menu/default.nix
Normal file
33
pkgs/desktops/gnome-3/extensions/arc-menu/default.nix
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{ stdenv, fetchFromGitLab, glib, gettext, substituteAll, gnome-menus }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "gnome-shell-arc-menu";
|
||||||
|
version = "31";
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
owner = "LinxGem33";
|
||||||
|
repo = "Arc-Menu";
|
||||||
|
rev = "v${version}-stable";
|
||||||
|
sha256 = "124jgdy6mw76nrkq3f0y7qkhdm39wg273zifdvwbgpvirwzxbia1";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
(substituteAll {
|
||||||
|
src = ./fix_gmenu.patch;
|
||||||
|
gmenu_path = "${gnome-menus}/lib/girepository-1.0";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
glib gettext
|
||||||
|
];
|
||||||
|
|
||||||
|
makeFlags = [ "INSTALL_BASE=$(out)/share/gnome-shell/extensions" ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Gnome shell extension designed to replace the standard menu found in Gnome 3";
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
maintainers = with maintainers; [ dkabot ];
|
||||||
|
homepage = https://gitlab.com/LinxGem33/Arc-Menu;
|
||||||
|
};
|
||||||
|
}
|
12
pkgs/desktops/gnome-3/extensions/arc-menu/fix_gmenu.patch
Normal file
12
pkgs/desktops/gnome-3/extensions/arc-menu/fix_gmenu.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
--- a/extension.js
|
||||||
|
+++ b/extension.js
|
||||||
|
@@ -29,6 +29,8 @@
|
||||||
|
* https://github.com/The-Panacea-Projects/Gnomenu
|
||||||
|
*/
|
||||||
|
|
||||||
|
+
|
||||||
|
+imports.gi.GIRepository.Repository.prepend_search_path('@gmenu_path@');
|
||||||
|
|
||||||
|
// Import Libraries
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
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 = [
|
||||||
|
@ -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 = [
|
||||||
|
@ -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 = {
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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
Loading…
Reference in New Issue
Block a user