mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-09-17 10:37:45 +03:00
Merge master into staging-next
This commit is contained in:
commit
ef44d46775
@ -29,8 +29,8 @@
|
||||
* [Discourse Forum](https://discourse.nixos.org/)
|
||||
* [Matrix Chat](https://matrix.to/#/#community:nixos.org)
|
||||
* [NixOS Weekly](https://weekly.nixos.org/)
|
||||
* [Community-maintained wiki](https://nixos.wiki/)
|
||||
* [Community-maintained list of ways to get in touch](https://nixos.wiki/wiki/Get_In_Touch#Chat) (Discord, Telegram, IRC, etc.)
|
||||
* [Official wiki](https://wiki.nixos.org/)
|
||||
* [Community-maintained list of ways to get in touch](https://wiki.nixos.org/wiki/Get_In_Touch#Chat) (Discord, Telegram, IRC, etc.)
|
||||
|
||||
# Other Project Repositories
|
||||
|
||||
|
@ -1784,6 +1784,13 @@
|
||||
fingerprint = "C919 E69E A7C0 E147 9E0F C26E 1EDA D0C6 70BD 062D";
|
||||
}];
|
||||
};
|
||||
assistant = {
|
||||
email = "assistant.moetron@gmail.com";
|
||||
github = "Assistant";
|
||||
githubId = 2748721;
|
||||
matrix = "@assistant:pygmalion.chat";
|
||||
name = "Assistant Moetron";
|
||||
};
|
||||
astavie = {
|
||||
email = "astavie@pm.me";
|
||||
github = "astavie";
|
||||
|
@ -1,83 +0,0 @@
|
||||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -I nixpkgs=. -i bash -p delta jq perl
|
||||
|
||||
set -euo pipefail
|
||||
shopt -s inherit_errexit
|
||||
|
||||
cat <<'EOF'
|
||||
This script attempts to automatically convert option descriptions from
|
||||
DocBook syntax to markdown. Naturally this process is incomplete and
|
||||
imperfect, so any changes generated by this script MUST be reviewed.
|
||||
|
||||
Possible problems include: incorrectly replaced tags, badly formatted
|
||||
markdown, DocBook tags this script doesn't recognize remaining in the
|
||||
output and crashing the docs build, incorrect escaping of markdown
|
||||
metacharacters, incorrect unescaping of XML entities—and the list goes on.
|
||||
|
||||
Always review the generated changes!
|
||||
|
||||
Some known limitations:
|
||||
- Does not transform literalDocBook items
|
||||
- Replacements can occur in non-option code, such as string literals
|
||||
|
||||
|
||||
EOF
|
||||
|
||||
|
||||
|
||||
build-options-json() {
|
||||
nix-build --no-out-link --expr '
|
||||
let
|
||||
sys = import ./nixos/default.nix {
|
||||
configuration = {};
|
||||
};
|
||||
in
|
||||
[
|
||||
sys.config.system.build.manual.optionsJSON
|
||||
]
|
||||
'
|
||||
}
|
||||
|
||||
|
||||
|
||||
git diff --quiet || {
|
||||
echo "Worktree is dirty. Please stash or commit first."
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "Building options.json ..."
|
||||
old_options=$(build-options-json)
|
||||
|
||||
echo "Applying replacements ..."
|
||||
perl -pi -e '
|
||||
BEGIN {
|
||||
undef $/;
|
||||
}
|
||||
|
||||
s,<literal>([^`]*?)</literal>,`$1`,smg;
|
||||
s,<replaceable>([^»]*?)</replaceable>,«$1»,smg;
|
||||
s,<filename>([^`]*?)</filename>,{file}`$1`,smg;
|
||||
s,<option>([^`]*?)</option>,{option}`$1`,smg;
|
||||
s,<code>([^`]*?)</code>,`$1`,smg;
|
||||
s,<command>([^`]*?)</command>,{command}`$1`,smg;
|
||||
s,<link xlink:href="(.+?)" ?/>,<$1>,smg;
|
||||
s,<link xlink:href="(.+?)">(.*?)</link>,[$2]($1),smg;
|
||||
s,<package>([^`]*?)</package>,`$1`,smg;
|
||||
s,<emphasis>([^*]*?)</emphasis>,*$1*,smg;
|
||||
s,<citerefentry>\s*
|
||||
<refentrytitle>\s*(.*?)\s*</refentrytitle>\s*
|
||||
<manvolnum>\s*(.*?)\s*</manvolnum>\s*
|
||||
</citerefentry>,{manpage}`$1($2)`,smgx;
|
||||
s,^( +description =),\1 lib.mdDoc,smg;
|
||||
' "$@"
|
||||
|
||||
echo "Building options.json again ..."
|
||||
new_options=$(build-options-json)
|
||||
|
||||
|
||||
! cmp -s {$old_options,$new_options}/share/doc/nixos/options.json && {
|
||||
diff -U10 \
|
||||
<(jq . <$old_options/share/doc/nixos/options.json) \
|
||||
<(jq . <$new_options/share/doc/nixos/options.json) \
|
||||
| delta
|
||||
}
|
@ -7,7 +7,7 @@ However, it is possible and not-uncommon to create [impermanent systems], whose
|
||||
`rootfs` is either a `tmpfs` or reset during boot. While NixOS itself supports
|
||||
this kind of configuration, special care needs to be taken.
|
||||
|
||||
[impermanent systems]: https://nixos.wiki/wiki/Impermanence
|
||||
[impermanent systems]: https://wiki.nixos.org/wiki/Impermanence
|
||||
|
||||
|
||||
```{=include=} sections
|
||||
|
@ -141,6 +141,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||
|
||||
- [Scrutiny](https://github.com/AnalogJ/scrutiny), a S.M.A.R.T monitoring tool for hard disks with a web frontend.
|
||||
|
||||
- [davis](https://github.com/tchapi/davis), a simple CardDav and CalDav server inspired by Baïkal. Available as [services.davis]($opt-services-davis.enable).
|
||||
|
||||
- [systemd-lock-handler](https://git.sr.ht/~whynothugo/systemd-lock-handler/), a bridge between logind D-Bus events and systemd targets. Available as [services.systemd-lock-handler.enable](#opt-services.systemd-lock-handler.enable).
|
||||
|
||||
- [wastebin](https://github.com/matze/wastebin), a pastebin server written in rust. Available as [services.wastebin](#opt-services.wastebin.enable).
|
||||
|
@ -1,8 +1,47 @@
|
||||
{ config, lib, pkgs }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
all
|
||||
attrByPath
|
||||
attrNames
|
||||
concatLists
|
||||
concatMap
|
||||
concatMapStrings
|
||||
concatStrings
|
||||
concatStringsSep
|
||||
const
|
||||
elem
|
||||
filter
|
||||
filterAttrs
|
||||
flip
|
||||
head
|
||||
isInt
|
||||
isList
|
||||
length
|
||||
makeBinPath
|
||||
makeSearchPathOutput
|
||||
mapAttrs
|
||||
mapAttrsToList
|
||||
mkAfter
|
||||
mkIf
|
||||
optional
|
||||
optionalAttrs
|
||||
optionalString
|
||||
range
|
||||
replaceStrings
|
||||
reverseList
|
||||
splitString
|
||||
stringLength
|
||||
stringToCharacters
|
||||
tail
|
||||
toIntBase10
|
||||
trace
|
||||
types
|
||||
;
|
||||
|
||||
inherit (lib.strings) toJSON;
|
||||
|
||||
cfg = config.systemd;
|
||||
lndir = "${pkgs.buildPackages.xorg.lndir}/bin/lndir";
|
||||
systemd = cfg.package;
|
||||
@ -10,7 +49,7 @@ in rec {
|
||||
|
||||
shellEscape = s: (replaceStrings [ "\\" ] [ "\\\\" ] s);
|
||||
|
||||
mkPathSafeName = lib.replaceStrings ["@" ":" "\\" "[" "]"] ["-" "-" "-" "" ""];
|
||||
mkPathSafeName = replaceStrings ["@" ":" "\\" "[" "]"] ["-" "-" "-" "" ""];
|
||||
|
||||
# a type for options that take a unit name
|
||||
unitNameType = types.strMatching "[a-zA-Z0-9@%:_.\\-]+[.](service|socket|device|mount|automount|swap|target|path|timer|scope|slice)";
|
||||
@ -133,7 +172,7 @@ in rec {
|
||||
)) attrs;
|
||||
errors = concatMap (c: c group defs) checks;
|
||||
in if errors == [] then true
|
||||
else builtins.trace (concatStringsSep "\n" errors) false;
|
||||
else trace (concatStringsSep "\n" errors) false;
|
||||
|
||||
toOption = x:
|
||||
if x == true then "true"
|
||||
@ -220,7 +259,7 @@ in rec {
|
||||
# upstream unit.
|
||||
for i in ${toString (mapAttrsToList
|
||||
(n: v: v.unit)
|
||||
(lib.filterAttrs (n: v: (attrByPath [ "overrideStrategy" ] "asDropinIfExists" v) == "asDropinIfExists") units))}; do
|
||||
(filterAttrs (n: v: (attrByPath [ "overrideStrategy" ] "asDropinIfExists" v) == "asDropinIfExists") units))}; do
|
||||
fn=$(basename $i/*)
|
||||
if [ -e $out/$fn ]; then
|
||||
if [ "$(readlink -f $i/$fn)" = /dev/null ]; then
|
||||
@ -243,7 +282,7 @@ in rec {
|
||||
# treated as drop-in file.
|
||||
for i in ${toString (mapAttrsToList
|
||||
(n: v: v.unit)
|
||||
(lib.filterAttrs (n: v: v ? overrideStrategy && v.overrideStrategy == "asDropin") units))}; do
|
||||
(filterAttrs (n: v: v ? overrideStrategy && v.overrideStrategy == "asDropin") units))}; do
|
||||
fn=$(basename $i/*)
|
||||
mkdir -p $out/$fn.d
|
||||
ln -s $i/$fn $out/$fn.d/overrides.conf
|
||||
@ -384,7 +423,7 @@ in rec {
|
||||
commonUnitText = def: lines: ''
|
||||
[Unit]
|
||||
${attrsToSection def.unitConfig}
|
||||
'' + lines + lib.optionalString (def.wantedBy != [ ]) ''
|
||||
'' + lines + optionalString (def.wantedBy != [ ]) ''
|
||||
|
||||
[Install]
|
||||
WantedBy=${concatStringsSep " " def.wantedBy}
|
||||
@ -406,7 +445,7 @@ in rec {
|
||||
'' + (let env = cfg.globalEnvironment // def.environment;
|
||||
in concatMapStrings (n:
|
||||
let s = optionalString (env.${n} != null)
|
||||
"Environment=${builtins.toJSON "${n}=${env.${n}}"}\n";
|
||||
"Environment=${toJSON "${n}=${env.${n}}"}\n";
|
||||
# systemd max line length is now 1MiB
|
||||
# https://github.com/systemd/systemd/commit/e6dde451a51dc5aaa7f4d98d39b8fe735f73d2af
|
||||
in if stringLength s >= 1048576 then throw "The value of the environment variable ‘${n}’ in systemd service ‘${name}.service’ is too long." else s) (attrNames env))
|
||||
@ -475,13 +514,13 @@ in rec {
|
||||
# in that attrset are determined by the supplied format.
|
||||
definitions = directoryName: format: definitionAttrs:
|
||||
let
|
||||
listOfDefinitions = lib.mapAttrsToList
|
||||
listOfDefinitions = mapAttrsToList
|
||||
(name: format.generate "${name}.conf")
|
||||
definitionAttrs;
|
||||
in
|
||||
pkgs.runCommand directoryName { } ''
|
||||
mkdir -p $out
|
||||
${(lib.concatStringsSep "\n"
|
||||
${(concatStringsSep "\n"
|
||||
(map (pkg: "cp ${pkg} $out/${pkg.name}") listOfDefinitions)
|
||||
)}
|
||||
'';
|
||||
|
@ -1,8 +1,13 @@
|
||||
{ lib, systemdUtils }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
concatMapStrings
|
||||
concatStringsSep
|
||||
flip
|
||||
optionalString
|
||||
;
|
||||
|
||||
attrsToSection = systemdUtils.lib.attrsToSection;
|
||||
commonMatchText = def:
|
||||
optionalString (def.matchConfig != { }) ''
|
||||
|
@ -1,47 +1,91 @@
|
||||
{ lib, systemdUtils, pkgs }:
|
||||
|
||||
with systemdUtils.lib;
|
||||
with systemdUtils.unitOptions;
|
||||
with lib;
|
||||
let
|
||||
inherit (systemdUtils.lib)
|
||||
automountConfig
|
||||
makeUnit
|
||||
mountConfig
|
||||
stage1ServiceConfig
|
||||
stage2ServiceConfig
|
||||
unitConfig
|
||||
;
|
||||
|
||||
inherit (systemdUtils.unitOptions)
|
||||
concreteUnitOptions
|
||||
stage1AutomountOptions
|
||||
stage1CommonUnitOptions
|
||||
stage1MountOptions
|
||||
stage1PathOptions
|
||||
stage1ServiceOptions
|
||||
stage1SliceOptions
|
||||
stage1SocketOptions
|
||||
stage1TimerOptions
|
||||
stage2AutomountOptions
|
||||
stage2CommonUnitOptions
|
||||
stage2MountOptions
|
||||
stage2PathOptions
|
||||
stage2ServiceOptions
|
||||
stage2SliceOptions
|
||||
stage2SocketOptions
|
||||
stage2TimerOptions
|
||||
;
|
||||
|
||||
inherit (lib)
|
||||
mdDoc
|
||||
mkDefault
|
||||
mkDerivedConfig
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkOption
|
||||
;
|
||||
|
||||
inherit (lib.types)
|
||||
attrsOf
|
||||
lines
|
||||
listOf
|
||||
nullOr
|
||||
path
|
||||
submodule
|
||||
;
|
||||
in
|
||||
|
||||
rec {
|
||||
units = with types;
|
||||
attrsOf (submodule ({ name, config, ... }: {
|
||||
options = concreteUnitOptions;
|
||||
config = { unit = mkDefault (systemdUtils.lib.makeUnit name config); };
|
||||
}));
|
||||
units = attrsOf (submodule ({ name, config, ... }: {
|
||||
options = concreteUnitOptions;
|
||||
config = { unit = mkDefault (makeUnit name config); };
|
||||
}));
|
||||
|
||||
services = with types; attrsOf (submodule [ stage2ServiceOptions unitConfig stage2ServiceConfig ]);
|
||||
initrdServices = with types; attrsOf (submodule [ stage1ServiceOptions unitConfig stage1ServiceConfig ]);
|
||||
services = attrsOf (submodule [ stage2ServiceOptions unitConfig stage2ServiceConfig ]);
|
||||
initrdServices = attrsOf (submodule [ stage1ServiceOptions unitConfig stage1ServiceConfig ]);
|
||||
|
||||
targets = with types; attrsOf (submodule [ stage2CommonUnitOptions unitConfig ]);
|
||||
initrdTargets = with types; attrsOf (submodule [ stage1CommonUnitOptions unitConfig ]);
|
||||
targets = attrsOf (submodule [ stage2CommonUnitOptions unitConfig ]);
|
||||
initrdTargets = attrsOf (submodule [ stage1CommonUnitOptions unitConfig ]);
|
||||
|
||||
sockets = with types; attrsOf (submodule [ stage2SocketOptions unitConfig ]);
|
||||
initrdSockets = with types; attrsOf (submodule [ stage1SocketOptions unitConfig ]);
|
||||
sockets = attrsOf (submodule [ stage2SocketOptions unitConfig ]);
|
||||
initrdSockets = attrsOf (submodule [ stage1SocketOptions unitConfig ]);
|
||||
|
||||
timers = with types; attrsOf (submodule [ stage2TimerOptions unitConfig ]);
|
||||
initrdTimers = with types; attrsOf (submodule [ stage1TimerOptions unitConfig ]);
|
||||
timers = attrsOf (submodule [ stage2TimerOptions unitConfig ]);
|
||||
initrdTimers = attrsOf (submodule [ stage1TimerOptions unitConfig ]);
|
||||
|
||||
paths = with types; attrsOf (submodule [ stage2PathOptions unitConfig ]);
|
||||
initrdPaths = with types; attrsOf (submodule [ stage1PathOptions unitConfig ]);
|
||||
paths = attrsOf (submodule [ stage2PathOptions unitConfig ]);
|
||||
initrdPaths = attrsOf (submodule [ stage1PathOptions unitConfig ]);
|
||||
|
||||
slices = with types; attrsOf (submodule [ stage2SliceOptions unitConfig ]);
|
||||
initrdSlices = with types; attrsOf (submodule [ stage1SliceOptions unitConfig ]);
|
||||
slices = attrsOf (submodule [ stage2SliceOptions unitConfig ]);
|
||||
initrdSlices = attrsOf (submodule [ stage1SliceOptions unitConfig ]);
|
||||
|
||||
mounts = with types; listOf (submodule [ stage2MountOptions unitConfig mountConfig ]);
|
||||
initrdMounts = with types; listOf (submodule [ stage1MountOptions unitConfig mountConfig ]);
|
||||
mounts = listOf (submodule [ stage2MountOptions unitConfig mountConfig ]);
|
||||
initrdMounts = listOf (submodule [ stage1MountOptions unitConfig mountConfig ]);
|
||||
|
||||
automounts = with types; listOf (submodule [ stage2AutomountOptions unitConfig automountConfig ]);
|
||||
initrdAutomounts = with types; attrsOf (submodule [ stage1AutomountOptions unitConfig automountConfig ]);
|
||||
automounts = listOf (submodule [ stage2AutomountOptions unitConfig automountConfig ]);
|
||||
initrdAutomounts = attrsOf (submodule [ stage1AutomountOptions unitConfig automountConfig ]);
|
||||
|
||||
initrdContents = types.attrsOf (types.submodule ({ config, options, name, ... }: {
|
||||
initrdContents = attrsOf (submodule ({ config, options, name, ... }: {
|
||||
options = {
|
||||
enable = mkEnableOption (lib.mdDoc "copying of this file and symlinking it") // { default = true; };
|
||||
enable = mkEnableOption (mdDoc "copying of this file and symlinking it") // { default = true; };
|
||||
|
||||
target = mkOption {
|
||||
type = types.path;
|
||||
description = lib.mdDoc ''
|
||||
type = path;
|
||||
description = mdDoc ''
|
||||
Path of the symlink.
|
||||
'';
|
||||
default = name;
|
||||
@ -49,13 +93,13 @@ rec {
|
||||
|
||||
text = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.lines;
|
||||
description = lib.mdDoc "Text of the file.";
|
||||
type = nullOr lines;
|
||||
description = mdDoc "Text of the file.";
|
||||
};
|
||||
|
||||
source = mkOption {
|
||||
type = types.path;
|
||||
description = lib.mdDoc "Path of the source file.";
|
||||
type = path;
|
||||
description = mdDoc "Path of the source file.";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1,9 +1,33 @@
|
||||
{ lib, systemdUtils }:
|
||||
|
||||
with systemdUtils.lib;
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (systemdUtils.lib)
|
||||
assertValueOneOf
|
||||
automountConfig
|
||||
checkUnitConfig
|
||||
makeJobScript
|
||||
mountConfig
|
||||
serviceConfig
|
||||
unitConfig
|
||||
unitNameType
|
||||
;
|
||||
|
||||
inherit (lib)
|
||||
any
|
||||
concatMap
|
||||
filterOverrides
|
||||
isList
|
||||
mdDoc
|
||||
mergeEqualOption
|
||||
mkIf
|
||||
mkMerge
|
||||
mkOption
|
||||
mkOptionType
|
||||
singleton
|
||||
toList
|
||||
types
|
||||
;
|
||||
|
||||
checkService = checkUnitConfig "Service" [
|
||||
(assertValueOneOf "Type" [
|
||||
"exec" "simple" "forking" "oneshot" "dbus" "notify" "notify-reload" "idle"
|
||||
@ -31,7 +55,7 @@ in rec {
|
||||
enable = mkOption {
|
||||
default = true;
|
||||
type = types.bool;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If set to false, this unit will be a symlink to
|
||||
/dev/null. This is primarily useful to prevent specific
|
||||
template instances
|
||||
@ -45,7 +69,7 @@ in rec {
|
||||
overrideStrategy = mkOption {
|
||||
default = "asDropinIfExists";
|
||||
type = types.enum [ "asDropinIfExists" "asDropin" ];
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Defines how unit configuration is provided for systemd:
|
||||
|
||||
`asDropinIfExists` creates a unit file when no unit file is provided by the package
|
||||
@ -61,7 +85,7 @@ in rec {
|
||||
requiredBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Units that require (i.e. depend on and need to go down with) this unit.
|
||||
As discussed in the `wantedBy` option description this also creates
|
||||
`.requires` symlinks automatically.
|
||||
@ -71,7 +95,7 @@ in rec {
|
||||
upheldBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Keep this unit running as long as the listed units are running. This is a continuously
|
||||
enforced version of wantedBy.
|
||||
'';
|
||||
@ -80,7 +104,7 @@ in rec {
|
||||
wantedBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Units that want (i.e. depend on) this unit. The default method for
|
||||
starting a unit by default at boot time is to set this option to
|
||||
`["multi-user.target"]` for system services. Likewise for user units
|
||||
@ -98,7 +122,7 @@ in rec {
|
||||
aliases = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc "Aliases of that unit.";
|
||||
description = mdDoc "Aliases of that unit.";
|
||||
};
|
||||
|
||||
};
|
||||
@ -108,12 +132,12 @@ in rec {
|
||||
text = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = lib.mdDoc "Text of this systemd unit.";
|
||||
description = mdDoc "Text of this systemd unit.";
|
||||
};
|
||||
|
||||
unit = mkOption {
|
||||
internal = true;
|
||||
description = lib.mdDoc "The generated unit.";
|
||||
description = mdDoc "The generated unit.";
|
||||
};
|
||||
|
||||
};
|
||||
@ -124,19 +148,19 @@ in rec {
|
||||
description = mkOption {
|
||||
default = "";
|
||||
type = types.singleLineStr;
|
||||
description = lib.mdDoc "Description of this unit used in systemd messages and progress indicators.";
|
||||
description = mdDoc "Description of this unit used in systemd messages and progress indicators.";
|
||||
};
|
||||
|
||||
documentation = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.str;
|
||||
description = lib.mdDoc "A list of URIs referencing documentation for this unit or its configuration.";
|
||||
description = mdDoc "A list of URIs referencing documentation for this unit or its configuration.";
|
||||
};
|
||||
|
||||
requires = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Start the specified units when this unit is started, and stop
|
||||
this unit when the specified units are stopped or fail.
|
||||
'';
|
||||
@ -145,7 +169,7 @@ in rec {
|
||||
wants = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Start the specified units when this unit is started.
|
||||
'';
|
||||
};
|
||||
@ -153,7 +177,7 @@ in rec {
|
||||
upholds = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Keeps the specified running while this unit is running. A continuous version of `wants`.
|
||||
'';
|
||||
};
|
||||
@ -161,7 +185,7 @@ in rec {
|
||||
after = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are started at the same time as
|
||||
this unit, delay this unit until they have started.
|
||||
'';
|
||||
@ -170,7 +194,7 @@ in rec {
|
||||
before = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are started at the same time as
|
||||
this unit, delay them until this unit has started.
|
||||
'';
|
||||
@ -179,7 +203,7 @@ in rec {
|
||||
bindsTo = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Like ‘requires’, but in addition, if the specified units
|
||||
unexpectedly disappear, this unit will be stopped as well.
|
||||
'';
|
||||
@ -188,7 +212,7 @@ in rec {
|
||||
partOf = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are stopped or restarted, then this
|
||||
unit is stopped or restarted as well.
|
||||
'';
|
||||
@ -197,7 +221,7 @@ in rec {
|
||||
conflicts = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are started, then this unit is stopped
|
||||
and vice versa.
|
||||
'';
|
||||
@ -206,7 +230,7 @@ in rec {
|
||||
requisite = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Similar to requires. However if the units listed are not started,
|
||||
they will not be started and the transaction will fail.
|
||||
'';
|
||||
@ -216,7 +240,7 @@ in rec {
|
||||
default = {};
|
||||
example = { RequiresMountsFor = "/data"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Unit]` section of the unit. See
|
||||
{manpage}`systemd.unit(5)` for details.
|
||||
@ -226,7 +250,7 @@ in rec {
|
||||
onFailure = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
A list of one or more units that are activated when
|
||||
this unit enters the "failed" state.
|
||||
'';
|
||||
@ -235,7 +259,7 @@ in rec {
|
||||
onSuccess = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
A list of one or more units that are activated when
|
||||
this unit enters the "inactive" state.
|
||||
'';
|
||||
@ -243,7 +267,7 @@ in rec {
|
||||
|
||||
startLimitBurst = mkOption {
|
||||
type = types.int;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Configure unit start rate limiting. Units which are started
|
||||
more than startLimitBurst times within an interval time
|
||||
interval are not permitted to start any more.
|
||||
@ -252,7 +276,7 @@ in rec {
|
||||
|
||||
startLimitIntervalSec = mkOption {
|
||||
type = types.int;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Configure unit start rate limiting. Units which are started
|
||||
more than startLimitBurst times within an interval time
|
||||
interval are not permitted to start any more.
|
||||
@ -271,7 +295,7 @@ in rec {
|
||||
restartTriggers = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.unspecified;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
An arbitrary list of items such as derivations. If any item
|
||||
in the list changes between reconfigurations, the service will
|
||||
be restarted.
|
||||
@ -281,7 +305,7 @@ in rec {
|
||||
reloadTriggers = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
An arbitrary list of items such as derivations. If any item
|
||||
in the list changes between reconfigurations, the service will
|
||||
be reloaded. If anything but a reload trigger changes in the
|
||||
@ -299,13 +323,13 @@ in rec {
|
||||
default = {};
|
||||
type = with types; attrsOf (nullOr (oneOf [ str path package ]));
|
||||
example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
|
||||
description = lib.mdDoc "Environment variables passed to the service's processes.";
|
||||
description = mdDoc "Environment variables passed to the service's processes.";
|
||||
};
|
||||
|
||||
path = mkOption {
|
||||
default = [];
|
||||
type = with types; listOf (oneOf [ package str ]);
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Packages added to the service's {env}`PATH`
|
||||
environment variable. Both the {file}`bin`
|
||||
and {file}`sbin` subdirectories of each
|
||||
@ -319,7 +343,7 @@ in rec {
|
||||
{ RestartSec = 5;
|
||||
};
|
||||
type = types.addCheck (types.attrsOf unitOption) checkService;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Service]` section of the unit. See
|
||||
{manpage}`systemd.service(5)` for details.
|
||||
@ -329,14 +353,14 @@ in rec {
|
||||
script = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc "Shell commands executed as the service's main process.";
|
||||
description = mdDoc "Shell commands executed as the service's main process.";
|
||||
};
|
||||
|
||||
scriptArgs = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
example = "%i";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Arguments passed to the main process script.
|
||||
Can contain specifiers (`%` placeholders expanded by systemd, see {manpage}`systemd.unit(5)`).
|
||||
'';
|
||||
@ -345,7 +369,7 @@ in rec {
|
||||
preStart = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed before the service's main process
|
||||
is started.
|
||||
'';
|
||||
@ -354,7 +378,7 @@ in rec {
|
||||
postStart = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed after the service's main process
|
||||
is started.
|
||||
'';
|
||||
@ -363,7 +387,7 @@ in rec {
|
||||
reload = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed when the service's main process
|
||||
is reloaded.
|
||||
'';
|
||||
@ -372,7 +396,7 @@ in rec {
|
||||
preStop = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed to stop the service.
|
||||
'';
|
||||
};
|
||||
@ -380,7 +404,7 @@ in rec {
|
||||
postStop = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed after the service's main process
|
||||
has exited.
|
||||
'';
|
||||
@ -389,7 +413,7 @@ in rec {
|
||||
jobScripts = mkOption {
|
||||
type = with types; coercedTo path singleton (listOf path);
|
||||
internal = true;
|
||||
description = lib.mdDoc "A list of all job script derivations of this unit.";
|
||||
description = mdDoc "A list of all job script derivations of this unit.";
|
||||
default = [];
|
||||
};
|
||||
|
||||
@ -434,7 +458,7 @@ in rec {
|
||||
restartIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Whether the service should be restarted during a NixOS
|
||||
configuration switch if its definition has changed.
|
||||
'';
|
||||
@ -443,7 +467,7 @@ in rec {
|
||||
reloadIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Whether the service should be reloaded during a NixOS
|
||||
configuration switch if its definition has changed. If
|
||||
enabled, the value of {option}`restartIfChanged` is
|
||||
@ -459,7 +483,7 @@ in rec {
|
||||
stopIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If set, a changed unit is restarted by calling
|
||||
{command}`systemctl stop` in the old configuration,
|
||||
then {command}`systemctl start` in the new one.
|
||||
@ -475,7 +499,7 @@ in rec {
|
||||
type = with types; either str (listOf str);
|
||||
default = [];
|
||||
example = "Sun 14:00:00";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Automatically start this unit at the given date/time, which
|
||||
must be in the format described in
|
||||
{manpage}`systemd.time(7)`. This is equivalent
|
||||
@ -502,7 +526,7 @@ in rec {
|
||||
default = [];
|
||||
type = types.listOf types.str;
|
||||
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
For each item in this list, a `ListenStream`
|
||||
option in the `[Socket]` section will be created.
|
||||
'';
|
||||
@ -512,7 +536,7 @@ in rec {
|
||||
default = [];
|
||||
type = types.listOf types.str;
|
||||
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
For each item in this list, a `ListenDatagram`
|
||||
option in the `[Socket]` section will be created.
|
||||
'';
|
||||
@ -522,7 +546,7 @@ in rec {
|
||||
default = {};
|
||||
example = { ListenStream = "/run/my-socket"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Socket]` section of the unit. See
|
||||
{manpage}`systemd.socket(5)` for details.
|
||||
@ -554,7 +578,7 @@ in rec {
|
||||
default = {};
|
||||
example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Timer]` section of the unit. See
|
||||
{manpage}`systemd.timer(5)` and
|
||||
@ -587,7 +611,7 @@ in rec {
|
||||
default = {};
|
||||
example = { PathChanged = "/some/path"; Unit = "changedpath.service"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Path]` section of the unit. See
|
||||
{manpage}`systemd.path(5)` for details.
|
||||
@ -618,13 +642,13 @@ in rec {
|
||||
what = mkOption {
|
||||
example = "/dev/sda1";
|
||||
type = types.str;
|
||||
description = lib.mdDoc "Absolute path of device node, file or other resource. (Mandatory)";
|
||||
description = mdDoc "Absolute path of device node, file or other resource. (Mandatory)";
|
||||
};
|
||||
|
||||
where = mkOption {
|
||||
example = "/mnt";
|
||||
type = types.str;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Absolute path of a directory of the mount point.
|
||||
Will be created if it doesn't exist. (Mandatory)
|
||||
'';
|
||||
@ -634,21 +658,21 @@ in rec {
|
||||
default = "";
|
||||
example = "ext4";
|
||||
type = types.str;
|
||||
description = lib.mdDoc "File system type.";
|
||||
description = mdDoc "File system type.";
|
||||
};
|
||||
|
||||
options = mkOption {
|
||||
default = "";
|
||||
example = "noatime";
|
||||
type = types.commas;
|
||||
description = lib.mdDoc "Options used to mount the file system.";
|
||||
description = mdDoc "Options used to mount the file system.";
|
||||
};
|
||||
|
||||
mountConfig = mkOption {
|
||||
default = {};
|
||||
example = { DirectoryMode = "0775"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Mount]` section of the unit. See
|
||||
{manpage}`systemd.mount(5)` for details.
|
||||
@ -678,7 +702,7 @@ in rec {
|
||||
where = mkOption {
|
||||
example = "/mnt";
|
||||
type = types.str;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Absolute path of a directory of the mount point.
|
||||
Will be created if it doesn't exist. (Mandatory)
|
||||
'';
|
||||
@ -688,7 +712,7 @@ in rec {
|
||||
default = {};
|
||||
example = { DirectoryMode = "0775"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Automount]` section of the unit. See
|
||||
{manpage}`systemd.automount(5)` for details.
|
||||
@ -719,7 +743,7 @@ in rec {
|
||||
default = {};
|
||||
example = { MemoryMax = "2G"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Slice]` section of the unit. See
|
||||
{manpage}`systemd.slice(5)` for details.
|
||||
|
@ -1,9 +1,44 @@
|
||||
{ lib, config, pkgs }: with lib;
|
||||
{ lib, config, pkgs }:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
any
|
||||
attrNames
|
||||
concatMapStringsSep
|
||||
concatStringsSep
|
||||
elem
|
||||
escapeShellArg
|
||||
filter
|
||||
flatten
|
||||
getName
|
||||
hasPrefix
|
||||
hasSuffix
|
||||
imap0
|
||||
imap1
|
||||
isAttrs
|
||||
isDerivation
|
||||
isFloat
|
||||
isInt
|
||||
isList
|
||||
isPath
|
||||
isString
|
||||
listToAttrs
|
||||
nameValuePair
|
||||
optionalString
|
||||
removePrefix
|
||||
removeSuffix
|
||||
replaceStrings
|
||||
stringToCharacters
|
||||
types
|
||||
;
|
||||
|
||||
inherit (lib.strings) toJSON normalizePath escapeC;
|
||||
in
|
||||
|
||||
rec {
|
||||
|
||||
# Copy configuration files to avoid having the entire sources in the system closure
|
||||
copyFile = filePath: pkgs.runCommand (builtins.unsafeDiscardStringContext (builtins.baseNameOf filePath)) {} ''
|
||||
copyFile = filePath: pkgs.runCommand (builtins.unsafeDiscardStringContext (baseNameOf filePath)) {} ''
|
||||
cp ${filePath} $out
|
||||
'';
|
||||
|
||||
@ -46,11 +81,11 @@ rec {
|
||||
escapeSystemdPath = s: let
|
||||
replacePrefix = p: r: s: (if (hasPrefix p s) then r + (removePrefix p s) else s);
|
||||
trim = s: removeSuffix "/" (removePrefix "/" s);
|
||||
normalizedPath = strings.normalizePath s;
|
||||
normalizedPath = normalizePath s;
|
||||
in
|
||||
replaceStrings ["/"] ["-"]
|
||||
(replacePrefix "." (strings.escapeC ["."] ".")
|
||||
(strings.escapeC (stringToCharacters " !\"#$%&'()*+,;<=>=@[\\]^`{|}~-")
|
||||
(replacePrefix "." (escapeC ["."] ".")
|
||||
(escapeC (stringToCharacters " !\"#$%&'()*+,;<=>=@[\\]^`{|}~-")
|
||||
(if normalizedPath == "/" then normalizedPath else trim normalizedPath)));
|
||||
|
||||
# Quotes an argument for use in Exec* service lines.
|
||||
@ -62,12 +97,12 @@ rec {
|
||||
# substitution for the directive.
|
||||
escapeSystemdExecArg = arg:
|
||||
let
|
||||
s = if builtins.isPath arg then "${arg}"
|
||||
else if builtins.isString arg then arg
|
||||
else if builtins.isInt arg || builtins.isFloat arg || lib.isDerivation arg then toString arg
|
||||
s = if isPath arg then "${arg}"
|
||||
else if isString arg then arg
|
||||
else if isInt arg || isFloat arg || isDerivation arg then toString arg
|
||||
else throw "escapeSystemdExecArg only allows strings, paths, numbers and derivations";
|
||||
in
|
||||
replaceStrings [ "%" "$" ] [ "%%" "$$" ] (builtins.toJSON s);
|
||||
replaceStrings [ "%" "$" ] [ "%%" "$$" ] (toJSON s);
|
||||
|
||||
# Quotes a list of arguments into a single string for use in a Exec*
|
||||
# line.
|
||||
@ -197,7 +232,7 @@ rec {
|
||||
(attrNames secrets))
|
||||
+ "\n"
|
||||
+ "${pkgs.jq}/bin/jq >'${output}' "
|
||||
+ lib.escapeShellArg (stringOrDefault
|
||||
+ escapeShellArg (stringOrDefault
|
||||
(concatStringsSep
|
||||
" | "
|
||||
(imap1 (index: name: ''${name} = $ENV.secret${toString index}'')
|
||||
@ -205,7 +240,7 @@ rec {
|
||||
".")
|
||||
+ ''
|
||||
<<'EOF'
|
||||
${builtins.toJSON set}
|
||||
${toJSON set}
|
||||
EOF
|
||||
(( ! $inherit_errexit_enabled )) && shopt -u inherit_errexit
|
||||
'';
|
||||
@ -222,9 +257,9 @@ rec {
|
||||
*/
|
||||
removePackagesByName = packages: packagesToRemove:
|
||||
let
|
||||
namesToRemove = map lib.getName packagesToRemove;
|
||||
namesToRemove = map getName packagesToRemove;
|
||||
in
|
||||
lib.filter (x: !(builtins.elem (lib.getName x) namesToRemove)) packages;
|
||||
filter (x: !(elem (getName x) namesToRemove)) packages;
|
||||
|
||||
systemdUtils = {
|
||||
lib = import ./systemd-lib.nix { inherit lib config pkgs; };
|
||||
|
@ -1309,6 +1309,7 @@
|
||||
./services/web-apps/cloudlog.nix
|
||||
./services/web-apps/code-server.nix
|
||||
./services/web-apps/convos.nix
|
||||
./services/web-apps/davis.nix
|
||||
./services/web-apps/dex.nix
|
||||
./services/web-apps/discourse.nix
|
||||
./services/web-apps/documize.nix
|
||||
|
@ -113,25 +113,6 @@ in
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.nfs.extraConfig = ''
|
||||
[nfsd]
|
||||
threads=${toString cfg.nproc}
|
||||
${optionalString (cfg.hostName != null) "host=${cfg.hostName}"}
|
||||
${cfg.extraNfsdConfig}
|
||||
|
||||
[mountd]
|
||||
${optionalString (cfg.mountdPort != null) "port=${toString cfg.mountdPort}"}
|
||||
|
||||
[statd]
|
||||
${optionalString (cfg.statdPort != null) "port=${toString cfg.statdPort}"}
|
||||
|
||||
[lockd]
|
||||
${optionalString (cfg.lockdPort != null) ''
|
||||
port=${toString cfg.lockdPort}
|
||||
udp-port=${toString cfg.lockdPort}
|
||||
''}
|
||||
'';
|
||||
|
||||
services.rpcbind.enable = true;
|
||||
|
||||
boot.supportedFilesystems = [ "nfs" ]; # needed for statd and idmapd
|
||||
|
32
nixos/modules/services/web-apps/davis.md
Normal file
32
nixos/modules/services/web-apps/davis.md
Normal file
@ -0,0 +1,32 @@
|
||||
# Davis {#module-services-davis}
|
||||
|
||||
[Davis](https://github.com/tchapi/davis/) is a caldav and carrddav server. It
|
||||
has a simple, fully translatable admin interface for sabre/dav based on Symfony
|
||||
5 and Bootstrap 5, initially inspired by Baïkal.
|
||||
|
||||
## Basic Usage {#module-services-davis-basic-usage}
|
||||
|
||||
At first, an application secret is needed, this can be generated with:
|
||||
```ShellSession
|
||||
$ cat /dev/urandom | tr -dc a-zA-Z0-9 | fold -w 48 | head -n 1
|
||||
```
|
||||
|
||||
After that, `davis` can be deployed like this:
|
||||
```
|
||||
{
|
||||
services.davis = {
|
||||
enable = true;
|
||||
hostname = "davis.example.com";
|
||||
mail = {
|
||||
dsn = "smtp://username@example.com:25";
|
||||
inviteFromAddress = "davis@example.com";
|
||||
};
|
||||
adminLogin = "admin";
|
||||
adminPasswordFile = "/run/secrets/davis-admin-password";
|
||||
appSecretFile = "/run/secrets/davis-app-secret";
|
||||
nginx = {};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
This deploys Davis using a sqlite database running out of `/var/lib/davis`.
|
554
nixos/modules/services/web-apps/davis.nix
Normal file
554
nixos/modules/services/web-apps/davis.nix
Normal file
@ -0,0 +1,554 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.services.davis;
|
||||
db = cfg.database;
|
||||
mail = cfg.mail;
|
||||
|
||||
mysqlLocal = db.createLocally && db.driver == "mysql";
|
||||
pgsqlLocal = db.createLocally && db.driver == "postgresql";
|
||||
|
||||
user = cfg.user;
|
||||
group = cfg.group;
|
||||
|
||||
isSecret = v: lib.isAttrs v && v ? _secret && (lib.isString v._secret || builtins.isPath v._secret);
|
||||
davisEnvVars = lib.generators.toKeyValue {
|
||||
mkKeyValue = lib.flip lib.generators.mkKeyValueDefault "=" {
|
||||
mkValueString =
|
||||
v:
|
||||
if builtins.isInt v then
|
||||
toString v
|
||||
else if lib.isString v then
|
||||
"\"${v}\""
|
||||
else if true == v then
|
||||
"true"
|
||||
else if false == v then
|
||||
"false"
|
||||
else if null == v then
|
||||
""
|
||||
else if isSecret v then
|
||||
if (lib.isString v._secret) then
|
||||
builtins.hashString "sha256" v._secret
|
||||
else
|
||||
builtins.hashString "sha256" (builtins.readFile v._secret)
|
||||
else
|
||||
throw "unsupported type ${builtins.typeOf v}: ${(lib.generators.toPretty { }) v}";
|
||||
};
|
||||
};
|
||||
secretPaths = lib.mapAttrsToList (_: v: v._secret) (lib.filterAttrs (_: isSecret) cfg.config);
|
||||
mkSecretReplacement = file: ''
|
||||
replace-secret ${
|
||||
lib.escapeShellArgs [
|
||||
(
|
||||
if (lib.isString file) then
|
||||
builtins.hashString "sha256" file
|
||||
else
|
||||
builtins.hashString "sha256" (builtins.readFile file)
|
||||
)
|
||||
file
|
||||
"${cfg.dataDir}/.env.local"
|
||||
]
|
||||
}
|
||||
'';
|
||||
secretReplacements = lib.concatMapStrings mkSecretReplacement secretPaths;
|
||||
filteredConfig = lib.converge (lib.filterAttrsRecursive (
|
||||
_: v:
|
||||
!lib.elem v [
|
||||
{ }
|
||||
null
|
||||
]
|
||||
)) cfg.config;
|
||||
davisEnv = pkgs.writeText "davis.env" (davisEnvVars filteredConfig);
|
||||
in
|
||||
{
|
||||
options.services.davis = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc "Davis is a caldav and carddav server");
|
||||
|
||||
user = lib.mkOption {
|
||||
default = "davis";
|
||||
description = lib.mdDoc "User davis runs as.";
|
||||
type = lib.types.str;
|
||||
};
|
||||
|
||||
group = lib.mkOption {
|
||||
default = "davis";
|
||||
description = lib.mdDoc "Group davis runs as.";
|
||||
type = lib.types.str;
|
||||
};
|
||||
|
||||
package = lib.mkPackageOption pkgs "davis" { };
|
||||
|
||||
dataDir = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "/var/lib/davis";
|
||||
description = lib.mdDoc ''
|
||||
Davis data directory.
|
||||
'';
|
||||
};
|
||||
|
||||
hostname = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
example = "davis.yourdomain.org";
|
||||
description = lib.mdDoc ''
|
||||
Domain of the host to serve davis under. You may want to change it if you
|
||||
run Davis on a different URL than davis.yourdomain.
|
||||
'';
|
||||
};
|
||||
|
||||
config = lib.mkOption {
|
||||
type = lib.types.attrsOf (
|
||||
lib.types.nullOr (
|
||||
lib.types.either
|
||||
(lib.types.oneOf [
|
||||
lib.types.bool
|
||||
lib.types.int
|
||||
lib.types.port
|
||||
lib.types.path
|
||||
lib.types.str
|
||||
])
|
||||
(
|
||||
lib.types.submodule {
|
||||
options = {
|
||||
_secret = lib.mkOption {
|
||||
type = lib.types.nullOr (
|
||||
lib.types.oneOf [
|
||||
lib.types.str
|
||||
lib.types.path
|
||||
]
|
||||
);
|
||||
description = lib.mdDoc ''
|
||||
The path to a file containing the value the
|
||||
option should be set to in the final
|
||||
configuration file.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
)
|
||||
);
|
||||
default = { };
|
||||
|
||||
example = '''';
|
||||
description = lib.mdDoc '''';
|
||||
};
|
||||
|
||||
adminLogin = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "root";
|
||||
description = lib.mdDoc ''
|
||||
Username for the admin account.
|
||||
'';
|
||||
};
|
||||
adminPasswordFile = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = lib.mdDoc ''
|
||||
The full path to a file that contains the admin's password. Must be
|
||||
readable by the user.
|
||||
'';
|
||||
example = "/run/secrets/davis-admin-pass";
|
||||
};
|
||||
|
||||
appSecretFile = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = lib.mdDoc ''
|
||||
A file containing the Symfony APP_SECRET - Its value should be a series
|
||||
of characters, numbers and symbols chosen randomly and the recommended
|
||||
length is around 32 characters. Can be generated with <code>cat
|
||||
/dev/urandom | tr -dc a-zA-Z0-9 | fold -w 48 | head -n 1</code>.
|
||||
'';
|
||||
example = "/run/secrets/davis-appsecret";
|
||||
};
|
||||
|
||||
database = {
|
||||
driver = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"sqlite"
|
||||
"postgresql"
|
||||
"mysql"
|
||||
];
|
||||
default = "sqlite";
|
||||
description = lib.mdDoc "Database type, required in all circumstances.";
|
||||
};
|
||||
urlFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
example = "/run/secrets/davis-db-url";
|
||||
description = lib.mdDoc ''
|
||||
A file containing the database connection url. If set then it
|
||||
overrides all other database settings (except driver). This is
|
||||
mandatory if you want to use an external database, that is when
|
||||
`services.davis.database.createLocally` is `false`.
|
||||
'';
|
||||
};
|
||||
name = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = "davis";
|
||||
description = lib.mdDoc "Database name, only used when the databse is created locally.";
|
||||
};
|
||||
createLocally = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = lib.mdDoc "Create the database and database user locally.";
|
||||
};
|
||||
};
|
||||
|
||||
mail = {
|
||||
dsn = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = lib.mdDoc "Mail DSN for sending emails. Mutually exclusive with `services.davis.mail.dsnFile`.";
|
||||
example = "smtp://username:password@example.com:25";
|
||||
};
|
||||
dsnFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
example = "/run/secrets/davis-mail-dsn";
|
||||
description = lib.mdDoc "A file containing the mail DSN for sending emails. Mutually exclusive with `servies.davis.mail.dsn`.";
|
||||
};
|
||||
inviteFromAddress = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = lib.mdDoc "Email address to send invitations from.";
|
||||
example = "no-reply@dav.example.com";
|
||||
};
|
||||
};
|
||||
|
||||
nginx = lib.mkOption {
|
||||
type = lib.types.submodule (
|
||||
lib.recursiveUpdate (import ../web-servers/nginx/vhost-options.nix { inherit config lib; }) { }
|
||||
);
|
||||
default = null;
|
||||
example = ''
|
||||
{
|
||||
serverAliases = [
|
||||
"dav.''${config.networking.domain}"
|
||||
];
|
||||
# To enable encryption and let let's encrypt take care of certificate
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
}
|
||||
'';
|
||||
description = lib.mdDoc ''
|
||||
With this option, you can customize the nginx virtualHost settings.
|
||||
'';
|
||||
};
|
||||
|
||||
poolConfig = lib.mkOption {
|
||||
type = lib.types.attrsOf (
|
||||
lib.types.oneOf [
|
||||
lib.types.str
|
||||
lib.types.int
|
||||
lib.types.bool
|
||||
]
|
||||
);
|
||||
default = {
|
||||
"pm" = "dynamic";
|
||||
"pm.max_children" = 32;
|
||||
"pm.start_servers" = 2;
|
||||
"pm.min_spare_servers" = 2;
|
||||
"pm.max_spare_servers" = 4;
|
||||
"pm.max_requests" = 500;
|
||||
};
|
||||
description = lib.mdDoc ''
|
||||
Options for the davis PHP pool. See the documentation on <literal>php-fpm.conf</literal>
|
||||
for details on configuration directives.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config =
|
||||
let
|
||||
defaultServiceConfig = {
|
||||
ReadWritePaths = "${cfg.dataDir}";
|
||||
User = user;
|
||||
UMask = 77;
|
||||
DeviceAllow = "";
|
||||
LockPersonality = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateTmp = true;
|
||||
PrivateUsers = true;
|
||||
ProcSubset = "pid";
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectProc = "invisible";
|
||||
ProtectSystem = "strict";
|
||||
RemoveIPC = true;
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [
|
||||
"@system-service"
|
||||
"~@resources"
|
||||
"~@privileged"
|
||||
];
|
||||
WorkingDirectory = "${cfg.package}/";
|
||||
};
|
||||
in
|
||||
lib.mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = db.createLocally -> db.urlFile == null;
|
||||
message = "services.davis.database.urlFile must be unset if services.davis.database.createLocally is set true.";
|
||||
}
|
||||
{
|
||||
assertion = db.createLocally || db.urlFile != null;
|
||||
message = "One of services.davis.database.urlFile or services.davis.database.createLocally must be set.";
|
||||
}
|
||||
{
|
||||
assertion = (mail.dsn != null) != (mail.dsnFile != null);
|
||||
message = "One of (and only one of) services.davis.mail.dsn or services.davis.mail.dsnFile must be set.";
|
||||
}
|
||||
];
|
||||
services.davis.config =
|
||||
{
|
||||
APP_ENV = "prod";
|
||||
CACHE_DIR = "${cfg.dataDir}/var/cache";
|
||||
# note: we do not need the log dir (we log to stdout/journald), by davis/symfony will try to create it, and the default value is one in the nix-store
|
||||
# so we set it to a path under dataDir to avoid something like: Unable to create the "logs" directory (/nix/store/5cfskz0ybbx37s1161gjn5klwb5si1zg-davis-4.4.1/var/log).
|
||||
LOG_DIR = "${cfg.dataDir}/var/log";
|
||||
LOG_FILE_PATH = "/dev/stdout";
|
||||
DATABASE_DRIVER = db.driver;
|
||||
INVITE_FROM_ADDRESS = mail.inviteFromAddress;
|
||||
APP_SECRET._secret = cfg.appSecretFile;
|
||||
ADMIN_LOGIN = cfg.adminLogin;
|
||||
ADMIN_PASSWORD._secret = cfg.adminPasswordFile;
|
||||
APP_TIMEZONE = config.time.timeZone;
|
||||
WEBDAV_ENABLED = false;
|
||||
CALDAV_ENABLED = true;
|
||||
CARDDAV_ENABLED = true;
|
||||
}
|
||||
// (if mail.dsn != null then { MAILER_DSN = mail.dsn; } else { MAILER_DSN._secret = mail.dsnFile; })
|
||||
// (
|
||||
if db.createLocally then
|
||||
{
|
||||
DATABASE_URL =
|
||||
if db.driver == "sqlite" then
|
||||
"sqlite:///${cfg.dataDir}/davis.db" # note: sqlite needs 4 slashes for an absolute path
|
||||
else if
|
||||
pgsqlLocal
|
||||
# note: davis expects a non-standard postgres uri (due to the underlying doctrine library)
|
||||
# specifically the charset query parameter, and the dummy hostname which is overriden by the host query parameter
|
||||
then
|
||||
"postgres://${user}@localhost/${db.name}?host=/run/postgresql&charset=UTF-8"
|
||||
else if mysqlLocal then
|
||||
"mysql://${user}@localhost/${db.name}?socket=/run/mysqld/mysqld.sock"
|
||||
else
|
||||
null;
|
||||
}
|
||||
else
|
||||
{ DATABASE_URL._secret = db.urlFile; }
|
||||
);
|
||||
|
||||
users = {
|
||||
users = lib.mkIf (user == "davis") {
|
||||
davis = {
|
||||
description = "Davis service user";
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
home = cfg.dataDir;
|
||||
};
|
||||
};
|
||||
groups = lib.mkIf (group == "davis") { davis = { }; };
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d ${cfg.dataDir} 0710 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/var 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/var/log 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/var/cache 0700 ${user} ${group} - -"
|
||||
];
|
||||
|
||||
services.phpfpm.pools.davis = {
|
||||
inherit user group;
|
||||
phpOptions = ''
|
||||
log_errors = on
|
||||
'';
|
||||
phpEnv = {
|
||||
ENV_DIR = "${cfg.dataDir}";
|
||||
CACHE_DIR = "${cfg.dataDir}/var/cache";
|
||||
#LOG_DIR = "${cfg.dataDir}/var/log";
|
||||
};
|
||||
settings =
|
||||
{
|
||||
"listen.mode" = "0660";
|
||||
"pm" = "dynamic";
|
||||
"pm.max_children" = 256;
|
||||
"pm.start_servers" = 10;
|
||||
"pm.min_spare_servers" = 5;
|
||||
"pm.max_spare_servers" = 20;
|
||||
}
|
||||
// (
|
||||
if cfg.nginx != null then
|
||||
{
|
||||
"listen.owner" = config.services.nginx.user;
|
||||
"listen.group" = config.services.nginx.group;
|
||||
}
|
||||
else
|
||||
{ }
|
||||
)
|
||||
// cfg.poolConfig;
|
||||
};
|
||||
|
||||
# Reading the user-provided secret files requires root access
|
||||
systemd.services.davis-env-setup = {
|
||||
description = "Setup davis environment";
|
||||
before = [
|
||||
"phpfpm-davis.service"
|
||||
"davis-db-migrate.service"
|
||||
];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
path = [ pkgs.replace-secret ];
|
||||
restartTriggers = [
|
||||
cfg.package
|
||||
davisEnv
|
||||
];
|
||||
script = ''
|
||||
# error handling
|
||||
set -euo pipefail
|
||||
# create .env file with the upstream values
|
||||
install -T -m 0600 -o ${user} ${cfg.package}/env-upstream "${cfg.dataDir}/.env"
|
||||
# create .env.local file with the user-provided values
|
||||
install -T -m 0600 -o ${user} ${davisEnv} "${cfg.dataDir}/.env.local"
|
||||
${secretReplacements}
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.davis-db-migrate = {
|
||||
description = "Migrate davis database";
|
||||
before = [ "phpfpm-davis.service" ];
|
||||
after =
|
||||
lib.optional mysqlLocal "mysql.service"
|
||||
++ lib.optional pgsqlLocal "postgresql.service"
|
||||
++ [ "davis-env-setup.service" ];
|
||||
requires =
|
||||
lib.optional mysqlLocal "mysql.service"
|
||||
++ lib.optional pgsqlLocal "postgresql.service"
|
||||
++ [ "davis-env-setup.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = defaultServiceConfig // {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
Environment = [
|
||||
"ENV_DIR=${cfg.dataDir}"
|
||||
"CACHE_DIR=${cfg.dataDir}/var/cache"
|
||||
"LOG_DIR=${cfg.dataDir}/var/log"
|
||||
];
|
||||
EnvironmentFile = "${cfg.dataDir}/.env.local";
|
||||
};
|
||||
restartTriggers = [
|
||||
cfg.package
|
||||
davisEnv
|
||||
];
|
||||
script = ''
|
||||
set -euo pipefail
|
||||
${cfg.package}/bin/console cache:clear --no-debug
|
||||
${cfg.package}/bin/console cache:warmup --no-debug
|
||||
${cfg.package}/bin/console doctrine:migrations:migrate
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.phpfpm-davis.after = [
|
||||
"davis-env-setup.service"
|
||||
"davis-db-migrate.service"
|
||||
];
|
||||
systemd.services.phpfpm-davis.requires = [
|
||||
"davis-env-setup.service"
|
||||
"davis-db-migrate.service"
|
||||
] ++ lib.optional mysqlLocal "mysql.service" ++ lib.optional pgsqlLocal "postgresql.service";
|
||||
systemd.services.phpfpm-davis.serviceConfig.ReadWritePaths = [ cfg.dataDir ];
|
||||
|
||||
services.nginx = lib.mkIf (cfg.nginx != null) {
|
||||
enable = lib.mkDefault true;
|
||||
virtualHosts = {
|
||||
"${cfg.hostname}" = lib.mkMerge [
|
||||
cfg.nginx
|
||||
{
|
||||
root = lib.mkForce "${cfg.package}/public";
|
||||
extraConfig = ''
|
||||
charset utf-8;
|
||||
index index.php;
|
||||
'';
|
||||
locations = {
|
||||
"/" = {
|
||||
extraConfig = ''
|
||||
try_files $uri $uri/ /index.php$is_args$args;
|
||||
'';
|
||||
};
|
||||
"~* ^/.well-known/(caldav|carddav)$" = {
|
||||
extraConfig = ''
|
||||
return 302 $http_x_forwarded_proto://$host/dav/;
|
||||
'';
|
||||
};
|
||||
"~ ^(.+\.php)(.*)$" = {
|
||||
extraConfig = ''
|
||||
try_files $fastcgi_script_name =404;
|
||||
include ${config.services.nginx.package}/conf/fastcgi_params;
|
||||
include ${config.services.nginx.package}/conf/fastcgi.conf;
|
||||
fastcgi_pass unix:${config.services.phpfpm.pools.davis.socket};
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||
fastcgi_split_path_info ^(.+\.php)(.*)$;
|
||||
fastcgi_param X-Forwarded-Proto $http_x_forwarded_proto;
|
||||
fastcgi_param X-Forwarded-Port $http_x_forwarded_port;
|
||||
'';
|
||||
};
|
||||
"~ /(\\.ht)" = {
|
||||
extraConfig = ''
|
||||
deny all;
|
||||
return 404;
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services.mysql = lib.mkIf mysqlLocal {
|
||||
enable = true;
|
||||
package = lib.mkDefault pkgs.mariadb;
|
||||
ensureDatabases = [ db.name ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = user;
|
||||
ensurePermissions = {
|
||||
"${db.name}.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.postgresql = lib.mkIf pgsqlLocal {
|
||||
enable = true;
|
||||
ensureDatabases = [ db.name ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = user;
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
doc = ./davis.md;
|
||||
maintainers = pkgs.davis.meta.maintainers;
|
||||
};
|
||||
}
|
@ -783,6 +783,8 @@ in
|
||||
# This working directory is required to find stuff like the set of
|
||||
# onboarding files:
|
||||
WorkingDirectory = "${cfg.package}/share/outline";
|
||||
# In case this directory is not in /var/lib/outline, it needs to be made writable explicitly
|
||||
ReadWritePaths = [ cfg.storage.localRootDir ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -47,6 +47,9 @@ let
|
||||
"rescue.target"
|
||||
"rescue.service"
|
||||
|
||||
# systemd-debug-generator
|
||||
"debug-shell.service"
|
||||
|
||||
# Udev.
|
||||
"systemd-tmpfiles-setup-dev-early.service"
|
||||
"systemd-udevd-control.socket"
|
||||
|
@ -18,10 +18,10 @@ let
|
||||
|
||||
cfg = config.boot.initrd.systemd;
|
||||
|
||||
# Copied from fedora
|
||||
upstreamUnits = [
|
||||
"basic.target"
|
||||
"ctrl-alt-del.target"
|
||||
"debug-shell.service"
|
||||
"emergency.service"
|
||||
"emergency.target"
|
||||
"final.target"
|
||||
@ -398,7 +398,8 @@ in {
|
||||
++ lib.optional (config.boot.initrd.systemd.root == "gpt-auto") "rw";
|
||||
|
||||
boot.initrd.systemd = {
|
||||
initrdBin = [pkgs.bash pkgs.coreutils cfg.package.kmod cfg.package];
|
||||
# bashInteractive is easier to use and also required by debug-shell.service
|
||||
initrdBin = [pkgs.bashInteractive pkgs.coreutils cfg.package.kmod cfg.package];
|
||||
extraBin = {
|
||||
less = "${pkgs.less}/bin/less";
|
||||
mount = "${cfg.package.util-linux}/bin/mount";
|
||||
@ -472,6 +473,9 @@ in {
|
||||
"${cfg.package.util-linux}/bin/umount"
|
||||
"${cfg.package.util-linux}/bin/sulogin"
|
||||
|
||||
# required for script services
|
||||
"${pkgs.runtimeShell}"
|
||||
|
||||
# so NSS can look up usernames
|
||||
"${pkgs.glibc}/lib/libnss_files.so.2"
|
||||
] ++ optionals (cfg.package.withCryptsetup && cfg.enableTpm2) [
|
||||
|
@ -13,7 +13,46 @@ let
|
||||
format = pkgs.formats.ini {};
|
||||
|
||||
idmapdConfFile = format.generate "idmapd.conf" cfg.idmapd.settings;
|
||||
nfsConfFile = pkgs.writeText "nfs.conf" cfg.extraConfig;
|
||||
|
||||
# merge parameters from services.nfs.server
|
||||
nfsConfSettings =
|
||||
optionalAttrs (cfg.server.nproc != null) {
|
||||
nfsd.threads = cfg.server.nproc;
|
||||
} // optionalAttrs (cfg.server.hostName != null) {
|
||||
nfsd.host= cfg.hostName;
|
||||
} // optionalAttrs (cfg.server.mountdPort != null) {
|
||||
mountd.port = cfg.server.mountdPort;
|
||||
} // optionalAttrs (cfg.server.statdPort != null) {
|
||||
statd.port = cfg.server.statdPort;
|
||||
} // optionalAttrs (cfg.server.lockdPort != null) {
|
||||
lockd.port = cfg.server.lockdPort;
|
||||
lockd.udp-port = cfg.server.lockdPort;
|
||||
};
|
||||
|
||||
nfsConfDeprecated = cfg.extraConfig + ''
|
||||
[nfsd]
|
||||
threads=${toString cfg.server.nproc}
|
||||
${optionalString (cfg.server.hostName != null) "host=${cfg.server.hostName}"}
|
||||
${cfg.server.extraNfsdConfig}
|
||||
|
||||
[mountd]
|
||||
${optionalString (cfg.server.mountdPort != null) "port=${toString cfg.server.mountdPort}"}
|
||||
|
||||
[statd]
|
||||
${optionalString (cfg.server.statdPort != null) "port=${toString cfg.server.statdPort}"}
|
||||
|
||||
[lockd]
|
||||
${optionalString (cfg.server.lockdPort != null) ''
|
||||
port=${toString cfg.server.lockdPort}
|
||||
udp-port=${toString cfg.server.lockdPort}
|
||||
''}
|
||||
'';
|
||||
|
||||
nfsConfFile =
|
||||
if cfg.settings != {}
|
||||
then format.generate "nfs.conf" (recursiveUpdate nfsConfSettings cfg.settings)
|
||||
else pkgs.writeText "nfs.conf" nfsConfDeprecated;
|
||||
|
||||
requestKeyConfFile = pkgs.writeText "request-key.conf" ''
|
||||
create id_resolver * * ${pkgs.nfs-utils}/bin/nfsidmap -t 600 %k %d
|
||||
'';
|
||||
@ -46,6 +85,19 @@ in
|
||||
}
|
||||
'';
|
||||
};
|
||||
settings = mkOption {
|
||||
type = format.type;
|
||||
default = {};
|
||||
description = lib.mdDoc ''
|
||||
General configuration for NFS daemons and tools.
|
||||
See nfs.conf(5) and related man pages for details.
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
mountd.manage-gids = true;
|
||||
}
|
||||
'';
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
@ -60,6 +112,17 @@ in
|
||||
|
||||
config = mkIf (config.boot.supportedFilesystems.nfs or config.boot.supportedFilesystems.nfs4 or false) {
|
||||
|
||||
warnings =
|
||||
(optional (cfg.extraConfig != "") ''
|
||||
`services.nfs.extraConfig` is deprecated. Use `services.nfs.settings` instead.
|
||||
'') ++ (optional (cfg.server.extraNfsdConfig != "") ''
|
||||
`services.nfs.server.extraNfsdConfig` is deprecated. Use `services.nfs.settings` instead.
|
||||
'');
|
||||
assertions = [{
|
||||
assertion = cfg.settings != {} -> cfg.extraConfig == "" && cfg.server.extraNfsdConfig == "";
|
||||
message = "`services.nfs.settings` cannot be used together with `services.nfs.extraConfig` and `services.nfs.server.extraNfsdConfig`.";
|
||||
}];
|
||||
|
||||
services.rpcbind.enable = true;
|
||||
|
||||
services.nfs.idmapd.settings = {
|
||||
|
@ -233,6 +233,7 @@ in {
|
||||
croc = handleTest ./croc.nix {};
|
||||
darling = handleTest ./darling.nix {};
|
||||
dae = handleTest ./dae.nix {};
|
||||
davis = handleTest ./davis.nix {};
|
||||
dconf = handleTest ./dconf.nix {};
|
||||
deconz = handleTest ./deconz.nix {};
|
||||
deepin = handleTest ./deepin.nix {};
|
||||
|
59
nixos/tests/davis.nix
Normal file
59
nixos/tests/davis.nix
Normal file
@ -0,0 +1,59 @@
|
||||
import ./make-test-python.nix (
|
||||
{ lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
name = "davis";
|
||||
|
||||
meta.maintainers = pkgs.davis.meta.maintainers;
|
||||
|
||||
nodes.machine =
|
||||
{ config, ... }:
|
||||
{
|
||||
virtualisation = {
|
||||
memorySize = 512;
|
||||
};
|
||||
|
||||
services.davis = {
|
||||
enable = true;
|
||||
hostname = "davis.example.com";
|
||||
database = {
|
||||
driver = "postgresql";
|
||||
};
|
||||
mail = {
|
||||
dsnFile = "${pkgs.writeText "davisMailDns" "smtp://username:password@example.com:25"}";
|
||||
inviteFromAddress = "dav@example.com";
|
||||
};
|
||||
adminLogin = "admin";
|
||||
appSecretFile = "${pkgs.writeText "davisAppSecret" "52882ef142066e09ab99ce816ba72522e789505caba224"}";
|
||||
adminPasswordFile = "${pkgs.writeText "davisAdminPass" "nixos"}";
|
||||
nginx = { };
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
machine.wait_for_unit("postgresql.service")
|
||||
machine.wait_for_unit("davis-env-setup.service")
|
||||
machine.wait_for_unit("davis-db-migrate.service")
|
||||
machine.wait_for_unit("nginx.service")
|
||||
machine.wait_for_unit("phpfpm-davis.service")
|
||||
|
||||
with subtest("welcome screen loads"):
|
||||
machine.succeed(
|
||||
"curl -sSfL --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/ | grep '<title>Davis</title>'"
|
||||
)
|
||||
|
||||
with subtest("login works"):
|
||||
csrf_token = machine.succeed(
|
||||
"curl -c /tmp/cookies -sSfL --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/login | grep '_csrf_token' | sed -E 's,.*value=\"(.*)\".*,\\1,g'"
|
||||
)
|
||||
r = machine.succeed(
|
||||
f"curl -b /tmp/cookies --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/login -X POST -F username=admin -F password=nixos -F _csrf_token={csrf_token.strip()} -D headers"
|
||||
)
|
||||
print(r)
|
||||
machine.succeed(
|
||||
"[[ $(grep -i 'location: ' headers | cut -d: -f2- | xargs echo) == /dashboard* ]]"
|
||||
)
|
||||
'';
|
||||
}
|
||||
)
|
@ -9,18 +9,18 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "go-musicfox";
|
||||
version = "4.3.1";
|
||||
version = "4.3.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "go-musicfox";
|
||||
repo = pname;
|
||||
repo = "go-musicfox";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-QZHuQAOnthSm7Kb82i3NUWTnKk+9OMHV5vzOU72inX0=";
|
||||
hash = "sha256-J6R3T92cHFUkKwc+GKm612tVjglP2Tc/kDUmzUMhvio=";
|
||||
};
|
||||
|
||||
deleteVendor = true;
|
||||
|
||||
vendorHash = "sha256-6DeoxpjVfykBI3fJAJpMZwJ4VTooIbxGpk5+SW198hU=";
|
||||
vendorHash = "sha256-KSIdBEEvYaYcDIDmzfRO857I8FSN4Ajw6phAPQLYEqg=";
|
||||
|
||||
subPackages = [ "cmd/musicfox.go" ];
|
||||
|
||||
|
125
pkgs/applications/audio/pwvucontrol/Cargo.lock
generated
125
pkgs/applications/audio/pwvucontrol/Cargo.lock
generated
@ -4,18 +4,18 @@ version = 3
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "1.0.3"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "86b8f9420f797f2d9e935edf629310eb938a0d839f984e25327f3c7eed22300c"
|
||||
checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.72"
|
||||
version = "1.0.75"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854"
|
||||
checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
@ -25,11 +25,11 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
|
||||
[[package]]
|
||||
name = "bindgen"
|
||||
version = "0.64.0"
|
||||
version = "0.66.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4"
|
||||
checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"bitflags 2.4.0",
|
||||
"cexpr",
|
||||
"clang-sys",
|
||||
"lazy_static",
|
||||
@ -40,7 +40,7 @@ dependencies = [
|
||||
"regex",
|
||||
"rustc-hash",
|
||||
"shlex",
|
||||
"syn 1.0.109",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -51,9 +51,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.3.3"
|
||||
version = "2.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
|
||||
checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
|
||||
|
||||
[[package]]
|
||||
name = "bitmaps"
|
||||
@ -76,7 +76,7 @@ version = "0.18.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d859b656775a6b1dd078d3e5924884e6ea88aa649a7fdde03d5b2ec56ffcc10b"
|
||||
dependencies = [
|
||||
"bitflags 2.3.3",
|
||||
"bitflags 2.4.0",
|
||||
"cairo-sys-rs",
|
||||
"glib",
|
||||
"libc",
|
||||
@ -137,6 +137,7 @@ checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f"
|
||||
dependencies = [
|
||||
"glob",
|
||||
"libc",
|
||||
"libloading",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -226,7 +227,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.28",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -287,9 +288,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "gdk4"
|
||||
version = "0.7.1"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8965ed5455cbfa1eb45c14a3b971cbacb43481913a3a5b9078b2ef0d9a01bd4b"
|
||||
checksum = "6982d9815ed6ac95b0467b189e81f29dea26d08a732926ec113e65744ed3f96c"
|
||||
dependencies = [
|
||||
"cairo-rs",
|
||||
"gdk-pixbuf",
|
||||
@ -302,9 +303,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "gdk4-sys"
|
||||
version = "0.7.1"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aeffd4a7d68046c28666d817071bf025254aaed4df35099443f0c306ca6177f3"
|
||||
checksum = "dbab43f332a3cf1df9974da690b5bb0e26720ed09a228178ce52175372dcfef0"
|
||||
dependencies = [
|
||||
"cairo-sys-rs",
|
||||
"gdk-pixbuf-sys",
|
||||
@ -375,7 +376,7 @@ version = "0.18.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "331156127e8166dd815cf8d2db3a5beb492610c716c03ee6db4f2d07092af0a7"
|
||||
dependencies = [
|
||||
"bitflags 2.3.3",
|
||||
"bitflags 2.4.0",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-executor",
|
||||
@ -404,7 +405,7 @@ dependencies = [
|
||||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.28",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -459,9 +460,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "gsk4"
|
||||
version = "0.7.1"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53b3b9e8090acb325d08cde84b30fc29b963a75fbac93160e9c5a30d2b335742"
|
||||
checksum = "cc25855255120f294d874acd6eaf4fbed7ce1cdc550e2d8415ea57fafbe816d5"
|
||||
dependencies = [
|
||||
"cairo-rs",
|
||||
"gdk4",
|
||||
@ -474,9 +475,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "gsk4-sys"
|
||||
version = "0.7.0"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0770d1ede7189092748c4ef5b6921264eb945fd2318a58e8f59dc273000810f8"
|
||||
checksum = "e1ecf3a63bf1223d68f80f72cc896c4d8c80482fbce1c9a12c66d3de7290ee46"
|
||||
dependencies = [
|
||||
"cairo-sys-rs",
|
||||
"gdk4-sys",
|
||||
@ -490,9 +491,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "gtk4"
|
||||
version = "0.7.1"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0973f9b9ade10fc22403810b7283d47b533033715f2aaa36288cd3bf90d63efc"
|
||||
checksum = "a3b095b26f2a2df70be1805d3590eeb9d7a05ecb5be9649b82defc72dc56228c"
|
||||
dependencies = [
|
||||
"cairo-rs",
|
||||
"field-offset",
|
||||
@ -511,9 +512,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "gtk4-macros"
|
||||
version = "0.7.1"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ae9f2c4530f3168fe506b0be7bc15f7a93ef38d020edb27d81a921a26cbca851"
|
||||
checksum = "d57ec49cf9b657f69a05bca8027cff0a8dfd0c49e812be026fc7311f2163832f"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"proc-macro-crate",
|
||||
@ -525,9 +526,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "gtk4-sys"
|
||||
version = "0.7.0"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19fde71ef2e78ac8fb18073c345b5f29609048d4045a345613645aa1163243c1"
|
||||
checksum = "7b0bdde87c50317b4f355bcbb4a9c2c414ece1b7c824fb4ad4ba8f3bdb2c6603"
|
||||
dependencies = [
|
||||
"cairo-sys-rs",
|
||||
"gdk-pixbuf-sys",
|
||||
@ -629,11 +630,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
|
||||
|
||||
[[package]]
|
||||
name = "libspa"
|
||||
version = "0.6.0"
|
||||
source = "git+https://gitlab.freedesktop.org/saivert/pipewire-rs?branch=misc_fixes#46bfbd8bdf0ad3ff1d25d02b2e36f97333c78e23"
|
||||
name = "libloading"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
|
||||
dependencies = [
|
||||
"bitflags 2.3.3",
|
||||
"cfg-if",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libspa"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcdea6b6663acf456641a4dea1b87fa6970a3e881596237713192d8f5423b542"
|
||||
dependencies = [
|
||||
"bitflags 2.4.0",
|
||||
"cc",
|
||||
"convert_case",
|
||||
"cookie-factory",
|
||||
@ -646,8 +658,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "libspa-sys"
|
||||
version = "0.6.0"
|
||||
source = "git+https://gitlab.freedesktop.org/saivert/pipewire-rs?branch=misc_fixes#46bfbd8bdf0ad3ff1d25d02b2e36f97333c78e23"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e63fc701d3375e6e255765d6a6172d9af06583115e78f3dfe2c8ff1dfd0b2dab"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"cc",
|
||||
@ -669,9 +682,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.19"
|
||||
version = "0.4.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
|
||||
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
||||
|
||||
[[package]]
|
||||
name = "malloc_buf"
|
||||
@ -816,11 +829,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
||||
|
||||
[[package]]
|
||||
name = "pipewire"
|
||||
version = "0.6.0"
|
||||
source = "git+https://gitlab.freedesktop.org/saivert/pipewire-rs?branch=misc_fixes#46bfbd8bdf0ad3ff1d25d02b2e36f97333c78e23"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "062c97c31818918b8bffdc66cfd93f3e4b4141f505c63234f9ff0a658fddedab"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bitflags 2.3.3",
|
||||
"bitflags 2.4.0",
|
||||
"libc",
|
||||
"libspa",
|
||||
"libspa-sys",
|
||||
@ -832,8 +846,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pipewire-sys"
|
||||
version = "0.6.0"
|
||||
source = "git+https://gitlab.freedesktop.org/saivert/pipewire-rs?branch=misc_fixes#46bfbd8bdf0ad3ff1d25d02b2e36f97333c78e23"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d558e2cffe5f97ac32c7e0b6cb6074b5271b8c2c628ac68633342ee08fdab308"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"libspa-sys",
|
||||
@ -908,9 +923,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.32"
|
||||
version = "1.0.33"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
|
||||
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
@ -1045,9 +1060,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.28"
|
||||
version = "2.0.29"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
|
||||
checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -1081,22 +1096,22 @@ checksum = "af547b166dd1ea4b472165569fc456cfb6818116f854690b0ff205e636523dab"
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.44"
|
||||
version = "1.0.47"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90"
|
||||
checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.44"
|
||||
version = "1.0.47"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96"
|
||||
checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.28",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1187,9 +1202,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "winnow"
|
||||
version = "0.5.4"
|
||||
version = "0.5.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "acaaa1190073b2b101e15083c38ee8ec891b5e05cbee516521e94ec008f61e64"
|
||||
checksum = "d09770118a7eb1ccaf4a594a221334119a44a814fcb0d31c5b85e83e97227a97"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
@ -1197,9 +1212,9 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wireplumber"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/saivert/wireplumber.rs.git?branch=use_pipewire_from_git#8dbf383ce54dee7b8d578b87c13f3507a65291f8"
|
||||
source = "git+https://github.com/arcnmx/wireplumber.rs.git?rev=341b0c4e8d177f5f21c109cf88cca4f2dc1f853a#341b0c4e8d177f5f21c109cf88cca4f2dc1f853a"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"bitflags 2.4.0",
|
||||
"gio",
|
||||
"glib",
|
||||
"libc",
|
||||
@ -1213,7 +1228,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wireplumber-sys"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/saivert/wireplumber.rs.git?branch=use_pipewire_from_git#8dbf383ce54dee7b8d578b87c13f3507a65291f8"
|
||||
source = "git+https://github.com/arcnmx/wireplumber.rs.git?rev=341b0c4e8d177f5f21c109cf88cca4f2dc1f853a#341b0c4e8d177f5f21c109cf88cca4f2dc1f853a"
|
||||
dependencies = [
|
||||
"gio-sys",
|
||||
"glib-sys",
|
||||
|
@ -1,6 +1,7 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchFromGitLab
|
||||
, cargo
|
||||
, desktop-file-utils
|
||||
, meson
|
||||
@ -19,22 +20,33 @@
|
||||
, wireplumber
|
||||
}:
|
||||
|
||||
let
|
||||
wireplumber_0_4 = wireplumber.overrideAttrs (attrs: rec {
|
||||
version = "0.4.17";
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.freedesktop.org";
|
||||
owner = "pipewire";
|
||||
repo = "wireplumber";
|
||||
rev = version;
|
||||
hash = "sha256-vhpQT67+849WV1SFthQdUeFnYe/okudTQJoL3y+wXwI=";
|
||||
};
|
||||
});
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pwvucontrol";
|
||||
version = "0.2";
|
||||
version = "0.3.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "saivert";
|
||||
repo = "pwvucontrol";
|
||||
rev = version;
|
||||
hash = "sha256-jBvMLewBZi4LyX//YUyJQjqPvxnKqlpuLZAm9zpDMrA=";
|
||||
hash = "sha256-t4JUpKtuO1JgrdsNbl0M/SwPmoqu7WxsaD74vlJeVhY=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.importCargoLock {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
"libspa-0.6.0" = "sha256-CVLQ9JXRMo78/kay1TpRgRuk5v/Z5puPVMzLA30JRk8=";
|
||||
"wireplumber-0.1.0" = "sha256-wkku9vqIMdV+HTkWCPXKH2KM1Xzf0xApC5zrVmgxhsA=";
|
||||
"wireplumber-0.1.0" = "sha256-+LZ8xKok2AOegW8WvfrfZGXuQB4xHrLNshcTOHab+xQ=";
|
||||
};
|
||||
};
|
||||
|
||||
@ -58,7 +70,7 @@ stdenv.mkDerivation rec {
|
||||
libadwaita
|
||||
pango
|
||||
pipewire
|
||||
wireplumber
|
||||
wireplumber_0_4
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -1,37 +0,0 @@
|
||||
{ lib, fetchurl, appimageTools, }:
|
||||
|
||||
let
|
||||
pname = "ytmdesktop";
|
||||
version = "1.13.0";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ytmdesktop/ytmdesktop/releases/download/v${version}/YouTube-Music-Desktop-App-${version}.AppImage";
|
||||
sha256 = "0f5l7hra3m3q9zd0ngc9dj4mh1lk0rgicvh9idpd27wr808vy28v";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extract { inherit name src; };
|
||||
in appimageTools.wrapType2 rec {
|
||||
inherit name src;
|
||||
|
||||
extraInstallCommands = ''
|
||||
mv $out/bin/{${name},${pname}}
|
||||
|
||||
install -m 444 \
|
||||
-D ${appimageContents}/youtube-music-desktop-app.desktop \
|
||||
-t $out/share/applications
|
||||
substituteInPlace \
|
||||
$out/share/applications/youtube-music-desktop-app.desktop \
|
||||
--replace 'Exec=AppRun' 'Exec=${pname}'
|
||||
cp -r ${appimageContents}/usr/share/icons $out/share
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A Desktop App for YouTube Music";
|
||||
homepage = "https://ytmdesktop.app/";
|
||||
license = licenses.cc0;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.lgcl ];
|
||||
mainProgram = "ytmdesktop";
|
||||
};
|
||||
}
|
@ -997,26 +997,26 @@ let
|
||||
sources = {
|
||||
"x86_64-linux" = {
|
||||
arch = "linux-x64";
|
||||
sha256 = "05kh6sf3jv3510q33chf8s5n1kfp9wcm7650va7mcrdkfr9g8ysq";
|
||||
sha256 = "1y5g8ay9sfz7r21fhwb2wr28yng7w3f2l265ljnfkz8yv8qzqpgk";
|
||||
};
|
||||
"x86_64-darwin" = {
|
||||
arch = "darwin-x64";
|
||||
sha256 = "0242h9kq47qvs1xynr5x8dzxkc5pwgb6km0iqpyy9kydg8ng1vp3";
|
||||
sha256 = "14v9p5k9c9s9hfb1ymmkp66kmm9pvnvvljzrrs9wmajss5mlglf5";
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
arch = "linux-arm64";
|
||||
sha256 = "1qm3f2lh8mi3hnyp2bmx7j2lir6fmbbxkzh6b8zf579khhbapnaz";
|
||||
sha256 = "1mngfy42crp8xs14s06rkyzv16ci12bq8y39miyy7wa3a343b0ii";
|
||||
};
|
||||
"aarch64-darwin" = {
|
||||
arch = "darwin-arm64";
|
||||
sha256 = "18w22z1c5qgkpw2zlwmi9gs9dx1pcm51f0r8my7ynnvgl6mp12sg";
|
||||
sha256 = "1gd1kr91s52kc8ldzy78cbn6gix1b8cvd6jh4sfrhq7k8yyn7g1l";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
name = "continue";
|
||||
publisher = "Continue";
|
||||
version = "0.8.12";
|
||||
version = "0.8.22";
|
||||
} // sources.${stdenv.system};
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
|
@ -7,7 +7,7 @@
|
||||
, isInsiders ? false
|
||||
# sourceExecutableName is the name of the binary in the source archive over
|
||||
# which we have no control and it is needed to run the insider version as
|
||||
# documented in https://nixos.wiki/wiki/Visual_Studio_Code#Insiders_Build
|
||||
# documented in https://wiki.nixos.org/wiki/Visual_Studio_Code#Insiders_Build
|
||||
# On MacOS the insider binary is still called code instead of code-insiders as
|
||||
# of 2023-08-06.
|
||||
, sourceExecutableName ? "code" + lib.optionalString (isInsiders && stdenv.isLinux) "-insiders"
|
||||
|
@ -74,6 +74,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://gitlab.com/schmiddi-on-mobile/railway";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
mainProgram = "diebahn";
|
||||
maintainers = with lib.maintainers; [ dotlambda ];
|
||||
maintainers = with lib.maintainers; [ dotlambda lilacious ];
|
||||
};
|
||||
}
|
||||
|
@ -1,18 +1,19 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
RedCloth (4.3.2)
|
||||
asciidoctor (2.0.18)
|
||||
RedCloth (4.3.4)
|
||||
asciidoctor (2.0.22)
|
||||
base64 (0.2.0)
|
||||
builder (3.2.4)
|
||||
concurrent-ruby (1.2.2)
|
||||
concurrent-ruby (1.2.3)
|
||||
crass (1.0.6)
|
||||
creole (0.5.0)
|
||||
execjs (2.8.1)
|
||||
execjs (2.9.1)
|
||||
expression_parser (0.9.0)
|
||||
ffi (1.15.5)
|
||||
ffi (1.16.3)
|
||||
gemojione (4.3.3)
|
||||
json
|
||||
github-markup (4.0.1)
|
||||
github-markup (4.0.2)
|
||||
gollum (5.3.2)
|
||||
gemojione (~> 4.1)
|
||||
gollum-lib (>= 5.2.3, < 6.0)
|
||||
@ -45,51 +46,51 @@ GEM
|
||||
mime-types (~> 3.4)
|
||||
rugged (~> 1.5)
|
||||
htmlentities (4.3.4)
|
||||
i18n (1.13.0)
|
||||
i18n (1.14.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
json (2.6.3)
|
||||
json (2.7.1)
|
||||
kramdown (2.4.0)
|
||||
rexml
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
loofah (2.20.0)
|
||||
loofah (2.22.0)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
mime-types (3.4.1)
|
||||
nokogiri (>= 1.12.0)
|
||||
mime-types (3.5.2)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2023.0218.1)
|
||||
mini_portile2 (2.8.2)
|
||||
mime-types-data (3.2024.0305)
|
||||
mini_portile2 (2.8.5)
|
||||
multi_json (1.15.0)
|
||||
mustache (1.1.1)
|
||||
mustache-sinatra (2.0.0)
|
||||
mustache (~> 1.0)
|
||||
mustermann (2.0.2)
|
||||
ruby2_keywords (~> 0.0.1)
|
||||
nokogiri (1.14.3)
|
||||
mini_portile2 (~> 2.8.0)
|
||||
nokogiri (1.16.3)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
octicons (12.1.0)
|
||||
nokogiri (>= 1.6.3.1)
|
||||
org-ruby (0.9.12)
|
||||
rubypants (~> 0.2)
|
||||
psych (5.1.0)
|
||||
psych (5.1.2)
|
||||
stringio
|
||||
racc (1.6.2)
|
||||
rack (2.2.7)
|
||||
racc (1.7.3)
|
||||
rack (2.2.9)
|
||||
rack-protection (2.2.4)
|
||||
rack
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rdoc (6.5.0)
|
||||
rdoc (6.6.3.1)
|
||||
psych (>= 4.0.0)
|
||||
rexml (3.2.5)
|
||||
rexml (3.2.6)
|
||||
rouge (3.30.0)
|
||||
rss (0.2.9)
|
||||
rexml
|
||||
ruby2_keywords (0.0.5)
|
||||
rubypants (0.7.1)
|
||||
rugged (1.6.3)
|
||||
rugged (1.7.2)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
@ -106,23 +107,24 @@ GEM
|
||||
rack-protection (= 2.2.4)
|
||||
sinatra (= 2.2.4)
|
||||
tilt (~> 2.0)
|
||||
sprockets (3.7.2)
|
||||
sprockets (3.7.3)
|
||||
base64
|
||||
concurrent-ruby (~> 1.0)
|
||||
rack (> 1, < 3)
|
||||
sprockets-helpers (1.4.0)
|
||||
sprockets (>= 2.2)
|
||||
stringio (3.0.6)
|
||||
stringio (3.1.0)
|
||||
therubyrhino (2.1.2)
|
||||
therubyrhino_jar (>= 1.7.4, < 1.7.9)
|
||||
therubyrhino_jar (1.7.8)
|
||||
tilt (2.1.0)
|
||||
tilt (2.3.0)
|
||||
twitter-text (1.14.7)
|
||||
unf (~> 0.1.0)
|
||||
uglifier (4.2.0)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.8.2)
|
||||
unf_ext (0.0.9.1)
|
||||
useragent (0.16.10)
|
||||
webrick (1.8.1)
|
||||
wikicloth (0.8.3)
|
||||
@ -144,4 +146,4 @@ DEPENDENCIES
|
||||
wikicloth
|
||||
|
||||
BUNDLED WITH
|
||||
2.4.12
|
||||
2.5.6
|
||||
|
@ -4,10 +4,20 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "11z3vnd8vh3ny1vx69bjrbck5b2g8zsbj94npyadpn7fdp8y3ldv";
|
||||
sha256 = "1mnan6dxw4aqii9kcmp1s3sc91jiwaqkdpsg6g01fdisb6xz3n56";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.0.18";
|
||||
version = "2.0.22";
|
||||
};
|
||||
base64 = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.2.0";
|
||||
};
|
||||
builder = {
|
||||
groups = ["default"];
|
||||
@ -24,10 +34,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0krcwb6mn0iklajwngwsg850nk8k9b35dhmc2qkbdqvmifdi2y9q";
|
||||
sha256 = "1qh1b14jwbbj242klkyz5fc7npd4j0mvndz62gajhvl1l3wd7zc2";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.2.2";
|
||||
version = "1.2.3";
|
||||
};
|
||||
crass = {
|
||||
groups = ["default"];
|
||||
@ -54,10 +64,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "121h6af4i6wr3wxvv84y53jcyw2sk71j5wsncm6wq6yqrwcrk4vd";
|
||||
sha256 = "1yywajqlpjhrj1m43s3lfg3i4lkb6pxwccmwps7qw37ndmphdzg8";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.8.1";
|
||||
version = "2.9.1";
|
||||
};
|
||||
expression_parser = {
|
||||
groups = ["default"];
|
||||
@ -74,10 +84,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1862ydmclzy1a0cjbvm8dz7847d9rch495ib0zb64y84d3xd4bkg";
|
||||
sha256 = "1yvii03hcgqj30maavddqamqy50h7y6xcn2wcyq72wn823zl4ckd";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.15.5";
|
||||
version = "1.16.3";
|
||||
};
|
||||
gemojione = {
|
||||
dependencies = ["json"];
|
||||
@ -95,10 +105,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0p40hbrrzq9gypkx0p8wqdqa2gfmmw2cd9a0sv2dw1nnk1qbcl8y";
|
||||
sha256 = "0mv2l0h3v5g4cwqh2lgb3braafh8n3v2s84i573wi5m79f4qhw1z";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.0.1";
|
||||
version = "4.0.2";
|
||||
};
|
||||
gollum = {
|
||||
dependencies = ["gemojione" "gollum-lib" "i18n" "kramdown" "kramdown-parser-gfm" "mustache-sinatra" "octicons" "rdoc" "rss" "sass" "sinatra" "sinatra-contrib" "sprockets" "sprockets-helpers" "therubyrhino" "uglifier" "useragent" "webrick"];
|
||||
@ -149,20 +159,20 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x";
|
||||
sha256 = "0lbm33fpb3w06wd2231sg58dwlwgjsvym93m548ajvl6s3mfvpn7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.13.0";
|
||||
version = "1.14.4";
|
||||
};
|
||||
json = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0nalhin1gda4v8ybk6lq8f407cgfrj6qzn234yra4ipkmlbfmal6";
|
||||
sha256 = "0r9jmjhg2ly3l736flk7r2al47b5c8cayh0gqkq0yhjqzc9a6zhq";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.6.3";
|
||||
version = "2.7.1";
|
||||
};
|
||||
kramdown = {
|
||||
dependencies = ["rexml"];
|
||||
@ -192,10 +202,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1mi4ia13fisc97fzd8xcd9wkjdki7zfbmdn1xkdzplicir68gyp8";
|
||||
sha256 = "1zkjqf37v2d7s11176cb35cl83wls5gm3adnfkn2zcc61h3nxmqh";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.20.0";
|
||||
version = "2.22.0";
|
||||
};
|
||||
mime-types = {
|
||||
dependencies = ["mime-types-data"];
|
||||
@ -203,30 +213,30 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb";
|
||||
sha256 = "1r64z0m5zrn4k37wabfnv43wa6yivgdfk6cf2rpmmirlz889yaf1";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.1";
|
||||
version = "3.5.2";
|
||||
};
|
||||
mime-types-data = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1pky3vzaxlgm9gw5wlqwwi7wsw3jrglrfflrppvvnsrlaiz043z9";
|
||||
sha256 = "00x7w5xqsj9m33v3vkmy23wipkkysafksib53ypzn27p5g81w455";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2023.0218.1";
|
||||
version = "3.2024.0305";
|
||||
};
|
||||
mini_portile2 = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6";
|
||||
sha256 = "1kl9c3kdchjabrihdqfmcplk3lq4cw1rr9f378y6q22qwy5dndvs";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.8.2";
|
||||
version = "2.8.5";
|
||||
};
|
||||
multi_json = {
|
||||
groups = ["default"];
|
||||
@ -276,10 +286,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0fnw0z8zl8b5k35g9m5hhc1g4s6ajzjinhyxnqjrx7l7p07fw71v";
|
||||
sha256 = "0j72sg8n8834vbw2x8glcp46y5r2dls2pj64ll7rmf6mri9s52j9";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.14.3";
|
||||
version = "1.16.3";
|
||||
};
|
||||
octicons = {
|
||||
dependencies = ["nokogiri"];
|
||||
@ -309,30 +319,30 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1msambb54r3d1sg6smyj4k2pj9h9lz8jq4jamip7ivcyv32a85vz";
|
||||
sha256 = "0s5383m6004q76xm3lb732bp4sjzb6mxb6rbgn129gy2izsj4wrk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.1.0";
|
||||
version = "5.1.2";
|
||||
};
|
||||
racc = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "09jgz6r0f7v84a7jz9an85q8vvmp743dqcsdm3z9c8rqcqv6pljq";
|
||||
sha256 = "01b9662zd2x9bp4rdjfid07h09zxj7kvn7f5fghbqhzc625ap1dp";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.6.2";
|
||||
version = "1.7.3";
|
||||
};
|
||||
rack = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "16w217k9z02c4hqizym8dkj6bqmmzx4qdvqpnskgzf174a5pwdxk";
|
||||
sha256 = "0hj0rkw2z9r1lcg2wlrcld2n3phwrcgqcp7qd1g9a7hwgalh2qzx";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.2.7";
|
||||
version = "2.2.9";
|
||||
};
|
||||
rack-protection = {
|
||||
dependencies = ["rack"];
|
||||
@ -372,30 +382,30 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "05r2cxscapr9saqjw8dlp89as7jvc2mlz1h5kssrmkbz105qmfcm";
|
||||
sha256 = "0ib3cnf4yllvw070gr4bz94sbmqx3haqc5f846fsvdcs494vgxrr";
|
||||
type = "gem";
|
||||
};
|
||||
version = "6.5.0";
|
||||
version = "6.6.3.1";
|
||||
};
|
||||
RedCloth = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy";
|
||||
sha256 = "15r2h7rfp4bi9i0bfmvgnmvmw0kl3byyac53rcakk4qsv7yv4caj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.3.2";
|
||||
version = "4.3.4";
|
||||
};
|
||||
rexml = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
|
||||
sha256 = "05i8518ay14kjbma550mv0jm8a6di8yp5phzrd8rj44z9qnrlrp0";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2.5";
|
||||
version = "3.2.6";
|
||||
};
|
||||
rouge = {
|
||||
groups = ["default"];
|
||||
@ -443,10 +453,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "016bawsahkhxx7p8azxirpl7y2y7i8a027pj8910gwf6ipg329in";
|
||||
sha256 = "1sccng15h8h3mcjxfgvxy85lfpswbj0nhmzwwsqdffbzqgsb2jch";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.6.3";
|
||||
version = "1.7.2";
|
||||
};
|
||||
sass = {
|
||||
dependencies = ["sass-listen"];
|
||||
@ -493,15 +503,15 @@
|
||||
version = "2.2.4";
|
||||
};
|
||||
sprockets = {
|
||||
dependencies = ["concurrent-ruby" "rack"];
|
||||
dependencies = ["base64" "concurrent-ruby" "rack"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
|
||||
sha256 = "0lyc6mx4yalsnxc9yp4a5xra4nz1nwwbk5634wlfncml0ll1bnnw";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.7.2";
|
||||
version = "3.7.3";
|
||||
};
|
||||
sprockets-helpers = {
|
||||
dependencies = ["sprockets"];
|
||||
@ -519,10 +529,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "10w46rlh844kax248l1m3pyrj94n1qpc9691j8r5v0rzdxibpy7v";
|
||||
sha256 = "063psvsn1aq6digpznxfranhcpmi0sdv2jhra5g0459sw0x2dxn1";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.0.6";
|
||||
version = "3.1.0";
|
||||
};
|
||||
therubyrhino = {
|
||||
dependencies = ["therubyrhino_jar"];
|
||||
@ -550,10 +560,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1qmhi6d9przjzhsyk9g5pq2j75c656msh6xzprqd2mxgphf23jxs";
|
||||
sha256 = "0p3l7v619hwfi781l3r7ypyv1l8hivp09r18kmkn6g11c4yr1pc2";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.1.0";
|
||||
version = "2.3.0";
|
||||
};
|
||||
twitter-text = {
|
||||
dependencies = ["unf"];
|
||||
@ -593,10 +603,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1yj2nz2l101vr1x9w2k83a0fag1xgnmjwp8w8rw4ik2rwcz65fch";
|
||||
sha256 = "1sf6bxvf6x8gihv6j63iakixmdddgls58cpxpg32chckb2l18qcj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.0.8.2";
|
||||
version = "0.0.9.1";
|
||||
};
|
||||
useragent = {
|
||||
groups = ["default"];
|
||||
|
@ -14,12 +14,11 @@ GEM
|
||||
addressable (2.8.6)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
base64 (0.2.0)
|
||||
bigdecimal (3.1.6)
|
||||
bigdecimal (3.1.7)
|
||||
colorator (1.1.0)
|
||||
concurrent-ruby (1.2.3)
|
||||
connection_pool (2.4.1)
|
||||
drb (2.2.0)
|
||||
ruby2_keywords
|
||||
drb (2.2.1)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
@ -27,12 +26,13 @@ GEM
|
||||
ffi (1.16.3)
|
||||
forwardable-extended (2.6.0)
|
||||
gemoji (4.1.0)
|
||||
google-protobuf (3.25.3)
|
||||
google-protobuf (4.26.1)
|
||||
rake (>= 13)
|
||||
html-pipeline (2.14.3)
|
||||
activesupport (>= 2)
|
||||
nokogiri (>= 1.4)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (1.14.1)
|
||||
i18n (1.14.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (4.3.3)
|
||||
addressable (~> 2.4)
|
||||
@ -77,9 +77,9 @@ GEM
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.4.0)
|
||||
mini_portile2 (2.8.5)
|
||||
minitest (5.22.2)
|
||||
minitest (5.22.3)
|
||||
mutex_m (0.2.0)
|
||||
nokogiri (1.16.2)
|
||||
nokogiri (1.16.3)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
pathutil (0.16.2)
|
||||
@ -91,11 +91,10 @@ GEM
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rexml (3.2.6)
|
||||
rouge (4.2.0)
|
||||
ruby2_keywords (0.0.5)
|
||||
rouge (4.2.1)
|
||||
safe_yaml (1.0.5)
|
||||
sass-embedded (1.71.1)
|
||||
google-protobuf (~> 3.25)
|
||||
sass-embedded (1.72.0)
|
||||
google-protobuf (>= 3.25, < 5.0)
|
||||
rake (>= 13.0.0)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
|
@ -36,10 +36,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "00db5v09k1z3539g1zrk7vkjrln9967k08adh6qx33ng97a2gg5w";
|
||||
sha256 = "0cq1c29zbkcxgdihqisirhcw76xc768z2zpd5vbccpq0l1lv76g7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.1.6";
|
||||
version = "3.1.7";
|
||||
};
|
||||
colorator = {
|
||||
groups = ["default"];
|
||||
@ -72,15 +72,14 @@
|
||||
version = "2.4.1";
|
||||
};
|
||||
drb = {
|
||||
dependencies = ["ruby2_keywords"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "03ylflxbp9jrs1hx3d4wvx05yb9hdq4a0r706zz6qc6kvqfazr79";
|
||||
sha256 = "0h5kbj9hvg5hb3c7l425zpds0vb42phvln2knab8nmazg2zp5m79";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.2.0";
|
||||
version = "2.2.1";
|
||||
};
|
||||
em-websocket = {
|
||||
dependencies = ["eventmachine" "http_parser.rb"];
|
||||
@ -134,14 +133,15 @@
|
||||
version = "4.1.0";
|
||||
};
|
||||
google-protobuf = {
|
||||
dependencies = ["rake"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r";
|
||||
sha256 = "14s40yxj35vixx9pvpnbrkz9z7ga3m7vcy72yll1flnn3cirl1aj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.25.3";
|
||||
version = "4.26.1";
|
||||
};
|
||||
html-pipeline = {
|
||||
dependencies = ["activesupport" "nokogiri"];
|
||||
@ -170,10 +170,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx";
|
||||
sha256 = "0lbm33fpb3w06wd2231sg58dwlwgjsvym93m548ajvl6s3mfvpn7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.14.1";
|
||||
version = "1.14.4";
|
||||
};
|
||||
jekyll = {
|
||||
dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table" "webrick"];
|
||||
@ -331,10 +331,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0667vf0zglacry87nkcl3ns8421aydvz71vfa3g3yjhiq8zh19f5";
|
||||
sha256 = "07lq26b86giy3ha3fhrywk9r1ajhc2pm2mzj657jnpnbj1i6g17a";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.22.2";
|
||||
version = "5.22.3";
|
||||
};
|
||||
mutex_m = {
|
||||
groups = ["default"];
|
||||
@ -352,10 +352,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "173zavvxlwyi48lfskk48wcrdbkvjlhjhvy4jpcrfx72rpjjx4k8";
|
||||
sha256 = "0j72sg8n8834vbw2x8glcp46y5r2dls2pj64ll7rmf6mri9s52j9";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.16.2";
|
||||
version = "1.16.3";
|
||||
};
|
||||
pathutil = {
|
||||
dependencies = ["forwardable-extended"];
|
||||
@ -434,20 +434,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1fkfa0iq3r9b0zzrxpxha17avmyzci3kidzmfbf6fd1279mndpb0";
|
||||
sha256 = "1zd1pdldi6h8x27dqim7cy8m69xr01aw5c8k1zhkz497n4np6wgk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.0";
|
||||
};
|
||||
ruby2_keywords = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.0.5";
|
||||
version = "4.2.1";
|
||||
};
|
||||
safe_yaml = {
|
||||
groups = ["default"];
|
||||
@ -465,10 +455,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1ccqqkmicqs2nbawyknb17qfafwqq0k6jxibcm86vqd1jp185pxa";
|
||||
sha256 = "0bixk8c02dhflvhi4s5hxzjg8akzgicvjxjvxx74nah2j8qfblq5";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.71.1";
|
||||
version = "1.72.0";
|
||||
};
|
||||
terminal-table = {
|
||||
dependencies = ["unicode-display_width"];
|
||||
|
@ -14,7 +14,7 @@ GEM
|
||||
addressable (2.8.6)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
base64 (0.2.0)
|
||||
bigdecimal (3.1.6)
|
||||
bigdecimal (3.1.7)
|
||||
classifier-reborn (2.3.0)
|
||||
fast-stemmer (~> 1.0)
|
||||
matrix (~> 0.4)
|
||||
@ -26,8 +26,7 @@ GEM
|
||||
colorator (1.1.0)
|
||||
concurrent-ruby (1.2.3)
|
||||
connection_pool (2.4.1)
|
||||
drb (2.2.0)
|
||||
ruby2_keywords
|
||||
drb (2.2.1)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
@ -41,12 +40,13 @@ GEM
|
||||
ffi (1.16.3)
|
||||
forwardable-extended (2.6.0)
|
||||
gemoji (4.1.0)
|
||||
google-protobuf (3.25.3)
|
||||
google-protobuf (4.26.1)
|
||||
rake (>= 13)
|
||||
html-pipeline (2.14.3)
|
||||
activesupport (>= 2)
|
||||
nokogiri (>= 1.4)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (1.14.1)
|
||||
i18n (1.14.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (4.3.3)
|
||||
addressable (~> 2.4)
|
||||
@ -81,7 +81,7 @@ GEM
|
||||
html-pipeline (~> 2.3)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-paginate (1.1.0)
|
||||
jekyll-polyglot (1.7.0)
|
||||
jekyll-polyglot (1.8.0)
|
||||
jekyll (>= 4.0, >= 3.0)
|
||||
jekyll-redirect-from (0.16.0)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
@ -114,14 +114,14 @@ GEM
|
||||
mercenary (0.4.0)
|
||||
mime-types (3.5.2)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2024.0206)
|
||||
mime-types-data (3.2024.0305)
|
||||
mini_magick (4.12.0)
|
||||
mini_portile2 (2.8.5)
|
||||
minitest (5.22.2)
|
||||
minitest (5.22.3)
|
||||
mutex_m (0.2.0)
|
||||
net-http (0.4.1)
|
||||
uri
|
||||
nokogiri (1.16.2)
|
||||
nokogiri (1.16.3)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
octokit (4.25.1)
|
||||
@ -137,14 +137,13 @@ GEM
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rdoc (6.6.2)
|
||||
rdoc (6.6.3.1)
|
||||
psych (>= 4.0.0)
|
||||
rexml (3.2.6)
|
||||
rouge (4.2.0)
|
||||
ruby2_keywords (0.0.5)
|
||||
rouge (4.2.1)
|
||||
safe_yaml (1.0.5)
|
||||
sass-embedded (1.71.1)
|
||||
google-protobuf (~> 3.25)
|
||||
sass-embedded (1.72.0)
|
||||
google-protobuf (>= 3.25, < 5.0)
|
||||
rake (>= 13.0.0)
|
||||
sawyer (0.9.2)
|
||||
addressable (>= 2.3.5)
|
||||
|
@ -36,10 +36,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "00db5v09k1z3539g1zrk7vkjrln9967k08adh6qx33ng97a2gg5w";
|
||||
sha256 = "0cq1c29zbkcxgdihqisirhcw76xc768z2zpd5vbccpq0l1lv76g7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.1.6";
|
||||
version = "3.1.7";
|
||||
};
|
||||
classifier-reborn = {
|
||||
dependencies = ["fast-stemmer" "matrix"];
|
||||
@ -126,15 +126,14 @@
|
||||
version = "2.4.1";
|
||||
};
|
||||
drb = {
|
||||
dependencies = ["ruby2_keywords"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "03ylflxbp9jrs1hx3d4wvx05yb9hdq4a0r706zz6qc6kvqfazr79";
|
||||
sha256 = "0h5kbj9hvg5hb3c7l425zpds0vb42phvln2knab8nmazg2zp5m79";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.2.0";
|
||||
version = "2.2.1";
|
||||
};
|
||||
em-websocket = {
|
||||
dependencies = ["eventmachine" "http_parser.rb"];
|
||||
@ -242,14 +241,15 @@
|
||||
version = "4.1.0";
|
||||
};
|
||||
google-protobuf = {
|
||||
dependencies = ["rake"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r";
|
||||
sha256 = "14s40yxj35vixx9pvpnbrkz9z7ga3m7vcy72yll1flnn3cirl1aj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.25.3";
|
||||
version = "4.26.1";
|
||||
};
|
||||
html-pipeline = {
|
||||
dependencies = ["activesupport" "nokogiri"];
|
||||
@ -278,10 +278,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx";
|
||||
sha256 = "0lbm33fpb3w06wd2231sg58dwlwgjsvym93m548ajvl6s3mfvpn7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.14.1";
|
||||
version = "1.14.4";
|
||||
};
|
||||
jekyll = {
|
||||
dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table" "webrick"];
|
||||
@ -376,10 +376,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "189scj27hczbxp02s5v27r4civfqq2fr981jrp0xldwvcw5qfbll";
|
||||
sha256 = "0xbmsm30jgpbamqvbjvjgfq2w9ihdpqsbay9jrd5pljrbhvy02di";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.7.0";
|
||||
version = "1.8.0";
|
||||
};
|
||||
jekyll-redirect-from = {
|
||||
dependencies = ["jekyll"];
|
||||
@ -584,10 +584,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0zpn5brxdf5akh7ij511bkrd30fxd7697shmxxszahqj9m62zvn5";
|
||||
sha256 = "00x7w5xqsj9m33v3vkmy23wipkkysafksib53ypzn27p5g81w455";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2024.0206";
|
||||
version = "3.2024.0305";
|
||||
};
|
||||
mini_magick = {
|
||||
groups = ["default"];
|
||||
@ -614,10 +614,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0667vf0zglacry87nkcl3ns8421aydvz71vfa3g3yjhiq8zh19f5";
|
||||
sha256 = "07lq26b86giy3ha3fhrywk9r1ajhc2pm2mzj657jnpnbj1i6g17a";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.22.2";
|
||||
version = "5.22.3";
|
||||
};
|
||||
mutex_m = {
|
||||
groups = ["default"];
|
||||
@ -646,10 +646,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "173zavvxlwyi48lfskk48wcrdbkvjlhjhvy4jpcrfx72rpjjx4k8";
|
||||
sha256 = "0j72sg8n8834vbw2x8glcp46y5r2dls2pj64ll7rmf6mri9s52j9";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.16.2";
|
||||
version = "1.16.3";
|
||||
};
|
||||
octokit = {
|
||||
dependencies = ["faraday" "sawyer"];
|
||||
@ -741,10 +741,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "14wnrpd1kl43ynk1wwwgv9avsw84d1lrvlfyrjy3d4h7h7ndnqzp";
|
||||
sha256 = "0ib3cnf4yllvw070gr4bz94sbmqx3haqc5f846fsvdcs494vgxrr";
|
||||
type = "gem";
|
||||
};
|
||||
version = "6.6.2";
|
||||
version = "6.6.3.1";
|
||||
};
|
||||
rexml = {
|
||||
groups = ["default"];
|
||||
@ -761,20 +761,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1fkfa0iq3r9b0zzrxpxha17avmyzci3kidzmfbf6fd1279mndpb0";
|
||||
sha256 = "1zd1pdldi6h8x27dqim7cy8m69xr01aw5c8k1zhkz497n4np6wgk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.0";
|
||||
};
|
||||
ruby2_keywords = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.0.5";
|
||||
version = "4.2.1";
|
||||
};
|
||||
safe_yaml = {
|
||||
groups = ["default"];
|
||||
@ -792,10 +782,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1ccqqkmicqs2nbawyknb17qfafwqq0k6jxibcm86vqd1jp185pxa";
|
||||
sha256 = "0bixk8c02dhflvhi4s5hxzjg8akzgicvjxjvxx74nah2j8qfblq5";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.71.1";
|
||||
version = "1.72.0";
|
||||
};
|
||||
sawyer = {
|
||||
dependencies = ["addressable" "faraday"];
|
||||
|
@ -6,13 +6,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "johnny-reborn-engine";
|
||||
version = "0.30";
|
||||
version = "0.34";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xesf";
|
||||
repo = "jc_reborn";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-n3ELNFvjeDzbamyQIdM9mf/A1sstuhCGzrL9NuXf90Y=";
|
||||
hash = "sha256-JXaYSHpow7Pzy+ATEinET9ffvPIkOmlylnerZJnMUjY=";
|
||||
};
|
||||
|
||||
buildInputs = [ SDL2 ];
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "kubedb-cli";
|
||||
version = "0.42.1";
|
||||
version = "0.44.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kubedb";
|
||||
repo = "cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-i+0oQaEHMu3525mJTQyL+Me2DPFSpaIK1xGaPMR2M0s=";
|
||||
sha256 = "sha256-ppsGSzgJvAHRGs6PGPNgE7nDbK8SPYBPNbAlGwocAZs=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
@ -1,16 +1,16 @@
|
||||
{ buildGoModule, lib, fetchFromGitHub }:
|
||||
buildGoModule rec {
|
||||
pname = "tfswitch";
|
||||
version = "0.13.1308";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "warrensbox";
|
||||
repo = "terraform-switcher";
|
||||
rev = version;
|
||||
sha256 = "sha256-EyA7LwfL3vCNzd2wpyUbrUnvkM0/f7/cQp+jcAcGZsg=";
|
||||
sha256 = "sha256-zUFnJCYh6XM0HiET45ZRa/ESS/n3XdYKkUJuLiDDRAg=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-NX+vzI/Fa/n9ZQjpESes4fNVAmKlA1rqPwSKsL2GEUY=";
|
||||
vendorHash = "sha256-DsC9djgt7Er2m2TacUldpJP43jC0IBklPnu41Saf4DY=";
|
||||
|
||||
# Disable tests since it requires network access and relies on the
|
||||
# presence of release.hashicorp.com
|
||||
|
@ -10,16 +10,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "werf";
|
||||
version = "1.2.300";
|
||||
version = "1.2.301";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "werf";
|
||||
repo = "werf";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-DWSjdgLjVJHlcXa6QV2KzASFQkCpUDSrtYpx/oa+Ff4=";
|
||||
hash = "sha256-w7gHcHXvCWGzIiq4NvKjha/gs7W8fmNnZPe99lHstIg=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-o/s3JZe/lO6smCXVs0ZzOTqGt7ikgTsC4Wo2O9fALe8=";
|
||||
vendorHash = "sha256-pPWX9KtWDgJrQKt9PX1gb0v/DCop8lOxJyAjFZr3RpI=";
|
||||
|
||||
proxyVendor = true;
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"version" = "1.11.61";
|
||||
"version" = "1.11.63";
|
||||
"hashes" = {
|
||||
"desktopSrcHash" = "sha256-1Pq26e2ngcji7wieHNOQAWPFBKGLoeTRAKQ3Aqnn1jw=";
|
||||
"desktopYarnHash" = "16psxfai8dyckm4xwrg5czv6l4163x2nlqqcdgly6axabllgacj1";
|
||||
"webSrcHash" = "sha256-RJhZgwTMDLMt+ha0lxPwqiP5sipXIcGZfdPVgCxePH4=";
|
||||
"webYarnHash" = "1vj3f2bml8jyjz6djzvw1hbrv7148wk8y9hwp323zf8n6y4rnk28";
|
||||
"desktopSrcHash" = "sha256-wQSFnF3HzERW4iS5leHP2LZKrJkTPW+LUgmj5b0/KZk=";
|
||||
"desktopYarnHash" = "003d44psrw09dldvp9lfhsnipmcy1fwbicsvmd48mg7n3vnrg0zw";
|
||||
"webSrcHash" = "sha256-FjYDwXa+7Lx/K0AERn64mPbjp0QFIoVoYMPx/mG4Zrs=";
|
||||
"webYarnHash" = "0n7z9y3141rx0c5476zw3ccfck0f4b2jwsaxmq2ff7spwyw81zd2";
|
||||
};
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
{ stdenv, lib, writeScript, qt5, fetchurl, autoPatchelfHook, dpkg, glibc, cpio, xar, undmg, gtk3, pango, libxcb }:
|
||||
let
|
||||
pname = "synology-drive-client";
|
||||
baseUrl = "https://global.download.synology.com/download/Utility/SynologyDriveClient";
|
||||
version = "3.3.0-15082";
|
||||
baseUrl = "https://global.synologydownload.com/download/Utility/SynologyDriveClient";
|
||||
version = "3.4.0-15724";
|
||||
buildNumber = with lib; last (splitString "-" version);
|
||||
meta = with lib; {
|
||||
description = "Desktop application to synchronize files and folders between the computer and the Synology Drive server.";
|
||||
@ -29,8 +29,8 @@ let
|
||||
inherit pname version meta passthru;
|
||||
|
||||
src = fetchurl {
|
||||
url = "${baseUrl}/${version}/Ubuntu/Installer/x86_64/synology-drive-client-${buildNumber}.x86_64.deb";
|
||||
sha256 = "sha256-ha3KRpEIT7w6pUVUwZV011W1F/v/hNq9f3ArfzU0ZGc=";
|
||||
url = "${baseUrl}/${version}/Ubuntu/Installer/synology-drive-client-${buildNumber}.x86_64.deb";
|
||||
sha256 = "sha256-Zf6JMghXy8ODbR4MhVSPmD4QDu003MTc7YNfbiRVRoY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook dpkg ];
|
||||
@ -60,7 +60,7 @@ let
|
||||
|
||||
src = fetchurl {
|
||||
url = "${baseUrl}/${version}/Mac/Installer/synology-drive-client-${buildNumber}.dmg";
|
||||
sha256 = "sha256-dxmpB31ZjO1uAnAbY13OjVR81CCDLf9vJC20iZaPZJ4=";
|
||||
sha256 = "sha256-65mZeRYHGl+n9TeTx7bxRrGPjcZiV9UlyfcCZ3GwOhE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cpio xar undmg ];
|
||||
|
@ -1,86 +0,0 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchurl
|
||||
, autoPatchelfHook
|
||||
, wrapGAppsHook
|
||||
, makeWrapper
|
||||
, gnome
|
||||
, libsecret
|
||||
, git
|
||||
, curl
|
||||
, nss
|
||||
, nspr
|
||||
, xorg
|
||||
, libdrm
|
||||
, alsa-lib
|
||||
, cups
|
||||
, mesa
|
||||
, systemd
|
||||
, openssl
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "github-desktop";
|
||||
version = "3.3.6";
|
||||
rcversion = "3";
|
||||
arch = "amd64";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/shiftkey/desktop/releases/download/release-${finalAttrs.version}-linux${finalAttrs.rcversion}/GitHubDesktop-linux-${finalAttrs.arch}-${finalAttrs.version}-linux${finalAttrs.rcversion}.deb";
|
||||
hash = "sha256-900JhfHN78CuAXptPX2ToTvT9E+g+xRXqmlm34J9l6k=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
(wrapGAppsHook.override { inherit makeWrapper; })
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gnome.gnome-keyring
|
||||
xorg.libXdamage
|
||||
xorg.libX11
|
||||
libsecret
|
||||
git
|
||||
curl
|
||||
nss
|
||||
nspr
|
||||
libdrm
|
||||
alsa-lib
|
||||
cups
|
||||
mesa
|
||||
openssl
|
||||
];
|
||||
|
||||
unpackPhase = ''
|
||||
mkdir -p $TMP/${finalAttrs.pname} $out/{opt,bin}
|
||||
cp $src $TMP/${finalAttrs.pname}.deb
|
||||
ar vx ${finalAttrs.pname}.deb
|
||||
tar --no-overwrite-dir -xvf data.tar.xz -C $TMP/${finalAttrs.pname}/
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cp -R $TMP/${finalAttrs.pname}/usr/share $out/
|
||||
cp -R $TMP/${finalAttrs.pname}/usr/lib/${finalAttrs.pname}/* $out/opt/
|
||||
ln -sf $out/opt/${finalAttrs.pname} $out/bin/${finalAttrs.pname}
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland}}"
|
||||
)
|
||||
'';
|
||||
|
||||
runtimeDependencies = [
|
||||
(lib.getLib systemd)
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "GUI for managing Git and GitHub.";
|
||||
homepage = "https://desktop.github.com/";
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ dan4ik605743 ];
|
||||
platforms = lib.platforms.linux;
|
||||
mainProgram = "github-desktop";
|
||||
};
|
||||
})
|
@ -24,6 +24,10 @@ buildPythonPackage rec {
|
||||
|
||||
propagatedBuildInputs = [ more-itertools click ];
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/hyprshade --set HYPRSHADE_SHADERS_DIR $out/share/hyprshade/shaders
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/loqusion/hyprshade";
|
||||
description = "Hyprland shade configuration tool";
|
||||
|
@ -53,7 +53,12 @@ rec {
|
||||
mkdir -p $out/outputs
|
||||
cp -r ./* $out/outputs/
|
||||
runHook postCheckpointInstall
|
||||
unset postPhases
|
||||
'';
|
||||
|
||||
dontFixup = true;
|
||||
doInstallCheck = false;
|
||||
doDist = false;
|
||||
});
|
||||
|
||||
/* Build a derivation based on the checkpoint output generated by
|
||||
|
10650
pkgs/by-name/da/davis/composer.lock
generated
Normal file
10650
pkgs/by-name/da/davis/composer.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
78
pkgs/by-name/da/davis/davis-data.patch
Normal file
78
pkgs/by-name/da/davis/davis-data.patch
Normal file
@ -0,0 +1,78 @@
|
||||
diff --git a/bin/console b/bin/console
|
||||
index 8fe9d49..3af9662 100755
|
||||
--- a/bin/console
|
||||
+++ b/bin/console
|
||||
@@ -1,5 +1,8 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
+if (getenv('ENV_DIR') !== false) {
|
||||
+ $_SERVER['APP_RUNTIME_OPTIONS']['dotenv_path'] = getenv('ENV_DIR').'/.env';
|
||||
+}
|
||||
|
||||
use App\Kernel;
|
||||
use Symfony\Bundle\FrameworkBundle\Console\Application;
|
||||
@@ -28,7 +31,11 @@ if ($input->hasParameterOption('--no-debug', true)) {
|
||||
putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0');
|
||||
}
|
||||
|
||||
-(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
|
||||
+if (getenv('ENV_DIR') !== false) {
|
||||
+ (new Dotenv())->bootEnv(getenv('ENV_DIR').'/.env');
|
||||
+} else {
|
||||
+ (new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
|
||||
+}
|
||||
|
||||
if ($_SERVER['APP_DEBUG']) {
|
||||
umask(0000);
|
||||
diff --git a/public/index.php b/public/index.php
|
||||
index 3f8b90e..c57ec21 100644
|
||||
--- a/public/index.php
|
||||
+++ b/public/index.php
|
||||
@@ -1,5 +1,9 @@
|
||||
<?php
|
||||
|
||||
+if (getenv('ENV_DIR') !== false) {
|
||||
+ $_SERVER['APP_RUNTIME_OPTIONS']['dotenv_path'] = getenv('ENV_DIR').'/.env';
|
||||
+}
|
||||
+
|
||||
use App\Kernel;
|
||||
use Symfony\Component\Dotenv\Dotenv;
|
||||
use Symfony\Component\ErrorHandler\Debug;
|
||||
@@ -7,7 +11,11 @@ use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
require dirname(__DIR__).'/vendor/autoload.php';
|
||||
|
||||
-(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
|
||||
+if (getenv('ENV_DIR') !== false) {
|
||||
+ (new Dotenv())->bootEnv(getenv('ENV_DIR').'/.env');
|
||||
+} else {
|
||||
+ (new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
|
||||
+}
|
||||
|
||||
if ($_SERVER['APP_DEBUG']) {
|
||||
umask(0000);
|
||||
diff --git a/src/Kernel.php b/src/Kernel.php
|
||||
index 0f43d2f..8863f2c 100644
|
||||
--- a/src/Kernel.php
|
||||
+++ b/src/Kernel.php
|
||||
@@ -49,4 +49,20 @@ class Kernel extends BaseKernel
|
||||
(require $path)($routes->withPath($path), $this);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ public function getCacheDir(): string
|
||||
+ {
|
||||
+ if (getenv('CACHE_DIR') !== false) {
|
||||
+ return getenv('CACHE_DIR') . '/' . $this->getEnvironment();
|
||||
+ }
|
||||
+ return parent::getCacheDir();
|
||||
+ }
|
||||
+
|
||||
+ public function getLogDir(): string
|
||||
+ {
|
||||
+ if (getenv('LOG_DIR') !== false) {
|
||||
+ return getenv('LOG_DIR') . '/' . $this->getEnvironment();
|
||||
+ }
|
||||
+ return parent::getLogDir();
|
||||
+ }
|
||||
}
|
41
pkgs/by-name/da/davis/package.nix
Normal file
41
pkgs/by-name/da/davis/package.nix
Normal file
@ -0,0 +1,41 @@
|
||||
{ lib, fetchFromGitHub, php, }:
|
||||
|
||||
php.buildComposerProject (finalAttrs: {
|
||||
pname = "davis";
|
||||
version = "4.4.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tchapi";
|
||||
repo = "davis";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-UBekmxKs4dveHh866Ix8UzY2NL6ygb8CKor+V3Cblns=";
|
||||
};
|
||||
|
||||
composerLock = ./composer.lock;
|
||||
vendorHash = "sha256-WGeNwBRzfUXa7kPIwd7/5dPXDjaBxXirAJcm6lNzueY=";
|
||||
|
||||
patches = [
|
||||
# Symfony loads .env files from the same directory as composer.json
|
||||
# The .env files contain runtime configuration that shouldn't be baked into deriviation for the package
|
||||
# This patch adds a few extension points exposing three environment variables:
|
||||
# RUNTIME_DIRECTORY (where to load .env from), CACHE_DIRECTORY and LOG_DIRECTORY (symfony cache and log rw directories)
|
||||
# Upstream PR https://github.com/tchapi/davis/issues/154
|
||||
./davis-data.patch
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
# Only include the files needed for runtime in the derivation
|
||||
mv $out/share/php/${finalAttrs.pname}/{migrations,public,src,config,bin,templates,tests,translations,vendor,symfony.lock,composer.json,composer.lock} $out
|
||||
# Save the upstream .env file for reference, but rename it so it is not loaded
|
||||
mv $out/share/php/${finalAttrs.pname}/.env $out/env-upstream
|
||||
rm -rf "$out/share"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/tchapi/davis/releases/tag/v${finalAttrs.version}";
|
||||
homepage = "https://github.com/tchapi/davis";
|
||||
description = "A simple CardDav and CalDav server inspired by Baïkal";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ ramblurr ];
|
||||
};
|
||||
})
|
15
pkgs/by-name/fl/flye/aarch64-fix.patch
Normal file
15
pkgs/by-name/fl/flye/aarch64-fix.patch
Normal file
@ -0,0 +1,15 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 75f62aed..91b9571b 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -16,6 +16,10 @@ ifeq ($(shell uname -m),arm64)
|
||||
export aarch64=1
|
||||
endif
|
||||
|
||||
+ifeq ($(shell uname -m),aarch64)
|
||||
+ export aarch64=1
|
||||
+endif
|
||||
+
|
||||
.PHONY: clean all profile debug minimap2 samtools
|
||||
|
||||
.DEFAULT_GOAL := all
|
51
pkgs/by-name/fl/flye/package.nix
Normal file
51
pkgs/by-name/fl/flye/package.nix
Normal file
@ -0,0 +1,51 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, python3Packages
|
||||
, zlib
|
||||
, curl
|
||||
, libdeflate
|
||||
, bash
|
||||
, coreutils
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "flye";
|
||||
version = "2.9.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fenderglass";
|
||||
repo = "flye";
|
||||
rev = version;
|
||||
hash = "sha256-IALqtIPmvDYoH4w/tk2WB/P/pAcKXxgnsu9PFp+wIes=";
|
||||
};
|
||||
|
||||
nativeCheckInputs = [ python3Packages.pytestCheckHook ];
|
||||
|
||||
propagatedBuildInputs = [ coreutils ];
|
||||
|
||||
buildInputs = [
|
||||
zlib
|
||||
curl
|
||||
libdeflate
|
||||
];
|
||||
|
||||
patches = [ ./aarch64-fix.patch ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace flye/polishing/alignment.py \
|
||||
--replace-fail "/bin/bash" "${lib.getExe bash}"
|
||||
|
||||
substituteInPlace flye/tests/test_toy.py \
|
||||
--replace-fail "find_executable(\"flye" "find_executable(\"$out/bin/flye" \
|
||||
--replace-fail "[\"flye" "[\"$out/bin/flye"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "De novo assembler for single molecule sequencing reads using repeat graphs";
|
||||
homepage = "https://github.com/fenderglass/Flye";
|
||||
license = licenses.bsd3;
|
||||
platforms = platforms.unix;
|
||||
mainProgram = "flye";
|
||||
maintainers = with maintainers; [ assistant ];
|
||||
};
|
||||
}
|
101
pkgs/by-name/gi/github-desktop/package.nix
Normal file
101
pkgs/by-name/gi/github-desktop/package.nix
Normal file
@ -0,0 +1,101 @@
|
||||
{ stdenvNoCC
|
||||
, lib
|
||||
, fetchurl
|
||||
, autoPatchelfHook
|
||||
, wrapGAppsHook
|
||||
, makeWrapper
|
||||
, gnome
|
||||
, libsecret
|
||||
, git
|
||||
, curl
|
||||
, nss
|
||||
, nspr
|
||||
, xorg
|
||||
, libdrm
|
||||
, alsa-lib
|
||||
, cups
|
||||
, mesa
|
||||
, systemd
|
||||
, openssl
|
||||
}:
|
||||
|
||||
let
|
||||
rcversion = "2";
|
||||
in
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "github-desktop";
|
||||
version = "3.3.12";
|
||||
|
||||
src =
|
||||
let
|
||||
urls = {
|
||||
"x86_64-linux" = {
|
||||
url = "https://github.com/shiftkey/desktop/releases/download/release-${finalAttrs.version}-linux${rcversion}/GitHubDesktop-linux-amd64-${finalAttrs.version}-linux${rcversion}.deb";
|
||||
hash = "sha256-iflKD7NPuZvhxviNW8xmtCOYgdRz1rXiG42ycWCjXiY=";
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
url = "https://github.com/shiftkey/desktop/releases/download/release-${finalAttrs.version}-linux${rcversion}/GitHubDesktop-linux-arm64-${finalAttrs.version}-linux${rcversion}.deb";
|
||||
hash = "sha256-C9eCvuf/TwXQiYjZ88xSiyaqi8+cppmrLiSYTyQCkmg=";
|
||||
};
|
||||
};
|
||||
in
|
||||
fetchurl urls."${stdenvNoCC.hostPlatform.system}" or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}");
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
(wrapGAppsHook.override { inherit makeWrapper; })
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gnome.gnome-keyring
|
||||
xorg.libXdamage
|
||||
xorg.libX11
|
||||
libsecret
|
||||
git
|
||||
curl
|
||||
nss
|
||||
nspr
|
||||
libdrm
|
||||
alsa-lib
|
||||
cups
|
||||
mesa
|
||||
openssl
|
||||
];
|
||||
|
||||
unpackPhase = ''
|
||||
runHook preUnpack
|
||||
mkdir -p $TMP/github-desktop $out/{opt,bin}
|
||||
cp $src $TMP/github-desktop.deb
|
||||
ar vx github-desktop.deb
|
||||
tar --no-overwrite-dir -xvf data.tar.xz -C $TMP/github-desktop/
|
||||
runHook postUnpack
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
cp -R $TMP/github-desktop/usr/share $out/
|
||||
cp -R $TMP/github-desktop/usr/lib/github-desktop/* $out/opt/
|
||||
ln -sf $out/opt/github-desktop $out/bin/github-desktop
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland}}"
|
||||
)
|
||||
'';
|
||||
|
||||
runtimeDependencies = [
|
||||
(lib.getLib systemd)
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "GUI for managing Git and GitHub.";
|
||||
homepage = "https://desktop.github.com/";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "github-desktop";
|
||||
maintainers = with lib.maintainers; [ dan4ik605743 ];
|
||||
platforms = lib.platforms.linux;
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
};
|
||||
})
|
@ -18,6 +18,13 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
doCheck = true;
|
||||
|
||||
doInstallCheck = true;
|
||||
|
||||
# Give hello some install checks for testing purpose.
|
||||
postInstallCheck = ''
|
||||
stat "''${!outputBin}/bin/${finalAttrs.meta.mainProgram}"
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
version = testers.testVersion { package = hello; };
|
||||
|
||||
|
@ -14,14 +14,14 @@
|
||||
let buildToxAV = !stdenv.isAarch32;
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "libtoxcore";
|
||||
version = "0.2.18";
|
||||
version = "0.2.19";
|
||||
|
||||
src =
|
||||
# We need the prepared sources tarball.
|
||||
fetchurl {
|
||||
url =
|
||||
"https://github.com/TokTok/c-toxcore/releases/download/v${version}/c-toxcore-${version}.tar.gz";
|
||||
sha256 = "sha256-8pQFN5mIY1k+KLxqa19W8JZ19s2KKDJre8MbSDbAiUI=";
|
||||
sha256 = "sha256-i0GPZHDbCFz1mpkVaFYTVWVW3yv0JxSPGBS3sRhihZQ=";
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
@ -51,11 +51,11 @@ in stdenv.mkDerivation rec {
|
||||
# We might be getting the wrong pkg-config file anyway:
|
||||
# https://github.com/TokTok/c-toxcore/issues/2334
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "P2P FOSS instant messaging application aimed to replace Skype";
|
||||
homepage = "https://tox.chat";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ peterhoeg ehmry ];
|
||||
platforms = platforms.all;
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [ peterhoeg ehmry ];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
37
pkgs/by-name/ne/nerdfetch/package.nix
Normal file
37
pkgs/by-name/ne/nerdfetch/package.nix
Normal file
@ -0,0 +1,37 @@
|
||||
{ lib
|
||||
, stdenvNoCC
|
||||
, fetchFromGitHub
|
||||
, gitUpdater
|
||||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "nerdfetch";
|
||||
version = "8.1.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ThatOneCalculator";
|
||||
repo = "NerdFetch";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-mSRS7MUgaa14mgPYkbC4O1/gXxbyDKOiVCRgoh8He/c=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp $src/nerdfetch $out/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = gitUpdater {
|
||||
rev-prefix = "v";
|
||||
};
|
||||
|
||||
meta = with lib;{
|
||||
description = "A POSIX *nix (Linux, macOS, Android, *BSD, etc) fetch script using Nerdfonts";
|
||||
homepage = "https://github.com/ThatOneCalculator/NerdFetch";
|
||||
maintainers = with maintainers; [ ByteSudoer ];
|
||||
license = licenses.mit;
|
||||
mainProgram = "nerdfetch";
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
})
|
@ -7,11 +7,11 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "quarkus-cli";
|
||||
version = "3.8.3";
|
||||
version = "3.9.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/quarkusio/quarkus/releases/download/${finalAttrs.version}/quarkus-cli-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-+HUVnd21q2xln58UR1QS0UFCjlY0sbf79ZkvWbRCH7Q=";
|
||||
hash = "sha256-qWlg6ZferLAy3TOyFe7Dhy102GzISGpB08Dwy8JFxSk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
@ -11,13 +11,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "raft-cowsql";
|
||||
version = "0.22.0";
|
||||
version = "0.22.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cowsql";
|
||||
repo = "raft";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-kd0PD45+CenlfRMp5O48uELyZ2gEtasCe7xNEzsKU+M=";
|
||||
hash = "sha256-aGw/ATu8Xdjfqa0qWg8Sld9PKCmQsMtZhuNBwagER7M=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkg-config ];
|
||||
|
@ -1,76 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitLab,
|
||||
cargo,
|
||||
desktop-file-utils,
|
||||
meson,
|
||||
ninja,
|
||||
pkg-config,
|
||||
rustPlatform,
|
||||
rustc,
|
||||
wrapGAppsHook4,
|
||||
cairo,
|
||||
gdk-pixbuf,
|
||||
glib,
|
||||
gtk4,
|
||||
libadwaita,
|
||||
pango,
|
||||
darwin,
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "railway-travel";
|
||||
version = "2.4.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "schmiddi-on-mobile";
|
||||
repo = "railway";
|
||||
rev = version;
|
||||
hash = "sha256-2iLxErEP0OG+BcG7fvJBzNjh95EkNoC3NC7rKxPLhYk=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
name = "${pname}-${version}";
|
||||
hash = "sha256-yalFC7Pw9rq1ylLwoxLi4joTyjQsZJ/ZC61GhTNc49w=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
desktop-file-utils
|
||||
cargo
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
rustPlatform.cargoSetupHook
|
||||
rustc
|
||||
wrapGAppsHook4
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
[
|
||||
cairo
|
||||
gdk-pixbuf
|
||||
glib
|
||||
gtk4
|
||||
libadwaita
|
||||
pango
|
||||
]
|
||||
++ lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.Foundation
|
||||
darwin.apple_sdk.frameworks.Security
|
||||
];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = toString (
|
||||
lib.optionals stdenv.cc.isClang [ "-Wno-error=incompatible-function-pointer-types" ]
|
||||
);
|
||||
|
||||
meta = with lib; {
|
||||
description = "Find all your travel information";
|
||||
homepage = "https://gitlab.com/schmiddi-on-mobile/railway";
|
||||
changelog = "https://gitlab.com/schmiddi-on-mobile/railway/-/blob/${src.rev}/CHANGELOG.md";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ lilacious ];
|
||||
mainProgram = "diebahn";
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
@ -4,13 +4,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "toxic";
|
||||
version = "0.11.3";
|
||||
version = "0.15.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Tox";
|
||||
owner = "TokTok";
|
||||
repo = "toxic";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-BabRY9iu5ccEXo5POrWkWaIWAeQU4MVlMK8I+Iju6aQ=";
|
||||
sha256 = "sha256-+nOjlQED2pbYwGV6IGeKK1pymBSrDVWCWKjZ42vib7E=";
|
||||
};
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)"];
|
||||
@ -23,11 +23,12 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
nativeBuildInputs = [ pkg-config libconfig ];
|
||||
|
||||
meta = with lib; src.meta // {
|
||||
meta = src.meta // {
|
||||
description = "Reference CLI for Tox";
|
||||
mainProgram = "toxic";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ ehmry ];
|
||||
platforms = platforms.linux;
|
||||
homepage = "https://github.com/TokTok/toxic";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ ehmry ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
@ -7,13 +7,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "vcpkg";
|
||||
version = "2024.03.19";
|
||||
version = "2024.03.25";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "microsoft";
|
||||
repo = "vcpkg";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-861r4XsXCyxUVDlSrekZ+g17td+idUN8qJmmTZNDzow=";
|
||||
hash = "sha256-HMK3sebq/9TuxHQ75+5UIMvN09cPWmq7TFBBwRY4X7o=";
|
||||
};
|
||||
|
||||
installPhase = let
|
||||
|
33
pkgs/by-name/wh/whatfiles/package.nix
Normal file
33
pkgs/by-name/wh/whatfiles/package.nix
Normal file
@ -0,0 +1,33 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "whatfiles";
|
||||
version = "1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "spieglt";
|
||||
repo = "whatfiles";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-5Ju9g7/B9uxLkQzV/MN3vBkjve4EAMseO6K4HTAoS/o=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm755 bin/whatfiles $out/bin/whatfiles
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Log what files are accessed by any Linux process";
|
||||
homepage = "https://github.com/spieglt/whatfiles";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ azahi ];
|
||||
platforms = platforms.linux;
|
||||
mainProgram = "whatfiles";
|
||||
};
|
||||
}
|
@ -5,8 +5,11 @@ stdenvNoCC.mkDerivation rec {
|
||||
version = "unstable-2016-08-01"; # date in the zip file, actual creation date unknown
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://fontlibrary.org/assets/downloads/u001/3ea00b3c0c8fa6ce4373e5766fafd651/u001.zip";
|
||||
sha256 = "sha256-7H32pfr0g68XP5B48VUY99e6fbd7rhH6fEnCKNXWEkU=";
|
||||
urls = [
|
||||
"https://fontlibrary.org/assets/downloads/u001/3ea00b3c0c8fa6ce4373e5766fafd651/u001.zip"
|
||||
"https://web.archive.org/web/20220830085803/https://fontlibrary.org/assets/downloads/u001/3ea00b3c0c8fa6ce4373e5766fafd651/u001.zip"
|
||||
];
|
||||
hash = "sha256-7H32pfr0g68XP5B48VUY99e6fbd7rhH6fEnCKNXWEkU=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
@ -3,12 +3,12 @@
|
||||
let
|
||||
generator = pkgsBuildBuild.buildGoModule rec {
|
||||
pname = "v2ray-domain-list-community";
|
||||
version = "20240316051411";
|
||||
version = "20240324094850";
|
||||
src = fetchFromGitHub {
|
||||
owner = "v2fly";
|
||||
repo = "domain-list-community";
|
||||
rev = version;
|
||||
hash = "sha256-wao//QAdEqxkyKSVgC2eJqtQlPQ7IXG88atUSjQIGcI=";
|
||||
hash = "sha256-Fdb0Bk0dk0SkBmUdeBjMH8/++fDvw1GtiKCYXdVAfCc=";
|
||||
};
|
||||
vendorHash = "sha256-azvMUi8eLNoNofRa2X4SKTTiMd6aOyO6H/rOiKjkpIY=";
|
||||
meta = with lib; {
|
||||
|
17
pkgs/data/themes/catppuccin-gtk/colloid-src-git-reset.patch
Normal file
17
pkgs/data/themes/catppuccin-gtk/colloid-src-git-reset.patch
Normal file
@ -0,0 +1,17 @@
|
||||
diff --git a/scripts/create_theme.py b/scripts/create_theme.py
|
||||
index 074dc43..7e7a8eb 100644
|
||||
--- a/scripts/create_theme.py
|
||||
+++ b/scripts/create_theme.py
|
||||
@@ -34,7 +34,11 @@ def create_theme(types: List[str], accents: List[str], dest: str, link: bool = F
|
||||
os.chdir(work_dir)
|
||||
subprocess.call("./build.sh", shell=True) # Rebuild all scss
|
||||
subprocess.call(install_cmd, shell=True) # Install the theme globally for you
|
||||
- subprocess.call("git reset --hard HEAD", shell=True) # reset colloid repo to original state
|
||||
+ # subprocess.call("git reset --hard HEAD", shell=True) # reset colloid repo to original state
|
||||
+ # recreate git reset
|
||||
+ os.chdir(repo_dir)
|
||||
+ shutil.rmtree("colloid")
|
||||
+ shutil.copytree("colloid-base", "colloid")
|
||||
|
||||
try:
|
||||
# Rename colloid generated files as per catppuccin
|
@ -40,6 +40,10 @@ stdenvNoCC.mkDerivation rec {
|
||||
|
||||
nativeBuildInputs = [ gtk3 sassc ];
|
||||
|
||||
patches = [
|
||||
./colloid-src-git-reset.patch
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gnome-themes-extra
|
||||
(python3.withPackages (ps: [ ps.catppuccin ]))
|
||||
@ -54,7 +58,7 @@ stdenvNoCC.mkDerivation rec {
|
||||
'';
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs --build colloid/install.sh
|
||||
patchShebangs --build colloid/install.sh colloid/build.sh
|
||||
'';
|
||||
|
||||
dontConfigure = true;
|
||||
@ -63,6 +67,7 @@ stdenvNoCC.mkDerivation rec {
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
cp -r colloid colloid-base
|
||||
mkdir -p $out/share/themes
|
||||
export HOME=$(mktemp -d)
|
||||
|
||||
|
@ -3,12 +3,12 @@
|
||||
stdenv.mkDerivation {
|
||||
pname = "cakelisp";
|
||||
# using unstable as it's the only version that builds against gcc-13
|
||||
version = "0.3.0-unstable-2024-02-21";
|
||||
version = "0.3.0-unstable-2024-03-21";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://macoy.me/code/macoy/cakelisp";
|
||||
rev = "75ce620b265bf83c6952c0093df2b9d4f7f32a54";
|
||||
hash = "sha256-X+tWq2QQogy4d042pcVuldc80jcClYtV09Jr91rHJl4=";
|
||||
rev = "6bde4b8002e4825116f3b18291a012bf1729f497";
|
||||
hash = "sha256-jpwVHiDRVa6QoYxsasmiV1IdbBqZj0tU5EBruOHfzYg=";
|
||||
};
|
||||
|
||||
buildInputs = [ gcc ];
|
||||
|
@ -55,7 +55,7 @@ let
|
||||
|
||||
in rec {
|
||||
# Maint version
|
||||
perl536 = callPackage ./intepreter.nix {
|
||||
perl536 = callPackage ./interpreter.nix {
|
||||
self = perl536;
|
||||
version = "5.36.3";
|
||||
sha256 = "sha256-8qGtiBFjkaF2Ji3ULfxS7yKvtA9MDpgQ8V1WHm8ccmo=";
|
||||
@ -63,7 +63,7 @@ in rec {
|
||||
};
|
||||
|
||||
# Maint version
|
||||
perl538 = callPackage ./intepreter.nix {
|
||||
perl538 = callPackage ./interpreter.nix {
|
||||
self = perl538;
|
||||
version = "5.38.2";
|
||||
sha256 = "sha256-oKMVNEUet7g8fWWUpJdUOlTUiLyQygD140diV39AZV4=";
|
||||
|
@ -18,13 +18,13 @@
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "libfive";
|
||||
version = "0-unstable-2024-02-14";
|
||||
version = "0-unstable-2024-03-28";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libfive";
|
||||
repo = "libfive";
|
||||
rev = "7af5f43684a8a497ac8610d39f7fca935364a9b9";
|
||||
hash = "sha256-GQzsHKeKsCWKOVfBrTuUFq2XasPxhsN+19stWY0WtVc=";
|
||||
rev = "4c59b11667bbe8be9802f59697fa64bbfe1ea82d";
|
||||
hash = "sha256-scYSprozfC537vAXhMfWswyS3xivpoURWPhplH7yHIg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ wrapQtAppsHook cmake ninja pkg-config python.pkgs.pythonImportsCheckHook ];
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "elementpath";
|
||||
version = "4.3.0";
|
||||
version = "4.4.0";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
@ -16,7 +16,7 @@ buildPythonPackage rec {
|
||||
owner = "sissaschool";
|
||||
repo = "elementpath";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-DE8XAZwYzbYaTJoBNqHR0x4Wigmke+/zgj562X391qM=";
|
||||
hash = "sha256-n1Ps0CybeLeDR5E4UnqmSkbFe0SXyplomEGDchAweSY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "frozendict";
|
||||
version = "2.4.0";
|
||||
version = "2.4.1";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
@ -17,7 +17,7 @@ buildPythonPackage rec {
|
||||
owner = "Marco-Sulla";
|
||||
repo = "python-frozendict";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-mC5udKWez1s9JiVthtzCwEUPLheJpxRmcL3KdRiYP18=";
|
||||
hash = "sha256-cPDuJ6AzMxOmJztSf6IZ04acJhjJCphQSl0DaN9cChI=";
|
||||
};
|
||||
|
||||
# build C version if it exists
|
||||
|
@ -13,21 +13,21 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "google-cloud-securitycenter";
|
||||
version = "1.29.0";
|
||||
version = "1.30.0";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-4c7tuLxO3+B8ZojVpSKWcl35doqoqHrofY6n80t9UrY=";
|
||||
hash = "sha256-Tq+Uicfk1SqvisYEdBfREngICvWP8NyFJy4hJp9qD8Y=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
build-system = [
|
||||
setuptools
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dependencies = [
|
||||
grpc-google-iam-v1
|
||||
google-api-core
|
||||
proto-plus
|
||||
|
@ -17,14 +17,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "imbalanced-learn";
|
||||
version = "0.12.0";
|
||||
version = "0.12.2";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-uczZqqMChpkHnUOm1Nn8nQOfVTdnM7Mfh8fZsSXcwWU=";
|
||||
hash = "sha256-qAxWztywcSTyZr5i06XSq1tXeZCac0P98bmTR5Zi9sE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "plexapi";
|
||||
version = "4.15.10";
|
||||
version = "4.15.11";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
@ -19,14 +19,14 @@ buildPythonPackage rec {
|
||||
owner = "pkkid";
|
||||
repo = "python-plexapi";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-3qvAf3oray3Fm3No6ixv/D1mY4lipt5pixgpyXNCRoc=";
|
||||
hash = "sha256-OPhmw7nCe0n7VLekXeB5PiLdBk2DPmLoQ1nZiGEwqis=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
build-system = [
|
||||
setuptools
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dependencies = [
|
||||
requests
|
||||
tqdm
|
||||
websocket-client
|
||||
|
@ -17,19 +17,19 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pytest-mypy-plugins";
|
||||
version = "3.1.1";
|
||||
version = "3.1.2";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "typeddjango";
|
||||
repo = "pytest-mypy-plugins";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-kZbTCdZM+809yFkKWMpeyBOq6hcqcYk7rEYqee9hZwk=";
|
||||
hash = "sha256-yme1g9Kj5guao0Lf8mbkNJRw6ipS2Wd4Io1cSlEBAGo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
build-system = [
|
||||
setuptools
|
||||
];
|
||||
|
||||
@ -37,7 +37,7 @@ buildPythonPackage rec {
|
||||
pytest
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dependencies = [
|
||||
decorator
|
||||
jinja2
|
||||
jsonschema
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "testcontainers";
|
||||
version = "4.2.0";
|
||||
version = "4.3.0";
|
||||
disabled = pythonOlder "3.9";
|
||||
|
||||
pyproject = true;
|
||||
@ -19,7 +19,7 @@ buildPythonPackage rec {
|
||||
owner = "testcontainers";
|
||||
repo = "testcontainers-python";
|
||||
rev = "refs/tags/testcontainers-v${version}";
|
||||
hash = "sha256-vHCrfeL3fPLZQgH7nlugIlADQaBbUQKsTBFhhq7kYWQ=";
|
||||
hash = "sha256-eCoGMfd4gNuPY1rRRK5LH2BI236ZiZ0igTZDALuHevk=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -33,7 +33,7 @@ stdenv.mkDerivation {
|
||||
# of the nix store -- but ekam builds capnp locally and links against it,
|
||||
# so that causes the build to fail. So, we turn this off.
|
||||
#
|
||||
# See: https://nixos.wiki/wiki/Development_environment_with_nix-shell#Troubleshooting
|
||||
# See: https://wiki.nixos.org/wiki/Development_environment_with_nix-shell#Troubleshooting
|
||||
preBuild = ''
|
||||
unset NIX_ENFORCE_PURITY
|
||||
'';
|
||||
|
@ -6,15 +6,15 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "conftest";
|
||||
version = "0.50.0";
|
||||
version = "0.51.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "open-policy-agent";
|
||||
repo = "conftest";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-DqZl16CQR88n5etJvX+5wxpOQsyWq/UWjJou23pjpWk=";
|
||||
hash = "sha256-1jMVb1Hip7ljmt4WtFg3Qa2/rse2sjISTe3SUS5UCTo=";
|
||||
};
|
||||
vendorHash = "sha256-9afq6ccgiaeZqyM3Le1NQ0ADB/wmBW+qdT+uVtbARC8=";
|
||||
vendorHash = "sha256-Yw5p2mTTkYvRjeuF9owirohyClSS3j1gKVg8Ma2NIa8=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
@ -16,7 +16,7 @@ buildGoModule rec {
|
||||
|
||||
subPackages = [ "cmd/migrate" ];
|
||||
|
||||
tags = [ "postgres" "mysql" "redshift" "cassandra" "spanner" "cockroachdb" "clickhouse" "mongodb" "sqlserver" "firebird" "neo4j" "pgx" ];
|
||||
tags = [ "cassandra" "clickhouse" "cockroachdb" "crate" "firebird" "mongodb" "multistmt" "mysql" "neo4j" "pgx" "postgres" "ql" "redshift" "rqlite" "shell" "snowflake" "spanner" "sqlite3" "sqlserver" "stub" "testing" "yugabytedb" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/golang-migrate/migrate";
|
||||
|
@ -42,7 +42,7 @@ let
|
||||
else "${k}=${builtins.toJSON v}");
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "godot";
|
||||
pname = "godot4";
|
||||
version = "4.2.1-stable";
|
||||
commitHash = "b09f793f564a6c95dc76acc654b390e68441bd01";
|
||||
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "golangci-lint";
|
||||
version = "1.57.1";
|
||||
version = "1.57.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "golangci";
|
||||
repo = "golangci-lint";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-CDk0lmspteeewLzvixjIJr16M8Ko8uSgdnJZfJ1SqOA=";
|
||||
hash = "sha256-d3U56fRIyntj/uKTOHuKFvOZqh+6VtzYrbKDjcKzhbI=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-lBRVnsttq6M9gyZfV4I/EOwsp6yGARCSYYefRvZvHEA=";
|
||||
vendorHash = "sha256-3gS/F1jcjegtkLfmPcBzYqDA4KmwABkKpPAhTxqguYw=";
|
||||
|
||||
subPackages = [ "cmd/golangci-lint" ];
|
||||
|
||||
|
@ -5,16 +5,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "act";
|
||||
version = "0.2.60";
|
||||
version = "0.2.61";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nektos";
|
||||
repo = pname;
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-FFSnxxqKAFYPuX4NJahiBS65Goj6se2U5WdPiKpNXDo=";
|
||||
hash = "sha256-X2Um6z3BXhshNGTwih/mvXigCplzUr+mVOn0SZ7RESA=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-FLomnHVhpvbM+O3OGwjXfrtTVbegnzry8Sl+4a3uw08=";
|
||||
vendorHash = "sha256-HtCHAMcTFQS8YWjWt9LEHkhZBE8XDF4YOcGBFv0e5l0=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
@ -8,16 +8,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "oxlint";
|
||||
version = "0.2.14";
|
||||
version = "0.2.15";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "web-infra-dev";
|
||||
repo = "oxc";
|
||||
rev = "oxlint_v${version}";
|
||||
hash = "sha256-nIY80YWZpDJSFkPLMBjXyk2SYx2tnVhFrxiBrYFu/e4=";
|
||||
hash = "sha256-hEN9TLIeAfMGO/PL5OcT7+H0dmoCtH+dcIEafpQ45UU=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-BRrF0Ad6tbN+xajzPhDHP7ZJPbruRrcdwjZBFukMKfs=";
|
||||
cargoHash = "sha256-uChoDlU0tb52pBBEqmmwhCS83pykFRpXRFSuUGquHEQ=";
|
||||
|
||||
buildInputs = [
|
||||
rust-jemalloc-sys
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "templ";
|
||||
version = "0.2.646";
|
||||
version = "0.2.648";
|
||||
|
||||
subPackages = [ "cmd/templ" ];
|
||||
|
||||
@ -21,7 +21,7 @@ buildGoModule rec {
|
||||
owner = "a-h";
|
||||
repo = "templ";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-ocuDWdIHL4Ub1ybWBScg4ysTRQdvCxlod0TNuJFDA4o=";
|
||||
hash = "sha256-9Co3yvfy8X69PIffPg2lDjVCVTjDhiFnSsJd4MQ6cf4=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Upd5Wq4ajsyOMDiAWS2g2iNO1sm1XJc43AFQLIo5eDM=";
|
||||
|
@ -1,13 +0,0 @@
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index fcbe50c..27d4c30 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -1390,7 +1390,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tokio-console"
|
||||
-version = "0.1.8"
|
||||
+version = "0.1.9"
|
||||
dependencies = [
|
||||
"atty",
|
||||
"clap",
|
@ -1,25 +1,27 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, installShellFiles
|
||||
, rustPlatform
|
||||
, protobuf
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "tokio-console";
|
||||
version = "0.1.9";
|
||||
version = "0.1.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tokio-rs";
|
||||
repo = "console";
|
||||
rev = "tokio-console-v${version}";
|
||||
hash = "sha256-zISgEhUmAfHErq4AelbnSwtKjtxYH//pbLUAlPKxQYk=";
|
||||
hash = "sha256-sjfdxOeaNANYJuJMjZ/tCGc2mWM+98d8yPHAVSl4cF4=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-qK8U6BZN7sdBP8CbzsDeewsGulNA/KFVS9vscBxysRg=";
|
||||
cargoHash = "sha256-86KQpRpYSCQs6SUeG0HV26b58x/QUyovoL+5fg8JCOI=";
|
||||
|
||||
nativeBuildInputs = [ protobuf ];
|
||||
|
||||
cargoPatches = [ ./cargo-lock.patch ];
|
||||
nativeBuildInputs = [
|
||||
installShellFiles
|
||||
protobuf
|
||||
];
|
||||
|
||||
# uses currently unstable tokio features
|
||||
RUSTFLAGS = "--cfg tokio_unstable";
|
||||
@ -31,6 +33,13 @@ rustPlatform.buildRustPackage rec {
|
||||
"--skip config::tests::toml_example_changed"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
installShellCompletion --cmd tokio-console \
|
||||
--bash <($out/bin/tokio-console --log-dir $(mktemp -d) gen-completion bash) \
|
||||
--fish <($out/bin/tokio-console --log-dir $(mktemp -d) gen-completion fish) \
|
||||
--zsh <($out/bin/tokio-console --log-dir $(mktemp -d) gen-completion zsh)
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A debugger for asynchronous Rust code";
|
||||
homepage = "https://github.com/tokio-rs/console";
|
||||
|
@ -100,7 +100,7 @@ in rec {
|
||||
) (builtins.attrNames pkgConfig);
|
||||
|
||||
# build-time JSON generation to avoid IFD
|
||||
# see https://nixos.wiki/wiki/Import_From_Derivation
|
||||
# see https://wiki.nixos.org/wiki/Import_From_Derivation
|
||||
workspaceJSON = pkgs.runCommand "${name}-workspace-package.json"
|
||||
{
|
||||
nativeBuildInputs = [ pkgs.jq ];
|
||||
|
@ -12,7 +12,7 @@
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
version = "1.0.35";
|
||||
version = "1.0.36";
|
||||
pname = "bun";
|
||||
|
||||
src = passthru.sources.${stdenvNoCC.hostPlatform.system} or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}");
|
||||
@ -51,19 +51,19 @@ stdenvNoCC.mkDerivation rec {
|
||||
sources = {
|
||||
"aarch64-darwin" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-aarch64.zip";
|
||||
hash = "sha256-QuCd2l5PNz2pJzKrzy5Zvd9MbAsTu9HzdBulyBvSUok=";
|
||||
hash = "sha256-NYsCwYdYL8cw5uPaViCA+fcaP1znNzvRCJuhnFixx84=";
|
||||
};
|
||||
"aarch64-linux" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-aarch64.zip";
|
||||
hash = "sha256-rxXkCViPgJiSNhlaNQMGcurONhXXK7shrLD0Zk1pLmw=";
|
||||
hash = "sha256-ztRE4MxrAkSvORTGU5veDj5qhchYbsY4BxP6duZLeoQ=";
|
||||
};
|
||||
"x86_64-darwin" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-x64.zip";
|
||||
hash = "sha256-eS9s6acf1AxzFkeb/RskuJ1pXdiv52WpP7cEKTEXPEo=";
|
||||
hash = "sha256-p8YqXW1iShvTX2bB0UrD9yh5PMpcaoiUJ5ZfCrEZmsI=";
|
||||
};
|
||||
"x86_64-linux" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-x64.zip";
|
||||
hash = "sha256-I7fqIhMs/2N9pcxJf5ED4p0kq+rQPnfYGOciAd+6mXU=";
|
||||
hash = "sha256-+AR0EYOVOgvElDzQjCtlCg5oZFBtLfdEmrL1jFWDAfQ=";
|
||||
};
|
||||
};
|
||||
updateScript = writeShellScript "update-bun" ''
|
||||
|
@ -3,22 +3,22 @@
|
||||
let
|
||||
pname = "anki-bin";
|
||||
# Update hashes for both Linux and Darwin!
|
||||
version = "23.12.1";
|
||||
version = "24.04";
|
||||
|
||||
sources = {
|
||||
linux = fetchurl {
|
||||
url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-linux-qt6.tar.zst";
|
||||
sha256 = "sha256-bFtAUqSoFS8CWESiepWXywndkijATbWp6CJdqlQecuk=";
|
||||
sha256 = "sha256-mIQ448ecBDrMo3qspXVOBJM/0LebJ9lA1JIwz70Uqhc=";
|
||||
};
|
||||
|
||||
# For some reason anki distributes completely separate dmg-files for the aarch64 version and the x86_64 version
|
||||
darwin-x86_64 = fetchurl {
|
||||
url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-mac-intel-qt6.dmg";
|
||||
sha256 = "sha256-z48REB14p7rb50ty9u/26wx0sY4QZb4pj6wOXsSBCdg=";
|
||||
sha256 = "sha256-ab8cc+QMt3ZJp1NZmAwz2VNZwWQK0DBPKnz2fGmC7Fs=";
|
||||
};
|
||||
darwin-aarch64 = fetchurl {
|
||||
url = "https://github.com/ankitects/anki/releases/download/${version}/anki-${version}-mac-apple-qt6.dmg";
|
||||
sha256 = "sha256-bdaCqSjje86wmVKIFZqzuFaEZ7SWQr7CAS/Hm1CpOMg=";
|
||||
sha256 = "sha256-bRpPVOXpDRq+EXwW1yWiAgzkcdLhLnMrHo/t9Jgzth0=";
|
||||
};
|
||||
};
|
||||
|
||||
@ -60,7 +60,7 @@ let
|
||||
'';
|
||||
|
||||
# Dependencies of anki
|
||||
targetPkgs = pkgs: (with pkgs; [ xorg.libxkbfile xcb-util-cursor-HEAD krb5 ]);
|
||||
targetPkgs = pkgs: (with pkgs; [ xorg.libxkbfile xcb-util-cursor-HEAD krb5 zstd ]);
|
||||
|
||||
runScript = writeShellScript "anki-wrapper.sh" ''
|
||||
exec ${unpacked}/bin/anki ${ lib.strings.escapeShellArgs commandLineArgs } "$@"
|
||||
|
@ -29,13 +29,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "widelands";
|
||||
version = "1.1";
|
||||
version = "1.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "widelands";
|
||||
repo = "widelands";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-fe1fey34b6T1+kqMa22STROu7dagQJtg24nW2jhVix8=";
|
||||
sha256 = "sha256-V7eappIMEQMNbf9EGQhv71Fwz0wH679ifi/qAHWwMNU=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@ -45,6 +45,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
cmakeFlags = [
|
||||
"-Wno-dev" # dev warnings are only needed for upstream development
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
"-DWL_INSTALL_BASEDIR=${placeholder "out"}/share/widelands" # for COPYING, Changelog, etc.
|
||||
"-DWL_INSTALL_DATADIR=${placeholder "out"}/share/widelands" # for game data
|
||||
"-DWL_INSTALL_BINDIR=${placeholder "out"}/bin"
|
||||
@ -92,7 +93,7 @@ stdenv.mkDerivation rec {
|
||||
Settlers II". It has a single player campaign mode, as well as a networked
|
||||
multiplayer mode.
|
||||
'';
|
||||
changelog = "https://github.com/widelands/widelands/releases/tag/v1.1";
|
||||
changelog = "https://github.com/widelands/widelands/releases/tag/v${version}";
|
||||
mainProgram = "widelands";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ raskin jcumming ];
|
||||
|
@ -125,9 +125,9 @@
|
||||
"hash": "sha256-2dz0Ncoy1J8kG5EWyzWa2TrQ8KsgZ/bkG5VaeDTY4bo="
|
||||
},
|
||||
"kwin": {
|
||||
"version": "6.0.3",
|
||||
"url": "mirror://kde/stable/plasma/6.0.3/kwin-6.0.3.tar.xz",
|
||||
"hash": "sha256-D0bnds1Qg3TFUsClpVpFvyj5zMyIcAiQCYVKETTXKnk="
|
||||
"version": "6.0.3.1",
|
||||
"url": "mirror://kde/stable/plasma/6.0.3/kwin-6.0.3.1.tar.xz",
|
||||
"hash": "sha256-8VEIqZMga5YqPFg1uYigtJIsCpvJq4D69rNqM00yGzM="
|
||||
},
|
||||
"kwrited": {
|
||||
"version": "6.0.3",
|
||||
@ -215,9 +215,9 @@
|
||||
"hash": "sha256-W+t3hNEk2eoQjwCAQ6k8g3wHVz9byK/PkhbutGRK/Yo="
|
||||
},
|
||||
"plasma-mobile": {
|
||||
"version": "6.0.3",
|
||||
"url": "mirror://kde/stable/plasma/6.0.3/plasma-mobile-6.0.3.tar.xz",
|
||||
"hash": "sha256-oHgh272xMZYdoTidGyR2xsdASVTU50mAw9+nUyF5+Xo="
|
||||
"version": "6.0.3.1",
|
||||
"url": "mirror://kde/stable/plasma/6.0.3/plasma-mobile-6.0.3.1.tar.xz",
|
||||
"hash": "sha256-pIkzv+U5s3JOxKP4JwW54SF4MwhgNA1nd4riCmU224M="
|
||||
},
|
||||
"plasma-nano": {
|
||||
"version": "6.0.3",
|
||||
|
@ -2,22 +2,6 @@ diff --git a/board/raspberrypi/rpi/rpi.env b/board/raspberrypi/rpi/rpi.env
|
||||
index 30228285ed..0327ef74fa 100644
|
||||
--- a/board/raspberrypi/rpi/rpi.env
|
||||
+++ b/board/raspberrypi/rpi/rpi.env
|
||||
@@ -55,11 +55,11 @@ dfu_alt_info+=zImage fat 0 1
|
||||
* more than ~700M away from the start of the kernel image but this number can
|
||||
* be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line
|
||||
* parameter given to the kernel. So reserving memory from low to high
|
||||
- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for
|
||||
- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000.
|
||||
+ * satisfies this constraint again. Reserving 1M at 0x04700000-0x04800000 for
|
||||
+ * the DTB leaves rest of the free RAM to the initrd starting at 0x04800000.
|
||||
* Even with the smallest possible CPU-GPU memory split of the CPU getting
|
||||
- * only 64M, the remaining 25M starting at 0x02700000 should allow quite
|
||||
- * large initrds before they start colliding with U-Boot.
|
||||
+ * only 64M, the remaining 8M starting at 0x04800000 should allow reasonably
|
||||
+ * sized initrds before they start colliding with U-Boot.
|
||||
*/
|
||||
#ifdef CONFIG_ARM64
|
||||
fdt_high=ffffffffffffffff
|
||||
@@ -69,9 +69,9 @@ fdt_high=ffffffff
|
||||
initrd_high=ffffffff
|
||||
#endif
|
||||
@ -26,10 +10,10 @@ index 30228285ed..0327ef74fa 100644
|
||||
-pxefile_addr_r=0x02500000
|
||||
-fdt_addr_r=0x02600000
|
||||
-ramdisk_addr_r=0x02700000
|
||||
+scriptaddr=0x04500000
|
||||
+pxefile_addr_r=0x04600000
|
||||
+fdt_addr_r=0x04700000
|
||||
+ramdisk_addr_r=0x04800000
|
||||
+scriptaddr=0x05500000
|
||||
+pxefile_addr_r=0x05600000
|
||||
+fdt_addr_r=0x05700000
|
||||
+ramdisk_addr_r=0x05800000
|
||||
|
||||
boot_targets=mmc usb pxe dhcp
|
||||
|
||||
|
@ -1,904 +1,77 @@
|
||||
{ stdenv, lib, stdenvNoCC
|
||||
, makeScopeWithSplicing', generateSplicesForMkScope
|
||||
, buildPackages
|
||||
, bsdSetupHook, makeSetupHook
|
||||
, fetchgit, fetchzip, coreutils, groff, mandoc, byacc, flex, which, m4, gawk, substituteAll, runtimeShell
|
||||
, zlib, expat, libmd
|
||||
, runCommand, writeShellScript, writeText, symlinkJoin
|
||||
, fetchgit, fetchzip
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (buildPackages.buildPackages) rsync;
|
||||
|
||||
versions = builtins.fromJSON (builtins.readFile ./versions.json);
|
||||
|
||||
version = "13.1.0";
|
||||
|
||||
# `BuildPackages.fetchgit` avoids some probably splicing-caused infinite
|
||||
# recursion.
|
||||
freebsdSrc = buildPackages.fetchgit {
|
||||
url = "https://git.FreeBSD.org/src.git";
|
||||
rev = "release/${version}";
|
||||
sha256 = "14nhk0kls83xfb64d5xy14vpi6k8laswjycjg80indq9pkcr2rlv";
|
||||
};
|
||||
|
||||
freebsdSetupHook = makeSetupHook {
|
||||
name = "freebsd-setup-hook";
|
||||
} ./setup-hook.sh;
|
||||
|
||||
mkBsdArch = stdenv': {
|
||||
x86_64 = "amd64";
|
||||
aarch64 = "arm64";
|
||||
i486 = "i386";
|
||||
i586 = "i386";
|
||||
i686 = "i386";
|
||||
}.${stdenv'.hostPlatform.parsed.cpu.name}
|
||||
or stdenv'.hostPlatform.parsed.cpu.name;
|
||||
|
||||
install-wrapper = ''
|
||||
set -eu
|
||||
|
||||
args=()
|
||||
declare -i path_args=0
|
||||
|
||||
while (( $# )); do
|
||||
if (( $# == 1 )); then
|
||||
if (( path_args > 1)) || [[ "$1" = */ ]]; then
|
||||
mkdir -p "$1"
|
||||
else
|
||||
mkdir -p "$(dirname "$1")"
|
||||
fi
|
||||
fi
|
||||
case $1 in
|
||||
-C) ;;
|
||||
-o | -g) shift ;;
|
||||
-s) ;;
|
||||
-m | -l)
|
||||
# handle next arg so not counted as path arg
|
||||
args+=("$1" "$2")
|
||||
shift
|
||||
;;
|
||||
-*) args+=("$1") ;;
|
||||
*)
|
||||
path_args+=1
|
||||
args+=("$1")
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
'';
|
||||
branch = "release/${version}";
|
||||
|
||||
in makeScopeWithSplicing' {
|
||||
otherSplices = generateSplicesForMkScope "freebsd";
|
||||
f = (self: let
|
||||
inherit (self) mkDerivation;
|
||||
in {
|
||||
inherit freebsdSrc;
|
||||
f = (self: lib.packagesFromDirectoryRecursive {
|
||||
callPackage = self.callPackage;
|
||||
directory = ./pkgs;
|
||||
} // {
|
||||
sourceData = versions.${branch};
|
||||
|
||||
ports = fetchzip {
|
||||
url = "https://cgit.freebsd.org/ports/snapshot/ports-dde3b2b456c3a4bdd217d0bf3684231cc3724a0a.tar.gz";
|
||||
sha256 = "BpHqJfnGOeTE7tkFJBx0Wk8ryalmf4KNTit/Coh026E=";
|
||||
};
|
||||
|
||||
# Why do we have splicing and yet do `nativeBuildInputs = with self; ...`?
|
||||
# See note in ../netbsd/default.nix.
|
||||
|
||||
compatIfNeeded = lib.optional (!stdenvNoCC.hostPlatform.isFreeBSD) self.compat;
|
||||
|
||||
mkDerivation = lib.makeOverridable (attrs: let
|
||||
stdenv' = if attrs.noCC or false then stdenvNoCC else stdenv;
|
||||
in stdenv'.mkDerivation (rec {
|
||||
pname = "${attrs.pname or (baseNameOf attrs.path)}-freebsd";
|
||||
inherit version;
|
||||
src = runCommand "${pname}-filtered-src" {
|
||||
nativeBuildInputs = [ rsync ];
|
||||
} ''
|
||||
for p in ${lib.concatStringsSep " " ([ attrs.path ] ++ attrs.extraPaths or [])}; do
|
||||
set -x
|
||||
path="$out/$p"
|
||||
mkdir -p "$(dirname "$path")"
|
||||
src_path="${freebsdSrc}/$p"
|
||||
if [[ -d "$src_path" ]]; then src_path+=/; fi
|
||||
rsync --chmod="+w" -r "$src_path" "$path"
|
||||
set +x
|
||||
done
|
||||
'';
|
||||
|
||||
extraPaths = [ ];
|
||||
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal
|
||||
install tsort lorder mandoc groff #statHook
|
||||
];
|
||||
buildInputs = with self; compatIfNeeded;
|
||||
|
||||
HOST_SH = stdenv'.shell;
|
||||
|
||||
# Since STRIP below is the flag
|
||||
STRIPBIN = "${stdenv.cc.bintools.targetPrefix}strip";
|
||||
|
||||
makeFlags = [
|
||||
"STRIP=-s" # flag to install, not command
|
||||
] ++ lib.optional (!stdenv.hostPlatform.isFreeBSD) "MK_WERROR=no";
|
||||
|
||||
# amd64 not x86_64 for this on unlike NetBSD
|
||||
MACHINE_ARCH = mkBsdArch stdenv';
|
||||
|
||||
MACHINE = mkBsdArch stdenv';
|
||||
|
||||
MACHINE_CPUARCH = MACHINE_ARCH;
|
||||
|
||||
COMPONENT_PATH = attrs.path or null;
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
meta = with lib; {
|
||||
maintainers = with maintainers; [ ericson2314 ];
|
||||
platforms = platforms.unix;
|
||||
license = licenses.bsd2;
|
||||
ports = fetchzip {
|
||||
url = "https://cgit.freebsd.org/ports/snapshot/ports-dde3b2b456c3a4bdd217d0bf3684231cc3724a0a.tar.gz";
|
||||
sha256 = "BpHqJfnGOeTE7tkFJBx0Wk8ryalmf4KNTit/Coh026E=";
|
||||
};
|
||||
} // lib.optionalAttrs stdenv'.hasCC {
|
||||
# TODO should CC wrapper set this?
|
||||
CPP = "${stdenv'.cc.targetPrefix}cpp";
|
||||
} // lib.optionalAttrs stdenv'.isDarwin {
|
||||
MKRELRO = "no";
|
||||
} // lib.optionalAttrs (stdenv'.cc.isClang or false) {
|
||||
HAVE_LLVM = lib.versions.major (lib.getVersion stdenv'.cc.cc);
|
||||
} // lib.optionalAttrs (stdenv'.cc.isGNU or false) {
|
||||
HAVE_GCC = lib.versions.major (lib.getVersion stdenv'.cc.cc);
|
||||
} // lib.optionalAttrs (stdenv'.isx86_32) {
|
||||
USE_SSP = "no";
|
||||
} // lib.optionalAttrs (attrs.headersOnly or false) {
|
||||
installPhase = "includesPhase";
|
||||
dontBuild = true;
|
||||
} // attrs));
|
||||
|
||||
##
|
||||
## START BOOTSTRAPPING
|
||||
##
|
||||
makeMinimal = mkDerivation rec {
|
||||
inherit (self.make) path;
|
||||
# Why do we have splicing and yet do `nativeBuildInputs = with self; ...`?
|
||||
# See note in ../netbsd/default.nix.
|
||||
|
||||
buildInputs = with self; [];
|
||||
nativeBuildInputs = with buildPackages.netbsd; [ bsdSetupHook freebsdSetupHook ];
|
||||
compatIfNeeded = lib.optional (!stdenvNoCC.hostPlatform.isFreeBSD) self.compat;
|
||||
|
||||
skipIncludesPhase = true;
|
||||
freebsd-lib = import ./lib { inherit version; };
|
||||
|
||||
makeFlags = [];
|
||||
# Overridden arguments avoid cross package-set splicing issues,
|
||||
# otherwise would just use implicit
|
||||
# `lib.packagesFromDirectoryRecursive` auto-call.
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs configure
|
||||
${self.make.postPatch}
|
||||
'';
|
||||
compat = self.callPackage ./pkgs/compat/package.nix {
|
||||
inherit stdenv;
|
||||
inherit (buildPackages.freebsd) makeMinimal boot-install;
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
csu = self.callPackage ./pkgs/csu.nix {
|
||||
inherit (buildPackages.freebsd) makeMinimal install gencat;
|
||||
inherit (self) include;
|
||||
};
|
||||
|
||||
sh ./make-bootstrap.sh
|
||||
include = self.callPackage ./pkgs/include/package.nix {
|
||||
inherit (buildPackages.freebsd) makeMinimal install rpcgen;
|
||||
};
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
install = self.callPackage ./pkgs/install.nix {
|
||||
inherit (buildPackages.freebsd) makeMinimal;
|
||||
inherit (self) mtree libnetbsd;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
libc = self.callPackage ./pkgs/libc/package.nix {
|
||||
inherit (buildPackages.freebsd) makeMinimal install gencat rpcgen;
|
||||
inherit (self) csu include;
|
||||
};
|
||||
|
||||
install -D bmake "$out/bin/bmake"
|
||||
ln -s "$out/bin/bmake" "$out/bin/make"
|
||||
mkdir -p "$out/share"
|
||||
cp -r "$BSDSRCDIR/share/mk" "$out/share/mk"
|
||||
find "$out/share/mk" -type f -print0 |
|
||||
while IFS= read -r -d "" f; do
|
||||
substituteInPlace "$f" --replace 'usr/' ""
|
||||
done
|
||||
substituteInPlace "$out/share/mk/bsd.symver.mk" \
|
||||
--replace '/share/mk' "$out/share/mk"
|
||||
libnetbsd = self.callPackage ./pkgs/libnetbsd/package.nix {
|
||||
inherit (buildPackages.freebsd) makeMinimal;
|
||||
};
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
mkDerivation = self.callPackage ./pkgs/mkDerivation.nix {
|
||||
inherit stdenv;
|
||||
inherit (buildPackages.freebsd) makeMinimal install tsort;
|
||||
};
|
||||
|
||||
postInstall = lib.optionalString (!stdenv.targetPlatform.isFreeBSD) ''
|
||||
boot_mk="$BSDSRCDIR/tools/build/mk"
|
||||
cp "$boot_mk"/Makefile.boot* "$out/share/mk"
|
||||
replaced_mk="$out/share/mk.orig"
|
||||
mkdir "$replaced_mk"
|
||||
mv "$out"/share/mk/bsd.{lib,prog}.mk "$replaced_mk"
|
||||
for m in bsd.{lib,prog}.mk; do
|
||||
cp "$boot_mk/$m" "$out/share/mk"
|
||||
substituteInPlace "$out/share/mk/$m" --replace '../../../share/mk' '../mk.orig'
|
||||
done
|
||||
'';
|
||||
makeMinimal = self.callPackage ./pkgs/makeMinimal.nix {
|
||||
inherit (self) make;
|
||||
};
|
||||
|
||||
extraPaths = with self; make.extraPaths;
|
||||
};
|
||||
|
||||
# Wrap NetBSD's install
|
||||
boot-install = buildPackages.writeShellScriptBin "boot-install" (install-wrapper + ''
|
||||
|
||||
${buildPackages.netbsd.install}/bin/xinstall "''${args[@]}"
|
||||
'');
|
||||
|
||||
compat = mkDerivation rec {
|
||||
pname = "compat";
|
||||
path = "tools/build";
|
||||
extraPaths = [
|
||||
"lib/libc/db"
|
||||
"lib/libc/stdlib" # getopt
|
||||
"lib/libc/gen" # getcap
|
||||
"lib/libc/locale" # rpmatch
|
||||
] ++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
"lib/libc/string" # strlcpy
|
||||
"lib/libutil"
|
||||
] ++ [
|
||||
"contrib/libc-pwcache"
|
||||
"contrib/libc-vis"
|
||||
"sys/libkern"
|
||||
"sys/kern/subr_capability.c"
|
||||
|
||||
# Take only individual headers, or else we will clobber native libc, etc.
|
||||
|
||||
"sys/rpc/types.h"
|
||||
|
||||
# Listed in Makekfile as INC
|
||||
"include/mpool.h"
|
||||
"include/ndbm.h"
|
||||
"include/err.h"
|
||||
"include/stringlist.h"
|
||||
"include/a.out.h"
|
||||
"include/nlist.h"
|
||||
"include/db.h"
|
||||
"include/getopt.h"
|
||||
"include/nl_types.h"
|
||||
"include/elf.h"
|
||||
"sys/sys/ctf.h"
|
||||
|
||||
# Listed in Makekfile as SYSINC
|
||||
|
||||
"sys/sys/capsicum.h"
|
||||
"sys/sys/caprights.h"
|
||||
"sys/sys/imgact_aout.h"
|
||||
"sys/sys/nlist_aout.h"
|
||||
"sys/sys/nv.h"
|
||||
"sys/sys/dnv.h"
|
||||
"sys/sys/cnv.h"
|
||||
|
||||
"sys/sys/elf32.h"
|
||||
"sys/sys/elf64.h"
|
||||
"sys/sys/elf_common.h"
|
||||
"sys/sys/elf_generic.h"
|
||||
"sys/${mkBsdArch stdenv}/include"
|
||||
] ++ lib.optionals stdenv.hostPlatform.isx86 [
|
||||
"sys/x86/include"
|
||||
] ++ [
|
||||
|
||||
"sys/sys/queue.h"
|
||||
"sys/sys/md5.h"
|
||||
"sys/sys/sbuf.h"
|
||||
"sys/sys/tree.h"
|
||||
"sys/sys/font.h"
|
||||
"sys/sys/consio.h"
|
||||
"sys/sys/fnv_hash.h"
|
||||
|
||||
"sys/crypto/chacha20/_chacha.h"
|
||||
"sys/crypto/chacha20/chacha.h"
|
||||
# included too, despite ".c"
|
||||
"sys/crypto/chacha20/chacha.c"
|
||||
|
||||
"sys/fs"
|
||||
"sys/ufs"
|
||||
"sys/sys/disk"
|
||||
|
||||
"lib/libcapsicum"
|
||||
"lib/libcasper"
|
||||
];
|
||||
|
||||
patches = [
|
||||
./compat-install-dirs.patch
|
||||
./compat-fix-typedefs-locations.patch
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
NIX_CFLAGS_COMPILE+=' -I../../include -I../../sys'
|
||||
|
||||
cp ../../sys/${mkBsdArch stdenv}/include/elf.h ../../sys/sys
|
||||
cp ../../sys/${mkBsdArch stdenv}/include/elf.h ../../sys/sys/${mkBsdArch stdenv}
|
||||
'' + lib.optionalString stdenv.hostPlatform.isx86 ''
|
||||
cp ../../sys/x86/include/elf.h ../../sys/x86
|
||||
'';
|
||||
|
||||
setupHooks = [
|
||||
../../../build-support/setup-hooks/role.bash
|
||||
./compat-setup-hook.sh
|
||||
];
|
||||
|
||||
# This one has an ifdefed `#include_next` that makes it annoying.
|
||||
postInstall = ''
|
||||
rm ''${!outputDev}/0-include/libelf.h
|
||||
'';
|
||||
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal
|
||||
boot-install
|
||||
|
||||
which
|
||||
];
|
||||
buildInputs = [ expat zlib ];
|
||||
|
||||
makeFlags = [
|
||||
"STRIP=-s" # flag to install, not command
|
||||
"MK_WERROR=no"
|
||||
"HOST_INCLUDE_ROOT=${lib.getDev stdenv.cc.libc}/include"
|
||||
"INSTALL=boot-install"
|
||||
];
|
||||
|
||||
preIncludes = ''
|
||||
mkdir -p $out/{0,1}-include
|
||||
cp --no-preserve=mode -r cross-build/include/common/* $out/0-include
|
||||
'' + lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
cp --no-preserve=mode -r cross-build/include/linux/* $out/1-include
|
||||
'' + lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
cp --no-preserve=mode -r cross-build/include/darwin/* $out/1-include
|
||||
'';
|
||||
};
|
||||
|
||||
libnetbsd = mkDerivation {
|
||||
path = "lib/libnetbsd";
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal mandoc groff
|
||||
(if stdenv.hostPlatform == stdenv.buildPlatform
|
||||
then boot-install
|
||||
else install)
|
||||
];
|
||||
patches = lib.optionals (!stdenv.hostPlatform.isFreeBSD) [
|
||||
./libnetbsd-do-install.patch
|
||||
#./libnetbsd-define-__va_list.patch
|
||||
];
|
||||
makeFlags = [
|
||||
"STRIP=-s" # flag to install, not command
|
||||
"MK_WERROR=no"
|
||||
] ++ lib.optional (stdenv.hostPlatform == stdenv.buildPlatform) "INSTALL=boot-install";
|
||||
buildInputs = with self; compatIfNeeded;
|
||||
};
|
||||
|
||||
# HACK: to ensure parent directories exist. This emulates GNU
|
||||
# install’s -D option. No alternative seems to exist in BSD install.
|
||||
install = let binstall = writeShellScript "binstall" (install-wrapper + ''
|
||||
|
||||
@out@/bin/xinstall "''${args[@]}"
|
||||
''); in mkDerivation {
|
||||
path = "usr.bin/xinstall";
|
||||
extraPaths = with self; [ mtree.path ];
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal mandoc groff
|
||||
(if stdenv.hostPlatform == stdenv.buildPlatform
|
||||
then boot-install
|
||||
else install)
|
||||
];
|
||||
skipIncludesPhase = true;
|
||||
buildInputs = with self; compatIfNeeded ++ [ libmd libnetbsd ];
|
||||
makeFlags = [
|
||||
"STRIP=-s" # flag to install, not command
|
||||
"MK_WERROR=no"
|
||||
"TESTSDIR=${builtins.placeholder "test"}"
|
||||
] ++ lib.optional (stdenv.hostPlatform == stdenv.buildPlatform) "INSTALL=boot-install";
|
||||
postInstall = ''
|
||||
install -D -m 0550 ${binstall} $out/bin/binstall
|
||||
substituteInPlace $out/bin/binstall --subst-var out
|
||||
mv $out/bin/install $out/bin/xinstall
|
||||
ln -s ./binstall $out/bin/install
|
||||
'';
|
||||
outputs = [ "out" "man" "test" ];
|
||||
};
|
||||
|
||||
sed = mkDerivation {
|
||||
path = "usr.bin/sed";
|
||||
TESTSRC = "${freebsdSrc}/contrib/netbsd-tests";
|
||||
MK_TESTS = "no";
|
||||
};
|
||||
|
||||
# Don't add this to nativeBuildInputs directly. Use statHook instead.
|
||||
stat = mkDerivation {
|
||||
path = "usr.bin/stat";
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal install mandoc groff
|
||||
];
|
||||
};
|
||||
|
||||
# stat isn't in POSIX, and NetBSD stat supports a completely
|
||||
# different range of flags than GNU stat, so including it in PATH
|
||||
# breaks stdenv. Work around that with a hook that will point
|
||||
# NetBSD's build system and NetBSD stat without including it in
|
||||
# PATH.
|
||||
statHook = makeSetupHook {
|
||||
name = "netbsd-stat-hook";
|
||||
} (writeText "netbsd-stat-hook-impl" ''
|
||||
makeFlagsArray+=(TOOL_STAT=${self.stat}/bin/stat)
|
||||
'');
|
||||
|
||||
tsort = mkDerivation {
|
||||
path = "usr.bin/tsort";
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal install mandoc groff
|
||||
];
|
||||
};
|
||||
|
||||
lorder = mkDerivation rec {
|
||||
path = "usr.bin/lorder";
|
||||
noCC = true;
|
||||
dontBuild = true;
|
||||
installPhase = ''
|
||||
mkdir -p "$out/bin" "$man/share/man"
|
||||
mv "lorder.sh" "$out/bin/lorder"
|
||||
chmod +x "$out/bin/lorder"
|
||||
mv "lorder.1" "$man/share/man"
|
||||
'';
|
||||
nativeBuildInputs = [ bsdSetupHook freebsdSetupHook ];
|
||||
buildInputs = [];
|
||||
outputs = [ "out" "man" ];
|
||||
};
|
||||
|
||||
##
|
||||
## END BOOTSTRAPPING
|
||||
##
|
||||
|
||||
##
|
||||
## START COMMAND LINE TOOLS
|
||||
##
|
||||
make = mkDerivation {
|
||||
path = "contrib/bmake";
|
||||
version = "9.2";
|
||||
postPatch = ''
|
||||
# make needs this to pick up our sys make files
|
||||
export NIX_CFLAGS_COMPILE+=" -D_PATH_DEFSYSPATH=\"$out/share/mk\""
|
||||
|
||||
'' + lib.optionalString stdenv.isDarwin ''
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.sys.mk \
|
||||
--replace '-Wl,--fatal-warnings' "" \
|
||||
--replace '-Wl,--warn-shared-textrel' ""
|
||||
'';
|
||||
postInstall = ''
|
||||
make -C $BSDSRCDIR/share/mk FILESDIR=$out/share/mk install
|
||||
'';
|
||||
extraPaths = [ "share/mk" ]
|
||||
++ lib.optional (!stdenv.hostPlatform.isFreeBSD) "tools/build/mk";
|
||||
};
|
||||
mtree = mkDerivation {
|
||||
path = "contrib/mtree";
|
||||
extraPaths = with self; [ mknod.path ];
|
||||
};
|
||||
|
||||
mknod = mkDerivation {
|
||||
path = "sbin/mknod";
|
||||
};
|
||||
|
||||
rpcgen = mkDerivation rec {
|
||||
path = "usr.bin/rpcgen";
|
||||
patches = lib.optionals (stdenv.hostPlatform.libc == "glibc") [
|
||||
# `WUNTRACED` is defined privately `bits/waitflags.h` in glibc.
|
||||
# But instead of having a regular header guard, it has some silly
|
||||
# non-modular logic. `stdlib.h` will include it if `sys/wait.h`
|
||||
# hasn't yet been included (for it would first), and vice versa.
|
||||
#
|
||||
# The problem is that with the FreeBSD compat headers, one of
|
||||
# those headers ends up included other headers...which ends up
|
||||
# including the other one, this means by the first time we reach
|
||||
# `#include `<bits/waitflags.h>`, both `_SYS_WAIT_H` and
|
||||
# `_STDLIB_H` are already defined! Thus, we never ned up including
|
||||
# `<bits/waitflags.h>` and defining `WUNTRACED`.
|
||||
#
|
||||
# This hacks around this by manually including `WUNTRACED` until
|
||||
# the problem is fixed properly in glibc.
|
||||
./rpcgen-glibc-hack.patch
|
||||
];
|
||||
};
|
||||
|
||||
gencat = mkDerivation {
|
||||
path = "usr.bin/gencat";
|
||||
};
|
||||
|
||||
file2c = mkDerivation {
|
||||
path = "usr.bin/file2c";
|
||||
MK_TESTS = "no";
|
||||
};
|
||||
|
||||
libnv = mkDerivation {
|
||||
path = "lib/libnv";
|
||||
extraPaths = [
|
||||
"sys/contrib/libnv"
|
||||
"sys/sys"
|
||||
];
|
||||
MK_TESTS = "no";
|
||||
};
|
||||
|
||||
libsbuf = mkDerivation {
|
||||
path = "lib/libsbuf";
|
||||
extraPaths = [
|
||||
"sys/kern"
|
||||
];
|
||||
MK_TESTS = "no";
|
||||
};
|
||||
|
||||
libelf = mkDerivation {
|
||||
path = "lib/libelf";
|
||||
extraPaths = [
|
||||
"contrib/elftoolchain/libelf"
|
||||
"contrib/elftoolchain/common"
|
||||
"sys/sys/elf32.h"
|
||||
"sys/sys/elf64.h"
|
||||
"sys/sys/elf_common.h"
|
||||
];
|
||||
BOOTSTRAPPING = !stdenv.isFreeBSD;
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal install mandoc groff
|
||||
|
||||
m4
|
||||
];
|
||||
MK_TESTS = "no";
|
||||
};
|
||||
|
||||
libdwarf = mkDerivation {
|
||||
path = "lib/libdwarf";
|
||||
extraPaths = [
|
||||
"contrib/elftoolchain/libdwarf"
|
||||
"contrib/elftoolchain/common"
|
||||
"sys/sys/elf32.h"
|
||||
"sys/sys/elf64.h"
|
||||
"sys/sys/elf_common.h"
|
||||
];
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal install mandoc groff
|
||||
|
||||
m4
|
||||
];
|
||||
buildInputs = with self; compatIfNeeded ++ [
|
||||
libelf
|
||||
];
|
||||
MK_TESTS = "no";
|
||||
};
|
||||
|
||||
uudecode = mkDerivation {
|
||||
path = "usr.bin/uudecode";
|
||||
MK_TESTS = "no";
|
||||
};
|
||||
|
||||
config = mkDerivation {
|
||||
path = "usr.sbin/config";
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal install mandoc groff
|
||||
|
||||
flex byacc file2c
|
||||
];
|
||||
buildInputs = with self; compatIfNeeded ++ [ libnv libsbuf ];
|
||||
};
|
||||
##
|
||||
## END COMMAND LINE TOOLS
|
||||
##
|
||||
|
||||
##
|
||||
## START HEADERS
|
||||
##
|
||||
include = mkDerivation {
|
||||
path = "include";
|
||||
|
||||
extraPaths = [
|
||||
"contrib/libc-vis"
|
||||
"etc/mtree/BSD.include.dist"
|
||||
"sys"
|
||||
];
|
||||
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal
|
||||
install
|
||||
mandoc groff rsync /*nbperf*/ rpcgen
|
||||
|
||||
# HACK use NetBSD's for now
|
||||
buildPackages.netbsd.mtree
|
||||
];
|
||||
|
||||
patches = [
|
||||
./no-perms-BSD.include.dist.patch
|
||||
];
|
||||
|
||||
# The makefiles define INCSDIR per subdirectory, so we have to set
|
||||
# something else on the command line so those definitions aren't
|
||||
# overridden.
|
||||
postPatch = ''
|
||||
find "$BSDSRCDIR" -name Makefile -exec \
|
||||
sed -i -E \
|
||||
-e 's_/usr/include_''${INCSDIR0}_' \
|
||||
{} \;
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
"RPCGEN_CPP=${buildPackages.stdenv.cc.cc}/bin/cpp"
|
||||
];
|
||||
|
||||
# multiple header dirs, see above
|
||||
postConfigure = ''
|
||||
makeFlags=''${makeFlags/INCSDIR/INCSDIR0}
|
||||
'';
|
||||
|
||||
headersOnly = true;
|
||||
|
||||
MK_HESIOD = "yes";
|
||||
|
||||
meta.platforms = lib.platforms.freebsd;
|
||||
};
|
||||
|
||||
##
|
||||
## END HEADERS
|
||||
##
|
||||
|
||||
csu = mkDerivation {
|
||||
path = "lib/csu";
|
||||
extraPaths = with self; [
|
||||
"lib/Makefile.inc"
|
||||
"lib/libc/include/libc_private.h"
|
||||
];
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal
|
||||
install
|
||||
|
||||
flex byacc gencat
|
||||
];
|
||||
buildInputs = with self; [ include ];
|
||||
MK_TESTS = "no";
|
||||
meta.platforms = lib.platforms.freebsd;
|
||||
};
|
||||
|
||||
libc = mkDerivation rec {
|
||||
pname = "libc";
|
||||
path = "lib/libc";
|
||||
extraPaths = [
|
||||
"etc/group"
|
||||
"etc/master.passwd"
|
||||
"etc/shells"
|
||||
"lib/libmd"
|
||||
"lib/libutil"
|
||||
"lib/msun"
|
||||
"sys/kern"
|
||||
"sys/libkern"
|
||||
"sys/sys"
|
||||
"sys/crypto/chacha20"
|
||||
"include/rpcsvc"
|
||||
"contrib/jemalloc"
|
||||
"contrib/gdtoa"
|
||||
"contrib/libc-pwcache"
|
||||
"contrib/libc-vis"
|
||||
"contrib/tzcode/stdtime"
|
||||
|
||||
# libthr
|
||||
"lib/libthr"
|
||||
"lib/libthread_db"
|
||||
"libexec/rtld-elf"
|
||||
|
||||
# librpcsvc
|
||||
"lib/librpcsvc"
|
||||
|
||||
# librt
|
||||
"lib/librt"
|
||||
|
||||
# libcrypt
|
||||
"lib/libcrypt"
|
||||
"lib/libmd"
|
||||
"sys/crypto/sha2"
|
||||
];
|
||||
|
||||
patches = [
|
||||
# Hack around broken propogating MAKEFLAGS to submake, just inline logic
|
||||
./libc-msun-arch-subdir.patch
|
||||
|
||||
# Don't force -lcompiler-rt, we don't actually call it that
|
||||
./libc-no-force--lcompiler-rt.patch
|
||||
|
||||
# Fix extra include dir to get rpcsvc headers.
|
||||
./librpcsvc-include-subdir.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace $COMPONENT_PATH/Makefile --replace '.include <src.opts.mk>' ""
|
||||
'';
|
||||
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal
|
||||
install
|
||||
|
||||
flex byacc gencat rpcgen
|
||||
];
|
||||
buildInputs = with self; [ include csu ];
|
||||
env.NIX_CFLAGS_COMPILE = "-B${self.csu}/lib";
|
||||
|
||||
# Suppress lld >= 16 undefined version errors
|
||||
# https://github.com/freebsd/freebsd-src/commit/2ba84b4bcdd6012e8cfbf8a0d060a4438623a638
|
||||
env.NIX_LDFLAGS = lib.optionalString (stdenv.targetPlatform.linker == "lld") "--undefined-version";
|
||||
|
||||
makeFlags = [
|
||||
"STRIP=-s" # flag to install, not command
|
||||
# lib/libc/gen/getgrent.c has sketchy cast from `void *` to enum
|
||||
"MK_WERROR=no"
|
||||
];
|
||||
|
||||
MK_SYMVER = "yes";
|
||||
MK_SSP = "yes";
|
||||
MK_NLS = "yes";
|
||||
MK_ICONV = "no"; # TODO make srctop
|
||||
MK_NS_CACHING = "yes";
|
||||
MK_INET6_SUPPORT = "yes";
|
||||
MK_HESIOD = "yes";
|
||||
MK_NIS = "yes";
|
||||
MK_HYPERV = "yes";
|
||||
MK_FP_LIBC = "yes";
|
||||
|
||||
MK_TCSH = "no";
|
||||
MK_MALLOC_PRODUCTION = "yes";
|
||||
|
||||
MK_TESTS = "no";
|
||||
|
||||
postInstall = ''
|
||||
pushd ${self.include}
|
||||
find . -type d -exec mkdir -p $out/\{} \;
|
||||
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
|
||||
popd
|
||||
|
||||
pushd ${self.csu}
|
||||
find . -type d -exec mkdir -p $out/\{} \;
|
||||
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
|
||||
popd
|
||||
|
||||
sed -i -e 's| [^ ]*/libc_nonshared.a||' $out/lib/libc.so
|
||||
|
||||
$CC -nodefaultlibs -lgcc -shared -o $out/lib/libgcc_s.so
|
||||
|
||||
NIX_CFLAGS_COMPILE+=" -B$out/lib"
|
||||
NIX_CFLAGS_COMPILE+=" -I$out/include"
|
||||
NIX_LDFLAGS+=" -L$out/lib"
|
||||
|
||||
make -C $BSDSRCDIR/lib/libthr $makeFlags
|
||||
make -C $BSDSRCDIR/lib/libthr $makeFlags install
|
||||
|
||||
make -C $BSDSRCDIR/lib/msun $makeFlags
|
||||
make -C $BSDSRCDIR/lib/msun $makeFlags install
|
||||
|
||||
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags
|
||||
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags install
|
||||
|
||||
make -C $BSDSRCDIR/lib/libutil $makeFlags
|
||||
make -C $BSDSRCDIR/lib/libutil $makeFlags install
|
||||
|
||||
make -C $BSDSRCDIR/lib/librt $makeFlags
|
||||
make -C $BSDSRCDIR/lib/librt $makeFlags install
|
||||
|
||||
make -C $BSDSRCDIR/lib/libcrypt $makeFlags
|
||||
make -C $BSDSRCDIR/lib/libcrypt $makeFlags install
|
||||
'';
|
||||
|
||||
meta.platforms = lib.platforms.freebsd;
|
||||
};
|
||||
|
||||
##
|
||||
## Kernel
|
||||
##
|
||||
|
||||
libspl = mkDerivation {
|
||||
path = "cddl/lib/libspl";
|
||||
extraPaths = [
|
||||
"sys/contrib/openzfs/lib/libspl"
|
||||
"sys/contrib/openzfs/include"
|
||||
|
||||
"cddl/compat/opensolaris/include"
|
||||
"sys/contrib/openzfs/module/icp/include"
|
||||
"sys/modules/zfs"
|
||||
];
|
||||
# nativeBuildInputs = with buildPackages.freebsd; [
|
||||
# bsdSetupHook freebsdSetupHook
|
||||
# makeMinimal install mandoc groff
|
||||
|
||||
# flex byacc file2c
|
||||
# ];
|
||||
# buildInputs = with self; compatIfNeeded ++ [ libnv libsbuf ];
|
||||
meta.license = lib.licenses.cddl;
|
||||
};
|
||||
|
||||
ctfconvert = mkDerivation {
|
||||
path = "cddl/usr.bin/ctfconvert";
|
||||
extraPaths = [
|
||||
"cddl/compat/opensolaris"
|
||||
"cddl/contrib/opensolaris"
|
||||
"sys/cddl/compat/opensolaris"
|
||||
"sys/cddl/contrib/opensolaris"
|
||||
"sys/contrib/openzfs"
|
||||
];
|
||||
OPENSOLARIS_USR_DISTDIR = "$(SRCTOP)/cddl/contrib/opensolaris";
|
||||
OPENSOLARIS_SYS_DISTDIR = "$(SRCTOP)/sys/cddl/contrib/opensolaris";
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal install mandoc groff
|
||||
|
||||
# flex byacc file2c
|
||||
];
|
||||
buildInputs = with self; compatIfNeeded ++ [
|
||||
libelf libdwarf zlib libspl
|
||||
];
|
||||
meta.license = lib.licenses.cddl;
|
||||
};
|
||||
|
||||
xargs-j = substituteAll {
|
||||
name = "xargs-j";
|
||||
shell = runtimeShell;
|
||||
src = ../xargs-j.sh;
|
||||
dir = "bin";
|
||||
isExecutable = true;
|
||||
};
|
||||
|
||||
sys = mkDerivation (let
|
||||
cfg = "MINIMAL";
|
||||
in rec {
|
||||
path = "sys";
|
||||
|
||||
nativeBuildInputs = with buildPackages.freebsd; [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal install mandoc groff
|
||||
|
||||
config rpcgen file2c gawk uudecode xargs-j
|
||||
#ctfconvert
|
||||
];
|
||||
|
||||
patches = [
|
||||
./sys-gnu-date.patch
|
||||
./sys-no-explicit-intrinsics-dep.patch
|
||||
];
|
||||
|
||||
# --dynamic-linker /red/herring is used when building the kernel.
|
||||
NIX_ENFORCE_PURITY = 0;
|
||||
|
||||
AWK = "${buildPackages.gawk}/bin/awk";
|
||||
|
||||
CWARNEXTRA = "-Wno-error=shift-negative-value -Wno-address-of-packed-member";
|
||||
|
||||
MK_CTF = "no";
|
||||
|
||||
KODIR = "${builtins.placeholder "out"}/kernel";
|
||||
KMODDIR = "${builtins.placeholder "out"}/kernel";
|
||||
DTBDIR = "${builtins.placeholder"out"}/dbt";
|
||||
|
||||
KERN_DEBUGDIR = "${builtins.placeholder "out"}/debug";
|
||||
KERN_DEBUGDIR_KODIR = "${KERN_DEBUGDIR}/kernel";
|
||||
KERN_DEBUGDIR_KMODDIR = "${KERN_DEBUGDIR}/kernel";
|
||||
|
||||
skipIncludesPhase = true;
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
|
||||
for f in conf/kmod.mk contrib/dev/acpica/acpica_prep.sh; do
|
||||
substituteInPlace "$f" --replace 'xargs -J' 'xargs-j '
|
||||
done
|
||||
|
||||
for f in conf/*.mk; do
|
||||
substituteInPlace "$f" --replace 'KERN_DEBUGDIR}''${' 'KERN_DEBUGDIR_'
|
||||
done
|
||||
|
||||
cd ${mkBsdArch stdenv}/conf
|
||||
sed -i ${cfg} \
|
||||
-e 's/WITH_CTF=1/WITH_CTF=0/' \
|
||||
-e '/KDTRACE/d'
|
||||
config ${cfg}
|
||||
|
||||
runHook postConfigure
|
||||
'';
|
||||
preBuild = ''
|
||||
cd ../compile/${cfg}
|
||||
'';
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ stdenv.mkDerivation {
|
||||
INSTALL_AS_USER = true;
|
||||
NO_CHECKSUM = true;
|
||||
NO_MTREE = true;
|
||||
SRC_BASE = freebsd.freebsdSrc;
|
||||
SRC_BASE = freebsd.source;
|
||||
|
||||
preUnpack = ''
|
||||
export MAKE_JOBS_NUMBER="$NIX_BUILD_CORES"
|
||||
|
16
pkgs/os-specific/bsd/freebsd/lib/default.nix
Normal file
16
pkgs/os-specific/bsd/freebsd/lib/default.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{ version }:
|
||||
|
||||
{
|
||||
inherit version;
|
||||
|
||||
mkBsdArch = stdenv': {
|
||||
x86_64 = "amd64";
|
||||
aarch64 = "arm64";
|
||||
i486 = "i386";
|
||||
i586 = "i386";
|
||||
i686 = "i386";
|
||||
}.${stdenv'.hostPlatform.parsed.cpu.name}
|
||||
or stdenv'.hostPlatform.parsed.cpu.name;
|
||||
|
||||
install-wrapper = builtins.readFile ./install-wrapper.sh;
|
||||
}
|
30
pkgs/os-specific/bsd/freebsd/lib/install-wrapper.sh
Normal file
30
pkgs/os-specific/bsd/freebsd/lib/install-wrapper.sh
Normal file
@ -0,0 +1,30 @@
|
||||
set -eu
|
||||
|
||||
args=()
|
||||
declare -i path_args=0
|
||||
|
||||
while (( $# )); do
|
||||
if (( $# == 1 )); then
|
||||
if (( path_args > 1)) || [[ "$1" = */ ]]; then
|
||||
mkdir -p "$1"
|
||||
else
|
||||
mkdir -p "$(dirname "$1")"
|
||||
fi
|
||||
fi
|
||||
case $1 in
|
||||
-C) ;;
|
||||
-o | -g) shift ;;
|
||||
-s) ;;
|
||||
-m | -l)
|
||||
# handle next arg so not counted as path arg
|
||||
args+=("$1" "$2")
|
||||
shift
|
||||
;;
|
||||
-*) args+=("$1") ;;
|
||||
*)
|
||||
path_args+=1
|
||||
args+=("$1")
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
7
pkgs/os-specific/bsd/freebsd/pkgs/boot-install.nix
Normal file
7
pkgs/os-specific/bsd/freebsd/pkgs/boot-install.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ buildPackages, freebsd-lib }:
|
||||
|
||||
# Wrap NetBSD's install
|
||||
buildPackages.writeShellScriptBin "boot-install" (freebsd-lib.install-wrapper + ''
|
||||
|
||||
${buildPackages.netbsd.install}/bin/xinstall "''${args[@]}"
|
||||
'')
|
135
pkgs/os-specific/bsd/freebsd/pkgs/compat/package.nix
Normal file
135
pkgs/os-specific/bsd/freebsd/pkgs/compat/package.nix
Normal file
@ -0,0 +1,135 @@
|
||||
{ lib, stdenv, mkDerivation
|
||||
, bsdSetupHook, freebsdSetupHook
|
||||
, makeMinimal, boot-install
|
||||
, which
|
||||
, freebsd-lib
|
||||
, expat, zlib,
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (freebsd-lib) mkBsdArch;
|
||||
in
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "compat";
|
||||
path = "tools/build";
|
||||
extraPaths = [
|
||||
"lib/libc/db"
|
||||
"lib/libc/stdlib" # getopt
|
||||
"lib/libc/gen" # getcap
|
||||
"lib/libc/locale" # rpmatch
|
||||
] ++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
"lib/libc/string" # strlcpy
|
||||
"lib/libutil"
|
||||
] ++ [
|
||||
"contrib/libc-pwcache"
|
||||
"contrib/libc-vis"
|
||||
"sys/libkern"
|
||||
"sys/kern/subr_capability.c"
|
||||
|
||||
# Take only individual headers, or else we will clobber native libc, etc.
|
||||
|
||||
"sys/rpc/types.h"
|
||||
|
||||
# Listed in Makekfile as INC
|
||||
"include/mpool.h"
|
||||
"include/ndbm.h"
|
||||
"include/err.h"
|
||||
"include/stringlist.h"
|
||||
"include/a.out.h"
|
||||
"include/nlist.h"
|
||||
"include/db.h"
|
||||
"include/getopt.h"
|
||||
"include/nl_types.h"
|
||||
"include/elf.h"
|
||||
"sys/sys/ctf.h"
|
||||
|
||||
# Listed in Makekfile as SYSINC
|
||||
|
||||
"sys/sys/capsicum.h"
|
||||
"sys/sys/caprights.h"
|
||||
"sys/sys/imgact_aout.h"
|
||||
"sys/sys/nlist_aout.h"
|
||||
"sys/sys/nv.h"
|
||||
"sys/sys/dnv.h"
|
||||
"sys/sys/cnv.h"
|
||||
|
||||
"sys/sys/elf32.h"
|
||||
"sys/sys/elf64.h"
|
||||
"sys/sys/elf_common.h"
|
||||
"sys/sys/elf_generic.h"
|
||||
"sys/${mkBsdArch stdenv}/include"
|
||||
] ++ lib.optionals stdenv.hostPlatform.isx86 [
|
||||
"sys/x86/include"
|
||||
] ++ [
|
||||
|
||||
"sys/sys/queue.h"
|
||||
"sys/sys/md5.h"
|
||||
"sys/sys/sbuf.h"
|
||||
"sys/sys/tree.h"
|
||||
"sys/sys/font.h"
|
||||
"sys/sys/consio.h"
|
||||
"sys/sys/fnv_hash.h"
|
||||
|
||||
"sys/crypto/chacha20/_chacha.h"
|
||||
"sys/crypto/chacha20/chacha.h"
|
||||
# included too, despite ".c"
|
||||
"sys/crypto/chacha20/chacha.c"
|
||||
|
||||
"sys/fs"
|
||||
"sys/ufs"
|
||||
"sys/sys/disk"
|
||||
|
||||
"lib/libcapsicum"
|
||||
"lib/libcasper"
|
||||
];
|
||||
|
||||
patches = [
|
||||
./compat-install-dirs.patch
|
||||
./compat-fix-typedefs-locations.patch
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
NIX_CFLAGS_COMPILE+=' -I../../include -I../../sys'
|
||||
|
||||
cp ../../sys/${mkBsdArch stdenv}/include/elf.h ../../sys/sys
|
||||
cp ../../sys/${mkBsdArch stdenv}/include/elf.h ../../sys/sys/${mkBsdArch stdenv}
|
||||
'' + lib.optionalString stdenv.hostPlatform.isx86 ''
|
||||
cp ../../sys/x86/include/elf.h ../../sys/x86
|
||||
'';
|
||||
|
||||
setupHooks = [
|
||||
../../../../../build-support/setup-hooks/role.bash
|
||||
./compat-setup-hook.sh
|
||||
];
|
||||
|
||||
# This one has an ifdefed `#include_next` that makes it annoying.
|
||||
postInstall = ''
|
||||
rm ''${!outputDev}/0-include/libelf.h
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal
|
||||
boot-install
|
||||
|
||||
which
|
||||
];
|
||||
buildInputs = [ expat zlib ];
|
||||
|
||||
makeFlags = [
|
||||
"STRIP=-s" # flag to install, not command
|
||||
"MK_WERROR=no"
|
||||
"HOST_INCLUDE_ROOT=${lib.getDev stdenv.cc.libc}/include"
|
||||
"INSTALL=boot-install"
|
||||
];
|
||||
|
||||
preIncludes = ''
|
||||
mkdir -p $out/{0,1}-include
|
||||
cp --no-preserve=mode -r cross-build/include/common/* $out/0-include
|
||||
'' + lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
cp --no-preserve=mode -r cross-build/include/linux/* $out/1-include
|
||||
'' + lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
cp --no-preserve=mode -r cross-build/include/darwin/* $out/1-include
|
||||
'';
|
||||
}
|
17
pkgs/os-specific/bsd/freebsd/pkgs/config.nix
Normal file
17
pkgs/os-specific/bsd/freebsd/pkgs/config.nix
Normal file
@ -0,0 +1,17 @@
|
||||
{ mkDerivation
|
||||
, bsdSetupHook, freebsdSetupHook
|
||||
, makeMinimal, install, mandoc, groff
|
||||
, flex, byacc, file2c
|
||||
, compatIfNeeded, libnv, libsbuf
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
path = "usr.sbin/config";
|
||||
nativeBuildInputs = [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal install mandoc groff
|
||||
|
||||
flex byacc file2c
|
||||
];
|
||||
buildInputs = compatIfNeeded ++ [ libnv libsbuf ];
|
||||
}
|
25
pkgs/os-specific/bsd/freebsd/pkgs/csu.nix
Normal file
25
pkgs/os-specific/bsd/freebsd/pkgs/csu.nix
Normal file
@ -0,0 +1,25 @@
|
||||
{ lib, mkDerivation
|
||||
, bsdSetupHook, freebsdSetupHook
|
||||
, makeMinimal
|
||||
, install
|
||||
, flex, byacc, gencat
|
||||
, include
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
path = "lib/csu";
|
||||
extraPaths = [
|
||||
"lib/Makefile.inc"
|
||||
"lib/libc/include/libc_private.h"
|
||||
];
|
||||
nativeBuildInputs = [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal
|
||||
install
|
||||
|
||||
flex byacc gencat
|
||||
];
|
||||
buildInputs = [ include ];
|
||||
MK_TESTS = "no";
|
||||
meta.platforms = lib.platforms.freebsd;
|
||||
}
|
28
pkgs/os-specific/bsd/freebsd/pkgs/ctfconvert.nix
Normal file
28
pkgs/os-specific/bsd/freebsd/pkgs/ctfconvert.nix
Normal file
@ -0,0 +1,28 @@
|
||||
{ lib, stdenv, mkDerivation
|
||||
, bsdSetupHook, freebsdSetupHook
|
||||
, makeMinimal, install, mandoc, groff
|
||||
, compatIfNeeded, libelf, libdwarf, zlib, libspl
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
path = "cddl/usr.bin/ctfconvert";
|
||||
extraPaths = [
|
||||
"cddl/compat/opensolaris"
|
||||
"cddl/contrib/opensolaris"
|
||||
"sys/cddl/compat/opensolaris"
|
||||
"sys/cddl/contrib/opensolaris"
|
||||
"sys/contrib/openzfs"
|
||||
];
|
||||
OPENSOLARIS_USR_DISTDIR = "$(SRCTOP)/cddl/contrib/opensolaris";
|
||||
OPENSOLARIS_SYS_DISTDIR = "$(SRCTOP)/sys/cddl/contrib/opensolaris";
|
||||
nativeBuildInputs = [
|
||||
bsdSetupHook freebsdSetupHook
|
||||
makeMinimal install mandoc groff
|
||||
|
||||
# flex byacc file2c
|
||||
];
|
||||
buildInputs = compatIfNeeded ++ [
|
||||
libelf libdwarf zlib libspl
|
||||
];
|
||||
meta.license = lib.licenses.cddl;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user