Merge branch 'master' into haskell-updates

This commit is contained in:
maralorn 2024-07-15 00:01:49 +02:00
commit 8c5b90372b
1008 changed files with 20280 additions and 13949 deletions

View File

@ -0,0 +1,189 @@
# Gradle {#gradle}
Gradle is a popular build tool for Java/Kotlin. Gradle itself doesn't
currently provide tools to make dependency resolution reproducible, so
nixpkgs has a proxy designed for intercepting Gradle web requests to
record dependencies so they can be restored in a reproducible fashion.
## Building a Gradle package {#building-a-gradle-package}
Here's how a typical derivation will look like:
```nix
stdenv.mkDerivation (finalAttrs: {
pname = "pdftk";
version = "3.3.3";
src = fetchFromGitLab {
owner = "pdftk-java";
repo = "pdftk";
rev = "v${finalAttrs.version}";
hash = "sha256-ciKotTHSEcITfQYKFZ6sY2LZnXGChBJy0+eno8B3YHY=";
};
nativeBuildInputs = [ gradle ];
# if the package has dependencies, mitmCache must be set
mitmCache = gradle.fetchDeps {
inherit (finalAttrs) pname;
data = ./deps.json;
};
# this is required for using mitm-cache on Darwin
__darwinAllowLocalNetworking = true;
gradleFlags = [ "-Dfile.encoding=utf-8" ];
# defaults to "assemble"
gradleBuildTask = "shadowJar";
# will run the gradleCheckTask (defaults to "test")
doCheck = true;
installPhase = ''
mkdir -p $out/{bin,share/pdftk}
cp build/libs/pdftk-all.jar $out/share/pdftk
makeWrapper ${jre}/bin/java $out/bin/pdftk \
--add-flags "-jar $out/share/pdftk/pdftk-all.jar"
cp ${finalAttrs.src}/pdftk.1 $out/share/man/man1
'';
meta.sourceProvenance = with lib.sourceTypes; [
fromSource
binaryBytecode # mitm cache
];
})
```
To update (or initialize) dependencies, run the update script via
something like `$(nix-build -A <pname>.mitmCache.updateScript)`
(`nix-build` builds the `updateScript`, `$(...)` runs the script at the
path printed by `nix-build`).
If your package can't be evaluated using a simple `pkgs.<pname>`
expression (for example, if your package isn't located in nixpkgs, or if
you want to override some of its attributes), you will usually have to
pass `pkg` instead of `pname` to `gradle.fetchDeps`. There are two ways
of doing it.
The first is to add the derivation arguments required for getting the
package. Using the pdftk example above:
```nix
{ lib
, stdenv
# ...
, pdftk
}:
stdenv.mkDerivation (finalAttrs: {
# ...
mitmCache = gradle.fetchDeps {
pkg = pdftk;
data = ./deps.json;
};
})
```
This allows you to `override` any arguments of the `pkg` used for
the update script (for example, `pkg = pdftk.override { enableSomeFlag =
true };`), so this is the preferred way.
The second is to create a `let` binding for the package, like this:
```nix
let self = stdenv.mkDerivation {
# ...
mitmCache = gradle.fetchDeps {
pkg = self;
data = ./deps.json;
};
}; in self
```
This is useful if you can't easily pass the derivation as its own
argument, or if your `mkDerivation` call is responsible for building
multiple packages.
In the former case, the update script will stay the same even if the
derivation is called with different arguments. In the latter case, the
update script will change depending on the derivation arguments. It's up
to you to decide which one would work best for your derivation.
## Update Script {#gradle-update-script}
The update script does the following:
- Build the derivation's source via `pkgs.srcOnly`
- Enter a `nix-shell` for the derivation in a `bwrap` sandbox (the
sandbox is only used on Linux)
- Set the `IN_GRADLE_UPDATE_DEPS` environment variable to `1`
- Run the derivation's `unpackPhase`, `patchPhase`, `configurePhase`
- Run the derivation's `gradleUpdateScript` (the Gradle setup hook sets
a default value for it, which runs `preBuild`, `preGradleUpdate`
hooks, fetches the dependencies using `gradleUpdateTask`, and finally
runs the `postGradleUpdate` hook)
- Finally, store all of the fetched files' hashes in the lockfile. They
may be `.jar`/`.pom` files from Maven repositories, or they may be
files otherwise used for building the package.
`fetchDeps` takes the following arguments:
- `attrPath` - the path to the package in nixpkgs (for example,
`"javaPackages.openjfx22"`). Used for update script metadata.
- `pname` - an alias for `attrPath` for convenience. This is what you
will generally use instead of `pkg` or `attrPath`.
- `pkg` - the package to be used for fetching the dependencies. Defaults
to `getAttrFromPath (splitString "." attrPath) pkgs`.
- `bwrapFlags` - allows you to override bwrap flags (only relevant for
downstream, non-nixpkgs projects)
- `data` - path to the dependencies lockfile (can be relative to the
package, can be absolute). In nixpkgs, it's discouraged to have the
lockfiles be named anything other `deps.json`, consider creating
subdirectories if your package requires multiple `deps.json` files.
## Environment {#gradle-environment}
The Gradle setup hook accepts the following environment variables:
- `mitmCache` - the MITM proxy cache imported using `gradle.fetchDeps`
- `gradleFlags` - command-line flags to be used for every Gradle
invocation (this simply registers a function that uses the necessary
flags).
- You can't use `gradleFlags` for flags that contain spaces, in that
case you must add `gradleFlagsArray+=("-flag with spaces")` to the
derivation's bash code instead.
- If you want to build the package using a specific Java version, you
can pass `"-Dorg.gradle.java.home=${jdk}"` as one of the flags.
- `gradleBuildTask` - the Gradle task (or tasks) to be used for building
the package. Defaults to `assemble`.
- `gradleCheckTask` - the Gradle task (or tasks) to be used for checking
the package if `doCheck` is set to `true`. Defaults to `test`.
- `gradleUpdateTask` - the Gradle task (or tasks) to be used for
fetching all of the package's dependencies in
`mitmCache.updateScript`. Defaults to `nixDownloadDeps`.
- `gradleUpdateScript` - the code to run for fetching all of the
package's dependencies in `mitmCache.updateScript`. Defaults to
running the `preBuild` and `preGradleUpdate` hooks, running the
`gradleUpdateTask`, and finally running the `postGradleUpdate` hook.
- `gradleInitScript` - path to the `--init-script` to pass to Gradle. By
default, a simple init script that enables reproducible archive
creation is used.
- Note that reproducible archives might break some builds. One example
of an error caused by it is `Could not create task ':jar'. Replacing
an existing task that may have already been used by other plugins is
not supported`. If you get such an error, the easiest "fix" is
disabling reproducible archives altogether by setting
`gradleInitScript` to something like `writeText
"empty-init-script.gradle" ""`
- `enableParallelBuilding` / `enableParallelChecking` /
`enableParallelUpdating` - pass `--parallel` to Gradle in the
build/check phase or in the update script. Defaults to true. If the
build fails for mysterious reasons, consider setting this to false.
- `dontUseGradleConfigure` / `dontUseGradleBuild` / `dontUseGradleCheck`
\- force disable the Gradle setup hook for certain phases.
- Note that if you disable the configure hook, you may face issues
such as `Failed to load native library 'libnative-platform.so'`,
because the configure hook is responsible for initializing Gradle.

View File

