···53Follow these steps to backport a change into a release branch in compliance with the [commit policy](https://nixos.org/nixpkgs/manual/#submitting-changes-stable-release-branches).
54551. Take note of the commits in which the change was introduced into `master` branch.
56-2. Check out the target _release branch_, e.g. `release-20.03`. Do not use a _channel branch_ like `nixos-20.03` or `nixpkgs-20.03`.
573. Create a branch for your change, e.g. `git checkout -b backport`.
584. When the reason to backport is not obvious from the original commit message, use `git cherry-pick -xe <original commit>` and add a reason. Otherwise use `git cherry-pick -x <original commit>`. That's fine for minor version updates that only include security and bug fixes, commits that fixes an otherwise broken package or similar. Please also ensure the commits exists on the master branch; in the case of squashed or rebased merges, the commit hash will change and the new commits can be found in the merge message at the bottom of the master pull request.
59-5. Push to GitHub and open a backport pull request. Make sure to select the release branch (e.g. `release-20.03`) as the target branch of the pull request, and link to the pull request in which the original change was comitted to `master`. The pull request title should be the commit title with the release version as prefix, e.g. `[20.03]`.
6061## Reviewing contributions
62
···53Follow these steps to backport a change into a release branch in compliance with the [commit policy](https://nixos.org/nixpkgs/manual/#submitting-changes-stable-release-branches).
54551. Take note of the commits in which the change was introduced into `master` branch.
56+2. Check out the target _release branch_, e.g. `release-20.09`. Do not use a _channel branch_ like `nixos-20.09` or `nixpkgs-20.09`.
573. Create a branch for your change, e.g. `git checkout -b backport`.
584. When the reason to backport is not obvious from the original commit message, use `git cherry-pick -xe <original commit>` and add a reason. Otherwise use `git cherry-pick -x <original commit>`. That's fine for minor version updates that only include security and bug fixes, commits that fixes an otherwise broken package or similar. Please also ensure the commits exists on the master branch; in the case of squashed or rebased merges, the commit hash will change and the new commits can be found in the merge message at the bottom of the master pull request.
59+5. Push to GitHub and open a backport pull request. Make sure to select the release branch (e.g. `release-20.09`) as the target branch of the pull request, and link to the pull request in which the original change was comitted to `master`. The pull request title should be the commit title with the release version as prefix, e.g. `[20.09]`.
6061## Reviewing contributions
62
+34
.github/STALE-BOT.md
···0000000000000000000000000000000000
···1+# Stale bot information
2+3+- Thanks for your contribution!
4+- To remove the stale label, just leave a new comment.
5+- _How to find the right people to ping?_ → [`git blame`](https://git-scm.com/docs/git-blame) to the rescue! (or GitHub's history and blame buttons.)
6+- You can always ask for help on [our Discourse Forum](https://discourse.nixos.org/) or on the [#nixos IRC channel](https://webchat.freenode.net/#nixos).
7+8+## Suggestions for PRs
9+10+1. If it is unfinished but you plan to finish it, please mark it as a draft.
11+2. If you don't expect to work on it any time soon, closing it with a short comment may encourage someone else to pick up your work.
12+3. To get things rolling again, rebase the PR against the target branch and address valid comments.
13+4. If you need a review to move forward, ask in [the Discourse thread for PRs that need help](https://discourse.nixos.org/t/prs-in-distress/3604).
14+5. If all you need is a merge, check the git history to find and [request reviews](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review) from people who usually merge related contributions.
15+16+## Suggestions for issues
17+18+1. If it is resolved (either for you personally, or in general), please consider closing it.
19+2. If this might still be an issue, but you are not interested in promoting its resolution, please consider closing it while encouraging others to take over and reopen an issue if they care enough.
20+3. If you still have interest in resolving it, try to ping somebody who you believe might have an interest in the topic. Consider discussing the problem in [our Discourse Forum](https://discourse.nixos.org/).
21+4. As with all open source projects, your best option is to submit a Pull Request that addresses this issue. We :heart: this attitude!
22+23+**Memorandum on closing issues**
24+25+Don't be afraid to close an issue that holds valuable information. Closed issues stay in the system for people to search, read, cross-reference, or even reopen--nothing is lost! Closing obsolete issues is an important way to help maintainers focus their time and effort.
26+27+## Useful GitHub search queries
28+29+- [Open PRs with any stale-bot interaction](https://github.com/NixOS/nixpkgs/pulls?q=is%3Apr+is%3Aopen+commenter%3Aapp%2Fstale+)
30+- [Open PRs with any stale-bot interaction and `2.status: stale`](https://github.com/NixOS/nixpkgs/pulls?q=is%3Apr+is%3Aopen+commenter%3Aapp%2Fstale+label%3A%222.status%3A+stale%22)
31+- [Open PRs with any stale-bot interaction and NOT `2.status: stale`](https://github.com/NixOS/nixpkgs/pulls?q=is%3Apr+is%3Aopen+commenter%3Aapp%2Fstale+-label%3A%222.status%3A+stale%22+)
32+- [Open Issues with any stale-bot interaction](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+is%3Aopen+commenter%3Aapp%2Fstale+)
33+- [Open Issues with any stale-bot interaction and `2.status: stale`](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+is%3Aopen+commenter%3Aapp%2Fstale+label%3A%222.status%3A+stale%22+)
34+- [Open Issues with any stale-bot interaction and NOT `2.status: stale`](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+is%3Aopen+commenter%3Aapp%2Fstale+-label%3A%222.status%3A+stale%22+)
+3-34
.github/stale.yml
···1# Configuration for probot-stale - https://github.com/probot/stale
2-# Number of days of inactivity before an issue becomes stale
3daysUntilStale: 180
4-# Number of days of inactivity before a stale issue is closed
5daysUntilClose: false
6-# Issues with these labels will never be considered stale
7exemptLabels:
8 - "1.severity: security"
9-# Label to use when marking an issue as stale
10staleLabel: "2.status: stale"
11-# Comment to post when marking an issue as stale. Set to `false` to disable
12-pulls:
13- markComment: |
14- Hello, I'm a bot and I thank you in the name of the community for your contributions.
15-16- Nixpkgs is a busy repository, and unfortunately sometimes PRs get left behind for too long. Nevertheless, we'd like to help committers reach the PRs that are still important. This PR has had no activity for 180 days, and so I marked it as stale, but you can rest assured it will never be closed by a non-human.
17-18- If this is still important to you and you'd like to remove the stale label, we ask that you leave a comment. Your comment can be as simple as "still important to me". But there's a bit more you can do:
19-20- If you received an approval by an unprivileged maintainer and you are just waiting for a merge, you can @ mention someone with merge permissions and ask them to help. You might be able to find someone relevant by using [Git blame](https://git-scm.com/docs/git-blame) on the relevant files, or via [GitHub's web interface](https://docs.github.com/en/github/managing-files-in-a-repository/tracking-changes-in-a-file). You can see if someone's a member of the [nixpkgs-committers](https://github.com/orgs/NixOS/teams/nixpkgs-committers) team, by hovering with the mouse over their username on the web interface, or by searching them directly on [the list](https://github.com/orgs/NixOS/teams/nixpkgs-committers).
21-22- If your PR wasn't reviewed at all, it might help to find someone who's perhaps a user of the package or module you are changing, or alternatively, ask once more for a review by the maintainer of the package/module this is about. If you don't know any, you can use [Git blame](https://git-scm.com/docs/git-blame) on the relevant files, or [GitHub's web interface](https://docs.github.com/en/github/managing-files-in-a-repository/tracking-changes-in-a-file) to find someone who touched the relevant files in the past.
23-24- If your PR has had reviews and nevertheless got stale, make sure you've responded to all of the reviewer's requests / questions. Usually when PR authors show responsibility and dedication, reviewers (privileged or not) show dedication as well. If you've pushed a change, it's possible the reviewer wasn't notified about your push via email, so you can always [officially request them for a review](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review), or just @ mention them and say you've addressed their comments.
25-26- Lastly, you can always ask for help at [our Discourse Forum](https://discourse.nixos.org/), or more specifically, [at this thread](https://discourse.nixos.org/t/prs-in-distress/3604) or at [#nixos' IRC channel](https://webchat.freenode.net/#nixos).
27-28-issues:
29- markComment: |
30- Hello, I'm a bot and I thank you in the name of the community for opening this issue.
31-32- To help our human contributors focus on the most-relevant reports, I check up on old issues to see if they're still relevant. This issue has had no activity for 180 days, and so I marked it as stale, but you can rest assured it will never be closed by a non-human.
33-34- The community would appreciate your effort in checking if the issue is still valid. If it isn't, please close it.
35-36- If the issue persists, and you'd like to remove the stale label, you simply need to leave a comment. Your comment can be as simple as "still important to me". If you'd like it to get more attention, you can ask for help by searching for maintainers and people that previously touched related code and @ mention them in a comment. You can use [Git blame](https://git-scm.com/docs/git-blame) or [GitHub's web interface](https://docs.github.com/en/github/managing-files-in-a-repository/tracking-changes-in-a-file) on the relevant files to find them.
37-38- Lastly, you can always ask for help at [our Discourse Forum](https://discourse.nixos.org/) or at [#nixos' IRC channel](https://webchat.freenode.net/#nixos).
39-40-# Comment to post when closing a stale issue. Set to `false` to disable
41closeComment: false
···1# Configuration for probot-stale - https://github.com/probot/stale
02daysUntilStale: 180
03daysUntilClose: false
04exemptLabels:
5 - "1.severity: security"
6+ - "2.status: never-stale"
7staleLabel: "2.status: stale"
8+markComment: |
9+ I marked this as stale due to inactivity. → [More info](https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md)
000000000000000000000000000010closeComment: false
+2-2
README.md
···46system, [Hydra](https://hydra.nixos.org/).
4748* [Continuous package builds for unstable/master](https://hydra.nixos.org/jobset/nixos/trunk-combined)
49-* [Continuous package builds for the NixOS 20.03 release](https://hydra.nixos.org/jobset/nixos/release-20.03)
50* [Tests for unstable/master](https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents)
51-* [Tests for the NixOS 20.03 release](https://hydra.nixos.org/job/nixos/release-20.03/tested#tabs-constituents)
5253Artifacts successfully built with Hydra are published to cache at
54https://cache.nixos.org/. When successful build and test criteria are
···46system, [Hydra](https://hydra.nixos.org/).
4748* [Continuous package builds for unstable/master](https://hydra.nixos.org/jobset/nixos/trunk-combined)
49+* [Continuous package builds for the NixOS 20.09 release](https://hydra.nixos.org/jobset/nixos/release-20.09)
50* [Tests for unstable/master](https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents)
51+* [Tests for the NixOS 20.09 release](https://hydra.nixos.org/job/nixos/release-20.09/tested#tabs-constituents)
5253Artifacts successfully built with Hydra are published to cache at
54https://cache.nixos.org/. When successful build and test criteria are
+24-8
lib/debug.nix
···14*/
15{ lib }:
16let
17- inherit (builtins) trace isAttrs isList isInt
18- head substring attrNames;
19- inherit (lib) id elem isFunction;
000000000000000020in
2122rec {
···94 trace: { a = { b = {…}; }; }
95 => null
96 */
97- traceSeqN = depth: x: y: with lib;
98 let snip = v: if isList v then noQuotes "[…]" v
99 else if isAttrs v then noQuotes "{…}" v
100 else v;
···149 */
150 runTests =
151 # Tests to run
152- tests: lib.concatLists (lib.attrValues (lib.mapAttrs (name: test:
153 let testsToRun = if tests ? tests then tests.tests else [];
154 in if (substring 0 4 name == "test" || elem name testsToRun)
155 && ((testsToRun == []) || elem name tests.tests)
···176 + "and will be removed in the next release. "
177 + "Please use more specific concatenation "
178 + "for your uses (`lib.concat(Map)StringsSep`)." )
179- (lib.concatStringsSep "; " (map (x: "${x}=") (attrNames a)));
180181- showVal = with lib;
182 trace ( "Warning: `showVal` is deprecated "
183 + "and will be removed in the next release, "
184 + "please use `traceSeqN`" )
···226 trace ( "Warning: `addErrorContextToAttrs` is deprecated "
227 + "and will be removed in the next release. "
228 + "Please use `builtins.addErrorContext` directly." )
229- (lib.mapAttrs (a: v: lib.addErrorContext "while evaluating ${a}" v) attrs);
230231 # example: (traceCallXml "myfun" id 3) will output something like
232 # calling myfun arg 1: 3 result: 3
···14*/
15{ lib }:
16let
17+ inherit (lib)
18+ isInt
19+ attrNames
20+ isList
21+ isAttrs
22+ substring
23+ addErrorContext
24+ attrValues
25+ concatLists
26+ concatStringsSep
27+ const
28+ elem
29+ generators
30+ head
31+ id
32+ isDerivation
33+ isFunction
34+ mapAttrs
35+ trace;
36in
3738rec {
···110 trace: { a = { b = {…}; }; }
111 => null
112 */
113+ traceSeqN = depth: x: y:
114 let snip = v: if isList v then noQuotes "[…]" v
115 else if isAttrs v then noQuotes "{…}" v
116 else v;
···165 */
166 runTests =
167 # Tests to run
168+ tests: concatLists (attrValues (mapAttrs (name: test:
169 let testsToRun = if tests ? tests then tests.tests else [];
170 in if (substring 0 4 name == "test" || elem name testsToRun)
171 && ((testsToRun == []) || elem name tests.tests)
···192 + "and will be removed in the next release. "
193 + "Please use more specific concatenation "
194 + "for your uses (`lib.concat(Map)StringsSep`)." )
195+ (concatStringsSep "; " (map (x: "${x}=") (attrNames a)));
196197+ showVal =
198 trace ( "Warning: `showVal` is deprecated "
199 + "and will be removed in the next release, "
200 + "please use `traceSeqN`" )
···242 trace ( "Warning: `addErrorContextToAttrs` is deprecated "
243 + "and will be removed in the next release. "
244 + "Please use `builtins.addErrorContext` directly." )
245+ (mapAttrs (a: v: addErrorContext "while evaluating ${a}" v) attrs);
246247 # example: (traceCallXml "myfun" id 3) will output something like
248 # calling myfun arg 1: 3 result: 3
···1{ lib }:
23-with lib.lists;
4-with lib.strings;
5-with lib.trivial;
6-with lib.attrsets;
7-with lib.options;
8-with lib.debug;
9-with lib.types;
000000000000000000000000000000000000000001011rec {
12···616 fixupOptionType = loc: opt:
617 let
618 options = opt.options or
619- (throw "Option `${showOption loc'}' has type optionSet but has no option attribute, in ${showFiles opt.declarations}.");
620 f = tp:
621 let optionSetIn = type: (tp.name == type) && (tp.functor.wrapped.name == "optionSet");
622 in
···1{ lib }:
23+let
4+ inherit (lib)
5+ all
6+ any
7+ attrByPath
8+ attrNames
9+ catAttrs
10+ concatLists
11+ concatMap
12+ count
13+ elem
14+ filter
15+ findFirst
16+ flip
17+ foldl
18+ foldl'
19+ getAttrFromPath
20+ head
21+ id
22+ imap1
23+ isAttrs
24+ isBool
25+ isFunction
26+ isString
27+ length
28+ mapAttrs
29+ mapAttrsToList
30+ mapAttrsRecursiveCond
31+ min
32+ optional
33+ optionalAttrs
34+ optionalString
35+ recursiveUpdate
36+ reverseList sort
37+ setAttrByPath
38+ toList
39+ types
40+ warn
41+ ;
42+ inherit (lib.options)
43+ isOption
44+ mkOption
45+ showDefs
46+ showFiles
47+ showOption
48+ unknownModule
49+ ;
50+in
5152rec {
53···657 fixupOptionType = loc: opt:
658 let
659 options = opt.options or
660+ (throw "Option `${showOption loc}' has type optionSet but has no option attribute, in ${showFiles opt.declarations}.");
661 f = tp:
662 let optionSetIn = type: (tp.name == type) && (tp.functor.wrapped.name == "optionSet");
663 in
+35-6
lib/options.nix
···1# Nixpkgs/NixOS option handling.
2{ lib }:
34-with lib.trivial;
5-with lib.lists;
6-with lib.attrsets;
7-with lib.strings;
8-000000000000000000000000000009rec {
1011 /* Returns true when the given argument is an option
···110 # Return early if we only have one element
111 # This also makes it work for functions, because the foldl' below would try
112 # to compare the first element with itself, which is false for functions
113- else if length defs == 1 then (elemAt defs 0).value
114 else (foldl' (first: def:
115 if def.value != first.value then
116 throw "The option `${showOption loc}' has conflicting definition values:${showDefs [ first def ]}"
···1# Nixpkgs/NixOS option handling.
2{ lib }:
34+let
5+ inherit (lib)
6+ all
7+ collect
8+ concatLists
9+ concatMap
10+ elemAt
11+ filter
12+ foldl'
13+ head
14+ isAttrs
15+ isBool
16+ isDerivation
17+ isFunction
18+ isInt
19+ isList
20+ isString
21+ length
22+ mapAttrs
23+ optional
24+ optionals
25+ take
26+ ;
27+ inherit (lib.attrsets)
28+ optionalAttrs
29+ ;
30+ inherit (lib.strings)
31+ concatMapStrings
32+ concatStringsSep
33+ ;
34+ inherit (lib.types)
35+ mkOptionType
36+ ;
37+in
38rec {
3940 /* Returns true when the given argument is an option
···139 # Return early if we only have one element
140 # This also makes it work for functions, because the foldl' below would try
141 # to compare the first element with itself, which is false for functions
142+ else if length defs == 1 then (head defs).value
143 else (foldl' (first: def:
144 if def.value != first.value then
145 throw "The option `${showOption loc}' has conflicting definition values:${showDefs [ first def ]}"
+28-12
lib/sources.nix
···1# Functions for copying sources to the Nix store.
2{ lib }:
3000000000000000004rec {
56 # Returns the type of a path: regular (for file), symlink, or directory
7- pathType = p: with builtins; getAttr (baseNameOf p) (readDir (dirOf p));
89 # Returns true if the path exists and is a directory, false otherwise
10- pathIsDirectory = p: if builtins.pathExists p then (pathType p) == "directory" else false;
1112 # Returns true if the path exists and is a regular file, false otherwise
13- pathIsRegularFile = p: if builtins.pathExists p then (pathType p) == "regular" else false;
1415 # Bring in a path as a source, filtering out all Subversion and CVS
16 # directories, as well as backup files (*~).
···19 (baseName == ".git" || type == "directory" && (baseName == ".svn" || baseName == "CVS" || baseName == ".hg")) ||
20 # Filter out editor backup / swap files.
21 lib.hasSuffix "~" baseName ||
22- builtins.match "^\\.sw[a-z]$" baseName != null ||
23- builtins.match "^\\..*\\.sw[a-z]$" baseName != null ||
2425 # Filter out generates files.
26 lib.hasSuffix ".o" baseName ||
···89 in lib.cleanSourceWith {
90 filter = (path: type:
91 let relPath = lib.removePrefix (toString origSrc + "/") (toString path);
92- in lib.any (re: builtins.match re relPath != null) regexes);
93 inherit src;
94 };
95···102 in type == "directory" || lib.any (ext: lib.hasSuffix ext base) exts;
103 in cleanSourceWith { inherit filter; src = path; };
104105- pathIsGitRepo = path: (builtins.tryEval (commitIdFromGitRepo path)).success;
106107 # Get the commit id of a git repo
108 # Example: commitIdFromGitRepo <nixpkgs/.git>
109 commitIdFromGitRepo =
110 let readCommitFromFile = file: path:
111- with builtins;
112 let fileName = toString path + "/" + file;
113 packedRefsName = toString path + "/packed-refs";
114 absolutePath = base: path:
···145 # packed-refs file, so we have to grep through it:
146 then
147 let fileContent = readFile packedRefsName;
148- matchRef = builtins.match "([a-z0-9]+) ${file}";
149- isRef = s: builtins.isString s && (matchRef s) != null;
150 # there is a bug in libstdc++ leading to stackoverflow for long strings:
151 # https://github.com/NixOS/nix/issues/2147#issuecomment-659868795
152- refs = builtins.filter isRef (builtins.split "\n" fileContent);
153 in if refs == []
154 then throw ("Could not find " + file + " in " + packedRefsName)
155 else lib.head (matchRef (lib.head refs))
···157 else throw ("Not a .git directory: " + path);
158 in readCommitFromFile "HEAD";
159160- pathHasContext = builtins.hasContext or (lib.hasPrefix builtins.storeDir);
161162 canCleanSource = src: src ? _isLibCleanSourceWith || !(pathHasContext (toString src));
163}
···1# Functions for copying sources to the Nix store.
2{ lib }:
34+let
5+ inherit (builtins)
6+ hasContext
7+ match
8+ readDir
9+ storeDir
10+ tryEval
11+ ;
12+ inherit (lib)
13+ filter
14+ getAttr
15+ isString
16+ pathExists
17+ readFile
18+ split
19+ ;
20+in
21rec {
2223 # Returns the type of a path: regular (for file), symlink, or directory
24+ pathType = p: getAttr (baseNameOf p) (readDir (dirOf p));
2526 # Returns true if the path exists and is a directory, false otherwise
27+ pathIsDirectory = p: if pathExists p then (pathType p) == "directory" else false;
2829 # Returns true if the path exists and is a regular file, false otherwise
30+ pathIsRegularFile = p: if pathExists p then (pathType p) == "regular" else false;
3132 # Bring in a path as a source, filtering out all Subversion and CVS
33 # directories, as well as backup files (*~).
···36 (baseName == ".git" || type == "directory" && (baseName == ".svn" || baseName == "CVS" || baseName == ".hg")) ||
37 # Filter out editor backup / swap files.
38 lib.hasSuffix "~" baseName ||
39+ match "^\\.sw[a-z]$" baseName != null ||
40+ match "^\\..*\\.sw[a-z]$" baseName != null ||
4142 # Filter out generates files.
43 lib.hasSuffix ".o" baseName ||
···106 in lib.cleanSourceWith {
107 filter = (path: type:
108 let relPath = lib.removePrefix (toString origSrc + "/") (toString path);
109+ in lib.any (re: match re relPath != null) regexes);
110 inherit src;
111 };
112···119 in type == "directory" || lib.any (ext: lib.hasSuffix ext base) exts;
120 in cleanSourceWith { inherit filter; src = path; };
121122+ pathIsGitRepo = path: (tryEval (commitIdFromGitRepo path)).success;
123124 # Get the commit id of a git repo
125 # Example: commitIdFromGitRepo <nixpkgs/.git>
126 commitIdFromGitRepo =
127 let readCommitFromFile = file: path:
0128 let fileName = toString path + "/" + file;
129 packedRefsName = toString path + "/packed-refs";
130 absolutePath = base: path:
···161 # packed-refs file, so we have to grep through it:
162 then
163 let fileContent = readFile packedRefsName;
164+ matchRef = match "([a-z0-9]+) ${file}";
165+ isRef = s: isString s && (matchRef s) != null;
166 # there is a bug in libstdc++ leading to stackoverflow for long strings:
167 # https://github.com/NixOS/nix/issues/2147#issuecomment-659868795
168+ refs = filter isRef (split "\n" fileContent);
169 in if refs == []
170 then throw ("Could not find " + file + " in " + packedRefsName)
171 else lib.head (matchRef (lib.head refs))
···173 else throw ("Not a .git directory: " + path);
174 in readCommitFromFile "HEAD";
175176+ pathHasContext = builtins.hasContext or (lib.hasPrefix storeDir);
177178 canCleanSource = src: src ? _isLibCleanSourceWith || !(pathHasContext (toString src));
179}
+9-4
lib/strings-with-deps.nix
···41 [1] maybe this behaviour should be removed to keep things simple (?)
42*/
4344-with lib.lists;
45-with lib.attrsets;
46-with lib.strings;
47-0000048rec {
4950 /* !!! The interface of this function is kind of messed up, since
···41 [1] maybe this behaviour should be removed to keep things simple (?)
42*/
4344+let
45+ inherit (lib)
46+ concatStringsSep
47+ head
48+ isAttrs
49+ listToAttrs
50+ tail
51+ ;
52+in
53rec {
5455 /* !!! The interface of this function is kind of messed up, since
+43-21
lib/strings.nix
···89rec {
1011- inherit (builtins) stringLength substring head tail isString replaceStrings;
00000000000000000000001213 /* Concatenate a list of strings.
14···120 subDir:
121 # List of base paths
122 paths:
123- concatStringsSep ":" (map (path: path + "/" + subDir) (builtins.filter (x: x != null) paths));
124125 /* Construct a Unix-style search path by appending the given
126 `subDir` to the specified `output` of each of the packages. If no
···313 escapeNixString "hello\${}\n"
314 => "\"hello\\\${}\\n\""
315 */
316- escapeNixString = s: escape ["$"] (builtins.toJSON s);
317318 /* Turn a string into an exact regular expression
319···337 */
338 escapeNixIdentifier = s:
339 # Regex from https://github.com/NixOS/nix/blob/d048577909e383439c2549e849c5c2f2016c997e/src/libexpr/lexer.l#L91
340- if builtins.match "[a-zA-Z_][a-zA-Z0-9_'-]*" s != null
341 then s else escapeNixString s;
342343 # Obsolete - use replaceStrings instead.
···466 versionOlder "1.1" "1.1"
467 => false
468 */
469- versionOlder = v1: v2: builtins.compareVersions v2 v1 == 1;
470471 /* Return true if string v1 denotes a version equal to or newer than v2.
472···492 */
493 getName = x:
494 let
495- parse = drv: (builtins.parseDrvName drv).name;
496 in if isString x
497 then parse x
498 else x.pname or (parse x.name);
···509 */
510 getVersion = x:
511 let
512- parse = drv: (builtins.parseDrvName drv).version;
513 in if isString x
514 then parse x
515 else x.version or (parse x.name);
···527 let
528 components = splitString "/" url;
529 filename = lib.last components;
530- name = builtins.head (splitString sep filename);
531 in assert name != filename; name;
532533 /* Create an --{enable,disable}-<feat> string that can be passed to
···617 */
618 floatToString = float: let
619 result = toString float;
620- precise = float == builtins.fromJSON result;
621 in if precise then result
622 else lib.warn "Imprecise conversion from float to string ${result}" result;
623624 /* Check whether a value can be coerced to a string */
625 isCoercibleToString = x:
626- builtins.elem (builtins.typeOf x) [ "path" "string" "null" "int" "float" "bool" ] ||
627- (builtins.isList x && lib.all isCoercibleToString x) ||
628 x ? outPath ||
629 x ? __toString;
630···643 isStorePath = x:
644 if isCoercibleToString x then
645 let str = toString x; in
646- builtins.substring 0 1 str == "/"
647- && dirOf str == builtins.storeDir
648 else
649 false;
650···662 */
663 # Obviously, it is a bit hacky to use fromJSON this way.
664 toInt = str:
665- let may_be_int = builtins.fromJSON str; in
666- if builtins.isInt may_be_int
667 then may_be_int
668 else throw "Could not convert ${str} to int.";
669···685 readPathsFromFile = lib.warn "lib.readPathsFromFile is deprecated, use a list instead"
686 (rootPath: file:
687 let
688- lines = lib.splitString "\n" (builtins.readFile file);
689 removeComments = lib.filter (line: line != "" && !(lib.hasPrefix "#" line));
690 relativePaths = removeComments lines;
691- absolutePaths = builtins.map (path: rootPath + "/${path}") relativePaths;
692 in
693 absolutePaths);
694···702 fileContents ./version
703 => "1.0"
704 */
705- fileContents = file: removeSuffix "\n" (builtins.readFile file);
706707708 /* Creates a valid derivation name from a potentially invalid one.
···720 sanitizeDerivationName = string: lib.pipe string [
721 # Get rid of string context. This is safe under the assumption that the
722 # resulting string is only used as a derivation name
723- builtins.unsafeDiscardStringContext
724 # Strip all leading "."
725- (x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0)
726 # Split out all invalid characters
727 # https://github.com/NixOS/nix/blob/2.3.2/src/libstore/store-api.cc#L85-L112
728 # https://github.com/NixOS/nix/blob/2242be83c61788b9c0736a92bb0b5c7bbfc40803/nix-rust/src/store/path.rs#L100-L125
729- (builtins.split "[^[:alnum:]+._?=-]+")
730 # Replace invalid character ranges with a "-"
731 (concatMapStrings (s: if lib.isList s then "-" else s))
732 # Limit to 211 characters (minus 4 chars for ".drv")
···89rec {
1011+ inherit (builtins)
12+ compareVersions
13+ elem
14+ elemAt
15+ filter
16+ fromJSON
17+ head
18+ isInt
19+ isList
20+ isString
21+ match
22+ parseDrvName
23+ readFile
24+ replaceStrings
25+ split
26+ storeDir
27+ stringLength
28+ substring
29+ tail
30+ toJSON
31+ typeOf
32+ unsafeDiscardStringContext
33+ ;
3435 /* Concatenate a list of strings.
36···142 subDir:
143 # List of base paths
144 paths:
145+ concatStringsSep ":" (map (path: path + "/" + subDir) (filter (x: x != null) paths));
146147 /* Construct a Unix-style search path by appending the given
148 `subDir` to the specified `output` of each of the packages. If no
···335 escapeNixString "hello\${}\n"
336 => "\"hello\\\${}\\n\""
337 */
338+ escapeNixString = s: escape ["$"] (toJSON s);
339340 /* Turn a string into an exact regular expression
341···359 */
360 escapeNixIdentifier = s:
361 # Regex from https://github.com/NixOS/nix/blob/d048577909e383439c2549e849c5c2f2016c997e/src/libexpr/lexer.l#L91
362+ if match "[a-zA-Z_][a-zA-Z0-9_'-]*" s != null
363 then s else escapeNixString s;
364365 # Obsolete - use replaceStrings instead.
···488 versionOlder "1.1" "1.1"
489 => false
490 */
491+ versionOlder = v1: v2: compareVersions v2 v1 == 1;
492493 /* Return true if string v1 denotes a version equal to or newer than v2.
494···514 */
515 getName = x:
516 let
517+ parse = drv: (parseDrvName drv).name;
518 in if isString x
519 then parse x
520 else x.pname or (parse x.name);
···531 */
532 getVersion = x:
533 let
534+ parse = drv: (parseDrvName drv).version;
535 in if isString x
536 then parse x
537 else x.version or (parse x.name);
···549 let
550 components = splitString "/" url;
551 filename = lib.last components;
552+ name = head (splitString sep filename);
553 in assert name != filename; name;
554555 /* Create an --{enable,disable}-<feat> string that can be passed to
···639 */
640 floatToString = float: let
641 result = toString float;
642+ precise = float == fromJSON result;
643 in if precise then result
644 else lib.warn "Imprecise conversion from float to string ${result}" result;
645646 /* Check whether a value can be coerced to a string */
647 isCoercibleToString = x:
648+ elem (typeOf x) [ "path" "string" "null" "int" "float" "bool" ] ||
649+ (isList x && lib.all isCoercibleToString x) ||
650 x ? outPath ||
651 x ? __toString;
652···665 isStorePath = x:
666 if isCoercibleToString x then
667 let str = toString x; in
668+ substring 0 1 str == "/"
669+ && dirOf str == storeDir
670 else
671 false;
672···684 */
685 # Obviously, it is a bit hacky to use fromJSON this way.
686 toInt = str:
687+ let may_be_int = fromJSON str; in
688+ if isInt may_be_int
689 then may_be_int
690 else throw "Could not convert ${str} to int.";
691···707 readPathsFromFile = lib.warn "lib.readPathsFromFile is deprecated, use a list instead"
708 (rootPath: file:
709 let
710+ lines = lib.splitString "\n" (readFile file);
711 removeComments = lib.filter (line: line != "" && !(lib.hasPrefix "#" line));
712 relativePaths = removeComments lines;
713+ absolutePaths = map (path: rootPath + "/${path}") relativePaths;
714 in
715 absolutePaths);
716···724 fileContents ./version
725 => "1.0"
726 */
727+ fileContents = file: removeSuffix "\n" (readFile file);
728729730 /* Creates a valid derivation name from a potentially invalid one.
···742 sanitizeDerivationName = string: lib.pipe string [
743 # Get rid of string context. This is safe under the assumption that the
744 # resulting string is only used as a derivation name
745+ unsafeDiscardStringContext
746 # Strip all leading "."
747+ (x: elemAt (match "\\.*(.*)" x) 0)
748 # Split out all invalid characters
749 # https://github.com/NixOS/nix/blob/2.3.2/src/libstore/store-api.cc#L85-L112
750 # https://github.com/NixOS/nix/blob/2242be83c61788b9c0736a92bb0b5c7bbfc40803/nix-rust/src/store/path.rs#L100-L125
751+ (split "[^[:alnum:]+._?=-]+")
752 # Replace invalid character ranges with a "-"
753 (concatMapStrings (s: if lib.isList s then "-" else s))
754 # Limit to 211 characters (minus 4 chars for ".drv")
+59-6
lib/types.nix
···1# Definitions related to run-time type checking. Used in particular
2# to type-check NixOS configurations.
3{ lib }:
4-with lib.lists;
5-with lib.attrsets;
6-with lib.options;
7-with lib.trivial;
8-with lib.strings;
9let
0000000000000000000000000000000000000000000000000000000001011 inherit (lib.modules) mergeDefinitions;
12 outer_types =
···270 name = "attrs";
271 description = "attribute set";
272 check = isAttrs;
273- merge = loc: foldl' (res: def: mergeAttrs res def.value) {};
274 emptyValue = { value = {}; };
275 };
276
···1#!/usr/bin/env nix-shell
2-#!nix-shell -i python3 -p 'python3.withPackages(ps: with ps; [ requests pyquery click ])'
34# To use, just execute this script with --help to display help.
5
···1#!/usr/bin/env nix-shell
2+#!nix-shell -i python3 -p "python3.withPackages(ps: with ps; [ requests pyquery click ])"
34# To use, just execute this script with --help to display help.
5
+1-1
nixos/doc/manual/configuration/user-mgmt.xml
···38 assigned by setting the user's
39 <link linkend="opt-users.users._name_.hashedPassword">hashedPassword</link>
40 option. A hashed password can be generated using <command>mkpasswd -m
41- sha-512</command> after installing the <literal>mkpasswd</literal> package.
42 </para>
43 <para>
44 A user ID (uid) is assigned automatically. You can also specify a uid
···38 assigned by setting the user's
39 <link linkend="opt-users.users._name_.hashedPassword">hashedPassword</link>
40 option. A hashed password can be generated using <command>mkpasswd -m
41+ sha-512</command>.
42 </para>
43 <para>
44 A user ID (uid) is assigned automatically. You can also specify a uid
+8-8
nixos/doc/manual/installation/upgrading.xml
···14 <para>
15 <emphasis>Stable channels</emphasis>, such as
16 <literal
17- xlink:href="https://nixos.org/channels/nixos-20.03">nixos-20.03</literal>.
18 These only get conservative bug fixes and package upgrades. For instance,
19 a channel update may cause the Linux kernel on your system to be upgraded
20 from 4.19.34 to 4.19.38 (a minor bug fix), but not from
···38 <para>
39 <emphasis>Small channels</emphasis>, such as
40 <literal
41- xlink:href="https://nixos.org/channels/nixos-20.03-small">nixos-20.03-small</literal>
42 or
43 <literal
44 xlink:href="https://nixos.org/channels/nixos-unstable-small">nixos-unstable-small</literal>.
···63 <para>
64 When you first install NixOS, you’re automatically subscribed to the NixOS
65 channel that corresponds to your installation source. For instance, if you
66- installed from a 20.03 ISO, you will be subscribed to the
67- <literal>nixos-20.03</literal> channel. To see which NixOS channel you’re
68 subscribed to, run the following as root:
69<screen>
70<prompt># </prompt>nix-channel --list | grep nixos
···75<prompt># </prompt>nix-channel --add https://nixos.org/channels/<replaceable>channel-name</replaceable> nixos
76</screen>
77 (Be sure to include the <literal>nixos</literal> parameter at the end.) For
78- instance, to use the NixOS 20.03 stable channel:
79<screen>
80-<prompt># </prompt>nix-channel --add https://nixos.org/channels/nixos-20.03 nixos
81</screen>
82 If you have a server, you may want to use the “small” channel instead:
83<screen>
84-<prompt># </prompt>nix-channel --add https://nixos.org/channels/nixos-20.03-small nixos
85</screen>
86 And if you want to live on the bleeding edge:
87<screen>
···132 kernel, initrd or kernel modules.
133 You can also specify a channel explicitly, e.g.
134<programlisting>
135-<xref linkend="opt-system.autoUpgrade.channel"/> = https://nixos.org/channels/nixos-20.03;
136</programlisting>
137 </para>
138 </section>
···14 <para>
15 <emphasis>Stable channels</emphasis>, such as
16 <literal
17+ xlink:href="https://nixos.org/channels/nixos-20.09">nixos-20.09</literal>.
18 These only get conservative bug fixes and package upgrades. For instance,
19 a channel update may cause the Linux kernel on your system to be upgraded
20 from 4.19.34 to 4.19.38 (a minor bug fix), but not from
···38 <para>
39 <emphasis>Small channels</emphasis>, such as
40 <literal
41+ xlink:href="https://nixos.org/channels/nixos-20.09-small">nixos-20.09-small</literal>
42 or
43 <literal
44 xlink:href="https://nixos.org/channels/nixos-unstable-small">nixos-unstable-small</literal>.
···63 <para>
64 When you first install NixOS, you’re automatically subscribed to the NixOS
65 channel that corresponds to your installation source. For instance, if you
66+ installed from a 20.09 ISO, you will be subscribed to the
67+ <literal>nixos-20.09</literal> channel. To see which NixOS channel you’re
68 subscribed to, run the following as root:
69<screen>
70<prompt># </prompt>nix-channel --list | grep nixos
···75<prompt># </prompt>nix-channel --add https://nixos.org/channels/<replaceable>channel-name</replaceable> nixos
76</screen>
77 (Be sure to include the <literal>nixos</literal> parameter at the end.) For
78+ instance, to use the NixOS 20.09 stable channel:
79<screen>
80+<prompt># </prompt>nix-channel --add https://nixos.org/channels/nixos-20.09 nixos
81</screen>
82 If you have a server, you may want to use the “small” channel instead:
83<screen>
84+<prompt># </prompt>nix-channel --add https://nixos.org/channels/nixos-20.09-small nixos
85</screen>
86 And if you want to live on the bleeding edge:
87<screen>
···132 kernel, initrd or kernel modules.
133 You can also specify a channel explicitly, e.g.
134<programlisting>
135+<xref linkend="opt-system.autoUpgrade.channel"/> = https://nixos.org/channels/nixos-20.09;
136</programlisting>
137 </para>
138 </section>
+678-123
nixos/doc/manual/release-notes/rl-2009.xml
···3 xmlns:xi="http://www.w3.org/2001/XInclude"
4 version="5.0"
5 xml:id="sec-release-20.09">
6- <title>Release 20.09 (“Nightingale”, 2020.09/??)</title>
70008 <section xmlns="http://docbook.org/ns/docbook"
9 xmlns:xlink="http://www.w3.org/1999/xlink"
10 xmlns:xi="http://www.w3.org/2001/XInclude"
···13 <title>Highlights</title>
1415 <para>
16- In addition to numerous new and upgraded packages, this release has the
17 following highlights:
18 </para>
1920 <itemizedlist>
21 <listitem>
22 <para>
23- Support is planned until the end of April 2021, handing over to 21.03.
24 </para>
25- </listitem>
26- <listitem>
27- <para>GNOME desktop environment was upgraded to 3.36, see its <link xlink:href="https://help.gnome.org/misc/release-notes/3.36/">release notes</link>.</para>
28- </listitem>
29- <listitem>
30- <para>
31- The Cinnamon desktop environment (v4.6) has been added. <varname>services.xserver.desktopManager.cinnamon.enable = true;</varname> to try it out!
32- Remember that, with any new feature it's possible you could run into issues, so please send all support requests to <link xlink:href="https://github.com/NixOS/nixpkgs/issues">github.com/NixOS/nixpkgs</link> to notify the maintainers.
33- </para>
000000000000034 </listitem>
35 <listitem>
36 <para>
37- Quickly configure a complete, private, self-hosted video
38- conferencing solution with the new Jitsi Meet module.
39 </para>
00000000000000000000000000040 </listitem>
041 <listitem>
42 <para>
43- <package>maxx</package> package removed along with <varname>services.xserver.desktopManager.maxx</varname> module.
44- Please migrate to <package>cdesktopenv</package> and <varname>services.xserver.desktopManager.cde</varname> module.
45 </para>
0000000000000000000000000000046 </listitem>
047 <listitem>
48 <para>
49- We now distribute a GNOME ISO.
50 </para>
00000000000051 </listitem>
052 <listitem>
53 <para>
54- PHP now defaults to PHP 7.4, updated from 7.3.
55 </para>
00000000000000000000000000000000000000000000000000000000000000000056 </listitem>
057 <listitem>
58 <para>
59- PHP 7.2 is no longer supported due to upstream not supporting this version for the entire lifecycle of the 20.09 release.
60 </para>
0000000000000000000000061 </listitem>
000000000000000062 <listitem>
63 <para>
64- Python 3 now defaults to Python 3.8 instead of 3.7.
65 </para>
00000000000000000000000000066 </listitem>
67 <listitem>
68 <para>
69- Python 3.5 has reached its upstream EOL at the end of September 2020: it
70- has been removed from the list of available packages.
71 </para>
00000000000072 </listitem>
73 <listitem>
74 <para>
75- Two new options, <link linkend="opt-services.openssh.authorizedKeysCommand">authorizedKeysCommand</link>
76- and <link linkend="opt-services.openssh.authorizedKeysCommandUser">authorizedKeysCommandUser</link>, have
77- been added to the <literal>openssh</literal> module. If you have <literal>AuthorizedKeysCommand</literal>
78- in your <link linkend="opt-services.openssh.extraConfig">services.openssh.extraConfig</link> you should
79- make use of these new options instead.
80 </para>
00000000000081 </listitem>
82 <listitem>
83 <para>
84- There is a new module for Podman(<varname>virtualisation.podman</varname>), a drop-in replacement for the Docker command line.
85 </para>
000000086 </listitem>
87 <listitem>
88 <para>
89- The new <varname>virtualisation.containers</varname> module manages configuration shared by the CRI-O and Podman modules.
90 </para>
0000000000000000091 </listitem>
092 <listitem>
93 <para>
94- Declarative Docker containers are renamed from <varname>docker-containers</varname> to <varname>virtualisation.oci-containers.containers</varname>.
95- This is to make it possible to use <literal>podman</literal> instead of <literal>docker</literal>.
96 </para>
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097 </listitem>
00000000000000000098 <listitem>
99 <para>
100 MariaDB has been updated to 10.4, MariaDB Galera to 26.4.
···144 from the default of <literal>mysql</literal> to a different user please change <literal>'mysql'@'localhost'</literal> to the corresponding user instead.
145 </para>
146 </listitem>
147- <listitem>
148- <para>
149- The new option <link linkend="opt-documentation.man.generateCaches">documentation.man.generateCaches</link>
150- has been added to automatically generate the <literal>man-db</literal> caches, which are needed by utilities
151- like <command>whatis</command> and <command>apropos</command>. The caches are generated during the build of
152- the NixOS configuration: since this can be expensive when a large number of packages are installed, the
153- feature is disabled by default.
154- </para>
155- </listitem>
156- <listitem>
157- <para>
158- <varname>services.postfix.sslCACert</varname> was replaced by <varname>services.postfix.tlsTrustedAuthorities</varname> which now defaults to system certificate authorities.
159- </para>
160- </listitem>
161- <listitem>
162- <para>
163- Subordinate GID and UID mappings are now set up automatically for all normal users.
164- This will make container tools like Podman work as non-root users out of the box.
165- </para>
166- </listitem>
167- <listitem>
168- <para>
169- The various documented workarounds to use steam have been converted to a module. <varname>programs.steam.enable</varname> enables steam, controller support and the workarounds.
170- </para>
171- </listitem>
172- <listitem>
173- <para>
174- Support for built-in LCDs in various pieces of Logitech hardware (keyboards and USB speakers). <varname>hardware.logitech.lcd.enable</varname> enables support for all hardware supported by the g15daemon project.
175- </para>
176- </listitem>
177 <listitem>
178 <para>
179 Zabbix now defaults to 5.0, updated from 4.4. Please carefully read through
···208</programlisting>
209 </para>
210 </listitem>
211- <listitem>
212- <para>
213- The NixOS module system now supports freeform modules as a mix between <literal>types.attrsOf</literal> and <literal>types.submodule</literal>. These allow you to explicitly declare a subset of options while still permitting definitions without an associated option. See <xref linkend='sec-freeform-modules'/> for how to use them.
214- </para>
215- </listitem>
216- <listitem>
217- <para>
218- The GRUB module gained support for basic password protection, which
219- allows to restrict non-default entries in the boot menu to one or more
220- users. The users and passwords are defined via the option
221- <option>boot.loader.grub.users</option>.
222- Note: Password support is only avaiable in GRUB version 2.
223- </para>
224- </listitem>
225- <listitem>
226- <para>
227- Following its deprecation in 20.03, the Perl NixOS test driver has been removed.
228- All remaining tests have been ported to the Python test framework.
229- Code outside nixpkgs using <filename>make-test.nix</filename> or
230- <filename>testing.nix</filename> needs to be ported to
231- <filename>make-test-python.nix</filename> and
232- <filename>testing-python.nix</filename> respectively.
233- </para>
234- </listitem>
235- </itemizedlist>
236- </section>
237238- <section xmlns="http://docbook.org/ns/docbook"
239- xmlns:xlink="http://www.w3.org/1999/xlink"
240- xmlns:xi="http://www.w3.org/2001/XInclude"
241- version="5.0"
242- xml:id="sec-release-20.09-new-services">
243- <title>New Services</title>
244-245- <para>
246- The following new services were added since the last release:
247- </para>
248-249- <itemizedlist>
250 <listitem>
251 <para>
252- There is a new <xref linkend="opt-security.doas.enable"/> module that provides <command>doas</command>, a lighter alternative to <command>sudo</command> with many of the same features.
253- </para>
254- </listitem>
255- <listitem>
256- <para>
257- <link xlink:href="https://hercules-ci.com">Hercules CI</link> Agent is a specialized build agent for projects built with Nix. See the <link xlink:href="https://nixos.org/nixos/options.html#services.hercules-ci-agent">options</link> and <link xlink:href="https://docs.hercules-ci.com/hercules-ci/getting-started/#deploy-agent">setup</link>.
258 </para>
259 </listitem>
260- </itemizedlist>
261-262- </section>
263-264- <section xmlns="http://docbook.org/ns/docbook"
265- xmlns:xlink="http://www.w3.org/1999/xlink"
266- xmlns:xi="http://www.w3.org/2001/XInclude"
267- version="5.0"
268- xml:id="sec-release-20.09-incompatibilities">
269- <title>Backward Incompatibilities</title>
270-271- <para>
272- When upgrading from a previous release, please be aware of the following
273- incompatible changes:
274- </para>
275-276- <itemizedlist>
277 <listitem>
278 <para>
279 The <link linkend="opt-services.matrix-synapse.enable">matrix-synapse</link> module no longer includes optional dependencies by default, they have to be added through the <link linkend="opt-services.matrix-synapse.plugins">plugins</link> option.
···300 It can still be enabled by providing <literal>phantomJsSupport = true</literal> to the package instantiation:
301<programlisting>{
302 services.grafana.package = pkgs.grafana.overrideAttrs (oldAttrs: rec {
303- phantomJsSupport = false;
304 });
305}</programlisting>
306 </para>
···1234 </para>
1235 </listitem>
1236 </itemizedlist>
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001237 </section>
1238</section>
···3 xmlns:xi="http://www.w3.org/2001/XInclude"
4 version="5.0"
5 xml:id="sec-release-20.09">
6+ <title>Release 20.09 (“Nightingale”, 2020.10/27)</title>
78+ <para>
9+ Support is planned until the end of April 2021, handing over to 21.03.
10+ </para>
11 <section xmlns="http://docbook.org/ns/docbook"
12 xmlns:xlink="http://www.w3.org/1999/xlink"
13 xmlns:xi="http://www.w3.org/2001/XInclude"
···16 <title>Highlights</title>
1718 <para>
19+ In addition to 7349 new, 14442 updated, and 8181 removed packages, this release has the
20 following highlights:
21 </para>
2223 <itemizedlist>
24 <listitem>
25 <para>
26+ Core version changes:
27 </para>
28+ <itemizedlist>
29+ <listitem>
30+ <para>
31+ gcc: 9.2.0 -> 9.3.0
32+ </para>
33+ </listitem>
34+ <listitem>
35+ <para>
36+ glibc: 2.30 -> 2.31
37+ </para>
38+ </listitem>
39+ <listitem>
40+ <para>
41+ linux: still defaults to 5.4.x, all supported kernels available
42+ </para>
43+ </listitem>
44+ <listitem>
45+ <para>
46+ mesa: 19.3.5 -> 20.1.7
47+ </para>
48+ </listitem>
49+ </itemizedlist>
50 </listitem>
51 <listitem>
52 <para>
53+ Desktop Environments:
054 </para>
55+ <itemizedlist>
56+ <listitem>
57+ <para>
58+ plasma5: 5.17.5 -> 5.18.5
59+ </para>
60+ </listitem>
61+ <listitem>
62+ <para>
63+ kdeApplications: 19.12.3 -> 20.08.1
64+ </para>
65+ </listitem>
66+ <listitem>
67+ <para>
68+ gnome3: 3.34 -> 3.36, see its <link xlink:href="https://help.gnome.org/misc/release-notes/3.36/">release notes</link>
69+ </para>
70+ </listitem>
71+ <listitem>
72+ <para>
73+ cinnamon: added at 4.6
74+ </para>
75+ </listitem>
76+ <listitem>
77+ <para>
78+ NixOS now distributes an official <link xlink:href="https://nixos.org/download.html#nixos-iso">GNOME ISO</link>
79+ </para>
80+ </listitem>
81+ </itemizedlist>
82 </listitem>
83+84 <listitem>
85 <para>
86+ Programming Languages and Frameworks:
087 </para>
88+ <itemizedlist>
89+90+ <listitem>
91+ <para>
92+ Agda ecosystem was heavily reworked (see more details below)
93+ </para>
94+ </listitem>
95+ <listitem>
96+ <para>
97+ PHP now defaults to PHP 7.4, updated from 7.3
98+ </para>
99+ </listitem>
100+ <listitem>
101+ <para>
102+ PHP 7.2 is no longer supported due to upstream not supporting this version for the entire lifecycle of the 20.09 release
103+ </para>
104+ </listitem>
105+ <listitem>
106+ <para>
107+ Python 3 now defaults to Python 3.8 instead of 3.7
108+ </para>
109+ </listitem>
110+ <listitem>
111+ <para>
112+ Python 3.5 reached its upstream EOL at the end of September 2020: it
113+ has been removed from the list of available packages
114+ </para>
115+ </listitem>
116+ </itemizedlist>
117 </listitem>
118+119 <listitem>
120 <para>
121+ Databases and Service Monitoring:
122 </para>
123+ <itemizedlist>
124+ <listitem>
125+ <para>
126+ MariaDB has been updated to 10.4, MariaDB Galera to 26.4. Please read the related upgrade instructions under <link linkend="sec-release-20.09-incompatibilities">backwards incompatibilities</link> before upgrading.
127+ </para>
128+ </listitem>
129+ <listitem>
130+ <para>
131+ Zabbix now defaults to 5.0, updated from 4.4. Please read related sections under <link linkend="sec-release-20.09-incompatibilities">backwards compatibilities</link> before upgrading.
132+ </para>
133+ </listitem>
134+ </itemizedlist>
135 </listitem>
136+137 <listitem>
138 <para>
139+ Major module changes:
140 </para>
141+ <itemizedlist>
142+ <listitem>
143+ <para>
144+ Quickly configure a complete, private, self-hosted video
145+ conferencing solution with the new Jitsi Meet module.
146+ </para>
147+ </listitem>
148+ <listitem>
149+ <para>
150+ Two new options, <link linkend="opt-services.openssh.authorizedKeysCommand">authorizedKeysCommand</link>
151+ and <link linkend="opt-services.openssh.authorizedKeysCommandUser">authorizedKeysCommandUser</link>, have
152+ been added to the <literal>openssh</literal> module. If you have <literal>AuthorizedKeysCommand</literal>
153+ in your <link linkend="opt-services.openssh.extraConfig">services.openssh.extraConfig</link> you should
154+ make use of these new options instead.
155+ </para>
156+ </listitem>
157+ <listitem>
158+ <para>
159+ There is a new module for Podman (<varname>virtualisation.podman</varname>), a drop-in replacement for the Docker command line.
160+ </para>
161+ </listitem>
162+ <listitem>
163+ <para>
164+ The new <varname>virtualisation.containers</varname> module manages configuration shared by the CRI-O and Podman modules.
165+ </para>
166+ </listitem>
167+ <listitem>
168+ <para>
169+ Declarative Docker containers are renamed from <varname>docker-containers</varname> to <varname>virtualisation.oci-containers.containers</varname>.
170+ This is to make it possible to use <literal>podman</literal> instead of <literal>docker</literal>.
171+ </para>
172+ </listitem>
173+ <listitem>
174+ <para>
175+ The new option <link linkend="opt-documentation.man.generateCaches">documentation.man.generateCaches</link>
176+ has been added to automatically generate the <literal>man-db</literal> caches, which are needed by utilities
177+ like <command>whatis</command> and <command>apropos</command>. The caches are generated during the build of
178+ the NixOS configuration: since this can be expensive when a large number of packages are installed, the
179+ feature is disabled by default.
180+ </para>
181+ </listitem>
182+ <listitem>
183+ <para>
184+ <varname>services.postfix.sslCACert</varname> was replaced by <varname>services.postfix.tlsTrustedAuthorities</varname> which now defaults to system certificate authorities.
185+ </para>
186+ </listitem>
187+ <listitem>
188+ <para>
189+ The various documented workarounds to use steam have been converted to a module. <varname>programs.steam.enable</varname> enables steam, controller support and the workarounds.
190+ </para>
191+ </listitem>
192+ <listitem>
193+ <para>
194+ Support for built-in LCDs in various pieces of Logitech hardware (keyboards and USB speakers). <varname>hardware.logitech.lcd.enable</varname> enables support for all hardware supported by the <link xlink:href="https://sourceforge.net/projects/g15daemon/">g15daemon project</link>.
195+ </para>
196+ </listitem>
197+ <listitem>
198+ <para>
199+ The GRUB module gained support for basic password protection, which
200+ allows to restrict non-default entries in the boot menu to one or more
201+ users. The users and passwords are defined via the option
202+ <option>boot.loader.grub.users</option>.
203+ Note: Password support is only available in GRUB version 2.
204+ </para>
205+ </listitem>
206+ </itemizedlist>
207 </listitem>
208+209 <listitem>
210 <para>
211+ NixOS module changes:
212 </para>
213+ <itemizedlist>
214+ <listitem>
215+ <para>
216+ The NixOS module system now supports freeform modules as a mix between <literal>types.attrsOf</literal> and <literal>types.submodule</literal>. These allow you to explicitly declare a subset of options while still permitting definitions without an associated option. See <xref linkend='sec-freeform-modules'/> for how to use them.
217+ </para>
218+ </listitem>
219+ <listitem>
220+ <para>
221+ Following its deprecation in 20.03, the Perl NixOS test driver has been removed.
222+ All remaining tests have been ported to the Python test framework.
223+ Code outside nixpkgs using <filename>make-test.nix</filename> or
224+ <filename>testing.nix</filename> needs to be ported to
225+ <filename>make-test-python.nix</filename> and
226+ <filename>testing-python.nix</filename> respectively.
227+ </para>
228+ </listitem>
229+ <listitem>
230+ <para>
231+ Subordinate GID and UID mappings are now set up automatically for all normal users.
232+ This will make container tools like Podman work as non-root users out of the box.
233+ </para>
234+ </listitem>
235+ </itemizedlist>
236 </listitem>
237+238+ </itemizedlist>
239+ </section>
240+241+ <section xmlns="http://docbook.org/ns/docbook"
242+ xmlns:xlink="http://www.w3.org/1999/xlink"
243+ xmlns:xi="http://www.w3.org/2001/XInclude"
244+ version="5.0"
245+ xml:id="sec-release-20.09-new-services">
246+ <title>New Services</title>
247+248+ <para>
249+ In addition to 1119 new, 118 updated, and 476 removed options; 61 new modules were added since the last release:
250+ </para>
251+252+ <itemizedlist>
253 <listitem>
254 <para>
255+ Hardware:
256 </para>
257+ <itemizedlist>
258+ <listitem>
259+ <para>
260+ <xref linkend="opt-hardware.system76.firmware-daemon.enable" /> adds easy support of system76 firmware
261+ </para>
262+ </listitem>
263+ <listitem>
264+ <para>
265+ <xref linkend="opt-hardware.uinput.enable" /> loads uinput kernel module
266+ </para>
267+ </listitem>
268+ <listitem>
269+ <para>
270+ <xref linkend="opt-hardware.video.hidpi.enable" /> enable good defaults for HiDPI displays
271+ </para>
272+ </listitem>
273+ <listitem>
274+ <para>
275+ <xref linkend="opt-hardware.wooting.enable" /> support for Wooting keyboards
276+ </para>
277+ </listitem>
278+ <listitem>
279+ <para>
280+ <xref linkend="opt-hardware.xpadneo.enable" /> xpadneo driver for Xbox One wireless controllers
281+ </para>
282+ </listitem>
283+ </itemizedlist>
284 </listitem>
285 <listitem>
286 <para>
287+ Programs:
0288 </para>
289+ <itemizedlist>
290+ <listitem>
291+ <para>
292+ <xref linkend="opt-programs.hamster.enable" /> enable hamster time tracking
293+ </para>
294+ </listitem>
295+ <listitem>
296+ <para>
297+ <xref linkend="opt-programs.steam.enable" /> adds easy enablement of steam and related system configuration
298+ </para>
299+ </listitem>
300+ </itemizedlist>
301 </listitem>
302 <listitem>
303 <para>
304+ Security:
0000305 </para>
306+ <itemizedlist>
307+ <listitem>
308+ <para>
309+ <xref linkend="opt-security.doas.enable" /> alternative to sudo, allows non-root users to execute commands as root
310+ </para>
311+ </listitem>
312+ <listitem>
313+ <para>
314+ <xref linkend="opt-security.tpm2.enable" /> add Trusted Platform Module 2 support
315+ </para>
316+ </listitem>
317+ </itemizedlist>
318 </listitem>
319 <listitem>
320 <para>
321+ System:
322 </para>
323+ <itemizedlist>
324+ <listitem>
325+ <para>
326+ <xref linkend="opt-boot.initrd.network.openvpn.enable" /> start an OpenVPN client during initrd boot
327+ </para>
328+ </listitem>
329+ </itemizedlist>
330 </listitem>
331 <listitem>
332 <para>
333+ Virtualization:
334 </para>
335+ <itemizedlist>
336+ <listitem>
337+ <para>
338+ <xref linkend="opt-boot.enableContainers" /> use nixos-containers
339+ </para>
340+ </listitem>
341+ <listitem>
342+ <para>
343+ <xref linkend="opt-virtualisation.oci-containers.containers" /> run OCI (Docker) containers
344+ </para>
345+ </listitem>
346+ <listitem>
347+ <para>
348+ <xref linkend="opt-virtualisation.podman.enable" /> daemonless container engine
349+ </para>
350+ </listitem>
351+ </itemizedlist>
352 </listitem>
353+354 <listitem>
355 <para>
356+ Services:
0357 </para>
358+ <itemizedlist>
359+ <listitem>
360+ <para>
361+ <xref linkend="opt-services.ankisyncd.enable" /> Anki sync server
362+ </para>
363+ </listitem>
364+ <listitem>
365+ <para>
366+ <xref linkend="opt-services.bazarr.enable" /> Subtitle manager for Sonarr and Radarr
367+ </para>
368+ </listitem>
369+ <listitem>
370+ <para>
371+ <xref linkend="opt-services.biboumi.enable" /> Biboumi XMPP gateway to IRC
372+ </para>
373+ </listitem>
374+ <listitem>
375+ <para>
376+ <xref linkend="opt-services.blockbook-frontend" /> Blockbook-frontend, a service for the Trezor wallet
377+ </para>
378+ </listitem>
379+ <listitem>
380+ <para>
381+ <xref linkend="opt-services.cage.enable" /> Wayland cage service
382+ </para>
383+ </listitem>
384+ <listitem>
385+ <para>
386+ <xref linkend="opt-services.convos.enable" /> IRC daemon, which can be accessed throught the browser
387+ </para>
388+ </listitem>
389+ <listitem>
390+ <para>
391+ <xref linkend="opt-services.engelsystem.enable" /> Tool for coordinating volunteers and shifts on large events
392+ </para>
393+ </listitem>
394+ <listitem>
395+ <para>
396+ <xref linkend="opt-services.espanso.enable" /> text-expander written in rust
397+ </para>
398+ </listitem>
399+ <listitem>
400+ <para>
401+ <xref linkend="opt-services.foldingathome.enable" /> Folding@home client
402+ </para>
403+ </listitem>
404+ <listitem>
405+ <para>
406+ <xref linkend="opt-services.gerrit.enable" /> Web-based team code collaboration tool
407+ </para>
408+ </listitem>
409+ <listitem>
410+ <para>
411+ <xref linkend="opt-services.go-neb.enable" /> Matrix bot
412+ </para>
413+ </listitem>
414+ <listitem>
415+ <para>
416+ <xref linkend="opt-services.hardware.xow.enable" /> xow as a systemd service
417+ </para>
418+ </listitem>
419+ <listitem>
420+ <para>
421+ <xref linkend="opt-services.hercules-ci-agent.enable" /> Hercules CI build agent
422+ </para>
423+ </listitem>
424+ <listitem>
425+ <para>
426+ <xref linkend="opt-services.jicofo.enable" /> Jitsi Conference Focus, component of Jitsi Meet
427+ </para>
428+ </listitem>
429+ <listitem>
430+ <para>
431+ <xref linkend="opt-services.jirafeau.enable" /> A web file repository
432+ </para>
433+ </listitem>
434+ <listitem>
435+ <para>
436+ <xref linkend="opt-services.jitsi-meet.enable" /> Secure, simple and scalable video conferences
437+ </para>
438+ </listitem>
439+ <listitem>
440+ <para>
441+ <xref linkend="opt-services.jitsi-videobridge.enable" /> Jitsi Videobridge, a WebRTC compatible router
442+ </para>
443+ </listitem>
444+ <listitem>
445+ <para>
446+ <xref linkend="opt-services.jupyterhub.enable" /> Jupyterhub development server
447+ </para>
448+ </listitem>
449+ <listitem>
450+ <para>
451+ <xref linkend="opt-services.k3s.enable" /> Lightweight Kubernetes distribution
452+ </para>
453+ </listitem>
454+ <listitem>
455+ <para>
456+ <xref linkend="opt-services.magic-wormhole-mailbox-server.enable" /> Magic Wormhole Mailbox Server
457+ </para>
458+ </listitem>
459+ <listitem>
460+ <para>
461+ <xref linkend="opt-services.malcontent.enable" /> Parental Control support
462+ </para>
463+ </listitem>
464+ <listitem>
465+ <para>
466+ <xref linkend="opt-services.matrix-appservice-discord.enable" /> Matrix and Discord bridge
467+ </para>
468+ </listitem>
469+ <listitem>
470+ <para>
471+ <xref linkend="opt-services.mautrix-telegram.enable" /> Matrix-Telegram puppeting/relaybot bridge
472+ </para>
473+ </listitem>
474+ <listitem>
475+ <para>
476+ <xref linkend="opt-services.mirakurun.enable" /> Japanese DTV Tuner Server Service
477+ </para>
478+ </listitem>
479+ <listitem>
480+ <para>
481+ <xref linkend="opt-services.molly-brown.enable" /> Molly-Brown Gemini server
482+ </para>
483+ </listitem>
484+ <listitem>
485+ <para>
486+ <xref linkend="opt-services.mullvad-vpn.enable" /> Mullvad VPN daemon
487+ </para>
488+ </listitem>
489+ <listitem>
490+ <para>
491+ <xref linkend="opt-services.ncdns.enable" /> Namecoin to DNS bridge
492+ </para>
493+ </listitem>
494+ <listitem>
495+ <para>
496+ <xref linkend="opt-services.nextdns.enable" /> NextDNS to DoH Proxy service
497+ </para>
498+ </listitem>
499+ <listitem>
500+ <para>
501+ <xref linkend="opt-services.nix-store-gcs-proxy" /> Google storage bucket to be used as a nix store
502+ </para>
503+ </listitem>
504+ <listitem>
505+ <para>
506+ <xref linkend="opt-services.onedrive.enable" /> OneDrive sync service
507+ </para>
508+ </listitem>
509+ <listitem>
510+ <para>
511+ <xref linkend="opt-services.pinnwand.enable" /> Pastebin-like service
512+ </para>
513+ </listitem>
514+ <listitem>
515+ <para>
516+ <xref linkend="opt-services.pixiecore.enable" /> Manage network booting of machines
517+ </para>
518+ </listitem>
519+ <listitem>
520+ <para>
521+ <xref linkend="opt-services.privacyidea.enable" /> Privacy authentication server
522+ </para>
523+ </listitem>
524+ <listitem>
525+ <para>
526+ <xref linkend="opt-services.quorum.enable" /> Quorum blockchain daemon
527+ </para>
528+ </listitem>
529+ <listitem>
530+ <para>
531+ <xref linkend="opt-services.robustirc-bridge.enable" /> RobustIRC bridge
532+ </para>
533+ </listitem>
534+ <listitem>
535+ <para>
536+ <xref linkend="opt-services.rss-bridge.enable" /> Generate RSS and Atom feeds
537+ </para>
538+ </listitem>
539+ <listitem>
540+ <para>
541+ <xref linkend="opt-services.rtorrent.enable" /> rTorrent service
542+ </para>
543+ </listitem>
544+ <listitem>
545+ <para>
546+ <xref linkend="opt-services.smartdns.enable" /> SmartDNS DNS server
547+ </para>
548+ </listitem>
549+ <listitem>
550+ <para>
551+ <xref linkend="opt-services.sogo.enable" /> SOGo groupware
552+ </para>
553+ </listitem>
554+ <listitem>
555+ <para>
556+ <xref linkend="opt-services.teeworlds.enable" /> Teeworlds game server
557+ </para>
558+ </listitem>
559+ <listitem>
560+ <para>
561+ <xref linkend="opt-services.torque.mom.enable" /> torque computing node
562+ </para>
563+ </listitem>
564+ <listitem>
565+ <para>
566+ <xref linkend="opt-services.torque.server.enable" /> torque server
567+ </para>
568+ </listitem>
569+ <listitem>
570+ <para>
571+ <xref linkend="opt-services.tuptime.enable" /> A total uptime service
572+ </para>
573+ </listitem>
574+ <listitem>
575+ <para>
576+ <xref linkend="opt-services.urserver.enable" /> X11 remote server
577+ </para>
578+ </listitem>
579+ <listitem>
580+ <para>
581+ <xref linkend="opt-services.wasabibackend.enable" /> Wasabi backend service
582+ </para>
583+ </listitem>
584+ <listitem>
585+ <para>
586+ <xref linkend="opt-services.yubikey-agent.enable" /> Yubikey agent
587+ </para>
588+ </listitem>
589+ <listitem>
590+ <para>
591+ <xref linkend="opt-services.zigbee2mqtt.enable" /> Zigbee to MQTT bridge
592+ </para>
593+ </listitem>
594+ </itemizedlist>
595 </listitem>
596+597+ </itemizedlist>
598+599+ </section>
600+601+ <section xmlns="http://docbook.org/ns/docbook"
602+ xmlns:xlink="http://www.w3.org/1999/xlink"
603+ xmlns:xi="http://www.w3.org/2001/XInclude"
604+ version="5.0"
605+ xml:id="sec-release-20.09-incompatibilities">
606+ <title>Backward Incompatibilities</title>
607+608+ <para>
609+ When upgrading from a previous release, please be aware of the following
610+ incompatible changes:
611+ </para>
612+613+ <itemizedlist>
614 <listitem>
615 <para>
616 MariaDB has been updated to 10.4, MariaDB Galera to 26.4.
···660 from the default of <literal>mysql</literal> to a different user please change <literal>'mysql'@'localhost'</literal> to the corresponding user instead.
661 </para>
662 </listitem>
663+00000000000000000000000000000664 <listitem>
665 <para>
666 Zabbix now defaults to 5.0, updated from 4.4. Please carefully read through
···695</programlisting>
696 </para>
697 </listitem>
00000000000000000000000000698000000000000699 <listitem>
700 <para>
701+ <package>maxx</package> package removed along with <varname>services.xserver.desktopManager.maxx</varname> module.
702+ Please migrate to <package>cdesktopenv</package> and <varname>services.xserver.desktopManager.cde</varname> module.
0000703 </para>
704 </listitem>
00000000000000000705 <listitem>
706 <para>
707 The <link linkend="opt-services.matrix-synapse.enable">matrix-synapse</link> module no longer includes optional dependencies by default, they have to be added through the <link linkend="opt-services.matrix-synapse.plugins">plugins</link> option.
···728 It can still be enabled by providing <literal>phantomJsSupport = true</literal> to the package instantiation:
729<programlisting>{
730 services.grafana.package = pkgs.grafana.overrideAttrs (oldAttrs: rec {
731+ phantomJsSupport = true;
732 });
733}</programlisting>
734 </para>
···1662 </para>
1663 </listitem>
1664 </itemizedlist>
1665+ </section>
1666+1667+ <section xmlns="http://docbook.org/ns/docbook"
1668+ xmlns:xlink="http://www.w3.org/1999/xlink"
1669+ xmlns:xi="http://www.w3.org/2001/XInclude"
1670+ version="5.0"
1671+ xml:id="sec-release-20.09-contributions">
1672+ <title>Contributions</title>
1673+ <para>
1674+ I, Jonathan Ringer, would like to thank the following individuals for their work on nixpkgs. This release could not be done without the hard work of the NixOS community. There were 31282 contributions across 1313 contributors.
1675+ </para>
1676+ <orderedlist>
1677+ <para>
1678+ Top contributors to NixOS/Nixpkgs from the 20.03 release to the 20.09 release:
1679+ </para>
1680+ <listitem>
1681+ <para>
1682+ 2288 Mario Rodas
1683+ </para>
1684+ </listitem>
1685+ <listitem>
1686+ <para>
1687+ 1837 Frederik Rietdijk
1688+ </para>
1689+ </listitem>
1690+ <listitem>
1691+ <para>
1692+ 946 Jörg Thalheim
1693+ </para>
1694+ </listitem>
1695+ <listitem>
1696+ <para>
1697+ 925 Maximilian Bosch
1698+ </para>
1699+ </listitem>
1700+ <listitem>
1701+ <para>
1702+ 687 Jonathan Ringer
1703+ </para>
1704+ </listitem>
1705+ <listitem>
1706+ <para>
1707+ 651 Jan Tojnar
1708+ </para>
1709+ </listitem>
1710+ <listitem>
1711+ <para>
1712+ 622 Daniël de Kok
1713+ </para>
1714+ </listitem>
1715+ <listitem>
1716+ <para>
1717+ 605 WORLDofPEACE
1718+ </para>
1719+ </listitem>
1720+ <listitem>
1721+ <para>
1722+ 597 Florian Klink
1723+ </para>
1724+ </listitem>
1725+ <listitem>
1726+ <para>
1727+ 528 José Romildo Malaquias
1728+ </para>
1729+ </listitem>
1730+ </orderedlist>
1731+1732+ <orderedlist>
1733+ <para>
1734+ Top contributors to stabilizing this release (Zero Hydra Failures period):
1735+ </para>
1736+ <listitem>
1737+ <para>
1738+ 281 volth
1739+ </para>
1740+ </listitem>
1741+ <listitem>
1742+ <para>
1743+ 101 Robert Scott
1744+ </para>
1745+ </listitem>
1746+ <listitem>
1747+ <para>
1748+ 86 Tim Steinbach
1749+ </para>
1750+ </listitem>
1751+ <listitem>
1752+ <para>
1753+ 76 WORLDofPEACE
1754+ </para>
1755+ </listitem>
1756+ <listitem>
1757+ <para>
1758+ 49 Maximilian Bosch
1759+ </para>
1760+ </listitem>
1761+ <listitem>
1762+ <para>
1763+ 42 Thomas Tuegel
1764+ </para>
1765+ </listitem>
1766+ <listitem>
1767+ <para>
1768+ 37 Doron Behar
1769+ </para>
1770+ </listitem>
1771+ <listitem>
1772+ <para>
1773+ 36 Vladimír Čunát
1774+ </para>
1775+ </listitem>
1776+ <listitem>
1777+ <para>
1778+ 27 Jonathan Ringer
1779+ </para>
1780+ </listitem>
1781+ <listitem>
1782+ <para>
1783+ 27 Maciej Krüger
1784+ </para>
1785+ </listitem>
1786+ </orderedlist>
1787+1788+ <para>
1789+ I, Jonathan Ringer, would also like to personally thank @WORLDofPEACE for their help in mentoring me on the release process. Special thanks also goes to Thomas Tuegel for helping immensely with stabilizing Qt, KDE, and Plasma5; I would also like to thank Robert Scott for his numerous fixes and pull request reviews.
1790+ </para>
1791+1792 </section>
1793</section>
···35 '';
3637 hashedPasswordDescription = ''
38- To generate a hashed password install the <literal>mkpasswd</literal>
39- package and run <literal>mkpasswd -m sha-512</literal>.
4041 If set to an empty string (<literal>""</literal>), this user will
42 be able to log in without being asked for a password (but not via remote
···35 '';
3637 hashedPasswordDescription = ''
38+ To generate a hashed password run <literal>mkpasswd -m sha-512</literal>.
03940 If set to an empty string (<literal>""</literal>), this user will
41 be able to log in without being asked for a password (but not via remote
···318 '';
319 };
320321+ gnupg = {
322+ enable = mkOption {
323+ type = types.bool;
324+ default = false;
325+ description = ''
326+ If enabled, pam_gnupg will attempt to automatically unlock the
327+ user's GPG keys with the login password via
328+ <command>gpg-agent</command>. The keygrips of all keys to be
329+ unlocked should be written to <filename>~/.pam-gnupg</filename>,
330+ and can be queried with <command>gpg -K --with-keygrip</command>.
331+ Presetting passphrases must be enabled by adding
332+ <literal>allow-preset-passphrase</literal> in
333+ <filename>~/.gnupg/gpg-agent.conf</filename>.
334+ '';
335+ };
336+337+ noAutostart = mkOption {
338+ type = types.bool;
339+ default = false;
340+ description = ''
341+ Don't start <command>gpg-agent</command> if it is not running.
342+ Useful in conjunction with starting <command>gpg-agent</command> as
343+ a systemd user service.
344+ '';
345+ };
346+347+ storeOnly = mkOption {
348+ type = types.bool;
349+ default = false;
350+ description = ''
351+ Don't send the password immediately after login, but store for PAM
352+ <literal>session</literal>.
353+ '';
354+ };
355+ };
356+357 text = mkOption {
358 type = types.nullOr types.lines;
359 description = "Contents of the PAM service file.";
···422 || cfg.enableKwallet
423 || cfg.enableGnomeKeyring
424 || cfg.googleAuthenticator.enable
425+ || cfg.gnupg.enable
426 || cfg.duoSecurity.enable)) ''
427 auth required pam_unix.so ${optionalString cfg.allowNullPassword "nullok"} ${optionalString cfg.nodelay "nodelay"} likeauth
428 ${optionalString config.security.pam.enableEcryptfs
···434 " kwalletd=${pkgs.kdeFrameworks.kwallet.bin}/bin/kwalletd5")}
435 ${optionalString cfg.enableGnomeKeyring
436 "auth optional ${pkgs.gnome3.gnome-keyring}/lib/security/pam_gnome_keyring.so"}
437+ ${optionalString cfg.gnupg.enable
438+ "auth optional ${pkgs.pam_gnupg}/lib/security/pam_gnupg.so"
439+ + optionalString cfg.gnupg.storeOnly " store-only"
440+ }
441 ${optionalString cfg.googleAuthenticator.enable
442 "auth required ${pkgs.googleAuthenticator}/lib/security/pam_google_authenticator.so no_increment_hotp"}
443 ${optionalString cfg.duoSecurity.enable
···513 " kwalletd=${pkgs.kdeFrameworks.kwallet.bin}/bin/kwalletd5")}
514 ${optionalString (cfg.enableGnomeKeyring)
515 "session optional ${pkgs.gnome3.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start"}
516+ ${optionalString cfg.gnupg.enable
517+ "session optional ${pkgs.pam_gnupg}/lib/security/pam_gnupg.so"
518+ + optionalString cfg.gnupg.noAutostart " no-autostart"
519+ }
520 ${optionalString (config.virtualisation.lxc.lxcfs.enable)
521 "session optional ${pkgs.lxc}/lib/security/pam_cgfs.so -c all"}
522 '');
+48-4
nixos/modules/services/backup/syncoid.nix
···45let
6 cfg = config.services.syncoid;
0000000007in {
89 # Interface
···2627 user = mkOption {
28 type = types.str;
29- default = "root";
30 example = "backup";
31 description = ''
32- The user for the service. Sudo or ZFS privilege delegation must be
33- configured to use a user other than root.
000034 '';
000000035 };
3637 sshKey = mkOption {
···150 # Implementation
151152 config = mkIf cfg.enable {
000000000000153 systemd.services.syncoid = {
154 description = "Syncoid ZFS synchronization service";
155 script = concatMapStringsSep "\n" (c: lib.escapeShellArgs
···160 ++ c.extraArgs
161 ++ [ "--sendoptions" c.sendOptions
162 "--recvoptions" c.recvOptions
0163 c.source c.target
164 ])) (attrValues cfg.commands);
165 after = [ "zfs.target" ];
166- serviceConfig.User = cfg.user;
00000000000167 startAt = cfg.interval;
168 };
169 };
···45let
6 cfg = config.services.syncoid;
7+8+ # Extract pool names of local datasets (ones that don't contain "@") that
9+ # have the specified type (either "source" or "target")
10+ getPools = type: unique (map (d: head (builtins.match "([^/]+).*" d)) (
11+ # Filter local datasets
12+ filter (d: !hasInfix "@" d)
13+ # Get datasets of the specified type
14+ (catAttrs type (attrValues cfg.commands))
15+ ));
16in {
1718 # Interface
···3536 user = mkOption {
37 type = types.str;
38+ default = "syncoid";
39 example = "backup";
40 description = ''
41+ The user for the service. ZFS privilege delegation will be
42+ automatically configured for any local pools used by syncoid if this
43+ option is set to a user other than root. The user will be given the
44+ "hold" and "send" privileges on any pool that has datasets being sent
45+ and the "create", "mount", "receive", and "rollback" privileges on
46+ any pool that has datasets being received.
47 '';
48+ };
49+50+ group = mkOption {
51+ type = types.str;
52+ default = "syncoid";
53+ example = "backup";
54+ description = "The group for the service.";
55 };
5657 sshKey = mkOption {
···170 # Implementation
171172 config = mkIf cfg.enable {
173+ users = {
174+ users = mkIf (cfg.user == "syncoid") {
175+ syncoid = {
176+ group = cfg.group;
177+ isSystemUser = true;
178+ };
179+ };
180+ groups = mkIf (cfg.group == "syncoid") {
181+ syncoid = {};
182+ };
183+ };
184+185 systemd.services.syncoid = {
186 description = "Syncoid ZFS synchronization service";
187 script = concatMapStringsSep "\n" (c: lib.escapeShellArgs
···192 ++ c.extraArgs
193 ++ [ "--sendoptions" c.sendOptions
194 "--recvoptions" c.recvOptions
195+ "--no-privilege-elevation"
196 c.source c.target
197 ])) (attrValues cfg.commands);
198 after = [ "zfs.target" ];
199+ serviceConfig = {
200+ ExecStartPre = (map (pool: lib.escapeShellArgs [
201+ "+/run/booted-system/sw/bin/zfs" "allow"
202+ cfg.user "hold,send" pool
203+ ]) (getPools "source")) ++
204+ (map (pool: lib.escapeShellArgs [
205+ "+/run/booted-system/sw/bin/zfs" "allow"
206+ cfg.user "create,mount,receive,rollback" pool
207+ ]) (getPools "target"));
208+ User = cfg.user;
209+ Group = cfg.group;
210+ };
211 startAt = cfg.interval;
212 };
213 };
···123 '';
124 };
125126+ passwordFile = mkOption {
127+ type = with types; uniq (nullOr str);
128+ example = "/path/to/file";
129+ default = null;
130+ description = ''
131+ Specifies the path to a file containing the
132+ clear text password for the MQTT user.
133+ '';
134+ };
135+136 hashedPassword = mkOption {
137 type = with types; uniq (nullOr str);
138 default = null;
139 description = ''
140 Specifies the hashed password for the MQTT User.
141+ To generate hashed password install <literal>mosquitto</literal>
142+ package and use <literal>mosquitto_passwd</literal>.
143+ '';
144+ };
145+146+ hashedPasswordFile = mkOption {
147+ type = with types; uniq (nullOr str);
148+ example = "/path/to/file";
149+ default = null;
150+ description = ''
151+ Specifies the path to a file containing the
152+ hashed password for the MQTT user.
153 To generate hashed password install <literal>mosquitto</literal>
154 package and use <literal>mosquitto_passwd</literal>.
155 '';
···211212 config = mkIf cfg.enable {
213214+ assertions = mapAttrsToList (name: cfg: {
215+ assertion = length (filter (s: s != null) (with cfg; [
216+ password passwordFile hashedPassword hashedPasswordFile
217+ ])) <= 1;
218+ message = "Cannot set more than one password option";
219+ }) cfg.users;
220+221 systemd.services.mosquitto = {
222 description = "Mosquitto MQTT Broker Daemon";
223 wantedBy = [ "multi-user.target" ];
···238 touch ${cfg.dataDir}/passwd
239 '' + concatStringsSep "\n" (
240 mapAttrsToList (n: c:
241+ if c.hashedPasswordFile != null then
242+ "echo '${n}:'$(cat '${c.hashedPasswordFile}') >> ${cfg.dataDir}/passwd"
243+ else if c.passwordFile != null then
244+ "${pkgs.mosquitto}/bin/mosquitto_passwd -b ${cfg.dataDir}/passwd ${n} $(cat '${c.passwordFile}')"
245+ else if c.hashedPassword != null then
246 "echo '${n}:${c.hashedPassword}' >> ${cfg.dataDir}/passwd"
247 else optionalString (c.password != null)
248 "${pkgs.mosquitto}/bin/mosquitto_passwd -b ${cfg.dataDir}/passwd ${n} '${c.password}'"
+1-1
nixos/modules/services/web-apps/engelsystem.nix
···10 default = false;
11 example = true;
12 description = ''
13- Whether to enable engelsystem, an online tool for coordinating helpers
14 and shifts on large events.
15 '';
16 type = lib.types.bool;
···10 default = false;
11 example = true;
12 description = ''
13+ Whether to enable engelsystem, an online tool for coordinating volunteers
14 and shifts on large events.
15 '';
16 type = lib.types.bool;
···45 systemd.services."serial-getty@${qemuSerialDevice}".enable = false;
46 systemd.services."serial-getty@hvc0".enable = false;
4748- # Only use a serial console, no TTY.
49- # NOTE: optionalAttrs
50- # test-instrumentation.nix appears to be used without qemu-vm.nix, so
51- # we avoid defining consoles if not possible.
52- # TODO: refactor such that test-instrumentation can import qemu-vm
53- # or declare virtualisation.qemu.console option in a module that's always imported
54- virtualisation.qemu = {
55- consoles = lib.optional (options ? virtualisation.qemu.consoles) qemuSerialDevice;
56- package = lib.mkDefault pkgs.qemu_test;
00000057 };
5859 boot.initrd.preDeviceCommands =
···45 systemd.services."serial-getty@${qemuSerialDevice}".enable = false;
46 systemd.services."serial-getty@hvc0".enable = false;
4748+ # Only set these settings when the options exist. Some tests (e.g. those
49+ # that do not specify any nodes, or an empty attr set as nodes) will not
50+ # have the QEMU module loaded and thuse these options can't and should not
51+ # be set.
52+ virtualisation = lib.optionalAttrs (options ? virtualisation.qemu) {
53+ qemu = {
54+ # Only use a serial console, no TTY.
55+ # NOTE: optionalAttrs
56+ # test-instrumentation.nix appears to be used without qemu-vm.nix, so
57+ # we avoid defining consoles if not possible.
58+ # TODO: refactor such that test-instrumentation can import qemu-vm
59+ # or declare virtualisation.qemu.console option in a module that's always imported
60+ consoles = [ qemuSerialDevice ];
61+ package = lib.mkDefault pkgs.qemu_test;
62+ };
63 };
6465 boot.initrd.preDeviceCommands =
···80 ), "SLAAC temporary address was not configured on client after router advertisement"
8182 with subtest("Verify HTTP debug server is configured"):
83- out = router.succeed("curl localhost:9430/metrics")
8485 assert (
86 "corerad_build_info" in out
···80 ), "SLAAC temporary address was not configured on client after router advertisement"
8182 with subtest("Verify HTTP debug server is configured"):
83+ out = router.succeed("curl -f localhost:9430/metrics")
8485 assert (
86 "corerad_build_info" in out
+2-2
nixos/tests/docker-edge.nix
···43 docker.fail("sudo -u noprivs docker ps")
44 docker.succeed("docker stop sleeping")
4546- # Must match version twice to ensure client and server versions are correct
47- docker.succeed('[ $(docker version | grep ${pkgs.docker-edge.version} | wc -l) = "2" ]')
48 '';
49})
···43 docker.fail("sudo -u noprivs docker ps")
44 docker.succeed("docker stop sleeping")
4546+ # Must match version 4 times to ensure client and server git commits and versions are correct
47+ docker.succeed('[ $(docker version | grep ${pkgs.docker-edge.version} | wc -l) = "4" ]')
48 '';
49})
···39 machine.wait_for_unit("multi-user.target")
40 machine.wait_for_unit("haproxy.service")
41 machine.wait_for_unit("httpd.service")
42- assert "We are all good!" in machine.succeed("curl -k http://localhost:80/index.txt")
43 assert "haproxy_process_pool_allocated_bytes" in machine.succeed(
44- "curl -k http://localhost:80/metrics"
45 )
4647 with subtest("reload"):
···49 # wait some time to ensure the following request hits the reloaded haproxy
50 machine.sleep(5)
51 assert "We are all good!" in machine.succeed(
52- "curl -k http://localhost:80/index.txt"
53 )
54 '';
55})
···39 machine.wait_for_unit("multi-user.target")
40 machine.wait_for_unit("haproxy.service")
41 machine.wait_for_unit("httpd.service")
42+ assert "We are all good!" in machine.succeed("curl -fk http://localhost:80/index.txt")
43 assert "haproxy_process_pool_allocated_bytes" in machine.succeed(
44+ "curl -fk http://localhost:80/metrics"
45 )
4647 with subtest("reload"):
···49 # wait some time to ensure the following request hits the reloaded haproxy
50 machine.sleep(5)
51 assert "We are all good!" in machine.succeed(
52+ "curl -fk http://localhost:80/index.txt"
53 )
54 '';
55})
+1-1
nixos/tests/hitch/default.nix
···28 machine.wait_for_unit("multi-user.target")
29 machine.wait_for_unit("hitch.service")
30 machine.wait_for_open_port(443)
31- assert "We are all good!" in machine.succeed("curl -k https://localhost:443/index.txt")
32 '';
33})
···28 machine.wait_for_unit("multi-user.target")
29 machine.wait_for_unit("hitch.service")
30 machine.wait_for_open_port(443)
31+ assert "We are all good!" in machine.succeed("curl -fk https://localhost:443/index.txt")
32 '';
33})
···2021 machine.wait_for_unit("phpfpm-limesurvey.service")
22 assert "The following surveys are available" in machine.succeed(
23- "curl http://example.local/"
24 )
25 '';
26})
···2021 machine.wait_for_unit("phpfpm-limesurvey.service")
22 assert "The following surveys are available" in machine.succeed(
23+ "curl -f http://example.local/"
24 )
25 '';
26})
+1-1
nixos/tests/mailcatcher.nix
···24 'echo "this is the body of the email" | mail -s "subject" root@example.org'
25 )
26 assert "this is the body of the email" in machine.succeed(
27- "curl http://localhost:1080/messages/1.source"
28 )
29 '';
30})
···24 'echo "this is the body of the email" | mail -s "subject" root@example.org'
25 )
26 assert "this is the body of the email" in machine.succeed(
27+ "curl -f http://localhost:1080/messages/1.source"
28 )
29 '';
30})
···43 machine.wait_for_unit("phpfpm-foobar.service")
4445 # Check so we get an evaluated PHP back
46- response = machine.succeed("curl -vvv -s http://127.0.0.1:80/")
47 assert "PHP Version ${pkgs.php.version}" in response, "PHP version not detected"
4849 # Check so we have database and some other extensions loaded
···43 machine.wait_for_unit("phpfpm-foobar.service")
4445 # Check so we get an evaluated PHP back
46+ response = machine.succeed("curl -fvvv -s http://127.0.0.1:80/")
47 assert "PHP Version ${pkgs.php.version}" in response, "PHP version not detected"
4849 # Check so we have database and some other extensions loaded
+1-1
nixos/tests/php/httpd.nix
···21 machine.wait_for_unit("httpd.service")
2223 # Check so we get an evaluated PHP back
24- response = machine.succeed("curl -vvv -s http://127.0.0.1:80/")
25 assert "PHP Version ${pkgs.php.version}" in response, "PHP version not detected"
2627 # Check so we have database and some other extensions loaded
···21 machine.wait_for_unit("httpd.service")
2223 # Check so we get an evaluated PHP back
24+ response = machine.succeed("curl -fvvv -s http://127.0.0.1:80/")
25 assert "PHP Version ${pkgs.php.version}" in response, "PHP version not detected"
2627 # Check so we have database and some other extensions loaded
+1-1
nixos/tests/php/pcre.nix
···32 ''
33 machine.wait_for_unit("httpd.service")
34 # Ensure php evaluation by matching on the var_dump syntax
35- response = machine.succeed("curl -vvv -s http://127.0.0.1:80/index.php")
36 expected = 'string(${toString (builtins.stringLength testString)}) "${testString}"'
37 assert expected in response, "Does not appear to be able to use subgroups."
38 '';
···32 ''
33 machine.wait_for_unit("httpd.service")
34 # Ensure php evaluation by matching on the var_dump syntax
35+ response = machine.succeed("curl -fvvv -s http://127.0.0.1:80/index.php")
36 expected = 'string(${toString (builtins.stringLength testString)}) "${testString}"'
37 assert expected in response, "Does not appear to be able to use subgroups."
38 '';
+2-2
nixos/tests/prometheus.nix
···193 # Check if prometheus responds to requests:
194 prometheus.wait_for_unit("prometheus.service")
195 prometheus.wait_for_open_port(${toString queryPort})
196- prometheus.succeed("curl -s http://127.0.0.1:${toString queryPort}/metrics")
197198 # Let's test if pushing a metric to the pushgateway succeeds:
199 prometheus.wait_for_unit("pushgateway.service")
200 prometheus.succeed(
201 "echo 'some_metric 3.14' | "
202- + "curl --data-binary \@- "
203 + "http://127.0.0.1:${toString pushgwPort}/metrics/job/some_job"
204 )
205
···193 # Check if prometheus responds to requests:
194 prometheus.wait_for_unit("prometheus.service")
195 prometheus.wait_for_open_port(${toString queryPort})
196+ prometheus.succeed("curl -sf http://127.0.0.1:${toString queryPort}/metrics")
197198 # Let's test if pushing a metric to the pushgateway succeeds:
199 prometheus.wait_for_unit("pushgateway.service")
200 prometheus.succeed(
201 "echo 'some_metric 3.14' | "
202+ + "curl -f --data-binary \@- "
203 + "http://127.0.0.1:${toString pushgwPort}/metrics/job/some_job"
204 )
205
···32 ${gopherHost}.wait_for_unit("spacecookie.service")
33 client.wait_for_unit("network.target")
3435- fileResponse = client.succeed("curl -s gopher://${gopherHost}//${fileName}")
3637 # the file response should return our created file exactly
38 if not (fileResponse == "${fileContent}\n"):
···41 # sanity check on the directory listing: we serve a directory and a file
42 # via gopher, so the directory listing should have exactly two entries,
43 # one with gopher file type 0 (file) and one with file type 1 (directory).
44- dirResponse = client.succeed("curl -s gopher://${gopherHost}")
45 dirEntries = [l[0] for l in dirResponse.split("\n") if len(l) > 0]
46 dirEntries.sort()
47
···32 ${gopherHost}.wait_for_unit("spacecookie.service")
33 client.wait_for_unit("network.target")
3435+ fileResponse = client.succeed("curl -f -s gopher://${gopherHost}//${fileName}")
3637 # the file response should return our created file exactly
38 if not (fileResponse == "${fileContent}\n"):
···41 # sanity check on the directory listing: we serve a directory and a file
42 # via gopher, so the directory listing should have exactly two entries,
43 # one with gopher file type 0 (file) and one with file type 1 (directory).
44+ dirResponse = client.succeed("curl -f -s gopher://${gopherHost}")
45 dirEntries = [l[0] for l in dirResponse.split("\n") if len(l) > 0]
46 dirEntries.sort()
47
+1-1
nixos/tests/sslh.nix
···78 server.succeed(f"grep '{ip}' /tmp/foo{arg}")
7980 # check that http through sslh works
81- assert client.succeed(f"curl {arg} http://server:443").strip() == "hello world"
82 '';
83}
···78 server.succeed(f"grep '{ip}' /tmp/foo{arg}")
7980 # check that http through sslh works
81+ assert client.succeed(f"curl -f {arg} http://server:443").strip() == "hello world"
82 '';
83}
···1920 # write some points and run simple query
21 out = one.succeed(
22- "curl -d 'measurement,tag1=value1,tag2=value2 field1=123,field2=1.23' -X POST 'http://localhost:8428/write'"
23 )
24- cmd = """curl -s -G 'http://localhost:8428/api/v1/export' -d 'match={__name__!=""}'"""
0025 # data takes a while to appear
26 one.wait_until_succeeds(f"[[ $({cmd} | wc -l) -ne 0 ]]")
27 out = one.succeed(cmd)
···1920 # write some points and run simple query
21 out = one.succeed(
22+ "curl -f -d 'measurement,tag1=value1,tag2=value2 field1=123,field2=1.23' -X POST 'http://localhost:8428/write'"
23 )
24+ cmd = (
25+ """curl -f -s -G 'http://localhost:8428/api/v1/export' -d 'match={__name__!=""}'"""
26+ )
27 # data takes a while to appear
28 one.wait_until_succeeds(f"[[ $({cmd} | wc -l) -ne 0 ]]")
29 out = one.succeed(cmd)
+1-1
nixos/tests/web-servers/unit-php.nix
···47 machine.wait_for_unit("unit.service")
4849 # Check so we get an evaluated PHP back
50- response = machine.succeed("curl -vvv -s http://127.0.0.1:9074/")
51 assert "PHP Version ${pkgs.unit.usedPhp74.version}" in response, "PHP version not detected"
5253 # Check so we have database and some other extensions loaded
···47 machine.wait_for_unit("unit.service")
4849 # Check so we get an evaluated PHP back
50+ response = machine.succeed("curl -f -vvv -s http://127.0.0.1:9074/")
51 assert "PHP Version ${pkgs.unit.usedPhp74.version}" in response, "PHP version not detected"
5253 # Check so we have database and some other extensions loaded
+1-1
nixos/tests/wordpress.nix
···4041 with subtest("website returns welcome screen"):
42 for site_name in site_names:
43- assert "Welcome to the famous" in machine.succeed(f"curl -L {site_name}")
4445 with subtest("wordpress-init went through"):
46 for site_name in site_names:
···4041 with subtest("website returns welcome screen"):
42 for site_name in site_names:
43+ assert "Welcome to the famous" in machine.succeed(f"curl -fL {site_name}")
4445 with subtest("wordpress-init went through"):
46 for site_name in site_names:
···3738 meta = {
39 homepage = "http://eflite.sourceforge.net";
40- description = "EFlite is a speech server for screen readers";
41 longDescription = ''
42 EFlite is a speech server for Emacspeak and other screen
43 readers that allows them to interface with Festival Lite,
···3738 meta = {
39 homepage = "http://eflite.sourceforge.net";
40+ description = "Speech server for screen readers";
41 longDescription = ''
42 EFlite is a speech server for Emacspeak and other screen
43 readers that allows them to interface with Festival Lite,
···42 '';
4344 meta = with stdenv.lib; {
45- description = "Picoloop is a synth and a stepsequencer (a clone of the famous nanoloop)";
46 homepage = "https://github.com/yoyz/picoloop";
47 platforms = platforms.linux;
48 license = licenses.bsd3;
···42 '';
4344 meta = with stdenv.lib; {
45+ description = "A synth and a stepsequencer (a clone of the famous nanoloop)";
46 homepage = "https://github.com/yoyz/picoloop";
47 platforms = platforms.linux;
48 license = licenses.bsd3;
···26 enableParallelBuilding = true;
2728 meta = with lib; {
29- description = "Sumokoin is a fork of Monero and a truely fungible cryptocurrency";
30 homepage = "https://www.sumokoin.org/";
31 license = licenses.bsd3;
32 maintainers = with maintainers; [ fpletz ];
···26 enableParallelBuilding = true;
2728 meta = with lib; {
29+ description = "A fork of Monero and a truely fungible cryptocurrency";
30 homepage = "https://www.sumokoin.org/";
31 license = licenses.bsd3;
32 maintainers = with maintainers; [ fpletz ];
···268269 clion = buildClion rec {
270 name = "clion-${version}";
271- version = "2020.2.3"; /* updated by script */
272 description = "C/C++ IDE. New. Intelligent. Cross-platform";
273 license = stdenv.lib.licenses.unfree;
274 src = fetchurl {
275 url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
276- sha256 = "1kdlmdsfxmwks3rk2dzm5q30vwzpxcwzpyjsir122k36xnqvaqxq"; /* updated by script */
277 };
278 wmClass = "jetbrains-clion";
279 update-channel = "CLion RELEASE"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
···307308 idea-community = buildIdea rec {
309 name = "idea-community-${version}";
310- version = "2020.2.2"; /* updated by script */
311 description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
312 license = stdenv.lib.licenses.asl20;
313 src = fetchurl {
314 url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
315- sha256 = "0kbn9q7fvhrzb1w6l8i2nv4cx8qrj74jp7fidj9yk8vkv9lfijg6"; /* updated by script */
316 };
317 wmClass = "jetbrains-idea-ce";
318 update-channel = "IntelliJ IDEA RELEASE";
···320321 idea-ultimate = buildIdea rec {
322 name = "idea-ultimate-${version}";
323- version = "2020.2.2"; /* updated by script */
324 description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
325 license = stdenv.lib.licenses.unfree;
326 src = fetchurl {
327 url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jbr.tar.gz";
328- sha256 = "1196zrcbgrr9271kjrzd2mzvhvxd7hkr1d2a4ij4h8f97qmsd6r6"; /* updated by script */
329 };
330 wmClass = "jetbrains-idea";
331 update-channel = "IntelliJ IDEA RELEASE";
···333334 mps = buildMps rec {
335 name = "mps-${version}";
336- version = "2020.2"; /* updated by script */
337 description = "Create your own domain-specific language";
338 license = stdenv.lib.licenses.unfree;
339 src = fetchurl {
340 url = "https://download.jetbrains.com/mps/2020.2/MPS-${version}.tar.gz";
341- sha256 = "06c0yv9vvz0y5njh1sghn7ijpn1d81mxsyk5xjpj29bvvg511pjs"; /* updated by script */
342 };
343 wmClass = "jetbrains-mps";
344 update-channel = "MPS RELEASE";
···346347 phpstorm = buildPhpStorm rec {
348 name = "phpstorm-${version}";
349- version = "2020.2.1"; /* updated by script */
350 description = "Professional IDE for Web and PHP developers";
351 license = stdenv.lib.licenses.unfree;
352 src = fetchurl {
353 url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
354- sha256 = "14hz6w5lgn8ddscicm4s9xhi07j5adsq0bmyr8amzmj5q6jgw4p9"; /* updated by script */
355 };
356 wmClass = "jetbrains-phpstorm";
357 update-channel = "PhpStorm RELEASE";
···359360 pycharm-community = buildPycharm rec {
361 name = "pycharm-community-${version}";
362- version = "2020.2.2"; /* updated by script */
363 description = "PyCharm Community Edition";
364 license = stdenv.lib.licenses.asl20;
365 src = fetchurl {
366 url = "https://download.jetbrains.com/python/${name}.tar.gz";
367- sha256 = "1a1vhlc2q5n3dxli0x6ppxx3mgary4gpakcxdp9nylmixjzjph6v"; /* updated by script */
368 };
369 wmClass = "jetbrains-pycharm-ce";
370 update-channel = "PyCharm RELEASE";
···372373 pycharm-professional = buildPycharm rec {
374 name = "pycharm-professional-${version}";
375- version = "2020.2.2"; /* updated by script */
376 description = "PyCharm Professional Edition";
377 license = stdenv.lib.licenses.unfree;
378 src = fetchurl {
379 url = "https://download.jetbrains.com/python/${name}.tar.gz";
380- sha256 = "0v64f5sbv1639d6fjg0shfgdy40f1xc2zbn0jqfrx6xmkg7wgsz9"; /* updated by script */
381 };
382 wmClass = "jetbrains-pycharm";
383 update-channel = "PyCharm RELEASE";
···385386 rider = buildRider rec {
387 name = "rider-${version}";
388- version = "2020.2.3"; /* updated by script */
389 description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper";
390 license = stdenv.lib.licenses.unfree;
391 src = fetchurl {
392 url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz";
393- sha256 = "01namzd29chj975w3awanlzf38hh30cfjzyljqfkp6y3djn0if1r"; /* updated by script */
394 };
395 wmClass = "jetbrains-rider";
396 update-channel = "Rider RELEASE";
···398399 ruby-mine = buildRubyMine rec {
400 name = "ruby-mine-${version}";
401- version = "2020.2.2"; /* updated by script */
402 description = "The Most Intelligent Ruby and Rails IDE";
403 license = stdenv.lib.licenses.unfree;
404 src = fetchurl {
405 url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
406- sha256 = "11v26hpf891nq5vj8i0ad4shhzpy8b7rvyrkr3l29dwfnd83lgpz"; /* updated by script */
407 };
408 wmClass = "jetbrains-rubymine";
409 update-channel = "RubyMine RELEASE";
···411412 webstorm = buildWebStorm rec {
413 name = "webstorm-${version}";
414- version = "2020.2.2"; /* updated by script */
415 description = "Professional IDE for Web and JavaScript development";
416 license = stdenv.lib.licenses.unfree;
417 src = fetchurl {
418 url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
419- sha256 = "1w17cf0qj0vyizkzj1frcmi52q5qxbf31msg8df38wy2l8r0b928"; /* updated by script */
420 };
421 wmClass = "jetbrains-webstorm";
422 update-channel = "WebStorm RELEASE";
···268269 clion = buildClion rec {
270 name = "clion-${version}";
271+ version = "2020.2.4"; /* updated by script */
272 description = "C/C++ IDE. New. Intelligent. Cross-platform";
273 license = stdenv.lib.licenses.unfree;
274 src = fetchurl {
275 url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
276+ sha256 = "0xkra8l3ga8qsmzbvfisn99lxm5wxa8c4d4jzljjwn8855bs20a3"; /* updated by script */
277 };
278 wmClass = "jetbrains-clion";
279 update-channel = "CLion RELEASE"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
···307308 idea-community = buildIdea rec {
309 name = "idea-community-${version}";
310+ version = "2020.2.3"; /* updated by script */
311 description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
312 license = stdenv.lib.licenses.asl20;
313 src = fetchurl {
314 url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
315+ sha256 = "092swkz7l1p3asrna6fxj6j324sh7pdbgzrlapdwka8kq9y40ajz"; /* updated by script */
316 };
317 wmClass = "jetbrains-idea-ce";
318 update-channel = "IntelliJ IDEA RELEASE";
···320321 idea-ultimate = buildIdea rec {
322 name = "idea-ultimate-${version}";
323+ version = "2020.2.3"; /* updated by script */
324 description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
325 license = stdenv.lib.licenses.unfree;
326 src = fetchurl {
327 url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jbr.tar.gz";
328+ sha256 = "1416ikna169d2hx77yd0bb8hpxkpnf27jgyq5yrgla1w6h1fp1p0"; /* updated by script */
329 };
330 wmClass = "jetbrains-idea";
331 update-channel = "IntelliJ IDEA RELEASE";
···333334 mps = buildMps rec {
335 name = "mps-${version}";
336+ version = "2020.2.2"; /* updated by script */
337 description = "Create your own domain-specific language";
338 license = stdenv.lib.licenses.unfree;
339 src = fetchurl {
340 url = "https://download.jetbrains.com/mps/2020.2/MPS-${version}.tar.gz";
341+ sha256 = "1a09yahky8ii2dypj69m89c3yh7akn7sa74n0j0mff7r46ad421y"; /* updated by script */
342 };
343 wmClass = "jetbrains-mps";
344 update-channel = "MPS RELEASE";
···346347 phpstorm = buildPhpStorm rec {
348 name = "phpstorm-${version}";
349+ version = "2020.2.3"; /* updated by script */
350 description = "Professional IDE for Web and PHP developers";
351 license = stdenv.lib.licenses.unfree;
352 src = fetchurl {
353 url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
354+ sha256 = "0bdxmxml6337cdpb2amhdqlvxicng50cgzlnmiw0wqnmwj5ihpih"; /* updated by script */
355 };
356 wmClass = "jetbrains-phpstorm";
357 update-channel = "PhpStorm RELEASE";
···359360 pycharm-community = buildPycharm rec {
361 name = "pycharm-community-${version}";
362+ version = "2020.2.3"; /* updated by script */
363 description = "PyCharm Community Edition";
364 license = stdenv.lib.licenses.asl20;
365 src = fetchurl {
366 url = "https://download.jetbrains.com/python/${name}.tar.gz";
367+ sha256 = "0wqhcag32fxqxg6aml2a3d0rpds0d48rgbcl7cp0ah8xj6x72047"; /* updated by script */
368 };
369 wmClass = "jetbrains-pycharm-ce";
370 update-channel = "PyCharm RELEASE";
···372373 pycharm-professional = buildPycharm rec {
374 name = "pycharm-professional-${version}";
375+ version = "2020.2.3"; /* updated by script */
376 description = "PyCharm Professional Edition";
377 license = stdenv.lib.licenses.unfree;
378 src = fetchurl {
379 url = "https://download.jetbrains.com/python/${name}.tar.gz";
380+ sha256 = "0g7bki4bzi3a1w3rlwik2w0ma10xb4g450qxm4fr4fp8dy2xaysc"; /* updated by script */
381 };
382 wmClass = "jetbrains-pycharm";
383 update-channel = "PyCharm RELEASE";
···385386 rider = buildRider rec {
387 name = "rider-${version}";
388+ version = "2020.2.4"; /* updated by script */
389 description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper";
390 license = stdenv.lib.licenses.unfree;
391 src = fetchurl {
392 url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz";
393+ sha256 = "1anl48ifv5ayqn876dqckxc1b5fw1271pvamzf1vvk501wv6dpaf"; /* updated by script */
394 };
395 wmClass = "jetbrains-rider";
396 update-channel = "Rider RELEASE";
···398399 ruby-mine = buildRubyMine rec {
400 name = "ruby-mine-${version}";
401+ version = "2020.2.3"; /* updated by script */
402 description = "The Most Intelligent Ruby and Rails IDE";
403 license = stdenv.lib.licenses.unfree;
404 src = fetchurl {
405 url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
406+ sha256 = "03f1z7xhz90j9l8xp3il115yvb15kda0i6ba5ndhby7nf52vnphk"; /* updated by script */
407 };
408 wmClass = "jetbrains-rubymine";
409 update-channel = "RubyMine RELEASE";
···411412 webstorm = buildWebStorm rec {
413 name = "webstorm-${version}";
414+ version = "2020.2.3"; /* updated by script */
415 description = "Professional IDE for Web and JavaScript development";
416 license = stdenv.lib.licenses.unfree;
417 src = fetchurl {
418 url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
419+ sha256 = "1c60k38ai63s4779fs55vaiswfc6bi7ki6p96hrmmkrnpzgsipg5"; /* updated by script */
420 };
421 wmClass = "jetbrains-webstorm";
422 update-channel = "WebStorm RELEASE";
+1-1
pkgs/applications/editors/kile/default.nix
···52 propagatedUserEnvPkgs = [ konsole ];
5354 meta = {
55- description = "Kile is a user friendly TeX/LaTeX authoring tool for the KDE desktop environment";
56 homepage = "https://www.kde.org/applications/office/kile/";
57 maintainers = with lib.maintainers; [ fridh ];
58 license = lib.licenses.gpl2Plus;
···52 propagatedUserEnvPkgs = [ konsole ];
5354 meta = {
55+ description = "User-friendly TeX/LaTeX authoring tool for the KDE desktop environment";
56 homepage = "https://www.kde.org/applications/office/kile/";
57 maintainers = with lib.maintainers; [ fridh ];
58 license = lib.licenses.gpl2Plus;
+1-1
pkgs/applications/graphics/gnuclad/default.nix
···1617 meta = with stdenv.lib; {
18 homepage = "https://launchpad.net/gnuclad";
19- description = "gnuclad tries to help the environment by creating trees. It's primary use will be generating cladogram trees for the GNU/Linux distro timeline project";
20 license = licenses.gpl3Plus;
21 maintainers = with maintainers; [ mog ];
22 platforms = platforms.linux;
···1617 meta = with stdenv.lib; {
18 homepage = "https://launchpad.net/gnuclad";
19+ description = "gnuclad tries to help the environment by creating trees. Its primary use will be generating cladogram trees for the GNU/Linux distro timeline project";
20 license = licenses.gpl3Plus;
21 maintainers = with maintainers; [ mog ];
22 platforms = platforms.linux;
+2-2
pkgs/applications/graphics/krita/default.nix
···1011mkDerivation rec {
12 pname = "krita";
13- version = "4.3.0";
1415 src = fetchurl {
16 url = "https://download.kde.org/stable/${pname}/${version}/${pname}-${version}.tar.xz";
17- sha256 = "19qlpp9ds60bab73pwi64dq1zn4zn2hcdkrxhjr1j438mc4pflsd";
18 };
1920 # *somtimes* fails with can't find ui_manager.h, also see https://github.com/NixOS/nixpkgs/issues/35359
···1011mkDerivation rec {
12 pname = "krita";
13+ version = "4.4.0";
1415 src = fetchurl {
16 url = "https://download.kde.org/stable/${pname}/${version}/${pname}-${version}.tar.xz";
17+ sha256 = "0ydmxql8iym62q0nqwn9mnb94jz1nh84i6bni0mgzwjk8p4zfzw3";
18 };
1920 # *somtimes* fails with can't find ui_manager.h, also see https://github.com/NixOS/nixpkgs/issues/35359
+1-1
pkgs/applications/graphics/lightburn/default.nix
···40 '';
4142 meta = {
43- description = "LightBurn is layout, editing, and control software for your laser cutter";
44 homepage = "https://lightburnsoftware.com/";
45 license = stdenv.lib.licenses.unfree;
46 maintainers = with stdenv.lib.maintainers; [ q3k ];
···40 '';
4142 meta = {
43+ description = "Layout, editing, and control software for your laser cutter";
44 homepage = "https://lightburnsoftware.com/";
45 license = stdenv.lib.licenses.unfree;
46 maintainers = with stdenv.lib.maintainers; [ q3k ];
···7 name = "bomber";
8 meta = with lib; {
9 homepage = "https://kde.org/applications/en/games/org.kde.bomber";
10- description = "Bomber is a single player arcade game";
11 longDescription = ''
12 Bomber is a single player arcade game. The player is invading various
13 cities in a plane that is decreasing in height.
···7 name = "bomber";
8 meta = with lib; {
9 homepage = "https://kde.org/applications/en/games/org.kde.bomber";
10+ description = "A single player arcade game";
11 longDescription = ''
12 Bomber is a single player arcade game. The player is invading various
13 cities in a plane that is decreasing in height.
+1-1
pkgs/applications/kde/granatier.nix
···7 name = "granatier";
8 meta = with lib; {
9 homepage = "https://kde.org/applications/en/games/org.kde.granatier";
10- description = "Granatier is a clone of the classic Bomberman game";
11 maintainers = with maintainers; [ freezeboy ];
12 license = licenses.gpl2Plus;
13 platforms = platforms.linux;
···7 name = "granatier";
8 meta = with lib; {
9 homepage = "https://kde.org/applications/en/games/org.kde.granatier";
10+ description = "Clone of the classic Bomberman game";
11 maintainers = with maintainers; [ freezeboy ];
12 license = licenses.gpl2Plus;
13 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kalzium.nix
···4 name = "kalzium";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.kalzium";
7- description = "Kalzium is a program that shows you the Periodic Table of Elements";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kalzium";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.kalzium";
7+ description = "Program that shows you the Periodic Table of Elements";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kapman.nix
···4 name = "kapman";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kapman";
7- description = "Kapman is a clone of the well known game Pac-Man";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kapman";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kapman";
7+ description = "Clone of the well known game Pac-Man";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/katomic.nix
···4 name = "katomic";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.katomic";
7- description = "KAtomic is a fun educational game built around molecular geometry";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "katomic";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.katomic";
7+ description = "Fun educational game built around molecular geometry";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kblackbox.nix
···4 name = "kblackbox";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kblackbox";
7- description = "KBlackbox is a game of hide and seek played on a grid of boxes";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kblackbox";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kblackbox";
7+ description = "Game of hide and seek played on a grid of boxes";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kblocks.nix
···4 name = "kblocks";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kblocks";
7- description = "KBlocks is the classic falling blocks game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kblocks";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kblocks";
7+ description = "Classic falling blocks game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kbounce.nix
···4 name = "kbounce";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kbounce";
7- description = "KBounce is a single player arcade game with the elements of puzzle";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kbounce";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kbounce";
7+ description = "Single player arcade game with the elements of puzzle";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kdiamond.nix
···4 name = "kdiamond";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kdiamond";
7- description = "KDiamond is a single player puzzle game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kdiamond";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kdiamond";
7+ description = "A single player puzzle game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kfloppy.nix
···4 name = "kfloppy";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.kfloppy";
7- description = "KFloppy is a utility to format 3.5\" and 5.25\" floppy disks";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kfloppy";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.kfloppy";
7+ description = "Utility to format 3.5\" and 5.25\" floppy disks";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/klettres.nix
···4 name = "klettres";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.klettres";
7- description = "KLettres is an application specially designed to help the user to learn an alphabet";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "klettres";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.klettres";
7+ description = "An application specially designed to help the user to learn an alphabet";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/klines.nix
···4 name = "klines";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.klines";
7- description = "KLines is a simple but highly addictive one player game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "klines";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.klines";
7+ description = "A simple but highly addictive one player game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kmag.nix
···4 name = "kmag";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.kmag";
7- description = "KMag is a small utility for Linux to magnify a part of the screen";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kmag";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.kmag";
7+ description = "A small Linux utility to magnify a part of the screen";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kmines.nix
···4 name = "kmines";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kmines";
7- description = "KMines is a classic Minesweeper game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kmines";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kmines";
7+ description = "A classic Minesweeper game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/knetwalk.nix
···4 name = "knetwalk";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.knetwalk";
7- description = "KNetWalk is a single player logic game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "knetwalk";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.knetwalk";
7+ description = "A single player logic game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/knights.nix
···4 name = "knights";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.knights";
7- description = "KNights is a chess game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "knights";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.knights";
7+ description = "A chess game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kollision.nix
···4 name = "kollision";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kollision";
7- description = "Kollision is a casual game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kollision";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kollision";
7+ description = "A casual game";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kreversi.nix
···4 name = "kreversi";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kreversi";
7- description = "KReversi is a simple one player strategy game played against the computer";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kreversi";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kreversi";
7+ description = "A simple one player strategy game played against the computer";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kshisen.nix
···4 name = "kshisen";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kshisen";
7- description = "KShisen is a solitaire-like game played using the standard set of Mahjong tiles";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kshisen";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.kshisen";
7+ description = "A solitaire-like game played using the standard set of Mahjong tiles";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/ksquares.nix
···4 name = "ksquares";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.ksquares";
7- description = "KSquares is a game of Dots and Boxes";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "ksquares";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/games/org.kde.ksquares";
7+ description = "A game of Dots and Boxes";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kteatime.nix
···4 name = "kteatime";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.kteatime";
7- description = "KTeaTime is a handy timer for steeping tea";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kteatime";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.kteatime";
7+ description = "A handy timer for steeping tea";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/ktimer.nix
···4 name = "ktimer";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.ktimer";
7- description = "KTimer is a little tool to execute programs after some time";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "ktimer";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.ktimer";
7+ description = "A little tool to execute programs after some time";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kturtle.nix
···4 name = "kturtle";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.kturtle";
7- description = "KTurtle is an educational programming environment for learning how to program";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
···4 name = "kturtle";
5 meta = with lib; {
6 homepage = "https://kde.org/applications/en/utilities/org.kde.kturtle";
7+ description = "An educational programming environment for learning how to program";
8 maintainers = with maintainers; [ freezeboy ];
9 license = licenses.gpl2Plus;
10 platforms = platforms.linux;
+1-1
pkgs/applications/kde/kwave.nix
···5 name = "kwave";
6 meta = with lib; {
7 homepage = "https://kde.org/applications/en/multimedia/org.kde.kwave";
8- description = "KWave is a simple media player";
9 maintainers = with maintainers; [ freezeboy ];
10 license = licenses.gpl2Plus;
11 platforms = platforms.linux;
···5 name = "kwave";
6 meta = with lib; {
7 homepage = "https://kde.org/applications/en/multimedia/org.kde.kwave";
8+ description = "A simple media player";
9 maintainers = with maintainers; [ freezeboy ];
10 license = licenses.gpl2Plus;
11 platforms = platforms.linux;
···1+{ stdenv
2+, fetchFromGitLab
3+, extra-cmake-modules
4+, botan2
5+, karchive
6+, kauth
7+, libdrm
8+, mesa-demos
9+, procps
10+, utillinux
11+, vulkan-tools
12+, qtbase
13+, qtcharts
14+, qtquickcontrols2
15+, qtsvg
16+, qttools
17+, qtxmlpatterns
18+, wrapQtAppsHook
19+} :
20+21+stdenv.mkDerivation rec{
22+ pname = "corectrl";
23+ version = "1.1.1";
24+25+ src = fetchFromGitLab {
26+ owner = "corectrl";
27+ repo = "corectrl";
28+ rev = "v${version}";
29+ sha256 = "sha256-YQDrxPqCa3OzNKd3UiAffqqvOrgbXmDFJGjYPetolyY=";
30+ };
31+32+ nativeBuildInputs = [
33+ extra-cmake-modules
34+ wrapQtAppsHook
35+ ];
36+ buildInputs = [
37+ botan2
38+ karchive
39+ kauth
40+ libdrm
41+ mesa-demos
42+ procps
43+ utillinux
44+ vulkan-tools
45+ qtbase
46+ qtcharts
47+ qtquickcontrols2
48+ qtsvg
49+ qttools
50+ qtxmlpatterns
51+ ];
52+53+ runtimeDeps = [ mesa-demos vulkan-tools ];
54+ binPath = stdenv.lib.makeBinPath runtimeDeps;
55+56+ dontWrapQtApps = true;
57+58+ postInstall = ''
59+ wrapQtApp $out/bin/corectrl --prefix PATH ":" ${binPath}
60+ '';
61+62+ meta = with stdenv.lib; {
63+ homepage = "https://gitlab.com/corectrl/corectrl/";
64+ description = "Control your computer hardware via application profiles";
65+ longDescription = ''
66+ CoreCtrl is a Free and Open Source GNU/Linux application that allows you
67+ to control with ease your computer hardware using application profiles. It
68+ aims to be flexible, comfortable and accessible to regular users.
69+ '';
70+ license = licenses.gpl3Plus;
71+ platforms = platforms.linux;
72+ };
73+}
74+# TODO: report upstream that libdrm is not detected at configure time
+1-1
pkgs/applications/misc/dockbarx/default.nix
···3031 meta = with stdenv.lib; {
32 homepage = "https://launchpad.net/dockbar/";
33- description = "DockBarX is a lightweight taskbar / panel replacement for Linux which works as a stand-alone dock";
34 license = licenses.gpl3;
35 platforms = platforms.linux;
36 maintainers = [ maintainers.volth ];
···3031 meta = with stdenv.lib; {
32 homepage = "https://launchpad.net/dockbar/";
33+ description = "Lightweight taskbar / panel replacement for Linux which works as a stand-alone dock";
34 license = licenses.gpl3;
35 platforms = platforms.linux;
36 maintainers = [ maintainers.volth ];
···20 version = "0.9-1";
2122 src = fetchFromGitHub {
23- owner = "mcuelenaere";
24 repo = "fsv";
25 rev = "${pname}-${version}";
26 sha256 = "0n09jd7yqj18mx6zqbg7kab4idg5llr15g6avafj74fpg1h7iimj";
···35 buildInputs = [ file gtk2 libGLU gtkglarea ];
3637 meta = with stdenv.lib; {
38- description = "fsv is a file system visualizer in cyberspace";
39 longDescription = ''
40 fsv (pronounced eff-ess-vee) is a file system visualizer in cyberspace.
41 It lays out files and directories in three dimensions, geometrically
···20 version = "0.9-1";
2122 src = fetchFromGitHub {
23+ owner = "mcuelenaere";
24 repo = "fsv";
25 rev = "${pname}-${version}";
26 sha256 = "0n09jd7yqj18mx6zqbg7kab4idg5llr15g6avafj74fpg1h7iimj";
···35 buildInputs = [ file gtk2 libGLU gtkglarea ];
3637 meta = with stdenv.lib; {
38+ description = "File system visualizer in cyberspace";
39 longDescription = ''
40 fsv (pronounced eff-ess-vee) is a file system visualizer in cyberspace.
41 It lays out files and directories in three dimensions, geometrically
+1-1
pkgs/applications/misc/grsync/default.nix
···23 ];
2425 meta = with stdenv.lib; {
26- description = "Grsync is used to synchronize folders, files and make backups";
27 homepage = "http://www.opbyte.it/grsync/";
28 license = licenses.gpl1;
29 platforms = platforms.linux;
···23 ];
2425 meta = with stdenv.lib; {
26+ description = "Synchronize folders, files and make backups";
27 homepage = "http://www.opbyte.it/grsync/";
28 license = licenses.gpl1;
29 platforms = platforms.linux;
···3}:
4let
5 appname = "SuperSlicer";
6- version = "2.2.54.0";
7 pname = "super-slicer";
8 description = "PrusaSlicer fork with more features and faster development cycle";
9 override = super: {
···12 src = fetchFromGitHub {
13 owner = "supermerill";
14 repo = "SuperSlicer";
15- sha256 = "sha256-vvuUecysSdBvGBKOariQnsGJ9/Qccwp/lSq8WCED+Uk=";
16 rev = version;
17 };
18
···3}:
4let
5 appname = "SuperSlicer";
6+ version = "2.2.54.1";
7 pname = "super-slicer";
8 description = "PrusaSlicer fork with more features and faster development cycle";
9 override = super: {
···12 src = fetchFromGitHub {
13 owner = "supermerill";
14 repo = "SuperSlicer";
15+ sha256 = "sha256-0NWrck9nqAlc8xX3nTrRlnzjso4MRRjJSW7bUvCX6Y4=";
16 rev = version;
17 };
18
+1-1
pkgs/applications/misc/rsibreak/default.nix
···20 propagatedBuildInputs = [ knotifyconfig kidletime kwindowsystem ktextwidgets kcrash ];
2122 meta = with lib; {
23- description = "RSIBreak takes care of your health and regularly breaks your work to avoid repetitive strain injury (RSI)";
24 license = licenses.gpl2;
25 homepage = "https://www.kde.org/applications/utilities/rsibreak/";
26 maintainers = with maintainers; [ vandenoever ];
···20 propagatedBuildInputs = [ knotifyconfig kidletime kwindowsystem ktextwidgets kcrash ];
2122 meta = with lib; {
23+ description = "Takes care of your health and regularly breaks your work to avoid repetitive strain injury (RSI)";
24 license = licenses.gpl2;
25 homepage = "https://www.kde.org/applications/utilities/rsibreak/";
26 maintainers = with maintainers; [ vandenoever ];
···35 '';
3637 meta = with lib; {
38- description = "JX is a command line tool for installing and using Jenkins X";
39 homepage = "https://jenkins-x.io";
40 longDescription = ''
41 Jenkins X provides automated CI+CD for Kubernetes with Preview
···35 '';
3637 meta = with lib; {
38+ description = "Command line tool for installing and using Jenkins X";
39 homepage = "https://jenkins-x.io";
40 longDescription = ''
41 Jenkins X provides automated CI+CD for Kubernetes with Preview
···52 ];
5354 meta = with lib; {
55- description = "Prow is a Kubernetes based CI/CD system";
56 longDescription = ''
57 Prow is a Kubernetes based CI/CD system. Jobs can be triggered by various
58 types of events and report their status to many different services. In
···52 ];
5354 meta = with lib; {
55+ description = "A Kubernetes based CI/CD system";
56 longDescription = ''
57 Prow is a Kubernetes based CI/CD system. Jobs can be triggered by various
58 types of events and report their status to many different services. In
···54 '';
5556 meta = with stdenv.lib; {
57- description = "aerc is an email client for your terminal";
58 homepage = "https://aerc-mail.org/";
59 maintainers = with maintainers; [ tadeokondrak ];
60 license = licenses.mit;
···54 '';
5556 meta = with stdenv.lib; {
57+ description = "An email client for your terminal";
58 homepage = "https://aerc-mail.org/";
59 maintainers = with maintainers; [ tadeokondrak ];
60 license = licenses.mit;
···35 ++ stdenv.lib.optional enableXXHash xxHash;
36 nativeBuildInputs = [perl];
3738+ configureFlags = ["--with-nobody-group=nogroup"]
39+ # Work around issue with cross-compilation:
40+ # configure.sh: error: cannot run test program while cross compiling
41+ # Remove once 3.2.4 or more recent is released.
42+ # The following PR should fix the cross-compilation issue.
43+ # Test using `nix-build -A pkgsCross.aarch64-multiplatform.rsync`.
44+ # https://github.com/WayneD/rsync/commit/b7fab6f285ff0ff3816b109a8c3131b6ded0b484
45+ ++ stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "--enable-simd=no"
46+ ;
4748 passthru.tests = { inherit (nixosTests) rsyncd; };
49
···21 buildInputs = [ libyamlcpp ];
2223 meta = with stdenv.lib; {
24- description = "dcm2niix DICOM to NIfTI converter";
25 longDescription = ''
26 dcm2niix is a designed to convert neuroimaging data from the
27 DICOM format to the NIfTI format.
···21 buildInputs = [ libyamlcpp ];
2223 meta = with stdenv.lib; {
24+ description = "DICOM to NIfTI converter";
25 longDescription = ''
26 dcm2niix is a designed to convert neuroimaging data from the
27 DICOM format to the NIfTI format.
···21 enableParallelBuilding = false;
2223 meta = with stdenv.lib; {
24- description = "Kallisto is a program for quantifying abundances of transcripts from RNA-Seq data";
25 homepage = "https://pachterlab.github.io/kallisto";
26 license = licenses.bsd2;
27 platforms = platforms.linux;
···21 enableParallelBuilding = false;
2223 meta = with stdenv.lib; {
24+ description = "Program for quantifying abundances of transcripts from RNA-Seq data";
25 homepage = "https://pachterlab.github.io/kallisto";
26 license = licenses.bsd2;
27 platforms = platforms.linux;
···1{ stdenv, fetchgit, ocaml }:
23-let
4 version = "20170720";
5in
6···22 '';
2324 meta = with stdenv.lib; {
25- description = "coq2html is an HTML documentation generator for Coq source files";
26 longDescription = ''
27 coq2html is an HTML documentation generator for Coq source files. It is
28 an alternative to the standard coqdoc documentation generator
···1{ stdenv, fetchgit, ocaml }:
23+let
4 version = "20170720";
5in
6···22 '';
2324 meta = with stdenv.lib; {
25+ description = "HTML documentation generator for Coq source files";
26 longDescription = ''
27 coq2html is an HTML documentation generator for Coq source files. It is
28 an alternative to the standard coqdoc documentation generator
+1-1
pkgs/applications/science/logic/ott/default.nix
···19 postInstall = "opaline -prefix $out";
2021 meta = {
22- description = "Ott: tool for the working semanticist";
23 longDescription = ''
24 Ott is a tool for writing definitions of programming languages and
25 calculi. It takes as input a definition of a language syntax and
···19 postInstall = "opaline -prefix $out";
2021 meta = {
22+ description = "A tool for the working semanticist";
23 longDescription = ''
24 Ott is a tool for writing definitions of programming languages and
25 calculi. It takes as input a definition of a language syntax and
···29 '';
3031 meta = with stdenv.lib; {
32- description = "bliss is an open source tool for computing automorphism groups and canonical forms of graphs. It has both a command line user interface as well as C++ and C programming language APIs";
33 homepage = "http://www.tcs.hut.fi/Software/bliss/";
34 license = licenses.lgpl3;
35 platforms = [ "i686-linux" "x86_64-linux" ];
···29 '';
3031 meta = with stdenv.lib; {
32+ description = "An open source tool for computing automorphism groups and canonical forms of graphs. It has both a command line user interface as well as C++ and C programming language APIs";
33 homepage = "http://www.tcs.hut.fi/Software/bliss/";
34 license = licenses.lgpl3;
35 platforms = [ "i686-linux" "x86_64-linux" ];
-102
pkgs/applications/science/math/maxima/5.41.nix
···1-{ stdenv, fetchurl, fetchpatch, sbcl, texinfo, perl, python, makeWrapper, rlwrap ? null
2-, tk ? null, gnuplot ? null, ecl ? null, ecl-fasl ? false
3-}:
4-5-let
6- name = "maxima";
7- # old version temporarily kept for sage, see discussion at
8- # https://github.com/NixOS/nixpkgs/commit/82254747af35f3e0e0d6f78023ded3a81e25331b
9- version = "5.41.0";
10-11- searchPath =
12- stdenv.lib.makeBinPath
13- (stdenv.lib.filter (x: x != null) [ sbcl ecl rlwrap tk gnuplot ]);
14-in
15-stdenv.mkDerivation ({
16- inherit version;
17- name = "${name}-${version}";
18-19- src = fetchurl {
20- url = "mirror://sourceforge/${name}/${name}-${version}.tar.gz";
21- sha256 = "0x0n81z0s4pl8nwpf7ivlsbvsdphm9w42250g7qdkizl0132by6s";
22- };
23-24- buildInputs = stdenv.lib.filter (x: x != null) [
25- sbcl ecl texinfo perl python makeWrapper
26- ];
27-28- postInstall = ''
29- # Make sure that maxima can find its runtime dependencies.
30- for prog in "$out/bin/"*; do
31- wrapProgram "$prog" --prefix PATH ":" "$out/bin:${searchPath}"
32- done
33- # Move emacs modules and documentation into the right place.
34- mkdir -p $out/share/emacs $out/share/doc
35- ln -s ../maxima/${version}/emacs $out/share/emacs/site-lisp
36- ln -s ../maxima/${version}/doc $out/share/doc/maxima
37- ''
38- + (stdenv.lib.optionalString ecl-fasl ''
39- cp src/binary-ecl/maxima.fas* "$out/lib/maxima/${version}/binary-ecl/"
40- '')
41- ;
42-43- patches = [
44- # fix path to info dir (see https://trac.sagemath.org/ticket/11348)
45- (fetchpatch {
46- url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/infodir.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
47- sha256 = "09v64n60f7i6frzryrj0zd056lvdpms3ajky4f9p6kankhbiv21x";
48- })
49-50- # fix https://sourceforge.net/p/maxima/bugs/2596/
51- (fetchpatch {
52- url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/matrixexp.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
53- sha256 = "06961hn66rhjijfvyym21h39wk98sfxhp051da6gz0n9byhwc6zg";
54- })
55-56- # undo https://sourceforge.net/p/maxima/code/ci/f5e9b0f7eb122c4e48ea9df144dd57221e5ea0ca, see see https://trac.sagemath.org/ticket/13364#comment:93
57- (fetchpatch {
58- url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/undoing_true_false_printing_patch.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
59- sha256 = "0fvi3rcjv6743sqsbgdzazy9jb6r1p1yq63zyj9fx42wd1hgf7yx";
60- })
61-62- # upstream bug https://sourceforge.net/p/maxima/bugs/2520/ (not fixed)
63- # introduced in https://trac.sagemath.org/ticket/13364
64- (fetchpatch {
65- url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/0001-taylor2-Avoid-blowing-the-stack-when-diff-expand-isn.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
66- sha256 = "0xa0b6cr458zp7lc7qi0flv5ar0r3ivsqhjl0c3clv86di2y522d";
67- })
68- ] ++ stdenv.lib.optionals ecl-fasl [
69- # build fasl, needed for ECL support
70- (fetchpatch {
71- url = "https://git.sagemath.org/sage.git/plain/build/pkgs/maxima/patches/maxima.system.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
72- sha256 = "18zafig8vflhkr80jq2ivk46k92dkszqlyq8cfmj0b2vcfjwwbar";
73- })
74- # There are some transient test failures. I hope this disables all those tests.
75- # If those test failures ever happen in the non-ecl version, that should be
76- # reportetd upstream.
77- ./known-ecl-failures.patch
78- ];
79-80- # Failures in the regression test suite won't abort the build process. We run
81- # the suite only so that potential errors show up in the build log. See also:
82- # https://sourceforge.net/tracker/?func=detail&aid=3365831&group_id=4933&atid=104933.
83- doCheck = true;
84-85- enableParallelBuilding = true;
86-87- meta = {
88- description = "Computer algebra system";
89- homepage = "http://maxima.sourceforge.net";
90- license = stdenv.lib.licenses.gpl2;
91-92- longDescription = ''
93- Maxima is a fairly complete computer algebra system written in
94- lisp with an emphasis on symbolic computation. It is based on
95- DOE-MACSYMA and licensed under the GPL. Its abilities include
96- symbolic integration, 3D plotting, and an ODE solver.
97- '';
98-99- platforms = stdenv.lib.platforms.unix;
100- maintainers = [ stdenv.lib.maintainers.peti ];
101- };
102-})
···13 };
1415 meta = with lib; {
16- description = "Scyther is a tool for the automatic verification of security protocols";
17 homepage = "https://www.cs.ox.ac.uk/people/cas.cremers/scyther/";
18 license = licenses.gpl2;
19 maintainers = with maintainers; [ infinisil ];
···13 };
1415 meta = with lib; {
16+ description = "A tool for the automatic verification of security protocols";
17 homepage = "https://www.cs.ox.ac.uk/people/cas.cremers/scyther/";
18 license = licenses.gpl2;
19 maintainers = with maintainers; [ infinisil ];
···2425 meta = with stdenv.lib; {
26 homepage = "https://github.com/jacksonliam/mjpg-streamer";
27- description = "MJPG-streamer takes JPGs from Linux-UVC compatible webcams, filesystem or other input plugins and streams them as M-JPEG via HTTP to webbrowsers, VLC and other software";
28 platforms = platforms.linux;
29 license = licenses.gpl2;
30 maintainers = with maintainers; [ gebner ];
···2425 meta = with stdenv.lib; {
26 homepage = "https://github.com/jacksonliam/mjpg-streamer";
27+ description = "Takes JPGs from Linux-UVC compatible webcams, filesystem or other input plugins and streams them as M-JPEG via HTTP to webbrowsers, VLC and other software";
28 platforms = platforms.linux;
29 license = licenses.gpl2;
30 maintainers = with maintainers; [ gebner ];
+1-1
pkgs/applications/video/mkclean/default.nix
···28 '';
2930 meta = with stdenv.lib; {
31- description = "mkclean is a command line tool to clean and optimize Matroska (.mkv / .mka / .mks / .mk3d) and WebM (.webm / .weba) files that have already been muxed";
32 homepage = "https://www.matroska.org";
33 license = licenses.bsdOriginal;
34 maintainers = with maintainers; [ chrisaw ];
···28 '';
2930 meta = with stdenv.lib; {
31+ description = "Command line tool to clean and optimize Matroska (.mkv / .mka / .mks / .mk3d) and WebM (.webm / .weba) files that have already been muxed";
32 homepage = "https://www.matroska.org";
33 license = licenses.bsdOriginal;
34 maintainers = with maintainers; [ chrisaw ];
···23 buildType = "release";
24 # Use maintainers/scripts/update.nix to update the version and all related hashes or
25 # change the hashes in extpack.nix and guest-additions/default.nix as well manually.
26- version = "6.1.14";
27- tarballVersion = "${version}a";
2829 iasl' = iasl.overrideAttrs (old: rec {
30 inherit (old) pname;
···40 inherit version;
4142 src = fetchurl {
43- url = "https://download.virtualbox.org/virtualbox/${version}/VirtualBox-${tarballVersion}.tar.bz2";
44- sha256 = "16f3cb83ab3c4dacf2a9d3cc638cbd18db23767828bba6b8ba1c1b57abeb6aef";
45 };
4647 outputs = [ "out" "modsrc" ];
···23 buildType = "release";
24 # Use maintainers/scripts/update.nix to update the version and all related hashes or
25 # change the hashes in extpack.nix and guest-additions/default.nix as well manually.
26+ version = "6.1.16";
02728 iasl' = iasl.overrideAttrs (old: rec {
29 inherit (old) pname;
···39 inherit version;
4041 src = fetchurl {
42+ url = "https://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2";
43+ sha256 = "49c1990da16d8a3d5bda8cdb961ec8195a901e67e4c79aea44c1521a5fc2f9f1";
44 };
4546 outputs = [ "out" "modsrc" ];
···12 # Manually sha256sum the extensionPack file, must be hex!
13 # Thus do not use `nix-prefetch-url` but instead plain old `sha256sum`.
14 # Checksums can also be found at https://www.virtualbox.org/download/hashes/${version}/SHA256SUMS
15- let value = "b224e796e886b19bce69f0aaedf6ca82bad0ca29c61fb0ed86166efb84356942";
16 in assert (builtins.stringLength value) == 64; value;
1718 meta = {
···12 # Manually sha256sum the extensionPack file, must be hex!
13 # Thus do not use `nix-prefetch-url` but instead plain old `sha256sum`.
14 # Checksums can also be found at https://www.virtualbox.org/download/hashes/${version}/SHA256SUMS
15+ let value = "9802482b77b95a954cb5111793da10d009009a4e9a9c4eaa4bd1ae5dafe9db46";
16 in assert (builtins.stringLength value) == 64; value;
1718 meta = {
···26 '';
2728 meta = with stdenv.lib; {
29- description = "Leftwm - A tiling window manager for the adventurer";
30 homepage = "https://github.com/leftwm/leftwm";
31 license = licenses.mit;
32 platforms = platforms.linux;
···26 '';
2728 meta = with stdenv.lib; {
29+ description = "A tiling window manager for the adventurer";
30 homepage = "https://github.com/leftwm/leftwm";
31 license = licenses.mit;
32 platforms = platforms.linux;
+1-1
pkgs/data/fonts/merriweather/default.nix
···2728 meta = with lib; {
29 homepage = "https://github.com/SorkinType/Merriweather";
30- description = "Merriweather was designed to be a text face that is pleasant to read on screens";
31 license = licenses.ofl;
32 platforms = platforms.all;
33 maintainers = with maintainers; [ emily ];
···2728 meta = with lib; {
29 homepage = "https://github.com/SorkinType/Merriweather";
30+ description = "A text face designed to be pleasant to read on screens";
31 license = licenses.ofl;
32 platforms = platforms.all;
33 maintainers = with maintainers; [ emily ];
···110 allowSubstitutes = false;
111 passthru = { unwrapped = flutter; };
112 meta = with stdenv.lib; {
113- description =
114- "Flutter is Google's SDK for building mobile, web and desktop with Dart.";
115 longDescription = ''
116 Flutter is Google’s UI toolkit for building beautiful,
117 natively compiled applications for mobile, web, and desktop from a single codebase.
···110 allowSubstitutes = false;
111 passthru = { unwrapped = flutter; };
112 meta = with stdenv.lib; {
113+ description = "Flutter is Google's SDK for building mobile, web and desktop with Dart";
0114 longDescription = ''
115 Flutter is Google’s UI toolkit for building beautiful,
116 natively compiled applications for mobile, web, and desktop from a single codebase.
+1-1
pkgs/development/compilers/fpc/lazarus.nix
···98 '';
99100 meta = with stdenv.lib; {
101- description = "Lazarus graphical IDE for the FreePascal language";
102 homepage = "https://www.lazarus.freepascal.org";
103 license = licenses.gpl2Plus ;
104 maintainers = with maintainers; [ raskin ];
···98 '';
99100 meta = with stdenv.lib; {
101+ description = "Graphical IDE for the FreePascal language";
102 homepage = "https://www.lazarus.freepascal.org";
103 license = licenses.gpl2Plus ;
104 maintainers = with maintainers; [ raskin ];
···27 NIX_CFLAGS_COMPILE = "-Wno-error=cast-function-type";
2829 meta = with stdenv.lib; {
30- description = "BZRTP is an opensource implementation of ZRTP keys exchange protocol";
31 homepage = "https://gitlab.linphone.org/BC/public/bzrtp";
32 # They have switched to GPLv3 on git HEAD so probably the next release will
33 # be GPL3.
···27 NIX_CFLAGS_COMPILE = "-Wno-error=cast-function-type";
2829 meta = with stdenv.lib; {
30+ description = "An opensource implementation of ZRTP keys exchange protocol";
31 homepage = "https://gitlab.linphone.org/BC/public/bzrtp";
32 # They have switched to GPLv3 on git HEAD so probably the next release will
33 # be GPL3.
+1-1
pkgs/development/libraries/duckdb/default.nix
···1819 meta = with stdenv.lib; {
20 homepage = "https://github.com/cwida/duckdb";
21- description = "DuckDB is an embeddable SQL OLAP Database Management System";
22 license = licenses.mit;
23 platforms = platforms.all;
24 maintainers = with maintainers; [ costrouc ];
···1415 meta = with stdenv.lib; {
16 homepage = "https://xiph.org/fishsound/";
17- description = ''libfishsound by itself is designed to handle raw codec streams from a lower level layer such as UDP datagrams. When these codecs are used in files, they are commonly encapsulated in Ogg to produce Ogg FLAC, Speex and Ogg Vorbis files.
01819libfishsound is a wrapper around the existing codec libraries and provides a consistent, higher-level programming interface. It has been designed for use in a wide variety of applications; it has no direct dependencies on Ogg encapsulation, though it is most commonly used in conjunction with liboggz to decode or encode FLAC, Speex or Vorbis audio tracks in Ogg files, including Ogg Theora and Annodex.
20
···1415 meta = with stdenv.lib; {
16 homepage = "https://xiph.org/fishsound/";
17+ description = "A simple programming interface for decoding and encoding audio data using Xiph.org codecs (FLAC, Speex and Vorbis)";
18+ longDescription = ''libfishsound by itself is designed to handle raw codec streams from a lower level layer such as UDP datagrams. When these codecs are used in files, they are commonly encapsulated in Ogg to produce Ogg FLAC, Speex and Ogg Vorbis files.
1920libfishsound is a wrapper around the existing codec libraries and provides a consistent, higher-level programming interface. It has been designed for use in a wide variety of applications; it has no direct dependencies on Ogg encapsulation, though it is most commonly used in conjunction with liboggz to decode or encode FLAC, Speex or Vorbis audio tracks in Ogg files, including Ogg Theora and Annodex.
21
···2425 meta = {
26 homepage = "http://libthreadar.sourceforge.net/";
27- description = ''
028 Libthreadar is a C++ library providing a small set of C++ classes to manipulate
29 threads in a very simple and efficient way from your C++ code.
30 '';
···2425 meta = {
26 homepage = "http://libthreadar.sourceforge.net/";
27+ description = "A C++ library that provides several classes to manipulate threads";
28+ longDescription = ''
29 Libthreadar is a C++ library providing a small set of C++ classes to manipulate
30 threads in a very simple and efficient way from your C++ code.
31 '';
···18 '';
1920 meta = {
21- description = "Martyr is a Java framework around the IRC protocol to allow application writers easy manipulation of the protocol and client state";
22 homepage = "http://martyr.sourceforge.net/";
23 license = stdenv.lib.licenses.lgpl21;
24 };
···18 '';
1920 meta = {
21+ description = "Java framework around the IRC protocol to allow application writers easy manipulation of the protocol and client state";
22 homepage = "http://martyr.sourceforge.net/";
23 license = stdenv.lib.licenses.lgpl21;
24 };
···15 enableParallelBuilding = true;
1617 meta = {
18- description = "QCDNUM is a very fast QCD evolution program written in FORTRAN77";
19 license = stdenv.lib.licenses.gpl3;
20 homepage = "https://www.nikhef.nl/~h24/qcdnum/index.html";
21 platforms = stdenv.lib.platforms.unix;
···15 enableParallelBuilding = true;
1617 meta = {
18+ description = "A very fast QCD evolution program written in FORTRAN77";
19 license = stdenv.lib.licenses.gpl3;
20 homepage = "https://www.nikhef.nl/~h24/qcdnum/index.html";
21 platforms = stdenv.lib.platforms.unix;
+1-1
pkgs/development/libraries/pupnp/default.nix
···17 hardeningDisable = [ "fortify" ];
1819 meta = {
20- description = "libupnp, an open source UPnP development kit for Linux";
2122 longDescription = ''
23 The Linux SDK for UPnP Devices (libupnp) provides developers
···17 hardeningDisable = [ "fortify" ];
1819 meta = {
20+ description = "An open source UPnP development kit for Linux";
2122 longDescription = ''
23 The Linux SDK for UPnP Devices (libupnp) provides developers
···24 '';
2526 meta = with stdenv.lib; {
27- description = "ParMETIS is an MPI-based parallel library that implements a variety of algorithms for partitioning unstructured graphs, meshes, and for computing fill-reducing orderings of sparse matrices";
28 homepage = "http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview";
29 platforms = platforms.all;
30 license = licenses.unfree;
···24 '';
2526 meta = with stdenv.lib; {
27+ description = "An MPI-based parallel library that implements a variety of algorithms for partitioning unstructured graphs, meshes, and for computing fill-reducing orderings of sparse matrices";
28 homepage = "http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview";
29 platforms = platforms.all;
30 license = licenses.unfree;
+1-1
pkgs/development/libraries/sope/default.nix
···41 '';
4243 meta = {
44- description = "SOPE is an extensive set of frameworks which form a complete Web application server environment";
45 license = licenses.publicDomain;
46 homepage = "https://github.com/inverse-inc/sope";
47 platforms = platforms.linux;
···41 '';
4243 meta = {
44+ description = "An extensive set of frameworks which form a complete Web application server environment";
45 license = licenses.publicDomain;
46 homepage = "https://github.com/inverse-inc/sope";
47 platforms = platforms.linux;
+1-1
pkgs/development/libraries/symengine/default.nix
···37 '';
3839 meta = with stdenv.lib; {
40- description = "SymEngine is a fast symbolic manipulation library";
41 homepage = "https://github.com/symengine/symengine";
42 platforms = platforms.unix ++ platforms.windows;
43 license = licenses.bsd3;
···37 '';
3839 meta = with stdenv.lib; {
40+ description = "A fast symbolic manipulation library";
41 homepage = "https://github.com/symengine/symengine";
42 platforms = platforms.unix ++ platforms.windows;
43 license = licenses.bsd3;
···1{ lib, fetchPypi, buildPythonPackage
2-, blessed, keyring, keyrings-alt, lxml, measurement, python-dateutil, requests, six
3-, mock, nose }:
00045buildPythonPackage rec {
6 pname = "myfitnesspal";
···11 sha256 = "c2275e91c794a3569a76c47c78cf2ff04d7f569a98558227e899ead7b30af0d6";
12 };
1314- # Remove overly restrictive version constraints on keyring and keyrings.alt
15 postPatch = ''
16 sed -i 's/keyring>=.*/keyring/' requirements.txt
17 sed -i 's/keyrings.alt>=.*/keyrings.alt/' requirements.txt
018 '';
1920- checkInputs = [ mock nose ];
21- propagatedBuildInputs = [ blessed keyring keyrings-alt lxml measurement python-dateutil requests six ];
0002223 meta = with lib; {
24 description = "Access your meal tracking data stored in MyFitnessPal programatically";
···1{ lib, fetchPypi, buildPythonPackage
2+, blessed, keyring, keyrings-alt, lxml, measurement, python-dateutil, requests, six, rich
3+, pytestCheckHook, mock, nose }:
4+5+# TODO: Define this package in "all-packages.nix" using "toPythonApplication".
6+# This currently errors out, complaining about not being able to find "etree" from "lxml" even though "lxml" is defined in "propagatedBuildInputs".
78buildPythonPackage rec {
9 pname = "myfitnesspal";
···14 sha256 = "c2275e91c794a3569a76c47c78cf2ff04d7f569a98558227e899ead7b30af0d6";
15 };
1617+ # Remove overly restrictive version constraints
18 postPatch = ''
19 sed -i 's/keyring>=.*/keyring/' requirements.txt
20 sed -i 's/keyrings.alt>=.*/keyrings.alt/' requirements.txt
21+ sed -i 's/rich>=.*/rich/' requirements.txt
22 '';
2324+ propagatedBuildInputs = [ blessed keyring keyrings-alt lxml measurement python-dateutil requests six rich ];
25+26+ # Integration tests require an account to be set
27+ disabledTests = [ "test_integration" ];
28+ checkInputs = [ pytestCheckHook mock nose ];
2930 meta = with lib; {
31 description = "Access your meal tracking data stored in MyFitnessPal programatically";
···2index d5a67d2..19b7ffc 100644
3--- a/shapely/geos.py
4+++ b/shapely/geos.py
5+@@ -61,127 +61,10 @@ def load_dll(libname, fallbacks=None, mode=DEFAULT_MODE):
6 "Could not find lib {} or load any of its variants {}.".format(
7 libname, fallbacks or []))
8···80- ]
81- _lgeos = load_dll('geos_c', fallbacks=alt_paths)
82-
83+- # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen
84+- # manpage says, "If filename is NULL, then the returned handle is for the
85+- # main program". This way we can let the linker do the work to figure out
86+- # which libc Python is actually using.
87+- free = CDLL(None).free
88- free.argtypes = [c_void_p]
89- free.restype = None
90-
···116- except WindowsError:
117- # XXX: See http://trac.gispython.org/projects/PCL/ticket/149
118- pass
119+-
120-elif sys.platform == 'sunos5':
121- _lgeos = load_dll('geos_c', fallbacks=['libgeos_c.so.1', 'libgeos_c.so'])
122- free = CDLL('libc.so.1').free
+1-1
pkgs/development/python-modules/xdot/default.nix
···16 propagatedBuildInputs = [ gobject-introspection pygobject3 graphviz gtk3 ];
1718 meta = with lib; {
19- description = "xdot.py is an interactive viewer for graphs written in Graphviz's dot";
20 homepage = "https://github.com/jrfonseca/xdot.py";
21 license = licenses.lgpl3Plus;
22 };
···16 propagatedBuildInputs = [ gobject-introspection pygobject3 graphviz gtk3 ];
1718 meta = with lib; {
19+ description = "An interactive viewer for graphs written in Graphviz's dot";
20 homepage = "https://github.com/jrfonseca/xdot.py";
21 license = licenses.lgpl3Plus;
22 };
···4950 meta = {
51 homepage = "https://github.com/plasma-umass/coz";
52+ description = "Profiler based on casual profiling";
53 license = stdenv.lib.licenses.bsd2;
54 maintainers = with stdenv.lib.maintainers; [ zimbatm ];
55 };
+1-1
pkgs/development/tools/analysis/pev/default.nix
···14 installFlags = [ "prefix=$(out)" ];
1516 meta = with stdenv.lib; {
17- description = "pev is a full-featured, open source, multiplatform command line toolkit to work with PE (Portable Executables) binaries";
18 homepage = "http://pev.sourceforge.net/";
19 license = licenses.gpl2;
20 platforms = platforms.linux;
···14 installFlags = [ "prefix=$(out)" ];
1516 meta = with stdenv.lib; {
17+ description = "A full-featured, open source, multiplatform command line toolkit to work with PE (Portable Executables) binaries";
18 homepage = "http://pev.sourceforge.net/";
19 license = licenses.gpl2;
20 platforms = platforms.linux;
···85 meta = with stdenv.lib; {
86 homepage = "https://scalacenter.github.io/bloop/";
87 license = licenses.asl20;
88- description = "Bloop is a Scala build server and command-line tool to make the compile and test developer workflows fast and productive in a build-tool-agnostic way";
89 platforms = [ "x86_64-linux" "x86_64-darwin" ];
90 maintainers = with maintainers; [ tomahna ];
91 };
···85 meta = with stdenv.lib; {
86 homepage = "https://scalacenter.github.io/bloop/";
87 license = licenses.asl20;
88+ description = "A Scala build server and command-line tool to make the compile and test developer workflows fast and productive in a build-tool-agnostic way";
89 platforms = [ "x86_64-linux" "x86_64-darwin" ];
90 maintainers = with maintainers; [ tomahna ];
91 };
···22 };
2324 meta = with lib; {
25- description = "deadcode is a very simple utility which detects unused declarations in a Go package";
26 homepage = "https://github.com/remyoudompheng/go-misc/tree/master/deadcode";
27 license = licenses.bsd3;
28 maintainers = with maintainers; [ kalbasit ];
···22 };
2324 meta = with lib; {
25+ description = "Very simple utility which detects unused declarations in a Go package";
26 homepage = "https://github.com/remyoudompheng/go-misc/tree/master/deadcode";
27 license = licenses.bsd3;
28 maintainers = with maintainers; [ kalbasit ];
+1-1
pkgs/development/tools/errcheck/default.nix
···20 goDeps = ./deps.nix;
2122 meta = with lib; {
23- description = "errcheck is a program for checking for unchecked errors in go programs";
24 homepage = "https://github.com/kisielk/errcheck";
25 license = licenses.mit;
26 maintainers = with maintainers; [ kalbasit ];
···20 goDeps = ./deps.nix;
2122 meta = with lib; {
23+ description = "Program for checking for unchecked errors in go programs";
24 homepage = "https://github.com/kisielk/errcheck";
25 license = licenses.mit;
26 maintainers = with maintainers; [ kalbasit ];
···27 '';
2829 meta = with stdenv.lib; {
30- description = "SWIG, an interface compiler that connects C/C++ code to higher-level languages";
31 homepage = "http://swig.org/";
32 # Different types of licenses available: http://www.swig.org/Release/LICENSE .
33 license = licenses.gpl3Plus;
···27 '';
2829 meta = with stdenv.lib; {
30+ description = "An interface compiler that connects C/C++ code to higher-level languages";
31 homepage = "http://swig.org/";
32 # Different types of licenses available: http://www.swig.org/Release/LICENSE .
33 license = licenses.gpl3Plus;
+1-1
pkgs/development/tools/nsis/default.nix
···48 installTargets = [ "install-compiler" ];
4950 meta = with stdenv.lib; {
51- description = "NSIS is a free scriptable win32 installer/uninstaller system that doesn't suck and isn't huge";
52 homepage = "https://nsis.sourceforge.io/";
53 license = licenses.zlib;
54 platforms = platforms.linux;
···48 installTargets = [ "install-compiler" ];
4950 meta = with stdenv.lib; {
51+ description = "A free scriptable win32 installer/uninstaller system that doesn't suck and isn't huge";
52 homepage = "https://nsis.sourceforge.io/";
53 license = licenses.zlib;
54 platforms = platforms.linux;
+1-1
pkgs/development/tools/omniorb/default.nix
···15 hardeningDisable = [ "format" ];
1617 meta = with stdenv.lib; {
18- description = "omniORB is a robust high performance CORBA ORB for C++ and Python. It is freely available under the terms of the GNU Lesser General Public License (for the libraries), and GNU General Public License (for the tools). omniORB is largely CORBA 2.6 compliant";
19 homepage = "http://omniorb.sourceforge.net/";
20 license = licenses.gpl2Plus;
21 maintainers = with maintainers; [ smironov ];
···15 hardeningDisable = [ "format" ];
1617 meta = with stdenv.lib; {
18+ description = "A robust high performance CORBA ORB for C++ and Python. It is freely available under the terms of the GNU Lesser General Public License (for the libraries), and GNU General Public License (for the tools). omniORB is largely CORBA 2.6 compliant";
19 homepage = "http://omniorb.sourceforge.net/";
20 license = licenses.gpl2Plus;
21 maintainers = with maintainers; [ smironov ];
+1-1
pkgs/development/tools/pgloader/default.nix
···3031 meta = with stdenv.lib; {
32 homepage = "https://pgloader.io/";
33- description = "pgloader loads data into PostgreSQL and allows you to implement Continuous Migration from your current database to PostgreSQL";
34 maintainers = with maintainers; [ mguentner ];
35 license = licenses.postgresql;
36 platforms = platforms.all;
···3031 meta = with stdenv.lib; {
32 homepage = "https://pgloader.io/";
33+ description = "Loads data into PostgreSQL and allows you to implement Continuous Migration from your current database to PostgreSQL";
34 maintainers = with maintainers; [ mguentner ];
35 license = licenses.postgresql;
36 platforms = platforms.all;
+1-1
pkgs/development/tools/reftools/default.nix
···23 };
2425 meta = with lib; {
26- description = "reftools - refactoring tools for Go";
27 homepage = "https://github.com/davidrjenni/reftools";
28 license = licenses.bsd2;
29 maintainers = with maintainers; [ kalbasit ];
···23 };
2425 meta = with lib; {
26+ description = "Refactoring tools for Go";
27 homepage = "https://github.com/davidrjenni/reftools";
28 license = licenses.bsd2;
29 maintainers = with maintainers; [ kalbasit ];
+185-49
pkgs/development/tools/sourcetrail/default.nix
···1-{ stdenv, fetchurl, autoPatchelfHook
2-, zlib, expat, dbus, openssl, python3 }:
0000000000000000000000000000300004stdenv.mkDerivation rec {
5 pname = "sourcetrail";
6- version = "2019.3.46";
78- src = fetchurl {
9- name = "sourtrail.tar.gz";
10- url = "https://www.sourcetrail.com/downloads/${version}/linux/64bit";
11- sha256 = "0dnkxr3fijcsbn6pd20lyxhr9ns6ji1c4dffly9s16yq4x9ad5r4";
012 };
1314- nativeBuildInputs = [ autoPatchelfHook ];
15- buildInputs = [ zlib expat dbus stdenv.cc.cc openssl python3 ];
0000000000000001617- installPhase = ''
18- runHook preInstall
0000000000001920- mkdir -p $out/bin $out/opt
0000002122- mv -v setup/share $out
23- mv -v data/gui/icon/logo_1024_1024.png $out/share/icons/sourcetrail.png
24- mv -v data/gui/icon/project_256_256.png $out/share/icons/project-sourcetrail.png
000000000000002526- mkdir -p $out/share/sourcetrail/doc
27- mv -v README EULA.txt $out/share/sourcetrail/doc
28- mv -v plugin $out/share/sourcetrail
2930- cp -rv . $out/opt
0003132- rm $out/opt/lib/libssl.so
33- rm $out/opt/lib/platforms/{libqeglfs.so,libqwebgl.so}
34- ln -s ${openssl}/lib/libssl.so $out/opt/lib/libssl.so
0000000000000000000000000000000000000003536- substituteInPlace \
37- $out/share/applications/sourcetrail.desktop \
38- --replace /usr/bin/ $out/bin/
3940- cat <<EOF > $out/bin/sourcetrail
41- #! ${stdenv.shell} -e
4243- # XXX: Sourcetrail somehow copies the initial config files into the home
44- # directory without write permissions. We currently just copy them
45- # ourselves to work around this problem.
46- setup_config() {
47- local src dst
4849- [ ! -d ~/.config/sourcetrail ] && mkdir -p ~/.config/sourcetrail
50- for src in $out/opt/data/fallback/*; do
51- dst=~/.config/sourcetrail/"\$(basename "\$src")"
52- if [ ! -e "\$dst" ]; then
53- cp -r "\$src" "\$dst"
54- fi
55- done
5657- chmod -R u+w ~/.config/sourcetrail
58- }
005960- [ -d "\$HOME" ] && setup_config
61- export PATH="\$PATH:${python3}/bin"
62- exec "$out/opt/Sourcetrail.sh" "\$@"
63- EOF
6465- chmod +x $out/bin/sourcetrail
00000006667- runHook postInstall
68 '';
69000000070 meta = with stdenv.lib; {
71 homepage = "https://www.sourcetrail.com";
72 description = "A cross-platform source explorer for C/C++ and Java";
73- platforms = [ "x86_64-linux" ];
74- license = licenses.unfree;
75 maintainers = with maintainers; [ midchildan ];
76 };
77}
···1+{ stdenv, fetchFromGitHub, callPackage, writeScript, cmake, wrapQtAppsHook
2+, boost, qt5, llvmPackages, gcc, jdk, pythonPackages, desktop-file-utils
3+, shared-mime-info, imagemagick, which, coreutils, maven, fetchpatch }:
4+5+let
6+ # TODO: remove when version incompatibility issue with python3Packages.jedi is
7+ # resolved
8+ parso = pythonPackages.callPackage ./parso.nix {};
9+ jedi = pythonPackages.callPackage ./jedi.nix { inherit parso; };
10+11+ pythonIndexer = pythonPackages.callPackage ./python.nix { inherit jedi parso; };
12+ javaIndexer = callPackage ./java.nix {};
13+14+ # Upstream script:
15+ # https://github.com/CoatiSoftware/Sourcetrail/blob/master/script/update_java_indexer.sh
16+ installJavaIndexer = writeScript "update_java_indexer.sh" ''
17+ #!${stdenv.shell}
18+19+ cd "$(dirname "$0")/.."
20+ dst="$out/opt/sourcetrail/share/data/java/lib"
21+22+ mkdir -p "$dst"
23+ cp "${javaIndexer}/target/java-indexer-1.0.jar" "$dst/java-indexer.jar"
24+ cp -r java_indexer/lib/*.jar "$dst"
25+ '';
26+27+ # Upstream script:
28+ # https://github.com/CoatiSoftware/Sourcetrail/blob/master/script/download_python_indexer.sh
29+ installPythonIndexer = writeScript "download_python_indexer.sh" ''
30+ #!${stdenv.shell}
3132+ mkdir -p $out/opt/sourcetrail/share/data
33+ ln -s "${pythonIndexer}/bin" "$out/opt/sourcetrail/share/data/python"
34+ '';
35+in
36stdenv.mkDerivation rec {
37 pname = "sourcetrail";
38+ version = "2020.2.43";
3940+ src = fetchFromGitHub {
41+ owner = "CoatiSoftware";
42+ repo = "Sourcetrail";
43+ rev = "${version}";
44+ sha256 = "0jp9y86xzkcxikc1cn4f6gqgg6zdssck08677ldagw25p1zadvzw";
45 };
4647+ patches = let
48+ url = commit: "https://github.com/CoatiSoftware/Sourcetrail/commit/${commit}.patch";
49+ in [
50+ ./disable-updates.patch
51+ ./disable-failing-tests.patch # FIXME: 5 test cases failing due to sandbox
52+ # TODO: remove on next release
53+ (fetchpatch {
54+ name = "fix-filecopy.patch";
55+ url = url "d079d1787c9e5cadcf41a003666dc0746cc1cda0";
56+ sha256 = "0mixy2a4s16kv2q89k7y4dv21wnv2zd86i4gdwn3xz977y8hf92b";
57+ })
58+ (fetchpatch {
59+ name = "fix-broken-test.patch";
60+ url = url "85329174bac8a301733100dc4540258f977e2c5a";
61+ sha256 = "17l4417sbmkrgr6v3fbazlmkzl9774zrpjv2n9zwfrz52y30f7b9";
62+ })
63+ ];
6465+ nativeBuildInputs = [
66+ cmake
67+ jdk
68+ wrapQtAppsHook
69+ desktop-file-utils
70+ imagemagick
71+ javaIndexer # the resulting jar file is copied by our install script
72+ ] ++ stdenv.lib.optionals doCheck testBinPath;
73+ buildInputs = [
74+ boost pythonIndexer shared-mime-info
75+ ] ++ (with qt5; [ qtbase qtsvg ])
76+ ++ (with llvmPackages; [ libclang llvm ]);
77+ binPath = [ gcc jdk.jre maven which ];
78+ testBinPath = binPath ++ [ coreutils ];
7980+ cmakeFlags = [
81+ "-DBoost_USE_STATIC_LIBS=OFF"
82+ "-DBUILD_CXX_LANGUAGE_PACKAGE=ON"
83+ "-DCMAKE_PREFIX_PATH=${llvmPackages.clang-unwrapped}"
84+ "-DBUILD_JAVA_LANGUAGE_PACKAGE=ON"
85+ "-DBUILD_PYTHON_LANGUAGE_PACKAGE=ON"
86+ ];
8788+ postPatch = let
89+ major = stdenv.lib.versions.major version;
90+ minor = stdenv.lib.versions.minor version;
91+ patch = stdenv.lib.versions.patch version;
92+ in ''
93+ # Upstream script obtains it's version from git:
94+ # https://github.com/CoatiSoftware/Sourcetrail/blob/master/cmake/version.cmake
95+ cat > cmake/version.cmake <<EOF
96+ set(GIT_BRANCH "")
97+ set(GIT_COMMIT_HASH "")
98+ set(GIT_VERSION_NUMBER "")
99+ set(VERSION_YEAR "${major}")
100+ set(VERSION_MINOR "${minor}")
101+ set(VERSION_COMMIT "${patch}")
102+ set(BUILD_TYPE "Release")
103+ set(VERSION_STRING "${major}.${minor}.${patch}")
104+ EOF
105106+ # Sourcetrail attempts to copy clang headers from the LLVM store path
107+ substituteInPlace CMakeLists.txt \
108+ --replace "\''${LLVM_BINARY_DIR}" '${llvmPackages.clang-unwrapped}'
109110+ patchShebangs script
111+ ln -sf ${installJavaIndexer} script/update_java_indexer.sh
112+ ln -sf ${installPythonIndexer} script/download_python_indexer.sh
113+ '';
114115+ # Sourcetrail doesn't use the usual cmake install() commands and instead uses
116+ # its own bash script for packaging. Since we're not able to reuse the script,
117+ # we'll have to roll our own in nixpkgs.
118+ #
119+ # Sourcetrail currently assumes one of the following two layouts for the
120+ # placement of its files:
121+ #
122+ # AppImage Layout Traditional Layout
123+ # ├── bin/ ├── sourcetrail*
124+ # │ └── sourcetrail* └── data/
125+ # └── share/
126+ # └── data/ sourcetrail: application executable
127+ # data: contains assets exlusive to Sourcetrail
128+ #
129+ # The AppImage layout is the one currently used by the upstream project for
130+ # packaging its Linux port. We can't use this layout as-is for nixpkgs,
131+ # because Sourcetrail treating $out/share/data as its own might lead to
132+ # conflicts with other packages when linked into a Nix profile.
133+ #
134+ # On the other hand, the traditional layout isn't used by the upstream project
135+ # anymore so there's a risk that it might become unusable at any time in the
136+ # future. Since it's hard to detect these problems at build time, it's not a
137+ # good idea to use this layout for packaging in nixpkgs.
138+ #
139+ # Considering the problems with the above layouts, we go with the third
140+ # option, a slight variation of the AppImage layout:
141+ #
142+ # nixpkgs
143+ # ├── bin/
144+ # │ └── sourcetrail* (wrapper for opt/sourcetrail/bin/sourcetrail)
145+ # └── opt/sourcetrail/
146+ # ├── bin/
147+ # │ └── sourcetrail*
148+ # └── share/
149+ # └── data/
150+ #
151+ # Upstream install script:
152+ # https://github.com/CoatiSoftware/Sourcetrail/blob/master/setup/Linux/createPackages.sh
153+ installPhase = ''
154+ mkdir -p $out/opt/sourcetrail/bin
155+ cp app/Sourcetrail $out/opt/sourcetrail/bin/sourcetrail
156+ cp app/sourcetrail_indexer $out/opt/sourcetrail/bin/sourcetrail_indexer
157158+ desktop-file-install --dir=$out/share/applications \
159+ --set-key Exec --set-value $out/bin/sourcetrail \
160+ ../setup/Linux/data/sourcetrail.desktop
161162+ mkdir -p $out/share/mime/packages
163+ cp ../setup/Linux/data/sourcetrail-mime.xml $out/share/mime/packages/
164165+ mkdir -p $out/opt/sourcetrail/share
166+ cp -R ../bin/app/data $out/opt/sourcetrail/share
167+ cp -R ../bin/app/user/projects $out/opt/sourcetrail/share/data/fallback
168+ rm $out/opt/sourcetrail/share/data/*_template.xml
169+ rm -r $out/opt/sourcetrail/share/data/install
170171+ for size in 48 64 128 256 512; do
172+ mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps/
173+ convert app/data/gui/icon/logo_1024_1024.png -resize ''${size}x''${size} \
174+ $out/share/icons/hicolor/''${size}x''${size}/apps/sourcetrail.png
175+ done
00176177+ mkdir -p $out/bin
178+ makeQtWrapper $out/opt/sourcetrail/bin/sourcetrail $out/bin/sourcetrail \
179+ --prefix PATH : ${stdenv.lib.makeBinPath binPath}
180+ '';
181182+ checkPhase = ''
183+ rm -rf ../bin/app/data/{python,java/lib}
184+ ln -s $out/opt/sourcetrail/share/data/python ../bin/app/data/python
185+ ln -s $out/opt/sourcetrail/share/data/java/lib ../bin/app/data/java/lib
186187+ pushd test
188+ # shorten PATH to prevent build failures
189+ wrapQtApp ./Sourcetrail_test \
190+ --set PATH "" \
191+ --prefix PATH : ${stdenv.lib.makeBinPath testBinPath} \
192+ --set MAVEN_OPTS "-Dmaven.repo.local=$TMPDIR/m2repo"
193+ ./Sourcetrail_test
194+ popd
195196+ rm ../bin/app/data/{python,java/lib}
197 '';
198199+ # This has to be done manually in the installPhase because the actual binary
200+ # lives in $out/opt/sourcetrail/bin, which isn't covered by wrapQtAppsHook
201+ dontWrapQtApps = true;
202+203+ # FIXME: some test cases are disabled in the patch phase
204+ doCheck = true;
205+206 meta = with stdenv.lib; {
207 homepage = "https://www.sourcetrail.com";
208 description = "A cross-platform source explorer for C/C++ and Java";
209+ platforms = platforms.all;
210+ license = licenses.gpl3;
211 maintainers = with maintainers; [ midchildan ];
212 };
213}
···12 configureFlags = [ "--with-xerces=${xercesc}" ];
1314 meta = with stdenv.lib; {
15- description = "XQilla is an XQuery and XPath 2 library and command line utility written in C++, implemented on top of the Xerces-C library";
16 license = licenses.asl20 ;
17 maintainers = with maintainers; [ obadz ];
18 platforms = platforms.all;
···12 configureFlags = [ "--with-xerces=${xercesc}" ];
1314 meta = with stdenv.lib; {
15+ description = "An XQuery and XPath 2 library and command line utility written in C++, implemented on top of the Xerces-C library";
16 license = licenses.asl20 ;
17 maintainers = with maintainers; [ obadz ];
18 platforms = platforms.all;
···1516 meta = with stdenv.lib; {
17 homepage = "https://github.com/jmoon018/PacVim";
18- description = "PacVim is a game that teaches you vim commands";
19 maintainers = with maintainers; [ infinisil ];
20 license = licenses.lgpl3;
21 platforms = platforms.unix;
···1516 meta = with stdenv.lib; {
17 homepage = "https://github.com/jmoon018/PacVim";
18+ description = "A game that teaches you vim commands";
19 maintainers = with maintainers; [ infinisil ];
20 license = licenses.lgpl3;
21 platforms = platforms.unix;
+1-1
pkgs/games/pro-office-calculator/default.nix
···15 nativeBuildInputs = [ cmake ];
1617 meta = with stdenv.lib; {
18- description = "Just an ordinary calculator. Nothing to see here...";
19 homepage = "https://proofficecalculator.com/";
20 maintainers = [ maintainers.pmiddend ];
21 platforms = platforms.linux;
···15 nativeBuildInputs = [ cmake ];
1617 meta = with stdenv.lib; {
18+ description = "A completely normal office calculator";
19 homepage = "https://proofficecalculator.com/";
20 maintainers = [ maintainers.pmiddend ];
21 platforms = platforms.linux;
···19 '';
2021 meta = with lib; {
22- description = "A command line tool for examining and modifying plugins for the Elder Scrolls game Morrowind by Bethesda Softworks.";
23 homepage = "https://github.com/john-moonsugar/tes3cmd";
24 license = licenses.mit;
25 maintainers = [ maintainers.marius851000 ];
···19 '';
2021 meta = with lib; {
22+ description = "A command line tool for examining and modifying plugins for the Elder Scrolls game Morrowind by Bethesda Softworks";
23 homepage = "https://github.com/john-moonsugar/tes3cmd";
24 license = licenses.mit;
25 maintainers = [ maintainers.marius851000 ];
+2-2
pkgs/misc/frescobaldi/default.nix
···2930 meta = with lib; {
31 homepage = "https://frescobaldi.org/";
32- description = ''Frescobaldi is a LilyPond sheet music text editor'';
33 longDescription = ''
34- Powerful text editor with syntax highlighting and automatic completion,
35 Music view with advanced Point & Click, Midi player to proof-listen
36 LilyPond-generated MIDI files, Midi capturing to enter music,
37 Powerful Score Wizard to quickly setup a music score, Snippet Manager
···2930 meta = with lib; {
31 homepage = "https://frescobaldi.org/";
32+ description = "A LilyPond sheet music text editor";
33 longDescription = ''
34+ Powerful text editor with syntax highlighting and automatic completion,
35 Music view with advanced Point & Click, Midi player to proof-listen
36 LilyPond-generated MIDI files, Midi capturing to enter music,
37 Powerful Score Wizard to quickly setup a music score, Snippet Manager
···30 '';
3132 meta = with stdenv.lib; {
33- description = "Betterlockscreen is a simple minimal lock screen which allows you to cache images with different filters and lockscreen with blazing speed";
34 homepage = "https://github.com/pavanjadhaw/betterlockscreen";
35 license = licenses.mit;
36 platforms = platforms.linux;
···30 '';
3132 meta = with stdenv.lib; {
33+ description = "A simple minimal lock screen which allows you to cache images with different filters and lockscreen with blazing speed";
34 homepage = "https://github.com/pavanjadhaw/betterlockscreen";
35 license = licenses.mit;
36 platforms = platforms.linux;
+5-4
pkgs/misc/vim-plugins/overrides.nix
···60 };
6162 LanguageClient-neovim = let
63- version = "0.1.158";
64 LanguageClient-neovim-src = fetchFromGitHub {
65 owner = "autozimu";
66 repo = "LanguageClient-neovim";
67 rev = version;
68- sha256 = "14xggdgp5qw4yj4gdsgr8s2nxm098m88q8rx6fzd2j20njv308ki";
69 };
70 LanguageClient-neovim-bin = rustPlatform.buildRustPackage {
71- name = "LanguageClient-neovim-bin";
072 src = LanguageClient-neovim-src;
7374- cargoSha256 = "0nin1gydf6q4mmxljm2xbd1jfl3wpzx3pvlqwspahblv9j2bf5ck";
75 buildInputs = stdenv.lib.optionals stdenv.isDarwin [ CoreServices ];
7677 # FIXME: Use impure version of CoreFoundation because of missing symbols.
···10# So an extension's attribute name should be of the form:
11# "${mktplcRef.publisher}.${mktplcRef.name}".
12#
013{
1415 alanz.vscode-hie-server = buildVscodeMarketplaceExtension {
···46 meta = with stdenv.lib; {
47 license = licenses.mit;
48 };
0000000000000000000049 };
5051 formulahendry.auto-close-tag = buildVscodeMarketplaceExtension {
···10# So an extension's attribute name should be of the form:
11# "${mktplcRef.publisher}.${mktplcRef.name}".
12#
13+stdenv.lib.mapAttrs (_n: stdenv.lib.recurseIntoAttrs)
14{
1516 alanz.vscode-hie-server = buildVscodeMarketplaceExtension {
···47 meta = with stdenv.lib; {
48 license = licenses.mit;
49 };
50+ };
51+52+ dhall.dhall-lang = buildVscodeMarketplaceExtension {
53+ mktplcRef = {
54+ name = "dhall-lang";
55+ publisher = "dhall";
56+ version = "0.0.4";
57+ sha256 = "0sa04srhqmngmw71slnrapi2xay0arj42j4gkan8i11n7bfi1xpf";
58+ };
59+ meta = { license = stdenv.lib.licenses.mit; };
60+ };
61+62+ dhall.vscode-dhall-lsp-server = buildVscodeMarketplaceExtension {
63+ mktplcRef = {
64+ name = "vscode-dhall-lsp-server";
65+ publisher = "dhall";
66+ version = "0.0.4";
67+ sha256 = "1zin7s827bpf9yvzpxpr5n6mv0b5rhh3civsqzmj52mdq365d2js";
68+ };
69+ meta = { license = stdenv.lib.licenses.mit; };
70 };
7172 formulahendry.auto-close-tag = buildVscodeMarketplaceExtension {
+1-1
pkgs/os-specific/linux/cpuset/default.nix
···19 };
2021 meta = with stdenv.lib; {
22- description = "Cpuset is a Python application that forms a wrapper around the standard Linux filesystem calls to make using the cpusets facilities in the Linux kernel easier";
23 homepage = "https://github.com/wykurz/cpuset";
24 license = licenses.gpl2;
25 maintainers = with maintainers; [ wykurz ];
···19 };
2021 meta = with stdenv.lib; {
22+ description = "Python application that forms a wrapper around the standard Linux filesystem calls to make using the cpusets facilities in the Linux kernel easier";
23 homepage = "https://github.com/wykurz/cpuset";
24 license = licenses.gpl2;
25 maintainers = with maintainers; [ wykurz ];
+2
pkgs/os-specific/linux/dstat/default.nix
···1213 propagatedBuildInputs = with python2Packages; [ python-wifi ];
140015 makeFlags = [ "prefix=$(out)" ];
1617 meta = with stdenv.lib; {
···1213 propagatedBuildInputs = with python2Packages; [ python-wifi ];
1415+ patches = [ ./fix_pluginpath.patch ];
16+17 makeFlags = [ "prefix=$(out)" ];
1819 meta = with stdenv.lib; {
···5960 meta = with stdenv.lib; {
61 homepage = "https://www.linode.com/longview";
62- description = "Longview collects all of your system-level metrics and sends them to Linode";
63 license = licenses.gpl2Plus;
64 maintainers = [ maintainers.rvl ];
65 inherit version;
···5960 meta = with stdenv.lib; {
61 homepage = "https://www.linode.com/longview";
62+ description = "Collects all of your system-level metrics and sends them to Linode";
63 license = licenses.gpl2Plus;
64 maintainers = [ maintainers.rvl ];
65 inherit version;
···24, python3Packages # for sphinx-build
25# For tests
26, gtest
27-, fetchpatch # used to fetch an upstream patch fixing a failing test
28, zip
29}:
30
···24, python3Packages # for sphinx-build
25# For tests
26, gtest
027, zip
28}:
29
+1-1
pkgs/servers/news/leafnode/default.nix
···3031 meta = {
32 homepage = "http://leafnode.sourceforge.net/";
33- description = "Leafnode implements a store & forward NNTP proxy";
34 license = stdenv.lib.licenses.mit;
35 platforms = stdenv.lib.platforms.unix;
36 };
···3031 meta = {
32 homepage = "http://leafnode.sourceforge.net/";
33+ description = "Implementation of a store & forward NNTP proxy";
34 license = stdenv.lib.licenses.mit;
35 platforms = stdenv.lib.platforms.unix;
36 };
+1-1
pkgs/servers/openbgpd/default.nix
···36 '';
3738 meta = with stdenv.lib; {
39- description = "OpenBGPD is a FREE implementation of the Border Gateway Protocol, Version 4. It allows ordinary machines to be used as routers exchanging routes with other systems speaking the BGP protocol";
40 license = licenses.isc;
41 homepage = "http://www.openbgpd.org/";
42 maintainers = with maintainers; [ kloenk ];
···36 '';
3738 meta = with stdenv.lib; {
39+ description = "A free implementation of the Border Gateway Protocol, Version 4. It allows ordinary machines to be used as routers exchanging routes with other systems speaking the BGP protocol";
40 license = licenses.isc;
41 homepage = "http://www.openbgpd.org/";
42 maintainers = with maintainers; [ kloenk ];
···18 '';
1920 meta = {
21- description = ''
022 pg_similarity is an extension to support similarity queries on PostgreSQL. The implementation
23 is tightly integrated in the RDBMS in the sense that it defines operators so instead of the traditional
24 operators (= and <>) you can use ~~~ and ~!~ (any of these operators represents a similarity function).
···18 '';
1920 meta = {
21+ description = "An extension to support similarity queries on PostgreSQL";
22+ longDescription = ''
23 pg_similarity is an extension to support similarity queries on PostgreSQL. The implementation
24 is tightly integrated in the RDBMS in the sense that it defines operators so instead of the traditional
25 operators (= and <>) you can use ~~~ and ~!~ (any of these operators represents a similarity function).
+1-1
pkgs/servers/sql/postgresql/ext/pgtap.nix
···18 '';
1920 meta = with stdenv.lib; {
21- description = "pgTAP is a unit testing framework for PostgreSQL";
22 longDescription = ''
23 pgTAP is a unit testing framework for PostgreSQL written in PL/pgSQL and PL/SQL.
24 It includes a comprehensive collection of TAP-emitting assertion functions,
···18 '';
1920 meta = with stdenv.lib; {
21+ description = "A unit testing framework for PostgreSQL";
22 longDescription = ''
23 pgTAP is a unit testing framework for PostgreSQL written in PL/pgSQL and PL/SQL.
24 It includes a comprehensive collection of TAP-emitting assertion functions,
+1-1
pkgs/servers/web-apps/engelsystem/default.nix
···4344 meta = with stdenv.lib; {
45 description =
46- "Coordinate your helpers in teams, assign them to work shifts or let them decide for themselves when and where they want to help with what";
47 license = licenses.gpl2;
48 homepage = "https://engelsystem.de";
49 maintainers = with maintainers; [ kloenk ];
···4344 meta = with stdenv.lib; {
45 description =
46+ "Coordinate your volunteers in teams, assign them to work shifts or let them decide for themselves when and where they want to help with what";
47 license = licenses.gpl2;
48 homepage = "https://engelsystem.de";
49 maintainers = with maintainers; [ kloenk ];
+1-1
pkgs/servers/web-apps/jirafeau/default.nix
···25 '';
2627 meta = with stdenv.lib; {
28- description = "Jirafeau is a web site permitting to upload a file in a simple way and give an unique link to it";
29 license = licenses.agpl3;
30 homepage = "https://gitlab.com/mojo42/Jirafeau";
31 platforms = platforms.all;
···25 '';
2627 meta = with stdenv.lib; {
28+ description = "Website permitting upload of a file in a simple way and giving a unique link to it";
29 license = licenses.agpl3;
30 homepage = "https://gitlab.com/mojo42/Jirafeau";
31 platforms = platforms.all;
+1-1
pkgs/servers/web-apps/sogo/default.nix
···67 '';
6869 meta = {
70- description = "SOGo is a very fast and scalable modern collaboration suite (groupware)";
71 license = with licenses; [ gpl2 lgpl21 ];
72 homepage = "https://sogo.nu/";
73 platforms = platforms.linux;
···67 '';
6869 meta = {
70+ description = "A very fast and scalable modern collaboration suite (groupware)";
71 license = with licenses; [ gpl2 lgpl21 ];
72 homepage = "https://sogo.nu/";
73 platforms = platforms.linux;
+1-1
pkgs/shells/es/default.nix
···25 configureFlags = [ "--with-readline" ];
2627 meta = with stdenv.lib; {
28- description = "Es is an extensible shell";
29 longDescription =
30 ''
31 Es is an extensible shell. The language was derived
···25 configureFlags = [ "--with-readline" ];
2627 meta = with stdenv.lib; {
28+ description = "An extensible shell with higher order functions";
29 longDescription =
30 ''
31 Es is an extensible shell. The language was derived
···24 NIX_LDFLAGS = "-lpthread";
2526 meta = with stdenv.lib; {
27- description = ''
28- x11spice will enable a running X11 desktop to be available
29- via a Spice server
30- '';
31 homepage = "https://gitlab.freedesktop.org/spice/x11spice";
32 platforms = platforms.linux;
33 license = licenses.gpl3;
···24 NIX_LDFLAGS = "-lpthread";
2526 meta = with stdenv.lib; {
27+ description = "Enable a running X11 desktop to be available via a Spice server";
00028 homepage = "https://gitlab.freedesktop.org/spice/x11spice";
29 platforms = platforms.linux;
30 license = licenses.gpl3;
+1-1
pkgs/tools/admin/chamber/default.nix
···2021 meta = with lib; {
22 description =
23- "Chamber is a tool for managing secrets by storing them in AWS SSM Parameter Store.";
24 homepage = "https://github.com/segmentio/chamber";
25 license = licenses.mit;
26 maintainers = with maintainers; [ kalekseev ];
···2021 meta = with lib; {
22 description =
23+ "A tool for managing secrets by storing them in AWS SSM Parameter Store";
24 homepage = "https://github.com/segmentio/chamber";
25 license = licenses.mit;
26 maintainers = with maintainers; [ kalekseev ];
+1-1
pkgs/tools/admin/oxidized/default.nix
···11 passthru.updateScript = bundlerUpdateScript "oxidized";
1213 meta = with lib; {
14- description = "Oxidized is a network device configuration backup tool. It's a RANCID replacement!";
15 homepage = "https://github.com/ytti/oxidized";
16 license = licenses.asl20;
17 maintainers = with maintainers; [ willibutz nicknovitski ];
···11 passthru.updateScript = bundlerUpdateScript "oxidized";
1213 meta = with lib; {
14+ description = "A network device configuration backup tool. It's a RANCID replacement!";
15 homepage = "https://github.com/ytti/oxidized";
16 license = licenses.asl20;
17 maintainers = with maintainers; [ willibutz nicknovitski ];
···3132 meta = with stdenv.lib; {
33 homepage = "https://tukaani.org/xz/";
34- description = "XZ, general-purpose data compression software, successor of LZMA";
3536 longDescription =
37 '' XZ Utils is free general-purpose data compression software with high
···3132 meta = with stdenv.lib; {
33 homepage = "https://tukaani.org/xz/";
34+ description = "A general-purpose data compression software, successor of LZMA";
3536 longDescription =
37 '' XZ Utils is free general-purpose data compression software with high
···1-{ stdenv, fetchurl, python3, perl, textual-window-manager }:
00200003stdenv.mkDerivation rec {
4 version = "5.133";
5 name = "byobu-" + version;
···1112 doCheck = true;
1314- buildInputs = [ python3 perl ];
15- propagatedBuildInputs = [ textual-window-manager ];
0000000000000000000000000000000001617- meta = {
18 homepage = "https://launchpad.net/byobu/";
19 description = "Text-based window manager and terminal multiplexer";
2021 longDescription =
22- ''Byobu is a GPLv3 open source text-based window manager and terminal multiplexer.
23- It was originally designed to provide elegant enhancements to the otherwise functional,
24- plain, practical GNU Screen, for the Ubuntu server distribution.
25- Byobu now includes an enhanced profiles, convenient keybindings,
26- configuration utilities, and toggle-able system status notifications for both
27- the GNU Screen window manager and the more modern Tmux terminal multiplexer,
28 and works on most Linux, BSD, and Mac distributions.
29 '';
3031- license = stdenv.lib.licenses.gpl3;
3233- platforms = stdenv.lib.platforms.unix;
34- maintainers = [ stdenv.lib.maintainers.qknight ];
35 };
36}
···1+{ stdenv, fetchurl, makeWrapper
2+, ncurses, python3, perl, textual-window-manager
3+, gettext, vim, bc, screen }:
45+let
6+ inherit (stdenv) lib;
7+ pythonEnv = python3.withPackages (ps: with ps; [ snack ]);
8+in
9stdenv.mkDerivation rec {
10 version = "5.133";
11 name = "byobu-" + version;
···1718 doCheck = true;
1920+ buildInputs = [ perl makeWrapper gettext ];
21+ propagatedBuildInputs = [ textual-window-manager screen ];
22+23+ postPatch = ''
24+ substituteInPlace usr/bin/byobu-export.in \
25+ --replace "gettext" "${gettext}/bin/gettext"
26+ substituteInPlace usr/lib/byobu/menu \
27+ --replace "gettext" "${gettext}/bin/gettext"
28+ '';
29+30+ postInstall = ''
31+ # Byobu does not compile its po files for some reason
32+ for po in po/*.po; do
33+ lang=''${po#po/}
34+ lang=''${lang%.po}
35+ # Path where byobu looks for translations as observed in the source code and strace
36+ mkdir -p $out/share/byobu/po/$lang/LC_MESSAGES/
37+ msgfmt $po -o $out/share/byobu/po/$lang/LC_MESSAGES/byobu.mo
38+ done
39+40+ # Override the symlinks otherwise they mess with the wrapping
41+ cp --remove-destination $out/bin/byobu $out/bin/byobu-screen
42+ cp --remove-destination $out/bin/byobu $out/bin/byobu-tmux
43+44+ for i in $out/bin/byobu*; do
45+ # We don't use the usual ".$package-wrapped" because arg0 within the shebang scripts
46+ # points to the filename and byobu matches against this to know which backend
47+ # to start with
48+ file=".$(basename $i)"
49+ mv $i $out/bin/$file
50+ makeWrapper "$out/bin/$file" "$out/bin/$(basename $i)" --argv0 $(basename $i) \
51+ --set BYOBU_PATH ${lib.escapeShellArg (lib.makeBinPath [ vim bc ])} \
52+ --set BYOBU_PYTHON "${pythonEnv}/bin/python"
53+ done
54+ '';
5556+ meta = with stdenv.lib; {
57 homepage = "https://launchpad.net/byobu/";
58 description = "Text-based window manager and terminal multiplexer";
5960 longDescription =
61+ ''Byobu is a GPLv3 open source text-based window manager and terminal multiplexer.
62+ It was originally designed to provide elegant enhancements to the otherwise functional,
63+ plain, practical GNU Screen, for the Ubuntu server distribution.
64+ Byobu now includes an enhanced profiles, convenient keybindings,
65+ configuration utilities, and toggle-able system status notifications for both
66+ the GNU Screen window manager and the more modern Tmux terminal multiplexer,
67 and works on most Linux, BSD, and Mac distributions.
68 '';
6970+ license = licenses.gpl3;
7172+ platforms = platforms.unix;
73+ maintainers = with maintainers; [ qknight berbiche ];
74 };
75}
···44 '';
4546 meta = with stdenv.lib; {
47- description = "Logstash is a data pipeline that helps you process logs and other event data from a variety of systems";
48 homepage = "https://www.elastic.co/products/logstash";
49 license = if enableUnfree then licenses.elastic else licenses.asl20;
50 platforms = platforms.unix;
···44 '';
4546 meta = with stdenv.lib; {
47+ description = "A data pipeline that helps you process logs and other event data from a variety of systems";
48 homepage = "https://www.elastic.co/products/logstash";
49 license = if enableUnfree then licenses.elastic else licenses.asl20;
50 platforms = platforms.unix;
···3536 meta = with lib; {
37 homepage = "https://wooting.io/wootility";
38- description = "Wootility is customization and management software for Wooting keyboards";
39 platforms = [ "x86_64-linux" ];
40 license = "unknown";
41 maintainers = with maintainers; [ davidtwco ];
···3536 meta = with lib; {
37 homepage = "https://wooting.io/wootility";
38+ description = "A customization and management software for Wooting keyboards";
39 platforms = [ "x86_64-linux" ];
40 license = "unknown";
41 maintainers = with maintainers; [ davidtwco ];
+1-1
pkgs/tools/misc/zsh-autoenv/default.nix
···1920 cat <<SCRIPT > $out/bin/zsh-autoenv-share
21 #!${runtimeShell}
22- # Run this script to find the fzf shared folder where all the shell
23 # integration scripts are living.
24 echo $out/share/zsh-autoenv
25 SCRIPT
···1920 cat <<SCRIPT > $out/bin/zsh-autoenv-share
21 #!${runtimeShell}
22+ # Run this script to find the zsh-autoenv shared folder where all the shell
23 # integration scripts are living.
24 echo $out/share/zsh-autoenv
25 SCRIPT
+1-1
pkgs/tools/networking/bukubrow/default.nix
···39 '';
4041 meta = with stdenv.lib; {
42- description = "Bukubrow is a WebExtension for Buku, a command-line bookmark manager";
43 homepage = "https://github.com/SamHH/bukubrow-host";
44 license = licenses.gpl3;
45 maintainers = with maintainers; [ infinisil ];
···39 '';
4041 meta = with stdenv.lib; {
42+ description = "A WebExtension for Buku, a command-line bookmark manager";
43 homepage = "https://github.com/SamHH/bukubrow-host";
44 license = licenses.gpl3;
45 maintainers = with maintainers; [ infinisil ];
+1-1
pkgs/tools/networking/corerad/default.nix
···3334 meta = with stdenv.lib; {
35 homepage = "https://github.com/mdlayher/corerad";
36- description = "CoreRAD extensible and observable IPv6 NDP RA daemon";
37 license = licenses.asl20;
38 maintainers = with maintainers; [ mdlayher ];
39 };
···3334 meta = with stdenv.lib; {
35 homepage = "https://github.com/mdlayher/corerad";
36+ description = "Extensible and observable IPv6 NDP RA daemon";
37 license = licenses.asl20;
38 maintainers = with maintainers; [ mdlayher ];
39 };
+6-1
pkgs/tools/networking/croc/default.nix
···1-{ stdenv, buildGoModule, fetchFromGitHub }:
23buildGoModule rec {
4 pname = "croc";
···1718 subPackages = [ "." ];
190000020 meta = with stdenv.lib; {
21 description =
22 "Easily and securely send things from one computer to another";
···1+{ stdenv, buildGoModule, fetchFromGitHub, callPackage}:
23buildGoModule rec {
4 pname = "croc";
···1718 subPackages = [ "." ];
1920+ passthru = {
21+ tests = {
22+ local-relay = callPackage ./test-local-relay.nix {};
23+ };
24+ };
25 meta = with stdenv.lib; {
26 description =
27 "Easily and securely send things from one computer to another";
···16 doCheck = false;
1718 meta = with lib; {
19- description = "Curlie is a frontend to curl that adds the ease of use of httpie, without compromising on features and performance";
20 homepage = "https://curlie.io/";
21 maintainers = with maintainers; [ ma27 ];
22 license = licenses.mit;
···16 doCheck = false;
1718 meta = with lib; {
19+ description = "Frontend to curl that adds the ease of use of httpie, without compromising on features and performance";
20 homepage = "https://curlie.io/";
21 maintainers = with maintainers; [ ma27 ];
22 license = licenses.mit;
+1-1
pkgs/tools/networking/dnstracer/default.nix
···25 NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin "-lresolv";
2627 meta = with stdenv.lib; {
28- description = "Dnstracer determines where a given Domain Name Server (DNS) gets its information from, and follows the chain of DNS servers back to the servers which know the data";
29 homepage = "http://www.mavetju.org/unix/general.php";
30 license = licenses.bsd2;
31 maintainers = with maintainers; [ andir ];
···25 NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin "-lresolv";
2627 meta = with stdenv.lib; {
28+ description = "Determines where a given Domain Name Server (DNS) gets its information from, and follows the chain of DNS servers back to the servers which know the data";
29 homepage = "http://www.mavetju.org/unix/general.php";
30 license = licenses.bsd2;
31 maintainers = with maintainers; [ andir ];
+1-1
pkgs/tools/networking/driftnet/default.nix
···22 };
2324 meta = {
25- description = "Driftnet watches network traffic, and picks out and displays JPEG and GIF images for display";
26 homepage = "https://github.com/deiv/driftnet";
27 maintainers = with maintainers; [ offline ];
28 platforms = platforms.linux;
···22 };
2324 meta = {
25+ description = "Watches network traffic, and picks out and displays JPEG and GIF images for display";
26 homepage = "https://github.com/deiv/driftnet";
27 maintainers = with maintainers; [ offline ];
28 platforms = platforms.linux;
+1-1
pkgs/tools/networking/goreplay/default.nix
···19 meta = {
20 homepage = "https://github.com/buger/goreplay";
21 license = stdenv.lib.licenses.lgpl3Only;
22- description = "GoReplay is an open-source tool for capturing and replaying live HTTP traffic";
23 platforms = stdenv.lib.platforms.unix;
24 maintainers = with stdenv.lib.maintainers; [ lovek323 ];
25 };
···19 meta = {
20 homepage = "https://github.com/buger/goreplay";
21 license = stdenv.lib.licenses.lgpl3Only;
22+ description = "Open-source tool for capturing and replaying live HTTP traffic";
23 platforms = stdenv.lib.platforms.unix;
24 maintainers = with stdenv.lib.maintainers; [ lovek323 ];
25 };
···35 passthru.updateScript = ./update.sh;
3637 meta = {
38- description = "ngrok";
39- longDescription = ''
40- Allows you to expose a web server running on your local machine to the internet.
41- '';
42 homepage = "https://ngrok.com/";
43 license = licenses.unfree;
44 platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];
···35 passthru.updateScript = ./update.sh;
3637 meta = {
38+ description = "Allows you to expose a web server running on your local machine to the internet";
00039 homepage = "https://ngrok.com/";
40 license = licenses.unfree;
41 platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];
+1-1
pkgs/tools/networking/pmacct/default.nix
···52 ++ optional withMysql "--enable-mysql";
5354 meta = with stdenv.lib; {
55- description = "pmacct is a small set of multi-purpose passive network monitoring tools";
56 longDescription = ''
57 pmacct is a small set of multi-purpose passive network monitoring tools
58 [NetFlow IPFIX sFlow libpcap BGP BMP RPKI IGP Streaming Telemetry]
···52 ++ optional withMysql "--enable-mysql";
5354 meta = with stdenv.lib; {
55+ description = "A small set of multi-purpose passive network monitoring tools";
56 longDescription = ''
57 pmacct is a small set of multi-purpose passive network monitoring tools
58 [NetFlow IPFIX sFlow libpcap BGP BMP RPKI IGP Streaming Telemetry]
···61 '';
6263 meta = with stdenv.lib; {
64- description = "acsccid is a PC/SC driver for Linux/Mac OS X and it supports ACS CCID smart card readers";
65 longDescription = ''
66 acsccid is a PC/SC driver for Linux/Mac OS X and it supports ACS CCID smart card
67 readers. This library provides a PC/SC IFD handler implementation and
···61 '';
6263 meta = with stdenv.lib; {
64+ description = "A PC/SC driver for Linux/Mac OS X and it supports ACS CCID smart card readers";
65 longDescription = ''
66 acsccid is a PC/SC driver for Linux/Mac OS X and it supports ACS CCID smart card
67 readers. This library provides a PC/SC IFD handler implementation and
+2-2
pkgs/tools/security/bitwarden/default.nix
···17 pname = "bitwarden";
1819 version = {
20- x86_64-linux = "1.22.1";
21 }.${system} or "";
2223 sha256 = {
24- x86_64-linux = "1pbcrkafyjjcsd27s99g511llkz05d9qkny7g15wp6piyyv89k3n";
25 }.${system} or "";
2627 meta = with stdenv.lib; {
···17 pname = "bitwarden";
1819 version = {
20+ x86_64-linux = "1.22.2";
21 }.${system} or "";
2223 sha256 = {
24+ x86_64-linux = "1yx550whld0dg3b10x57r2nzizydla4i40zqqm6dzd3wic8yi365";
25 }.${system} or "";
2627 meta = with stdenv.lib; {
+1-1
pkgs/tools/security/fpm2/default.nix
···17 buildInputs = [ gnupg gtk2 libxml2 intltool ];
1819 meta = {
20- description = "FPM2 is GTK2 port from Figaro's Password Manager originally developed by John Conneely, with some new enhancements";
21 homepage = "https://als.regnet.cz/fpm2/";
22 license = licenses.gpl2;
23 platforms = platforms.linux;
···17 buildInputs = [ gnupg gtk2 libxml2 intltool ];
1819 meta = {
20+ description = "GTK2 port from Figaro's Password Manager originally developed by John Conneely, with some new enhancements";
21 homepage = "https://als.regnet.cz/fpm2/";
22 license = licenses.gpl2;
23 platforms = platforms.linux;
···36 '';
3738 meta = with stdenv.lib; {
39- description = "Notary is a project that allows anyone to have trust over arbitrary collections of data";
40 longDescription = ''
41 The Notary project comprises a server and a client for running and
42 interacting with trusted collections. See the service architecture
···36 '';
3738 meta = with stdenv.lib; {
39+ description = "A project that allows anyone to have trust over arbitrary collections of data";
40 longDescription = ''
41 The Notary project comprises a server and a client for running and
42 interacting with trusted collections. See the service architecture
···39 description = "Tool for ssh server auditing";
40 homepage = "https://github.com/jtesta/ssh-audit";
41 license = licenses.mit;
042 maintainers = with maintainers; [ tv SuperSandro2000 ];
43 };
44}
···39 description = "Tool for ssh server auditing";
40 homepage = "https://github.com/jtesta/ssh-audit";
41 license = licenses.mit;
42+ platforms = platforms.all;
43 maintainers = with maintainers; [ tv SuperSandro2000 ];
44 };
45}
+1-1
pkgs/tools/security/sshguard/default.nix
···16 configureFlags = [ "--sysconfdir=/etc" ];
1718 meta = with stdenv.lib; {
19- description = "SSHGuard protects hosts from brute-force attacks";
20 longDescription = ''
21 SSHGuard can read log messages from various input sources. Log messages are parsed, line-by-line, for recognized patterns.
22 If an attack, such as several login failures within a few seconds, is detected, the offending IP is blocked.
···16 configureFlags = [ "--sysconfdir=/etc" ];
1718 meta = with stdenv.lib; {
19+ description = "Protects hosts from brute-force attacks";
20 longDescription = ''
21 SSHGuard can read log messages from various input sources. Log messages are parsed, line-by-line, for recognized patterns.
22 If an attack, such as several login failures within a few seconds, is detected, the offending IP is blocked.
+1-1
pkgs/tools/system/daemon/default.nix
···10 buildInputs = [ perl ];
1112 meta = {
13- description = "Daemon turns other process into daemons";
14 longDescription = ''
15 Daemon turns other process into daemons. There are many tasks that need
16 to be performed to correctly set up a daemon process. This can be tedious.
···10 buildInputs = [ perl ];
1112 meta = {
13+ description = "Turns other processes into daemons";
14 longDescription = ''
15 Daemon turns other process into daemons. There are many tasks that need
16 to be performed to correctly set up a daemon process. This can be tedious.
+1-1
pkgs/tools/system/jump/default.nix
···28 '';
2930 meta = with lib; {
31- description = "Jump helps you navigate faster by learning your habits";
32 longDescription = ''
33 Jump integrates with the shell and learns about your
34 navigational habits by keeping track of the directories you visit. It
···28 '';
2930 meta = with lib; {
31+ description = "Navigate directories faster by learning your habits";
32 longDescription = ''
33 Jump integrates with the shell and learns about your
34 navigational habits by keeping track of the directories you visit. It
···11 makeFlags = [ "DESTDIR=$(out)" "PREFIX=/" ];
1213 meta = with stdenv.lib; {
14- description =
15- "Tool for waiting until a particular time and then running a command.";
16 maintainers = with maintainers; [ kaction ];
17 license = licenses.cc0;
18 platforms = platforms.linux;
···11 makeFlags = [ "DESTDIR=$(out)" "PREFIX=/" ];
1213 meta = with stdenv.lib; {
14+ description = "Tool for waiting until a particular time and then running a command";
015 maintainers = with maintainers; [ kaction ];
16 license = licenses.cc0;
17 platforms = platforms.linux;
+1-1
pkgs/tools/system/testdisk/default.nix
···46 meta = with stdenv.lib; {
47 homepage = "https://www.cgsecurity.org/wiki/Main_Page";
48 downloadPage = "https://www.cgsecurity.org/wiki/TestDisk_Download";
49- description = "Testdisk / Photorec - Data recovery utilities";
50 longDescription = ''
51 TestDisk is a powerful free data recovery software. It was primarily
52 designed to help recover lost partitions and/or make non-booting disks
···46 meta = with stdenv.lib; {
47 homepage = "https://www.cgsecurity.org/wiki/Main_Page";
48 downloadPage = "https://www.cgsecurity.org/wiki/TestDisk_Download";
49+ description = "Data recovery utilities";
50 longDescription = ''
51 TestDisk is a powerful free data recovery software. It was primarily
52 designed to help recover lost partitions and/or make non-booting disks
+2-1
pkgs/tools/system/thinkfan/default.nix
···35 '';
3637 meta = with stdenv.lib; {
38- description = "A minimalist fan control program. Originally designed
039specifically for IBM/Lenovo Thinkpads, it now supports any kind of system via
40the sysfs hwmon interface (/sys/class/hwmon).";
41 license = licenses.gpl3;
···35 '';
3637 meta = with stdenv.lib; {
38+ description = "A minimalist fan control program";
39+ longDescription = "A minimalist fan control program. Originally designed
40specifically for IBM/Lenovo Thinkpads, it now supports any kind of system via
41the sysfs hwmon interface (/sys/class/hwmon).";
42 license = licenses.gpl3;
+1-1
pkgs/tools/text/jsawk/default.nix
···19 '';
2021 meta = {
22- description = "Jsawk is like awk, but for JSON";
23 homepage = "https://github.com/micha/jsawk";
24 license = stdenv.lib.licenses.publicDomain;
25 maintainers = with stdenv.lib.maintainers; [ puffnfresh ];
···19 '';
2021 meta = {
22+ description = "Like awk, but for JSON";
23 homepage = "https://github.com/micha/jsawk";
24 license = stdenv.lib.licenses.publicDomain;
25 maintainers = with stdenv.lib.maintainers; [ puffnfresh ];
···15 nativeBuildInputs = [ autoreconfHook flex libtool ];
1617 meta = with stdenv.lib; {
18- description = "Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON";
19 homepage = "http://johnkerl.org/miller/";
20 license = licenses.bsd2;
21 maintainers = with maintainers; [ mstarzyk ];
···15 nativeBuildInputs = [ autoreconfHook flex libtool ];
1617 meta = with stdenv.lib; {
18+ description = "Like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON";
19 homepage = "http://johnkerl.org/miller/";
20 license = licenses.bsd2;
21 maintainers = with maintainers; [ mstarzyk ];
+1-1
pkgs/tools/text/sift/default.nix
···17 goDeps = ./deps.nix;
1819 meta = with lib; {
20- description = "sift is a fast and powerful alternative to grep";
21 homepage = "https://sift-tool.org";
22 maintainers = [ maintainers.carlsverre ];
23 license = licenses.gpl3;
···17 goDeps = ./deps.nix;
1819 meta = with lib; {
20+ description = "A fast and powerful alternative to grep";
21 homepage = "https://sift-tool.org";
22 maintainers = [ maintainers.carlsverre ];
23 license = licenses.gpl3;
···23stdenv.mkDerivation rec {
4 pname = "asciidoctorj";
5- version = "2.4.0";
67 src = fetchzip {
8 url = "http://dl.bintray.com/asciidoctor/maven/org/asciidoctor/${pname}/${version}/${pname}-${version}-bin.zip";
9- sha256 = "1bp26x5mhbl25s9djlq6yani1vaqrgbi5mjljhwhj97iapwsd0yb";
10 };
1112 nativeBuildInputs = [ makeWrapper ];
···19 '';
2021 meta = with stdenv.lib; {
22- description = ''
23- AsciidoctorJ is the official library for running Asciidoctor on the JVM.
24- '';
25 longDescription = ''
26- AsciidoctorJ is the official library for running Asciidoctor on the JVM.
27- Using AsciidoctorJ, you can convert AsciiDoc content or analyze the
28- structure of a parsed AsciiDoc document from Java and other JVM
29 languages.
30 '';
31 homepage = "https://asciidoctor.org/docs/asciidoctorj/";
···33 platforms = platforms.all;
34 maintainers = with maintainers; [ moaxcp ];
35 };
36-}
···23stdenv.mkDerivation rec {
4 pname = "asciidoctorj";
5+ version = "2.4.1";
67 src = fetchzip {
8 url = "http://dl.bintray.com/asciidoctor/maven/org/asciidoctor/${pname}/${version}/${pname}-${version}-bin.zip";
9+ sha256 = "1m00cdg1520ampg3i2j64si8gmwph7j4189agjlimx3fjjsp3xrh";
10 };
1112 nativeBuildInputs = [ makeWrapper ];
···19 '';
2021 meta = with stdenv.lib; {
22+ description = "Official library for running Asciidoctor on the JVM";
0023 longDescription = ''
24+ AsciidoctorJ is the official library for running Asciidoctor on the JVM.
25+ Using AsciidoctorJ, you can convert AsciiDoc content or analyze the
26+ structure of a parsed AsciiDoc document from Java and other JVM
27 languages.
28 '';
29 homepage = "https://asciidoctor.org/docs/asciidoctorj/";
···31 platforms = platforms.all;
32 maintainers = with maintainers; [ moaxcp ];
33 };
34+}
+9-9
pkgs/tools/typesetting/rubber/default.nix
···9 sha256 = "178dmrp0mza5gqjiqgk6dqs0c10s0c517pk6k9pjbam86vf47a1p";
10 };
1112- nativeBuildInputs = [ texinfo ];
13-14- # I couldn't figure out how to pass the proper parameter to disable pdf generation, so we
15- # use sed to change the default
16- preBuild = ''
17- sed -i -r 's/pdf\s+= True/pdf = False/g' setup.py
018 '';
1920- # the check scripts forces python2. If we need to use python3 at some point, we should use
21- # the correct python
22 checkPhase = ''
23- sed -i 's|python=python3|python=${python3Packages.python.interpreter}|' tests/run.sh
24 cd tests && ${stdenv.shell} run.sh
25 '';
26
···9 sha256 = "178dmrp0mza5gqjiqgk6dqs0c10s0c517pk6k9pjbam86vf47a1p";
10 };
1112+ # I'm sure there is a better way to pass these parameters to the build script...
13+ postPatch = ''
14+ substituteInPlace setup.py \
15+ --replace 'pdf = True' 'pdf = False' \
16+ --replace '$base/man' 'share/man' \
17+ --replace '$base/info' 'share/info' \
18+ --replace '$base/share' 'share'
19 '';
2021+ nativeBuildInputs = [ texinfo ];
22+23 checkPhase = ''
024 cd tests && ${stdenv.shell} run.sh
25 '';
26
+1-1
pkgs/tools/typesetting/ted/default.nix
···61 buildInputs = [ pkgconfig zlib pcre xorg.xlibsWrapper xorg.libXpm libjpeg libtiff libpng gtk2 libpaper makeWrapper ];
6263 meta = with stdenv.lib; {
64- description = "Ted, an easy rich text processor";
65 longDescription = ''
66 Ted is a text processor running under X Windows on Unix/Linux systems.
67 Ted was developed as a standard easy light weight word processor, having
···61 buildInputs = [ pkgconfig zlib pcre xorg.xlibsWrapper xorg.libXpm libjpeg libtiff libpng gtk2 libpaper makeWrapper ];
6263 meta = with stdenv.lib; {
64+ description = "An easy rich text processor";
65 longDescription = ''
66 Ted is a text processor running under X Windows on Unix/Linux systems.
67 Ted was developed as a standard easy light weight word processor, having