···7273A number of fetcher functions wrap part of `fetchurl` and `fetchzip`. They are mainly convenience functions intended for commonly used destinations of source code in Nixpkgs. These wrapper fetchers are listed below.
74000075## `fetchFromGitHub` {#fetchfromgithub}
7677`fetchFromGitHub` expects four arguments. `owner` is a string corresponding to the GitHub user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every GitHub HTML page as `owner`/`repo`. `rev` corresponds to the Git commit hash or tag (e.g `v1.0`) that will be downloaded from Git. Finally, `sha256` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available but `sha256` is currently preferred.
···7273A number of fetcher functions wrap part of `fetchurl` and `fetchzip`. They are mainly convenience functions intended for commonly used destinations of source code in Nixpkgs. These wrapper fetchers are listed below.
7475+## `fetchFromGitea` {#fetchfromgitea}
76+77+`fetchFromGitea` expects five arguments. `domain` is the gitea server name. `owner` is a string corresponding to the Gitea user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every Gitea HTML page as `owner`/`repo`. `rev` corresponds to the Git commit hash or tag (e.g `v1.0`) that will be downloaded from Git. Finally, `sha256` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available but `sha256` is currently preferred.
78+79## `fetchFromGitHub` {#fetchfromgithub}
8081`fetchFromGitHub` expects four arguments. `owner` is a string corresponding to the GitHub user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every GitHub HTML page as `owner`/`repo`. `rev` corresponds to the Git commit hash or tag (e.g `v1.0`) that will be downloaded from Git. Finally, `sha256` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available but `sha256` is currently preferred.
+1-1
doc/languages-frameworks/texlive.section.md
···67- For basic usage just pull `texlive.combined.scheme-basic` for an environment with basic LaTeX support.
89-- It typically won't work to use separately installed packages together. Instead, you can build a custom set of packages like this:
1011 ```nix
12 texlive.combine {
···67- For basic usage just pull `texlive.combined.scheme-basic` for an environment with basic LaTeX support.
89+- It typically won't work to use separately installed packages together. Instead, you can build a custom set of packages like this. Most CTAN packages should be available:
1011 ```nix
12 texlive.combine {
···282 # Like unifyModuleSyntax, but also imports paths and calls functions if necessary
283 loadModule = args: fallbackFile: fallbackKey: m:
284 if isFunction m || isAttrs m then
285- unifyModuleSyntax fallbackFile fallbackKey (applyIfFunction fallbackKey m args)
286 else if isList m then
287 let defs = [{ file = fallbackFile; value = m; }]; in
288 throw "Module imports can't be nested lists. Perhaps you meant to remove one level of lists? Definitions: ${showDefs defs}"
289- else unifyModuleSyntax (toString m) (toString m) (applyIfFunction (toString m) (import m) args);
290291 /*
292 Collects all modules recursively into the form
···383 config = addFreeformType (addMeta (removeAttrs m ["_file" "key" "disabledModules" "require" "imports" "freeformType"]));
384 };
385386- applyIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
387 let
388 # Module arguments are resolved in a strict manner when attribute set
389 # deconstruction is used. As the arguments are now defined with the
···282 # Like unifyModuleSyntax, but also imports paths and calls functions if necessary
283 loadModule = args: fallbackFile: fallbackKey: m:
284 if isFunction m || isAttrs m then
285+ unifyModuleSyntax fallbackFile fallbackKey (applyModuleArgsIfFunction fallbackKey m args)
286 else if isList m then
287 let defs = [{ file = fallbackFile; value = m; }]; in
288 throw "Module imports can't be nested lists. Perhaps you meant to remove one level of lists? Definitions: ${showDefs defs}"
289+ else unifyModuleSyntax (toString m) (toString m) (applyModuleArgsIfFunction (toString m) (import m) args);
290291 /*
292 Collects all modules recursively into the form
···383 config = addFreeformType (addMeta (removeAttrs m ["_file" "key" "disabledModules" "require" "imports" "freeformType"]));
384 };
385386+ applyModuleArgsIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
387 let
388 # Module arguments are resolved in a strict manner when attribute set
389 # deconstruction is used. As the arguments are now defined with the
+19
lib/trivial.nix
···441 isFunction = f: builtins.isFunction f ||
442 (f ? __functor && isFunction (f.__functor f));
4430000000000000000000444 /* Convert the given positive integer to a string of its hexadecimal
445 representation. For example:
446
···441 isFunction = f: builtins.isFunction f ||
442 (f ? __functor && isFunction (f.__functor f));
443444+ /*
445+ Turns any non-callable values into constant functions.
446+ Returns callable values as is.
447+448+ Example:
449+450+ nix-repl> lib.toFunction 1 2
451+ 1
452+453+ nix-repl> lib.toFunction (x: x + 1) 2
454+ 3
455+ */
456+ toFunction =
457+ # Any value
458+ v:
459+ if isFunction v
460+ then v
461+ else k: v;
462+463 /* Convert the given positive integer to a string of its hexadecimal
464 representation. For example:
465
···480 </listitem>
481 <listitem>
482 <para>
000000000483 The <literal>matrix-synapse</literal> service
484 (<literal>services.matrix-synapse</literal>) has been
485 converted to use the <literal>settings</literal> option
···480 </listitem>
481 <listitem>
482 <para>
483+ <literal>services.ipfs.extraFlags</literal> is now escaped
484+ with <literal>utils.escapeSystemdExecArgs</literal>. If you
485+ rely on systemd interpolating <literal>extraFlags</literal> in
486+ the service <literal>ExecStart</literal>, this will no longer
487+ work.
488+ </para>
489+ </listitem>
490+ <listitem>
491+ <para>
492 The <literal>matrix-synapse</literal> service
493 (<literal>services.matrix-synapse</literal>) has been
494 converted to use the <literal>settings</literal> option
+2
nixos/doc/manual/release-notes/rl-2205.section.md
···161162- The `mailpile` email webclient (`services.mailpile`) has been removed due to its reliance on python2.
16300164- The `matrix-synapse` service (`services.matrix-synapse`) has been converted to use the `settings` option defined in RFC42.
165 This means that options that are part of your `homeserver.yaml` configuration, and that were specified at the top-level of the
166 module (`services.matrix-synapse`) now need to be moved into `services.matrix-synapse.settings`. And while not all options you
···161162- The `mailpile` email webclient (`services.mailpile`) has been removed due to its reliance on python2.
163164+- `services.ipfs.extraFlags` is now escaped with `utils.escapeSystemdExecArgs`. If you rely on systemd interpolating `extraFlags` in the service `ExecStart`, this will no longer work.
165+166- The `matrix-synapse` service (`services.matrix-synapse`) has been converted to use the `settings` option defined in RFC42.
167 This means that options that are part of your `homeserver.yaml` configuration, and that were specified at the top-level of the
168 module (`services.matrix-synapse`) now need to be moved into `services.matrix-synapse.settings`. And while not all options you
+14-16
nixos/lib/testing-python.nix
···146147 # Make a full-blown test
148 makeTest =
149- { testScript
00150 , enableOCR ? false
151 , name ? "unnamed"
152 # Skip linting (mainly intended for faster dev cycles)
153 , skipLint ? false
154 , passthru ? {}
0155 , # For meta.position
156 pos ? # position used in error messages and for meta.position
157- (if t.meta.description or null != null
158- then builtins.unsafeGetAttrPos "description" t.meta
159 else builtins.unsafeGetAttrPos "testScript" t)
160- , ...
161 } @ t:
162 let
163- nodes = qemu_pkg:
164 let
165 testScript' =
166 # Call the test script with the computed nodes.
167 if lib.isFunction testScript
168- then testScript { nodes = nodes qemu_pkg; }
169 else testScript;
170171 build-vms = import ./build-vms.nix {
···205 };
206 in
207 build-vms.buildVirtualNetwork (
208- t.nodes or (if t ? machine then { machine = t.machine; } else { })
209 );
210211 driver = setupDriverForTest {
212 inherit testScript enableOCR skipLint passthru;
213 testName = name;
214 qemu_pkg = pkgs.qemu_test;
215- nodes = nodes pkgs.qemu_test;
216 };
217 driverInteractive = setupDriverForTest {
218 inherit testScript enableOCR skipLint passthru;
219 testName = name;
220 qemu_pkg = pkgs.qemu;
221- nodes = nodes pkgs.qemu;
222 interactive = true;
223 };
224225- test =
226- let
227- passMeta = drv: drv // lib.optionalAttrs (t ? meta) {
228- meta = (drv.meta or { }) // t.meta;
229- };
230- in passMeta (runTests { inherit driver pos driverInteractive; });
231232 in
233 test // {
234- inherit test driver driverInteractive nodes;
0235 };
236237 abortForFunction = functionName: abort ''The ${functionName} function was
···146147 # Make a full-blown test
148 makeTest =
149+ { machine ? null
150+ , nodes ? {}
151+ , testScript
152 , enableOCR ? false
153 , name ? "unnamed"
154 # Skip linting (mainly intended for faster dev cycles)
155 , skipLint ? false
156 , passthru ? {}
157+ , meta ? {}
158 , # For meta.position
159 pos ? # position used in error messages and for meta.position
160+ (if meta.description or null != null
161+ then builtins.unsafeGetAttrPos "description" meta
162 else builtins.unsafeGetAttrPos "testScript" t)
0163 } @ t:
164 let
165+ mkNodes = qemu_pkg:
166 let
167 testScript' =
168 # Call the test script with the computed nodes.
169 if lib.isFunction testScript
170+ then testScript { nodes = mkNodes qemu_pkg; }
171 else testScript;
172173 build-vms = import ./build-vms.nix {
···207 };
208 in
209 build-vms.buildVirtualNetwork (
210+ nodes // lib.optionalAttrs (machine != null) { inherit machine; }
211 );
212213 driver = setupDriverForTest {
214 inherit testScript enableOCR skipLint passthru;
215 testName = name;
216 qemu_pkg = pkgs.qemu_test;
217+ nodes = mkNodes pkgs.qemu_test;
218 };
219 driverInteractive = setupDriverForTest {
220 inherit testScript enableOCR skipLint passthru;
221 testName = name;
222 qemu_pkg = pkgs.qemu;
223+ nodes = mkNodes pkgs.qemu;
224 interactive = true;
225 };
226227+ test = lib.addMetaAttrs meta (runTests { inherit driver pos driverInteractive; });
00000228229 in
230 test // {
231+ inherit test driver driverInteractive;
232+ inherit (driver) nodes;
233 };
234235 abortForFunction = functionName: abort ''The ${functionName} function was
+1-1
nixos/modules/installer/tools/tools.nix
···117 '';
118 };
119120- config = lib.mkIf (!config.system.disableInstallerTools) {
121122 system.nixos-generate-config.configuration = mkDefault ''
123 # Edit this configuration file to define what should be installed on
···117 '';
118 };
119120+ config = lib.mkIf (config.nix.enable && !config.system.disableInstallerTools) {
121122 system.nixos-generate-config.configuration = mkDefault ''
123 # Edit this configuration file to define what should be installed on
···37 ###### implementation
3839 config = {
0000004041- systemd.services.nix-optimise =
42 { description = "Nix Store Optimiser";
43 # No point this if the nix daemon (and thus the nix store) is outside
44 unitConfig.ConditionPathIsReadWrite = "/nix/var/nix/daemon-socket";
···37 ###### implementation
3839 config = {
40+ assertions = [
41+ {
42+ assertion = cfg.automatic -> config.nix.enable;
43+ message = ''nix.optimise.automatic requires nix.enable'';
44+ }
45+ ];
4647+ systemd.services.nix-optimise = lib.mkIf config.nix.enable
48 { description = "Nix Store Optimiser";
49 # No point this if the nix daemon (and thus the nix store) is outside
50 unitConfig.ConditionPathIsReadWrite = "/nix/var/nix/daemon-socket";
···1+{ config, lib, pkgs, ... }:
2+3+let
4+ inherit (lib)
5+ concatStringsSep
6+ mkEnableOption mkIf mkOption types;
7+8+ cfg = config.services.https-dns-proxy;
9+10+ providers = {
11+ cloudflare = {
12+ ips = [ "1.1.1.1" "1.0.0.1" ];
13+ url = "https://cloudflare-dns.com/dns-query";
14+ };
15+ google = {
16+ ips = [ "8.8.8.8" "8.8.4.4" ];
17+ url = "https://dns.google/dns-query";
18+ };
19+ quad9 = {
20+ ips = [ "9.9.9.9" "149.112.112.112" ];
21+ url = "https://dns.quad9.net/dns-query";
22+ };
23+ };
24+25+ defaultProvider = "quad9";
26+27+ providerCfg =
28+ let
29+ isCustom = cfg.provider.kind == "custom";
30+ in
31+ lib.concatStringsSep " " [
32+ "-b"
33+ (concatStringsSep "," (if isCustom then cfg.provider.ips else providers."${cfg.provider.kind}".ips))
34+ "-r"
35+ (if isCustom then cfg.provider.url else providers."${cfg.provider.kind}".url)
36+ ];
37+38+in
39+{
40+ meta.maintainers = with lib.maintainers; [ peterhoeg ];
41+42+ ###### interface
43+44+ options.services.https-dns-proxy = {
45+ enable = mkEnableOption "https-dns-proxy daemon";
46+47+ address = mkOption {
48+ description = "The address on which to listen";
49+ type = types.str;
50+ default = "127.0.0.1";
51+ };
52+53+ port = mkOption {
54+ description = "The port on which to listen";
55+ type = types.port;
56+ default = 5053;
57+ };
58+59+ provider = {
60+ kind = mkOption {
61+ description = ''
62+ The upstream provider to use or custom in case you do not trust any of
63+ the predefined providers or just want to use your own.
64+65+ The default is ${defaultProvider} and there are privacy and security trade-offs
66+ when using any upstream provider. Please consider that before using any
67+ of them.
68+69+ If you pick a custom provider, you will need to provide the bootstrap
70+ IP addresses as well as the resolver https URL.
71+ '';
72+ type = types.enum ((builtins.attrNames providers) ++ [ "custom" ]);
73+ default = defaultProvider;
74+ };
75+76+ ips = mkOption {
77+ description = "The custom provider IPs";
78+ type = types.listOf types.str;
79+ };
80+81+ url = mkOption {
82+ description = "The custom provider URL";
83+ type = types.str;
84+ };
85+ };
86+87+ preferIPv4 = mkOption {
88+ description = ''
89+ https_dns_proxy will by default use IPv6 and fail if it is not available.
90+ To play it safe, we choose IPv4.
91+ '';
92+ type = types.bool;
93+ default = true;
94+ };
95+96+ extraArgs = mkOption {
97+ description = "Additional arguments to pass to the process.";
98+ type = types.listOf types.str;
99+ default = [ "-v" ];
100+ };
101+ };
102+103+ ###### implementation
104+105+ config = lib.mkIf cfg.enable {
106+ systemd.services.https-dns-proxy = {
107+ description = "DNS to DNS over HTTPS (DoH) proxy";
108+ after = [ "network.target" ];
109+ wantedBy = [ "multi-user.target" ];
110+ serviceConfig = rec {
111+ Type = "exec";
112+ DynamicUser = true;
113+ ExecStart = lib.concatStringsSep " " (
114+ [
115+ "${pkgs.https-dns-proxy}/bin/https_dns_proxy"
116+ "-a ${toString cfg.address}"
117+ "-p ${toString cfg.port}"
118+ "-l -"
119+ providerCfg
120+ ]
121+ ++ lib.optional cfg.preferIPv4 "-4"
122+ ++ cfg.extraArgs
123+ );
124+ Restart = "on-failure";
125+ };
126+ };
127+ };
128+}
+77-21
nixos/modules/services/system/earlyoom.nix
···56 inherit (lib)
7 mkDefault mkEnableOption mkIf mkOption types
8- mkRemovedOptionModule
9- concatStringsSep optional;
1011in
12{
···17 type = types.ints.between 1 100;
18 default = 10;
19 description = ''
20- Minimum of availabe memory (in percent).
21- If the free memory falls below this threshold and the analog is true for
22- <option>services.earlyoom.freeSwapThreshold</option>
23- the killing begins.
000000000000000024 '';
25 };
26···28 type = types.ints.between 1 100;
29 default = 10;
30 description = ''
31- Minimum of availabe swap space (in percent).
32- If the available swap space falls below this threshold and the analog
33- is true for <option>services.earlyoom.freeMemThreshold</option>
34- the killing begins.
35 '';
36 };
3738- # TODO: remove or warn after 1.7 (https://github.com/rfjakob/earlyoom/commit/7ebc4554)
39- ignoreOOMScoreAdjust = mkOption {
40- type = types.bool;
41- default = false;
42 description = ''
43- Ignore oom_score_adjust values of processes.
00044 '';
45 };
46···63 local user to DoS your session by spamming notifications.
6465 To actually see the notifications in your GUI session, you need to have
66- <literal>systembus-notify</literal> running as your user which this
67- option handles.
6869 See <link xlink:href="https://github.com/rfjakob/earlyoom#notifications">README</link> for details.
70 '';
71 };
000000000000000000000000000000072 };
7374 imports = [
···76 This option is deprecated and ignored by earlyoom since 1.2.
77 '')
78 (mkRemovedOptionModule [ "services" "earlyoom" "notificationsCommand" ] ''
79- This option is deprecated and ignored by earlyoom since 1.6.
000080 '')
81 ];
82···91 StandardError = "journal";
92 ExecStart = concatStringsSep " " ([
93 "${pkgs.earlyoom}/bin/earlyoom"
94- "-m ${toString cfg.freeMemThreshold}"
95- "-s ${toString cfg.freeSwapThreshold}"
00096 ]
97- ++ optional cfg.ignoreOOMScoreAdjust "-i"
98 ++ optional cfg.enableDebugInfo "-d"
99 ++ optional cfg.enableNotifications "-n"
00100 );
101 };
102 };
···56 inherit (lib)
7 mkDefault mkEnableOption mkIf mkOption types
8+ mkRemovedOptionModule literalExpression
9+ escapeShellArg concatStringsSep optional optionalString;
1011in
12{
···17 type = types.ints.between 1 100;
18 default = 10;
19 description = ''
20+ Minimum available memory (in percent).
21+22+ If the available memory falls below this threshold (and the analog is true for
23+ <option>freeSwapThreshold</option>) the killing begins.
24+ SIGTERM is sent first to the process that uses the most memory; then, if the available
25+ memory falls below <option>freeMemKillThreshold</option> (and the analog is true for
26+ <option>freeSwapKillThreshold</option>), SIGKILL is sent.
27+28+ See <link xlink:href="https://github.com/rfjakob/earlyoom#command-line-options">README</link> for details.
29+ '';
30+ };
31+32+ freeMemKillThreshold = mkOption {
33+ type = types.nullOr (types.ints.between 1 100);
34+ default = null;
35+ description = ''
36+ Minimum available memory (in percent) before sending SIGKILL.
37+ If unset, this defaults to half of <option>freeMemThreshold</option>.
38+39+ See the description of <xref linkend="opt-services.earlyoom.freeMemThreshold"/>.
40 '';
41 };
42···44 type = types.ints.between 1 100;
45 default = 10;
46 description = ''
47+ Minimum free swap space (in percent) before sending SIGTERM.
48+49+ See the description of <xref linkend="opt-services.earlyoom.freeMemThreshold"/>.
050 '';
51 };
5253+ freeSwapKillThreshold = mkOption {
54+ type = types.nullOr (types.ints.between 1 100);
55+ default = null;
056 description = ''
57+ Minimum free swap space (in percent) before sending SIGKILL.
58+ If unset, this defaults to half of <option>freeSwapThreshold</option>.
59+60+ See the description of <xref linkend="opt-services.earlyoom.freeMemThreshold"/>.
61 '';
62 };
63···80 local user to DoS your session by spamming notifications.
8182 To actually see the notifications in your GUI session, you need to have
83+ <literal>systembus-notify</literal> running as your user, which this
84+ option handles by enabling <option>services.systembus-notify</option>.
8586 See <link xlink:href="https://github.com/rfjakob/earlyoom#notifications">README</link> for details.
87 '';
88 };
89+90+ killHook = mkOption {
91+ type = types.nullOr types.path;
92+ default = null;
93+ example = literalExpression ''
94+ pkgs.writeShellScript "earlyoom-kill-hook" '''
95+ echo "Process $EARLYOOM_NAME ($EARLYOOM_PID) was killed" >> /path/to/log
96+ '''
97+ '';
98+ description = ''
99+ An absolute path to an executable to be run for each process killed.
100+ Some environment variables are available, see
101+ <link xlink:href="https://github.com/rfjakob/earlyoom#notifications">README</link> and
102+ <link xlink:href="https://github.com/rfjakob/earlyoom/blob/master/MANPAGE.md#-n-pathtoscript">the man page</link>
103+ for details.
104+ '';
105+ };
106+107+ reportInterval = mkOption {
108+ type = types.int;
109+ default = 3600;
110+ example = 0;
111+ description = "Interval (in seconds) at which a memory report is printed (set to 0 to disable).";
112+ };
113+114+ extraArgs = mkOption {
115+ type = types.listOf types.str;
116+ default = [];
117+ example = [ "-g" "--prefer '(^|/)(java|chromium)$'" ];
118+ description = "Extra command-line arguments to be passed to earlyoom.";
119+ };
120 };
121122 imports = [
···124 This option is deprecated and ignored by earlyoom since 1.2.
125 '')
126 (mkRemovedOptionModule [ "services" "earlyoom" "notificationsCommand" ] ''
127+ This option was removed in earlyoom 1.6, but was reimplemented in 1.7
128+ and is available as the new option `services.earlyoom.killHook`.
129+ '')
130+ (mkRemovedOptionModule [ "services" "earlyoom" "ignoreOOMScoreAdjust" ] ''
131+ This option is deprecated and ignored by earlyoom since 1.7.
132 '')
133 ];
134···143 StandardError = "journal";
144 ExecStart = concatStringsSep " " ([
145 "${pkgs.earlyoom}/bin/earlyoom"
146+ ("-m ${toString cfg.freeMemThreshold}"
147+ + optionalString (cfg.freeMemKillThreshold != null) ",${toString cfg.freeMemKillThreshold}")
148+ ("-s ${toString cfg.freeSwapThreshold}"
149+ + optionalString (cfg.freeSwapKillThreshold != null) ",${toString cfg.freeSwapKillThreshold}")
150+ "-r ${toString cfg.reportInterval}"
151 ]
0152 ++ optional cfg.enableDebugInfo "-d"
153 ++ optional cfg.enableNotifications "-n"
154+ ++ optional (cfg.killHook != null) "-N ${escapeShellArg cfg.killHook}"
155+ ++ cfg.extraArgs
156 );
157 };
158 };
···1020 local = "10.0.0.22";
1021 dev = "enp4s0f0";
1022 type = "tap";
01023 };
1024 gre6Tunnel = {
1025 remote = "fd7a:5634::1";
1026 local = "fd7a:5634::2";
1027 dev = "enp4s0f0";
1028 type = "tun6";
01029 };
1030 }
1031 '';
···1060 example = "enp4s0f0";
1061 description = ''
1062 The underlying network device on which the tunnel resides.
0000000001063 '';
1064 };
1065
···1020 local = "10.0.0.22";
1021 dev = "enp4s0f0";
1022 type = "tap";
1023+ ttl = 255;
1024 };
1025 gre6Tunnel = {
1026 remote = "fd7a:5634::1";
1027 local = "fd7a:5634::2";
1028 dev = "enp4s0f0";
1029 type = "tun6";
1030+ ttl = 255;
1031 };
1032 }
1033 '';
···1062 example = "enp4s0f0";
1063 description = ''
1064 The underlying network device on which the tunnel resides.
1065+ '';
1066+ };
1067+1068+ ttl = mkOption {
1069+ type = types.nullOr types.int;
1070+ default = null;
1071+ example = 255;
1072+ description = ''
1073+ The time-to-live/hoplimit of the connection to the remote tunnel endpoint.
1074 '';
1075 };
1076
+1-1
nixos/modules/virtualisation/qemu-vm.nix
···796 # allow `system.build.toplevel' to be included. (If we had a direct
797 # reference to ${regInfo} here, then we would get a cyclic
798 # dependency.)
799- boot.postBootCommands =
800 ''
801 if [[ "$(cat /proc/cmdline)" =~ regInfo=([^ ]*) ]]; then
802 ${config.nix.package.out}/bin/nix-store --load-db < ''${BASH_REMATCH[1]}
···796 # allow `system.build.toplevel' to be included. (If we had a direct
797 # reference to ${regInfo} here, then we would get a cyclic
798 # dependency.)
799+ boot.postBootCommands = lib.mkIf config.nix.enable
800 ''
801 if [[ "$(cat /proc/cmdline)" =~ regInfo=([^ ]*) ]]; then
802 ${config.nix.package.out}/bin/nix-store --load-db < ''${BASH_REMATCH[1]}
···1{ lib, stdenv, fetchsvn, libxml2, gtk2, curl, pkg-config } :
23-let
04 version = "31801";
5-in
6-stdenv.mkDerivation {
7- name = "gosmore-r${version}";
8 # the gosmore svn repository does not lock revision numbers of its externals
9 # so we explicitly disable them to avoid breaking the hash
10 # especially as the externals appear to be unused
···1{ lib, stdenv, fetchsvn, libxml2, gtk2, curl, pkg-config } :
23+stdenv.mkDerivation rec {
4+ pname = "gosmore";
5 version = "31801";
0006 # the gosmore svn repository does not lock revision numbers of its externals
7 # so we explicitly disable them to avoid breaking the hash
8 # especially as the externals appear to be unused
···20 license = licenses.gpl3;
21 maintainers = with maintainers; [ mbode tazjin ];
22 platforms = platforms.unix;
23- repositories.git = "git://github.com/tazjin/kontemplate.git";
2425 longDescription = ''
26 Kontemplate is a simple CLI tool that can take sets of
···20 license = licenses.gpl3;
21 maintainers = with maintainers; [ mbode tazjin ];
22 platforms = platforms.unix;
02324 longDescription = ''
25 Kontemplate is a simple CLI tool that can take sets of
···2425in stdenv.mkDerivation rec {
26 pname = "signal-desktop";
27- version = "5.35.0"; # Please backport all updates to the stable channel.
28 # All releases have a limited lifetime and "expire" 90 days after the release.
29 # When releases "expire" the application becomes unusable until an update is
30 # applied. The expiration date for the current release can be extracted with:
···3435 src = fetchurl {
36 url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
37- sha256 = "sha256-2KF2OLq6/vHElgloxn+kgQisJC+HAkpOBfsKfEPW35c=";
38 };
3940 nativeBuildInputs = [
···2425in stdenv.mkDerivation rec {
26 pname = "signal-desktop";
27+ version = "5.36.0"; # Please backport all updates to the stable channel.
28 # All releases have a limited lifetime and "expire" 90 days after the release.
29 # When releases "expire" the application becomes unusable until an update is
30 # applied. The expiration date for the current release can be extracted with:
···3435 src = fetchurl {
36 url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
37+ sha256 = "sha256-x1PUEDq/0B1T14mBs2FuKtcGpJHWOIvHAs8hptpzhZk=";
38 };
3940 nativeBuildInputs = [
···17 url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz";
18 sha512 = "2afaee16f155edcb0bdb46ebe282a733cf041ec6f562aebd06f8b675e46917f6f500fcc532fc54d74f3f4b0b489a88934a2c6c304f849873de4bc2690b9056a0";
19 };
20- patches = [
21 # The file to be patched is different from firefox's `no-buildconfig-ffx90.patch`.
22 ./no-buildconfig.patch
23 ];
···17 url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz";
18 sha512 = "2afaee16f155edcb0bdb46ebe282a733cf041ec6f562aebd06f8b675e46917f6f500fcc532fc54d74f3f4b0b489a88934a2c6c304f849873de4bc2690b9056a0";
19 };
20+ extraPatches = [
21 # The file to be patched is different from firefox's `no-buildconfig-ffx90.patch`.
22 ./no-buildconfig.patch
23 ];
+7-1
pkgs/applications/networking/n8n/default.nix
···17 meta = with lib; {
18 description = "Free and open fair-code licensed node based Workflow Automation Tool";
19 maintainers = with maintainers; [ freezeboy k900 ];
20- license = licenses.asl20;
00000021 };
22}
···17 meta = with lib; {
18 description = "Free and open fair-code licensed node based Workflow Automation Tool";
19 maintainers = with maintainers; [ freezeboy k900 ];
20+ license = {
21+ fullName = "Sustainable Use License";
22+ url = "https://github.com/n8n-io/n8n/blob/master/LICENSE.md";
23+ free = false;
24+ # only free to redistribute "for non-commercial purposes"
25+ redistributable = false;
26+ };
27 };
28}
···1{ lib, stdenv, fetchurl, jre, makeWrapper }:
23-let
04 version = "1.13.0";
05 jarName = "bfg-${version}.jar";
6- mavenUrl = "mirror://maven/com/madgag/bfg/${version}/${jarName}";
7-in
8- stdenv.mkDerivation {
9- inherit version jarName;
1011- name = "bfg-repo-cleaner-${version}";
0001213- src = fetchurl {
14- url = mavenUrl;
15- sha256 = "1kn84rsvms1v5l1j2xgrk7dc7mnsmxkc6sqd94mnim22vnwvl8mz";
16- };
1718- nativeBuildInputs = [ makeWrapper ];
19- buildInputs = [ jre ];
20-21- dontUnpack = true;
2223- installPhase = ''
24- mkdir -p $out/share/java
25- mkdir -p $out/bin
26- cp $src $out/share/java/$jarName
27- makeWrapper "${jre}/bin/java" $out/bin/bfg --add-flags "-cp $out/share/java/$jarName com.madgag.git.bfg.cli.Main"
28- '';
2930- meta = with lib; {
31- homepage = "https://rtyley.github.io/bfg-repo-cleaner/";
32- # Descriptions taken with minor modification from the homepage of bfg-repo-cleaner
33- description = "Removes large or troublesome blobs in a git repository like git-filter-branch does, but faster";
34- longDescription = ''
35- The BFG is a simpler, faster alternative to git-filter-branch for
36- cleansing bad data out of your Git repository history, in particular removing
37- crazy big files and removing passwords, credentials, and other private data.
3839- The git-filter-branch command is enormously powerful and can do things
40- that the BFG can't - but the BFG is much better for the tasks above, because
41- it's faster (10-720x), simpler (dedicated to just removing things), and
42- beautiful (can use Scala instead of bash to script customizations).
43- '';
44- license = licenses.gpl3;
45- maintainers = [ maintainers.changlinli ];
46- platforms = platforms.unix;
47- downloadPage = "https://mvnrepository.com/artifact/com.madgag/bfg/${version}";
48- };
4950- }
···1{ lib, stdenv, fetchurl, jre, makeWrapper }:
23+stdenv.mkDerivation rec {
4+ pname = "bfg-repo-cleaner";
5 version = "1.13.0";
6+7 jarName = "bfg-${version}.jar";
000089+ src = fetchurl {
10+ url = "mirror://maven/com/madgag/bfg/${version}/${jarName}";
11+ sha256 = "1kn84rsvms1v5l1j2xgrk7dc7mnsmxkc6sqd94mnim22vnwvl8mz";
12+ };
1314+ nativeBuildInputs = [ makeWrapper ];
15+ buildInputs = [ jre ];
001617+ dontUnpack = true;
0001819+ installPhase = ''
20+ mkdir -p $out/share/java
21+ mkdir -p $out/bin
22+ cp $src $out/share/java/$jarName
23+ makeWrapper "${jre}/bin/java" $out/bin/bfg --add-flags "-cp $out/share/java/$jarName com.madgag.git.bfg.cli.Main"
24+ '';
2526+ meta = with lib; {
27+ homepage = "https://rtyley.github.io/bfg-repo-cleaner/";
28+ # Descriptions taken with minor modification from the homepage of bfg-repo-cleaner
29+ description = "Removes large or troublesome blobs in a git repository like git-filter-branch does, but faster";
30+ longDescription = ''
31+ The BFG is a simpler, faster alternative to git-filter-branch for
32+ cleansing bad data out of your Git repository history, in particular removing
33+ crazy big files and removing passwords, credentials, and other private data.
3435+ The git-filter-branch command is enormously powerful and can do things
36+ that the BFG can't - but the BFG is much better for the tasks above, because
37+ it's faster (10-720x), simpler (dedicated to just removing things), and
38+ beautiful (can use Scala instead of bash to script customizations).
39+ '';
40+ license = licenses.gpl3;
41+ maintainers = [ maintainers.changlinli ];
42+ platforms = platforms.unix;
43+ downloadPage = "https://mvnrepository.com/artifact/com.madgag/bfg/${version}";
44+ };
4546+}
···1617buildGoPackage rec {
18 pname = "gitea";
19- version = "1.16.4";
2021 # not fetching directly from the git repo, because that lacks several vendor files for the web UI
22 src = fetchurl {
23 url = "https://github.com/go-gitea/gitea/releases/download/v${version}/gitea-src-${version}.tar.gz";
24- sha256 = "sha256-7zlreX05pkhn381FMgQ8Nj3OP+BUr6o3u5f4ouo/Khg=";
25 };
2627 unpackPhase = ''
···1617buildGoPackage rec {
18 pname = "gitea";
19+ version = "1.16.5";
2021 # not fetching directly from the git repo, because that lacks several vendor files for the web UI
22 src = fetchurl {
23 url = "https://github.com/go-gitea/gitea/releases/download/v${version}/gitea-src-${version}.tar.gz";
24+ sha256 = "sha256-2aqy6DV8oaIur/syg1bk41Wo+FGk3m+05+tUyoDwGHs=";
25 };
2627 unpackPhase = ''
···59 export PATH="/run/wrappers/bin:/usr/bin:/usr/sbin:$PATH"
60 export TZDIR='/etc/zoneinfo'
6100062 # Force compilers and other tools to look in default search paths
63 unset NIX_ENFORCE_PURITY
64 export NIX_CC_WRAPPER_TARGET_HOST_${stdenv.cc.suffixSalt}=1
···59 export PATH="/run/wrappers/bin:/usr/bin:/usr/sbin:$PATH"
60 export TZDIR='/etc/zoneinfo'
6162+ # XDG_DATA_DIRS is used by pressure-vessel (steam proton) and vulkan loaders to find the corresponding icd
63+ export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}/run/opengl-driver/share:/run/opengl-driver-32/share
64+65 # Force compilers and other tools to look in default search paths
66 unset NIX_ENFORCE_PURITY
67 export NIX_CC_WRAPPER_TARGET_HOST_${stdenv.cc.suffixSalt}=1
+3
pkgs/build-support/build-fhs-userenv/env.nix
···60 export PATH="/run/wrappers/bin:/usr/bin:/usr/sbin:$PATH"
61 export TZDIR='/etc/zoneinfo'
6200063 # Force compilers and other tools to look in default search paths
64 unset NIX_ENFORCE_PURITY
65 export NIX_CC_WRAPPER_TARGET_HOST_${stdenv.cc.suffixSalt}=1
···60 export PATH="/run/wrappers/bin:/usr/bin:/usr/sbin:$PATH"
61 export TZDIR='/etc/zoneinfo'
6263+ # XDG_DATA_DIRS is used by pressure-vessel (steam proton) and vulkan loaders to find the corresponding icd
64+ export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}/run/opengl-driver/share:/run/opengl-driver-32/share
65+66 # Force compilers and other tools to look in default search paths
67 unset NIX_ENFORCE_PURITY
68 export NIX_CC_WRAPPER_TARGET_HOST_${stdenv.cc.suffixSalt}=1
···18 local -r iconName=$3
19 local -r theme=${4:-hicolor}
2021- local -ra iconSizes=(16 32 48 128 256 512)
0022 local -ra scales=([1]="" [2]="@2")
2324 # Based loosely on the algorithm at:
···31 local scaleSuffix=${scales[$scale]}
32 local exactSize=${iconSize}x${iconSize}${scaleSuffix}
3334- if [[ $exactSize = '48x48@2' ]]; then
35- # macOS does not support a 2x scale variant of 48x48 icons
36- # See: https://en.wikipedia.org/wiki/Apple_Icon_Image_format#Icon_types
37- echo "unsupported"
38- return 0
39- fi
40-41 local -a validSizes=(
42 ${exactSize}
43 $((iconSize + 1))x$((iconSize + 1))${scaleSuffix}
···55 else
56 echo "threshold $icon"
57 fi
58- return 0
059 fi
060 done
61 done
62 echo "scalable"
···106 scalableIcon=('-')
107 fi
10800000000000109 for iconSize in "${iconSizes[@]}"; do
110 for scale in "${!scales[@]}"; do
111 local iconResult=$(findIcon $iconSize $scale)
···117 fixed)
118 local density=$((72 * scale))x$((72 * scale))
119 magick convert -density "$density" -units PixelsPerInch "$icon" "$result"
0120 ;;
121 threshold)
122 # Synthesize an icon of the exact size if a scalable icon is available
···124 if ! synthesizeIcon "${scalableIcon[0]}" "$result" "$iconSize" "$scale"; then
125 resizeIcon "$icon" "$result" "$iconSize" "$scale"
126 fi
0127 ;;
128 scalable)
129 synthesizeIcon "${scalableIcon[0]}" "$result" "$iconSize" "$scale" || true
00000000130 ;;
131 *)
132 ;;
133 esac
134 done
135 done
00000000136 echo "$resultdir"
137 }
138139 iconsdir=$(getIcons "$sharePath" "apps/${iconName}" "$theme")
140- if [[ ! -z "$(ls -1 "$iconsdir/"*)" ]]; then
141- icnsutil compose "$out/${iconName}.icns" "$iconsdir/"*
142 else
143 echo "Warning: no icons were found. Creating an empty icon for ${iconName}.icns."
144 touch "$out/${iconName}.icns"
···18 local -r iconName=$3
19 local -r theme=${4:-hicolor}
2021+ # Sizes based on archived Apple documentation:
22+ # https://developer.apple.com/design/human-interface-guidelines/macos/icons-and-images/app-icon#app-icon-sizes
23+ local -ra iconSizes=(16 32 128 256 512)
24 local -ra scales=([1]="" [2]="@2")
2526 # Based loosely on the algorithm at:
···33 local scaleSuffix=${scales[$scale]}
34 local exactSize=${iconSize}x${iconSize}${scaleSuffix}
35000000036 local -a validSizes=(
37 ${exactSize}
38 $((iconSize + 1))x$((iconSize + 1))${scaleSuffix}
···50 else
51 echo "threshold $icon"
52 fi
53+ elif [[ -a $icon ]]; then
54+ echo "fallback $icon"
55 fi
56+ return 0
57 done
58 done
59 echo "scalable"
···103 scalableIcon=('-')
104 fi
105106+ # Tri-state variable, NONE means no icons have been found, an empty
107+ # icns file will be generated, not sure that's necessary because macOS
108+ # will default to a generic icon if no icon can be found.
109+ #
110+ # OTHER means an appropriate icon was found.
111+ #
112+ # Any other value is a path to an icon file that isn't scalable or
113+ # within the threshold. This is used as a fallback in case no better
114+ # icon can be found and will be scaled as much as
115+ # necessary to result in appropriate icon sizes.
116+ local foundIcon=NONE
117 for iconSize in "${iconSizes[@]}"; do
118 for scale in "${!scales[@]}"; do
119 local iconResult=$(findIcon $iconSize $scale)
···125 fixed)
126 local density=$((72 * scale))x$((72 * scale))
127 magick convert -density "$density" -units PixelsPerInch "$icon" "$result"
128+ foundIcon=OTHER
129 ;;
130 threshold)
131 # Synthesize an icon of the exact size if a scalable icon is available
···133 if ! synthesizeIcon "${scalableIcon[0]}" "$result" "$iconSize" "$scale"; then
134 resizeIcon "$icon" "$result" "$iconSize" "$scale"
135 fi
136+ foundIcon=OTHER
137 ;;
138 scalable)
139 synthesizeIcon "${scalableIcon[0]}" "$result" "$iconSize" "$scale" || true
140+ foundIcon=OTHER
141+ ;;
142+ fallback)
143+ # Use the largest size available to scale to
144+ # appropriate sizes.
145+ if [[ $foundIcon != OTHER ]]; then
146+ foundIcon=$icon
147+ fi
148 ;;
149 *)
150 ;;
151 esac
152 done
153 done
154+ if [[ $foundIcon != NONE && $foundIcon != OTHER ]]; then
155+ # Ideally we'd only resize to whatever the closest sizes are,
156+ # starting from whatever icon sizes are available.
157+ for iconSize in 16 32 128 256 512; do
158+ local result=${resultdir}/${iconSize}x${iconSize}.png
159+ resizeIcon "$foundIcon" "$result" "$iconSize" 1
160+ done
161+ fi
162 echo "$resultdir"
163 }
164165 iconsdir=$(getIcons "$sharePath" "apps/${iconName}" "$theme")
166+ if [[ -n "$(ls -1 "$iconsdir/"*)" ]]; then
167+ icnsutil compose --toc "$out/${iconName}.icns" "$iconsdir/"*
168 else
169 echo "Warning: no icons were found. Creating an empty icon for ${iconName}.icns."
170 touch "$out/${iconName}.icns"
-1
pkgs/data/documentation/man-pages/default.nix
···24 meta = with lib; {
25 description = "Linux development manual pages";
26 homepage = "https://www.kernel.org/doc/man-pages/";
27- repositories.git = "https://git.kernel.org/pub/scm/docs/man-pages/man-pages";
28 license = licenses.gpl2Plus;
29 platforms = with platforms; unix;
30 priority = 30; # if a package comes with its own man page, prefer it
···24 meta = with lib; {
25 description = "Linux development manual pages";
26 homepage = "https://www.kernel.org/doc/man-pages/";
027 license = licenses.gpl2Plus;
28 platforms = with platforms; unix;
29 priority = 30; # if a package comes with its own man page, prefer it
···25 meta = with lib; {
26 description = "Allows you (with the right hardware) to control your device with your TV remote control using existing HDMI cabling";
27 homepage = "http://libcec.pulse-eight.com";
28- repositories.git = "https://github.com/Pulse-Eight/libcec.git";
29 license = lib.licenses.gpl2Plus;
30 platforms = platforms.linux;
31 maintainers = [ maintainers.titanous ];
···25 meta = with lib; {
26 description = "Allows you (with the right hardware) to control your device with your TV remote control using existing HDMI cabling";
27 homepage = "http://libcec.pulse-eight.com";
028 license = lib.licenses.gpl2Plus;
29 platforms = platforms.linux;
30 maintainers = [ maintainers.titanous ];
-1
pkgs/development/libraries/libcec/platform.nix
···16 meta = with lib; {
17 description = "Platform library for libcec and Kodi addons";
18 homepage = "https://github.com/Pulse-Eight/platform";
19- repositories.git = "https://github.com/Pulse-Eight/platform.git";
20 license = lib.licenses.gpl2Plus;
21 platforms = platforms.all;
22 maintainers = [ maintainers.titanous ];
···16 meta = with lib; {
17 description = "Platform library for libcec and Kodi addons";
18 homepage = "https://github.com/Pulse-Eight/platform";
019 license = lib.licenses.gpl2Plus;
20 platforms = platforms.all;
21 maintainers = [ maintainers.titanous ];
···3536 meta = with lib; {
37 homepage = "https://libusb.info/";
38- repositories.git = "https://github.com/libusb/libusb-compat-0.1";
39 description = "cross-platform user-mode USB device library";
40 longDescription = ''
41 libusb is a cross-platform user-mode library that provides access to USB devices.
···3536 meta = with lib; {
37 homepage = "https://libusb.info/";
038 description = "cross-platform user-mode USB device library";
39 longDescription = ''
40 libusb is a cross-platform user-mode library that provides access to USB devices.
-1
pkgs/development/libraries/libusb1/default.nix
···3940 meta = with lib; {
41 homepage = "https://libusb.info/";
42- repositories.git = "https://github.com/libusb/libusb";
43 description = "cross-platform user-mode USB device library";
44 longDescription = ''
45 libusb is a cross-platform user-mode library that provides access to USB devices.
···3940 meta = with lib; {
41 homepage = "https://libusb.info/";
042 description = "cross-platform user-mode USB device library";
43 longDescription = ''
44 libusb is a cross-platform user-mode library that provides access to USB devices.
-1
pkgs/development/libraries/libvirt/default.nix
···331332 meta = {
333 homepage = "https://libvirt.org/";
334- repositories.git = "git://libvirt.org/libvirt.git";
335 description = ''
336 A toolkit to interact with the virtualization capabilities of recent
337 versions of Linux (and other OSes)
···331332 meta = {
333 homepage = "https://libvirt.org/";
0334 description = ''
335 A toolkit to interact with the virtualization capabilities of recent
336 versions of Linux (and other OSes)
···2425 meta = with lib; {
26 homepage = "https://taglib.org/";
27- repositories.git = "git://github.com/taglib/taglib.git";
28 description = "A library for reading and editing audio file metadata";
29 longDescription = ''
30 TagLib is a library for reading and editing the meta-data of several
···2425 meta = with lib; {
26 homepage = "https://taglib.org/";
027 description = "A library for reading and editing audio file metadata";
28 longDescription = ''
29 TagLib is a library for reading and editing the meta-data of several
···34 export USE_SHARED_BROTLI=1
35 '';
3637- # Test data is not available, only when using libbortli git checkout
38 doCheck = false;
3940 pythonImportsCheck = [ "brotlicffi" ];
···34 export USE_SHARED_BROTLI=1
35 '';
3637+ # Test data is not available, only when using libbrotli git checkout
38 doCheck = false;
3940 pythonImportsCheck = [ "brotlicffi" ];
···38 ];
3940 meta = with lib; {
41- homepage = "http://flask.pocoo.org/";
42 description = "The Python micro framework for building web applications";
43 longDescription = ''
44 Flask is a lightweight WSGI web application framework. It is
···38 ];
3940 meta = with lib; {
41+ homepage = "https://flask.palletsprojects.com/";
42 description = "The Python micro framework for building web applications";
43 longDescription = ''
44 Flask is a lightweight WSGI web application framework. It is
···21 done
22 '';
2300000024 checkInputs = [ pytestCheckHook ];
2526 meta = with lib; {
···21 done
22 '';
2324+ postPatch = ''
25+ # Verion is not stored in repo, gets added by a GitHub action after tag is created
26+ # https://github.com/pdfminer/pdfminer.six/pull/727
27+ substituteInPlace pdfminer/__init__.py --replace "__VERSION__" ${version}
28+ '';
29+30 checkInputs = [ pytestCheckHook ];
3132 meta = with lib; {
···40 nativeBuildInputs = [ makeWrapper ];
41 meta = {
42 homepage = "https://sourceware.org/systemtap/";
43- repositories.git = url;
44 description = "Provides a scripting language for instrumentation on a live kernel plus user-space";
45 license = lib.licenses.gpl2;
46 platforms = lib.platforms.linux;
···40 nativeBuildInputs = [ makeWrapper ];
41 meta = {
42 homepage = "https://sourceware.org/systemtap/";
043 description = "Provides a scripting language for instrumentation on a live kernel plus user-space";
44 license = lib.licenses.gpl2;
45 platforms = lib.platforms.linux;
···3435 meta = with lib; {
36 homepage = "https://springlobby.info/";
37- repositories.git = "git://github.com/springlobby/springlobby.git";
38 description = "Cross-platform lobby client for the Spring RTS project";
39 license = licenses.gpl2;
40 maintainers = with maintainers; [ qknight domenkozar ];
···3435 meta = with lib; {
36 homepage = "https://springlobby.info/";
037 description = "Cross-platform lobby client for the Spring RTS project";
38 license = licenses.gpl2;
39 maintainers = with maintainers; [ qknight domenkozar ];
-3
pkgs/games/steam/fhsenv.nix
···228 export TZ="$new_TZ"
229 fi
230 fi
231-232- # XDG_DATA_DIRS is used by pressure-vessel and vulkan loaders to find the corresponding icd
233- export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}/run/opengl-driver/share:/run/opengl-driver-32/share
234 '' + extraProfile;
235236 runScript = writeScript "steam-wrapper.sh" ''
···228 export TZ="$new_TZ"
229 fi
230 fi
000231 '' + extraProfile;
232233 runScript = writeScript "steam-wrapper.sh" ''
···7374 meta = with lib; {
75 homepage = "https://hostap.epitest.fi";
76- repositories.git = "git://w1.fi/hostap.git";
77 description = "A user space daemon for access point and authentication servers";
78 license = licenses.gpl2;
79 maintainers = with maintainers; [ ninjatrappeur hexa ];
···7374 meta = with lib; {
75 homepage = "https://hostap.epitest.fi";
076 description = "A user space daemon for access point and authentication servers";
77 license = licenses.gpl2;
78 maintainers = with maintainers; [ ninjatrappeur hexa ];
-1
pkgs/os-specific/linux/i7z/default.nix
···49 meta = with lib; {
50 description = "A better i7 (and now i3, i5) reporting tool for Linux";
51 homepage = "https://github.com/DimitryAndric/i7z";
52- repositories.git = "https://github.com/DimitryAndric/i7z.git";
53 license = licenses.gpl2;
54 maintainers = with maintainers; [ bluescreen303 ];
55 # broken on ARM
···49 meta = with lib; {
50 description = "A better i7 (and now i3, i5) reporting tool for Linux";
51 homepage = "https://github.com/DimitryAndric/i7z";
052 license = licenses.gpl2;
53 maintainers = with maintainers; [ bluescreen303 ];
54 # broken on ARM
+1
pkgs/os-specific/linux/kernel/common-config.nix
···482 DEFAULT_SECURITY_APPARMOR = yes;
483484 RANDOM_TRUST_CPU = whenAtLeast "4.19" yes; # allow RDRAND to seed the RNG
0485486 MODULE_SIG = no; # r13y, generates a random key during build and bakes it in
487 # Depends on MODULE_SIG and only really helps when you sign your modules
···482 DEFAULT_SECURITY_APPARMOR = yes;
483484 RANDOM_TRUST_CPU = whenAtLeast "4.19" yes; # allow RDRAND to seed the RNG
485+ RANDOM_TRUST_BOOTLOADER = whenAtLeast "5.4" yes; # allow the bootloader to seed the RNG
486487 MODULE_SIG = no; # r13y, generates a random key during build and bakes it in
488 # Depends on MODULE_SIG and only really helps when you sign your modules
+2-2
pkgs/os-specific/linux/kernel/linux-5.10.nix
···3with lib;
45buildLinux (args // rec {
6- version = "5.10.106";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1314 src = fetchurl {
15 url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
16- sha256 = "0yjrlghcxw3lhd6nc2m4zy4gk536w3a3w6mxdsml690fqz4531n6";
17 };
18} // (args.argsOverride or {}))
···3with lib;
45buildLinux (args // rec {
6+ version = "5.10.107";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1314 src = fetchurl {
15 url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
16+ sha256 = "1snzzhkzdjlj92gqig3sanxlhv0xc0xk2xwjdjr0yds6g43w6ry4";
17 };
18} // (args.argsOverride or {}))
+2-2
pkgs/os-specific/linux/kernel/linux-5.15.nix
···3with lib;
45buildLinux (args // rec {
6- version = "5.15.29";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1516 src = fetchurl {
17 url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
18- sha256 = "0vl7xm4xs59z071wfjna392yada3hg5h6h3dfjaswircc22fc1ar";
19 };
20} // (args.argsOverride or { }))
···3with lib;
45buildLinux (args // rec {
6+ version = "5.15.30";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1516 src = fetchurl {
17 url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
18+ sha256 = "0ckiz985x88x68psg6wazyk7zpv34k8rbzpzyzj0gaph13za4ki5";
19 };
20} // (args.argsOverride or { }))
+2-2
pkgs/os-specific/linux/kernel/linux-5.16.nix
···3with lib;
45buildLinux (args // rec {
6- version = "5.16.15";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1314 src = fetchurl {
15 url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
16- sha256 = "1mi41npkk1inqchm3yp14xmzc5lrp50d7vbpazwxwq5kw04c8c4g";
17 };
18} // (args.argsOverride or { }))
···3with lib;
45buildLinux (args // rec {
6+ version = "5.16.16";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1314 src = fetchurl {
15 url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
16+ sha256 = "13qk6cjnjwgnxj25mphyv08pjf1sqz7bxxrr3fpl8gz3aghdd9yc";
17 };
18} // (args.argsOverride or { }))
+2-2
pkgs/os-specific/linux/kernel/linux-5.4.nix
···3with lib;
45buildLinux (args // rec {
6- version = "5.4.185";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1314 src = fetchurl {
15 url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
16- sha256 = "11rp3x05bq9cs9gwy4x36ynkgl7nb5ss29zi6m7n5ywvczdfjpyi";
17 };
18} // (args.argsOverride or {}))
···3with lib;
45buildLinux (args // rec {
6+ version = "5.4.186";
78 # modDirVersion needs to be x.y.z, will automatically add .0 if needed
9 modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
···1314 src = fetchurl {
15 url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
16+ sha256 = "1f9rigm58miq5s98bx7pvylqi9hlzlfnq1nrj4cd8f4arcjcvxv1";
17 };
18} // (args.argsOverride or {}))
···1+{ lib, stdenv, buildGoModule, fetchFromGitHub, nixosTests
2+ # darwin
3+ , CoreFoundation, IOKit
4+}:
56buildGoModule rec {
7 pname = "node_exporter";
···1920 # FIXME: tests fail due to read-only nix store
21 doCheck = false;
22+23+ buildInputs = lib.optionals stdenv.isDarwin [ CoreFoundation IOKit ];
24+ # upstream currently doesn't work with the version of the macOS SDK
25+ # we're building against in nix-darwin without a patch.
26+ # this patch has been submitted upstream at https://github.com/prometheus/node_exporter/pull/2327
27+ # and only needs to be carried until it lands in a new release.
28+ patches = lib.optionals stdenv.isDarwin [ ./node-exporter/node-exporter-darwin.patch ];
2930 excludedPackages = [ "docs/node-mixin" ];
31
···56rustPlatform.buildRustPackage rec {
7 pname = "aardvark-dns";
8+ version = "1.0.2";
910 src = fetchFromGitHub {
11 owner = "containers";
12 repo = pname;
13 rev = "v${version}";
14+ sha256 = "sha256-d4YSCVZkNung4frgAeP46E9Ptpnu9y0HwmPRADo4t0U=";
15 };
1617+ cargoHash = "sha256-fu7ZopS55IzzeO7uzLx1wVHQ8A1Ff+9f7FagoZPerxk=";
00000000001819 meta = with lib; {
20 description = "Authoritative dns server for A/AAAA container records";
-1
pkgs/tools/networking/chrony/default.nix
···28 meta = with lib; {
29 description = "Sets your computer's clock from time servers on the Net";
30 homepage = "https://chrony.tuxfamily.org/";
31- repositories.git = "git://git.tuxfamily.org/gitroot/chrony/chrony.git";
32 license = licenses.gpl2;
33 platforms = with platforms; linux ++ freebsd ++ openbsd;
34 maintainers = with maintainers; [ fpletz thoughtpolice ];
···28 meta = with lib; {
29 description = "Sets your computer's clock from time servers on the Net";
30 homepage = "https://chrony.tuxfamily.org/";
031 license = licenses.gpl2;
32 platforms = with platforms; linux ++ freebsd ++ openbsd;
33 maintainers = with maintainers; [ fpletz thoughtpolice ];
···5 version = "0.0.11";
67 src = fetchgit {
8- url = meta.repositories.git;
9 rev = "refs/tags/${pname}proxy-${version}";
10 sha256 = "sha256-VjJ/Pc1YjNB2iLnN/5CxuaxolcaR1IMWgoESMzOXU/g=";
11 };
···17 meta = with lib; {
18 description = "A pluggable transport proxy";
19 homepage = "https://www.torproject.org/projects/obfsproxy";
20- repositories.git = "https://git.torproject.org/pluggable-transports/obfs4.git";
21 maintainers = with maintainers; [ thoughtpolice ];
22 };
23}
···5 version = "0.0.11";
67 src = fetchgit {
8+ url = "https://git.torproject.org/pluggable-transports/obfs4.git";
9 rev = "refs/tags/${pname}proxy-${version}";
10 sha256 = "sha256-VjJ/Pc1YjNB2iLnN/5CxuaxolcaR1IMWgoESMzOXU/g=";
11 };
···17 meta = with lib; {
18 description = "A pluggable transport proxy";
19 homepage = "https://www.torproject.org/projects/obfsproxy";
020 maintainers = with maintainers; [ thoughtpolice ];
21 };
22}
-1
pkgs/tools/networking/socat/default.nix
···38 meta = with lib; {
39 description = "Utility for bidirectional data transfer between two independent data channels";
40 homepage = "http://www.dest-unreach.org/socat/";
41- repositories.git = "git://repo.or.cz/socat.git";
42 platforms = platforms.unix;
43 license = with licenses; [ gpl2Only ];
44 maintainers = with maintainers; [ eelco ];
···38 meta = with lib; {
39 description = "Utility for bidirectional data transfer between two independent data channels";
40 homepage = "http://www.dest-unreach.org/socat/";
041 platforms = platforms.unix;
42 license = with licenses; [ gpl2Only ];
43 maintainers = with maintainers; [ eelco ];
···23 meta = with lib; {
24 description = "Records and replays device descriptions and events to emulate input devices through the kernel's input system";
25 homepage = "https://www.freedesktop.org/wiki/Evemu/";
26- repositories.git = "git://git.freedesktop.org/git/evemu";
27 license = with licenses; [ lgpl3Only gpl3Only ];
28 maintainers = [ maintainers.amorsillo ];
29 platforms = platforms.linux;
···23 meta = with lib; {
24 description = "Records and replays device descriptions and events to emulate input devices through the kernel's input system";
25 homepage = "https://www.freedesktop.org/wiki/Evemu/";
026 license = with licenses; [ lgpl3Only gpl3Only ];
27 maintainers = [ maintainers.amorsillo ];
28 platforms = platforms.linux;
-1
pkgs/tools/system/gohai/default.nix
···21 license = licenses.mit;
22 maintainers = [ maintainers.tazjin ];
23 platforms = platforms.unix;
24- repositories.git = "git://github.com/DataDog/gohai.git";
2526 longDescription = ''
27 Gohai is a tool which collects an inventory of system
···21 license = licenses.mit;
22 maintainers = [ maintainers.tazjin ];
23 platforms = platforms.unix;
02425 longDescription = ''
26 Gohai is a tool which collects an inventory of system
···1-{ lib, stdenv, fetchurl }:
2-3-stdenv.mkDerivation rec {
4- pname = "gnused";
5- version = "4.2.2";
6-7- src = fetchurl {
8- url = "mirror://gnu/sed/sed-${version}.tar.bz2";
9- sha256 = "f048d1838da284c8bc9753e4506b85a1e0cc1ea8999d36f6995bcb9460cddbd7";
10- };
11-12- configureFlags = lib.optional stdenv.hostPlatform.isMinGW "ac_cv_func__set_invalid_parameter_handler=no";
13-14- outputs = [ "out" "info" ];
15-16- meta = {
17- homepage = "https://www.gnu.org/software/sed/";
18- description = "GNU sed, a batch stream editor";
19-20- longDescription = ''
21- Sed (stream editor) isn't really a true text editor or text
22- processor. Instead, it is used to filter text, i.e., it takes
23- text input and performs some operation (or set of operations) on
24- it and outputs the modified text. Sed is typically used for
25- extracting part of a file using pattern matching or substituting
26- multiple occurrences of a string within a file.
27- '';
28-29- license = lib.licenses.gpl3Plus;
30-31- platforms = lib.platforms.all;
32- maintainers = [ ];
33- mainProgram = "sed";
34- };
35-}
···00000000000000000000000000000000000
-1
pkgs/tools/typesetting/odpdown/default.nix
···2021 meta = with lib; {
22 homepage = "https://github.com/thorstenb/odpdown";
23- repositories.git = "https://github.com/thorstenb/odpdown.git";
24 description = "Create nice-looking slides from your favourite text editor";
25 longDescription = ''
26 Have a tool like pandoc, latex beamer etc, that you can write (or
···2021 meta = with lib; {
22 homepage = "https://github.com/thorstenb/odpdown";
023 description = "Create nice-looking slides from your favourite text editor";
24 longDescription = ''
25 Have a tool like pandoc, latex beamer etc, that you can write (or
+2-1
pkgs/top-level/aliases.nix
···1263 varnish62 = throw "varnish62 was removed from nixpkgs, because it is unmaintained upstream. Please switch to a different release"; # Added 2021-07-26
1264 varnish63 = throw "varnish63 was removed from nixpkgs, because it is unmaintained upstream. Please switch to a different release"; # Added 2021-07-26
1265 varnish65 = throw "varnish65 was removed from nixpkgs, because it is unmaintained upstream. Please switch to a different release"; # Added 2021-09-15
01266 vdirsyncerStable = vdirsyncer; # Added 2020-11-08, see https://github.com/NixOS/nixpkgs/issues/103026#issuecomment-723428168
1267 venus = throw "venus has been removed from nixpkgs, as it's unmaintained"; # Added 2021-02-05
1268 vimbWrapper = throw "'vimbWrapper' has been renamed to/replaced by 'vimb'"; # Converted to throw 2022-02-22
···1448 ksshaskpass ksystemlog kteatime ktimer ktorrent ktouch kturtle kwallet-pam
1449 kwalletmanager kwave kwayland-integration kwin kwrited marble milou minuet
1450 okular oxygen oxygen-icons5 picmi plasma-browser-integration plasma-desktop
1451- plasma-integration plasma-nano plasma-nm plasma-pa plasma-phone-components
1452 plasma-systemmonitor plasma-thunderbolt plasma-vault plasma-workspace
1453 plasma-workspace-wallpapers polkit-kde-agent powerdevil qqc2-breeze-style
1454 sddm-kcm skanlite spectacle systemsettings xdg-desktop-portal-kde yakuake
···1263 varnish62 = throw "varnish62 was removed from nixpkgs, because it is unmaintained upstream. Please switch to a different release"; # Added 2021-07-26
1264 varnish63 = throw "varnish63 was removed from nixpkgs, because it is unmaintained upstream. Please switch to a different release"; # Added 2021-07-26
1265 varnish65 = throw "varnish65 was removed from nixpkgs, because it is unmaintained upstream. Please switch to a different release"; # Added 2021-09-15
1266+ varnish70 = throw "varnish70 was removed from nixpkgs, because it was superseded upstream. Please switch to a different release"; # Added 2022-03-17
1267 vdirsyncerStable = vdirsyncer; # Added 2020-11-08, see https://github.com/NixOS/nixpkgs/issues/103026#issuecomment-723428168
1268 venus = throw "venus has been removed from nixpkgs, as it's unmaintained"; # Added 2021-02-05
1269 vimbWrapper = throw "'vimbWrapper' has been renamed to/replaced by 'vimb'"; # Converted to throw 2022-02-22
···1449 ksshaskpass ksystemlog kteatime ktimer ktorrent ktouch kturtle kwallet-pam
1450 kwalletmanager kwave kwayland-integration kwin kwrited marble milou minuet
1451 okular oxygen oxygen-icons5 picmi plasma-browser-integration plasma-desktop
1452+ plasma-integration plasma-nano plasma-nm plasma-pa plasma-mobile
1453 plasma-systemmonitor plasma-thunderbolt plasma-vault plasma-workspace
1454 plasma-workspace-wallpapers polkit-kde-agent powerdevil qqc2-breeze-style
1455 sddm-kcm skanlite spectacle systemsettings xdg-desktop-portal-kde yakuake