forked from mirrors/nixpkgs
Merge master into haskell-updates
This commit is contained in:
commit
61c79ee058
.github
PULL_REQUEST_TEMPLATE.md
CONTRIBUTING.mdREADME.mdworkflows
doc
contributing
doc-support
functions
languages-frameworks
lib
maintainers
nixos
doc/manual
modules
hardware
installer
module-list.nixprograms
security
services
backup
cluster/kubernetes
networking
web-apps
web-servers
x11
system/boot
virtualisation
tests
pkgs/applications
audio
chuck
freac
lsp-plugins
mixxx
scream
spotify-tui
backup/restique
blockchains
editors
emacs/elisp-packages
ghostwriter
gophernotes
greenfoot
helix
neovim/neovide
vscode
gis/qgis
graphics
logging/humioctl
misc
calibre
cherrytree
expenses
flavours
fuzzel
houdini
hugo
jquake
logseq
nwg-panel
octoprint
openring
reddsaver
sfm
slides
networking
appgate-sdp
browsers
cluster
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -23,8 +23,8 @@ Reviewing guidelines: https://nixos.org/manual/nixpkgs/unstable/#chap-reviewing-
|
|||
- [ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
|
||||
- [ ] Tested compilation of all pkgs that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review wip"`
|
||||
- [ ] Tested execution of all binary files (usually in `./result/bin/`)
|
||||
- [21.11 Release Notes (or backporting 21.05 Relase notes)](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md#generating-2111-release-notes)
|
||||
- [21.11 Release Notes (or backporting 21.05 Relase notes)](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#generating-2111-release-notes)
|
||||
- [ ] (Package updates) Added a release notes entry if the change is major or breaking
|
||||
- [ ] (Module updates) Added a release notes entry if the change is significant
|
||||
- [ ] (Module addition) Added a release notes entry if adding a new NixOS module
|
||||
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md).
|
||||
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
|
||||
|
|
10
.github/workflows/backport.yml
vendored
10
.github/workflows/backport.yml
vendored
|
@ -15,9 +15,15 @@ jobs:
|
|||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
- name: Create backport PRs
|
||||
# should be kept in sync with `version`
|
||||
uses: zeebe-io/backport-action@9b8949dcd4295d364b0939f07d0c7593598d26cd
|
||||
uses: zeebe-io/backport-action@2b994724142df0774855690db56bc6308fb99ffa
|
||||
with:
|
||||
# Config README: https://github.com/zeebe-io/backport-action#backport-action
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
github_workspace: ${{ github.workspace }}
|
||||
# should be kept in sync with `uses`
|
||||
version: 9b8949dcd4295d364b0939f07d0c7593598d26cd
|
||||
version: 2b994724142df0774855690db56bc6308fb99ffa
|
||||
pull_description: |-
|
||||
Bot-based backport to `${target_branch}`, triggered by a label in #${pull_number}.
|
||||
|
||||
* [ ] Before merging, ensure that this backport complies with the [Criteria for Backporting](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#criteria-for-backporting-changes).
|
||||
* Even as a non-commiter, if you find that it does not comply, leave a comment.
|
||||
|
|
41
.github/workflows/merge-staging.yml
vendored
41
.github/workflows/merge-staging.yml
vendored
|
@ -1,41 +0,0 @@
|
|||
name: "merge staging(-next)"
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# * is a special character in YAML so you have to quote this string
|
||||
# Merge every 6 hours
|
||||
- cron: '0 */6 * * *'
|
||||
|
||||
jobs:
|
||||
sync-branch:
|
||||
if: github.repository_owner == 'NixOS'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Merge master into staging-next
|
||||
id: staging_next
|
||||
uses: devmasx/merge-branch@v1.3.1
|
||||
with:
|
||||
type: now
|
||||
from_branch: master
|
||||
target_branch: staging-next
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Merge staging-next into staging
|
||||
id: staging
|
||||
uses: devmasx/merge-branch@v1.3.1
|
||||
with:
|
||||
type: now
|
||||
from_branch: staging-next
|
||||
target_branch: staging
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Comment on failure
|
||||
uses: peter-evans/create-or-update-comment@v1
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
issue-number: 105153
|
||||
body: |
|
||||
An automatic merge${{ (steps.staging_next.outcome == 'failure' && ' from master to staging-next') || ((steps.staging.outcome == 'failure' && ' from staging-next to staging') || '') }} [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}).
|
||||
|
49
.github/workflows/periodic-merge-24h.yml
vendored
Normal file
49
.github/workflows/periodic-merge-24h.yml
vendored
Normal file
|
@ -0,0 +1,49 @@
|
|||
# This action periodically merges base branches into staging branches.
|
||||
# This is done to
|
||||
# * prevent conflicts or rather resolve them early
|
||||
# * make all potential breakage happen on the staging branch
|
||||
# * and make sure that all major rebuilds happen before the staging
|
||||
# branch get’s merged back into its base branch.
|
||||
|
||||
name: "Periodic Merges (24h)"
|
||||
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# * is a special character in YAML so you have to quote this string
|
||||
# Merge every 6 hours
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
jobs:
|
||||
periodic-merge:
|
||||
if: github.repository_owner == 'NixOS'
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
# don't fail fast, so that all pairs are tried
|
||||
fail-fast: false
|
||||
# certain branches need to be merged in order, like master->staging-next->staging
|
||||
# and disabling parallelism ensures the order of the pairs below.
|
||||
max-parallel: 1
|
||||
matrix:
|
||||
pairs:
|
||||
- from: master
|
||||
into: haskell-updates
|
||||
name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
||||
uses: devmasx/merge-branch@v1.3.1
|
||||
with:
|
||||
type: now
|
||||
from_branch: ${{ matrix.pairs.from }}
|
||||
target_branch: ${{ matrix.pairs.into }}
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Comment on failure
|
||||
uses: peter-evans/create-or-update-comment@v1
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
issue-number: 105153
|
||||
body: |
|
||||
Periodic merge from `${{ matrix.pairs.from }}` into `${{ matrix.pairs.into }}` has [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}).
|
55
.github/workflows/periodic-merge-6h.yml
vendored
Normal file
55
.github/workflows/periodic-merge-6h.yml
vendored
Normal file
|
@ -0,0 +1,55 @@
|
|||
# This action periodically merges base branches into staging branches.
|
||||
# This is done to
|
||||
# * prevent conflicts or rather resolve them early
|
||||
# * make all potential breakage happen on the staging branch
|
||||
# * and make sure that all major rebuilds happen before the staging
|
||||
# branch get’s merged back into its base branch.
|
||||
|
||||
name: "Periodic Merges (6h)"
|
||||
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# * is a special character in YAML so you have to quote this string
|
||||
# Merge every 6 hours
|
||||
- cron: '0 */6 * * *'
|
||||
|
||||
jobs:
|
||||
periodic-merge:
|
||||
if: github.repository_owner == 'NixOS'
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
# don't fail fast, so that all pairs are tried
|
||||
fail-fast: false
|
||||
# certain branches need to be merged in order, like master->staging-next->staging
|
||||
# and disabling parallelism ensures the order of the pairs below.
|
||||
max-parallel: 1
|
||||
matrix:
|
||||
pairs:
|
||||
- from: master
|
||||
into: staging-next
|
||||
- from: staging-next
|
||||
into: staging
|
||||
- from: release-21.05
|
||||
into: staging-next-21.05
|
||||
- from: staging-next-21.05
|
||||
into: staging-21.05
|
||||
name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
||||
uses: devmasx/merge-branch@v1.3.1
|
||||
with:
|
||||
type: now
|
||||
from_branch: ${{ matrix.pairs.from }}
|
||||
target_branch: ${{ matrix.pairs.into }}
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Comment on failure
|
||||
uses: peter-evans/create-or-update-comment@v1
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
issue-number: 105153
|
||||
body: |
|
||||
Periodic merge from `${{ matrix.pairs.from }}` into `${{ matrix.pairs.into }}` has [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}).
|
|
@ -87,7 +87,7 @@ Most contributions are based on and merged into these branches:
|
|||
deemed of sufficiently high quality
|
||||
|
||||
For more information about contributing to the project, please visit
|
||||
the [contributing page](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md).
|
||||
the [contributing page](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
|
||||
|
||||
# Donations
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
|
||||
- Push your changes to your fork of nixpkgs.
|
||||
- Create the pull request
|
||||
- Follow [the contribution guidelines](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md#submitting-changes).
|
||||
- Follow [the contribution guidelines](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#submitting-changes).
|
||||
|
||||
## Submitting security fixes {#submitting-changes-submitting-security-fixes}
|
||||
|
||||
|
@ -193,7 +193,7 @@ It’s important to test any executables generated by a build when you change or
|
|||
|
||||
### Meets Nixpkgs contribution standards {#submitting-changes-contribution-standards}
|
||||
|
||||
The last checkbox is fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md). The contributing document has detailed information on standards the Nix community has for commit messages, reviews, licensing of contributions you make to the project, etc\... Everyone should read and understand the standards the community has for contributing before submitting a pull request.
|
||||
The last checkbox is fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md). The contributing document has detailed information on standards the Nix community has for commit messages, reviews, licensing of contributions you make to the project, etc\... Everyone should read and understand the standards the community has for contributing before submitting a pull request.
|
||||
|
||||
## Hotfixing pull requests {#submitting-changes-hotfixing-pull-requests}
|
||||
|
||||
|
|
|
@ -22,5 +22,6 @@ with pkgs; stdenv.mkDerivation {
|
|||
docgen lists 'List manipulation functions'
|
||||
docgen debug 'Debugging functions'
|
||||
docgen options 'NixOS / nixpkgs option handling'
|
||||
docgen sources 'Source filtering functions'
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -25,4 +25,6 @@
|
|||
<xi:include href="./library/generated/debug.xml" />
|
||||
|
||||
<xi:include href="./library/generated/options.xml" />
|
||||
|
||||
<xi:include href="./library/generated/sources.xml" />
|
||||
</section>
|
||||
|
|
31
doc/languages-frameworks/hy.section.md
Normal file
31
doc/languages-frameworks/hy.section.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Hy {#sec-language-hy}
|
||||
|
||||
## Installation {#ssec-hy-installation}
|
||||
|
||||
### Installation without packages {#installation-without-packages}
|
||||
|
||||
You can install `hy` via nix-env or by adding it to `configuration.nix` by reffering to it as a `hy` attribute. This kind of installation adds `hy` to your environment and it succesfully works with `python3`.
|
||||
|
||||
::: {.caution}
|
||||
Packages that are installed with your python derivation, are not accesible by `hy` this way.
|
||||
:::
|
||||
|
||||
### Installation with packages {#installation-with-packages}
|
||||
|
||||
Creating `hy` derivation with custom `python` packages is really simple and similar to the way that python does it. Attribute `hy` provides function `withPackages` that creates custom `hy` derivation with specified packages.
|
||||
|
||||
For example if you want to create shell with `matplotlib` and `numpy`, you can do it like so:
|
||||
|
||||
```ShellSession
|
||||
$ nix-shell -p "hy.withPackages (ps: with ps; [ numpy matplotlib ])"
|
||||
```
|
||||
|
||||
Or if you want to extend your `configuration.nix`:
|
||||
```nix
|
||||
{ # ...
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
(hy.withPackages (py-packages: with py-packages; [ numpy matplotlib ]))
|
||||
];
|
||||
}
|
||||
```
|
|
@ -16,6 +16,7 @@
|
|||
<xi:include href="gnome.section.xml" />
|
||||
<xi:include href="go.section.xml" />
|
||||
<xi:include href="haskell.section.xml" />
|
||||
<xi:include href="hy.section.xml" />
|
||||
<xi:include href="idris.section.xml" />
|
||||
<xi:include href="ios.section.xml" />
|
||||
<xi:include href="java.section.xml" />
|
||||
|
|
117
lib/sources.nix
117
lib/sources.nix
|
@ -1,6 +1,7 @@
|
|||
# Functions for copying sources to the Nix store.
|
||||
{ lib }:
|
||||
|
||||
# Tested in lib/tests/sources.sh
|
||||
let
|
||||
inherit (builtins)
|
||||
hasContext
|
||||
|
@ -11,14 +12,13 @@ let
|
|||
tryEval
|
||||
;
|
||||
inherit (lib)
|
||||
boolToString
|
||||
filter
|
||||
getAttr
|
||||
isString
|
||||
pathExists
|
||||
readFile
|
||||
;
|
||||
in
|
||||
rec {
|
||||
|
||||
# Returns the type of a path: regular (for file), symlink, or directory
|
||||
pathType = p: getAttr (baseNameOf p) (readDir (dirOf p));
|
||||
|
@ -84,18 +84,36 @@ rec {
|
|||
#
|
||||
cleanSourceWith = { filter ? _path: _type: true, src, name ? null }:
|
||||
let
|
||||
isFiltered = src ? _isLibCleanSourceWith;
|
||||
origSrc = if isFiltered then src.origSrc else src;
|
||||
filter' = if isFiltered then name: type: filter name type && src.filter name type else filter;
|
||||
name' = if name != null then name else if isFiltered then src.name else "source";
|
||||
in {
|
||||
inherit origSrc;
|
||||
filter = filter';
|
||||
outPath = builtins.path { filter = filter'; path = origSrc; name = name'; };
|
||||
_isLibCleanSourceWith = true;
|
||||
name = name';
|
||||
orig = toSourceAttributes src;
|
||||
in fromSourceAttributes {
|
||||
inherit (orig) origSrc;
|
||||
filter = path: type: filter path type && orig.filter path type;
|
||||
name = if name != null then name else orig.name;
|
||||
};
|
||||
|
||||
/*
|
||||
Add logging to a source, for troubleshooting the filtering behavior.
|
||||
Type:
|
||||
sources.trace :: sourceLike -> Source
|
||||
*/
|
||||
trace =
|
||||
# Source to debug. The returned source will behave like this source, but also log its filter invocations.
|
||||
src:
|
||||
let
|
||||
attrs = toSourceAttributes src;
|
||||
in
|
||||
fromSourceAttributes (
|
||||
attrs // {
|
||||
filter = path: type:
|
||||
let
|
||||
r = attrs.filter path type;
|
||||
in
|
||||
builtins.trace "${attrs.name}.filter ${path} = ${boolToString r}" r;
|
||||
}
|
||||
) // {
|
||||
satisfiesSubpathInvariant = src ? satisfiesSubpathInvariant && src.satisfiesSubpathInvariant;
|
||||
};
|
||||
|
||||
# Filter sources by a list of regular expressions.
|
||||
#
|
||||
# E.g. `src = sourceByRegex ./my-subproject [".*\.py$" "^database.sql$"]`
|
||||
|
@ -110,14 +128,26 @@ rec {
|
|||
inherit src;
|
||||
};
|
||||
|
||||
# Get all files ending with the specified suffices from the given
|
||||
# directory or its descendants. E.g. `sourceFilesBySuffices ./dir
|
||||
# [".xml" ".c"]'.
|
||||
sourceFilesBySuffices = path: exts:
|
||||
/*
|
||||
Get all files ending with the specified suffices from the given
|
||||
source directory or its descendants, omitting files that do not match
|
||||
any suffix. The result of the example below will include files like
|
||||
`./dir/module.c` and `./dir/subdir/doc.xml` if present.
|
||||
|
||||
Type: sourceLike -> [String] -> Source
|
||||
|
||||
Example:
|
||||
sourceFilesBySuffices ./. [ ".xml" ".c" ]
|
||||
*/
|
||||
sourceFilesBySuffices =
|
||||
# Path or source containing the files to be returned
|
||||
src:
|
||||
# A list of file suffix strings
|
||||
exts:
|
||||
let filter = name: type:
|
||||
let base = baseNameOf (toString name);
|
||||
in type == "directory" || lib.any (ext: lib.hasSuffix ext base) exts;
|
||||
in cleanSourceWith { inherit filter; src = path; };
|
||||
in cleanSourceWith { inherit filter src; };
|
||||
|
||||
pathIsGitRepo = path: (tryEval (commitIdFromGitRepo path)).success;
|
||||
|
||||
|
@ -177,4 +207,57 @@ rec {
|
|||
pathHasContext = builtins.hasContext or (lib.hasPrefix storeDir);
|
||||
|
||||
canCleanSource = src: src ? _isLibCleanSourceWith || !(pathHasContext (toString src));
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Internal functions
|
||||
#
|
||||
|
||||
# toSourceAttributes : sourceLike -> SourceAttrs
|
||||
#
|
||||
# Convert any source-like object into a simple, singular representation.
|
||||
# We don't expose this representation in order to avoid having a fifth path-
|
||||
# like class of objects in the wild.
|
||||
# (Existing ones being: paths, strings, sources and x//{outPath})
|
||||
# So instead of exposing internals, we build a library of combinator functions.
|
||||
toSourceAttributes = src:
|
||||
let
|
||||
isFiltered = src ? _isLibCleanSourceWith;
|
||||
in
|
||||
{
|
||||
# The original path
|
||||
origSrc = if isFiltered then src.origSrc else src;
|
||||
filter = if isFiltered then src.filter else _: _: true;
|
||||
name = if isFiltered then src.name else "source";
|
||||
};
|
||||
|
||||
# fromSourceAttributes : SourceAttrs -> Source
|
||||
#
|
||||
# Inverse of toSourceAttributes for Source objects.
|
||||
fromSourceAttributes = { origSrc, filter, name }:
|
||||
{
|
||||
_isLibCleanSourceWith = true;
|
||||
inherit origSrc filter name;
|
||||
outPath = builtins.path { inherit filter name; path = origSrc; };
|
||||
};
|
||||
|
||||
in {
|
||||
inherit
|
||||
pathType
|
||||
pathIsDirectory
|
||||
pathIsRegularFile
|
||||
|
||||
pathIsGitRepo
|
||||
commitIdFromGitRepo
|
||||
|
||||
cleanSource
|
||||
cleanSourceWith
|
||||
cleanSourceFilter
|
||||
pathHasContext
|
||||
canCleanSource
|
||||
|
||||
sourceByRegex
|
||||
sourceFilesBySuffices
|
||||
|
||||
trace
|
||||
;
|
||||
}
|
||||
|
|
|
@ -26,7 +26,11 @@ pkgs.runCommandNoCC "nixpkgs-lib-tests" {
|
|||
nix-store --init
|
||||
|
||||
cp -r ${../.} lib
|
||||
echo "Running lib/tests/modules.sh"
|
||||
bash lib/tests/modules.sh
|
||||
|
||||
echo "Running lib/tests/sources.sh"
|
||||
TEST_LIB=$PWD/lib bash lib/tests/sources.sh
|
||||
|
||||
touch $out
|
||||
''
|
||||
|
|
59
lib/tests/sources.sh
Executable file
59
lib/tests/sources.sh
Executable file
|
@ -0,0 +1,59 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Use
|
||||
# || die
|
||||
die() {
|
||||
echo >&2 "test case failed: " "$@"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if test -n "${TEST_LIB:-}"; then
|
||||
export NIX_PATH=nixpkgs="$(dirname "$TEST_LIB")"
|
||||
else
|
||||
export NIX_PATH=nixpkgs="$(cd $(dirname ${BASH_SOURCE[0]})/../..; pwd)"
|
||||
fi
|
||||
|
||||
work="$(mktemp -d)"
|
||||
clean_up() {
|
||||
rm -rf "$work"
|
||||
}
|
||||
trap clean_up EXIT
|
||||
cd $work
|
||||
|
||||
touch {README.md,module.o,foo.bar}
|
||||
|
||||
# nix-instantiate doesn't write out the source, only computing the hash, so
|
||||
# this uses the experimental nix command instead.
|
||||
|
||||
dir="$(nix eval --raw '(with import <nixpkgs/lib>; "${
|
||||
cleanSource ./.
|
||||
}")')"
|
||||
(cd $dir; find) | sort -f | diff -U10 - <(cat <<EOF
|
||||
.
|
||||
./foo.bar
|
||||
./README.md
|
||||
EOF
|
||||
) || die "cleanSource 1"
|
||||
|
||||
|
||||
dir="$(nix eval --raw '(with import <nixpkgs/lib>; "${
|
||||
cleanSourceWith { src = '"$work"'; filter = path: type: ! hasSuffix ".bar" path; }
|
||||
}")')"
|
||||
(cd $dir; find) | sort -f | diff -U10 - <(cat <<EOF
|
||||
.
|
||||
./module.o
|
||||
./README.md
|
||||
EOF
|
||||
) || die "cleanSourceWith 1"
|
||||
|
||||
dir="$(nix eval --raw '(with import <nixpkgs/lib>; "${
|
||||
cleanSourceWith { src = cleanSource '"$work"'; filter = path: type: ! hasSuffix ".bar" path; }
|
||||
}")')"
|
||||
(cd $dir; find) | sort -f | diff -U10 - <(cat <<EOF
|
||||
.
|
||||
./README.md
|
||||
EOF
|
||||
) || die "cleanSourceWith + cleanSource"
|
||||
|
||||
echo >&2 tests ok
|
|
@ -1701,6 +1701,18 @@
|
|||
githubId = 3471749;
|
||||
name = "Claudio Bley";
|
||||
};
|
||||
cburstedde = {
|
||||
email = "burstedde@ins.uni-bonn.de";
|
||||
github = "cburstedde";
|
||||
githubId = 109908;
|
||||
name = "Carsten Burstedde";
|
||||
keys = [
|
||||
{
|
||||
longkeyid = "rsa2048/0x0704CD9E550A6BCD";
|
||||
fingerprint = "1127 A432 6524 BF02 737B 544E 0704 CD9E 550A 6BCD";
|
||||
}
|
||||
];
|
||||
};
|
||||
cdepillabout = {
|
||||
email = "cdep.illabout@gmail.com";
|
||||
github = "cdepillabout";
|
||||
|
@ -2562,7 +2574,7 @@
|
|||
name = "Diego Lelis";
|
||||
};
|
||||
diffumist = {
|
||||
email = "diffumist@gmail.com";
|
||||
email = "git@diffumist.me";
|
||||
github = "diffumist";
|
||||
githubId = 32810399;
|
||||
name = "Diffumist";
|
||||
|
@ -7228,10 +7240,10 @@
|
|||
name = "Marko Poikonen";
|
||||
};
|
||||
mtreca = {
|
||||
email = "maxime@treca.dev";
|
||||
name = "Maxime Tréca";
|
||||
email = "maxime.treca@gmail.com";
|
||||
github = "mtreca";
|
||||
githubId = 16440823;
|
||||
name = "Maxime Tréca";
|
||||
};
|
||||
mtreskin = {
|
||||
email = "zerthurd@gmail.com";
|
||||
|
@ -8120,6 +8132,12 @@
|
|||
githubId = 1640697;
|
||||
name = "Philipp Hausmann";
|
||||
};
|
||||
Philipp-M = {
|
||||
email = "philipp@mildenberger.me";
|
||||
github = "Philipp-M";
|
||||
githubId = 9267430;
|
||||
name = "Philipp Mildenberger";
|
||||
};
|
||||
Phlogistique = {
|
||||
email = "noe.rubinstein@gmail.com";
|
||||
github = "Phlogistique";
|
||||
|
@ -10866,6 +10884,12 @@
|
|||
githubId = 608417;
|
||||
name = "Jos van den Oever";
|
||||
};
|
||||
vanilla = {
|
||||
email = "neko@hydev.org";
|
||||
github = "VergeDX";
|
||||
githubId = 25173827;
|
||||
name = "Vanilla";
|
||||
};
|
||||
vanschelven = {
|
||||
email = "klaas@vanschelven.com";
|
||||
github = "vanschelven";
|
||||
|
|
|
@ -48,6 +48,14 @@
|
|||
<link xlink:href="options.html#opt-networking.ucarp.enable">networking.ucarp</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Users of flashrom should migrate to
|
||||
<link xlink:href="options.html#opt-programs.flashrom.enable">programs.flashrom.enable</link>
|
||||
and add themselves to the <literal>flashrom</literal> group to
|
||||
be able to access programmers supported by flashrom.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section xml:id="sec-release-21.11-incompatibilities">
|
||||
|
|
|
@ -16,6 +16,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
|||
|
||||
- [ucarp](https://download.pureftpd.org/pub/ucarp/README), an userspace implementation of the Common Address Redundancy Protocol (CARP). Available as [networking.ucarp](options.html#opt-networking.ucarp.enable).
|
||||
|
||||
- Users of flashrom should migrate to [programs.flashrom.enable](options.html#opt-programs.flashrom.enable) and add themselves to the `flashrom` group to be able to access programmers supported by flashrom.
|
||||
|
||||
## Backward Incompatibilities {#sec-release-21.11-incompatibilities}
|
||||
|
||||
- The `staticjinja` package has been upgraded from 1.0.4 to 2.0.0
|
||||
|
|
|
@ -35,7 +35,7 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
power-pkg = pkgs.system76-power;
|
||||
power-pkg = config.boot.kernelPackages.system76-power;
|
||||
powerConfig = mkIf cfg.power-daemon.enable {
|
||||
# Make system76-power usable by root from the command line.
|
||||
environment.systemPackages = [ power-pkg ];
|
||||
|
|
|
@ -428,7 +428,8 @@ let
|
|||
# Rewrite dates for everything in the FS
|
||||
find . -exec touch --date=2000-01-01 {} +
|
||||
|
||||
usage_size=$(du -sb --apparent-size . | tr -cd '[:digit:]')
|
||||
# Round up to the nearest multiple of 1MB, for more deterministic du output
|
||||
usage_size=$(( $(du -s --block-size=1M --apparent-size . | tr -cd '[:digit:]') * 1024 * 1024 ))
|
||||
# Make the image 110% as big as the files need to make up for FAT overhead
|
||||
image_size=$(( ($usage_size * 110) / 100 ))
|
||||
# Make the image fit blocks of 1M
|
||||
|
@ -438,7 +439,16 @@ let
|
|||
echo "Image size: $image_size"
|
||||
truncate --size=$image_size "$out"
|
||||
faketime "2000-01-01 00:00:00" mkfs.vfat -i 12345678 -n EFIBOOT "$out"
|
||||
mcopy -psvm -i "$out" ./EFI ./boot ::
|
||||
|
||||
# Force a fixed order in mcopy for better determinism, and avoid file globbing
|
||||
for d in $(find EFI boot -type d | sort); do
|
||||
faketime "2000-01-01 00:00:00" mmd -i "$out" "::/$d"
|
||||
done
|
||||
|
||||
for f in $(find EFI boot -type f | sort); do
|
||||
mcopy -pvm -i "$out" "$f" "::/$f"
|
||||
done
|
||||
|
||||
# Verify the FAT partition.
|
||||
fsck.vfat -vn "$out"
|
||||
''; # */
|
||||
|
|
|
@ -40,7 +40,7 @@ let
|
|||
};
|
||||
|
||||
nixos-option =
|
||||
if lib.versionAtLeast (lib.getVersion pkgs.nix) "2.4pre"
|
||||
if lib.versionAtLeast (lib.getVersion config.nix.package) "2.4pre"
|
||||
then null
|
||||
else pkgs.callPackage ./nixos-option { };
|
||||
|
||||
|
|
|
@ -138,6 +138,7 @@
|
|||
./programs/file-roller.nix
|
||||
./programs/firejail.nix
|
||||
./programs/fish.nix
|
||||
./programs/flashrom.nix
|
||||
./programs/flexoptix-app.nix
|
||||
./programs/freetds.nix
|
||||
./programs/fuse.nix
|
||||
|
@ -153,6 +154,7 @@
|
|||
./programs/iftop.nix
|
||||
./programs/iotop.nix
|
||||
./programs/java.nix
|
||||
./programs/kdeconnect.nix
|
||||
./programs/kbdlight.nix
|
||||
./programs/less.nix
|
||||
./programs/liboping.nix
|
||||
|
|
|
@ -5,8 +5,7 @@ with lib;
|
|||
{
|
||||
options = {
|
||||
programs.appgate-sdp = {
|
||||
enable = mkEnableOption
|
||||
"AppGate SDP VPN client";
|
||||
enable = mkEnableOption "AppGate SDP VPN client";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -17,7 +16,10 @@ with lib;
|
|||
systemd = {
|
||||
packages = [ pkgs.appgate-sdp ];
|
||||
# https://github.com/NixOS/nixpkgs/issues/81138
|
||||
services.appgatedriver.wantedBy = [ "multi-user.target" ];
|
||||
services.appgatedriver.wantedBy = [ "multi-user.target" ];
|
||||
services.appgate-dumb-resolver.path = [ pkgs.e2fsprogs ];
|
||||
services.appgate-resolver.path = [ pkgs.procps pkgs.e2fsprogs ];
|
||||
services.appgatedriver.path = [ pkgs.e2fsprogs ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
26
nixos/modules/programs/flashrom.nix
Normal file
26
nixos/modules/programs/flashrom.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.programs.flashrom;
|
||||
in
|
||||
{
|
||||
options.programs.flashrom = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Installs flashrom and configures udev rules for programmers
|
||||
used by flashrom. Grants access to users in the "flashrom"
|
||||
group.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.udev.packages = [ pkgs.flashrom ];
|
||||
environment.systemPackages = [ pkgs.flashrom ];
|
||||
users.groups.flashrom = { };
|
||||
};
|
||||
}
|
35
nixos/modules/programs/kdeconnect.nix
Normal file
35
nixos/modules/programs/kdeconnect.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
with lib;
|
||||
{
|
||||
options.programs.kdeconnect = {
|
||||
enable = mkEnableOption ''
|
||||
kdeconnect.
|
||||
|
||||
Note that it will open the TCP and UDP port from
|
||||
1714 to 1764 as they are needed for it to function properly.
|
||||
You can use the <option>package</option> to use
|
||||
<code>gnomeExtensions.gsconnect</code> as an alternative
|
||||
implementation if you use Gnome.
|
||||
'';
|
||||
package = mkOption {
|
||||
default = pkgs.kdeconnect;
|
||||
defaultText = "pkgs.kdeconnect";
|
||||
type = types.package;
|
||||
example = literalExample "pkgs.gnomeExtensions.gsconnect";
|
||||
description = ''
|
||||
The package providing the implementation for kdeconnect.
|
||||
'';
|
||||
};
|
||||
};
|
||||
config =
|
||||
let
|
||||
cfg = config.programs.kdeconnect;
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
networking.firewall = rec {
|
||||
allowedTCPPortRanges = [ { from = 1714; to = 1764; } ];
|
||||
allowedUDPPortRanges = allowedTCPPortRanges;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -91,7 +91,7 @@ in
|
|||
# before setting your PS1 and etc. Otherwise this will likely to interact with
|
||||
# your ~/.zshrc configuration in unexpected ways as the default prompt sets
|
||||
# a lot of different prompt variables.
|
||||
autoload -U promptinit && promptinit && prompt walters && setopt prompt_sp
|
||||
autoload -U promptinit && promptinit && prompt suse && setopt prompt_sp
|
||||
'';
|
||||
description = ''
|
||||
Shell script code used to initialise the zsh prompt.
|
||||
|
|
|
@ -397,8 +397,6 @@ let
|
|||
"auth required pam_faillock.so"}
|
||||
${optionalString (config.security.pam.enableSSHAgentAuth && cfg.sshAgentAuth)
|
||||
"auth sufficient ${pkgs.pam_ssh_agent_auth}/libexec/pam_ssh_agent_auth.so file=${lib.concatStringsSep ":" config.services.openssh.authorizedKeysFiles}"}
|
||||
${optionalString cfg.fprintAuth
|
||||
"auth sufficient ${pkgs.fprintd}/lib/security/pam_fprintd.so"}
|
||||
${let p11 = config.security.pam.p11; in optionalString cfg.p11Auth
|
||||
"auth ${p11.control} ${pkgs.pam_p11}/lib/security/pam_p11.so ${pkgs.opensc}/lib/opensc-pkcs11.so"}
|
||||
${let u2f = config.security.pam.u2f; in optionalString cfg.u2fAuth
|
||||
|
@ -409,6 +407,8 @@ let
|
|||
"auth requisite ${pkgs.oathToolkit}/lib/security/pam_oath.so window=${toString oath.window} usersfile=${toString oath.usersFile} digits=${toString oath.digits}"}
|
||||
${let yubi = config.security.pam.yubico; in optionalString cfg.yubicoAuth
|
||||
"auth ${yubi.control} ${pkgs.yubico-pam}/lib/security/pam_yubico.so mode=${toString yubi.mode} ${optionalString (yubi.mode == "client") "id=${toString yubi.id}"} ${optionalString yubi.debug "debug"}"}
|
||||
${optionalString cfg.fprintAuth
|
||||
"auth sufficient ${pkgs.fprintd}/lib/security/pam_fprintd.so"}
|
||||
'' +
|
||||
# Modules in this block require having the password set in PAM_AUTHTOK.
|
||||
# pam_unix is marked as 'sufficient' on NixOS which means nothing will run
|
||||
|
|
|
@ -157,7 +157,7 @@ in
|
|||
${dup} cleanup ${target} --force ${extra}
|
||||
${lib.optionalString (cfg.cleanup.maxAge != null) "${dup} remove-older-than ${lib.escapeShellArg cfg.cleanup.maxAge} ${target} --force ${extra}"}
|
||||
${lib.optionalString (cfg.cleanup.maxFull != null) "${dup} remove-all-but-n-full ${toString cfg.cleanup.maxFull} ${target} --force ${extra}"}
|
||||
${lib.optionalString (cfg.cleanup.maxIncr != null) "${dup} remove-all-incr-but-n-full ${toString cfg.cleanup.maxIncr} ${target} --force ${extra}"}
|
||||
${lib.optionalString (cfg.cleanup.maxIncr != null) "${dup} remove-all-inc-of-but-n-full ${toString cfg.cleanup.maxIncr} ${target} --force ${extra}"}
|
||||
exec ${dup} ${if cfg.fullIfOlderThan == "always" then "full" else "incr"} ${lib.escapeShellArgs (
|
||||
[ cfg.root cfg.targetUrl ]
|
||||
++ concatMap (p: [ "--include" p ]) cfg.include
|
||||
|
|
|
@ -10,74 +10,51 @@ let
|
|||
description = "dataset/template options";
|
||||
};
|
||||
|
||||
# Default values from https://github.com/jimsalterjrs/sanoid/blob/master/sanoid.defaults.conf
|
||||
|
||||
commonOptions = {
|
||||
hourly = mkOption {
|
||||
description = "Number of hourly snapshots.";
|
||||
type = types.ints.unsigned;
|
||||
default = 48;
|
||||
type = with types; nullOr ints.unsigned;
|
||||
default = null;
|
||||
};
|
||||
|
||||
daily = mkOption {
|
||||
description = "Number of daily snapshots.";
|
||||
type = types.ints.unsigned;
|
||||
default = 90;
|
||||
type = with types; nullOr ints.unsigned;
|
||||
default = null;
|
||||
};
|
||||
|
||||
monthly = mkOption {
|
||||
description = "Number of monthly snapshots.";
|
||||
type = types.ints.unsigned;
|
||||
default = 6;
|
||||
type = with types; nullOr ints.unsigned;
|
||||
default = null;
|
||||
};
|
||||
|
||||
yearly = mkOption {
|
||||
description = "Number of yearly snapshots.";
|
||||
type = types.ints.unsigned;
|
||||
default = 0;
|
||||
type = with types; nullOr ints.unsigned;
|
||||
default = null;
|
||||
};
|
||||
|
||||
autoprune = mkOption {
|
||||
description = "Whether to automatically prune old snapshots.";
|
||||
type = types.bool;
|
||||
default = true;
|
||||
type = with types; nullOr bool;
|
||||
default = null;
|
||||
};
|
||||
|
||||
autosnap = mkOption {
|
||||
description = "Whether to automatically take snapshots.";
|
||||
type = types.bool;
|
||||
default = true;
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
description = ''
|
||||
Free-form settings for this template/dataset. See
|
||||
<link xlink:href="https://github.com/jimsalterjrs/sanoid/blob/master/sanoid.defaults.conf"/>
|
||||
for allowed values.
|
||||
'';
|
||||
type = datasetSettingsType;
|
||||
type = with types; nullOr bool;
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
|
||||
commonConfig = config: {
|
||||
settings = {
|
||||
hourly = mkDefault config.hourly;
|
||||
daily = mkDefault config.daily;
|
||||
monthly = mkDefault config.monthly;
|
||||
yearly = mkDefault config.yearly;
|
||||
autoprune = mkDefault config.autoprune;
|
||||
autosnap = mkDefault config.autosnap;
|
||||
};
|
||||
};
|
||||
|
||||
datasetOptions = {
|
||||
useTemplate = mkOption {
|
||||
datasetOptions = rec {
|
||||
use_template = mkOption {
|
||||
description = "Names of the templates to use for this dataset.";
|
||||
type = (types.listOf (types.enum (attrNames cfg.templates))) // {
|
||||
description = "list of template names";
|
||||
};
|
||||
type = types.listOf (types.enum (attrNames cfg.templates));
|
||||
default = [];
|
||||
};
|
||||
useTemplate = use_template;
|
||||
|
||||
recursive = mkOption {
|
||||
description = "Whether to recursively snapshot dataset children.";
|
||||
|
@ -85,19 +62,12 @@ let
|
|||
default = false;
|
||||
};
|
||||
|
||||
processChildrenOnly = mkOption {
|
||||
process_children_only = mkOption {
|
||||
description = "Whether to only snapshot child datasets if recursing.";
|
||||
type = types.bool;
|
||||
default = false;
|
||||
};
|
||||
};
|
||||
|
||||
datasetConfig = config: {
|
||||
settings = {
|
||||
use_template = mkDefault config.useTemplate;
|
||||
recursive = mkDefault config.recursive;
|
||||
process_children_only = mkDefault config.processChildrenOnly;
|
||||
};
|
||||
processChildrenOnly = process_children_only;
|
||||
};
|
||||
|
||||
# Extract pool names from configured datasets
|
||||
|
@ -109,11 +79,11 @@ let
|
|||
else generators.mkValueStringDefault {} v;
|
||||
|
||||
mkKeyValue = k: v: if v == null then ""
|
||||
else if k == "processChildrenOnly" then ""
|
||||
else if k == "useTemplate" then ""
|
||||
else generators.mkKeyValueDefault { inherit mkValueString; } "=" k v;
|
||||
in generators.toINI { inherit mkKeyValue; } cfg.settings;
|
||||
|
||||
configDir = pkgs.writeTextDir "sanoid.conf" configFile;
|
||||
|
||||
in {
|
||||
|
||||
# Interface
|
||||
|
@ -135,19 +105,21 @@ in {
|
|||
};
|
||||
|
||||
datasets = mkOption {
|
||||
type = types.attrsOf (types.submodule ({ config, ... }: {
|
||||
type = types.attrsOf (types.submodule ({config, options, ...}: {
|
||||
freeformType = datasetSettingsType;
|
||||
options = commonOptions // datasetOptions;
|
||||
config = mkMerge [ (commonConfig config) (datasetConfig config) ];
|
||||
config.use_template = mkAliasDefinitions (options.useTemplate or {});
|
||||
config.process_children_only = mkAliasDefinitions (options.processChildrenOnly or {});
|
||||
}));
|
||||
default = {};
|
||||
description = "Datasets to snapshot.";
|
||||
};
|
||||
|
||||
templates = mkOption {
|
||||
type = types.attrsOf (types.submodule ({ config, ... }: {
|
||||
type = types.attrsOf (types.submodule {
|
||||
freeformType = datasetSettingsType;
|
||||
options = commonOptions;
|
||||
config = commonConfig config;
|
||||
}));
|
||||
});
|
||||
default = {};
|
||||
description = "Templates for datasets.";
|
||||
};
|
||||
|
@ -177,8 +149,8 @@ in {
|
|||
|
||||
config = mkIf cfg.enable {
|
||||
services.sanoid.settings = mkMerge [
|
||||
(mapAttrs' (d: v: nameValuePair ("template_" + d) v.settings) cfg.templates)
|
||||
(mapAttrs (d: v: v.settings) cfg.datasets)
|
||||
(mapAttrs' (d: v: nameValuePair ("template_" + d) v) cfg.templates)
|
||||
(mapAttrs (d: v: v) cfg.datasets)
|
||||
];
|
||||
|
||||
systemd.services.sanoid = {
|
||||
|
@ -191,7 +163,7 @@ in {
|
|||
ExecStart = lib.escapeShellArgs ([
|
||||
"${pkgs.sanoid}/bin/sanoid"
|
||||
"--cron"
|
||||
"--configdir" configDir
|
||||
"--configdir" (pkgs.writeTextDir "sanoid.conf" configFile)
|
||||
] ++ cfg.extraArgs);
|
||||
ExecStopPost = map (pool: lib.escapeShellArgs [
|
||||
"+/run/booted-system/sw/bin/zfs" "unallow" "sanoid" pool
|
||||
|
|
|
@ -189,6 +189,7 @@ in
|
|||
# manually paste it in place. Just symlink.
|
||||
# otherwise, create the target file, ready for users to insert the token
|
||||
|
||||
mkdir -p $(dirname ${certmgrAPITokenPath})
|
||||
if [ -f "${cfsslAPITokenPath}" ]; then
|
||||
ln -fs "${cfsslAPITokenPath}" "${certmgrAPITokenPath}"
|
||||
else
|
||||
|
|
|
@ -59,7 +59,7 @@ in
|
|||
description = "Kubernetes Proxy Service";
|
||||
wantedBy = [ "kubernetes.target" ];
|
||||
after = [ "kube-apiserver.service" ];
|
||||
path = with pkgs; [ iptables conntrack_tools ];
|
||||
path = with pkgs; [ iptables conntrack-tools ];
|
||||
serviceConfig = {
|
||||
Slice = "kubernetes.slice";
|
||||
ExecStart = ''${top.package}/bin/kube-proxy \
|
||||
|
|
|
@ -26,7 +26,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
config = mkIf cfg.enable {
|
||||
services.dbus.packages = [ pkgs.globalprotect-openconnect ];
|
||||
|
||||
systemd.services.gpservice = {
|
||||
|
|
|
@ -453,6 +453,7 @@ in
|
|||
{ ExecStart =
|
||||
(optionalString cfg.startWhenNeeded "-") +
|
||||
"${cfgc.package}/bin/sshd " + (optionalString cfg.startWhenNeeded "-i ") +
|
||||
"-D " + # don't detach into a daemon process
|
||||
"-f /etc/ssh/sshd_config";
|
||||
KillMode = "process";
|
||||
} // (if cfg.startWhenNeeded then {
|
||||
|
|
|
@ -34,7 +34,7 @@ in {
|
|||
systemd.packages = [ cfg.package ];
|
||||
systemd.services.tailscaled = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ pkgs.openresolv ];
|
||||
path = [ pkgs.openresolv pkgs.procps ];
|
||||
serviceConfig.Environment = [
|
||||
"PORT=${toString cfg.port}"
|
||||
''"FLAGS=--tun ${lib.escapeShellArg cfg.interfaceName}"''
|
||||
|
|
|
@ -30,6 +30,9 @@ in
|
|||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.discourse;
|
||||
apply = p: p.override {
|
||||
plugins = lib.unique (p.enabledPlugins ++ cfg.plugins);
|
||||
};
|
||||
defaultText = "pkgs.discourse";
|
||||
description = ''
|
||||
The discourse package to use.
|
||||
|
@ -731,8 +734,6 @@ in
|
|||
|
||||
cp -r ${cfg.package}/share/discourse/config.dist/* /run/discourse/config/
|
||||
cp -r ${cfg.package}/share/discourse/public.dist/* /run/discourse/public/
|
||||
cp -r ${cfg.package}/share/discourse/plugins.dist/* /run/discourse/plugins/
|
||||
${lib.concatMapStringsSep "\n" (p: "ln -sf ${p} /run/discourse/plugins/") cfg.plugins}
|
||||
ln -sf /var/lib/discourse/uploads /run/discourse/public/uploads
|
||||
ln -sf /var/lib/discourse/backups /run/discourse/public/backups
|
||||
|
||||
|
|
|
@ -77,6 +77,16 @@ in {
|
|||
'';
|
||||
};
|
||||
|
||||
periodicArchiveProcessingUrl = mkOption {
|
||||
type = types.str;
|
||||
default = "${user}.${fqdn}";
|
||||
example = "matomo.yourdomain.org";
|
||||
description = ''
|
||||
URL of the host, without https prefix. By default, this is ${user}.${fqdn}, but you may want to change it if you
|
||||
run Matomo on a different URL than matomo.yourdomain.
|
||||
'';
|
||||
};
|
||||
|
||||
nginx = mkOption {
|
||||
type = types.nullOr (types.submodule (
|
||||
recursiveUpdate
|
||||
|
@ -190,7 +200,7 @@ in {
|
|||
UMask = "0007";
|
||||
CPUSchedulingPolicy = "idle";
|
||||
IOSchedulingClass = "idle";
|
||||
ExecStart = "${cfg.package}/bin/matomo-console core:archive --url=https://${user}.${fqdn}";
|
||||
ExecStart = "${cfg.package}/bin/matomo-console core:archive --url=https://${cfg.periodicArchiveProcessingUrl}";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -4,6 +4,11 @@ with lib;
|
|||
|
||||
let
|
||||
cfg = config.services.minio;
|
||||
|
||||
legacyCredentials = cfg: pkgs.writeText "minio-legacy-credentials" ''
|
||||
MINIO_ROOT_USER=${cfg.accessKey}
|
||||
MINIO_ROOT_PASSWORD=${cfg.secretKey}
|
||||
'';
|
||||
in
|
||||
{
|
||||
meta.maintainers = [ maintainers.bachp ];
|
||||
|
@ -49,6 +54,17 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
rootCredentialsFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
File containing the MINIO_ROOT_USER, default is "minioadmin", and
|
||||
MINIO_ROOT_PASSWORD (length >= 8), default is "minioadmin"; in the format of
|
||||
an EnvironmentFile=, as described by systemd.exec(5).
|
||||
'';
|
||||
example = "/etc/nixos/minio-root-credentials";
|
||||
};
|
||||
|
||||
region = mkOption {
|
||||
default = "us-east-1";
|
||||
type = types.str;
|
||||
|
@ -72,6 +88,8 @@ in
|
|||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
warnings = optional ((cfg.accessKey != "") || (cfg.secretKey != "")) "services.minio.`accessKey` and services.minio.`secretKey` are deprecated, please use services.minio.`rootCredentialsFile` instead.";
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.configDir}' - minio minio - -"
|
||||
] ++ (map (x: "d '" + x + "' - minio minio - - ") cfg.dataDir);
|
||||
|
@ -86,14 +104,13 @@ in
|
|||
User = "minio";
|
||||
Group = "minio";
|
||||
LimitNOFILE = 65536;
|
||||
EnvironmentFile = if (cfg.rootCredentialsFile != null) then cfg.rootCredentialsFile
|
||||
else if ((cfg.accessKey != "") || (cfg.secretKey != "")) then (legacyCredentials cfg)
|
||||
else null;
|
||||
};
|
||||
environment = {
|
||||
MINIO_REGION = "${cfg.region}";
|
||||
MINIO_BROWSER = "${if cfg.browser then "on" else "off"}";
|
||||
} // optionalAttrs (cfg.accessKey != "") {
|
||||
MINIO_ACCESS_KEY = "${cfg.accessKey}";
|
||||
} // optionalAttrs (cfg.secretKey != "") {
|
||||
MINIO_SECRET_KEY = "${cfg.secretKey}";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -169,7 +169,7 @@ with lib;
|
|||
description = ''
|
||||
Whether to enable HTTP 3.
|
||||
This requires using <literal>pkgs.nginxQuic</literal> package
|
||||
which can be achived by setting <literal>services.nginx.package = pkgs.nginxQuic;</literal>.
|
||||
which can be achieved by setting <literal>services.nginx.package = pkgs.nginxQuic;</literal>.
|
||||
Note that HTTP 3 support is experimental and
|
||||
*not* yet recommended for production.
|
||||
Read more at https://quic.nginx.org/
|
||||
|
|
|
@ -99,7 +99,8 @@ in
|
|||
autoSuspend = mkOption {
|
||||
default = true;
|
||||
description = ''
|
||||
Suspend the machine after inactivity.
|
||||
On the GNOME Display Manager login screen, suspend the machine after inactivity.
|
||||
(Does not affect automatic suspend while logged in, or at lock screen.)
|
||||
'';
|
||||
type = types.bool;
|
||||
};
|
||||
|
|
|
@ -4,7 +4,7 @@ with lib;
|
|||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.fvwm;
|
||||
fvwm = pkgs.fvwm.override { gestures = cfg.gestures; };
|
||||
fvwm = pkgs.fvwm.override { enableGestures = cfg.gestures; };
|
||||
in
|
||||
|
||||
{
|
||||
|
|
|
@ -38,11 +38,11 @@ in
|
|||
default = pkgs.linuxPackages;
|
||||
type = types.unspecified // { merge = mergeEqualOption; };
|
||||
apply = kernelPackages: kernelPackages.extend (self: super: {
|
||||
kernel = super.kernel.override {
|
||||
kernel = super.kernel.override (originalArgs: {
|
||||
inherit randstructSeed;
|
||||
kernelPatches = super.kernel.kernelPatches ++ kernelPatches;
|
||||
kernelPatches = (originalArgs.kernelPatches or []) ++ kernelPatches;
|
||||
features = lib.recursiveUpdate super.kernel.features features;
|
||||
};
|
||||
});
|
||||
});
|
||||
# We don't want to evaluate all of linuxPackages for the manual
|
||||
# - some of it might not even evaluate correctly.
|
||||
|
|
|
@ -58,7 +58,19 @@ in {
|
|||
|
||||
Run <literal>VBoxManage modifyvm --help</literal> to see more options.
|
||||
'';
|
||||
};
|
||||
};
|
||||
exportParams = mkOption {
|
||||
type = with types; listOf (oneOf [ str int bool (listOf str) ]);
|
||||
example = [
|
||||
"--vsys" "0" "--vendor" "ACME Inc."
|
||||
];
|
||||
default = [];
|
||||
description = ''
|
||||
Parameters passed to the Virtualbox export command.
|
||||
|
||||
Run <literal>VBoxManage export --help</literal> to see more options.
|
||||
'';
|
||||
};
|
||||
extraDisk = mkOption {
|
||||
description = ''
|
||||
Optional extra disk/hdd configuration.
|
||||
|
@ -158,7 +170,7 @@ in {
|
|||
echo "exporting VirtualBox VM..."
|
||||
mkdir -p $out
|
||||
fn="$out/${cfg.vmFileName}"
|
||||
VBoxManage export "$vmName" --output "$fn" --options manifest
|
||||
VBoxManage export "$vmName" --output "$fn" --options manifest ${escapeShellArgs cfg.exportParams}
|
||||
|
||||
rm -v $diskImage
|
||||
|
||||
|
|
|
@ -23,8 +23,6 @@ in {
|
|||
services.home-assistant = {
|
||||
inherit configDir;
|
||||
enable = true;
|
||||
# includes the package with all tests enabled
|
||||
package = pkgs.home-assistant;
|
||||
config = {
|
||||
homeassistant = {
|
||||
name = "Home";
|
||||
|
|
|
@ -32,6 +32,7 @@ with pkgs; {
|
|||
linux_5_4 = makeKernelTest "5.4" linuxPackages_5_4;
|
||||
linux_5_10 = makeKernelTest "5.10" linuxPackages_5_10;
|
||||
linux_5_12 = makeKernelTest "5.12" linuxPackages_5_12;
|
||||
linux_5_13 = makeKernelTest "5.13" linuxPackages_5_13;
|
||||
|
||||
linux_testing = makeKernelTest "testing" linuxPackages_testing;
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ let
|
|||
allowedTCPPorts = [
|
||||
10250 # kubelet
|
||||
];
|
||||
trustedInterfaces = ["docker0"];
|
||||
trustedInterfaces = ["mynet"];
|
||||
|
||||
extraCommands = concatMapStrings (node: ''
|
||||
iptables -A INPUT -s ${node.config.networking.primaryIPAddress} -j ACCEPT
|
||||
|
@ -61,6 +61,13 @@ let
|
|||
advertiseAddress = master.ip;
|
||||
};
|
||||
masterAddress = "${masterName}.${config.networking.domain}";
|
||||
# workaround for:
|
||||
# https://github.com/kubernetes/kubernetes/issues/102676
|
||||
# (workaround from) https://github.com/kubernetes/kubernetes/issues/95488
|
||||
kubelet.extraOpts = ''\
|
||||
--cgroups-per-qos=false \
|
||||
--enforce-node-allocatable="" \
|
||||
'';
|
||||
};
|
||||
}
|
||||
(optionalAttrs (any (role: role == "master") machine.roles) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{ system ? builtins.currentSystem
|
||||
, config ? {}
|
||||
, config ? { }
|
||||
, pkgs ? import ../../.. { inherit system config; }
|
||||
, php ? pkgs.php
|
||||
}:
|
||||
|
@ -8,7 +8,8 @@ let
|
|||
php' = php.buildEnv {
|
||||
extensions = { enabled, all }: with all; enabled ++ [ apcu ];
|
||||
};
|
||||
in {
|
||||
in
|
||||
{
|
||||
fpm = import ./fpm.nix { inherit system pkgs; php = php'; };
|
||||
httpd = import ./httpd.nix { inherit system pkgs; php = php'; };
|
||||
pcre = import ./pcre.nix { inherit system pkgs; php = php'; };
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ../make-test-python.nix ({pkgs, lib, php, ...}: {
|
||||
import ../make-test-python.nix ({ pkgs, lib, php, ... }: {
|
||||
name = "php-${php.version}-fpm-nginx-test";
|
||||
meta.maintainers = lib.teams.php.members;
|
||||
|
||||
|
@ -8,21 +8,23 @@ import ../make-test-python.nix ({pkgs, lib, php, ...}: {
|
|||
services.nginx = {
|
||||
enable = true;
|
||||
|
||||
virtualHosts."phpfpm" = let
|
||||
testdir = pkgs.writeTextDir "web/index.php" "<?php phpinfo();";
|
||||
in {
|
||||
root = "${testdir}/web";
|
||||
locations."~ \\.php$".extraConfig = ''
|
||||
fastcgi_pass unix:${config.services.phpfpm.pools.foobar.socket};
|
||||
fastcgi_index index.php;
|
||||
include ${pkgs.nginx}/conf/fastcgi_params;
|
||||
include ${pkgs.nginx}/conf/fastcgi.conf;
|
||||
'';
|
||||
locations."/" = {
|
||||
tryFiles = "$uri $uri/ index.php";
|
||||
index = "index.php index.html index.htm";
|
||||
virtualHosts."phpfpm" =
|
||||
let
|
||||
testdir = pkgs.writeTextDir "web/index.php" "<?php phpinfo();";
|
||||
in
|
||||
{
|
||||
root = "${testdir}/web";
|
||||
locations."~ \\.php$".extraConfig = ''
|
||||
fastcgi_pass unix:${config.services.phpfpm.pools.foobar.socket};
|
||||
fastcgi_index index.php;
|
||||
include ${pkgs.nginx}/conf/fastcgi_params;
|
||||
include ${pkgs.nginx}/conf/fastcgi.conf;
|
||||
'';
|
||||
locations."/" = {
|
||||
tryFiles = "$uri $uri/ index.php";
|
||||
index = "index.php index.html index.htm";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.phpfpm.pools."foobar" = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ../make-test-python.nix ({pkgs, lib, php, ...}: {
|
||||
import ../make-test-python.nix ({ pkgs, lib, php, ... }: {
|
||||
name = "php-${php.version}-httpd-test";
|
||||
meta.maintainers = lib.teams.php.members;
|
||||
|
||||
|
@ -6,14 +6,16 @@ import ../make-test-python.nix ({pkgs, lib, php, ...}: {
|
|||
services.httpd = {
|
||||
enable = true;
|
||||
adminAddr = "admin@phpfpm";
|
||||
virtualHosts."phpfpm" = let
|
||||
testdir = pkgs.writeTextDir "web/index.php" "<?php phpinfo();";
|
||||
in {
|
||||
documentRoot = "${testdir}/web";
|
||||
locations."/" = {
|
||||
index = "index.php index.html";
|
||||
virtualHosts."phpfpm" =
|
||||
let
|
||||
testdir = pkgs.writeTextDir "web/index.php" "<?php phpinfo();";
|
||||
in
|
||||
{
|
||||
documentRoot = "${testdir}/web";
|
||||
locations."/" = {
|
||||
index = "index.php index.html";
|
||||
};
|
||||
};
|
||||
};
|
||||
phpPackage = php;
|
||||
enablePHP = true;
|
||||
};
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
let
|
||||
testString = "can-use-subgroups";
|
||||
in import ../make-test-python.nix ({lib, php, ...}: {
|
||||
in
|
||||
import ../make-test-python.nix ({ lib, php, ... }: {
|
||||
name = "php-${php.version}-httpd-pcre-jit-test";
|
||||
meta.maintainers = lib.teams.php.members;
|
||||
|
||||
|
@ -12,14 +13,15 @@ in import ../make-test-python.nix ({lib, php, ...}: {
|
|||
phpPackage = php;
|
||||
enablePHP = true;
|
||||
phpOptions = "pcre.jit = true";
|
||||
extraConfig = let
|
||||
testRoot = pkgs.writeText "index.php"
|
||||
''
|
||||
<?php
|
||||
preg_match('/(${testString})/', '${testString}', $result);
|
||||
var_dump($result);
|
||||
'';
|
||||
in
|
||||
extraConfig =
|
||||
let
|
||||
testRoot = pkgs.writeText "index.php"
|
||||
''
|
||||
<?php
|
||||
preg_match('/(${testString})/', '${testString}', $result);
|
||||
var_dump($result);
|
||||
'';
|
||||
in
|
||||
''
|
||||
Alias / ${testRoot}/
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ in {
|
|||
|
||||
autosnap = true;
|
||||
};
|
||||
datasets."pool/sanoid".useTemplate = [ "test" ];
|
||||
datasets."pool/sanoid".use_template = [ "test" ];
|
||||
extraArgs = [ "--verbose" ];
|
||||
};
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.4.0.1";
|
||||
version = "1.4.1.0";
|
||||
pname = "chuck";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://chuck.cs.princeton.edu/release/files/chuck-${version}.tgz";
|
||||
sha256 = "1m0fhndbqaf0lii1asyc50c66bv55ib6mbnm8fzk5qc5ncs0r8hi";
|
||||
sha256 = "sha256-dL+ZrVFeMRPFW4MxUpNvrQKjzwBqVBBf8Rd3xHMZSSg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ flex bison which ];
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "freac";
|
||||
version = "1.1.4";
|
||||
version = "1.1.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "enzo1982";
|
||||
repo = "freac";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-JwZJOV4mxNKqhhdlfFcX06NwBxmbye2mgMfdM//bHYI=";
|
||||
sha256 = "sha256-cRmN9D/+FLiXqZW/PYhw61EoZuL3y61YtQ/ZNjnhfmY=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lsp-plugins";
|
||||
version = "1.1.26";
|
||||
version = "1.1.30";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sadko4u";
|
||||
repo = pname;
|
||||
rev = "${pname}-${version}";
|
||||
sha256 = "1apw8zh3a3il4smkjji6bih4vbsymj0hjs10fgkrd4nazqkjvgyd";
|
||||
rev = version;
|
||||
sha256 = "0g0nx05dyjwz2149v3pj6sa9divr26jyqvg2kk1qk48s2n4najkz";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config php makeWrapper ];
|
||||
|
@ -36,6 +36,8 @@ stdenv.mkDerivation rec {
|
|||
|
||||
buildFlags = [ "release" ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with lib;
|
||||
{ description = "Collection of open-source audio plugins";
|
||||
longDescription = ''
|
||||
|
@ -84,6 +86,8 @@ stdenv.mkDerivation rec {
|
|||
- Compressor MidSide - Kompressor MidSide
|
||||
- Compressor Mono - Kompressor Mono
|
||||
- Compressor Stereo - Kompressor Stereo
|
||||
- Artistic Delay Mono - Künstlerische Verzögerung
|
||||
- Artistic Delay Stereo - Künstlerische Verzögerung
|
||||
- Latency Meter - Latenzmessgerät
|
||||
- Loudness Compensator Mono - Lautstärke Kompensator Mono
|
||||
- Loudness Compensator Stereo - Lautstärke Kompensator Stereo
|
||||
|
@ -99,6 +103,9 @@ stdenv.mkDerivation rec {
|
|||
- Multiband Compressor MidSide x8 - Multi-band Kompressor MidSide x8
|
||||
- Multiband Compressor Mono x8 - Multi-band Kompressor Mono x8
|
||||
- Multiband Compressor Stereo x8 - Multi-band Kompressor Stereo x8
|
||||
- Oscilloscope x1 - Oscilloscope x1
|
||||
- Oscilloscope x2 - Oscilloscope x2
|
||||
- Oscilloscope x4 - Oscilloscope x4
|
||||
- Oscillator Mono - Oszillator Mono
|
||||
- Parametric Equalizer x16 LeftRight - Parametrischer Entzerrer x16 LeftRight
|
||||
- Parametric Equalizer x16 MidSide - Parametrischer Entzerrer x16 MidSide
|
||||
|
|
|
@ -1,49 +1,117 @@
|
|||
{ lib, mkDerivation, fetchurl, fetchFromGitHub, chromaprint
|
||||
, fftw, flac, faad2, glibcLocales, mp4v2
|
||||
, libid3tag, libmad, libopus, libshout, libsndfile, libusb1, libvorbis
|
||||
, libGLU, libxcb, lilv, lv2, opusfile
|
||||
, pkg-config, portaudio, portmidi, protobuf, qtbase, qtscript, qtsvg
|
||||
, qtx11extras, rubberband, sconsPackages, sqlite, taglib, upower, vamp-plugin-sdk
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchurl
|
||||
, fetchFromGitHub
|
||||
, chromaprint
|
||||
, cmake
|
||||
, faad2
|
||||
, ffmpeg
|
||||
, fftw
|
||||
, flac
|
||||
, glibcLocales
|
||||
, hidapi
|
||||
, lame
|
||||
, libebur128
|
||||
, libGLU
|
||||
, libid3tag
|
||||
, libkeyfinder
|
||||
, libmad
|
||||
, libmodplug
|
||||
, libopus
|
||||
, libsecret
|
||||
, libshout
|
||||
, libsndfile
|
||||
, libusb1
|
||||
, libvorbis
|
||||
, libxcb
|
||||
, lilv
|
||||
, lv2
|
||||
, mp4v2
|
||||
, opusfile
|
||||
, pcre
|
||||
, pkg-config
|
||||
, portaudio
|
||||
, portmidi
|
||||
, protobuf
|
||||
, qtbase
|
||||
, qtkeychain
|
||||
, qtscript
|
||||
, qtsvg
|
||||
, qtx11extras
|
||||
, rubberband
|
||||
, serd
|
||||
, sord
|
||||
, soundtouch
|
||||
, sratom
|
||||
, sqlite
|
||||
, taglib
|
||||
, upower
|
||||
, vamp-plugin-sdk
|
||||
, wavpack
|
||||
}:
|
||||
|
||||
let
|
||||
# Because libshout 2.4.2 and newer seem to break streaming in mixxx, build it
|
||||
# with 2.4.1 instead.
|
||||
libshout241 = libshout.overrideAttrs (o: rec {
|
||||
name = "libshout-2.4.1";
|
||||
src = fetchurl {
|
||||
url = "http://downloads.xiph.org/releases/libshout/${name}.tar.gz";
|
||||
sha256 = "0kgjpf8jkgyclw11nilxi8vyjk4s8878x23qyxnvybbgqbgbib7k";
|
||||
};
|
||||
});
|
||||
in
|
||||
mkDerivation rec {
|
||||
pname = "mixxx";
|
||||
version = "2.2.4";
|
||||
version = "2.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mixxxdj";
|
||||
repo = "mixxx";
|
||||
rev = "release-${version}";
|
||||
sha256 = "1dj9li8av9b2kbm76jvvbdmihy1pyrw0s4xd7dd524wfhwr1llxr";
|
||||
rev = version;
|
||||
sha256 = "18sx4l3zzbn5142xfv5bp0crdd615a5728fkprqacnx3zpa144x6";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ sconsPackages.scons_3_1_2 ];
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
||||
buildInputs = [
|
||||
chromaprint fftw flac faad2 glibcLocales mp4v2 libid3tag libmad libopus libshout241 libsndfile
|
||||
libusb1 libvorbis libxcb libGLU lilv lv2 opusfile pkg-config portaudio portmidi protobuf qtbase qtscript qtsvg
|
||||
qtx11extras rubberband sqlite taglib upower vamp-plugin-sdk
|
||||
chromaprint
|
||||
faad2
|
||||
ffmpeg
|
||||
fftw
|
||||
flac
|
||||
glibcLocales
|
||||
hidapi
|
||||
lame
|
||||
libebur128
|
||||
libGLU
|
||||
libid3tag
|
||||
libkeyfinder
|
||||
libmad
|
||||
libmodplug
|
||||
libopus
|
||||
libsecret
|
||||
libshout
|
||||
libsndfile
|
||||
libusb1
|
||||
libvorbis
|
||||
libxcb
|
||||
lilv
|
||||
lv2
|
||||
mp4v2
|
||||
opusfile
|
||||
pcre
|
||||
portaudio
|
||||
portmidi
|
||||
protobuf
|
||||
qtbase
|
||||
qtkeychain
|
||||
qtscript
|
||||
qtsvg
|
||||
qtx11extras
|
||||
rubberband
|
||||
serd
|
||||
sord
|
||||
soundtouch
|
||||
sratom
|
||||
sqlite
|
||||
taglib
|
||||
upower
|
||||
vamp-plugin-sdk
|
||||
wavpack
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
sconsFlags = [
|
||||
"build=release"
|
||||
"qtdir=${qtbase}"
|
||||
"faad=1"
|
||||
"opus=1"
|
||||
];
|
||||
|
||||
qtWrapperArgs = [
|
||||
"--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive"
|
||||
];
|
||||
|
@ -52,7 +120,7 @@ mkDerivation rec {
|
|||
homepage = "https://mixxx.org";
|
||||
description = "Digital DJ mixing software";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = [ maintainers.goibhniu maintainers.bfortz ];
|
||||
maintainers = with maintainers; [ goibhniu bfortz ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,26 +1,29 @@
|
|||
{ stdenv, lib, config, fetchFromGitHub, cmake, pkg-config
|
||||
, alsaSupport ? stdenv.isLinux, alsa-lib
|
||||
, pulseSupport ? config.pulseaudio or stdenv.isLinux, libpulseaudio
|
||||
, jackSupport ? false, libjack2
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "scream";
|
||||
version = "3.6";
|
||||
version = "3.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "duncanthrax";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "01k2zhfb781gfj3apmcjqbm5m05m6pvnh7fb5k81zwvqibai000v";
|
||||
sha256 = "0d9abrw62cd08lcg4il415b7ap89iggbljvbl5jqv2y23il0pvyz";
|
||||
};
|
||||
|
||||
buildInputs = lib.optional pulseSupport libpulseaudio
|
||||
++ lib.optional jackSupport libjack2
|
||||
++ lib.optional alsaSupport alsa-lib;
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DPULSEAUDIO_ENABLE=${if pulseSupport then "ON" else "OFF"}"
|
||||
"-DALSA_ENABLE=${if alsaSupport then "ON" else "OFF"}"
|
||||
"-DJACK_ENABLE=${if jackSupport then "ON" else "OFF"}"
|
||||
];
|
||||
|
||||
cmakeDir = "../Receivers/unix";
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "spotify-tui";
|
||||
version = "0.23.0";
|
||||
version = "0.24.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Rigellute";
|
||||
repo = "spotify-tui";
|
||||
rev = "v${version}";
|
||||
sha256 = "082y5m2vglzx9kdc2088zynz0njcnljnb0y170igmlsxq9wkrgg2";
|
||||
sha256 = "1vi6b22ygi6nwydjwqirph9k18akbw81m3bci134nrbnrb30glla";
|
||||
};
|
||||
|
||||
cargoSha256 = "1khn6fx13qlfpqwnw7ysgan5h4nrg2qnzn2p74vn7jic3mqc3sax";
|
||||
cargoSha256 = "1l91xcgr3hcjaphns1hs0i8w1ynxqwx7rbgpl0i5xnyrkw0gn9lj";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ] ++ lib.optionals stdenv.isLinux [ pkg-config python3 ];
|
||||
buildInputs = [ ]
|
||||
|
|
41
pkgs/applications/backup/restique/default.nix
Normal file
41
pkgs/applications/backup/restique/default.nix
Normal file
|
@ -0,0 +1,41 @@
|
|||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitea
|
||||
, cmake
|
||||
, libsecret
|
||||
, qtkeychain
|
||||
, restic
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "restique";
|
||||
version = "unstable-2021-05-03";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "git.srcbox.net";
|
||||
owner = "stefan";
|
||||
repo = "restique";
|
||||
rev = "f83ea63c2e2f2a41e845f54c7fe2c391a528a121";
|
||||
sha256 = "0j1qihv7hd90xkfm4ksv74q6m7cq781fbdnc3l4spcd7h2p8lh0z";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libsecret
|
||||
qtkeychain
|
||||
];
|
||||
|
||||
qtWrapperArgs = [
|
||||
"--prefix" "PATH" ":" (lib.makeBinPath [ restic ])
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Restic GUI for Desktop/Laptop Backups";
|
||||
homepage = "https://git.srcbox.net/stefan/restique";
|
||||
license = with licenses; [ gpl3Plus cc-by-sa-40 cc0 ];
|
||||
maintainers = with maintainers; [ dotlambda ];
|
||||
};
|
||||
}
|
99
pkgs/applications/blockchains/bisq-desktop/default.nix
Normal file
99
pkgs/applications/blockchains/bisq-desktop/default.nix
Normal file
|
@ -0,0 +1,99 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, makeWrapper
|
||||
, fetchurl
|
||||
, makeDesktopItem
|
||||
, copyDesktopItems
|
||||
, imagemagick
|
||||
, openjdk11
|
||||
, dpkg
|
||||
, writeScript
|
||||
, coreutils
|
||||
, bash
|
||||
, tor
|
||||
, psmisc
|
||||
}:
|
||||
let
|
||||
bisq-launcher = writeScript "bisq-launcher" ''
|
||||
#! ${bash}/bin/bash
|
||||
|
||||
# Setup a temporary Tor instance
|
||||
TMPDIR=$(${coreutils}/bin/mktemp -d)
|
||||
CONTROLPORT=$(${coreutils}/bin/shuf -i 9100-9499 -n 1)
|
||||
SOCKSPORT=$(${coreutils}/bin/shuf -i 9500-9999 -n 1)
|
||||
${coreutils}/bin/head -c 1024 < /dev/urandom > $TMPDIR/cookie
|
||||
|
||||
${tor}/bin/tor --SocksPort $SOCKSPORT --ControlPort $CONTROLPORT \
|
||||
--ControlPortWriteToFile $TMPDIR/port --CookieAuthFile $TMPDIR/cookie \
|
||||
--CookieAuthentication 1 >$TMPDIR/tor.log --RunAsDaemon 1
|
||||
|
||||
torpid=$(${psmisc}/bin/fuser $CONTROLPORT/tcp)
|
||||
|
||||
echo Temp directory: $TMPDIR
|
||||
echo Tor PID: $torpid
|
||||
echo Tor control port: $CONTROLPORT
|
||||
echo Tor SOCKS port: $SOCKSPORT
|
||||
echo Tor log: $TMPDIR/tor.log
|
||||
echo Bisq log file: $TMPDIR/bisq.log
|
||||
|
||||
JAVA_TOOL_OPTIONS="-XX:MaxRAM=4g" bisq-desktop-wrapped \
|
||||
--torControlCookieFile=$TMPDIR/cookie \
|
||||
--torControlUseSafeCookieAuth \
|
||||
--torControlPort $CONTROLPORT "$@" > $TMPDIR/bisq.log
|
||||
|
||||
echo Bisq exited. Killing Tor...
|
||||
kill $torpid
|
||||
'';
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.7.0";
|
||||
pname = "bisq-desktop";
|
||||
nativeBuildInputs = [ makeWrapper copyDesktopItems dpkg ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/bisq-network/bisq/releases/download/v${version}/Bisq-64bit-${version}.deb";
|
||||
sha256 = "0crry5k7crmrqn14wxiyrnhk09ac8a9ksqrwwky7jsnyah0bx5k4";
|
||||
};
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "Bisq";
|
||||
exec = "bisq-desktop";
|
||||
icon = "bisq";
|
||||
desktopName = "Bisq";
|
||||
genericName = "Decentralized bitcoin exchange";
|
||||
categories = "Network;Utility;";
|
||||
})
|
||||
];
|
||||
|
||||
unpackPhase = ''
|
||||
dpkg -x $src .
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/lib $out/bin
|
||||
cp opt/bisq/lib/app/desktop-${version}-all.jar $out/lib
|
||||
|
||||
makeWrapper ${openjdk11}/bin/java $out/bin/bisq-desktop-wrapped \
|
||||
--add-flags "-jar $out/lib/desktop-${version}-all.jar bisq.desktop.app.BisqAppMain"
|
||||
|
||||
makeWrapper ${bisq-launcher} $out/bin/bisq-desktop \
|
||||
--prefix PATH : $out/bin
|
||||
|
||||
copyDesktopItems
|
||||
|
||||
for n in 16 24 32 48 64 96 128 256; do
|
||||
size=$n"x"$n
|
||||
${imagemagick}/bin/convert opt/bisq/lib/Bisq.png -resize $size bisq.png
|
||||
install -Dm644 -t $out/share/icons/hicolor/$size/apps bisq.png
|
||||
done;
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A decentralized bitcoin exchange network";
|
||||
homepage = "https://bisq.network";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ juaningan emmanuelrosa ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
let
|
||||
pname = "ledger-live-desktop";
|
||||
version = "2.26.1";
|
||||
version = "2.29.0";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/LedgerHQ/${pname}/releases/download/v${version}/${pname}-${version}-linux-x86_64.AppImage";
|
||||
sha256 = "0zbzqq3c0q45dz4vvgfbvqcgda7413mnwixi7yi78qb9mp8zxkhy";
|
||||
sha256 = "1y4xvnwh2mqbc39pmnpgjg8mlx208s2pipm7dazq4bgmay7k9zh0";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
|
|
|
@ -7,16 +7,16 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "polkadot";
|
||||
version = "0.9.6";
|
||||
version = "0.9.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "paritytech";
|
||||
repo = "polkadot";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-waoNCEGHFjY91ted4oBtwxW6/beqW/8IwRIE4rG+fKQ=";
|
||||
sha256 = "sha256-swPLJIcm8XD0+/e9pGK2bDqUb7AS/5FdQ3A7Ceh5dZc=";
|
||||
};
|
||||
|
||||
cargoSha256 = "17c45xi1wr77jbkcl1mkxflc8f9hilil02c43fihvlh2lm8kcs5j";
|
||||
cargoSha256 = "sha256-4njx8T3kzyN63Jo0aHee5ImqcObiADvi+dHKWcRmbQw=";
|
||||
|
||||
nativeBuildInputs = [ clang ];
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ appimageTools.wrapType2 rec {
|
|||
install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png
|
||||
install -m 444 -D ${appimageContents}/resources/images/icons/512x512.png $out/share/icons/hicolor/512x512/apps/${pname}.png
|
||||
substituteInPlace $out/share/applications/${pname}.desktop \
|
||||
--replace 'Exec=AppRun' 'Exec=${pname}'
|
||||
--replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname}'
|
||||
|
||||
# symlink system binaries instead bundled ones
|
||||
mkdir -p $out/share/${pname}/resources/bin/{bridge,tor}
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
{ lib, trivialBuild, fetchurl }:
|
||||
|
||||
trivialBuild rec {
|
||||
pname = "ebuild-mode";
|
||||
version = "1.52";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://dev.gentoo.org/~ulm/emacs/ebuild-mode-${version}.tar.xz";
|
||||
sha256 = "10nikbbwh612qlnms2i31963a0h3ccyg85vrxlizdpsqs4cjpg6h";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Major modes for Gentoo package files";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ qyliss ];
|
||||
};
|
||||
}
|
|
@ -199,6 +199,8 @@
|
|||
|
||||
# Packages made the classical callPackage way
|
||||
|
||||
ebuild-mode = callPackage ./ebuild-mode { };
|
||||
|
||||
emacspeak = callPackage ./emacspeak { };
|
||||
|
||||
ess-R-object-popup = callPackage ./ess-R-object-popup { };
|
||||
|
|
|
@ -1,20 +1,36 @@
|
|||
{ lib, stdenv, mkDerivation, fetchFromGitHub, qmake, pkg-config, qttools, qtwebengine, hunspell }:
|
||||
{ lib
|
||||
, stdenv
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, qmake
|
||||
, pkg-config
|
||||
, qttools
|
||||
, qtwebengine
|
||||
, hunspell
|
||||
, cmark
|
||||
, multimarkdown
|
||||
, pandoc
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "ghostwriter";
|
||||
version = "2.0.1";
|
||||
version = "2.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wereturtle";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-bNVhYwX60F3lrP9UmZSntfz83vbmHe9tu/4nUgzUWR4=";
|
||||
sha256 = "sha256-kNt0IIAcblDJ81ENIkoJuJvrI+F+fdVgWUJ6g1YpjqU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake pkg-config qttools ];
|
||||
|
||||
buildInputs = [ qtwebengine hunspell ];
|
||||
|
||||
qtWrapperArgs = [
|
||||
"--prefix" "PATH" ":" (lib.makeBinPath [ cmark multimarkdown pandoc ])
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A cross-platform, aesthetic, distraction-free Markdown editor";
|
||||
homepage = src.meta.homepage;
|
||||
|
|
|
@ -5,16 +5,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "gophernotes";
|
||||
version = "0.7.2";
|
||||
version = "0.7.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gopherdata";
|
||||
repo = "gophernotes";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-EEMKV+k5qcep4z7J5r1nSLxmb0fbfpJOPmz5bE91cd8=";
|
||||
sha256 = "sha256-LiYPos6Ic+se5bTTkvggmyxyS20uhgALkDU2LoXTci8=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-Wy4HcPlrlYUjRQHhw+UPAa+Rn1FvJobWGxgFiJKJTAg=";
|
||||
vendorSha256 = "sha256-wDMx3B47Vv87/3YEPX8/70Q5/REJ7IPvw8dA/viJiSY=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Go kernel for Jupyter notebooks";
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "greenfoot";
|
||||
version = "3.6.1";
|
||||
version = "3.7.0";
|
||||
src = fetchurl {
|
||||
# We use the deb here. First instinct might be to go for the "generic" JAR
|
||||
# download, but that is actually a graphical installer that is much harder
|
||||
# to unpack than the deb.
|
||||
url = "https://www.greenfoot.org/download/files/Greenfoot-linux-${builtins.replaceStrings ["."] [""] version}.deb";
|
||||
sha256 = "112h6plpclj8kbv093m4pcczljhpd8d47d7a2am1yfgbyckx6hf0";
|
||||
sha256 = "sha256-K9faU3ZarcR4g8riHpoZYVH0sXtueqfm3Fo+sZAHJA8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
|
25
pkgs/applications/editors/helix/default.nix
Normal file
25
pkgs/applications/editors/helix/default.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{ fetchFromGitHub, lib, rustPlatform }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "helix";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "helix-editor";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "sha256-dI5yIP5uUmM9pyMpvvdrk8/0jE/REkU/m9BF081LwMU=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-l3Ikr4IyUsHItJIC4BaIZZb6vio3bchumbbPI+nxIjQ=";
|
||||
|
||||
cargoBuildFlags = [ "--features embed_runtime" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A post-modern modal text editor";
|
||||
homepage = "https://helix-editor.com";
|
||||
license = licenses.mpl20;
|
||||
maintainers = with maintainers; [ yusdacra ];
|
||||
};
|
||||
}
|
|
@ -16,6 +16,7 @@
|
|||
, makeFontsConf
|
||||
, libglvnd
|
||||
, libxkbcommon
|
||||
, wayland
|
||||
, xorg
|
||||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
|
@ -86,7 +87,7 @@ rustPlatform.buildRustPackage rec {
|
|||
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/neovide \
|
||||
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libglvnd libxkbcommon xorg.libXcursor xorg.libXext xorg.libXrandr xorg.libXi ]}
|
||||
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libglvnd libxkbcommon wayland xorg.libXcursor xorg.libXext xorg.libXrandr xorg.libXi ]}
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
|
|
|
@ -10,6 +10,9 @@
|
|||
# Attributes inherit from specific versions
|
||||
, version, src, meta, sourceRoot
|
||||
, executableName, longName, shortName, pname, updateScript
|
||||
# sourceExecutableName is the name of the binary in the source archive, over
|
||||
# which we have no control
|
||||
, sourceExecutableName ? executableName
|
||||
}:
|
||||
|
||||
let
|
||||
|
@ -77,12 +80,12 @@ let
|
|||
'' + (if system == "x86_64-darwin" then ''
|
||||
mkdir -p "$out/Applications/${longName}.app" $out/bin
|
||||
cp -r ./* "$out/Applications/${longName}.app"
|
||||
ln -s "$out/Applications/${longName}.app/Contents/Resources/app/bin/${executableName}" $out/bin/${executableName}
|
||||
ln -s "$out/Applications/${longName}.app/Contents/Resources/app/bin/${sourceExecutableName}" $out/bin/${executableName}
|
||||
'' else ''
|
||||
mkdir -p $out/lib/vscode $out/bin
|
||||
cp -r ./* $out/lib/vscode
|
||||
|
||||
ln -s $out/lib/vscode/bin/${executableName} $out/bin
|
||||
ln -s $out/lib/vscode/bin/${sourceExecutableName} $out/bin/${executableName}
|
||||
|
||||
mkdir -p $out/share/applications
|
||||
ln -s $desktopItem/share/applications/${executableName}.desktop $out/share/applications/${executableName}.desktop
|
||||
|
|
|
@ -25,6 +25,7 @@ in
|
|||
version = "1.57.1";
|
||||
pname = "vscode";
|
||||
|
||||
sourceExecutableName = "code";
|
||||
executableName = "code" + lib.optionalString isInsiders "-insiders";
|
||||
longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
|
||||
shortName = "Code" + lib.optionalString isInsiders " - Insiders";
|
||||
|
|
|
@ -77,12 +77,12 @@ in mkDerivation rec {
|
|||
# build to use PYQT5_SIP_DIR consistently.
|
||||
postPatch = ''
|
||||
substituteInPlace cmake/FindPyQt5.py \
|
||||
--replace 'sip_dir = cfg.default_sip_dir' 'sip_dir = "${python3Packages.pyqt5}/share/sip/PyQt5"'
|
||||
--replace 'sip_dir = cfg.default_sip_dir' 'sip_dir = "${python3Packages.pyqt5}/${python3Packages.python.sitePackages}/PyQt5/bindings"'
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_SKIP_BUILD_RPATH=OFF"
|
||||
"-DPYQT5_SIP_DIR=${python3Packages.pyqt5}/share/sip/PyQt5"
|
||||
"-DPYQT5_SIP_DIR=${python3Packages.pyqt5}/${python3Packages.python.sitePackages}/PyQt5/bindings"
|
||||
"-DQSCI_SIP_DIR=${python3Packages.qscintilla-qt5}/share/sip/PyQt5"
|
||||
] ++ lib.optional (!withWebKit) "-DWITH_QTWEBKIT=OFF"
|
||||
++ lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}";
|
||||
|
|
|
@ -16,13 +16,13 @@ in
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "imagemagick";
|
||||
version = "6.9.12-16";
|
||||
version = "6.9.12-17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ImageMagick";
|
||||
repo = "ImageMagick6";
|
||||
rev = version;
|
||||
sha256 = "sha256-kg8vt88G6huRbJlVYztKxHiFPhGz/QHuNKtbhmai790=";
|
||||
sha256 = "sha256-yZXvxl9Tbl3JRBmRcfsjbkaxywtD08SuUnJayKfwk9M=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "dev" "doc" ]; # bin/ isn't really big
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "avocode";
|
||||
version = "4.14.3";
|
||||
version = "4.15.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://media.avocode.com/download/avocode-app/${version}/avocode-${version}-linux.zip";
|
||||
sha256 = "sha256-6OEgSnW96jufc/Z+B17ghtAbj9SLulue26ffKREGzbY=";
|
||||
sha256 = "sha256-Au1m7CfZkeOczcO/JvIzyVCp6Gn/nhSq0yJOdP8i+0w=";
|
||||
};
|
||||
|
||||
libPath = lib.makeLibraryPath (with xorg; [
|
||||
|
|
|
@ -1,48 +1,74 @@
|
|||
{ lib, stdenv, fetchurl, jre, unzip, makeWrapper }:
|
||||
|
||||
# Note:
|
||||
# - User config dir is hard coded by upstream to $HOME/.imagej on linux systems
|
||||
# and to $HOME/Library/Preferences on macOS.
|
||||
# (The current trend appears to be to use $HOME/.config/imagej
|
||||
# on linux systems, but we here do not attempt to fix it.)
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, jre
|
||||
, unzip
|
||||
, makeWrapper
|
||||
, makeDesktopItem
|
||||
, copyDesktopItems
|
||||
}:
|
||||
|
||||
let
|
||||
imagej150 = stdenv.mkDerivation {
|
||||
pname = "imagej";
|
||||
version = "150";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://wsr.imagej.net/distros/cross-platform/ij150.zip";
|
||||
sha256 = "97aba6fc5eb908f5160243aebcdc4965726693cb1353d9c0d71b8f5dd832cb7b";
|
||||
};
|
||||
nativeBuildInputs = [ makeWrapper unzip ];
|
||||
inherit jre;
|
||||
|
||||
# JAR files that are intended to be used by other packages
|
||||
# should go to $out/share/java.
|
||||
# (Some uses ij.jar as a library not as a standalone program.)
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/java
|
||||
# Read permisssion suffices for the jar and others.
|
||||
# Simple cp shall clear suid bits, if any.
|
||||
cp ij.jar $out/share/java
|
||||
cp -dR luts macros plugins $out/share
|
||||
mkdir $out/bin
|
||||
makeWrapper ${jre}/bin/java $out/bin/imagej \
|
||||
--add-flags "-jar $out/share/java/ij.jar -ijpath $out/share"
|
||||
'';
|
||||
meta = with lib; {
|
||||
homepage = "https://imagej.nih.gov/ij/";
|
||||
description = "Image processing and analysis in Java";
|
||||
longDescription = ''
|
||||
ImageJ is a public domain Java image processing program
|
||||
inspired by NIH Image for the Macintosh.
|
||||
It runs on any computer with a Java 1.4 or later virtual machine.
|
||||
'';
|
||||
license = licenses.publicDomain;
|
||||
platforms = with platforms; linux ++ darwin;
|
||||
maintainers = with maintainers; [ yuriaisaka ];
|
||||
};
|
||||
icon = fetchurl {
|
||||
url = "https://imagej.net/media/icons/imagej.png";
|
||||
sha256 = "sha256-nU2nWI1wxZB/xlOKsZzdUjj+qiCTjO6GwEKYgZ5Risg=";
|
||||
};
|
||||
in
|
||||
imagej150
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "imagej";
|
||||
version = "153";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://wsr.imagej.net/distros/cross-platform/ij${version}.zip";
|
||||
sha256 = "sha256-MGuUdUDuW3s/yGC68rHr6xxzmYScUjdXRawDpc1UQqw=";
|
||||
};
|
||||
nativeBuildInputs = [ copyDesktopItems makeWrapper unzip ];
|
||||
desktopItems = lib.optionals stdenv.isLinux [
|
||||
(makeDesktopItem {
|
||||
name = "ImageJ";
|
||||
desktopName = "ImageJ";
|
||||
icon = "imagej";
|
||||
categories = "Science;Utility;Graphics;";
|
||||
exec = "imagej";
|
||||
})
|
||||
];
|
||||
|
||||
passthru = {
|
||||
inherit jre;
|
||||
};
|
||||
|
||||
# JAR files that are intended to be used by other packages
|
||||
# should go to $out/share/java.
|
||||
# (Some uses ij.jar as a library not as a standalone program.)
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/share/java $out/bin
|
||||
# Read permisssion suffices for the jar and others.
|
||||
# Simple cp shall clear suid bits, if any.
|
||||
cp ij.jar $out/share/java
|
||||
cp -dR luts macros plugins $out/share
|
||||
makeWrapper ${jre}/bin/java $out/bin/imagej \
|
||||
--add-flags "-jar $out/share/java/ij.jar -ijpath $out/share"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postFixup = lib.optionalString stdenv.isLinux ''
|
||||
install -Dm644 ${icon} $out/share/icons/hicolor/128x128/apps/imagej.png
|
||||
substituteInPlace $out/share/applications/ImageJ.desktop \
|
||||
--replace Exec=imagej Exec=$out/bin/imagej
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://imagej.nih.gov/ij/";
|
||||
description = "Image processing and analysis in Java";
|
||||
longDescription = ''
|
||||
ImageJ is a public domain Java image processing program
|
||||
inspired by NIH Image for the Macintosh.
|
||||
It runs on any computer with a Java 1.4 or later virtual machine.
|
||||
'';
|
||||
license = licenses.publicDomain;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ yuriaisaka ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -32,8 +32,8 @@ mkDerivation rec {
|
|||
++ lib.optional stdenv.cc.isGNU "-Wno-deprecated-copy";
|
||||
|
||||
cmakeFlags = [
|
||||
"-DPYQT5_SIP_DIR=${python3Packages.pyqt5}/share/sip/PyQt5"
|
||||
"-DPYQT_SIP_DIR_OVERRIDE=${python3Packages.pyqt5}/share/sip/PyQt5"
|
||||
"-DPYQT5_SIP_DIR=${python3Packages.pyqt5}/${python3Packages.python.sitePackages}/PyQt5/bindings"
|
||||
"-DPYQT_SIP_DIR_OVERRIDE=${python3Packages.pyqt5}/${python3Packages.python.sitePackages}/PyQt5/bindings"
|
||||
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
||||
];
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ python3Packages.buildPythonApplication rec {
|
|||
sha256 = "4ClgYwiU21wHDve2q9cItSAVb9hbR2F+fJc8znGI8OA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ wrapQtAppsHook python3Packages.sip ];
|
||||
nativeBuildInputs = [ wrapQtAppsHook python3Packages.sip_4 ];
|
||||
|
||||
buildInputs = [ qtbase ];
|
||||
|
||||
|
@ -25,21 +25,21 @@ python3Packages.buildPythonApplication rec {
|
|||
wrapQtApp "$out/bin/veusz"
|
||||
'';
|
||||
|
||||
# For some reason, if sip5 is found on the PATH, the option --sip-dir is
|
||||
# ignored in setupPyBuildFlags, see
|
||||
# https://github.com/veusz/veusz/blob/53b99dffa999f2bc41fdc5335d7797ae857c761f/pyqtdistutils.py#L292
|
||||
# Since sip 6 (we use sip 4 here, but pyqt5 is built with sip 6), sip files are
|
||||
# placed in a different directory layout and --sip-dir won't work anymore.
|
||||
# --sip-dir expects a directory with a PyQt5 subdirectory (where sip files are located),
|
||||
# but the new directory layout places sip files in a subdirectory named 'bindings'.
|
||||
# To workaround this, we patch the full path into pyqtdistutils.py.
|
||||
postPatch = ''
|
||||
substituteInPlace pyqtdistutils.py \
|
||||
--replace "'-I', pyqt5_include_dir," "'-I', '${python3Packages.pyqt5}/share/sip/PyQt5',"
|
||||
--replace "'-I', pyqt5_include_dir," "'-I', '${python3Packages.pyqt5}/${python3Packages.python.sitePackages}/PyQt5/bindings',"
|
||||
patchShebangs tests/runselftest.py
|
||||
'';
|
||||
|
||||
# you can find these options at
|
||||
# https://github.com/veusz/veusz/blob/53b99dffa999f2bc41fdc5335d7797ae857c761f/pyqtdistutils.py#L71
|
||||
# --sip-dir cannot be used here for the reasons explained above
|
||||
setupPyBuildFlags = [
|
||||
# --sip-dir does nothing here, but it should be the correct way to set the
|
||||
# sip_dir, so I'm leaving it here for future versions
|
||||
"--sip-dir=${python3Packages.pyqt5}/share/sip"
|
||||
"--qt-include-dir=${qtbase.dev}/include"
|
||||
# veusz tries to find a libinfix and fails without one
|
||||
# but we simply don't need a libinfix, so set it to empty here
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{ buildGoModule, fetchFromGitHub, installShellFiles, lib }:
|
||||
|
||||
let
|
||||
humioCtlVersion = "0.28.3";
|
||||
sha256 = "sha256-GUn5hg4gPGjQ6U2dboGE22u8XuZ578+EnkmHLASXd3Q=";
|
||||
humioCtlVersion = "0.28.4";
|
||||
sha256 = "sha256-X2pc15InfCzVbZ2fmBdr+GKgOySIruA1yD61HcLO164=";
|
||||
vendorSha256 = "sha256-867x33Aq27D2m14NqqsdByC39pjjyJZbfX3jmwVU2yo=";
|
||||
in buildGoModule {
|
||||
name = "humioctl-${humioCtlVersion}";
|
||||
|
|
|
@ -41,7 +41,7 @@ mkDerivation rec {
|
|||
++ lib.optional (!unrarSupport) ./dont_build_unrar_plugin.patch;
|
||||
|
||||
prePatch = ''
|
||||
sed -i "s@\[tool.sip.project\]@[tool.sip.project]\nsip-include-dirs = [\"${python3Packages.pyqt5}/share/sip/PyQt5\"]@g" \
|
||||
sed -i "s@\[tool.sip.project\]@[tool.sip.project]\nsip-include-dirs = [\"${python3Packages.pyqt5}/${python3Packages.python.sitePackages}/PyQt5/bindings\"]@g" \
|
||||
setup/build.py
|
||||
sed -i "s/\[tool.sip.bindings.pictureflow\]/[tool.sip.bindings.pictureflow]\ntags = [\"${python3Packages.sip.platform_tag}\"]/g" \
|
||||
setup/build.py
|
||||
|
|
|
@ -19,13 +19,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cherrytree";
|
||||
version = "0.99.37";
|
||||
version = "0.99.38";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "giuspen";
|
||||
repo = "cherrytree";
|
||||
rev = version;
|
||||
sha256 = "1a2scwjrjijxwyfpqih23zzay3yqhyzpxnp66388fcir1cmp8zih";
|
||||
sha256 = "sha256-04MRw6pMtJGxTMKwOzPNGg1T85SfVY5bMkF3gt2V0e0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -7,18 +7,18 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "expenses";
|
||||
version = "0.2.1";
|
||||
version = "0.2.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "manojkarthick";
|
||||
repo = "expenses";
|
||||
rev = "v${version}";
|
||||
sha256 = "11wxaqbnrrg0rykx5905chi6rhmai1nqggdbhh6hiappr5rksl0j";
|
||||
sha256 = "sha256-CaIbLtP7ziv9UBQE+QsNnqX65OV+6GIvkLwKm1G++iY=";
|
||||
};
|
||||
|
||||
vendorSha256 = "1kwj63wl4kb16zl3lmi9bzj1az7vi453asdy52na0mjx4ymmjyk1";
|
||||
vendorSha256 = "sha256-NWTFxF4QCH1q1xx+hmVmpvDeOlqH5Ai2+0ParE5px9M=";
|
||||
|
||||
# package does not contain any tests as of v0.2.1
|
||||
# package does not contain any tests as of v0.2.2
|
||||
doCheck = false;
|
||||
|
||||
buildInputs = [ sqlite ];
|
||||
|
|
|
@ -1,20 +1,28 @@
|
|||
{ lib, stdenv, fetchFromGitHub, rustPlatform, libiconv }:
|
||||
{ lib, stdenv, fetchFromGitHub, rustPlatform, libiconv, installShellFiles }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "flavours";
|
||||
version = "0.4.0";
|
||||
version = "0.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Misterio77";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-rDy859jg+F8XC4sJogIgdn1FoT8cf7S+KORt+7kboAc=";
|
||||
sha256 = "1bgi6p7l0bh9k4vkwvngk7q19ynia0z1ninb1cq8qnwwpll6kbya";
|
||||
};
|
||||
|
||||
buildInputs = [ ]
|
||||
++ lib.optionals stdenv.isDarwin [ libiconv ];
|
||||
buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
|
||||
|
||||
cargoSha256 = "sha256-I8ZH35L2CVLy6ypmdOPd8VEG/sQeGaHyT1HWNdwyZVo=";
|
||||
cargoSha256 = "07hwxhfcbqbwb3hz18w92h1lhdiwwy7abhwpimzx7syyavp4rmn4";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
postInstall = ''
|
||||
installShellCompletion --cmd flavours \
|
||||
--zsh <($out/bin/flavours --completions zsh) \
|
||||
--fish <($out/bin/flavours --completions fish) \
|
||||
--bash <($out/bin/flavours --completions bash)
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "An easy to use base16 scheme manager/builder that integrates with any workflow";
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "fuzzel";
|
||||
version = "1.5.4";
|
||||
version = "1.6.0";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://codeberg.org/dnkl/fuzzel/archive/${version}.tar.gz";
|
||||
sha256 = "sha256-Zg9KrRf2ntg2FU6lhllt/Fd63KJak6zB7hu4ujj/9AI=";
|
||||
sha256 = "sha256-iTpUWvQszDtNc1gDqkPbhvgUVNWydpivhnOCHMJVtSw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config meson ninja scdoc git ];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ callPackage, buildFHSUserEnv, undaemonize }:
|
||||
{ callPackage, buildFHSUserEnv, undaemonize, unwrapped ? callPackage ./runtime.nix {} }:
|
||||
|
||||
let
|
||||
houdini-runtime = callPackage ./runtime.nix { };
|
||||
|
@ -9,6 +9,10 @@ in buildFHSUserEnv {
|
|||
mkdir -p $out/usr/lib/sesi
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
unwrapped = houdini-runtime;
|
||||
};
|
||||
|
||||
runScript = "${undaemonize}/bin/undaemonize ${houdini-runtime}/bin/houdini";
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
{ lib, stdenv, requireFile, zlib, libpng, libSM, libICE, fontconfig, xorg, libGLU, libGL, alsa-lib, dbus, xkeyboardconfig, bc, addOpenGLRunpath }:
|
||||
{ lib, stdenv, requireFile, zlib, libpng, libSM, libICE, fontconfig, xorg, libGLU, libGL, alsa-lib
|
||||
, dbus, xkeyboardconfig, nss, nspr, expat, pciutils, libxkbcommon, bc, addOpenGLRunpath
|
||||
}:
|
||||
|
||||
let
|
||||
# NOTE: Some dependencies only show in errors when run with QT_DEBUG_PLUGINS=1
|
||||
ld_library_path = builtins.concatStringsSep ":" [
|
||||
"${stdenv.cc.cc.lib}/lib64"
|
||||
(lib.makeLibraryPath [
|
||||
|
@ -17,6 +20,8 @@ let
|
|||
xorg.libXcomposite
|
||||
xorg.libXdamage
|
||||
xorg.libXtst
|
||||
xorg.libxcb
|
||||
xorg.libXScrnSaver
|
||||
alsa-lib
|
||||
fontconfig
|
||||
libSM
|
||||
|
@ -25,26 +30,22 @@ let
|
|||
libpng
|
||||
dbus
|
||||
addOpenGLRunpath.driverLink
|
||||
nss
|
||||
nspr
|
||||
expat
|
||||
pciutils
|
||||
libxkbcommon
|
||||
])
|
||||
];
|
||||
license_dir = "~/.config/houdini";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
version = "17.5.327";
|
||||
version = "18.0.460";
|
||||
pname = "houdini-runtime";
|
||||
src = requireFile rec {
|
||||
name = "houdini-${version}-linux_x86_64_gcc6.3.tar.gz";
|
||||
sha256 = "1byigmhmby8lgi2vmgxy9jlrrqk7jyr507zqkihq5bv8kfsanv1x";
|
||||
message = ''
|
||||
This nix expression requires that ${name} is already part of the store.
|
||||
Download it from https://www.sidefx.com and add it to the nix store with:
|
||||
|
||||
nix-prefetch-url <URL>
|
||||
|
||||
This can't be done automatically because you need to create an account on
|
||||
their website and agree to their license terms before you can download
|
||||
it. That's what you get for using proprietary software.
|
||||
'';
|
||||
sha256 = "18rbwszcks2zfn9zbax62rxmq50z9mc3h39b13jpd39qjqdd3jsd";
|
||||
url = meta.homepage;
|
||||
};
|
||||
|
||||
buildInputs = [ bc ];
|
||||
|
@ -82,7 +83,6 @@ stdenv.mkDerivation rec {
|
|||
license = lib.licenses.unfree;
|
||||
platforms = lib.platforms.linux;
|
||||
hydraPlatforms = [ ]; # requireFile src's should be excluded
|
||||
maintainers = [ lib.maintainers.canndrew ];
|
||||
maintainers = with lib.maintainers; [ canndrew kwohlfahrt ];
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "hugo";
|
||||
version = "0.84.1";
|
||||
version = "0.84.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gohugoio";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-ULZa0tepq00v2VHDR3+aYYvRfbxYKcjcltRgRmbVmRA=";
|
||||
sha256 = "sha256-3SbF4JsanNup0JmtEoZlyu3SvMn01r+nhnPgIi/W8pA=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-jY/g92ON5OxjuZzPHJNduXYMgPU8/0ioAYvp4iqjGnU=";
|
||||
vendorSha256 = "sha256-ImXTOtN6kQL7Q8IBlmK7+i47cWtyZT0xcnQdCw3NvWM=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{ lib, stdenv, fetchurl, copyDesktopItems, makeDesktopItem, unzip, jre8 }:
|
||||
{ lib, stdenv, fetchurl, copyDesktopItems, makeDesktopItem, unzip, jre8
|
||||
, logOutput ? false
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "jquake";
|
||||
|
@ -14,10 +16,9 @@ stdenv.mkDerivation rec {
|
|||
sourceRoot = ".";
|
||||
|
||||
postPatch = ''
|
||||
# JQuake emits a lot of debug-like messages in console, but I
|
||||
# don't think it's in our interest to void them by default. Log them at
|
||||
# the appropriate level.
|
||||
sed -i "/^java/ s/$/\ | logger -p user.debug/" JQuake.sh
|
||||
# JQuake emits a lot of debug-like messages on stdout. Either drop the output
|
||||
# stream entirely or log them at 'user.debug' level.
|
||||
sed -i "/^java/ s/$/ ${if logOutput then "| logger -p user.debug" else "> \\/dev\\/null"}/" JQuake.sh
|
||||
|
||||
# By default, an 'errors.log' file is created in the current directory.
|
||||
# cd into a temporary directory and let it be created there.
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "logseq";
|
||||
version = "0.2.0";
|
||||
version = "0.2.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-linux-x64-${version}.AppImage";
|
||||
sha256 = "uFINB8WXFbtI/WMFvqirAygzwK7I/8+8YPeyCd+xQ5w=";
|
||||
sha256 = "03l5w0fg3laiz85k4g4w98ngaziyfr9s24xshjrfl71q6r9s813m";
|
||||
name = "${pname}-${version}.AppImage";
|
||||
};
|
||||
|
||||
|
|
57
pkgs/applications/misc/nwg-panel/default.nix
Normal file
57
pkgs/applications/misc/nwg-panel/default.nix
Normal file
|
@ -0,0 +1,57 @@
|
|||
{ lib, fetchFromGitHub
|
||||
, python3Packages, wrapGAppsHook, gobject-introspection
|
||||
, gtk-layer-shell, pango, gdk-pixbuf, atk
|
||||
# Extra packages called by various internal nwg-panel modules
|
||||
, sway # swaylock, swaymsg
|
||||
, systemd # systemctl
|
||||
, wlr-randr # wlr-randr
|
||||
, nwg-menu # nwg-menu
|
||||
, light # light
|
||||
, pamixer # pamixer
|
||||
, pulseaudio # pactl
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "nwg-panel";
|
||||
version = "0.3.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nwg-piotr";
|
||||
repo = "nwg-panel";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-x5lGVF6eRhOVXrsBatdsiUiWs/+FxRlCtp79zA206RY=";
|
||||
};
|
||||
|
||||
# No tests
|
||||
doCheck = false;
|
||||
|
||||
# Because of wrapGAppsHook
|
||||
strictDeps = false;
|
||||
dontWrapGApps = true;
|
||||
|
||||
buildInputs = [ atk gdk-pixbuf gtk-layer-shell pango ];
|
||||
nativeBuildInputs = [ wrapGAppsHook gobject-introspection ];
|
||||
propagatedBuildInputs = with python3Packages; [ i3ipc netifaces psutil pybluez pygobject3 ];
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/{applications,pixmaps}
|
||||
cp $src/nwg-panel-config.desktop $out/share/applications/
|
||||
cp $src/nwg-shell.svg $src/nwg-panel.svg $out/share/pixmaps/
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
makeWrapperArgs+=(
|
||||
"''${gappsWrapperArgs[@]}"
|
||||
--prefix XDG_DATA_DIRS : "$out/share"
|
||||
--prefix PATH : "${lib.makeBinPath [ light nwg-menu pamixer pulseaudio sway systemd wlr-randr ]}"
|
||||
)
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/nwg-piotr/nwg-panel";
|
||||
description = "GTK3-based panel for Sway window manager";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ berbiche ];
|
||||
};
|
||||
}
|
|
@ -44,6 +44,7 @@ let
|
|||
inherit version;
|
||||
sha256 = "63509b41d158ae5b7f67eb4ad20fecbb4eee99434e73e140354dc3ff8e09716f";
|
||||
};
|
||||
propagatedBuildInputs = [ self.six ];
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "openring";
|
||||
version = "unstable-2021-04-03";
|
||||
version = "unstable-2021-06-28";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~sircmpwn";
|
||||
repo = pname;
|
||||
rev = "f13edb5dfd882ce608d61cf6b6740650ce9d84a3";
|
||||
sha256 = "sha256-Z65V77JZ9jCzBg7T2+d5Agxxd+MV2R7nYcLedYP5eOE=";
|
||||
rev = "e566294050776355ca0d3bfd7a1f6f70767cd08b";
|
||||
sha256 = "sha256-h9Tout3KGiv6jbq9Ui3crb5NdTOHcn7BIy+aPoWG5sM=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-BbBTmkGyLrIWphXC+dBaHaVzHuXRZ+4N/Jt2k3nF7Z4=";
|
||||
|
|
|
@ -8,22 +8,22 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "reddsaver";
|
||||
version = "0.3.2";
|
||||
version = "0.3.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "manojkarthick";
|
||||
repo = "reddsaver";
|
||||
rev = "v${version}";
|
||||
sha256 = "0ffci3as50f55n1v36hji4n0b3lkch5ylc75awjz65jz2gd2y2j4";
|
||||
sha256 = "1czsy1bb0ja650sndwzq9rcbbhcci7s7ablw0agaynhi403shavv";
|
||||
};
|
||||
|
||||
cargoSha256 = "1xf26ldgfinzpakcp65w52fdl3arsm053vfnq7gk2fwnq55cjwl0";
|
||||
cargoSha256 = "0wr6y7mfffaqdh6i5nqhx692dih159121sm6k0i37wcdvxhvd51z";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ openssl ]
|
||||
++ lib.optional stdenv.isDarwin Security;
|
||||
|
||||
# package does not contain tests as of v0.3.2
|
||||
# package does not contain tests as of v0.3.3
|
||||
docCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sfm";
|
||||
version = "0.1";
|
||||
version = "0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "afify";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-i4WzYaJKityIt+LPWCbd6UsPBaYoaS397l5BInOXQQA=";
|
||||
hash = "sha256-DwXKrSqcebNI5N9REXyMV16W2kr72IH9+sKSVehc5zw=";
|
||||
};
|
||||
|
||||
configFile = lib.optionalString (conf!=null) (lib.writeText "config.def.h" conf);
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{ lib, buildGoModule, fetchFromGitHub, bash, go, python3, ruby }:
|
||||
{ lib, buildGoModule, fetchFromGitHub, bash, go, python3, ruby, sd }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "slides";
|
||||
version = "0.2.0";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "maaslalani";
|
||||
repo = "slides";
|
||||
rev = "v${version}";
|
||||
sha256 = "0vwpisyvsgmvrzp26hapghgqmm3fhrzrvdnmws00xc2q3fsij9qx";
|
||||
sha256 = "00sml6b9q3df9dgl7fpsn6a3qkq6xklnbfvvblf91xdf4ssn7wrx";
|
||||
};
|
||||
|
||||
checkInputs = [
|
||||
|
@ -16,6 +16,7 @@ buildGoModule rec {
|
|||
go
|
||||
python3
|
||||
ruby
|
||||
sd
|
||||
];
|
||||
|
||||
vendorSha256 = "0y6fz9rw702mji571k0gp4kpfx7xbv7rvlnmpfjygy6lmp7wga6f";
|
||||
|
|
|
@ -2,15 +2,13 @@
|
|||
, at-spi2-atk
|
||||
, at-spi2-core
|
||||
, atk
|
||||
, bash
|
||||
, autoPatchelfHook
|
||||
, cairo
|
||||
, coreutils
|
||||
, cups
|
||||
, curl
|
||||
, dbus
|
||||
, dnsmasq
|
||||
, dpkg
|
||||
, e2fsprogs
|
||||
, expat
|
||||
, fetchurl
|
||||
, gdk-pixbuf
|
||||
|
@ -20,25 +18,14 @@
|
|||
, iproute2
|
||||
, krb5
|
||||
, lib
|
||||
, mesa
|
||||
, libdrm
|
||||
, libX11
|
||||
, libXScrnSaver
|
||||
, libXcomposite
|
||||
, libXcursor
|
||||
, libXdamage
|
||||
, libXext
|
||||
, libXfixes
|
||||
, libXi
|
||||
, libXrandr
|
||||
, libXrender
|
||||
, libXtst
|
||||
, libxkbcommon
|
||||
, libsecret
|
||||
, libuuid
|
||||
, libxcb
|
||||
, libxkbcommon
|
||||
, lttng-ust
|
||||
, makeWrapper
|
||||
, mesa
|
||||
, networkmanager
|
||||
, nspr
|
||||
, nss
|
||||
|
@ -50,6 +37,7 @@
|
|||
, stdenv
|
||||
, systemd
|
||||
, xdg-utils
|
||||
, xorg
|
||||
, zlib
|
||||
}:
|
||||
with lib;
|
||||
|
@ -69,46 +57,48 @@ let
|
|||
gtk3
|
||||
icu
|
||||
krb5
|
||||
mesa
|
||||
libdrm
|
||||
libX11
|
||||
libXScrnSaver
|
||||
libXcomposite
|
||||
libXcursor
|
||||
libXdamage
|
||||
libXext
|
||||
libXfixes
|
||||
libXi
|
||||
libXrandr
|
||||
libXrender
|
||||
libXtst
|
||||
libxkbcommon
|
||||
libsecret
|
||||
libuuid
|
||||
libxcb
|
||||
libxkbcommon
|
||||
lttng-ust
|
||||
mesa
|
||||
nspr
|
||||
nss
|
||||
openssl
|
||||
pango
|
||||
stdenv.cc.cc
|
||||
systemd
|
||||
xorg.libX11
|
||||
xorg.libXScrnSaver
|
||||
xorg.libXcomposite
|
||||
xorg.libXcursor
|
||||
xorg.libXdamage
|
||||
xorg.libXext
|
||||
xorg.libXfixes
|
||||
xorg.libXi
|
||||
xorg.libXrandr
|
||||
xorg.libXrender
|
||||
xorg.libXtst
|
||||
xorg.libxkbfile
|
||||
xorg.libxshmfence
|
||||
zlib
|
||||
];
|
||||
rpath = lib.makeLibraryPath deps;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "appgate-sdp";
|
||||
version = "5.4.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://bin.appgate-sdp.com/${lib.versions.majorMinor version}/client/appgate-sdp_${version}_amd64.deb";
|
||||
url = "https://bin.appgate-sdp.com/${versions.majorMinor version}/client/appgate-sdp_${version}_amd64.deb";
|
||||
sha256 = "sha256-wAhcTRO/Cd4MG1lfPNDq92yGcu3NOfymucddy92VaXo=";
|
||||
};
|
||||
|
||||
# just patch interpreter
|
||||
autoPatchelfIgnoreMissingDeps = true;
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
enableParallelBuilding = true;
|
||||
|
||||
buildInputs = [
|
||||
python37
|
||||
|
@ -116,6 +106,7 @@ stdenv.mkDerivation rec {
|
|||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
makeWrapper
|
||||
dpkg
|
||||
];
|
||||
|
@ -125,62 +116,39 @@ stdenv.mkDerivation rec {
|
|||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
ln -s "$out/opt/appgate/appgate" "$out/bin/appgate"
|
||||
cp -r $out/usr/share $out/share
|
||||
|
||||
for file in $out/opt/appgate/linux/appgate-resolver.pre \
|
||||
$out/opt/appgate/linux/appgate-dumb-resolver.pre
|
||||
do
|
||||
substituteInPlace $file \
|
||||
--replace "/bin/sh" "${bash}/bin/sh" \
|
||||
--replace "cat" "${coreutils}/bin/cat" \
|
||||
--replace "chattr" "${e2fsprogs}/bin/chattr" \
|
||||
--replace "mv " "${coreutils}/bin/mv " \
|
||||
--replace "pkill" "${procps}/bin/pkill"
|
||||
done
|
||||
|
||||
for file in $out/lib/systemd/system/appgatedriver.service \
|
||||
$out/lib/systemd/system/appgate-dumb-resolver.service \
|
||||
$out/lib/systemd/system/appgate-resolver.service
|
||||
do
|
||||
substituteInPlace $file \
|
||||
--replace "/bin/sh" "${bash}/bin/sh" \
|
||||
--replace "/opt/" "$out/opt/" \
|
||||
--replace "chattr" "${e2fsprogs}/bin/chattr" \
|
||||
--replace "mv " "${coreutils}/bin/mv "
|
||||
done
|
||||
substituteInPlace $out/lib/systemd/system/appgate-dumb-resolver.service \
|
||||
--replace "/opt/" "$out/opt/"
|
||||
|
||||
substituteInPlace $out/lib/systemd/system/appgatedriver.service \
|
||||
--replace "/opt/" "$out/opt/" \
|
||||
--replace "InaccessiblePaths=/mnt /srv /boot /media" "InaccessiblePaths=-/mnt -/srv -/boot -/media"
|
||||
|
||||
substituteInPlace $out/lib/systemd/system/appgate-resolver.service \
|
||||
--replace "/usr/sbin/dnsmasq" "${dnsmasq}/bin/dnsmasq" \
|
||||
--replace "/opt/" "$out/opt/"
|
||||
|
||||
substituteInPlace $out/opt/appgate/linux/nm.py \
|
||||
--replace "/usr/sbin/dnsmasq" "${dnsmasq}/bin/dnsmasq"
|
||||
|
||||
substituteInPlace $out/opt/appgate/linux/nm.py --replace "/usr/sbin/dnsmasq" "${dnsmasq}/bin/dnsmasq"
|
||||
substituteInPlace $out/opt/appgate/linux/set_dns --replace "/etc/appgate.conf" "$out/etc/appgate.conf"
|
||||
substituteInPlace $out/opt/appgate/linux/set_dns \
|
||||
--replace "/etc/appgate.conf" "$out/etc/appgate.conf"
|
||||
|
||||
'';
|
||||
wrapProgram $out/opt/appgate/service/createdump \
|
||||
--set LD_LIBRARY_PATH "${makeLibraryPath [ stdenv.cc.cc ]}"
|
||||
|
||||
postFixup = ''
|
||||
find $out -type f -name "*.so" -exec patchelf --set-rpath '$ORIGIN:${rpath}' {} \;
|
||||
for binary in $out/opt/appgate/appgate-driver \
|
||||
$out/opt/appgate/appgate \
|
||||
$out/opt/appgate/service/createdump \
|
||||
$out/opt/appgate/service/appgateservice.bin
|
||||
do
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "$ORIGIN:$out/opt/appgate/service/:$out/opt/appgate/:${rpath}" $binary
|
||||
done
|
||||
wrapProgram $out/opt/appgate/appgate-driver \
|
||||
--prefix PATH : ${makeBinPath [ iproute2 networkmanager dnsmasq ]} \
|
||||
--set LD_LIBRARY_PATH $out/opt/appgate/service
|
||||
|
||||
# fail if there are missing dependencies
|
||||
ldd $out/opt/appgate/appgate | grep -i 'not found' && exit 1
|
||||
ldd $out/opt/appgate/service/appgateservice.bin | grep -i 'not found' && exit 1
|
||||
ldd $out/opt/appgate/appgate-driver | grep -i 'not found' && exit 1
|
||||
makeWrapper $out/opt/appgate/Appgate $out/bin/appgate \
|
||||
--prefix PATH : ${makeBinPath [ xdg-utils ]} \
|
||||
--set LD_LIBRARY_PATH $out/opt/appgate:${makeLibraryPath deps}
|
||||
|
||||
wrapProgram $out/opt/appgate/appgate-driver --prefix PATH : ${lib.makeBinPath [ iproute2 networkmanager dnsmasq ]}
|
||||
wrapProgram $out/opt/appgate/linux/set_dns --set PYTHONPATH $PYTHONPATH
|
||||
wrapProgram $out/bin/appgate --prefix PATH : ${lib.makeBinPath [ xdg-utils ]}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Appgate SDP (Software Defined Perimeter) desktop client";
|
||||
homepage = "https://www.appgate.com/support/software-defined-perimeter-support";
|
||||
|
@ -189,3 +157,4 @@ stdenv.mkDerivation rec {
|
|||
maintainers = with maintainers; [ ymatsiuk ];
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -31,15 +31,15 @@
|
|||
}
|
||||
},
|
||||
"dev": {
|
||||
"version": "93.0.4549.3",
|
||||
"sha256": "0bkr67n1d75ayd1d9sa57c99j85r83gadzfs8iw7kwiha9g0mjgp",
|
||||
"sha256bin64": "1hac6m668nrdzvfqx3vyc74pnx8lf973m1jxnm3cfy83g7wynphz",
|
||||
"version": "93.0.4557.4",
|
||||
"sha256": "06397k5mkrrdrmd7icyvd1ifnmhincgw5nskgc3m436qzzifsab9",
|
||||
"sha256bin64": "1q2c2dhx1yya6vhr82asf7h2zrv6kjzjv1a0zlfxkp3i6lnivgrd",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2021-06-18",
|
||||
"version": "2021-06-25",
|
||||
"url": "https://gn.googlesource.com/gn",
|
||||
"rev": "170c2dba1e0c0299fe8c6a441caf2f2352a42ae0",
|
||||
"sha256": "1ylx8a5fxq7aciqs0mx7fld763sqkqn39lb9k951w6gksm15lrn3"
|
||||
"rev": "4d207c94eab41f09c9a8505eb47f3d2919e47943",
|
||||
"sha256": "1jfgksa7rifh3ynnmd7m8xxggwxckz0jnwjaq9m5xapksb89hbn1"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -7,10 +7,10 @@ in
|
|||
rec {
|
||||
firefox = common rec {
|
||||
pname = "firefox";
|
||||
ffversion = "89.0.1";
|
||||
ffversion = "89.0.2";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
|
||||
sha512 = "67da387b3b6c5a110c83208f9a15d6064adf423bbebfb0fcad2d85f6c4b615b27da0cbd5486b817f0d5e040bc3e70d74d9af72599b24384397fef1dd153bd3f3";
|
||||
sha512 = "ffd98ab0887611c5b4aba68346c49a7a31a58150fd8bbae610a4d941c4cff0acef0daaebfbb577787a759b4c1ef3c1199f02681148612f4f5b709983e07e0ccb";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
|
|
@ -31,12 +31,12 @@ let
|
|||
|
||||
in mkDerivationWith python3Packages.buildPythonApplication rec {
|
||||
pname = "qutebrowser";
|
||||
version = "2.2.3";
|
||||
version = "2.3.0";
|
||||
|
||||
# the release tarballs are different from the git checkout!
|
||||
src = fetchurl {
|
||||
url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-BoP168jxj94nvkrcgC83fPw/TPRsI2PbCooqzWNF62I=";
|
||||
sha256 = "09fz6rd0laisq7pqf9nrllcx58yb129fc05kdk45zrwwggq03b8h";
|
||||
};
|
||||
|
||||
# Needs tox
|
||||
|
|
|
@ -19,13 +19,13 @@ let
|
|||
in
|
||||
buildGoModule rec {
|
||||
pname = "argo";
|
||||
version = "3.0.7";
|
||||
version = "3.0.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "argoproj";
|
||||
repo = "argo";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-lZTSUNtmJZKONt0Bv42dBAc+87L14HaPxvPxhFe8nyc=";
|
||||
sha256 = "sha256-TOPJvOQKEMEsQ/wAJNF+08g4z75GGkNom6gRCrNOO2I=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-YjVAoMyGKMHLGEPeOOkCKCzeWFiUsXfJIKcw5GYoljg=";
|
||||
|
|
|
@ -2,20 +2,25 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "helm";
|
||||
version = "3.6.1";
|
||||
version = "3.6.2";
|
||||
gitCommit = "ee407bdf364942bcb8e8c665f82e15aa28009b71";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "helm";
|
||||
repo = "helm";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-MXMgCqdFNRMJaStoFMx8BO8OI1B7FqSETk0zW6a/vbE=";
|
||||
sha256 = "1s40zbk83s1kylcglydw356282virf1828v9waj1zs1gjnjml69h";
|
||||
};
|
||||
vendorSha256 = "sha256-PTAyRG6PZK+vaiheUd3oiu4iBGlnFjoCrci0CYbXjBk=";
|
||||
vendorSha256 = "06ccsy30kd68ml13l5k7d4225vlax3fm2pi8dapsyr4gdr234c1x";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
subPackages = [ "cmd/helm" ];
|
||||
buildFlagsArray = [ "-ldflags=-w -s -X helm.sh/helm/v3/internal/version.version=v${version}" ];
|
||||
ldflags = [
|
||||
"-w" "-s"
|
||||
"-X helm.sh/helm/v3/internal/version.version=v${version}"
|
||||
"-X helm.sh/helm/v3/internal/version.gitCommit=${gitCommit}"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
postInstall = ''
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue