mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-01 11:22:58 +00:00
Merge master into haskell-updates
This commit is contained in:
commit
ba204700bc
47
.github/workflows/update-terraform-providers.yml
vendored
Normal file
47
.github/workflows/update-terraform-providers.yml
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
name: "Update terraform-providers"
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "14 3 * * 1"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tf-providers:
|
||||||
|
if: github.repository_owner == 'NixOS' && github.ref == 'refs/heads/master' # ensure workflow_dispatch only runs on master
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: cachix/install-nix-action@v16
|
||||||
|
- name: setup
|
||||||
|
id: setup
|
||||||
|
run: |
|
||||||
|
echo ::set-output name=title::"terraform-providers: update $(date -u +"%Y-%m-%d")"
|
||||||
|
- name: update terraform-providers
|
||||||
|
run: |
|
||||||
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
pushd pkgs/applications/networking/cluster/terraform-providers
|
||||||
|
./update-all-providers
|
||||||
|
git commit -m "${{ steps.setup.outputs.title }}" providers.json
|
||||||
|
popd
|
||||||
|
- name: create PR
|
||||||
|
uses: peter-evans/create-pull-request@v3
|
||||||
|
with:
|
||||||
|
body: |
|
||||||
|
Automatic update of terraform providers.
|
||||||
|
|
||||||
|
Created by [update-terraform-providers](https://github.com/NixOS/nixpkgs/blob/master/.github/workflows/update-terraform-providers.yml) action.
|
||||||
|
|
||||||
|
Check that all providers build with `@ofborg build terraform-full`
|
||||||
|
branch: terraform-providers-update
|
||||||
|
delete-branch: false
|
||||||
|
labels: "2.status: work-in-progress"
|
||||||
|
title: ${{ steps.setup.outputs.title }}
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: comment on failure
|
||||||
|
uses: peter-evans/create-or-update-comment@v1
|
||||||
|
if: ${{ failure() }}
|
||||||
|
with:
|
||||||
|
issue-number: 153416
|
||||||
|
body: |
|
||||||
|
Automatic update of terraform providers [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}).
|
@ -74,7 +74,7 @@ there are 3 steps, frontend dependencies (javascript), backend dependencies (eli
|
|||||||
|
|
||||||
##### mixRelease - Frontend dependencies (javascript) {#mix-release-javascript-deps}
|
##### mixRelease - Frontend dependencies (javascript) {#mix-release-javascript-deps}
|
||||||
|
|
||||||
for phoenix projects, inside of nixpkgs you can either use yarn2nix (mkYarnModule) or node2nix. An example with yarn2nix can be found [here](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/web-apps/plausible/default.nix#L39). An example with node2nix will follow. To package something outside of nixpkgs, you have alternatives like [npmlock2nix](https://github.com/nix-community/npmlock2nix) or [nix-npm-buildpackage](https://github.com/serokell/nix-npm-buildpackage)
|
For phoenix projects, inside of nixpkgs you can either use yarn2nix (mkYarnModule) or node2nix. An example with yarn2nix can be found [here](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/web-apps/plausible/default.nix#L39). An example with node2nix will follow. To package something outside of nixpkgs, you have alternatives like [npmlock2nix](https://github.com/nix-community/npmlock2nix) or [nix-npm-buildpackage](https://github.com/serokell/nix-npm-buildpackage)
|
||||||
|
|
||||||
##### mixRelease - backend dependencies (mix) {#mix-release-mix-deps}
|
##### mixRelease - backend dependencies (mix) {#mix-release-mix-deps}
|
||||||
|
|
||||||
@ -82,13 +82,13 @@ There are 2 ways to package backend dependencies. With mix2nix and with a fixed-
|
|||||||
|
|
||||||
###### mix2nix {#mix2nix}
|
###### mix2nix {#mix2nix}
|
||||||
|
|
||||||
mix2nix is a cli tool available in nixpkgs. it will generate a nix expression from a mix.lock file. It is quite standard in the 2nix tool series.
|
`mix2nix` is a cli tool available in nixpkgs. it will generate a nix expression from a mix.lock file. It is quite standard in the 2nix tool series.
|
||||||
|
|
||||||
Note that currently mix2nix can't handle git dependencies inside the mix.lock file. If you have git dependencies, you can either add them manually (see [example](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/pleroma/default.nix#L20)) or use the FOD method.
|
Note that currently mix2nix can't handle git dependencies inside the mix.lock file. If you have git dependencies, you can either add them manually (see [example](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/pleroma/default.nix#L20)) or use the FOD method.
|
||||||
|
|
||||||
The advantage of using mix2nix is that nix will know your whole dependency graph. On a dependency update, this won't trigger a full rebuild and download of all the dependencies, where FOD will do so.
|
The advantage of using mix2nix is that nix will know your whole dependency graph. On a dependency update, this won't trigger a full rebuild and download of all the dependencies, where FOD will do so.
|
||||||
|
|
||||||
practical steps:
|
Practical steps:
|
||||||
|
|
||||||
- run `mix2nix > mix_deps.nix` in the upstream repo.
|
- run `mix2nix > mix_deps.nix` in the upstream repo.
|
||||||
- pass `mixNixDeps = with pkgs; import ./mix_deps.nix { inherit lib beamPackages; };` as an argument to mixRelease.
|
- pass `mixNixDeps = with pkgs; import ./mix_deps.nix { inherit lib beamPackages; };` as an argument to mixRelease.
|
||||||
|
@ -177,7 +177,7 @@ rec {
|
|||||||
docOption = rec {
|
docOption = rec {
|
||||||
loc = opt.loc;
|
loc = opt.loc;
|
||||||
name = showOption opt.loc;
|
name = showOption opt.loc;
|
||||||
description = opt.description or (lib.warn "Option `${name}' has no description." "This option has no description.");
|
description = opt.description or null;
|
||||||
declarations = filter (x: x != unknownModule) opt.declarations;
|
declarations = filter (x: x != unknownModule) opt.declarations;
|
||||||
internal = opt.internal or false;
|
internal = opt.internal or false;
|
||||||
visible =
|
visible =
|
||||||
|
@ -952,6 +952,12 @@
|
|||||||
githubId = 59696216;
|
githubId = 59696216;
|
||||||
name = "Arnold Farkas";
|
name = "Arnold Farkas";
|
||||||
};
|
};
|
||||||
|
arnoutkroeze = {
|
||||||
|
email = "nixpkgs@arnoutkroeze.nl";
|
||||||
|
github = "arnoutkroeze";
|
||||||
|
githubId = 37151054;
|
||||||
|
name = "Arnout Kroeze";
|
||||||
|
};
|
||||||
arobyn = {
|
arobyn = {
|
||||||
email = "shados@shados.net";
|
email = "shados@shados.net";
|
||||||
github = "shados";
|
github = "shados";
|
||||||
@ -3320,12 +3326,6 @@
|
|||||||
github = "edlimerkaj";
|
github = "edlimerkaj";
|
||||||
githubId = 71988351;
|
githubId = 71988351;
|
||||||
};
|
};
|
||||||
edibopp = {
|
|
||||||
email = "eduard.bopp@aepsil0n.de";
|
|
||||||
github = "edibopp";
|
|
||||||
githubId = 3098430;
|
|
||||||
name = "Eduard Bopp";
|
|
||||||
};
|
|
||||||
emantor = {
|
emantor = {
|
||||||
email = "rouven+nixos@czerwinskis.de";
|
email = "rouven+nixos@czerwinskis.de";
|
||||||
github = "emantor";
|
github = "emantor";
|
||||||
@ -7821,6 +7821,12 @@
|
|||||||
githubId = 38543128;
|
githubId = 38543128;
|
||||||
name = "Miles Breslin";
|
name = "Miles Breslin";
|
||||||
};
|
};
|
||||||
|
milibopp = {
|
||||||
|
email = "contact@ebopp.de";
|
||||||
|
github = "milibopp";
|
||||||
|
githubId = 3098430;
|
||||||
|
name = "Emilia Bopp";
|
||||||
|
};
|
||||||
millerjason = {
|
millerjason = {
|
||||||
email = "mailings-github@millerjason.com";
|
email = "mailings-github@millerjason.com";
|
||||||
github = "millerjason";
|
github = "millerjason";
|
||||||
@ -11611,6 +11617,12 @@
|
|||||||
githubId = 2389333;
|
githubId = 2389333;
|
||||||
name = "Andy Tockman";
|
name = "Andy Tockman";
|
||||||
};
|
};
|
||||||
|
techknowlogick = {
|
||||||
|
email = "techknowlogick@gitea.io";
|
||||||
|
github = "techknowlogick";
|
||||||
|
githubId = 164197;
|
||||||
|
name = "techknowlogick";
|
||||||
|
};
|
||||||
Technical27 = {
|
Technical27 = {
|
||||||
email = "38222826+Technical27@users.noreply.github.com";
|
email = "38222826+Technical27@users.noreply.github.com";
|
||||||
github = "Technical27";
|
github = "Technical27";
|
||||||
@ -12665,6 +12677,12 @@
|
|||||||
email = "tim.williams.public@gmail.com";
|
email = "tim.williams.public@gmail.com";
|
||||||
name = "Tim Philip Williams";
|
name = "Tim Philip Williams";
|
||||||
};
|
};
|
||||||
|
willcohen = {
|
||||||
|
email = "willcohen@users.noreply.github.com";
|
||||||
|
github = "willcohen";
|
||||||
|
githubId = 5185341;
|
||||||
|
name = "Will Cohen";
|
||||||
|
};
|
||||||
winden = {
|
winden = {
|
||||||
email = "windenntw@gmail.com";
|
email = "windenntw@gmail.com";
|
||||||
name = "Antonio Vargas Gonzalez";
|
name = "Antonio Vargas Gonzalez";
|
||||||
|
@ -1,4 +1,13 @@
|
|||||||
{ pkgs, options, config, version, revision, extraSources ? [] }:
|
{ pkgs
|
||||||
|
, options
|
||||||
|
, config
|
||||||
|
, version
|
||||||
|
, revision
|
||||||
|
, extraSources ? []
|
||||||
|
, baseOptionsJSON ? null
|
||||||
|
, warningsAreErrors ? true
|
||||||
|
, prefix ? ../../..
|
||||||
|
}:
|
||||||
|
|
||||||
with pkgs;
|
with pkgs;
|
||||||
|
|
||||||
@ -11,11 +20,11 @@ let
|
|||||||
#
|
#
|
||||||
# E.g. if some `options` came from modules in ${pkgs.customModules}/nix,
|
# E.g. if some `options` came from modules in ${pkgs.customModules}/nix,
|
||||||
# you'd need to include `extraSources = [ pkgs.customModules ]`
|
# you'd need to include `extraSources = [ pkgs.customModules ]`
|
||||||
prefixesToStrip = map (p: "${toString p}/") ([ ../../.. ] ++ extraSources);
|
prefixesToStrip = map (p: "${toString p}/") ([ prefix ] ++ extraSources);
|
||||||
stripAnyPrefixes = lib.flip (lib.foldr lib.removePrefix) prefixesToStrip;
|
stripAnyPrefixes = lib.flip (lib.foldr lib.removePrefix) prefixesToStrip;
|
||||||
|
|
||||||
optionsDoc = buildPackages.nixosOptionsDoc {
|
optionsDoc = buildPackages.nixosOptionsDoc {
|
||||||
inherit options revision;
|
inherit options revision baseOptionsJSON warningsAreErrors;
|
||||||
transformOptions = opt: opt // {
|
transformOptions = opt: opt // {
|
||||||
# Clean up declaration sites to not refer to the NixOS source tree.
|
# Clean up declaration sites to not refer to the NixOS source tree.
|
||||||
declarations = map stripAnyPrefixes opt.declarations;
|
declarations = map stripAnyPrefixes opt.declarations;
|
||||||
@ -161,7 +170,7 @@ let
|
|||||||
in rec {
|
in rec {
|
||||||
inherit generatedSources;
|
inherit generatedSources;
|
||||||
|
|
||||||
inherit (optionsDoc) optionsJSON optionsDocBook;
|
inherit (optionsDoc) optionsJSON optionsNix optionsDocBook;
|
||||||
|
|
||||||
# Generate the NixOS manual.
|
# Generate the NixOS manual.
|
||||||
manualHTML = runCommand "nixos-manual-html"
|
manualHTML = runCommand "nixos-manual-html"
|
||||||
|
@ -5,7 +5,7 @@ extra information. Module meta attributes are defined in the `meta.nix`
|
|||||||
special module.
|
special module.
|
||||||
|
|
||||||
`meta` is a top level attribute like `options` and `config`. Available
|
`meta` is a top level attribute like `options` and `config`. Available
|
||||||
meta-attributes are `maintainers` and `doc`.
|
meta-attributes are `maintainers`, `doc`, and `buildDocsInSandbox`.
|
||||||
|
|
||||||
Each of the meta-attributes must be defined at most once per module
|
Each of the meta-attributes must be defined at most once per module
|
||||||
file.
|
file.
|
||||||
@ -24,6 +24,7 @@ file.
|
|||||||
meta = {
|
meta = {
|
||||||
maintainers = with lib.maintainers; [ ericsagnes ];
|
maintainers = with lib.maintainers; [ ericsagnes ];
|
||||||
doc = ./default.xml;
|
doc = ./default.xml;
|
||||||
|
buildDocsInSandbox = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -38,3 +39,28 @@ file.
|
|||||||
```ShellSession
|
```ShellSession
|
||||||
$ nix-build nixos/release.nix -A manual.x86_64-linux
|
$ nix-build nixos/release.nix -A manual.x86_64-linux
|
||||||
```
|
```
|
||||||
|
|
||||||
|
- `buildDocsInSandbox` indicates whether the option documentation for the
|
||||||
|
module can be built in a derivation sandbox. This option is currently only
|
||||||
|
honored for modules shipped by nixpkgs. User modules and modules taken from
|
||||||
|
`NIXOS_EXTRA_MODULE_PATH` are always built outside of the sandbox, as has
|
||||||
|
been the case in previous releases.
|
||||||
|
|
||||||
|
Building NixOS option documentation in a sandbox allows caching of the built
|
||||||
|
documentation, which greatly decreases the amount of time needed to evaluate
|
||||||
|
a system configuration that has NixOS documentation enabled. The sandbox also
|
||||||
|
restricts which attributes may be referenced by documentation attributes
|
||||||
|
(such as option descriptions) to the `options` and `lib` module arguments and
|
||||||
|
the `pkgs.formats` attribute of the `pkgs` argument, `config` and the rest of
|
||||||
|
`pkgs` are disallowed and will cause doc build failures when used. This
|
||||||
|
restriction is necessary because we cannot reproduce the full nixpkgs
|
||||||
|
instantiation with configuration and overlays from a system configuration
|
||||||
|
inside the sandbox. The `options` argument only includes options of modules
|
||||||
|
that are also built inside the sandbox, referencing an option of a module
|
||||||
|
that isn't built in the sandbox is also forbidden.
|
||||||
|
|
||||||
|
The default is `true` and should usually not be changed; set it to `false`
|
||||||
|
only if the module requires access to `pkgs` in its documentation (e.g.
|
||||||
|
because it loads information from a linked package to build an option type)
|
||||||
|
or if its documentation depends on other modules that also aren't sandboxed
|
||||||
|
(e.g. by using types defined in the other module).
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
<para>
|
<para>
|
||||||
<literal>meta</literal> is a top level attribute like
|
<literal>meta</literal> is a top level attribute like
|
||||||
<literal>options</literal> and <literal>config</literal>. Available
|
<literal>options</literal> and <literal>config</literal>. Available
|
||||||
meta-attributes are <literal>maintainers</literal> and
|
meta-attributes are <literal>maintainers</literal>,
|
||||||
<literal>doc</literal>.
|
<literal>doc</literal>, and <literal>buildDocsInSandbox</literal>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Each of the meta-attributes must be defined at most once per module
|
Each of the meta-attributes must be defined at most once per module
|
||||||
@ -29,6 +29,7 @@
|
|||||||
meta = {
|
meta = {
|
||||||
maintainers = with lib.maintainers; [ ericsagnes ];
|
maintainers = with lib.maintainers; [ ericsagnes ];
|
||||||
doc = ./default.xml;
|
doc = ./default.xml;
|
||||||
|
buildDocsInSandbox = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
</programlisting>
|
</programlisting>
|
||||||
@ -51,5 +52,44 @@
|
|||||||
$ nix-build nixos/release.nix -A manual.x86_64-linux
|
$ nix-build nixos/release.nix -A manual.x86_64-linux
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<literal>buildDocsInSandbox</literal> indicates whether the
|
||||||
|
option documentation for the module can be built in a derivation
|
||||||
|
sandbox. This option is currently only honored for modules
|
||||||
|
shipped by nixpkgs. User modules and modules taken from
|
||||||
|
<literal>NIXOS_EXTRA_MODULE_PATH</literal> are always built
|
||||||
|
outside of the sandbox, as has been the case in previous
|
||||||
|
releases.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Building NixOS option documentation in a sandbox allows caching
|
||||||
|
of the built documentation, which greatly decreases the amount
|
||||||
|
of time needed to evaluate a system configuration that has NixOS
|
||||||
|
documentation enabled. The sandbox also restricts which
|
||||||
|
attributes may be referenced by documentation attributes (such
|
||||||
|
as option descriptions) to the <literal>options</literal> and
|
||||||
|
<literal>lib</literal> module arguments and the
|
||||||
|
<literal>pkgs.formats</literal> attribute of the
|
||||||
|
<literal>pkgs</literal> argument, <literal>config</literal> and
|
||||||
|
the rest of <literal>pkgs</literal> are disallowed and will
|
||||||
|
cause doc build failures when used. This restriction is
|
||||||
|
necessary because we cannot reproduce the full nixpkgs
|
||||||
|
instantiation with configuration and overlays from a system
|
||||||
|
configuration inside the sandbox. The <literal>options</literal>
|
||||||
|
argument only includes options of modules that are also built
|
||||||
|
inside the sandbox, referencing an option of a module that isn’t
|
||||||
|
built in the sandbox is also forbidden.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The default is <literal>true</literal> and should usually not be
|
||||||
|
changed; set it to <literal>false</literal> only if the module
|
||||||
|
requires access to <literal>pkgs</literal> in its documentation
|
||||||
|
(e.g. because it loads information from a linked package to
|
||||||
|
build an option type) or if its documentation depends on other
|
||||||
|
modules that also aren’t sandboxed (e.g. by using types defined
|
||||||
|
in the other module).
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
53
nixos/lib/eval-cacheable-options.nix
Normal file
53
nixos/lib/eval-cacheable-options.nix
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
{ libPath
|
||||||
|
, pkgsLibPath
|
||||||
|
, nixosPath
|
||||||
|
, modules
|
||||||
|
, stateVersion
|
||||||
|
, release
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
lib = import libPath;
|
||||||
|
modulesPath = "${nixosPath}/modules";
|
||||||
|
# dummy pkgs set that contains no packages, only `pkgs.lib` from the full set.
|
||||||
|
# not having `pkgs.lib` causes all users of `pkgs.formats` to fail.
|
||||||
|
pkgs = import pkgsLibPath {
|
||||||
|
inherit lib;
|
||||||
|
pkgs = null;
|
||||||
|
};
|
||||||
|
utils = import "${nixosPath}/lib/utils.nix" {
|
||||||
|
inherit config lib;
|
||||||
|
pkgs = null;
|
||||||
|
};
|
||||||
|
# this is used both as a module and as specialArgs.
|
||||||
|
# as a module it sets the _module special values, as specialArgs it makes `config`
|
||||||
|
# unusable. this causes documentation attributes depending on `config` to fail.
|
||||||
|
config = {
|
||||||
|
_module.check = false;
|
||||||
|
_module.args = {};
|
||||||
|
system.stateVersion = stateVersion;
|
||||||
|
};
|
||||||
|
eval = lib.evalModules {
|
||||||
|
modules = (map (m: "${modulesPath}/${m}") modules) ++ [
|
||||||
|
config
|
||||||
|
];
|
||||||
|
specialArgs = {
|
||||||
|
inherit config pkgs utils;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
docs = import "${nixosPath}/doc/manual" {
|
||||||
|
pkgs = pkgs // {
|
||||||
|
inherit lib;
|
||||||
|
# duplicate of the declaration in all-packages.nix
|
||||||
|
buildPackages.nixosOptionsDoc = attrs:
|
||||||
|
(import "${nixosPath}/lib/make-options-doc")
|
||||||
|
({ inherit pkgs lib; } // attrs);
|
||||||
|
};
|
||||||
|
config = config.config;
|
||||||
|
options = eval.options;
|
||||||
|
version = release;
|
||||||
|
revision = "release-${release}";
|
||||||
|
prefix = modulesPath;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
docs.optionsNix
|
@ -21,6 +21,13 @@
|
|||||||
, options
|
, options
|
||||||
, transformOptions ? lib.id # function for additional tranformations of the options
|
, transformOptions ? lib.id # function for additional tranformations of the options
|
||||||
, revision ? "" # Specify revision for the options
|
, revision ? "" # Specify revision for the options
|
||||||
|
# a set of options the docs we are generating will be merged into, as if by recursiveUpdate.
|
||||||
|
# used to split the options doc build into a static part (nixos/modules) and a dynamic part
|
||||||
|
# (non-nixos modules imported via configuration.nix, other module sources).
|
||||||
|
, baseOptionsJSON ? null
|
||||||
|
# instead of printing warnings for eg options with missing descriptions (which may be lost
|
||||||
|
# by nix build unless -L is given), emit errors instead and fail the build
|
||||||
|
, warningsAreErrors ? true
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
@ -51,10 +58,15 @@ let
|
|||||||
# ../../../lib/options.nix influences.
|
# ../../../lib/options.nix influences.
|
||||||
#
|
#
|
||||||
# Each element of `relatedPackages` can be either
|
# Each element of `relatedPackages` can be either
|
||||||
# - a string: that will be interpreted as an attribute name from `pkgs`,
|
# - a string: that will be interpreted as an attribute name from `pkgs` and turned into a link
|
||||||
# - a list: that will be interpreted as an attribute path from `pkgs`,
|
# to search.nixos.org,
|
||||||
# - an attrset: that can specify `name`, `path`, `package`, `comment`
|
# - a list: that will be interpreted as an attribute path from `pkgs` and turned into a link
|
||||||
|
# to search.nixos.org,
|
||||||
|
# - an attrset: that can specify `name`, `path`, `comment`
|
||||||
# (either of `name`, `path` is required, the rest are optional).
|
# (either of `name`, `path` is required, the rest are optional).
|
||||||
|
#
|
||||||
|
# NOTE: No checks against `pkgs` are made to ensure that the referenced package actually exists.
|
||||||
|
# Such checks are not compatible with option docs caching.
|
||||||
genRelatedPackages = packages: optName:
|
genRelatedPackages = packages: optName:
|
||||||
let
|
let
|
||||||
unpack = p: if lib.isString p then { name = p; }
|
unpack = p: if lib.isString p then { name = p; }
|
||||||
@ -64,16 +76,16 @@ let
|
|||||||
let
|
let
|
||||||
title = args.title or null;
|
title = args.title or null;
|
||||||
name = args.name or (lib.concatStringsSep "." args.path);
|
name = args.name or (lib.concatStringsSep "." args.path);
|
||||||
path = args.path or [ args.name ];
|
in ''
|
||||||
package = args.package or (lib.attrByPath path (throw "Invalid package attribute path `${toString path}' found while evaluating `relatedPackages' of option `${optName}'") pkgs);
|
<listitem>
|
||||||
in "<listitem>"
|
<para>
|
||||||
+ "<para><literal>${lib.optionalString (title != null) "${title} aka "}pkgs.${name} (${package.meta.name})</literal>"
|
<link xlink:href="https://search.nixos.org/packages?show=${name}&sort=relevance&query=${name}">
|
||||||
+ lib.optionalString (!package.meta.available) " <emphasis>[UNAVAILABLE]</emphasis>"
|
<literal>${lib.optionalString (title != null) "${title} aka "}pkgs.${name}</literal>
|
||||||
+ ": ${package.meta.description or "???"}.</para>"
|
</link>
|
||||||
+ lib.optionalString (args ? comment) "\n<para>${args.comment}</para>"
|
</para>
|
||||||
# Lots of `longDescription's break DocBook, so we just wrap them into <programlisting>
|
${lib.optionalString (args ? comment) "<para>${args.comment}</para>"}
|
||||||
+ lib.optionalString (package.meta ? longDescription) "\n<programlisting>${package.meta.longDescription}</programlisting>"
|
</listitem>
|
||||||
+ "</listitem>";
|
'';
|
||||||
in "<itemizedlist>${lib.concatStringsSep "\n" (map (p: describe (unpack p)) packages)}</itemizedlist>";
|
in "<itemizedlist>${lib.concatStringsSep "\n" (map (p: describe (unpack p)) packages)}</itemizedlist>";
|
||||||
|
|
||||||
# Remove invisible and internal options.
|
# Remove invisible and internal options.
|
||||||
@ -99,13 +111,24 @@ in rec {
|
|||||||
optionsJSON = pkgs.runCommand "options.json"
|
optionsJSON = pkgs.runCommand "options.json"
|
||||||
{ meta.description = "List of NixOS options in JSON format";
|
{ meta.description = "List of NixOS options in JSON format";
|
||||||
buildInputs = [ pkgs.brotli ];
|
buildInputs = [ pkgs.brotli ];
|
||||||
|
options = builtins.toFile "options.json"
|
||||||
|
(builtins.unsafeDiscardStringContext (builtins.toJSON optionsNix));
|
||||||
}
|
}
|
||||||
''
|
''
|
||||||
# Export list of options in different format.
|
# Export list of options in different format.
|
||||||
dst=$out/share/doc/nixos
|
dst=$out/share/doc/nixos
|
||||||
mkdir -p $dst
|
mkdir -p $dst
|
||||||
|
|
||||||
cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON optionsNix))} $dst/options.json
|
${
|
||||||
|
if baseOptionsJSON == null
|
||||||
|
then "cp $options $dst/options.json"
|
||||||
|
else ''
|
||||||
|
${pkgs.python3Minimal}/bin/python ${./mergeJSON.py} \
|
||||||
|
${lib.optionalString warningsAreErrors "--warnings-are-errors"} \
|
||||||
|
${baseOptionsJSON} $options \
|
||||||
|
> $dst/options.json
|
||||||
|
''
|
||||||
|
}
|
||||||
|
|
||||||
brotli -9 < $dst/options.json > $dst/options.json.br
|
brotli -9 < $dst/options.json > $dst/options.json.br
|
||||||
|
|
||||||
|
86
nixos/lib/make-options-doc/mergeJSON.py
Normal file
86
nixos/lib/make-options-doc/mergeJSON.py
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
import collections
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
|
JSON = Dict[str, Any]
|
||||||
|
|
||||||
|
class Key:
|
||||||
|
def __init__(self, path: List[str]):
|
||||||
|
self.path = path
|
||||||
|
def __hash__(self):
|
||||||
|
result = 0
|
||||||
|
for id in self.path:
|
||||||
|
result ^= hash(id)
|
||||||
|
return result
|
||||||
|
def __eq__(self, other):
|
||||||
|
return type(self) is type(other) and self.path == other.path
|
||||||
|
|
||||||
|
Option = collections.namedtuple('Option', ['name', 'value'])
|
||||||
|
|
||||||
|
# pivot a dict of options keyed by their display name to a dict keyed by their path
|
||||||
|
def pivot(options: Dict[str, JSON]) -> Dict[Key, Option]:
|
||||||
|
result: Dict[Key, Option] = dict()
|
||||||
|
for (name, opt) in options.items():
|
||||||
|
result[Key(opt['loc'])] = Option(name, opt)
|
||||||
|
return result
|
||||||
|
|
||||||
|
# pivot back to indexed-by-full-name
|
||||||
|
# like the docbook build we'll just fail if multiple options with differing locs
|
||||||
|
# render to the same option name.
|
||||||
|
def unpivot(options: Dict[Key, Option]) -> Dict[str, JSON]:
|
||||||
|
result: Dict[str, Dict] = dict()
|
||||||
|
for (key, opt) in options.items():
|
||||||
|
if opt.name in result:
|
||||||
|
raise RuntimeError(
|
||||||
|
'multiple options with colliding ids found',
|
||||||
|
opt.name,
|
||||||
|
result[opt.name]['loc'],
|
||||||
|
opt.value['loc'],
|
||||||
|
)
|
||||||
|
result[opt.name] = opt.value
|
||||||
|
return result
|
||||||
|
|
||||||
|
warningsAreErrors = sys.argv[1] == "--warnings-are-errors"
|
||||||
|
optOffset = 1 if warningsAreErrors else 0
|
||||||
|
options = pivot(json.load(open(sys.argv[1 + optOffset], 'r')))
|
||||||
|
overrides = pivot(json.load(open(sys.argv[2 + optOffset], 'r')))
|
||||||
|
|
||||||
|
# fix up declaration paths in lazy options, since we don't eval them from a full nixpkgs dir
|
||||||
|
for (k, v) in options.items():
|
||||||
|
v.value['declarations'] = list(map(lambda s: f'nixos/modules/{s}', v.value['declarations']))
|
||||||
|
|
||||||
|
# merge both descriptions
|
||||||
|
for (k, v) in overrides.items():
|
||||||
|
cur = options.setdefault(k, v).value
|
||||||
|
for (ok, ov) in v.value.items():
|
||||||
|
if ok == 'declarations':
|
||||||
|
decls = cur[ok]
|
||||||
|
for d in ov:
|
||||||
|
if d not in decls:
|
||||||
|
decls += [d]
|
||||||
|
elif ok == "type":
|
||||||
|
# ignore types of placeholder options
|
||||||
|
if ov != "_unspecified" or cur[ok] == "_unspecified":
|
||||||
|
cur[ok] = ov
|
||||||
|
elif ov is not None or cur.get(ok, None) is None:
|
||||||
|
cur[ok] = ov
|
||||||
|
|
||||||
|
# check that every option has a description
|
||||||
|
hasWarnings = False
|
||||||
|
for (k, v) in options.items():
|
||||||
|
if v.value.get('description', None) is None:
|
||||||
|
severity = "error" if warningsAreErrors else "warning"
|
||||||
|
hasWarnings = True
|
||||||
|
print(f"\x1b[1;31m{severity}: option {v.name} has no description\x1b[0m", file=sys.stderr)
|
||||||
|
v.value['description'] = "This option has no description."
|
||||||
|
if hasWarnings and warningsAreErrors:
|
||||||
|
print(
|
||||||
|
"\x1b[1;31m" +
|
||||||
|
"Treating warnings as errors. Set documentation.nixos.options.warningsAreErrors " +
|
||||||
|
"to false to ignore these warnings." +
|
||||||
|
"\x1b[0m",
|
||||||
|
file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
json.dump(unpivot(options), fp=sys.stdout)
|
@ -40,4 +40,7 @@ in
|
|||||||
};
|
};
|
||||||
services.xserver.displayManager.sessionCommands = "${fcitxPackage}/bin/fcitx";
|
services.xserver.displayManager.sessionCommands = "${fcitxPackage}/bin/fcitx";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -80,4 +80,7 @@ in
|
|||||||
ibusPackage
|
ibusPackage
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -45,5 +45,7 @@ in
|
|||||||
|
|
||||||
environment.etc."xdg/kime/config.yaml".text = replaceStrings [ "\\\\" ] [ "\\" ] (builtins.toJSON cfg.config);
|
environment.etc."xdg/kime/config.yaml".text = replaceStrings [ "\\\\" ] [ "\\" ] (builtins.toJSON cfg.config);
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
|
}
|
||||||
|
@ -1,19 +1,35 @@
|
|||||||
{ config, lib, pkgs, extendModules, noUserModules, ... }:
|
{ config, options, lib, pkgs, utils, modules, baseModules, extraModules, modulesPath, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
cfg = config.documentation;
|
cfg = config.documentation;
|
||||||
|
allOpts = options;
|
||||||
|
|
||||||
/* Modules for which to show options even when not imported. */
|
/* Modules for which to show options even when not imported. */
|
||||||
extraDocModules = [ ../virtualisation/qemu-vm.nix ];
|
extraDocModules = [ ../virtualisation/qemu-vm.nix ];
|
||||||
|
|
||||||
/* For the purpose of generating docs, evaluate options with each derivation
|
canCacheDocs = m:
|
||||||
in `pkgs` (recursively) replaced by a fake with path "\${pkgs.attribute.path}".
|
let
|
||||||
It isn't perfect, but it seems to cover a vast majority of use cases.
|
f = import m;
|
||||||
Caveat: even if the package is reached by a different means,
|
instance = f (mapAttrs (n: _: abort "evaluating ${n} for `meta` failed") (functionArgs f));
|
||||||
the path above will be shown and not e.g. `${config.services.foo.package}`. */
|
in
|
||||||
|
cfg.nixos.options.splitBuild
|
||||||
|
&& builtins.isPath m
|
||||||
|
&& isFunction f
|
||||||
|
&& instance ? options
|
||||||
|
&& instance.meta.buildDocsInSandbox or true;
|
||||||
|
|
||||||
|
docModules =
|
||||||
|
let
|
||||||
|
p = partition canCacheDocs (baseModules ++ extraDocModules);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
lazy = p.right;
|
||||||
|
eager = p.wrong ++ optionals cfg.nixos.includeAllModules (extraModules ++ modules);
|
||||||
|
};
|
||||||
|
|
||||||
manual = import ../../doc/manual rec {
|
manual = import ../../doc/manual rec {
|
||||||
inherit pkgs config;
|
inherit pkgs config;
|
||||||
version = config.system.nixos.release;
|
version = config.system.nixos.release;
|
||||||
@ -21,10 +37,17 @@ let
|
|||||||
extraSources = cfg.nixos.extraModuleSources;
|
extraSources = cfg.nixos.extraModuleSources;
|
||||||
options =
|
options =
|
||||||
let
|
let
|
||||||
extendNixOS = if cfg.nixos.includeAllModules then extendModules else noUserModules.extendModules;
|
scrubbedEval = evalModules {
|
||||||
scrubbedEval = extendNixOS {
|
modules = [ {
|
||||||
modules = extraDocModules;
|
_module.check = false;
|
||||||
specialArgs.pkgs = scrubDerivations "pkgs" pkgs;
|
} ] ++ docModules.eager;
|
||||||
|
specialArgs = {
|
||||||
|
pkgs = scrubDerivations "pkgs" pkgs;
|
||||||
|
# allow access to arbitrary options for eager modules, eg for getting
|
||||||
|
# option types from lazy modules
|
||||||
|
options = allOpts;
|
||||||
|
inherit modulesPath utils;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
scrubDerivations = namePrefix: pkgSet: mapAttrs
|
scrubDerivations = namePrefix: pkgSet: mapAttrs
|
||||||
(name: value:
|
(name: value:
|
||||||
@ -36,6 +59,53 @@ let
|
|||||||
)
|
)
|
||||||
pkgSet;
|
pkgSet;
|
||||||
in scrubbedEval.options;
|
in scrubbedEval.options;
|
||||||
|
baseOptionsJSON =
|
||||||
|
let
|
||||||
|
filter =
|
||||||
|
builtins.filterSource
|
||||||
|
(n: t:
|
||||||
|
(t == "directory" -> baseNameOf n != "tests")
|
||||||
|
&& (t == "file" -> hasSuffix ".nix" n)
|
||||||
|
);
|
||||||
|
pull = dir:
|
||||||
|
if isStorePath pkgs.path
|
||||||
|
then "${builtins.storePath pkgs.path}/${dir}"
|
||||||
|
else filter "${toString pkgs.path}/${dir}";
|
||||||
|
in
|
||||||
|
pkgs.runCommand "lazy-options.json" {
|
||||||
|
libPath = pull "lib";
|
||||||
|
pkgsLibPath = pull "pkgs/pkgs-lib";
|
||||||
|
nixosPath = pull "nixos";
|
||||||
|
modules = map (p: ''"${removePrefix "${modulesPath}/" (toString p)}"'') docModules.lazy;
|
||||||
|
} ''
|
||||||
|
export NIX_STORE_DIR=$TMPDIR/store
|
||||||
|
export NIX_STATE_DIR=$TMPDIR/state
|
||||||
|
${pkgs.nix}/bin/nix-instantiate \
|
||||||
|
--show-trace \
|
||||||
|
--eval --json --strict \
|
||||||
|
--argstr libPath "$libPath" \
|
||||||
|
--argstr pkgsLibPath "$pkgsLibPath" \
|
||||||
|
--argstr nixosPath "$nixosPath" \
|
||||||
|
--arg modules "[ $modules ]" \
|
||||||
|
--argstr stateVersion "${options.system.stateVersion.default}" \
|
||||||
|
--argstr release "${config.system.nixos.release}" \
|
||||||
|
$nixosPath/lib/eval-cacheable-options.nix > $out \
|
||||||
|
|| {
|
||||||
|
echo -en "\e[1;31m"
|
||||||
|
echo 'Cacheable portion of option doc build failed.'
|
||||||
|
echo 'Usually this means that an option attribute that ends up in documentation (eg' \
|
||||||
|
'`default` or `description`) depends on the restricted module arguments' \
|
||||||
|
'`config` or `pkgs`.'
|
||||||
|
echo
|
||||||
|
echo 'Rebuild your configuration with `--show-trace` to find the offending' \
|
||||||
|
'location. Remove the references to restricted arguments (eg by escaping' \
|
||||||
|
'their antiquotations or adding a `defaultText`) or disable the sandboxed' \
|
||||||
|
'build for the failing module by setting `meta.buildDocsInSandbox = false`.'
|
||||||
|
echo -en "\e[0m"
|
||||||
|
exit 1
|
||||||
|
} >&2
|
||||||
|
'';
|
||||||
|
inherit (cfg.nixos.options) warningsAreErrors;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -178,6 +248,25 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nixos.options.splitBuild = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to split the option docs build into a cacheable and an uncacheable part.
|
||||||
|
Splitting the build can substantially decrease the amount of time needed to build
|
||||||
|
the manual, but some user modules may be incompatible with this splitting.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
nixos.options.warningsAreErrors = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Treat warning emitted during the option documentation build (eg for missing option
|
||||||
|
descriptions) as errors.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
nixos.includeAllModules = mkOption {
|
nixos.includeAllModules = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
|
@ -54,6 +54,21 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
buildDocsInSandbox = mkOption {
|
||||||
|
type = types.bool // {
|
||||||
|
merge = loc: defs: defs;
|
||||||
|
};
|
||||||
|
internal = true;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to include this module in the split options doc build.
|
||||||
|
Disable if the module references `config`, `pkgs` or other module
|
||||||
|
arguments that cannot be evaluated as constants.
|
||||||
|
|
||||||
|
This option should be defined at most once per module.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -248,4 +248,7 @@ in
|
|||||||
)
|
)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# needs a full nixpkgs path to import nixpkgs
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -119,4 +119,6 @@ in
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses version info nixpkgs, which requires a full nixpkgs path
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -149,4 +149,6 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,10 @@ let
|
|||||||
datasetOptions = rec {
|
datasetOptions = rec {
|
||||||
use_template = mkOption {
|
use_template = mkOption {
|
||||||
description = "Names of the templates to use for this dataset.";
|
description = "Names of the templates to use for this dataset.";
|
||||||
type = types.listOf (types.enum (attrNames cfg.templates));
|
type = types.listOf (types.str // {
|
||||||
|
check = (types.enum (attrNames cfg.templates)).check;
|
||||||
|
description = "configured template name";
|
||||||
|
});
|
||||||
default = [ ];
|
default = [ ];
|
||||||
};
|
};
|
||||||
useTemplate = use_template;
|
useTemplate = use_template;
|
||||||
|
@ -6,6 +6,7 @@ let
|
|||||||
top = config.services.kubernetes;
|
top = config.services.kubernetes;
|
||||||
otop = options.services.kubernetes;
|
otop = options.services.kubernetes;
|
||||||
cfg = top.controllerManager;
|
cfg = top.controllerManager;
|
||||||
|
klib = options.services.kubernetes.lib.default;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@ -56,7 +57,7 @@ in
|
|||||||
type = int;
|
type = int;
|
||||||
};
|
};
|
||||||
|
|
||||||
kubeconfig = top.lib.mkKubeConfigOptions "Kubernetes controller manager";
|
kubeconfig = klib.mkKubeConfigOptions "Kubernetes controller manager";
|
||||||
|
|
||||||
leaderElect = mkOption {
|
leaderElect = mkOption {
|
||||||
description = "Whether to start leader election before executing main loop.";
|
description = "Whether to start leader election before executing main loop.";
|
||||||
@ -129,7 +130,7 @@ in
|
|||||||
"--cluster-cidr=${cfg.clusterCidr}"} \
|
"--cluster-cidr=${cfg.clusterCidr}"} \
|
||||||
${optionalString (cfg.featureGates != [])
|
${optionalString (cfg.featureGates != [])
|
||||||
"--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \
|
"--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \
|
||||||
--kubeconfig=${top.lib.mkKubeConfig "kube-controller-manager" cfg.kubeconfig} \
|
--kubeconfig=${klib.mkKubeConfig "kube-controller-manager" cfg.kubeconfig} \
|
||||||
--leader-elect=${boolToString cfg.leaderElect} \
|
--leader-elect=${boolToString cfg.leaderElect} \
|
||||||
${optionalString (cfg.rootCaFile!=null)
|
${optionalString (cfg.rootCaFile!=null)
|
||||||
"--root-ca-file=${cfg.rootCaFile}"} \
|
"--root-ca-file=${cfg.rootCaFile}"} \
|
||||||
@ -156,7 +157,7 @@ in
|
|||||||
path = top.path;
|
path = top.path;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.kubernetes.pki.certs = with top.lib; {
|
services.kubernetes.pki.certs = with klib; {
|
||||||
controllerManager = mkCert {
|
controllerManager = mkCert {
|
||||||
name = "kube-controller-manager";
|
name = "kube-controller-manager";
|
||||||
CN = "kube-controller-manager";
|
CN = "kube-controller-manager";
|
||||||
|
@ -193,12 +193,17 @@ in {
|
|||||||
inherit mkKubeConfigOptions;
|
inherit mkKubeConfigOptions;
|
||||||
};
|
};
|
||||||
type = types.attrs;
|
type = types.attrs;
|
||||||
|
readOnly = true;
|
||||||
|
internal = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
secretsPath = mkOption {
|
secretsPath = mkOption {
|
||||||
description = "Default location for kubernetes secrets. Not a store location.";
|
description = "Default location for kubernetes secrets. Not a store location.";
|
||||||
type = types.path;
|
type = types.path;
|
||||||
default = cfg.dataDir + "/secrets";
|
default = cfg.dataDir + "/secrets";
|
||||||
|
defaultText = literalExpression ''
|
||||||
|
config.${opt.dataDir} + "/secrets"
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ let
|
|||||||
top = config.services.kubernetes;
|
top = config.services.kubernetes;
|
||||||
otop = options.services.kubernetes;
|
otop = options.services.kubernetes;
|
||||||
cfg = top.kubelet;
|
cfg = top.kubelet;
|
||||||
|
klib = options.services.kubernetes.lib.default;
|
||||||
|
|
||||||
cniConfig =
|
cniConfig =
|
||||||
if cfg.cni.config != [] && cfg.cni.configDir != null then
|
if cfg.cni.config != [] && cfg.cni.configDir != null then
|
||||||
@ -27,7 +28,7 @@ let
|
|||||||
config.Cmd = ["/bin/pause"];
|
config.Cmd = ["/bin/pause"];
|
||||||
};
|
};
|
||||||
|
|
||||||
kubeconfig = top.lib.mkKubeConfig "kubelet" cfg.kubeconfig;
|
kubeconfig = klib.mkKubeConfig "kubelet" cfg.kubeconfig;
|
||||||
|
|
||||||
manifestPath = "kubernetes/manifests";
|
manifestPath = "kubernetes/manifests";
|
||||||
|
|
||||||
@ -177,7 +178,7 @@ in
|
|||||||
type = str;
|
type = str;
|
||||||
};
|
};
|
||||||
|
|
||||||
kubeconfig = top.lib.mkKubeConfigOptions "Kubelet";
|
kubeconfig = klib.mkKubeConfigOptions "Kubelet";
|
||||||
|
|
||||||
manifests = mkOption {
|
manifests = mkOption {
|
||||||
description = "List of manifests to bootstrap with kubelet (only pods can be created as manifest entry)";
|
description = "List of manifests to bootstrap with kubelet (only pods can be created as manifest entry)";
|
||||||
@ -358,7 +359,7 @@ in
|
|||||||
services.kubernetes.kubelet.hostname = with config.networking;
|
services.kubernetes.kubelet.hostname = with config.networking;
|
||||||
mkDefault (hostName + optionalString (domain != null) ".${domain}");
|
mkDefault (hostName + optionalString (domain != null) ".${domain}");
|
||||||
|
|
||||||
services.kubernetes.pki.certs = with top.lib; {
|
services.kubernetes.pki.certs = with klib; {
|
||||||
kubelet = mkCert {
|
kubelet = mkCert {
|
||||||
name = "kubelet";
|
name = "kubelet";
|
||||||
CN = top.kubelet.hostname;
|
CN = top.kubelet.hostname;
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, options, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
top = config.services.kubernetes;
|
top = config.services.kubernetes;
|
||||||
cfg = top.pki;
|
cfg = top.pki;
|
||||||
|
klib = options.services.kubernetes.lib;
|
||||||
|
|
||||||
csrCA = pkgs.writeText "kube-pki-cacert-csr.json" (builtins.toJSON {
|
csrCA = pkgs.writeText "kube-pki-cacert-csr.json" (builtins.toJSON {
|
||||||
key = {
|
key = {
|
||||||
@ -29,7 +30,7 @@ let
|
|||||||
cfsslAPITokenLength = 32;
|
cfsslAPITokenLength = 32;
|
||||||
|
|
||||||
clusterAdminKubeconfig = with cfg.certs.clusterAdmin;
|
clusterAdminKubeconfig = with cfg.certs.clusterAdmin;
|
||||||
top.lib.mkKubeConfig "cluster-admin" {
|
klib.mkKubeConfig "cluster-admin" {
|
||||||
server = top.apiserverAddress;
|
server = top.apiserverAddress;
|
||||||
certFile = cert;
|
certFile = cert;
|
||||||
keyFile = key;
|
keyFile = key;
|
||||||
@ -250,7 +251,7 @@ in
|
|||||||
# - it would be better with a more Nix-oriented way of managing addons
|
# - it would be better with a more Nix-oriented way of managing addons
|
||||||
systemd.services.kube-addon-manager = mkIf top.addonManager.enable (mkMerge [{
|
systemd.services.kube-addon-manager = mkIf top.addonManager.enable (mkMerge [{
|
||||||
environment.KUBECONFIG = with cfg.certs.addonManager;
|
environment.KUBECONFIG = with cfg.certs.addonManager;
|
||||||
top.lib.mkKubeConfig "addon-manager" {
|
klib.mkKubeConfig "addon-manager" {
|
||||||
server = top.apiserverAddress;
|
server = top.apiserverAddress;
|
||||||
certFile = cert;
|
certFile = cert;
|
||||||
keyFile = key;
|
keyFile = key;
|
||||||
@ -343,7 +344,7 @@ in
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
services.flannel = with cfg.certs.flannelClient; {
|
services.flannel = with cfg.certs.flannelClient; {
|
||||||
kubeconfig = top.lib.mkKubeConfig "flannel" {
|
kubeconfig = klib.mkKubeConfig "flannel" {
|
||||||
server = top.apiserverAddress;
|
server = top.apiserverAddress;
|
||||||
certFile = cert;
|
certFile = cert;
|
||||||
keyFile = key;
|
keyFile = key;
|
||||||
|
@ -6,6 +6,7 @@ let
|
|||||||
top = config.services.kubernetes;
|
top = config.services.kubernetes;
|
||||||
otop = options.services.kubernetes;
|
otop = options.services.kubernetes;
|
||||||
cfg = top.proxy;
|
cfg = top.proxy;
|
||||||
|
klib = options.services.kubernetes.lib.default;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@ -43,7 +44,7 @@ in
|
|||||||
type = str;
|
type = str;
|
||||||
};
|
};
|
||||||
|
|
||||||
kubeconfig = top.lib.mkKubeConfigOptions "Kubernetes proxy";
|
kubeconfig = klib.mkKubeConfigOptions "Kubernetes proxy";
|
||||||
|
|
||||||
verbosity = mkOption {
|
verbosity = mkOption {
|
||||||
description = ''
|
description = ''
|
||||||
@ -72,7 +73,7 @@ in
|
|||||||
${optionalString (cfg.featureGates != [])
|
${optionalString (cfg.featureGates != [])
|
||||||
"--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \
|
"--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \
|
||||||
--hostname-override=${cfg.hostname} \
|
--hostname-override=${cfg.hostname} \
|
||||||
--kubeconfig=${top.lib.mkKubeConfig "kube-proxy" cfg.kubeconfig} \
|
--kubeconfig=${klib.mkKubeConfig "kube-proxy" cfg.kubeconfig} \
|
||||||
${optionalString (cfg.verbosity != null) "--v=${toString cfg.verbosity}"} \
|
${optionalString (cfg.verbosity != null) "--v=${toString cfg.verbosity}"} \
|
||||||
${cfg.extraOpts}
|
${cfg.extraOpts}
|
||||||
'';
|
'';
|
||||||
@ -88,7 +89,7 @@ in
|
|||||||
services.kubernetes.proxy.hostname = with config.networking; mkDefault hostName;
|
services.kubernetes.proxy.hostname = with config.networking; mkDefault hostName;
|
||||||
|
|
||||||
services.kubernetes.pki.certs = {
|
services.kubernetes.pki.certs = {
|
||||||
kubeProxyClient = top.lib.mkCert {
|
kubeProxyClient = klib.mkCert {
|
||||||
name = "kube-proxy-client";
|
name = "kube-proxy-client";
|
||||||
CN = "system:kube-proxy";
|
CN = "system:kube-proxy";
|
||||||
action = "systemctl restart kube-proxy.service";
|
action = "systemctl restart kube-proxy.service";
|
||||||
|
@ -6,6 +6,7 @@ let
|
|||||||
top = config.services.kubernetes;
|
top = config.services.kubernetes;
|
||||||
otop = options.services.kubernetes;
|
otop = options.services.kubernetes;
|
||||||
cfg = top.scheduler;
|
cfg = top.scheduler;
|
||||||
|
klib = options.services.kubernetes.lib.default;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
###### interface
|
###### interface
|
||||||
@ -32,7 +33,7 @@ in
|
|||||||
type = listOf str;
|
type = listOf str;
|
||||||
};
|
};
|
||||||
|
|
||||||
kubeconfig = top.lib.mkKubeConfigOptions "Kubernetes scheduler";
|
kubeconfig = klib.mkKubeConfigOptions "Kubernetes scheduler";
|
||||||
|
|
||||||
leaderElect = mkOption {
|
leaderElect = mkOption {
|
||||||
description = "Whether to start leader election before executing main loop.";
|
description = "Whether to start leader election before executing main loop.";
|
||||||
@ -69,7 +70,7 @@ in
|
|||||||
--address=${cfg.address} \
|
--address=${cfg.address} \
|
||||||
${optionalString (cfg.featureGates != [])
|
${optionalString (cfg.featureGates != [])
|
||||||
"--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \
|
"--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \
|
||||||
--kubeconfig=${top.lib.mkKubeConfig "kube-scheduler" cfg.kubeconfig} \
|
--kubeconfig=${klib.mkKubeConfig "kube-scheduler" cfg.kubeconfig} \
|
||||||
--leader-elect=${boolToString cfg.leaderElect} \
|
--leader-elect=${boolToString cfg.leaderElect} \
|
||||||
--port=${toString cfg.port} \
|
--port=${toString cfg.port} \
|
||||||
${optionalString (cfg.verbosity != null) "--v=${toString cfg.verbosity}"} \
|
${optionalString (cfg.verbosity != null) "--v=${toString cfg.verbosity}"} \
|
||||||
@ -87,7 +88,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
services.kubernetes.pki.certs = {
|
services.kubernetes.pki.certs = {
|
||||||
schedulerClient = top.lib.mkCert {
|
schedulerClient = klib.mkCert {
|
||||||
name = "kube-scheduler-client";
|
name = "kube-scheduler-client";
|
||||||
CN = "system:kube-scheduler";
|
CN = "system:kube-scheduler";
|
||||||
action = "systemctl restart kube-scheduler.service";
|
action = "systemctl restart kube-scheduler.service";
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, options, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.couchdb;
|
cfg = config.services.couchdb;
|
||||||
|
opt = options.services.couchdb;
|
||||||
configFile = pkgs.writeText "couchdb.ini" (
|
configFile = pkgs.writeText "couchdb.ini" (
|
||||||
''
|
''
|
||||||
[couchdb]
|
[couchdb]
|
||||||
@ -153,6 +154,7 @@ in {
|
|||||||
argsFile = mkOption {
|
argsFile = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
default = "${cfg.package}/etc/vm.args";
|
default = "${cfg.package}/etc/vm.args";
|
||||||
|
defaultText = literalExpression ''"config.${opt.package}/etc/vm.args"'';
|
||||||
description = ''
|
description = ''
|
||||||
vm.args configuration. Overrides Couchdb's Erlang VM parameters file.
|
vm.args configuration. Overrides Couchdb's Erlang VM parameters file.
|
||||||
'';
|
'';
|
||||||
|
@ -54,7 +54,7 @@ in
|
|||||||
|
|
||||||
systemd.packages = [ cfg.package ];
|
systemd.packages = [ cfg.package ];
|
||||||
|
|
||||||
services.udev.packages = [ pkgs.libmtp ];
|
services.udev.packages = [ pkgs.libmtp.out ];
|
||||||
|
|
||||||
# Needed for unwrapped applications
|
# Needed for unwrapped applications
|
||||||
environment.variables.GIO_EXTRA_MODULES = [ "${cfg.package}/lib/gio/modules" ];
|
environment.variables.GIO_EXTRA_MODULES = [ "${cfg.package}/lib/gio/modules" ];
|
||||||
|
@ -29,6 +29,8 @@ in {
|
|||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
maintainers = teams.freedesktop.members;
|
maintainers = teams.freedesktop.members;
|
||||||
|
# uses attributes of the linked package
|
||||||
|
buildDocsInSandbox = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
###### interface
|
###### interface
|
||||||
|
@ -40,6 +40,8 @@ in {
|
|||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
maintainers = teams.freedesktop.members;
|
maintainers = teams.freedesktop.members;
|
||||||
|
# uses attributes of the linked package
|
||||||
|
buildDocsInSandbox = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
###### interface
|
###### interface
|
||||||
|
@ -226,4 +226,7 @@ in {
|
|||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -678,7 +678,7 @@ in
|
|||||||
rev = "ff96a0fa5635770390b184ae74debea75c3fd534";
|
rev = "ff96a0fa5635770390b184ae74debea75c3fd534";
|
||||||
ref = "nixos-unstable";
|
ref = "nixos-unstable";
|
||||||
};
|
};
|
||||||
image_from_nixpkgs = (import ("${pkgs.sourcehut.buildsrht}/lib/images/nixos/image.nix") {
|
image_from_nixpkgs = (import ("''${pkgs.sourcehut.buildsrht}/lib/images/nixos/image.nix") {
|
||||||
pkgs = (import pkgs_unstable {});
|
pkgs = (import pkgs_unstable {});
|
||||||
});
|
});
|
||||||
in
|
in
|
||||||
@ -696,6 +696,7 @@ in
|
|||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.git;
|
default = pkgs.git;
|
||||||
|
defaultText = literalExpression "pkgs.git";
|
||||||
example = literalExpression "pkgs.gitFull";
|
example = literalExpression "pkgs.gitFull";
|
||||||
description = ''
|
description = ''
|
||||||
Git package for git.sr.ht. This can help silence collisions.
|
Git package for git.sr.ht. This can help silence collisions.
|
||||||
@ -712,6 +713,7 @@ in
|
|||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.mercurial;
|
default = pkgs.mercurial;
|
||||||
|
defaultText = literalExpression "pkgs.mercurial";
|
||||||
description = ''
|
description = ''
|
||||||
Mercurial package for hg.sr.ht. This can help silence collisions.
|
Mercurial package for hg.sr.ht. This can help silence collisions.
|
||||||
'';
|
'';
|
||||||
|
@ -251,6 +251,13 @@ let
|
|||||||
|
|
||||||
promTypes.scrape_config = types.submodule {
|
promTypes.scrape_config = types.submodule {
|
||||||
options = {
|
options = {
|
||||||
|
authorization = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = {};
|
||||||
|
description = ''
|
||||||
|
Sets the `Authorization` header on every scrape request with the configured credentials.
|
||||||
|
'';
|
||||||
|
};
|
||||||
job_name = mkOption {
|
job_name = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = ''
|
description = ''
|
||||||
|
@ -118,4 +118,7 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -378,4 +378,6 @@ in
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
meta.maintainers = with maintainers; [ hexa ];
|
meta.maintainers = with maintainers; [ hexa ];
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -228,5 +228,4 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
meta.maintainers = with maintainers; [ rnhmjoj ];
|
meta.maintainers = with maintainers; [ rnhmjoj ];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -100,6 +100,7 @@ in
|
|||||||
confDir = mkOption {
|
confDir = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
default = confDir;
|
default = confDir;
|
||||||
|
defaultText = literalDocBook "generated from configuration";
|
||||||
description = "The location of the config files for xrdp.";
|
description = "The location of the config files for xrdp.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, options, pkgs, lib, ... }:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.services.aesmd;
|
cfg = config.services.aesmd;
|
||||||
|
opt = options.services.aesmd;
|
||||||
|
|
||||||
sgx-psw = pkgs.sgx-psw.override { inherit (cfg) debug; };
|
sgx-psw = pkgs.sgx-psw.override { inherit (cfg) debug; };
|
||||||
|
|
||||||
@ -43,6 +44,9 @@ in
|
|||||||
options.proxyType = mkOption {
|
options.proxyType = mkOption {
|
||||||
type = with types; nullOr (enum [ "default" "direct" "manual" ]);
|
type = with types; nullOr (enum [ "default" "direct" "manual" ]);
|
||||||
default = if (cfg.settings.proxy != null) then "manual" else null;
|
default = if (cfg.settings.proxy != null) then "manual" else null;
|
||||||
|
defaultText = literalExpression ''
|
||||||
|
if (config.${opt.settings}.proxy != null) then "manual" else null
|
||||||
|
'';
|
||||||
example = "default";
|
example = "default";
|
||||||
description = ''
|
description = ''
|
||||||
Type of proxy to use. The <literal>default</literal> uses the system's default proxy.
|
Type of proxy to use. The <literal>default</literal> uses the system's default proxy.
|
||||||
|
@ -179,4 +179,7 @@ in {
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -112,4 +112,7 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -237,4 +237,6 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
meta.maintainers = with lib.maintainers; [ edef zimbatm ];
|
meta.maintainers = with lib.maintainers; [ edef zimbatm ];
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -167,4 +167,7 @@ in
|
|||||||
"d ${cfg.dataDir}/async/ 0750 ${user} ${group} - -"
|
"d ${cfg.dataDir}/async/ 0750 ${user} ${group} - -"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -146,4 +146,7 @@ in
|
|||||||
group = "powerdnsadmin";
|
group = "powerdnsadmin";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses attributes of the linked package
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -865,4 +865,6 @@ in
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses relatedPackages
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -317,4 +317,6 @@ in
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses extendModules to generate a type
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -999,4 +999,7 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# uses types of services/x11/xserver.nix
|
||||||
|
meta.buildDocsInSandbox = false;
|
||||||
}
|
}
|
||||||
|
@ -450,5 +450,4 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -281,13 +281,6 @@ in
|
|||||||
mosquitto = handleTest ./mosquitto.nix {};
|
mosquitto = handleTest ./mosquitto.nix {};
|
||||||
mpd = handleTest ./mpd.nix {};
|
mpd = handleTest ./mpd.nix {};
|
||||||
mpv = handleTest ./mpv.nix {};
|
mpv = handleTest ./mpv.nix {};
|
||||||
mtp = let
|
|
||||||
olderQemu = (import (fetchTarball {
|
|
||||||
url = "https://github.com/nixos/nixpkgs/archive/e1fc1a80a071c90ab65fb6eafae5520579163783.tar.gz";
|
|
||||||
sha256 = "19a0qrx31lp2r8cgk9hv4p6j6six6l82qisxr68y7wb7drw7dhkz";
|
|
||||||
}) { inherit system; }).qemu_test;
|
|
||||||
myPkgs = import ../.. { inherit system; overlays = [ (self: super: { qemu_test = olderQemu; }) ]; };
|
|
||||||
in handleTest ./mtp.nix { pkgs = myPkgs; };
|
|
||||||
mumble = handleTest ./mumble.nix {};
|
mumble = handleTest ./mumble.nix {};
|
||||||
musescore = handleTest ./musescore.nix {};
|
musescore = handleTest ./musescore.nix {};
|
||||||
munin = handleTest ./munin.nix {};
|
munin = handleTest ./munin.nix {};
|
||||||
|
@ -1,108 +0,0 @@
|
|||||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
|
||||||
name = "mtp";
|
|
||||||
meta = with pkgs.lib.maintainers; {
|
|
||||||
maintainers = [ matthewcroughan nixinator ];
|
|
||||||
};
|
|
||||||
|
|
||||||
nodes =
|
|
||||||
{
|
|
||||||
client = { config, pkgs, ... }: {
|
|
||||||
# DBUS runs only once a user session is created, which means a user has to
|
|
||||||
# login. Here, we log in as root. Once logged in, the gvfs-daemon service runs
|
|
||||||
# as UID 0 in User-0.service
|
|
||||||
services.getty.autologinUser = "root";
|
|
||||||
|
|
||||||
# XDG_RUNTIME_DIR is needed for running systemd-user services such as
|
|
||||||
# gvfs-daemon as root.
|
|
||||||
environment.variables.XDG_RUNTIME_DIR = "/run/user/0";
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [ usbutils glib jmtpfs tree ];
|
|
||||||
services.gvfs.enable = true;
|
|
||||||
|
|
||||||
# Creates a usb-mtp device inside the VM, which is mapped to the host's
|
|
||||||
# /tmp folder, it is able to write files to this location, but only has
|
|
||||||
# permissions to read its own creations.
|
|
||||||
virtualisation.qemu.options = [
|
|
||||||
"-usb"
|
|
||||||
"-device usb-mtp,rootdir=/tmp,readonly=false"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
testScript = { nodes, ... }:
|
|
||||||
let
|
|
||||||
# Creates a list of QEMU MTP devices matching USB ID (46f4:0004). This
|
|
||||||
# value can be sourced in a shell script. This is so we can loop over the
|
|
||||||
# devices we find, as this test may want to use more than one MTP device
|
|
||||||
# in future.
|
|
||||||
mtpDevices = pkgs.writeScript "mtpDevices.sh" ''
|
|
||||||
export mtpDevices=$(lsusb -d 46f4:0004 | awk {'print $2","$4'} | sed 's/[:-]/ /g')
|
|
||||||
'';
|
|
||||||
# Qemu is only capable of creating an MTP device with Picture Transfer
|
|
||||||
# Protocol. This means that gvfs must use gphoto2:// rather than mtp://
|
|
||||||
# when mounting.
|
|
||||||
# https://github.com/qemu/qemu/blob/970bc16f60937bcfd334f14c614bd4407c247961/hw/usb/dev-mtp.c#L278
|
|
||||||
gvfs = rec {
|
|
||||||
mountAllMtpDevices = pkgs.writeScript "mountAllMtpDevices.sh" ''
|
|
||||||
set -e
|
|
||||||
source ${mtpDevices}
|
|
||||||
for i in $mtpDevices
|
|
||||||
do
|
|
||||||
gio mount "gphoto2://[usb:$i]/"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
unmountAllMtpDevices = pkgs.writeScript "unmountAllMtpDevices.sh" ''
|
|
||||||
set -e
|
|
||||||
source ${mtpDevices}
|
|
||||||
for i in $mtpDevices
|
|
||||||
do
|
|
||||||
gio mount -u "gphoto2://[usb:$i]/"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
# gvfsTest:
|
|
||||||
# 1. Creates a 10M test file
|
|
||||||
# 2. Copies it to the device using GIO tools
|
|
||||||
# 3. Checks for corruption with `diff`
|
|
||||||
# 4. Removes the file, then unmounts the disks.
|
|
||||||
gvfsTest = pkgs.writeScript "gvfsTest.sh" ''
|
|
||||||
set -e
|
|
||||||
source ${mtpDevices}
|
|
||||||
${mountAllMtpDevices}
|
|
||||||
dd if=/dev/urandom of=testFile10M bs=1M count=10
|
|
||||||
for i in $mtpDevices
|
|
||||||
do
|
|
||||||
gio copy ./testFile10M gphoto2://[usb:$i]/
|
|
||||||
ls -lah /run/user/0/gvfs/*/testFile10M
|
|
||||||
gio remove gphoto2://[usb:$i]/testFile10M
|
|
||||||
done
|
|
||||||
${unmountAllMtpDevices}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
jmtpfs = {
|
|
||||||
# jmtpfsTest:
|
|
||||||
# 1. Mounts the device on a dir named `phone` using jmtpfs
|
|
||||||
# 2. Puts the current Nixpkgs libmtp version into a file
|
|
||||||
# 3. Checks for corruption with `diff`
|
|
||||||
# 4. Prints the directory tree
|
|
||||||
jmtpfsTest = pkgs.writeScript "jmtpfsTest.sh" ''
|
|
||||||
mkdir phone
|
|
||||||
jmtpfs phone
|
|
||||||
echo "${pkgs.libmtp.version}" > phone/tmp/testFile
|
|
||||||
echo "${pkgs.libmtp.version}" > testFile
|
|
||||||
diff phone/tmp/testFile testFile
|
|
||||||
tree phone
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
|
||||||
# Using >&2 allows the results of the scripts to be printed to the terminal
|
|
||||||
# when building this test with Nix. Scripts would otherwise complete
|
|
||||||
# silently.
|
|
||||||
''
|
|
||||||
start_all()
|
|
||||||
client.wait_for_unit("multi-user.target")
|
|
||||||
client.wait_for_unit("dbus.service")
|
|
||||||
client.succeed("${gvfs.gvfsTest} >&2")
|
|
||||||
client.succeed("${jmtpfs.jmtpfsTest} >&2")
|
|
||||||
'';
|
|
||||||
})
|
|
@ -73,7 +73,7 @@ in
|
|||||||
machine.fail('su - test1 -c "sudo -n -u root true"')
|
machine.fail('su - test1 -c "sudo -n -u root true"')
|
||||||
|
|
||||||
with subtest("users in group 'foobar' should be able to use sudo with password"):
|
with subtest("users in group 'foobar' should be able to use sudo with password"):
|
||||||
machine.succeed("sudo -u test2 echo ${password} | sudo -S -u root true")
|
machine.succeed('su - test2 -c "echo ${password} | sudo -S -u root true"')
|
||||||
|
|
||||||
with subtest("users in group 'barfoo' should be able to use sudo without password"):
|
with subtest("users in group 'barfoo' should be able to use sudo without password"):
|
||||||
machine.succeed("sudo -u test3 sudo -n -u root true")
|
machine.succeed("sudo -u test3 sudo -n -u root true")
|
||||||
|
@ -21,20 +21,20 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "gnome-podcasts";
|
pname = "gnome-podcasts";
|
||||||
version = "0.5.0";
|
version = "0.5.1";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
domain = "gitlab.gnome.org";
|
domain = "gitlab.gnome.org";
|
||||||
owner = "World";
|
owner = "World";
|
||||||
repo = "podcasts";
|
repo = "podcasts";
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-Jk++/QrQt/fjOz2OaEIr1Imq2DmqTjcormCebjO4/Kk=";
|
sha256 = "00vy1qkkpn76jdpybsq9qp8s6fh1ih10j73p2x43sl97m5g8944h";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||||
inherit src;
|
inherit src;
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
hash = "sha256-jlXpeVabc1h2GU1j9Ff6GZJec+JgFyOdJzsOtdkrEWI=";
|
sha256 = "0y34b5rnr75h7dxbx93mafrmwsh187wq5js7fmkb1m1yyybj1v1x";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -21,6 +21,8 @@ lib.makeScope newScope (self: with self; {
|
|||||||
|
|
||||||
mopidy-mpris = callPackage ./mpris.nix { };
|
mopidy-mpris = callPackage ./mpris.nix { };
|
||||||
|
|
||||||
|
mopidy-muse = callPackage ./muse.nix { };
|
||||||
|
|
||||||
mopidy-musicbox-webclient = callPackage ./musicbox-webclient.nix { };
|
mopidy-musicbox-webclient = callPackage ./musicbox-webclient.nix { };
|
||||||
|
|
||||||
mopidy-podcast = callPackage ./podcast.nix { };
|
mopidy-podcast = callPackage ./podcast.nix { };
|
||||||
|
29
pkgs/applications/audio/mopidy/muse.nix
Normal file
29
pkgs/applications/audio/mopidy/muse.nix
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{ lib, pythonPackages, mopidy }:
|
||||||
|
|
||||||
|
pythonPackages.buildPythonApplication rec {
|
||||||
|
pname = "mopidy-muse";
|
||||||
|
version = "0.0.27";
|
||||||
|
|
||||||
|
src = pythonPackages.fetchPypi {
|
||||||
|
inherit version;
|
||||||
|
pname = "Mopidy-Muse";
|
||||||
|
sha256 = "0jx9dkgxr07avzz9zskzhqy98zsxkdrf7iid2ax5vygwf8qsx8ks";
|
||||||
|
};
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
mopidy
|
||||||
|
pythonPackages.pykka
|
||||||
|
];
|
||||||
|
|
||||||
|
pythonImportsCheck = [ "mopidy_muse" ];
|
||||||
|
|
||||||
|
# has no tests
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Mopidy web client with Snapcast support";
|
||||||
|
homepage = "https://github.com/cristianpb/muse";
|
||||||
|
license = licenses.asl20;
|
||||||
|
maintainers = with maintainers; [ hexa ];
|
||||||
|
};
|
||||||
|
}
|
@ -13,11 +13,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "paprefs";
|
pname = "paprefs";
|
||||||
version = "1.1";
|
version = "1.2";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://freedesktop.org/software/pulseaudio/paprefs/paprefs-${version}.tar.xz";
|
url = "https://freedesktop.org/software/pulseaudio/paprefs/paprefs-${version}.tar.xz";
|
||||||
sha256 = "189z5p20hk0xv9vwvym293503j4pwl03xqk9hl7cl6dwgv0l7wkf";
|
sha256 = "sha256-s/IeQNw5NtFeP/yRD7DAfBS4jowodxW0VqlIwXY49jM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -37,13 +37,13 @@ in
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "snapcast";
|
pname = "snapcast";
|
||||||
version = "0.25.0";
|
version = "0.26.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "badaix";
|
owner = "badaix";
|
||||||
repo = "snapcast";
|
repo = "snapcast";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "064pcpr5dsv9hncqkrnxriva4xjv1vcxhvc69h1an8x8vn4dwgmf";
|
sha256 = "sha256-CCifn9OEFM//Hk1PJj8T3MXIV8pXCTdBBXPsHuZwLyQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkg-config ];
|
nativeBuildInputs = [ cmake pkg-config ];
|
||||||
|
@ -12,16 +12,16 @@ let
|
|||||||
in
|
in
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "electrs";
|
pname = "electrs";
|
||||||
version = "0.9.3";
|
version = "0.9.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "romanz";
|
owner = "romanz";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-sTQ/dX1uXJkEmrNZ47qjBlrexO50y0NGNhw71rHc9bw=";
|
hash = "sha256-37KTcLFVzuXlLpz9INXbasUdzuY+T34ef8EtfczQ+D8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-1ZQt8LaqgxNxFfgCVCK0GVwbcVfX3v9iz7tHvzgyI0g=";
|
cargoHash = "sha256-aOSCpvejMUfSZCDwShqMPEc3vXw9ri2QvTaCuHODTwA=";
|
||||||
|
|
||||||
# needed for librocksdb-sys
|
# needed for librocksdb-sys
|
||||||
nativeBuildInputs = [ llvmPackages.clang ];
|
nativeBuildInputs = [ llvmPackages.clang ];
|
||||||
|
@ -2,17 +2,17 @@
|
|||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "helix";
|
pname = "helix";
|
||||||
version = "0.5.0";
|
version = "0.6.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "helix-editor";
|
owner = "helix-editor";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
sha256 = "sha256-NoVg/8oJIgMQtxlCSjrLnYCG8shigYqZzWAQwmiqxgA=";
|
sha256 = "sha256-d/USOtcPLjdgzN7TBCouBRmoSDH5LZD4R5Qq7lUrWZw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoSha256 = "sha256-kqPI8WpGpr0VL7CbBTSsjKl3xqJrv/6Qjr6UFnIgaVo=";
|
cargoSha256 = "sha256-/EATU7HsGNB35YOBp8sofbPd1nl4d3Ggj1ay3QuHkCI=";
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
@ -1,91 +1,87 @@
|
|||||||
{ lib
|
{ lib
|
||||||
|
, buildDotnetModule
|
||||||
|
, dotnetCorePackages
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, buildDotnetPackage
|
, gtk3
|
||||||
, dotnetPackages
|
, installShellFiles
|
||||||
, gtksharp
|
, librsvg
|
||||||
, gettext
|
, makeDesktopItem
|
||||||
|
, wrapGAppsHook
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
buildDotnetModule rec {
|
||||||
mono-addins = dotnetPackages.MonoAddins;
|
|
||||||
in
|
|
||||||
buildDotnetPackage rec {
|
|
||||||
pname = "Pinta";
|
pname = "Pinta";
|
||||||
version = "1.7.1";
|
version = "2.0";
|
||||||
|
|
||||||
outputFiles = [ "bin/*" ];
|
nativeBuildInputs = [
|
||||||
buildInputs = [ gtksharp mono-addins gettext ];
|
installShellFiles
|
||||||
xBuildFiles = [ "Pinta.sln" ];
|
wrapGAppsHook
|
||||||
|
];
|
||||||
|
|
||||||
|
runtimeDeps = [ gtk3 ];
|
||||||
|
|
||||||
|
dotnet-sdk = dotnetCorePackages.sdk_6_0;
|
||||||
|
dotnet-runtime = dotnetCorePackages.runtime_6_0;
|
||||||
|
|
||||||
|
# How-to update deps:
|
||||||
|
# $ nix-build -A pinta.fetch-deps
|
||||||
|
# $ ./result
|
||||||
|
# $ cp /tmp/Pinta-deps.nix ./pkgs/applications/graphics/pinta/default.nix
|
||||||
|
# TODO: create update script
|
||||||
|
nugetDeps = ./deps.nix;
|
||||||
|
|
||||||
|
projectFile = "Pinta";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "PintaProject";
|
owner = "PintaProject";
|
||||||
repo = "Pinta";
|
repo = "Pinta";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-yRp/dpJ9T4DieqHTj3vhyuASPGe4vjHw0rSXFrTNZVc=";
|
sha256 = "sha256-wqqNPyy5h/hTDm2u5MDZx1ds5qWAxy1/BY/fX4PeA88=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Remove version information from nodes <Reference Include="... Version=... ">
|
# FIXME: this should be propagated by wrapGAppsHook already, however for some
|
||||||
postPatch = with lib; let
|
# reason it is not working. Maybe a bug in buildDotnetModule?
|
||||||
csprojFiles = [
|
preInstall = ''
|
||||||
"Pinta/Pinta.csproj"
|
gappsWrapperArgs+=(
|
||||||
"Pinta.Core/Pinta.Core.csproj"
|
--prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}"
|
||||||
"Pinta.Effects/Pinta.Effects.csproj"
|
--set GDK_PIXBUF_MODULE_FILE ${librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
|
||||||
"Pinta.Gui.Widgets/Pinta.Gui.Widgets.csproj"
|
)
|
||||||
"Pinta.Resources/Pinta.Resources.csproj"
|
|
||||||
"Pinta.Tools/Pinta.Tools.csproj"
|
|
||||||
];
|
|
||||||
versionedNames = [
|
|
||||||
"Mono\\.Addins"
|
|
||||||
"Mono\\.Posix"
|
|
||||||
"Mono\\.Addins\\.Gui"
|
|
||||||
"Mono\\.Addins\\.Setup"
|
|
||||||
];
|
|
||||||
|
|
||||||
stripVersion = name: file:
|
|
||||||
let
|
|
||||||
match = ''<Reference Include="${name}([ ,][^"]*)?"'';
|
|
||||||
replace = ''<Reference Include="${name}"'';
|
|
||||||
in
|
|
||||||
"sed -i -re 's/${match}/${replace}/g' ${file}\n";
|
|
||||||
|
|
||||||
# Map all possible pairs of two lists
|
|
||||||
map2 = f: listA: listB: concatMap (a: map (f a) listB) listA;
|
|
||||||
concatMap2Strings = f: listA: listB: concatStrings (map2 f listA listB);
|
|
||||||
in
|
|
||||||
concatMap2Strings stripVersion versionedNames csprojFiles
|
|
||||||
+ ''
|
|
||||||
# For some reason there is no Microsoft.Common.tasks file
|
|
||||||
# in ''${mono}/lib/mono/3.5 .
|
|
||||||
substituteInPlace Pinta.Install.proj \
|
|
||||||
--replace 'ToolsVersion="3.5"' 'ToolsVersion="4.0"' \
|
|
||||||
--replace "/usr/local" "$out"
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
makeWrapperArgs = [
|
|
||||||
"--prefix MONO_GAC_PREFIX : ${gtksharp}"
|
|
||||||
"--prefix LD_LIBRARY_PATH : ${gtksharp}/lib"
|
|
||||||
"--prefix LD_LIBRARY_PATH : ${gtksharp.gtk.out}/lib"
|
|
||||||
];
|
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
# Do automake's job manually
|
# Rename the binary
|
||||||
substitute xdg/pinta.desktop.in xdg/pinta.desktop \
|
mv $out/bin/Pinta $out/bin/pinta
|
||||||
|
|
||||||
|
# Copy desktop icons
|
||||||
|
for size in 16x16 22x22 24x24 32x32 96x96 scalable; do
|
||||||
|
mkdir -p $out/share/icons/hicolor/$size/apps
|
||||||
|
cp xdg/$size/* $out/share/icons/hicolor/$size/apps/
|
||||||
|
done
|
||||||
|
|
||||||
|
# Copy runtime icons
|
||||||
|
cp -r Pinta.Resources/icons/hicolor/16x16/* $out/share/icons/hicolor/16x16/
|
||||||
|
|
||||||
|
# Install manpage
|
||||||
|
installManPage xdg/pinta.1
|
||||||
|
|
||||||
|
# Fix and copy desktop file
|
||||||
|
# TODO: fix this propely by using the autoreconf+pkg-config build system
|
||||||
|
# from upstream
|
||||||
|
mkdir -p $out/share/applications
|
||||||
|
substitute xdg/pinta.desktop.in $out/share/applications/Pinta.desktop \
|
||||||
--replace _Name Name \
|
--replace _Name Name \
|
||||||
--replace _Comment Comment \
|
--replace _Comment Comment \
|
||||||
--replace _GenericName GenericName \
|
--replace _GenericName GenericName \
|
||||||
--replace _X-GNOME-FullName X-GNOME-FullName
|
--replace _X-GNOME-FullName X-GNOME-FullName \
|
||||||
substitute xdg/pinta.appdata.xml.in xdg/pinta.appdata.xml \
|
--replace _Keywords Keywords
|
||||||
--replace _p p
|
|
||||||
|
|
||||||
xbuild /target:CompileTranslations Pinta.Install.proj
|
|
||||||
xbuild /target:Install Pinta.Install.proj
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://www.pinta-project.com/";
|
homepage = "https://www.pinta-project.com/";
|
||||||
description = "Drawing/editing program modeled after Paint.NET";
|
description = "Drawing/editing program modeled after Paint.NET";
|
||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
maintainers = with lib.maintainers; [ ];
|
maintainers = with lib.maintainers; [ thiagokokada ];
|
||||||
platforms = with lib.platforms; linux;
|
platforms = with lib.platforms; linux;
|
||||||
|
mainProgram = "pinta";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
12
pkgs/applications/graphics/pinta/deps.nix
generated
Normal file
12
pkgs/applications/graphics/pinta/deps.nix
generated
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{ fetchNuGet }: [
|
||||||
|
(fetchNuGet { pname = "AtkSharp"; version = "3.24.24.34"; sha256 = "1jn1vgi9xm0jp7769k6sbdi8d273kigjrsh93i6s4c03hqxv7cqs"; })
|
||||||
|
(fetchNuGet { pname = "CairoSharp"; version = "3.24.24.34"; sha256 = "0pydn1k0cam1gclg9sc1sbnmbyzh28qlc5qanyxcylwghink3kgz"; })
|
||||||
|
(fetchNuGet { pname = "GdkSharp"; version = "3.24.24.34"; sha256 = "0r0x0yib7chwsyrbpvicrfwldwqx5lyqq4p86zaxpmzd6zdaj0x5"; })
|
||||||
|
(fetchNuGet { pname = "GioSharp"; version = "3.24.24.34"; sha256 = "02hxvgjd4w9jpzbkk7qf9q9bkvyp5hfzwxfqp10vg5lpl9yl3xpx"; })
|
||||||
|
(fetchNuGet { pname = "GLibSharp"; version = "3.24.24.34"; sha256 = "0kvp033fgdwc8p2abfp5z9pzq66cvwbnjfvr4v4bkpy5s5h181kq"; })
|
||||||
|
(fetchNuGet { pname = "GtkSharp"; version = "3.24.24.34"; sha256 = "0028hzmmqyfx87qqmaf9cgb5psn7gkbmqvixcid67x1d6mzxjicb"; })
|
||||||
|
(fetchNuGet { pname = "NGettext"; version = "0.6.7"; sha256 = "1lnq1lgd80xqn80qwq5ipfjnd7nl1ghinjc3krnd546r0c7hwqky"; })
|
||||||
|
(fetchNuGet { pname = "PangoSharp"; version = "3.24.24.34"; sha256 = "1r0h14cklglfpv1lhv93cxmzi2w7d5s03gzpq3j5dmrz43flg9zw"; })
|
||||||
|
(fetchNuGet { pname = "ParagonClipper"; version = "6.4.2"; sha256 = "0pam44f7iayqjz8nh1x29gxdd4dj00i7m5883cpa64i192pgl94c"; })
|
||||||
|
(fetchNuGet { pname = "SharpZipLib"; version = "1.3.3"; sha256 = "1gij11wfj1mqm10631cjpnhzw882bnzx699jzwhdqakxm1610q8x"; })
|
||||||
|
]
|
@ -10,17 +10,24 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "free42";
|
pname = "free42";
|
||||||
version = "3.0.8";
|
version = "3.0.9";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "thomasokken";
|
owner = "thomasokken";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-nZCuFumAyeUxRmmtd6/qvXk3LVZgbDhlsDygXMWDfp0=";
|
hash = "sha256-ZSwqgHsfe9apyYZ1fkvDMnQxdNb9E8U1l9jvC9t693w=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ copyDesktopItems pkg-config ];
|
nativeBuildInputs = [
|
||||||
buildInputs = [ gtk3 alsa-lib ];
|
copyDesktopItems
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
alsa-lib
|
||||||
|
gtk3
|
||||||
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
sed -i -e "s|/bin/ls|ls|" gtk/Makefile
|
sed -i -e "s|/bin/ls|ls|" gtk/Makefile
|
||||||
@ -30,23 +37,24 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
runHook preBuild
|
runHook preBuild
|
||||||
|
|
||||||
make -C gtk cleaner
|
make -C gtk cleaner
|
||||||
make --jobs=$NIX_BUILD_CORES -C gtk
|
make --jobs=$NIX_BUILD_CORES -C gtk
|
||||||
make -C gtk clean
|
make -C gtk clean
|
||||||
make --jobs=$NIX_BUILD_CORES -C gtk BCD_MATH=1
|
make --jobs=$NIX_BUILD_CORES -C gtk BCD_MATH=1
|
||||||
|
|
||||||
runHook postBuild
|
runHook postBuild
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preInstall = ''
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
install --directory $out/bin \
|
install --directory $out/bin \
|
||||||
$out/share/doc/${pname} \
|
$out/share/doc/${pname} \
|
||||||
$out/share/${pname}/skins \
|
$out/share/${pname}/skins \
|
||||||
$out/share/icons/hicolor/48x48/apps \
|
$out/share/icons/hicolor/48x48/apps \
|
||||||
$out/share/icons/hicolor/128x128/apps
|
$out/share/icons/hicolor/128x128/apps
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
install -m755 gtk/free42dec gtk/free42bin $out/bin
|
install -m755 gtk/free42dec gtk/free42bin $out/bin
|
||||||
install -m644 gtk/README $out/share/doc/${pname}/README-GTK
|
install -m644 gtk/README $out/share/doc/${pname}/README-GTK
|
||||||
install -m644 README $out/share/doc/${pname}/README
|
install -m644 README $out/share/doc/${pname}/README
|
||||||
@ -54,6 +62,7 @@ stdenv.mkDerivation rec {
|
|||||||
install -m644 gtk/icon-48x48.xpm $out/share/icons/hicolor/48x48/apps
|
install -m644 gtk/icon-48x48.xpm $out/share/icons/hicolor/48x48/apps
|
||||||
install -m644 gtk/icon-128x128.xpm $out/share/icons/hicolor/128x128/apps
|
install -m644 gtk/icon-128x128.xpm $out/share/icons/hicolor/128x128/apps
|
||||||
install -m644 skins/* $out/share/${pname}/skins
|
install -m644 skins/* $out/share/${pname}/skins
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "mdzk";
|
pname = "mdzk";
|
||||||
version = "0.4.3";
|
version = "0.5.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mdzk-rs";
|
owner = "mdzk-rs";
|
||||||
repo = "mdzk";
|
repo = "mdzk";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-VUvV1XA9Bd3ugYHcKOcAQLUt0etxS/Cw2EgnFGxX0z0=";
|
sha256 = "sha256-NkoKQKcww5ktEbxbOY6WP8OemCB+rvXbuN9oSPjLE3Y=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoSha256 = "sha256-lZ4fc/94ESlhpfa5ylg45oZNeaF1mZPxQUSLZrl2V3o=";
|
cargoSha256 = "sha256-uJ00tGiKtcYghFUh0fcYg4nZc/o8yhvlVs+6/aRNY5s=";
|
||||||
|
|
||||||
buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
|
buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
|
||||||
|
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
{ lib, stdenv
|
|
||||||
, fetchurl
|
|
||||||
, unzip
|
|
||||||
}:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "smos";
|
|
||||||
version = "0.1.0";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://github.com/NorfairKing/smos/releases/download/v${version}/smos-release.zip";
|
|
||||||
sha256 = "sha256:07yavk7xl92yjwwjdig90yq421n8ldv4fjfw7izd4hfpzw849a12";
|
|
||||||
};
|
|
||||||
|
|
||||||
dontInstall = true;
|
|
||||||
|
|
||||||
unpackCmd = "${unzip}/bin/unzip -d $out $curSrc";
|
|
||||||
sourceRoot = ".";
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "A comprehensive self-management system";
|
|
||||||
homepage = "https://smos.online";
|
|
||||||
license = licenses.mit;
|
|
||||||
maintainers = with maintainers; [ norfair ];
|
|
||||||
platforms = platforms.linux ++ platforms.darwin;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,21 +1,21 @@
|
|||||||
{
|
{
|
||||||
"stable": {
|
"stable": {
|
||||||
"version": "96.0.4664.110",
|
"version": "97.0.4692.71",
|
||||||
"sha256": "1s3ilq0ik36qgqp7l88gfd1yx97zscn8yr2kprsrjfp9q8lrva9n",
|
"sha256": "0z7ximvm4a78kxyp4j0i2jzklxazpw6jcqi9jkaf8bvq9ga8kqca",
|
||||||
"sha256bin64": "17cyj1jx47fz6y26f196xhlngrw5gnjgcvapvgkgswlwd7y67jcb",
|
"sha256bin64": "1z1d50i5pvqaw6hjdxwasbznzgqwrnd1z8jmy2x05b6i49vd7r9j",
|
||||||
"deps": {
|
"deps": {
|
||||||
"gn": {
|
"gn": {
|
||||||
"version": "2021-09-24",
|
"version": "2021-11-03",
|
||||||
"url": "https://gn.googlesource.com/gn",
|
"url": "https://gn.googlesource.com/gn",
|
||||||
"rev": "0153d369bbccc908f4da4993b1ba82728055926a",
|
"rev": "90294ccdcf9334ed25a76ac9b67689468e506342",
|
||||||
"sha256": "0y4414h8jqsbz5af6pn91c0vkfp4s281s85g992xfyl785c5zbsi"
|
"sha256": "0n0jml8s00ayy186jzrf207hbz70pxiq426znxwxd4gjcp60scsa"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"chromedriver": {
|
"chromedriver": {
|
||||||
"version": "96.0.4664.45",
|
"version": "97.0.4692.36",
|
||||||
"sha256_linux": "15wybxlh38sw7f2bzalf9ivfp8262cpcvhq08nw9d2cj3j39f13m",
|
"sha256_linux": "11x28m31bsfq1flqrsa5mawss39kznia2ig5ams5qkm2v5p3y39d",
|
||||||
"sha256_darwin": "0r3b8wgbd8xjb09f4vc402gp77y2aqjk9hpqvvr6xgdr7nqym20f",
|
"sha256_darwin": "1ysnfvj0795yc3g8sbz7g9mhc5j0sxm2r3ad2fh13sarnhn6wrs4",
|
||||||
"sha256_darwin_aarch64": "1yynw8ngs2655blnf1s6r9flbxlwgaybdvgl6r6h7ppl974dl7rm"
|
"sha256_darwin_aarch64": "09m1qpk6901gqs4c7isgryffhb92szfzbxfybxhn2g5i4wrns6j7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"beta": {
|
"beta": {
|
||||||
|
@ -28,7 +28,7 @@ buildGoModule rec {
|
|||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A Helm plugin that shows a diff";
|
description = "A Helm plugin that shows a diff";
|
||||||
inherit (src.meta) homepage;
|
inherit (src.meta) homepage;
|
||||||
license = licenses.apsl20;
|
license = licenses.asl20;
|
||||||
maintainers = with maintainers; [ yurrriq ];
|
maintainers = with maintainers; [ yurrriq ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ buildGoModule rec {
|
|||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A Helm plugin that shows a diff";
|
description = "A Helm plugin that shows a diff";
|
||||||
inherit (src.meta) homepage;
|
inherit (src.meta) homepage;
|
||||||
license = licenses.apsl20;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ yurrriq ];
|
maintainers = with maintainers; [ yurrriq ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
|
|||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A Helm plugin that helps manage secrets";
|
description = "A Helm plugin that helps manage secrets";
|
||||||
inherit (src.meta) homepage;
|
inherit (src.meta) homepage;
|
||||||
license = licenses.apsl20;
|
license = licenses.asl20;
|
||||||
maintainers = with maintainers; [ yurrriq ];
|
maintainers = with maintainers; [ yurrriq ];
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
};
|
};
|
||||||
|
@ -34,7 +34,7 @@ buildGoModule rec {
|
|||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Kubestack framework CLI";
|
description = "Kubestack framework CLI";
|
||||||
homepage = "https://www.kubestack.com/";
|
homepage = "https://www.kubestack.com/";
|
||||||
license = licenses.apsl20;
|
license = licenses.asl20;
|
||||||
maintainers = with maintainers; [ mtrsk ];
|
maintainers = with maintainers; [ mtrsk ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,25 @@
|
|||||||
{ lib, fetchFromGitHub, buildGoPackage }:
|
{ lib, fetchFromGitHub, buildGoModule }:
|
||||||
buildGoPackage rec {
|
buildGoModule rec {
|
||||||
pname = "terraform-provider-gandi";
|
pname = "terraform-provider-gandi";
|
||||||
version = "1.0.0";
|
version = "1.1.1";
|
||||||
|
|
||||||
goPackagePath = "github.com/tiramiseb/terraform-provider-gandi";
|
|
||||||
goDeps = ./deps.nix;
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "tiramiseb";
|
owner = "go-gandi";
|
||||||
repo = "terraform-provider-gandi";
|
repo = "terraform-provider-gandi";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0byydpqsimvnk11bh9iz8zlxbsmsk65w55pvkp18vjzqrhf4kyfv";
|
sha256 = "sha256-PI7cujatzmljyxosGMaqg3Jizee9Py7ffq9gKdehlvo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vendorSha256 = "sha256-dASIvZ3d7xTYMfvqeTcSJt+kaswGNRNqjHDcgoRVxNk=";
|
||||||
|
deleteVendor = true;
|
||||||
|
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
subPackages = [ "." ];
|
||||||
|
|
||||||
# Terraform allow checking the provider versions, but this breaks
|
# Terraform allow checking the provider versions, but this breaks
|
||||||
# if the versions are not provided via file paths.
|
# if the versions are not provided via file paths.
|
||||||
postBuild = "mv go/bin/terraform-provider-gandi{,_v${version}}";
|
postBuild = "mv $NIX_BUILD_TOP/go/bin/terraform-provider-gandi{,_v${version}}";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Terraform provider for the Gandi LiveDNS service.";
|
description = "Terraform provider for the Gandi LiveDNS service.";
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
|
|
||||||
[
|
|
||||||
{
|
|
||||||
goPackagePath = "github.com/hashicorp/terraform";
|
|
||||||
fetch = {
|
|
||||||
type = "git";
|
|
||||||
url = "https://github.com/hashicorp/terraform";
|
|
||||||
rev = "27b720113ed5143a870ec151b3b7c9d955a09bc0";
|
|
||||||
sha256 = "1f0hwdf2z68p0ll3pgrx949h09q52gcfaxap0zz52m7px98sfab4";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
goPackagePath = "github.com/tiramiseb/go-gandi-livedns";
|
|
||||||
fetch = {
|
|
||||||
type = "git";
|
|
||||||
url = "https://github.com/tiramiseb/go-gandi-livedns";
|
|
||||||
rev = "4773a84f8ee7365ed21edc6cd0602aaf93e94e59";
|
|
||||||
sha256 = "1i8s7yclrkhf974vs2splh5symzk0ym54px0bc216bq4ifzkwkqc";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
]
|
|
@ -40,10 +40,10 @@
|
|||||||
"owner": "aliyun",
|
"owner": "aliyun",
|
||||||
"provider-source-address": "registry.terraform.io/aliyun/alicloud",
|
"provider-source-address": "registry.terraform.io/aliyun/alicloud",
|
||||||
"repo": "terraform-provider-alicloud",
|
"repo": "terraform-provider-alicloud",
|
||||||
"rev": "v1.149.0",
|
"rev": "v1.150.0",
|
||||||
"sha256": "0v9jhpvz33hzq09i8bxp1dif9jdypb5g2xy3d2g1mw4lgqrdpjix",
|
"sha256": "16apk8axn2kkbnlvnzcjwf29vmxyhqhp3bx9vdz4ckvk1ajsw4dw",
|
||||||
"vendorSha256": "18chs2723i2cxhhm649mz52pp6wrfqzxgk12zxq9idrhicchqnzg",
|
"vendorSha256": "18chs2723i2cxhhm649mz52pp6wrfqzxgk12zxq9idrhicchqnzg",
|
||||||
"version": "1.149.0"
|
"version": "1.150.0"
|
||||||
},
|
},
|
||||||
"ansible": {
|
"ansible": {
|
||||||
"owner": "nbering",
|
"owner": "nbering",
|
||||||
@ -76,10 +76,10 @@
|
|||||||
"owner": "vmware",
|
"owner": "vmware",
|
||||||
"provider-source-address": "registry.terraform.io/vmware/avi",
|
"provider-source-address": "registry.terraform.io/vmware/avi",
|
||||||
"repo": "terraform-provider-avi",
|
"repo": "terraform-provider-avi",
|
||||||
"rev": "v21.1.2",
|
"rev": "v21.1.3",
|
||||||
"sha256": "1j96k7yklaxykqj6v1yvxxib2zr2jyx37pkan34jxd8nk43lix67",
|
"sha256": "160l9864p73283hc27qaabd3lrh7lm8fyh6k9xlal5isfd9vrm5p",
|
||||||
"vendorSha256": "0pz0n2ijmbhqzvhq41h1hs80yiphwwb0lf3zacifp6rxyv8aawlf",
|
"vendorSha256": "1hw1xp20nhs4p1q9l887m82456fg5977pm66165gdkczwrq2zr6v",
|
||||||
"version": "21.1.2"
|
"version": "21.1.3"
|
||||||
},
|
},
|
||||||
"aviatrix": {
|
"aviatrix": {
|
||||||
"owner": "AviatrixSystems",
|
"owner": "AviatrixSystems",
|
||||||
@ -311,10 +311,10 @@
|
|||||||
"owner": "dome9",
|
"owner": "dome9",
|
||||||
"provider-source-address": "registry.terraform.io/dome9/dome9",
|
"provider-source-address": "registry.terraform.io/dome9/dome9",
|
||||||
"repo": "terraform-provider-dome9",
|
"repo": "terraform-provider-dome9",
|
||||||
"rev": "v1.24.4",
|
"rev": "v1.24.5",
|
||||||
"sha256": "01zvav3r25qbhq1dfxjwmcgyk377cisn1k6406xq66fsyijcf5rw",
|
"sha256": "0a4q5lf11xxfc9ndicdmjir77rdsiq5a8fwb6065879qaamvaxqi",
|
||||||
"vendorSha256": null,
|
"vendorSha256": null,
|
||||||
"version": "1.24.4"
|
"version": "1.24.5"
|
||||||
},
|
},
|
||||||
"elasticsearch": {
|
"elasticsearch": {
|
||||||
"owner": "phillbaker",
|
"owner": "phillbaker",
|
||||||
@ -329,10 +329,10 @@
|
|||||||
"owner": "exoscale",
|
"owner": "exoscale",
|
||||||
"provider-source-address": "registry.terraform.io/exoscale/exoscale",
|
"provider-source-address": "registry.terraform.io/exoscale/exoscale",
|
||||||
"repo": "terraform-provider-exoscale",
|
"repo": "terraform-provider-exoscale",
|
||||||
"rev": "v0.31.1",
|
"rev": "v0.31.2",
|
||||||
"sha256": "1k6z7mi20ijn3lj734abrbpgcpa6lr5ziacg8h5xr99xs5r9g5yi",
|
"sha256": "1fncpy8vc72g6h560mnkwm160wah8iik4bn12mjgbz3nvjlsm04x",
|
||||||
"vendorSha256": null,
|
"vendorSha256": null,
|
||||||
"version": "0.31.1"
|
"version": "0.31.2"
|
||||||
},
|
},
|
||||||
"external": {
|
"external": {
|
||||||
"owner": "hashicorp",
|
"owner": "hashicorp",
|
||||||
@ -938,10 +938,10 @@
|
|||||||
"owner": "jianyuan",
|
"owner": "jianyuan",
|
||||||
"provider-source-address": "registry.terraform.io/jianyuan/sentry",
|
"provider-source-address": "registry.terraform.io/jianyuan/sentry",
|
||||||
"repo": "terraform-provider-sentry",
|
"repo": "terraform-provider-sentry",
|
||||||
"rev": "v0.6.0",
|
"rev": "v0.7.0",
|
||||||
"sha256": "0246hv52kslrzj43dkbk8r8gimwz3sgzxsbv7sxwmk3ll3sl2zrk",
|
"sha256": "09rxgq4m28nhwg6y51m5sq3d12lx7r1q3k76zrd5gpbxagqhvhkr",
|
||||||
"vendorSha256": "1d4c8cg4a81mndrzwrsi1k9ll553csnb0r4avlq9hyc03z60dwdc",
|
"vendorSha256": "1cpwa8a3p6mixdgvbgim1pnhvqh72sask950w2bxsgrpgdbnys5m",
|
||||||
"version": "0.6.0"
|
"version": "0.7.0"
|
||||||
},
|
},
|
||||||
"shell": {
|
"shell": {
|
||||||
"owner": "scottwinkler",
|
"owner": "scottwinkler",
|
||||||
|
@ -149,7 +149,7 @@ if [[ -z ${vendorSha256} ]]; then
|
|||||||
vendorSha256=null
|
vendorSha256=null
|
||||||
elif [[ -n ${old_vendor_sha256} || ${vendor} == 1 ]]; then
|
elif [[ -n ${old_vendor_sha256} || ${vendor} == 1 ]]; then
|
||||||
echo "=== Calculating vendorSha256 ==="
|
echo "=== Calculating vendorSha256 ==="
|
||||||
vendorSha256=$(nix-prefetch "{ sha256 }: (import ../../../../.. {}).terraform-providers.${provider_name}.go-modules.overrideAttrs (_: { vendorSha256 = sha256; })")
|
vendorSha256=$(nix-prefetch -I nixpkgs=../../../../.. "{ sha256 }: (import ../../../../.. {}).terraform-providers.${provider_name}.go-modules.overrideAttrs (_: { vendorSha256 = sha256; })")
|
||||||
# Deal with nix unstable
|
# Deal with nix unstable
|
||||||
if [[ ${vendorSha256} == sha256-* ]]; then
|
if [[ ${vendorSha256} == sha256-* ]]; then
|
||||||
vendorSha256=$(nix --extra-experimental-features nix-command hash to-base32 "${vendorSha256}")
|
vendorSha256=$(nix --extra-experimental-features nix-command hash to-base32 "${vendorSha256}")
|
||||||
|
@ -15,13 +15,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "gftp";
|
pname = "gftp";
|
||||||
version = "2.7.0b";
|
version = "2.8.0b";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "masneyb";
|
owner = "masneyb";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-cIB3SneYKavgdI8eTtM1qsOrBJJ0c7/3CEvNPishNog=";
|
hash = "sha256-syeRFpqbd1VhKhhs/fIByDSVpcY+SAlmikDo3J1ZHlo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
|
|||||||
libtool
|
libtool
|
||||||
pkg-config
|
pkg-config
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
gtk
|
gtk
|
||||||
ncurses
|
ncurses
|
||||||
@ -39,12 +40,12 @@ stdenv.mkDerivation rec {
|
|||||||
readline
|
readline
|
||||||
];
|
];
|
||||||
|
|
||||||
hardeningDisable = [ "format" ];
|
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
hardeningDisable = [ "format" ];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "https://github.com/masneyb/gftp";
|
homepage = "https://github.com/masneyb/gftp";
|
||||||
description = "GTK-based multithreaded FTP client for *nix-based machines";
|
description = "GTK-based multithreaded FTP client for *nix-based machines";
|
@ -48,6 +48,8 @@
|
|||||||
, brotli
|
, brotli
|
||||||
, microsoft_gsl
|
, microsoft_gsl
|
||||||
, rlottie
|
, rlottie
|
||||||
|
, stdenv
|
||||||
|
, gcc10Stdenv
|
||||||
}:
|
}:
|
||||||
|
|
||||||
# Main reference:
|
# Main reference:
|
||||||
@ -63,10 +65,12 @@ let
|
|||||||
cxxStandard = "17";
|
cxxStandard = "17";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# Aarch64 default gcc9 will cause ICE. For reference #108305
|
||||||
|
env = if stdenv.isAarch64 then gcc10Stdenv else stdenv;
|
||||||
in
|
in
|
||||||
mkDerivation rec {
|
env.mkDerivation rec {
|
||||||
pname = "telegram-desktop";
|
pname = "telegram-desktop";
|
||||||
version = "3.1.11";
|
version = "3.4.3";
|
||||||
# Note: Update via pkgs/applications/networking/instant-messengers/telegram/tdesktop/update.py
|
# Note: Update via pkgs/applications/networking/instant-messengers/telegram/tdesktop/update.py
|
||||||
|
|
||||||
# Telegram-Desktop with submodules
|
# Telegram-Desktop with submodules
|
||||||
@ -75,7 +79,7 @@ mkDerivation rec {
|
|||||||
repo = "tdesktop";
|
repo = "tdesktop";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
sha256 = "0hpcsraw3gx37wk3r88q51qf68ny0kb3kd6slnklwf22d1jqr3fn";
|
sha256 = "0w8llqc4ffhp4gkvk6cyxah16yxm15am0msg3qn39fi2qqnm01x8";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
@ -154,6 +158,8 @@ mkDerivation rec {
|
|||||||
"-DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c"
|
"-DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c"
|
||||||
# See: https://github.com/NixOS/nixpkgs/pull/130827#issuecomment-885212649
|
# See: https://github.com/NixOS/nixpkgs/pull/130827#issuecomment-885212649
|
||||||
"-DDESKTOP_APP_USE_PACKAGED_FONTS=OFF"
|
"-DDESKTOP_APP_USE_PACKAGED_FONTS=OFF"
|
||||||
|
# TODO: Remove once QT6 is available in nixpkgs
|
||||||
|
"-DDESKTOP_APP_QT6=OFF"
|
||||||
];
|
];
|
||||||
|
|
||||||
postFixup = ''
|
postFixup = ''
|
||||||
|
@ -8,13 +8,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "tg_owt";
|
pname = "tg_owt";
|
||||||
version = "unstable-2021-10-21";
|
version = "unstable-2021-12-22";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "desktop-app";
|
owner = "desktop-app";
|
||||||
repo = "tg_owt";
|
repo = "tg_owt";
|
||||||
rev = "d578c760dc6f1ae5f0f3bb5317b0b2ed04b79138";
|
rev = "6708e0d31a73e64fe12f54829bf4060c41b2658e";
|
||||||
sha256 = "12lr50nma3j9df55sxi6p48yhn9yxrwzz5yrx7r29p8p4fv1c75w";
|
sha256 = "081ylw8vp8c84x3f1xx1kia6k1sds2iza9fm5dvn3ccgjwxdm5ny";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "kirc";
|
pname = "kirc";
|
||||||
version = "0.2.7";
|
version = "0.2.9";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mcpcpc";
|
owner = "mcpcpc";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-iaqj4xB15DB3w/RaiCOMdAu8eONhTw1Dz0j5kykAHV4=";
|
hash = "sha256-KRCVjz59SHjk86VgfGxYKk/Ti3o77dV7fdRu9mB3FSo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
dontConfigure = true;
|
dontConfigure = true;
|
||||||
|
@ -1,31 +1,22 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, python3
|
, copyDesktopItems
|
||||||
, fetchpatch
|
|
||||||
, makeDesktopItem
|
, makeDesktopItem
|
||||||
|
, python3
|
||||||
, qtsvg
|
, qtsvg
|
||||||
, wrapQtAppsHook
|
, wrapQtAppsHook
|
||||||
}:
|
}:
|
||||||
|
|
||||||
python3.pkgs.buildPythonApplication rec {
|
python3.pkgs.buildPythonApplication rec {
|
||||||
pname = "pyspread";
|
pname = "pyspread";
|
||||||
version = "1.99.6";
|
version = "2.0.2";
|
||||||
|
|
||||||
src = python3.pkgs.fetchPypi {
|
src = python3.pkgs.fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "sha256-B1oyWUAXn63mmVFN9brJwbHxi7I5nYrK2JJU1DjAlb8=";
|
hash = "sha256-rg2T9Y9FU2a+aWg0XM8jyQB9t8zDVlpad3TjUcx4//8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
|
||||||
# https://gitlab.com/pyspread/pyspread/-/merge_requests/34
|
|
||||||
(fetchpatch {
|
|
||||||
name = "entry-points.patch";
|
|
||||||
url = "https://gitlab.com/pyspread/pyspread/-/commit/3d8da6a7a7d76f7027d77ca95fac103961d729a2.patch";
|
|
||||||
excludes = [ "bin/pyspread" "bin/pyspread.bat" ];
|
|
||||||
sha256 = "1l614k7agv339hrin23jj7s1mq576vkdfkdim6wp224k7y37bnil";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
copyDesktopItems
|
||||||
wrapQtAppsHook
|
wrapQtAppsHook
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -47,7 +38,8 @@ python3.pkgs.buildPythonApplication rec {
|
|||||||
|
|
||||||
pythonImportsCheck = [ "pyspread" ];
|
pythonImportsCheck = [ "pyspread" ];
|
||||||
|
|
||||||
desktopItem = makeDesktopItem rec {
|
desktopItems = [
|
||||||
|
(makeDesktopItem rec {
|
||||||
name = pname;
|
name = pname;
|
||||||
exec = name;
|
exec = name;
|
||||||
icon = name;
|
icon = name;
|
||||||
@ -55,11 +47,8 @@ python3.pkgs.buildPythonApplication rec {
|
|||||||
genericName = "Spreadsheet";
|
genericName = "Spreadsheet";
|
||||||
comment = meta.description;
|
comment = meta.description;
|
||||||
categories = "Office;Development;Spreadsheet;";
|
categories = "Office;Development;Spreadsheet;";
|
||||||
};
|
})
|
||||||
|
];
|
||||||
postInstall = ''
|
|
||||||
install -m 444 -Dt $out/share/applications ${desktopItem}/share/applications/*
|
|
||||||
'';
|
|
||||||
|
|
||||||
preFixup = ''
|
preFixup = ''
|
||||||
makeWrapperArgs+=("''${qtWrapperArgs[@]}")
|
makeWrapperArgs+=("''${qtWrapperArgs[@]}")
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
{ lib, stdenv, fetchzip, fetchurl, xorg, gnused }:
|
{ lib, stdenv, fetchzip, fetchurl, xorg, gnused
|
||||||
|
, withBigAtlas ? true
|
||||||
|
, withEphemeris ? true
|
||||||
|
, withMoonsEphemeris ? true
|
||||||
|
}:
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "astrolog";
|
pname = "astrolog";
|
||||||
version = "7.30";
|
version = "7.30";
|
||||||
@ -23,15 +27,30 @@ stdenv.mkDerivation rec {
|
|||||||
sha256 = "1mwvpvfk3lxjcc79zvwl4ypqzgqzipnc01cjldxrmx56xkc35zn7";
|
sha256 = "1mwvpvfk3lxjcc79zvwl4ypqzgqzipnc01cjldxrmx56xkc35zn7";
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
};
|
};
|
||||||
|
moonsEphemeris = fetchzip {
|
||||||
|
url = "https://www.astrolog.org/ftp/ephem/moons/sepm.zip";
|
||||||
|
sha256 = "0labcidm8mrwvww93nwpp5738m9ff9q48cqzbgd18xny1jf6f8xd";
|
||||||
|
stripRoot = false;
|
||||||
|
};
|
||||||
atlas = fetchurl {
|
atlas = fetchurl {
|
||||||
url = "http://astrolog.org/ftp/atlas/atlasbig.as";
|
url = "http://astrolog.org/ftp/atlas/atlasbig.as";
|
||||||
sha256 = "1k8cy8gpcvkwkhyz248qhvrv5xiwp1n1s3b7rlz86krh7vzz01mp";
|
sha256 = "001bmqyldsbk4bdliqfl4a9ydrh1ff13wccvfniwaxlmvkridx2q";
|
||||||
};
|
};
|
||||||
in ''
|
in ''
|
||||||
mkdir -p $out/bin $out/astrolog
|
mkdir -p $out/bin $out/astrolog
|
||||||
cp -r ${ephemeris}/*.se1 $out/astrolog
|
|
||||||
cp *.as $out/astrolog
|
cp *.as $out/astrolog
|
||||||
install astrolog $out/bin
|
install astrolog $out/bin
|
||||||
|
${lib.optionalString withBigAtlas "cp ${atlas} $out/astrolog/atlas.as"}
|
||||||
|
${lib.optionalString withEphemeris ''
|
||||||
|
sed -i "/-Yi1/s#\".*\"#\"$out/ephemeris\"#" $out/astrolog/astrolog.as
|
||||||
|
mkdir -p $out/ephemeris
|
||||||
|
cp -r ${ephemeris}/*.se1 $out/ephemeris
|
||||||
|
''}
|
||||||
|
${lib.optionalString withMoonsEphemeris ''
|
||||||
|
sed -i "/-Yi1/s#\".*\"#\"$out/ephemeris\"#" $out/astrolog/astrolog.as
|
||||||
|
mkdir -p $out/ephemeris
|
||||||
|
cp -r ${moonsEphemeris}/*.se1 $out/ephemeris
|
||||||
|
''}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "lean";
|
pname = "lean";
|
||||||
version = "3.35.1";
|
version = "3.36.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "leanprover-community";
|
owner = "leanprover-community";
|
||||||
@ -11,8 +11,8 @@ stdenv.mkDerivation rec {
|
|||||||
# from. this is then used to check whether an olean file should be
|
# from. this is then used to check whether an olean file should be
|
||||||
# rebuilt. don't use a tag as rev because this will get replaced into
|
# rebuilt. don't use a tag as rev because this will get replaced into
|
||||||
# src/githash.h.in in preConfigure.
|
# src/githash.h.in in preConfigure.
|
||||||
rev = "4887d8a30621941c883f208e151e61ab268c006d";
|
rev = "e948149d3d1bbdb8eac9cd103d58626a59fae3b9";
|
||||||
sha256 = "0xmiysmq80dnzq1lw9jmprc85kfimw0sl8m5rbi05z8f782gzv1z";
|
sha256 = "1lcjif29lfj3myc6j63ifk8fdvylyv8g82g2dv0d85nz7mpbq47b";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
@ -4,48 +4,50 @@
|
|||||||
, appstream-glib
|
, appstream-glib
|
||||||
, desktop-file-utils
|
, desktop-file-utils
|
||||||
, libepoxy
|
, libepoxy
|
||||||
, gettext
|
|
||||||
, glib
|
, glib
|
||||||
, gtk3
|
, gtk4
|
||||||
|
, wayland
|
||||||
, meson
|
, meson
|
||||||
, mpv
|
, mpv
|
||||||
, ninja
|
, ninja
|
||||||
, nix-update-script
|
, nix-update-script
|
||||||
, pkg-config
|
, pkg-config
|
||||||
, python3
|
, python3
|
||||||
, wrapGAppsHook
|
, wrapGAppsHook4
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "celluloid";
|
pname = "celluloid";
|
||||||
version = "0.21";
|
version = "0.22";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "celluloid-player";
|
owner = "celluloid-player";
|
||||||
repo = "celluloid";
|
repo = "celluloid";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-1Jeg1uqWxURGKR/Xg4j4roZ9Pg5MR7geyttdzlOU+rA=";
|
hash = "sha256-QGN8YLtyb9YVNDK2ZDQwHJVg6UTIQssfNK9lQqxMNKQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
appstream-glib
|
appstream-glib
|
||||||
desktop-file-utils
|
desktop-file-utils
|
||||||
gettext
|
|
||||||
meson
|
meson
|
||||||
ninja
|
ninja
|
||||||
pkg-config
|
pkg-config
|
||||||
python3
|
python3
|
||||||
wrapGAppsHook
|
wrapGAppsHook4
|
||||||
];
|
];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libepoxy
|
libepoxy
|
||||||
glib
|
glib
|
||||||
gtk3
|
gtk4
|
||||||
|
wayland
|
||||||
mpv
|
mpv
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
patchShebangs meson-post-install.py src/generate-authors.py
|
patchShebangs meson-post-install.py src/generate-authors.py
|
||||||
|
# Remove this for next release
|
||||||
|
substituteInPlace meson-post-install.py --replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
@ -1,19 +1,29 @@
|
|||||||
{ lib, stdenvNoCC, fetchFromGitHub, curl, xclip }:
|
{ lib
|
||||||
|
, stdenvNoCC
|
||||||
|
, fetchFromGitHub
|
||||||
|
, curl
|
||||||
|
, wl-clipboard
|
||||||
|
, xclip
|
||||||
|
}:
|
||||||
|
|
||||||
stdenvNoCC.mkDerivation rec {
|
stdenvNoCC.mkDerivation rec {
|
||||||
pname = "mpvacious";
|
pname = "mpvacious";
|
||||||
version = "0.14";
|
version = "0.15";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Ajatt-Tools";
|
owner = "Ajatt-Tools";
|
||||||
repo = "mpvacious";
|
repo = "mpvacious";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0r031hh3hpim9dli15m9q4cwka4ljvwg0hdgyp36r1n097q44r5f";
|
sha256 = "1lxlgbjk4x3skg5s7kkr9llcdlmpmabfrcslwhhz5f4j3bq7498w";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
# 'require' replaced with 'dofile' to work around
|
||||||
|
# https://github.com/mpv-player/mpv/issues/7399 until fixed in mpvacious
|
||||||
substituteInPlace subs2srs.lua \
|
substituteInPlace subs2srs.lua \
|
||||||
|
--replace "require('osd_styler')" "dofile('"$out/share/mpv/scripts/mpvacious/osd_styler.lua"')" \
|
||||||
--replace "'curl'" "'${curl}/bin/curl'" \
|
--replace "'curl'" "'${curl}/bin/curl'" \
|
||||||
|
--replace "'wl-copy'" "'${wl-clipboard}/bin/wl-copy'" \
|
||||||
--replace "xclip" "${xclip}/bin/xclip"
|
--replace "xclip" "${xclip}/bin/xclip"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
@ -21,12 +31,12 @@ stdenvNoCC.mkDerivation rec {
|
|||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
mkdir -p $out/share/mpv/scripts
|
mkdir -p $out/share/mpv/scripts/mpvacious
|
||||||
cp subs2srs.lua $out/share/mpv/scripts
|
cp *.lua $out/share/mpv/scripts/mpvacious
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru.scriptName = "subs2srs.lua";
|
passthru.scriptName = "mpvacious/subs2srs.lua";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Adds mpv keybindings to create Anki cards from movies and TV shows";
|
description = "Adds mpv keybindings to create Anki cards from movies and TV shows";
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
buildPythonApplication rec {
|
buildPythonApplication rec {
|
||||||
pname = "plex-mpv-shim";
|
pname = "plex-mpv-shim";
|
||||||
version = "1.10.1";
|
version = "1.10.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "iwalton3";
|
owner = "iwalton3";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1ql7idkm916f1wlkqxqmq1i2pc94gbgq6pvb8szhb21icyy5d1y0";
|
sha256 = "0hgv9g17dkrh3zbsx27n80yvkgix9j2x0rgg6d3qsf7hp5j3xw4r";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [ mpv requests python-mpv-jsonipc ];
|
propagatedBuildInputs = [ mpv requests python-mpv-jsonipc ];
|
||||||
|
@ -283,6 +283,7 @@ stdenv.mkDerivation rec {
|
|||||||
homepage = "http://www.qemu.org/";
|
homepage = "http://www.qemu.org/";
|
||||||
description = "A generic and open source machine emulator and virtualizer";
|
description = "A generic and open source machine emulator and virtualizer";
|
||||||
license = licenses.gpl2Plus;
|
license = licenses.gpl2Plus;
|
||||||
|
mainProgram = "qemu-kvm";
|
||||||
maintainers = with maintainers; [ eelco qyliss ];
|
maintainers = with maintainers; [ eelco qyliss ];
|
||||||
platforms = platforms.unix;
|
platforms = platforms.unix;
|
||||||
};
|
};
|
||||||
|
@ -30,5 +30,6 @@ buildGoModule rec {
|
|||||||
homepage = "https://github.com/burrowers/garble/";
|
homepage = "https://github.com/burrowers/garble/";
|
||||||
maintainers = with lib.maintainers; [ davhau ];
|
maintainers = with lib.maintainers; [ davhau ];
|
||||||
license = lib.licenses.bsd3;
|
license = lib.licenses.bsd3;
|
||||||
|
broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/garble.x86_64-darwin
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -21,11 +21,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "enlightenment";
|
pname = "enlightenment";
|
||||||
version = "0.25.0";
|
version = "0.25.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz";
|
url = "http://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz";
|
||||||
sha256 = "01nzyvjy06043m01fdb1309xx3wxxg0s3hj9g9di7jjsxp774vkx";
|
sha256 = "0i1424vsc929h36hx04646pbrjiya6nc1nqr6s15xwvfv7imzw1c";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "gnome-shell-extension-arcmenu";
|
pname = "gnome-shell-extension-arcmenu";
|
||||||
version = "19";
|
version = "20";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
owner = "arcmenu";
|
owner = "arcmenu";
|
||||||
repo = "ArcMenu";
|
repo = "ArcMenu";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-GEeONrrH00Tt9tuxhH7Gv5lSZ2D/hFgeGbUstqJsWZo=";
|
sha256 = "sha256-HjhOZfXld0gnKOAazT8qbI0Jdq6NY/FsrhzAY9uxxMg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
, libkscreen
|
, libkscreen
|
||||||
, liblxqt
|
, liblxqt
|
||||||
, libqtxdg
|
, libqtxdg
|
||||||
|
, xkeyboard_config
|
||||||
, xorg
|
, xorg
|
||||||
, lxqtUpdateScript
|
, lxqtUpdateScript
|
||||||
}:
|
}:
|
||||||
@ -57,6 +58,10 @@ mkDerivation rec {
|
|||||||
substituteInPlace lxqt-config-appearance/configothertoolkits.cpp \
|
substituteInPlace lxqt-config-appearance/configothertoolkits.cpp \
|
||||||
--replace 'QStringLiteral("gsettings' \
|
--replace 'QStringLiteral("gsettings' \
|
||||||
'QStringLiteral("${glib.bin}/bin/gsettings'
|
'QStringLiteral("${glib.bin}/bin/gsettings'
|
||||||
|
|
||||||
|
substituteInPlace lxqt-config-input/keyboardlayoutconfig.h \
|
||||||
|
--replace '/usr/share/X11/xkb/rules/base.lst' \
|
||||||
|
'${xkeyboard_config}/share/X11/xkb/rules/base.lst'
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
passthru.updateScript = lxqtUpdateScript { inherit pname version src; };
|
||||||
|
@ -6,14 +6,14 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "xa";
|
pname = "xa";
|
||||||
version = "2.3.11";
|
version = "2.3.12";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
urls = [
|
urls = [
|
||||||
"https://www.floodgap.com/retrotech/xa/dists/${pname}-${version}.tar.gz"
|
"https://www.floodgap.com/retrotech/xa/dists/${pname}-${version}.tar.gz"
|
||||||
"https://www.floodgap.com/retrotech/xa/dists/unsupported/${pname}-${version}.tar.gz"
|
"https://www.floodgap.com/retrotech/xa/dists/unsupported/${pname}-${version}.tar.gz"
|
||||||
];
|
];
|
||||||
hash = "sha256-MvIWTJnjBSGOmSlwhW3Y4jCbXLasR1jXsq/jv+vJAS0=";
|
hash = "sha256-+P0VNgEtZ2/Gy/zdapF5PlZMibbvdH+NuPRnwXj7BwQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
checkInputs = [ perl ];
|
checkInputs = [ perl ];
|
||||||
|
79
pkgs/development/interpreters/clojure/obb.nix
Normal file
79
pkgs/development/interpreters/clojure/obb.nix
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchurl
|
||||||
|
, babashka
|
||||||
|
, cacert
|
||||||
|
, clojure
|
||||||
|
, git
|
||||||
|
, jdk
|
||||||
|
, callPackage
|
||||||
|
, makeWrapper
|
||||||
|
, runCommand }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "obb";
|
||||||
|
version = "0.0.1";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://github.com/babashka/${pname}/archive/refs/tags/v${version}.tar.gz";
|
||||||
|
sha256 = "sha256-ZVd3VCJ7vdQGQ7iY5v2b+gRX/Ni0/03hzqBElqpPvpI=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
buildInputs = [ babashka cacert git jdk ];
|
||||||
|
|
||||||
|
configurePhase = ''
|
||||||
|
runHook preConfigure
|
||||||
|
|
||||||
|
mkdir -p .m2
|
||||||
|
substituteInPlace deps.edn --replace ':paths' ':mvn/local-repo "./.m2" :paths'
|
||||||
|
substituteInPlace bb.edn --replace ':paths' ':mvn/local-repo "./.m2" :paths'
|
||||||
|
echo deps.edn
|
||||||
|
|
||||||
|
runHook postConfigure
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
|
export DEPS_CLJ_TOOLS_DIR=${clojure}
|
||||||
|
export DEPS_CLJ_TOOLS_VERSION=${clojure.version}
|
||||||
|
mkdir -p .gitlibs
|
||||||
|
mkdir -p .cpcache
|
||||||
|
export GITLIBS=.gitlibs
|
||||||
|
export CLJ_CACHE=.cpcache
|
||||||
|
|
||||||
|
bb build
|
||||||
|
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out/bin
|
||||||
|
ln -s /usr/bin/osascript $out/bin/osascript
|
||||||
|
|
||||||
|
install -Dm755 "out/bin/obb" "$out/bin/obb"
|
||||||
|
wrapProgram $out/bin/obb --prefix PATH : $out/bin
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
doInstallCheck = true;
|
||||||
|
installCheckPhase = ''
|
||||||
|
[ $($out/bin/obb -e '(+ 1 2)') = '3' ]
|
||||||
|
'';
|
||||||
|
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Ad-hoc ClojureScript scripting of Mac applications via Apple's Open Scripting Architecture";
|
||||||
|
homepage = "https://github.com/babashka/obb";
|
||||||
|
license = licenses.epl10;
|
||||||
|
maintainers = with maintainers; [
|
||||||
|
willcohen
|
||||||
|
];
|
||||||
|
platforms = platforms.darwin;
|
||||||
|
};
|
||||||
|
}
|
@ -56,7 +56,7 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "https://www.dartlang.org/";
|
homepage = "https://www.dartlang.org/";
|
||||||
maintainers = with maintainers; [ grburst thiagokokada flexagoon ];
|
maintainers = with maintainers; [ grburst flexagoon ];
|
||||||
description = "Scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps";
|
description = "Scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
Dart is a class-based, single inheritance, object-oriented language
|
Dart is a class-based, single inheritance, object-oriented language
|
||||||
|
63
pkgs/development/libraries/audio/roc-toolkit/default.nix
Normal file
63
pkgs/development/libraries/audio/roc-toolkit/default.nix
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
{ stdenv,
|
||||||
|
lib,
|
||||||
|
fetchFromGitHub,
|
||||||
|
sconsPackages,
|
||||||
|
ragel,
|
||||||
|
gengetopt,
|
||||||
|
pkg-config,
|
||||||
|
libuv,
|
||||||
|
openfecSupport ? true,
|
||||||
|
openfec,
|
||||||
|
libunwindSupport ? true,
|
||||||
|
libunwind,
|
||||||
|
pulseaudioSupport ? true,
|
||||||
|
libpulseaudio
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "roc-toolkit";
|
||||||
|
version = "0.1.5";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "roc-streaming";
|
||||||
|
repo = "roc-toolkit";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "sha256:1pld340zfch4p3qaf5anrspq7vmxrgf9ddsdsq92pk49axaaz19w";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
sconsPackages.scons_3_0_1
|
||||||
|
ragel
|
||||||
|
gengetopt
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libuv
|
||||||
|
libunwind
|
||||||
|
openfec
|
||||||
|
libpulseaudio
|
||||||
|
];
|
||||||
|
|
||||||
|
sconsFlags =
|
||||||
|
[ "--disable-sox"
|
||||||
|
"--disable-tests" ] ++
|
||||||
|
lib.optional (!libunwindSupport) "--disable-libunwind" ++
|
||||||
|
lib.optional (!pulseaudioSupport) "--disable-pulseaudio" ++
|
||||||
|
(if (!openfecSupport)
|
||||||
|
then ["--disable-openfec"]
|
||||||
|
else [ "--with-libraries=${openfec}/lib"
|
||||||
|
"--with-openfec-includes=${openfec.dev}/include" ]);
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
sconsFlags+=" --prefix=$out"
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Roc is a toolkit for real-time audio streaming over the network";
|
||||||
|
homepage = "https://github.com/roc-streaming/roc-toolkit";
|
||||||
|
license = licenses.mpl20;
|
||||||
|
maintainers = with maintainers; [ bgamari ];
|
||||||
|
platforms = platforms.unix;
|
||||||
|
};
|
||||||
|
}
|
@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "cimg";
|
pname = "cimg";
|
||||||
version = "2.9.9";
|
version = "3.0.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "dtschump";
|
owner = "dtschump";
|
||||||
repo = "CImg";
|
repo = "CImg";
|
||||||
rev = "v.${version}";
|
rev = "v.${version}";
|
||||||
hash = "sha256-DWyqVN7v+j2XCArv4jmrD45XKWMNhd2DddJHH3gQWQY=";
|
hash = "sha256-dC4VuWTz0uyFxLjBQ+2ggndHaCErcoI7tJMfkqbWmeg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = [ "out" "doc" ];
|
outputs = [ "out" "doc" ];
|
||||||
@ -21,8 +21,8 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
install -dm 755 $out/include/CImg/plugins $doc/share/doc/cimg/examples
|
install -dm 755 $out/include/CImg/plugins $doc/share/doc/cimg/examples
|
||||||
install -m 644 CImg.h $out/include/
|
install -m 644 CImg.h $out/include/
|
||||||
cp -dr --no-preserve=ownership examples/* $doc/share/doc/cimg/examples/
|
|
||||||
cp -dr --no-preserve=ownership plugins/* $out/include/CImg/plugins/
|
cp -dr --no-preserve=ownership plugins/* $out/include/CImg/plugins/
|
||||||
|
cp -dr --no-preserve=ownership examples/* $doc/share/doc/cimg/examples/
|
||||||
cp README.txt $doc/share/doc/cimg/
|
cp README.txt $doc/share/doc/cimg/
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
|
@ -3,13 +3,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "intel-media-sdk";
|
pname = "intel-media-sdk";
|
||||||
version = "21.4.3";
|
version = "22.1.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Intel-Media-SDK";
|
owner = "Intel-Media-SDK";
|
||||||
repo = "MediaSDK";
|
repo = "MediaSDK";
|
||||||
rev = "intel-mediasdk-${version}";
|
rev = "intel-mediasdk-${version}";
|
||||||
sha256 = "sha256-Z6wIwgcKa+EaqSmbD//pYzGjDezASNWGnLCROiRvACo=";
|
sha256 = "sha256-iISG947MUWVVAxykFwB5UK5Z4uQnEWJ6AFr/ZlHx4Nw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkg-config ];
|
nativeBuildInputs = [ cmake pkg-config ];
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "libfprint";
|
pname = "libfprint";
|
||||||
version = "1.92.1";
|
version = "1.94.1";
|
||||||
outputs = [ "out" "devdoc" ];
|
outputs = [ "out" "devdoc" ];
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
|
|||||||
owner = "libfprint";
|
owner = "libfprint";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0dpwzmwl9jjpaz44znvy3v8s9sln0c71b756rs1knk0zx8sa1qbc";
|
sha256 = "sha256-xFmby1x2TRZqXrV9Einqu3002qMAN5tQga2mIAHfC9c=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
40
pkgs/development/libraries/openfec/default.nix
Normal file
40
pkgs/development/libraries/openfec/default.nix
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{ stdenv, lib, fetchzip, cmake }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "openfec";
|
||||||
|
version = "1.4.2";
|
||||||
|
|
||||||
|
src = fetchzip {
|
||||||
|
url = "http://openfec.org/files/openfec_v1_4_2.tgz";
|
||||||
|
sha256 = "sha256:0c2lg8afr7lqpzrsi0g44a6h6s7nq4vz7yc9vm2k57ph2y6r86la";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = [ "out" "dev" ];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeFlags = [ "-DDEBUG:STRING=OFF" ];
|
||||||
|
|
||||||
|
installPhase =
|
||||||
|
let so = stdenv.hostPlatform.extensions.sharedLibrary;
|
||||||
|
in ''
|
||||||
|
# This is pretty horrible but sadly there is not installation procedure
|
||||||
|
# provided.
|
||||||
|
mkdir -p $dev/include
|
||||||
|
cp -R ../src/* $dev/include
|
||||||
|
find $dev/include -type f -a ! -iname '*.h' -delete
|
||||||
|
|
||||||
|
install -D -m755 -t $out/lib ../bin/Release/libopenfec${so}
|
||||||
|
ln -s libopenfec${so} $out/lib/libopenfec${so}.1
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Application-level Forward Erasure Correction codes";
|
||||||
|
homepage = "https://github.com/roc-streaming/openfec";
|
||||||
|
license = licenses.cecill-c;
|
||||||
|
maintainers = with maintainers; [ bgamari ];
|
||||||
|
platforms = platforms.unix;
|
||||||
|
};
|
||||||
|
}
|
@ -54,6 +54,8 @@
|
|||||||
, libpulseaudio
|
, libpulseaudio
|
||||||
, zeroconfSupport ? true
|
, zeroconfSupport ? true
|
||||||
, avahi
|
, avahi
|
||||||
|
, rocSupport ? true
|
||||||
|
, roc-toolkit
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
@ -134,7 +136,8 @@ let
|
|||||||
++ lib.optional ffmpegSupport ffmpeg
|
++ lib.optional ffmpegSupport ffmpeg
|
||||||
++ lib.optionals bluezSupport [ bluez libfreeaptx ldacbt sbc fdk_aac ]
|
++ lib.optionals bluezSupport [ bluez libfreeaptx ldacbt sbc fdk_aac ]
|
||||||
++ lib.optional pulseTunnelSupport libpulseaudio
|
++ lib.optional pulseTunnelSupport libpulseaudio
|
||||||
++ lib.optional zeroconfSupport avahi;
|
++ lib.optional zeroconfSupport avahi
|
||||||
|
++ lib.optional rocSupport roc-toolkit;
|
||||||
|
|
||||||
# Valgrind binary is required for running one optional test.
|
# Valgrind binary is required for running one optional test.
|
||||||
checkInputs = lib.optional withValgrind valgrind;
|
checkInputs = lib.optional withValgrind valgrind;
|
||||||
@ -147,7 +150,7 @@ let
|
|||||||
"-Dpipewire_pulse_prefix=${placeholder "pulse"}"
|
"-Dpipewire_pulse_prefix=${placeholder "pulse"}"
|
||||||
"-Dlibjack-path=${placeholder "jack"}/lib"
|
"-Dlibjack-path=${placeholder "jack"}/lib"
|
||||||
"-Dlibcamera=${mesonEnable libcameraSupport}"
|
"-Dlibcamera=${mesonEnable libcameraSupport}"
|
||||||
"-Droc=disabled"
|
"-Droc=${mesonEnable rocSupport}"
|
||||||
"-Dlibpulse=${mesonEnable pulseTunnelSupport}"
|
"-Dlibpulse=${mesonEnable pulseTunnelSupport}"
|
||||||
"-Davahi=${mesonEnable zeroconfSupport}"
|
"-Davahi=${mesonEnable zeroconfSupport}"
|
||||||
"-Dgstreamer=${mesonEnable gstreamerSupport}"
|
"-Dgstreamer=${mesonEnable gstreamerSupport}"
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, stdenv
|
, stdenv
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, fetchpatch
|
|
||||||
, cmake
|
, cmake
|
||||||
, pkg-config
|
, pkg-config
|
||||||
, sqlite
|
, sqlite
|
||||||
@ -12,23 +11,15 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "proj";
|
pname = "proj";
|
||||||
version = "8.2.0";
|
version = "8.2.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "OSGeo";
|
owner = "OSGeo";
|
||||||
repo = "PROJ";
|
repo = "PROJ";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-YXZ3txBWW5vUcdYLISJPxdFGCQpKi1vvJlX8rntujg8=";
|
hash = "sha256-tnaIqYKgYHY1Tg33jsKYn9QL8YUobgXKbQsodoCXNys=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
|
||||||
(fetchpatch {
|
|
||||||
name = "Make-CApi-test-cross-platform.patch";
|
|
||||||
url = "https://github.com/OSGeo/PROJ/commit/ac113a8898cded7f5359f1edd3abc17a78eee9b4.patch";
|
|
||||||
sha256 = "0gz2xa5nxzck5c0yr7cspv3kw4cz3fxb2yic76w7qfvxidi7z1s1";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
outputs = [ "out" "dev"];
|
outputs = [ "out" "dev"];
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkg-config ];
|
nativeBuildInputs = [ cmake pkg-config ];
|
||||||
|
@ -1,35 +1,17 @@
|
|||||||
{ lib, stdenv, fetchurl, xercesc, getopt }:
|
{ lib, stdenv, fetchFromGitHub, xercesc, getopt, cmake }:
|
||||||
|
|
||||||
let
|
stdenv.mkDerivation rec {
|
||||||
platform = if stdenv.isLinux then "linux" else
|
|
||||||
if stdenv.isDarwin then "macosx" else
|
|
||||||
throw "Unsupported platform";
|
|
||||||
in stdenv.mkDerivation rec {
|
|
||||||
pname = "xalan-c";
|
pname = "xalan-c";
|
||||||
version = "1.11";
|
version = "1.12.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchFromGitHub {
|
||||||
url = "mirror://apache/xalan/xalan-c/sources/xalan_c-${version}-src.tar.gz";
|
owner = "apache";
|
||||||
sha256 = "0a3a2b15vpacnqgpp6fiy1pwyc8q6ywzvyb5445f6wixfdspypjg";
|
repo = "xalan-c";
|
||||||
|
rev = "Xalan-C_1_12_0";
|
||||||
|
sha256 = "sha256:0q1204qk97i9h14vxxq7phcfpyiin0i1zzk74ixvg4wqy87b62s8";
|
||||||
};
|
};
|
||||||
|
|
||||||
configurePhase = ''
|
buildInputs = [ xercesc getopt cmake ];
|
||||||
export XALANCROOT=`pwd`/c
|
|
||||||
cd `pwd`/c
|
|
||||||
mkdir -p $out
|
|
||||||
./runConfigure -p ${platform} -c cc -x c++ -P$out
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildInputs = [ xercesc getopt ];
|
|
||||||
|
|
||||||
# Parallel build fails as:
|
|
||||||
# c++ ... -c ... ExecutionContext.cpp
|
|
||||||
# ProblemListenerBase.hpp:28:10: fatal error: LocalMsgIndex.hpp: No such file or directory
|
|
||||||
# The build failure happens due to missing intra-project dependencies
|
|
||||||
# against generated headers. Future 1.12 version dropped
|
|
||||||
# autotools-based build system. Let's disable parallel builds until
|
|
||||||
# next release.
|
|
||||||
enableParallelBuilding = false;
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://xalan.apache.org/";
|
homepage = "https://xalan.apache.org/";
|
||||||
|
@ -39,7 +39,7 @@ in stdenv.mkDerivation rec {
|
|||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Intel X86 Encoder Decoder (Intel XED)";
|
description = "Intel X86 Encoder Decoder (Intel XED)";
|
||||||
homepage = "https://intelxed.github.io/";
|
homepage = "https://intelxed.github.io/";
|
||||||
license = licenses.apsl20;
|
license = licenses.asl20;
|
||||||
platforms = platforms.unix;
|
platforms = platforms.unix;
|
||||||
maintainers = with maintainers; [ arturcygan ];
|
maintainers = with maintainers; [ arturcygan ];
|
||||||
};
|
};
|
||||||
|
@ -6,13 +6,13 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "adafruit-platformdetect";
|
pname = "adafruit-platformdetect";
|
||||||
version = "3.18.0";
|
version = "3.19.1";
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
pname = "Adafruit-PlatformDetect";
|
pname = "Adafruit-PlatformDetect";
|
||||||
inherit version;
|
inherit version;
|
||||||
sha256 = "593f3719580b31b3dffab0817414a3aa548ed609659ad216ceb8cf31cc51ec9b";
|
sha256 = "sha256-mJ121SSoO7v2p+qCF5Va5+ppHQsHcFuyJDpyc6lykRI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -66,6 +66,6 @@ buildPythonPackage rec {
|
|||||||
description = "Terminal MUA using notmuch mail";
|
description = "Terminal MUA using notmuch mail";
|
||||||
license = licenses.gpl3Plus;
|
license = licenses.gpl3Plus;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
maintainers = with maintainers; [ edibopp ];
|
maintainers = with maintainers; [ milibopp ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ buildPythonPackage rec {
|
|||||||
version = lib.getVersion capstone;
|
version = lib.getVersion capstone;
|
||||||
|
|
||||||
src = capstone.src;
|
src = capstone.src;
|
||||||
sourceRoot = "${capstone.name}/bindings/python";
|
sourceRoot = "source/bindings/python";
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
ln -s ${capstone}/lib/libcapstone${stdenv.targetPlatform.extensions.sharedLibrary} prebuilt/
|
ln -s ${capstone}/lib/libcapstone${stdenv.targetPlatform.extensions.sharedLibrary} prebuilt/
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user