@ -283,7 +283,10 @@ in {
];
composerRepository = php.mkComposerRepository {
inherit (finalAttrs) src;
inherit (finalAttrs) pname version src;
composerNoDev = true;
composerNoPlugins = true;
composerNoScripts = true;
# Specifying a custom composer.lock since it is not present in the sources.
composerLock = ./composer.lock;
# The composer vendor hash

View File

@ -17398,6 +17398,12 @@
githubId = 55679162;
keys = [ { fingerprint = "1401 1B63 393D 16C1 AA9C C521 8526 B757 4A53 6236"; } ];
};
rorosen = {
email = "robert.rose@mailbox.org";
github = "rorosen";
githubId = 76747196;
name = "Robert Rose";
};
rosehobgoblin = {
name = "J. L. Bowden";
github = "rosehobgoblin";

View File

@ -502,6 +502,7 @@ with lib.maintainers;
euank
marcusramberg
mic92
rorosen
superherointj
wrmilling
yajo

View File

@ -695,9 +695,7 @@ Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for Pi
The previous native backends remain available but are now minimally maintained. Refer to [upstream documentation](https://doc.qt.io/qt-6/qtmultimedia-index.html#ffmpeg-as-the-default-backend) for further details about each platform.
- `services.btrbk` now automatically selects and provides required compression
program depending on the configured `stream_compress` option. Since this
replaces the need for the `extraPackages` option, this option will be
deprecated in future releases.
program depending on the configured `stream_compress` option.
- `services.github-runner` module has been removed. To configure a single GitHub Actions Runner refer to `services.github-runners.*`. Note that this will trigger a new runner registration.

View File

@ -30,12 +30,16 @@
- [Envision](https://gitlab.com/gabmus/envision), a UI for building, configuring and running Monado, the open source OpenXR runtime. Available as [programs.envision](#opt-programs.envision.enable).
- [Localsend](https://localsend.org/), an open source cross-platform alternative to AirDrop. Available as [programs.localsend](#opt-programs.localsend.enable).
- [realm](https://github.com/zhboner/realm), a simple, high performance relay server written in rust. Available as [services.realm.enable](#opt-services.realm.enable).
- [Playerctld](https://github.com/altdesktop/playerctl), a daemon to track media player activity. Available as [services.playerctld](option.html#opt-services.playerctld).
- [Glance](https://github.com/glanceapp/glance), a self-hosted dashboard that puts all your feeds in one place. Available as [services.glance](option.html#opt-services.glance).
- [Apache Tika](https://github.com/apache/tika), a toolkit that detects and extracts metadata and text from over a thousand different file types. Available as [services.tika](option.html#opt-services.tika).
## Backward Incompatibilities {#sec-release-24.11-incompatibilities}
- `transmission` package has been aliased with a `trace` warning to `transmission_3`. Since [Transmission 4 has been released last year](https://github.com/transmission/transmission/releases/tag/4.0.0), and Transmission 3 will eventually go away, it was decided perform this warning alias to make people aware of the new version. The `services.transmission.package` defaults to `transmission_3` as well because the upgrade can cause data loss in certain specific usage patterns (examples: [#5153](https://github.com/transmission/transmission/issues/5153), [#6796](https://github.com/transmission/transmission/issues/6796)). Please make sure to back up to your data directory per your usage:

View File

@ -14,6 +14,8 @@
.Op Fl -root Ar root
.Op Fl -system Ar path
.Op Fl -flake Ar flake-uri
.Op Fl -file | f Ar path
.Op Fl -attr | A Ar attrPath
.Op Fl -impure
.Op Fl -channel Ar channel
.Op Fl -no-channel-copy
@ -111,6 +113,32 @@ output named
.Ql nixosConfigurations. Ns Ar name Ns
\&.
.
.It Fl -file Ar path , Fl f Ar path
Enable and build the NixOS system from the specified file. The file must
evaluate to an attribute set, and it must contain a valid NixOS configuration
at attribute
.Va attrPath Ns
\&. This is useful for building a NixOS system from a nix file that is not
a flake or a NixOS configuration module. Attribute set a with valid NixOS
configuration can be made using
.Va nixos
function in nixpkgs or importing and calling
.Pa nixos/lib/eval-config.nix
from nixpkgs. If specified without
.Fl -attr
option, builds the configuration from the top-level
attribute of the file.
.
.It Fl -attr Ar attrPath , Fl A Ar attrPath
Enable and build the NixOS system from nix file and use the specified attribute
path from file specified by the
.Fl -file
option. If specified without
.Fl -file
option, uses
.Va [root] Ns Pa /etc/nixos/default.nix Ns
\&.
.
.It Fl -channel Ar channel
If this option is provided, do not copy the current
.Dq nixos

View File

@ -17,6 +17,9 @@ mountPoint=/mnt
channelPath=
system=
verbosity=()
attr=
buildFile=
buildingAttribute=1
while [ "$#" -gt 0 ]; do
i="$1"; shift 1
@ -41,6 +44,24 @@ while [ "$#" -gt 0 ]; do
flakeFlags=(--experimental-features 'nix-command flakes')
shift 1
;;
--file|-f)
if [ -z "$1" ]; then
log "$0: '$i' requires an argument"
exit 1
fi
buildFile="$1"
buildingAttribute=
shift 1
;;
--attr|-A)
if [ -z "$1" ]; then
log "$0: '$i' requires an argument"
exit 1
fi
attr="$1"
buildingAttribute=
shift 1
;;
--recreate-lock-file|--no-update-lock-file|--no-write-lock-file|--no-registries|--commit-lock-file)
lockFlags+=("$i")
;;
@ -101,17 +122,30 @@ while [[ "$checkPath" != "/" ]]; do
checkPath="$(dirname "$checkPath")"
done
# Get the path of the NixOS configuration file.
if [[ -z $NIXOS_CONFIG ]]; then
NIXOS_CONFIG=$mountPoint/etc/nixos/configuration.nix
fi
if [[ ${NIXOS_CONFIG:0:1} != / ]]; then
echo "$0: \$NIXOS_CONFIG is not an absolute path"
# Verify that user is not trying to use attribute building and flake
# at the same time
if [[ -z $buildingAttribute && -n $flake ]]; then
echo "$0: '--flake' cannot be used with '--file' or '--attr'"
exit 1
fi
if [[ -n $flake ]]; then
# Get the path of the NixOS configuration file.
if [[ -z $flake && -n $buildingAttribute ]]; then
if [[ -z $NIXOS_CONFIG ]]; then
NIXOS_CONFIG=$mountPoint/etc/nixos/configuration.nix
fi
if [[ ${NIXOS_CONFIG:0:1} != / ]]; then
echo "$0: \$NIXOS_CONFIG is not an absolute path"
exit 1
fi
elif [[ -z $buildingAttribute ]]; then
if [[ -z $buildFile ]]; then
buildFile="$mountPoint/etc/nixos/default.nix"
elif [[ -d $buildFile ]]; then
buildFile="$buildFile/default.nix"
fi
elif [[ -n $flake ]]; then
if [[ $flake =~ ^(.*)\#([^\#\"]*)$ ]]; then
flake="${BASH_REMATCH[1]}"
flakeAttr="${BASH_REMATCH[2]}"
@ -129,11 +163,16 @@ if [[ -n $flake ]]; then
flake=$(nix "${flakeFlags[@]}" flake metadata --json "${extraBuildFlags[@]}" "${lockFlags[@]}" -- "$flake" | jq -r .url)
fi
if [[ ! -e $NIXOS_CONFIG && -z $system && -z $flake ]]; then
if [[ ! -e $NIXOS_CONFIG && -z $system && -z $flake && -n $buildingAttribute ]]; then
echo "configuration file $NIXOS_CONFIG doesn't exist"
exit 1
fi
if [[ ! -z $buildingAttribute && -e $buildFile && -z $system ]]; then
echo "configuration file $buildFile doesn't exist"
exit 1
fi
# A place to drop temporary stuff.
tmpdir="$(mktemp -d -p "$mountPoint")"
trap 'rm -rf $tmpdir' EXIT
@ -163,11 +202,20 @@ fi
# Build the system configuration in the target filesystem.
if [[ -z $system ]]; then
outLink="$tmpdir/system"
if [[ -z $flake ]]; then
if [[ -z $flake && -n $buildingAttribute ]]; then
echo "building the configuration in $NIXOS_CONFIG..."
nix-build --out-link "$outLink" --store "$mountPoint" "${extraBuildFlags[@]}" \
--extra-substituters "$sub" \
'<nixpkgs/nixos>' -A system -I "nixos-config=$NIXOS_CONFIG" "${verbosity[@]}"
elif [[ -z $buildingAttribute ]]; then
if [[ -n $attr ]]; then
echo "building the configuration in $buildFile and attribute $attr..."
else
echo "building the configuration in $buildFile..."
fi
nix-build --out-link "$outLink" --store "$mountPoint" "${extraBuildFlags[@]}" \
--extra-substituters "$sub" \
"$buildFile" -A "${attr:+$attr.}config.system.build.toplevel" "${verbosity[@]}"
else
echo "building the flake in $flake..."
nix "${flakeFlags[@]}" build "$flake#$flakeAttr.config.system.build.toplevel" \

View File

@ -226,6 +226,7 @@
./programs/less.nix
./programs/liboping.nix
./programs/light.nix
./programs/localsend.nix
./programs/mdevctl.nix
./programs/mepo.nix
./programs/mininet.nix
@ -1264,6 +1265,7 @@
./services/search/qdrant.nix
./services/search/quickwit.nix
./services/search/sonic-server.nix
./services/search/tika.nix
./services/search/typesense.nix
./services/security/aesmd.nix
./services/security/authelia.nix

View File

@ -0,0 +1,26 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.programs.localsend;
firewallPort = 53317;
in
{
options.programs.localsend = {
enable = lib.mkEnableOption "localsend, an open source cross-platform alternative to AirDrop";
openFirewall = lib.mkEnableOption "opening the firewall port ${toString firewallPort} for receiving files" // {
default = true;
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ pkgs.localsend ];
networking.firewall.allowedTCPPorts = lib.optionals cfg.openFirewall [ firewallPort ];
};
meta.maintainers = with lib.maintainers; [ pandapip1 ];
}

View File

@ -204,10 +204,6 @@ in
};
config = mkIf (sshEnabled || serviceEnabled) {
warnings = optional (cfg.extraPackages != []) ''
extraPackages option will be deprecated in future releases. Programs required for compression are now automatically selected depending on services.btrbk.instances.<name>.settings.stream_compress option.
'';
environment.systemPackages = [ pkgs.btrbk ] ++ cfg.extraPackages;
security.sudo.extraRules = mkIf (sudo_doas == "sudo") [ sudoRule ];

View File

@ -39,6 +39,7 @@ in {
qtmir # not having its desktop file for Xwayland available causes any X11 application to crash the session
suru-icon-theme
telephony-service
teleports
]);
variables = {
# To override the keyboard layouts in Lomiri

View File

@ -81,6 +81,33 @@ in
Only log messages with the given severity or above.
'';
};
environmentFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/root/prometheus-snmp-exporter.env";
description = ''
EnvironmentFile as defined in {manpage}`systemd.exec(5)`.
Secrets may be passed to the service without adding them to the
world-readable Nix store, by specifying placeholder variables as
the option value in Nix and setting these variables accordingly in the
environment file.
Environment variables from this file will be interpolated into the
config file using envsubst with this syntax:
`$ENVIRONMENT ''${VARIABLE}`
For variables to use see [Prometheus Configuration](https://github.com/prometheus/snmp_exporter#prometheus-configuration).
If the file path is set to this option, the parameter
`--config.expand-environment-variables` is implicitly added to
`ExecStart`.
Note that this file needs to be available on the host on which
this exporter is running.
'';
};
};
serviceOpts = let
uncheckedConfigFile = if cfg.configurationPath != null
@ -92,9 +119,12 @@ in
uncheckedConfigFile;
in {
serviceConfig = {
EnvironmentFile = lib.mkIf (cfg.environmentFile != null) [ cfg.environmentFile ];
ExecStart = ''
${pkgs.prometheus-snmp-exporter}/bin/snmp_exporter \
--config.file=${escapeShellArg configFile} \
${lib.optionalString (cfg.environmentFile != null)
"--config.expand-environment-variables"} \
--log.format=${escapeShellArg cfg.logFormat} \
--log.level=${cfg.logLevel} \
--web.listen-address=${cfg.listenAddress}:${toString cfg.port} \

View File

@ -62,11 +62,11 @@ in
keyfile = mkOption {
type = types.path;
description = ''
Name of a file containing the spiped key. As the
daemon runs as the `spiped` user, the
key file must be somewhere owned by that user. By
default, we recommend putting the keys for any spipe
services in `/var/lib/spiped`.
Name of a file containing the spiped key.
As the daemon runs as the `spiped` user,
the key file must be readable by that user.
To securely manage the file within your configuration
consider a tool such as agenix or sops-nix.
'';
};
@ -185,22 +185,12 @@ in
serviceConfig = {
Restart = "always";
User = "spiped";
PermissionsStartOnly = true;
};
preStart = ''
cd /var/lib/spiped
chmod -R 0660 *
chown -R spiped:spiped *
'';
scriptArgs = "%i";
script = "exec ${pkgs.spiped}/bin/spiped -F `cat /etc/spiped/$1.spec`";
};
systemd.tmpfiles.rules = lib.mkIf (cfg.config != { }) [
"d /var/lib/spiped -"
];
# Setup spiped config files
environment.etc = mapAttrs' (name: cfg: nameValuePair "spiped/${name}.spec"
{ text = concatStringsSep " "

View File

@ -0,0 +1,84 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.tika;
inherit (lib)
literalExpression
mkIf
mkEnableOption
mkOption
mkPackageOption
getExe
types
;
in
{
meta.maintainers = [ lib.maintainers.drupol ];
options = {
services.tika = {
enable = mkEnableOption "Apache Tika server";
package = mkPackageOption pkgs "tika" { };
listenAddress = mkOption {
type = types.str;
default = "127.0.0.1";
example = "0.0.0.0";
description = ''
The Apache Tika bind address.
'';
};
port = mkOption {
type = types.port;
default = 9998;
description = ''
The Apache Tike port to listen on
'';
};
configFile = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
The Apache Tika configuration (XML) file to use.
'';
example = literalExpression "./tika/tika-config.xml";
};
openFirewall = mkOption {
type = types.bool;
default = false;
description = ''
Whether to open the firewall for Apache Tika.
This adds `services.tika.port` to `networking.firewall.allowedTCPPorts`.
'';
};
};
};
config = mkIf cfg.enable {
systemd.services.tika = {
description = "Apache Tika Server";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
Type = "simple";
ExecStart = "${getExe cfg.package} --host ${cfg.listenAddress} --port ${toString cfg.port} ${lib.optionalString (cfg.configFile != null) "--config ${cfg.configFile}"}";
DynamicUser = true;
StateDirectory = "tika";
CacheDirectory = "tika";
};
};
networking.firewall = mkIf cfg.openFirewall { allowedTCPPorts = [ cfg.port ]; };
};
}

View File

@ -516,6 +516,7 @@ in {
listmonk = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./listmonk.nix {};
litestream = handleTest ./litestream.nix {};
lldap = handleTest ./lldap.nix {};
localsend = handleTest ./localsend.nix {};
locate = handleTest ./locate.nix {};
login = handleTest ./login.nix {};
logrotate = handleTest ./logrotate.nix {};
@ -975,11 +976,13 @@ in {
teeworlds = handleTest ./teeworlds.nix {};
telegraf = handleTest ./telegraf.nix {};
teleport = handleTest ./teleport.nix {};
teleports = runTest ./teleports.nix;
thelounge = handleTest ./thelounge.nix {};
terminal-emulators = handleTest ./terminal-emulators.nix {};
thanos = handleTest ./thanos.nix {};
tiddlywiki = handleTest ./tiddlywiki.nix {};
tigervnc = handleTest ./tigervnc.nix {};
tika = runTest ./tika.nix;
timescaledb = handleTest ./timescaledb.nix {};
timezone = handleTest ./timezone.nix {};
tinc = handleTest ./tinc {};

View File

@ -16,14 +16,14 @@ import ./make-test-python.nix ({ pkgs, ... }: {
# list probes
machine.succeed("bpftrace -l")
# simple BEGIN probe (user probe on bpftrace itself)
print(machine.succeed("bpftrace -e 'BEGIN { print(\"ok\"); exit(); }'"))
print(machine.succeed("bpftrace -e 'BEGIN { print(\"ok\\n\"); exit(); }'"))
# tracepoint
print(machine.succeed("bpftrace -e 'tracepoint:syscalls:sys_enter_* { print(probe); exit() }'"))
# kprobe
print(machine.succeed("bpftrace -e 'kprobe:schedule { print(probe); exit() }'"))
# BTF
print(machine.succeed("bpftrace -e 'kprobe:schedule { "
" printf(\"tgid: %d\", ((struct task_struct*) curtask)->tgid); exit() "
" printf(\"tgid: %d\\n\", ((struct task_struct*) curtask)->tgid); exit() "
"}'"))
# module BTF (bpftrace >= 0.17)
# test is currently disabled on aarch64 as kfunc does not work there yet
@ -32,5 +32,8 @@ import ./make-test-python.nix ({ pkgs, ... }: {
"bpftrace -e 'kfunc:nft_trans_alloc_gfp { "
" printf(\"portid: %d\\n\", args->ctx->portid); "
"} BEGIN { exit() }'"))
# glibc includes
print(machine.succeed("bpftrace -e '#include <errno.h>\n"
"BEGIN { printf(\"ok %d\\n\", EINVAL); exit(); }'"))
'';
})

View File

@ -11,7 +11,7 @@ let
# The configuration to install.
makeConfig = { bootLoader, grubDevice, grubIdentifier, grubUseEfi
, extraConfig, forceGrubReinstallCount ? 0, flake ? false
, extraConfig, forceGrubReinstallCount ? 0, withTestInstrumentation ? true
, clevisTest
}:
pkgs.writeText "configuration.nix" ''
@ -19,7 +19,7 @@ let
{ imports =
[ ./hardware-configuration.nix
${if flake
${if !withTestInstrumentation
then "" # Still included, but via installer/flake.nix
else "<nixpkgs/nixos/modules/testing/test-instrumentation.nix>"}
];
@ -81,7 +81,7 @@ let
# partitions and filesystems.
testScriptFun = { bootLoader, createPartitions, grubDevice, grubUseEfi, grubIdentifier
, postInstallCommands, postBootCommands, extraConfig
, testSpecialisationConfig, testFlakeSwitch, clevisTest, clevisFallbackTest
, testSpecialisationConfig, testFlakeSwitch, testByAttrSwitch, clevisTest, clevisFallbackTest
, disableFileSystems
}:
let
@ -316,6 +316,119 @@ let
target.shutdown()
''
+ optionalString testByAttrSwitch ''
with subtest("Configure system with attribute set"):
target.succeed("""
mkdir /root/my-config
mv /etc/nixos/hardware-configuration.nix /root/my-config/
rm /etc/nixos/configuration.nix
""")
target.copy_from_host_via_shell(
"${makeConfig {
inherit bootLoader grubDevice grubIdentifier grubUseEfi extraConfig clevisTest;
forceGrubReinstallCount = 1;
withTestInstrumentation = false;
}}",
"/root/my-config/configuration.nix",
)
target.copy_from_host_via_shell(
"${./installer/byAttrWithChannel.nix}",
"/root/my-config/default.nix",
)
with subtest("Switch to attribute set based config with channels"):
target.succeed("nixos-rebuild switch --file /root/my-config/default.nix")
target.shutdown()
${startTarget}
target.succeed("""
rm /root/my-config/default.nix
""")
target.copy_from_host_via_shell(
"${./installer/byAttrNoChannel.nix}",
"/root/my-config/default.nix",
)
target.succeed("""
pkgs=$(readlink -f /nix/var/nix/profiles/per-user/root/channels)/nixos
if ! [[ -e $pkgs/pkgs/top-level/default.nix ]]; then
echo 1>&2 "$pkgs does not seem to be a nixpkgs source. Please fix the test so that pkgs points to a nixpkgs source.";
exit 1;
fi
sed -e s^@nixpkgs@^$pkgs^ -i /root/my-config/default.nix
""")
with subtest("Switch to attribute set based config without channels"):
target.succeed("nixos-rebuild switch --file /root/my-config/default.nix")
target.shutdown()
${startTarget}
with subtest("nix-channel command is not available anymore"):
target.succeed("! which nix-channel")
with subtest("builtins.nixPath is now empty"):
target.succeed("""
[[ "[ ]" == "$(nix-instantiate builtins.nixPath --eval --expr)" ]]
""")
with subtest("<nixpkgs> does not resolve"):
target.succeed("""
! nix-instantiate '<nixpkgs>' --eval --expr
""")
with subtest("Evaluate attribute set based config in fresh env without nix-channel"):
target.succeed("nixos-rebuild switch --file /root/my-config/default.nix")
with subtest("Evaluate attribute set based config in fresh env without channel profiles"):
target.succeed("""
(
exec 1>&2
mkdir -p /root/restore
mv -v /root/.nix-channels /root/restore/
mv -v ~/.nix-defexpr /root/restore/
mkdir -p /root/restore/channels
mv -v /nix/var/nix/profiles/per-user/root/channels* /root/restore/channels/
)
""")
target.succeed("nixos-rebuild switch --file /root/my-config/default.nix")
''
+ optionalString (testByAttrSwitch && testFlakeSwitch) ''
with subtest("Restore channel profiles"):
target.succeed("""
(
exec 1>&2
mv -v /root/restore/.nix-channels /root/
mv -v /root/restore/.nix-defexpr ~/.nix-defexpr
mv -v /root/restore/channels/* /nix/var/nix/profiles/per-user/root/
rm -vrf /root/restore
)
""")
with subtest("Restore /etc/nixos"):
target.succeed("""
mv -v /root/my-config/hardware-configuration.nix /etc/nixos/
""")
target.copy_from_host_via_shell(
"${makeConfig {
inherit bootLoader grubDevice grubIdentifier grubUseEfi extraConfig clevisTest;
forceGrubReinstallCount = 1;
}}",
"/etc/nixos/configuration.nix",
)
with subtest("Restore /root/my-config"):
target.succeed("""
rm -vrf /root/my-config
""")
''
+ optionalString (testByAttrSwitch && !testFlakeSwitch) ''
target.shutdown()
''
+ optionalString testFlakeSwitch ''
${startTarget}
@ -330,7 +443,7 @@ let
"${makeConfig {
inherit bootLoader grubDevice grubIdentifier grubUseEfi extraConfig clevisTest;
forceGrubReinstallCount = 1;
flake = true;
withTestInstrumentation = false;
}}",
"/root/my-config/configuration.nix",
)
@ -399,6 +512,7 @@ let
, enableOCR ? false, meta ? {}
, testSpecialisationConfig ? false
, testFlakeSwitch ? false
, testByAttrSwitch ? false
, clevisTest ? false
, clevisFallbackTest ? false
, disableFileSystems ? false
@ -533,7 +647,7 @@ let
testScript = testScriptFun {
inherit bootLoader createPartitions postInstallCommands postBootCommands
grubDevice grubIdentifier grubUseEfi extraConfig
testSpecialisationConfig testFlakeSwitch clevisTest clevisFallbackTest
testSpecialisationConfig testFlakeSwitch testByAttrSwitch clevisTest clevisFallbackTest
disableFileSystems;
};
};
@ -589,6 +703,15 @@ let
testFlakeSwitch = true;
};
simple-test-config-by-attr = simple-test-config // {
testByAttrSwitch = true;
};
simple-test-config-from-by-attr-to-flake = simple-test-config // {
testByAttrSwitch = true;
testFlakeSwitch = true;
};
simple-uefi-grub-config = {
createPartitions = ''
installer.succeed(
@ -782,6 +905,10 @@ in {
switchToFlake = makeInstallerTest "switch-to-flake" simple-test-config-flake;
switchToByAttr = makeInstallerTest "switch-to-by-attr" simple-test-config-by-attr;
switchFromByAttrToFlake = makeInstallerTest "switch-from-by-attr-to-flake" simple-test-config-from-by-attr-to-flake;
# Test cloned configurations with the simple grub configuration
simpleSpecialised = makeInstallerTest "simpleSpecialised" (simple-test-config // specialisation-test-extraconfig);

View File

@ -0,0 +1,18 @@
# This file gets copied into the installation
let
nixpkgs = "@nixpkgs@";
in
{ evalConfig ? import "${nixpkgs}/nixos/lib/eval-config.nix" }:
evalConfig {
modules = [
./configuration.nix
( import "${nixpkgs}/nixos/modules/testing/test-instrumentation.nix" )
{
# Disable nix channels
nix.channel.enable = false;
}
];
}

View File

@ -0,0 +1,10 @@
# This file gets copied into the installation
{ evalConfig ? import <nixpkgs/nixos/lib/eval-config.nix> }:
evalConfig {
modules = [
./configuration.nix
( import <nixpkgs/nixos/modules/testing/test-instrumentation.nix> )
];
}

21
nixos/tests/localsend.nix Normal file
View File

@ -0,0 +1,21 @@
import ./make-test-python.nix (
{ ... }:
{
name = "localsend";
nodes.machine =
{ ... }:
{
imports = [ ./common/x11.nix ];
programs.localsend.enable = true;
};
testScript = ''
machine.wait_for_x()
machine.succeed("localsend_app >&2 &")
machine.wait_for_open_port(53317)
machine.wait_for_window("LocalSend", 10)
machine.succeed("netstat --listening --program --tcp | grep -P 'tcp.*53317.*localsend'")
'';
}
)

48
nixos/tests/teleports.nix Normal file
View File

@ -0,0 +1,48 @@
{ pkgs, lib, ... }:
{
name = "teleports-standalone";
meta.maintainers = lib.teams.lomiri.members;
nodes.machine =
{ config, pkgs, ... }:
{
imports = [ ./common/x11.nix ];
services.xserver.enable = true;
environment = {
systemPackages = with pkgs.lomiri; [
suru-icon-theme
teleports
];
variables = {
UITK_ICON_THEME = "suru";
};
};
i18n.supportedLocales = [ "all" ];
fonts.packages = with pkgs; [
# Intended font & helps with OCR
ubuntu_font_family
];
};
enableOCR = true;
testScript = ''
machine.wait_for_x()
with subtest("teleports launches"):
machine.execute("teleports >&2 &")
machine.wait_for_text(r"(TELEports|Phone Number)")
machine.screenshot("teleports_open")
machine.succeed("pkill -f teleports")
with subtest("teleports localisation works"):
machine.execute("env LANG=de_DE.UTF-8 teleports >&2 &")
machine.wait_for_text("Telefonnummer")
machine.screenshot("teleports_localised")
'';
}

21
nixos/tests/tika.nix Normal file
View File

@ -0,0 +1,21 @@
{ lib, ... }:
{
name = "tika-server";
nodes = {
machine = { pkgs, ... }: {
services.tika = {
enable = true;
};
};
};
testScript = ''
machine.start()
machine.wait_for_unit("tika.service")
machine.wait_for_open_port(9998)
'';
meta.maintainers = [ lib.maintainers.drupol ];
}

View File

@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
owner = "sjaehn";
repo = pname;
rev = version;
sha256 = "sha256-/aLoLUpWu66VKd9lwjli+FZZctblrZUPSEsdYH85HwQ=";
hash = "sha256-/aLoLUpWu66VKd9lwjli+FZZctblrZUPSEsdYH85HwQ=";
fetchSubmodules = true;
};

View File

@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
owner = "mobian1";
repo = pname;
rev = version;
sha256 = "sha256-gc66XrrFyhF1TvrDECBfGQc+MiDtqZPxdCn0S/43XQU=";
hash = "sha256-gc66XrrFyhF1TvrDECBfGQc+MiDtqZPxdCn0S/43XQU=";
};
strictDeps = true;

View File

@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
owner = "jpcima";
repo = "DelayArchitect";
rev = "5abf4dfb7f92ba604d591a2c388d2d69a9055fe3";
sha256 = "sha256-LoK2pYPLzyJF7tDJPRYer6gKHNYzvFvX/d99TuOPECo=";
hash = "sha256-LoK2pYPLzyJF7tDJPRYer6gKHNYzvFvX/d99TuOPECo=";
fetchSubmodules = true;
};

View File

@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
repo = "dexed";
rev = "2c036316bcd512818aa9cc8129767ad9e0ec7132";
fetchSubmodules = true;
sha256 = "sha256-6buvA72YRlGjHWLPEZMr45lYYG6ZY+IWmylcHruX27g=";
hash = "sha256-6buvA72YRlGjHWLPEZMr45lYYG6ZY+IWmylcHruX27g=";
};
postPatch = ''

View File

@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
owner = "michaelwillis";
repo = "dragonfly-reverb";
rev = version;
sha256 = "sha256-YXJ4U5J8Za+DlXvp6QduvCHIVC2eRJ3+I/KPihCaIoY=";
hash = "sha256-YXJ4U5J8Za+DlXvp6QduvCHIVC2eRJ3+I/KPihCaIoY=";
fetchSubmodules = true;
};

View File

@ -29,7 +29,7 @@ let
owner = "grame-cncm";
repo = "faust";
rev = version;
sha256 = "sha256-0r7DjTrsNKZ5ZmWoA+Y9OXyJFUiUFZiPQb1skXXWYTw=";
hash = "sha256-0r7DjTrsNKZ5ZmWoA+Y9OXyJFUiUFZiPQb1skXXWYTw=";
fetchSubmodules = true;
};

View File

@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
repo = "Fire";
rev = "v${version}";
fetchSubmodules = true;
sha256 = "sha256-X3pzTrNd0G6BouCDkr3dukQTFDzZ7qblIYxFQActKGE=";
hash = "sha256-X3pzTrNd0G6BouCDkr3dukQTFDzZ7qblIYxFQActKGE=";
};
patches = [

View File

@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
owner = "Geonkick-Synthesizer";
repo = pname;
rev = "v${version}";
sha256 = "sha256-zoEC85QYcQMF92KvLBikYw1nDoSHaedpTDDqvoAtte0=";
hash = "sha256-zoEC85QYcQMF92KvLBikYw1nDoSHaedpTDDqvoAtte0=";
};
nativeBuildInputs = [ cmake pkg-config ];

View File

@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
owner = "brummer10";
repo = pname;
rev = "v${version}";
sha256 = "sha256-NvmFoOAQtAnKrZgzG1Shy1HuJEWgjJloQEx6jw59hag=";
hash = "sha256-NvmFoOAQtAnKrZgzG1Shy1HuJEWgjJloQEx6jw59hag=";
fetchSubmodules = true;
};

View File

@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
repo = pname;
rev = version;
fetchSubmodules = true;
sha256 = "sha256-esCulHphPD0gr0dsVBnRTvsGp56vHZmzdbz99mWq9R4=";
hash = "sha256-esCulHphPD0gr0dsVBnRTvsGp56vHZmzdbz99mWq9R4=";
};
buildInputs = [

View File

@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
repo = "jacktrip";
rev = "v${version}";
fetchSubmodules = true;
sha256 = "sha256-MUP+8Hjrj95D5SONIEsweB5j+kgEhLEWTKWBlEWLt94=";
hash = "sha256-MUP+8Hjrj95D5SONIEsweB5j+kgEhLEWTKWBlEWLt94=";
};
preConfigure = ''

View File

@ -36,7 +36,7 @@ python3.pkgs.buildPythonApplication rec {
repo = pname;
rev = version;
fetchSubmodules = true;
sha256 = "sha256-VPHQwy2+XR9R7toIN5sNFB91ddROlL7Scr8AKLgUzuo=";
hash = "sha256-VPHQwy2+XR9R7toIN5sNFB91ddROlL7Scr8AKLgUzuo=";
};
nativeBuildInputs = [

View File

@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
repo = "master_me";
rev = version;
fetchSubmodules = true;
sha256 = "sha256-FG3X1dOF9KRHHSnd5/zP+GrYCB2O0y+tnI5/l9tNhyE=";
hash = "sha256-FG3X1dOF9KRHHSnd5/zP+GrYCB2O0y+tnI5/l9tNhyE=";
};
nativeBuildInputs = [ pkg-config ];

View File

@ -21,7 +21,7 @@ mkDerivation rec {
owner = "ColinDuquesnoy";
repo = "MellowPlayer";
rev = version;
sha256 = "sha256-rsF2xQet7U8d4oGU/HgghvE3vvmkxjlGXPBlLD9mWTk=";
hash = "sha256-rsF2xQet7U8d4oGU/HgghvE3vvmkxjlGXPBlLD9mWTk=";
};
nativeBuildInputs = [ cmake pkg-config ];

View File

@ -5,7 +5,7 @@ python3Packages.buildPythonApplication rec {
version = "1.1.5";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-wg9zcOKfZQRhpyA1Cu5wvdwKpmrlcr2m9mrqBHgUXAQ=";
hash = "sha256-wg9zcOKfZQRhpyA1Cu5wvdwKpmrlcr2m9mrqBHgUXAQ=";
};
propagatedBuildInputs = with python3Packages; [ mopidy pykka ];

View File

@ -6,7 +6,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-PEAXnapiyxozijR053I7zQYRYLeDOV719L0QbO2r4r4=";
hash = "sha256-PEAXnapiyxozijR053I7zQYRYLeDOV719L0QbO2r4r4=";
};
propagatedBuildInputs = [

View File

@ -7,7 +7,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit version;
pname = "Mopidy-Jellyfin";
sha256 = "sha256-cZliraTxTAJ2dXaxttWI3x4wCkmEhEo33GTNtAYwgTc=";
hash = "sha256-cZliraTxTAJ2dXaxttWI3x4wCkmEhEo33GTNtAYwgTc=";
};
propagatedBuildInputs = [ mopidy python3Packages.unidecode python3Packages.websocket-client ];

View File

@ -6,7 +6,7 @@ pythonPackages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-RlCC+39zC+LeA/QDWPHYx5TrEwOgVrnvcH1Xg12qSLE=";
hash = "sha256-RlCC+39zC+LeA/QDWPHYx5TrEwOgVrnvcH1Xg12qSLE=";
};
propagatedBuildInputs = with pythonPackages; [ mopidy configobj ];

View File

@ -6,7 +6,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-CeLMRqj9cwBvQrOx7XHVV8MjDjwOosONVlsN2o+vTVM=";
hash = "sha256-CeLMRqj9cwBvQrOx7XHVV8MjDjwOosONVlsN2o+vTVM=";
};
propagatedBuildInputs = [ mopidy ];

View File

@ -7,7 +7,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit version;
pname = "Mopidy-MPRIS";
sha256 = "sha256-rHQgNIyludTEL7RDC8dIpyGTMOt1Tazn6i/orKlSP4U=";
hash = "sha256-rHQgNIyludTEL7RDC8dIpyGTMOt1Tazn6i/orKlSP4U=";
};
propagatedBuildInputs = [

View File

@ -7,7 +7,7 @@ pythonPackages.buildPythonApplication rec {
src = fetchPypi {
inherit version;
pname = "Mopidy-Muse";
sha256 = "sha256-CEPAPWtMrD+HljyqBB6EAyGVeOjzkvVoEywlE4XEJGs=";
hash = "sha256-CEPAPWtMrD+HljyqBB6EAyGVeOjzkvVoEywlE4XEJGs=";
};
propagatedBuildInputs = [

View File

@ -6,7 +6,7 @@ pythonPackages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-8FT4O4k0wEsdHA1vJaOW9UamJ3QLyO47HwL5XcSU3Pc=";
hash = "sha256-8FT4O4k0wEsdHA1vJaOW9UamJ3QLyO47HwL5XcSU3Pc=";
};
propagatedBuildInputs = [

View File

@ -7,7 +7,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit version;
pname = "Mopidy-Podcast";
sha256 = "sha256-grNPVEVM2PlpYhBXe6sabFjWVB9+q+apIRjcHUxH52A=";
hash = "sha256-grNPVEVM2PlpYhBXe6sabFjWVB9+q+apIRjcHUxH52A=";
};
propagatedBuildInputs = [

View File

@ -9,7 +9,7 @@ buildGoModule rec {
repo = "NoiseTorch";
rev = "v${version}";
fetchSubmodules = true;
sha256 = "sha256-gOPSMPH99Upi/30OnAdwSb7SaMV0i/uHB051cclfz6A=";
hash = "sha256-gOPSMPH99Upi/30OnAdwSb7SaMV0i/uHB051cclfz6A=";
};
vendorHash = null;

View File

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
repo = "odin2";
rev = "v${version}";
fetchSubmodules = true;
sha256 = "sha256-N96Nb7G6hqfh8DyMtHbttl/fRZUkS8f2KfPSqeMAhHY=";
hash = "sha256-N96Nb7G6hqfh8DyMtHbttl/fRZUkS8f2KfPSqeMAhHY=";
};
postPatch = ''

View File

@ -28,7 +28,7 @@ mkDerivation rec {
owner = "luciocarreras";
repo = "sayonara-player";
rev = version;
sha256 = "sha256-tJ/8tGNkmTwWRCpPy/h85SP/6QDAgcaKWJdM5MSAXJw=";
hash = "sha256-tJ/8tGNkmTwWRCpPy/h85SP/6QDAgcaKWJdM5MSAXJw=";
};
nativeBuildInputs = [ cmake ninja pkg-config qttools ];

View File

@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
owner = "sfztools";
repo = pname;
rev = version;
sha256 = "sha256-/G9tvJ4AcBSTmo44xDDKf6et1nSn/FV5m27ztDu10kI=";
hash = "sha256-/G9tvJ4AcBSTmo44xDDKf6et1nSn/FV5m27ztDu10kI=";
fetchSubmodules = true;
};

View File

@ -20,7 +20,7 @@ mkDerivation rec {
owner = "agateau";
repo = "sfxr-qt";
rev = version;
sha256 = "sha256-JAWDk7mGkPtQ5yaA6UT9hlAy770MHrTBhBP9G8UqFKg=";
hash = "sha256-JAWDk7mGkPtQ5yaA6UT9hlAy770MHrTBhBP9G8UqFKg=";
fetchSubmodules = true;
};

View File

@ -5,7 +5,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-XJMkiQR1FoeIPfAuJT22kfYJdc/ABuxExELh0EEev8k=";
hash = "sha256-XJMkiQR1FoeIPfAuJT22kfYJdc/ABuxExELh0EEev8k=";
};
preBuild = ''

View File

@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
owner = "surge-synthesizer";
repo = pname;
rev = "v${version}";
sha256 = "sha256-L7dzUUQNCwcuQavUx9hBH0FX5KSocfeYUv5qBcPD2Vg=";
hash = "sha256-L7dzUUQNCwcuQavUx9hBH0FX5KSocfeYUv5qBcPD2Vg=";
fetchSubmodules = true;
};

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
repo = "surge";
rev = "release_xt_${version}";
fetchSubmodules = true;
sha256 = "sha256-r8CZxjmH9lfCizc95jRB4je+R/74zMqRMlGIZxxxriw=";
hash = "sha256-r8CZxjmH9lfCizc95jRB4je+R/74zMqRMlGIZxxxriw=";
};
nativeBuildInputs = [

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
owner = "uade-music-player";
repo = "uade";
rev = "uade-${version}";
sha256 = "sha256-skPEXBQwyr326zCmZ2jwGxcBoTt3Y/h2hagDeeqbMpw=";
hash = "sha256-skPEXBQwyr326zCmZ2jwGxcBoTt3Y/h2hagDeeqbMpw=";
};
postPatch = ''

View File

@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
owner = "zamaudio";
repo = pname;
rev = version;
sha256 = "sha256-wT1BXQrcD+TI+trqx0ZVUmVLZMTDQgJI3dAvN54wy6Y=";
hash = "sha256-wT1BXQrcD+TI+trqx0ZVUmVLZMTDQgJI3dAvN54wy6Y=";
fetchSubmodules = true;
};

View File

@ -64,7 +64,7 @@ in stdenv.mkDerivation rec {
repo = pname;
rev = "refs/tags/${version}";
fetchSubmodules = true;
sha256 = "sha256-0siAx141DZx39facXWmKbsi0rHBNpobApTdey07EcXg=";
hash = "sha256-0siAx141DZx39facXWmKbsi0rHBNpobApTdey07EcXg=";
};
outputs = [ "out" "doc" ];

View File

@ -15,7 +15,7 @@ stdenv.mkDerivation {
repo = "aeon";
rev = "v${version}-aeon";
fetchSubmodules = true;
sha256 = "sha256-2MptLS12CUm9eUKm+V+yYpbLVwNyZeZ5HvAFyjEc4R4=";
hash = "sha256-2MptLS12CUm9eUKm+V+yYpbLVwNyZeZ5HvAFyjEc4R4=";
};
nativeBuildInputs = [ cmake pkg-config git doxygen graphviz ];

View File

@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
owner = "bitcoinunlimited";
repo = "BCHUnlimited";
rev = "BCHunlimited${version}";
sha256 = "sha256-d+giTXq/6HpysRAPT7yOl/B1x4zie9irs4O7cJsBqHg=";
hash = "sha256-d+giTXq/6HpysRAPT7yOl/B1x4zie9irs4O7cJsBqHg=";
};
nativeBuildInputs = [ pkg-config autoreconfHook python3 ]

View File

@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
owner = "haven-protocol-org";
repo = "haven-main";
rev = "v${version}";
sha256 = "sha256-craPgQtavSatoVzduIQCWuakIBeXWFWa9E0ALau4AcI=";
hash = "sha256-craPgQtavSatoVzduIQCWuakIBeXWFWa9E0ALau4AcI=";
fetchSubmodules = true;
};

View File

@ -36,7 +36,7 @@ stdenv.mkDerivation (finalAttrs: {
repo = "LibreSprite";
rev = "v${finalAttrs.version}";
fetchSubmodules = true;
sha256 = "sha256-d8GmVHYomDb74iSeEhJEVTHvbiVXggXg7xSqIKCUSzY=";
hash = "sha256-d8GmVHYomDb74iSeEhJEVTHvbiVXggXg7xSqIKCUSzY=";
};
# Backport GCC 13 build fix

View File

@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
repo = "Marker";
rev = version;
fetchSubmodules = true;
sha256 = "sha256-HhDhigQ6Aqo8R57Yrf1i69sM0feABB9El5R5OpzOyB0=";
hash = "sha256-HhDhigQ6Aqo8R57Yrf1i69sM0feABB9El5R5OpzOyB0=";
};
nativeBuildInputs = [

View File

@ -8,7 +8,7 @@ mkDerivation rec {
owner = "dail8859";
repo = "NotepadNext";
rev = "v${version}";
sha256 = "sha256-fwHTsTKcVaeIv0NQQBjzfXscGDfXr3X/yH07YnYh3fU=";
hash = "sha256-fwHTsTKcVaeIv0NQQBjzfXscGDfXr3X/yH07YnYh3fU=";
# External dependencies - https://github.com/dail8859/NotepadNext/issues/135
fetchSubmodules = true;
};

View File

@ -30,21 +30,21 @@ let
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
sha256 = {
x86_64-linux = "0bzf0mx1rgndpdd4a97kr01xsgsgp86gyscg8js2cvaad4265bmv";
x86_64-darwin = "1m7f91cqbbv00difvfqld8fqkj9kvyddihmzi3zyzn4gfkv8gvf0";
aarch64-linux = "09mxsk4qkq34yg1sd67cdasfxwdhdzcfij50fv1nl3kdjzp2i0iz";
aarch64-darwin = "1jxjzfz6gr0pcp2anwjqwm38ma2i8fnzf5zpscfdklrlbhf438k2";
armv7l-linux = "1yp4npgw4dkx8halsr1vm5ll1w4phx67dwd4krz1914mddx7x2kr";
x86_64-linux = "0ighhwwmc8cxdabq2wkzzr21sv6zaj90pnqi2cy8krfwm88w6jc0";
x86_64-darwin = "1fbpw0xib9vm47ab028frg789vgmkpwcdxs8m2in7ywrckl6xycy";
aarch64-linux = "0n0f518xl1fh17llsd159ldi50z2vihkghfq7plfnbnngpf0swy9";
aarch64-darwin = "03v3869yblx03j0c3njlvg7qgdmqrg8jvj9s1iyhqw1xpb2lc41c";
armv7l-linux = "12dv0vqqzriqr8ysjjx62hy2b41dky2p0rcr11wznqi259bryckr";
}.${system} or throwSystem;
in
callPackage ./generic.nix rec {
# Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem.
version = "1.91.0";
version = "1.91.1";
pname = "vscode" + lib.optionalString isInsiders "-insiders";
# This is used for VS Code - Remote SSH test
rev = "ea1445cc7016315d0f5728f8e8b12a45dc0a7286";
rev = "f1e16e1e6214d7c44d078b1f0607b2388f29d729";
executableName = "code" + lib.optionalString isInsiders "-insiders";
longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
@ -68,7 +68,7 @@ in
src = fetchurl {
name = "vscode-server-${rev}.tar.gz";
url = "https://update.code.visualstudio.com/commit:${rev}/server-linux-x64/stable";
sha256 = "08mgfrwiji16q8x8kwmw3pdmb0325hfr9pd2fa5g5kmy9gnfw38v";
sha256 = "0k38pkfz9kpbpx0n50iq531mrm7qxqggks092cs4zicv815jk8wg";
};
};

View File

@ -54,7 +54,7 @@ stdenv.mkDerivation rec {
owner = "shiiion";
repo = "dolphin";
rev = version;
sha256 = "sha256-gc4+ofoLKR+cvm+SaWEnGaKrSjWMKq7pF6pEIi75Rtk=";
hash = "sha256-gc4+ofoLKR+cvm+SaWEnGaKrSjWMKq7pF6pEIi75Rtk=";
fetchSubmodules = true;
};

View File

@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
owner = "flyinghead";
repo = "flycast";
rev = "v${version}";
sha256 = "sha256-YFLSUaEikwLPglHh3t8sHiKHRn5cchKzzkJlZDdgVsU=";
hash = "sha256-YFLSUaEikwLPglHh3t8sHiKHRn5cchKzzkJlZDdgVsU=";
fetchSubmodules = true;
};

View File

@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
owner = "mr_goldberg";
repo = "goldberg_emulator";
rev = version;
sha256 = "sha256-goOgMNjtDmIKOAv9sZwnPOY0WqTN90LFJ5iEp3Vkzog=";
hash = "sha256-goOgMNjtDmIKOAv9sZwnPOY0WqTN90LFJ5iEp3Vkzog=";
};
# It attempts to install windows-only libraries which we never build

View File

@ -26,7 +26,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "openMSX";
repo = "openMSX";
rev = "RELEASE_${builtins.replaceStrings ["."] ["_"] finalAttrs.version}";
sha256 = "sha256-5ULljLmEDGFp32rnrXKLfL6P3ad2STJUNngBuWlRCbc=";
hash = "sha256-5ULljLmEDGFp32rnrXKLfL6P3ad2STJUNngBuWlRCbc=";
fetchSubmodules = true;
};

View File

@ -2,20 +2,22 @@
, stdenv
, fetchFromGitHub
, gradle_7
, perl
, makeWrapper
, writeText
, jdk
, gsettings-desktop-schemas
}:
let
gradle = gradle_7;
in
stdenv.mkDerivation (finalAttrs: {
pname = "mucommander";
version = "1.3.0-1";
src = fetchFromGitHub {
owner = "mucommander";
repo = "mucommander";
rev = version;
rev = finalAttrs.version;
sha256 = "sha256-rSHHv96L2EHQuKBSAdpfi1XGP2u9o2y4g1+65FHWFMw=";
};
@ -23,72 +25,19 @@ let
# there is no .git anyway
substituteInPlace build.gradle \
--replace "git = grgit.open(dir: project.rootDir)" "" \
--replace "id 'org.ajoberstar.grgit' version '3.1.1'" "" \
--replace "revision = git.head().id" "revision = '${version}'"
--replace "revision = git.head().id" "revision = '${finalAttrs.version}'"
'';
# fake build to pre-download deps into fixed-output derivation
deps = stdenv.mkDerivation {
pname = "mucommander-deps";
inherit version src postPatch;
nativeBuildInputs = [ gradle_7 perl ];
buildPhase = ''
export GRADLE_USER_HOME=$(mktemp -d)
gradle --no-daemon tgz
'';
# perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
# reproducible by sorting
installPhase = ''
find $GRADLE_USER_HOME/caches/modules-2 -type f -regex '.*\.\(jar\|pom\)' \
| LC_ALL=C sort \
| perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
| sh
# copy maven-metadata.xml for commons-codec
# thankfully there is only one xml
cp $GRADLE_USER_HOME/caches/modules-2/resources-2.1/*/*/maven-metadata.xml $out/commons-codec/commons-codec/maven-metadata.xml
'';
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = "sha256-9tCcUg7hDNbkZiQEWtVRsUUfms73aU+vt5tQsfknM+E=";
nativeBuildInputs = [ gradle makeWrapper ];
mitmCache = gradle.fetchDeps {
inherit (finalAttrs) pname;
data = ./deps.json;
};
in
stdenv.mkDerivation rec {
pname = "mucommander";
inherit version src postPatch;
nativeBuildInputs = [ gradle_7 perl makeWrapper ];
__darwinAllowLocalNetworking = true;
# Point to our local deps repo
gradleInit = writeText "init.gradle" ''
logger.lifecycle 'Replacing Maven repositories with ${deps}...'
gradle.projectsLoaded {
rootProject.allprojects {
buildscript {
repositories {
clear()
maven { url '${deps}' }
}
}
repositories {
clear()
maven { url '${deps}' }
}
}
}
settingsEvaluated { settings ->
settings.pluginManagement {
repositories {
maven { url '${deps}' }
}
}
}
'';
buildPhase = ''
export GRADLE_USER_HOME=$(mktemp -d)
gradle --offline --init-script ${gradleInit} --no-daemon tgz
'';
gradleBuildTask = "tgz";
installPhase = ''
mkdir -p $out/share/mucommander
@ -107,4 +56,4 @@ stdenv.mkDerivation rec {
platforms = platforms.all;
mainProgram = "mucommander";
};
}
})

File diff suppressed because it is too large Load Diff

View File

@ -18,7 +18,7 @@ mkDerivation rec {
# latest revision is not tagged upstream, use commit sha in the meantime
#rev = "v_${version}";
rev = "cc75d5744965cc6973323f5bb77f00b0b0153dce";
sha256 = "sha256-z/LFNRFdQQFxEWyAjcuGezRbTsv8z6Q6fK8NLjP4HNM=";
hash = "sha256-z/LFNRFdQQFxEWyAjcuGezRbTsv8z6Q6fK8NLjP4HNM=";
};
buildInputs =

View File

@ -1,5 +1,4 @@
{ lib
, stdenv
, mkDerivation
, fetchFromGitHub
, makeDesktopItem
@ -31,7 +30,7 @@ mkDerivation rec {
owner = "CloudCompare";
repo = "CloudCompare";
rev = "v${version}";
hash = "sha256-KVbFGim2Nqhs5PAQiBNTmJStmnEINTeopiqqEBBniHc=";
hash = "sha256-a/0lf3Mt5ZpLFRM8jAoqZer8pY1ROgPRY4dPt34Bk3E=";
fetchSubmodules = true;
};

View File

@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
repo = "Foxotron";
rev = version;
fetchSubmodules = true;
sha256 = "sha256-s1eWZMVitVSP7nJJ5wXvnV8uI6yto7LmvlvocOwVAxw=";
hash = "sha256-s1eWZMVitVSP7nJJ5wXvnV8uI6yto7LmvlvocOwVAxw=";
};
patches = [

View File

@ -19,7 +19,7 @@
python3.pkgs.buildPythonApplication rec {
pname = "komikku";
version = "1.50.0";
version = "1.51.1";
format = "other";
@ -28,7 +28,7 @@ python3.pkgs.buildPythonApplication rec {
owner = "valos";
repo = "Komikku";
rev = "v${version}";
hash = "sha256-lyBXMctEL8Z6rscsSDHh7xLhjvnpN2q4qMVV2ek9Cyk=";
hash = "sha256-b4RyAA32qQHbnX7AC0w64BM+y5uZCeZgd9SKQdJaJWc=";
};
nativeBuildInputs = [

View File

@ -27,7 +27,7 @@ mkDerivation rec {
owner = "stuko";
repo = "ovito";
rev = "v${version}";
sha256 = "sha256-Z3uwjOYJ7di/LLllbzdKjzUE7m119i03bA8dJPqhxWA=";
hash = "sha256-Z3uwjOYJ7di/LLllbzdKjzUE7m119i03bA8dJPqhxWA=";
};
nativeBuildInputs = [

View File

@ -21,7 +21,7 @@ rustPlatform.buildRustPackage rec {
repo = "pizarra-gtk";
rev = "v${version}";
fetchSubmodules = true;
sha256 = "sha256-vnjhveX3EVIfJLiHWhlvhoPcRx1a8Nnjj7hIaPgU3Zw=";
hash = "sha256-vnjhveX3EVIfJLiHWhlvhoPcRx1a8Nnjj7hIaPgU3Zw=";
};
cargoHash = "sha256-btvMUKADGHlXLmeKF1K9Js44SljZ0MejGId8aDwPhVU=";

View File

@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
repo = pname;
rev = "v${version}";
fetchSubmodules = true;
sha256 = "sha256-+qCRHP0AbYOQBAE4zK2cmWPHZGWjjxC3DZPNm8sgBzs=";
hash = "sha256-+qCRHP0AbYOQBAE4zK2cmWPHZGWjjxC3DZPNm8sgBzs=";
};
nativeBuildInputs = [ cmake wrapGAppsHook3 ];

View File

@ -1,4 +1,4 @@
{ stdenv, mkDerivation, lib
{ mkDerivation, lib
, extra-cmake-modules, kdoctools
, breeze-icons, chmlib, discount, djvulibre, ebook_tools, kactivities
, karchive, kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons

View File

@ -7,7 +7,7 @@ mkDerivation rec {
owner = "pholy";
repo = "OSCAR-code";
rev = "v${version}";
sha256 = "sha256-FBHbPtMZeIgcR1pQflfEWK2FS8bquctXaeY/yaZofHg=";
hash = "sha256-FBHbPtMZeIgcR1pQflfEWK2FS8bquctXaeY/yaZofHg=";
};
buildInputs = [ qtbase qttools qtserialport libGLU ];

View File

@ -21,13 +21,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "albert";
version = "0.24.2";
version = "0.24.3";
src = fetchFromGitHub {
owner = "albertlauncher";
repo = "albert";
rev = "v${finalAttrs.version}";
sha256 = "sha256-Z88amcPb2jCJduRu8CGQ20y2o5cXmL4rpRL0hGCEYgM=";
hash = "sha256-9vR6G/9FSy1mqZCo19Mf0RuvW63DbnhEzp/h0p6eXqs=";
fetchSubmodules = true;
};

View File

@ -12,7 +12,7 @@ mkDerivation rec {
owner = "debauchee";
repo = pname;
rev = "v${version}";
sha256 = "sha256-2tHqLF3zS3C4UnOVIZfpcuzaemC9++nC7lXgFnFSfKU=";
hash = "sha256-2tHqLF3zS3C4UnOVIZfpcuzaemC9++nC7lXgFnFSfKU=";
fetchSubmodules = true;
};

View File

@ -26,7 +26,7 @@ buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-3fVo+B71SsJs+XF4+FWH2nz0ouTnpC/02fXYr1C9Jrk=";
hash = "sha256-3fVo+B71SsJs+XF4+FWH2nz0ouTnpC/02fXYr1C9Jrk=";
};
# Relax requirements from "==" to ">="

View File

@ -7,7 +7,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-AjE+1MkSkZOtEUPKEPBKQ3n+aOB8cwsorBpL5skNskU=";
hash = "sha256-AjE+1MkSkZOtEUPKEPBKQ3n+aOB8cwsorBpL5skNskU=";
};
doCheck = false; # there are no tests

View File

@ -31,7 +31,7 @@ stdenv.mkDerivation rec{
owner = "corectrl";
repo = "corectrl";
rev = "v${version}";
sha256 = "sha256-E2Dqe1IYXjFb/nShQX+ARZW/AWpNonRimb3yQ6/2CFw=";
hash = "sha256-E2Dqe1IYXjFb/nShQX+ARZW/AWpNonRimb3yQ6/2CFw=";
};
patches = [
./polkit-dir.patch

View File

@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
owner = "Cubitect";
repo = pname;
rev = version;
sha256 = "sha256-UUvNSTM98r8D/Q+/pPTXwGzW4Sl1qhgem4WsFRfybuo=";
hash = "sha256-UUvNSTM98r8D/Q+/pPTXwGzW4Sl1qhgem4WsFRfybuo=";
fetchSubmodules = true;
};

View File

@ -13,7 +13,7 @@ buildGoModule rec {
owner = "WhyNotHugo";
repo = "darkman";
rev = "v${version}";
sha256 = "sha256-FaEpVy/0PqY5Bmw00hMyFZb9wcwYwEuCKMatYN8Xk3o=";
hash = "sha256-FaEpVy/0PqY5Bmw00hMyFZb9wcwYwEuCKMatYN8Xk3o=";
};
patches = [

View File

@ -1,5 +1,4 @@
{ lib
, stdenv
, buildGoModule
, fetchFromGitHub
, makeWrapper

View File

@ -13,7 +13,7 @@ mkDerivation rec {
repo = pname;
rev = "v${version}";
fetchSubmodules = true;
sha256 = "sha256-bKMAyONy1Udd+2nDVEMrtIsnfqrNuBVMWU7nCqvZ+3E=";
hash = "sha256-bKMAyONy1Udd+2nDVEMrtIsnfqrNuBVMWU7nCqvZ+3E=";
};
nativeBuildInputs = [ cmake gcc-arm-embedded python3Packages.pillow qttools ];

View File

@ -88,7 +88,6 @@ python.pkgs.buildPythonApplication {
pysocks
qrcode
requests
tlslite-ng
certifi
jsonpatch
# plugins

View File

@ -54,7 +54,6 @@ python3.pkgs.buildPythonApplication {
pysocks
qrcode
requests
tlslite-ng
certifi
jsonpatch
# plugins

View File

@ -70,7 +70,6 @@ python3.pkgs.buildPythonApplication {
pysocks
qrcode
requests
tlslite-ng
certifi
# plugins
btchip-python

View File

@ -8,7 +8,7 @@ stdenv.mkDerivation {
owner = "fetchmail";
repo = "fetchmail";
rev = "30b368fb8660d8fec08be1cdf2606c160b4bcb80";
sha256 = "sha256-83D2YlFCODK2YD+oLICdim2NtNkkJU67S3YLi8Q6ga8=";
hash = "sha256-83D2YlFCODK2YD+oLICdim2NtNkkJU67S3YLi8Q6ga8=";
};
buildInputs = with pkgs; [ openssl python3 ];

View File

@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
owner = "Kerenoc";
repo = "GCstar";
rev = "v${version}";
sha256 = "sha256-37yjKI4l/nUzDnra1AGxDQxNafMsLi1bSifG6pz33zg=";
hash = "sha256-37yjKI4l/nUzDnra1AGxDQxNafMsLi1bSifG6pz33zg=";
};
nativeBuildInputs = [ wrapGAppsHook3 ];

View File

@ -1,4 +1,4 @@
{ lib, stdenv, rustPlatform, fetchCrate }:
{ lib, rustPlatform, fetchCrate }:
rustPlatform.buildRustPackage rec {
pname = "globe-cli";

View File

@ -1,9 +1,7 @@
{ stdenv
, lib
{ lib
, fetchFromGitHub
, python3Packages
, wrapGAppsHook4
, gtk4
, meson
, ninja
, pkg-config

View File

@ -1,5 +1,4 @@
{ stdenv
, lib
{ lib
, fetchFromGitHub
, wrapGAppsHook4
, meson

View File

@ -1,9 +1,5 @@
{ lib, stdenv, requireFile, bc, version, src, eulaDate }:
let
license_dir = "~/.config/houdini";
in
stdenv.mkDerivation rec {
{ stdenv, bc, version, src, eulaDate }:
stdenv.mkDerivation {
inherit version src;
pname = "houdini-runtime";

View File

@ -1,11 +1,11 @@
{ lib, stdenv, requireFile, callPackage}:
{ requireFile, callPackage }:
callPackage ./runtime-build.nix rec {
version = "20.0.688";
version = "20.5.278";
eulaDate = "2021-10-13";
src = requireFile rec {
src = requireFile {
name = "houdini-${version}-linux_x86_64_gcc11.2.tar.gz";
sha256 = "99f9088824c328de9d351f037f26ff1cba960fbd9b4e2ed1d52601680d3512a6";
hash = "sha256-O5oAoiDiu+xrmDfTnilPqZue8+dXVTHnK0yrX6moTSc=";
url = "https://www.sidefx.com/download/daily-builds/?production=true";
};
}

View File

@ -1,5 +1,4 @@
{ stdenv
, lib
{ lib
, appstream-glib
, blueprint-compiler
, desktop-file-utils

View File

@ -1,5 +1,4 @@
{ stdenv
, lib
{ lib
, buildGoModule
, fetchFromGitea
}:

Some files were not shown because too many files have changed in this diff Show More