Merge master into staging-next

This commit is contained in:
github-actions[bot] 2025-01-12 12:05:15 +00:00 committed by GitHub
commit 507f7fe91e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
76 changed files with 741 additions and 570 deletions

View file

@ -15906,6 +15906,12 @@
email = "nathaniel.brough@gmail.com";
name = "Nathaniel Brough";
};
nathanregner = {
email = "nathanregner@gmail.com";
github = "nathanregner";
githubId = 9659564;
name = "Nathan Regner";
};
nathanruiz = {
email = "nathanruiz@protonmail.com";
github = "nathanruiz";

View file

@ -325,6 +325,10 @@
- Following [changes in Mint 22](https://github.com/linuxmint/mintupgrade/commit/f239cde908288b8c250f938e7311c7ffbc16bd59) we are no longer overriding Qt application styles. You can still restore the previous default with `qt.style = "gtk2"` and `qt.platformTheme = "gtk2"`.
- Following [changes in Mint 20](https://github.com/linuxmint/mintupgrade-legacy/commit/ce15d946ed9a8cb8444abd25088edd824bfb18f6) we are replacing xplayer with celluloid since xplayer is no longer maintained.
- Pantheon has been updated to 8, please check the [upstream announcement](https://blog.elementary.io/os-8-available-now/) for more details.
- Same as elementary OS, the X11 session is named "Classic Session" and the Wayland session is named "Secure Session".
- The dock has been rewritten, you need to manually migrate the dock items on update. You can check `~/.config/plank/dock1/launchers/` for your previous settings.
- Xfce has been updated to 4.20, please check the [upstream feature tour](https://www.xfce.org/about/tour420) for more details.
- Wayland session is still [experimental](https://wiki.xfce.org/releng/wayland_roadmap) and requires opt-in using `enableWaylandSession` option.
- Overriding Wayland compositor is possible using `enableWaylandSession` option, but you might need to take care [`xfce4-session`](https://gitlab.xfce.org/xfce/xfce4-session/-/merge_requests/49), [`dbus-update-activation-environment`](https://github.com/labwc/labwc/blob/eaf11face68ee1f1bcc7ce1498304ca8c108c8ba/src/config/session.c#L234) and [`systemctl --user import-environment`](https://github.com/labwc/labwc/blob/eaf11face68ee1f1bcc7ce1498304ca8c108c8ba/src/config/session.c#L239) on startup.

View file

@ -13,9 +13,7 @@ let
askPasswordWrapper = pkgs.writeScript "ssh-askpass-wrapper" ''
#! ${pkgs.runtimeShell} -e
export DISPLAY="$(systemctl --user show-environment | ${pkgs.gnused}/bin/sed 's/^DISPLAY=\(.*\)/\1/; t; d')"
export XAUTHORITY="$(systemctl --user show-environment | ${pkgs.gnused}/bin/sed 's/^XAUTHORITY=\(.*\)/\1/; t; d')"
export WAYLAND_DISPLAY="$(systemctl --user show-environment | ${pkgs.gnused}/bin/sed 's/^WAYLAND_DISPLAY=\(.*\)/\1/; t; d')"
eval export $(systemctl --user show-environment | ${pkgs.coreutils}/bin/grep -E '^(DISPLAY|WAYLAND_DISPLAY|XAUTHORITY)=')
exec ${cfg.askPassword} "$@"
'';

View file

@ -2,7 +2,7 @@
{ config, lib, pkgs, ... }:
{
meta = with lib; {
maintainers = with lib.maintainers; [ ] ++ lib.teams.pantheon.members;
maintainers = with lib.maintainers; [ ];
};
###### interface

View file

@ -18,6 +18,13 @@ let
};
in
{
imports = [
(lib.mkRenamedOptionModule
[ "services" "klipper" "mutableConfigFolder" ]
[ "services" "klipper" "configDir" ]
)
];
##### interface
options = {
services.klipper = {
@ -52,23 +59,22 @@ in
default = false;
example = true;
description = ''
Whether to copy the config to a mutable directory instead of using the one directly from the nix store.
This will only copy the config if the file at `services.klipper.mutableConfigPath` doesn't exist.
Whether to manage the config outside of NixOS.
It will still be initialized with the defined NixOS config if the file doesn't already exist.
'';
};
mutableConfigFolder = lib.mkOption {
configDir = lib.mkOption {
type = lib.types.path;
default = "/var/lib/klipper";
description = "Path to mutable Klipper config file.";
description = "Path to Klipper config file.";
};
configFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = ''
Path to default Klipper config.
'';
description = "Path to default Klipper config.";
};
octoprintIntegration = lib.mkOption {
@ -162,11 +168,6 @@ in
}
];
environment.etc = lib.mkIf (!cfg.mutableConfig) {
"klipper.cfg".source =
if cfg.settings != null then format.generate "klipper.cfg" cfg.settings else cfg.configFile;
};
services.klipper = lib.mkIf cfg.octoprintIntegration {
user = config.services.octoprint.user;
group = config.services.octoprint.group;
@ -178,9 +179,7 @@ in
"--input-tty=${cfg.inputTTY}"
+ lib.optionalString (cfg.apiSocket != null) " --api-server=${cfg.apiSocket}"
+ lib.optionalString (cfg.logFile != null) " --logfile=${cfg.logFile}";
printerConfigPath =
if cfg.mutableConfig then cfg.mutableConfigFolder + "/printer.cfg" else "/etc/klipper.cfg";
printerConfigFile =
printerConfig =
if cfg.settings != null then format.generate "klipper.cfg" cfg.settings else cfg.configFile;
in
{
@ -188,19 +187,33 @@ in
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
preStart = ''
mkdir -p ${cfg.mutableConfigFolder}
${lib.optionalString (cfg.mutableConfig) ''
[ -e ${printerConfigPath} ] || {
cp ${printerConfigFile} ${printerConfigPath}
chmod +w ${printerConfigPath}
mkdir -p ${cfg.configDir}
pushd ${cfg.configDir}
if [ -e printer.cfg ]; then
${
if cfg.mutableConfig then
":"
else
''
# Backup existing config using the same date format klipper uses for SAVE_CONFIG
old_config="printer-$(date +"%Y%m%d_%H%M%S").cfg"
mv printer.cfg "$old_config"
# Preserve SAVE_CONFIG section from the existing config
cat ${printerConfig} <(printf "\n") <(sed -n '/#*# <---------------------- SAVE_CONFIG ---------------------->/,$p' "$old_config") > printer.cfg
${pkgs.diffutils}/bin/cmp printer.cfg "$old_config" && rm "$old_config"
''
}
''}
mkdir -p ${cfg.mutableConfigFolder}/gcodes
else
cat ${printerConfig} > printer.cfg
fi
popd
'';
restartTriggers = lib.optional (!cfg.mutableConfig) [ printerConfig ];
serviceConfig =
{
ExecStart = "${cfg.package}/bin/klippy ${klippyArgs} ${printerConfigPath}";
ExecStart = "${cfg.package}/bin/klippy ${klippyArgs} ${cfg.configDir}/printer.cfg";
RuntimeDirectory = "klipper";
StateDirectory = "klipper";
SupplementaryGroups = [ "dialout" ];

View file

@ -112,27 +112,23 @@ in
# https://github.com/elementary/greeter/issues/368
services.displayManager.defaultSession = mkDefault "pantheon";
services.xserver.displayManager.sessionCommands = ''
if test "$XDG_CURRENT_DESKTOP" = "Pantheon"; then
true
${concatMapStrings (p: ''
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
fi
environment.extraInit = ''
${concatMapStrings (p: ''
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
fi
if [ -d "${p}/lib/girepository-1.0" ]; then
export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
fi
'') cfg.sessionPath}
fi
if [ -d "${p}/lib/girepository-1.0" ]; then
export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
fi
'') cfg.sessionPath}
'';
# Default services
hardware.bluetooth.enable = mkDefault true;
security.polkit.enable = true;
services.accounts-daemon.enable = true;
services.bamf.enable = true;
services.colord.enable = mkDefault true;
services.fwupd.enable = mkDefault true;
# TODO: Enable once #177946 is resolved
@ -232,7 +228,8 @@ in
])) config.environment.pantheon.excludePackages;
# Settings from elementary-default-settings
environment.etc."gtk-3.0/settings.ini".source = "${pkgs.pantheon.elementary-default-settings}/etc/gtk-3.0/settings.ini";
# GTK4 will try both $XDG_CONFIG_DIRS/gtk-4.0 and ${gtk4}/etc/gtk-4.0, but not /etc/gtk-4.0.
environment.etc."xdg/gtk-4.0/settings.ini".source = "${pkgs.pantheon.elementary-default-settings}/etc/gtk-4.0/settings.ini";
xdg.mime.enable = true;
xdg.icons.enable = true;

View file

@ -15,6 +15,7 @@
system.activationScripts.etc = lib.stringAfter [
"users"
"groups"
"specialfs"
] config.system.build.etcActivationCommands;
}
@ -48,7 +49,7 @@
boot.initrd.systemd = {
mounts = [
{
where = "/run/etc-metadata";
where = "/run/nixos-etc-metadata";
what = "/etc-metadata-image";
type = "erofs";
options = "loop,ro";
@ -83,7 +84,7 @@
"relatime"
"redirect_dir=on"
"metacopy=on"
"lowerdir=/run/etc-metadata::/etc-basedir"
"lowerdir=/run/nixos-etc-metadata::/etc-basedir"
]
++ lib.optionals config.system.etc.overlay.mutable [
"rw"
@ -113,7 +114,7 @@
unitConfig = {
RequiresMountsFor = [
"/sysroot/nix/store"
"/run/etc-metadata"
"/run/nixos-etc-metadata"
];
DefaultDependencies = false;
};

View file

@ -250,78 +250,100 @@ in
);
in
if config.system.etc.overlay.enable then
#bash
''
# This script atomically remounts /etc when switching configuration. On a (re-)boot
# this should not run because /etc is mounted via a systemd mount unit
# instead. To a large extent this mimics what composefs does. Because
# This script atomically remounts /etc when switching configuration.
# On a (re-)boot this should not run because /etc is mounted via a
# systemd mount unit instead.
# The activation script can also be called in cases where we didn't have
# an initrd though, like for instance when using nixos-enter,
# so we cannot assume that /etc has already been mounted.
#
# To a large extent this mimics what composefs does. Because
# it's relatively simple, however, we avoid the composefs dependency.
# Since this script is not idempotent, it should not run when etc hasn't
# changed.
if [[ ! $IN_NIXOS_SYSTEMD_STAGE1 ]] && [[ "${config.system.build.etc}/etc" != "$(readlink -f /run/current-system/etc)" ]]; then
echo "remounting /etc..."
tmpMetadataMount=$(mktemp --directory -t nixos-etc-metadata.XXXXXXXXXX)
${lib.optionalString config.system.etc.overlay.mutable ''
# These directories are usually created in initrd,
# but we need to create them here when we didn't we're called directly,
# for instance by nixos-enter
mkdir --parents /.rw-etc/upper /.rw-etc/work
chmod --recursive 0755 /.rw-etc
''}
tmpMetadataMount=$(TMPDIR="/run" mktemp --directory -t nixos-etc-metadata.XXXXXXXXXX)
mount --type erofs -o ro ${config.system.build.etcMetadataImage} $tmpMetadataMount
# Mount the new /etc overlay to a temporary private mount.
# This needs the indirection via a private bind mount because you
# cannot move shared mounts.
tmpEtcMount=$(mktemp --directory -t nixos-etc.XXXXXXXXXX)
mount --bind --make-private $tmpEtcMount $tmpEtcMount
mount --type overlay overlay \
--options lowerdir=$tmpMetadataMount::${config.system.build.etcBasedir},${etcOverlayOptions} \
$tmpEtcMount
# There was no previous /etc mounted. This happens when we're called
# directly without an initrd, like with nixos-enter.
if ! mountpoint -q /etc; then
mount --type overlay overlay \
--options lowerdir=$tmpMetadataMount::${config.system.build.etcBasedir},${etcOverlayOptions} \
/etc
else
# Mount the new /etc overlay to a temporary private mount.
# This needs the indirection via a private bind mount because you
# cannot move shared mounts.
tmpEtcMount=$(TMPDIR="/run" mktemp --directory -t nixos-etc.XXXXXXXXXX)
mount --bind --make-private $tmpEtcMount $tmpEtcMount
mount --type overlay overlay \
--options lowerdir=$tmpMetadataMount::${config.system.build.etcBasedir},${etcOverlayOptions} \
$tmpEtcMount
# Before moving the new /etc overlay under the old /etc, we have to
# move mounts on top of /etc to the new /etc mountpoint.
findmnt /etc --submounts --list --noheading --kernel --output TARGET | while read -r mountPoint; do
if [[ "$mountPoint" = "/etc" ]]; then
continue
fi
# Before moving the new /etc overlay under the old /etc, we have to
# move mounts on top of /etc to the new /etc mountpoint.
findmnt /etc --submounts --list --noheading --kernel --output TARGET | while read -r mountPoint; do
if [[ "$mountPoint" = "/etc" ]]; then
continue
fi
tmpMountPoint="$tmpEtcMount/''${mountPoint:5}"
${
if config.system.etc.overlay.mutable then
''
if [[ -f "$mountPoint" ]]; then
touch "$tmpMountPoint"
elif [[ -d "$mountPoint" ]]; then
mkdir -p "$tmpMountPoint"
fi
''
else
''
if [[ ! -e "$tmpMountPoint" ]]; then
echo "Skipping undeclared mountpoint in environment.etc: $mountPoint"
continue
fi
''
}
mount --bind "$mountPoint" "$tmpMountPoint"
done
tmpMountPoint="$tmpEtcMount/''${mountPoint:5}"
${
if config.system.etc.overlay.mutable then
''
if [[ -f "$mountPoint" ]]; then
touch "$tmpMountPoint"
elif [[ -d "$mountPoint" ]]; then
mkdir -p "$tmpMountPoint"
fi
''
else
''
if [[ ! -e "$tmpMountPoint" ]]; then
echo "Skipping undeclared mountpoint in environment.etc: $mountPoint"
continue
fi
''
}
mount --bind "$mountPoint" "$tmpMountPoint"
done
# Move the new temporary /etc mount underneath the current /etc mount.
#
# This should eventually use util-linux to perform this move beneath,
# however, this functionality is not yet in util-linux. See this
# tracking issue: https://github.com/util-linux/util-linux/issues/2604
${pkgs.move-mount-beneath}/bin/move-mount --move --beneath $tmpEtcMount /etc
# Move the new temporary /etc mount underneath the current /etc mount.
#
# This should eventually use util-linux to perform this move beneath,
# however, this functionality is not yet in util-linux. See this
# tracking issue: https://github.com/util-linux/util-linux/issues/2604
${pkgs.move-mount-beneath}/bin/move-mount --move --beneath $tmpEtcMount /etc
# Unmount the top /etc mount to atomically reveal the new mount.
umount --lazy --recursive /etc
# Unmount the top /etc mount to atomically reveal the new mount.
umount --lazy --recursive /etc
# Unmount the temporary mount
umount --lazy "$tmpEtcMount"
rmdir "$tmpEtcMount"
# Unmount the temporary mount
umount --lazy "$tmpEtcMount"
rmdir "$tmpEtcMount"
fi
# Unmount old metadata mounts
# For some reason, `findmnt /tmp --submounts` does not show the nested
# mounts. So we'll just find all mounts of type erofs and filter on the
# name of the mountpoint.
findmnt --type erofs --list --kernel --output TARGET | while read -r mountPoint; do
if [[ "$mountPoint" =~ ^/tmp/nixos-etc-metadata\..{10}$ &&
if [[ ("$mountPoint" =~ ^/run/nixos-etc-metadata\..{10}$ || "$mountPoint" =~ ^/run/nixos-etc-metadata$ ) &&
"$mountPoint" != "$tmpMetadataMount" ]]; then
umount --lazy $mountPoint
umount --lazy "$mountPoint"
rmdir "$mountPoint"
fi
done

View file

@ -39,8 +39,8 @@
''
newergen = machine.succeed("realpath /run/current-system/specialisation/newer-generation/bin/switch-to-configuration").rstrip()
with subtest("/run/etc-metadata/ is mounted"):
print(machine.succeed("mountpoint /run/etc-metadata"))
with subtest("/run/nixos-etc-metadata/ is mounted"):
print(machine.succeed("mountpoint /run/nixos-etc-metadata"))
with subtest("No temporary files leaked into stage 2"):
machine.succeed("[ ! -e /etc-metadata-image ]")
@ -91,10 +91,14 @@
machine.succeed(f"{newergen} switch")
tmpMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc\\..*' | wc -l").rstrip()
metaMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc-metadata\\..*' | wc -l").rstrip()
tmpMounts = machine.succeed("find /run -maxdepth 1 -type d -regex '/run/nixos-etc\\..*'").rstrip()
print(tmpMounts)
metaMounts = machine.succeed("find /run -maxdepth 1 -type d -regex '/run/nixos-etc-metadata.*'").rstrip()
print(metaMounts)
assert tmpMounts == "0", f"Found {tmpMounts} remaining tmpmounts"
assert metaMounts == "1", f"Found {metaMounts} remaining metamounts"
numOfTmpMounts = len(tmpMounts.splitlines())
numOfMetaMounts = len(metaMounts.splitlines())
assert numOfTmpMounts == 0, f"Found {numOfTmpMounts} remaining tmpmounts"
assert numOfMetaMounts == 1, f"Found {numOfMetaMounts} remaining metamounts"
'';
}

View file

@ -27,8 +27,8 @@
''
newergen = machine.succeed("realpath /run/current-system/specialisation/newer-generation/bin/switch-to-configuration").rstrip()
with subtest("/run/etc-metadata/ is mounted"):
print(machine.succeed("mountpoint /run/etc-metadata"))
with subtest("/run/nixos-etc-metadata/ is mounted"):
print(machine.succeed("mountpoint /run/nixos-etc-metadata"))
with subtest("No temporary files leaked into stage 2"):
machine.succeed("[ ! -e /etc-metadata-image ]")
@ -68,10 +68,14 @@
machine.succeed(f"{newergen} switch")
assert machine.succeed("cat /etc/newergen") == "newergen"
tmpMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc\\..*' | wc -l").rstrip()
metaMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc-metadata\\..*' | wc -l").rstrip()
tmpMounts = machine.succeed("find /run -maxdepth 1 -type d -regex '/run/nixos-etc\\..*'").rstrip()
print(tmpMounts)
metaMounts = machine.succeed("find /run -maxdepth 1 -type d -regex '/run/nixos-etc-metadata.*'").rstrip()
print(metaMounts)
assert tmpMounts == "0", f"Found {tmpMounts} remaining tmpmounts"
assert metaMounts == "1", f"Found {metaMounts} remaining metamounts"
numOfTmpMounts = len(tmpMounts.splitlines())
numOfMetaMounts = len(metaMounts.splitlines())
assert numOfTmpMounts == 0, f"Found {numOfTmpMounts} remaining tmpmounts"
assert numOfMetaMounts == 1, f"Found {numOfMetaMounts} remaining metamounts"
'';
}

View file

@ -798,6 +798,7 @@ in {
patroni = handleTestOn ["x86_64-linux"] ./patroni.nix {};
pantalaimon = handleTest ./matrix/pantalaimon.nix {};
pantheon = handleTest ./pantheon.nix {};
pantheon-wayland = handleTest ./pantheon-wayland.nix {};
paperless = handleTest ./paperless.nix {};
parsedmarc = handleTest ./parsedmarc {};
password-option-override-ordering = handleTest ./password-option-override-ordering.nix {};

View file

@ -0,0 +1,105 @@
import ./make-test-python.nix (
{ pkgs, lib, ... }:
{
name = "pantheon-wayland";
meta.maintainers = lib.teams.pantheon.members;
nodes.machine =
{ nodes, ... }:
let
videosAutostart = pkgs.writeTextFile {
name = "autostart-elementary-videos";
destination = "/etc/xdg/autostart/io.elementary.videos.desktop";
text = ''
[Desktop Entry]
Version=1.0
Name=Videos
Type=Application
Terminal=false
Exec=io.elementary.videos %U
'';
};
in
{
imports = [ ./common/user-account.nix ];
# Workaround ".gala-wrapped invoked oom-killer"
virtualisation.memorySize = 2047;
services.xserver.enable = true;
services.xserver.desktopManager.pantheon.enable = true;
services.displayManager = {
autoLogin.enable = true;
autoLogin.user = nodes.machine.users.users.alice.name;
defaultSession = "pantheon-wayland";
};
# We ship pantheon.appcenter by default when this is enabled.
services.flatpak.enable = true;
# For basic OCR tests.
environment.systemPackages = [ videosAutostart ];
# We don't ship gnome-text-editor in Pantheon module, we add this line mainly
# to catch eval issues related to this option.
environment.pantheon.excludePackages = [ pkgs.gnome-text-editor ];
};
enableOCR = true;
testScript =
{ nodes, ... }:
let
user = nodes.machine.users.users.alice;
in
''
machine.wait_for_unit("display-manager.service")
with subtest("Wait for wayland server"):
machine.wait_for_file("/run/user/${toString user.uid}/wayland-0")
with subtest("Check that logging in has given the user ownership of devices"):
machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}")
with subtest("Check if Pantheon components actually start"):
# We specifically check gsd-xsettings here since it is manually pulled up by gala.
# https://github.com/elementary/gala/pull/2140
for i in ["gala", "io.elementary.wingpanel", "io.elementary.dock", "gsd-media-keys", "gsd-xsettings", "io.elementary.desktop.agent-polkit"]:
machine.wait_until_succeeds(f"pgrep -f {i}")
for i in ["io.elementary.files.xdg-desktop-portal.service"]:
machine.wait_for_unit(i, "${user.name}")
with subtest("Check if various environment variables are set"):
cmd = "xargs --null --max-args=1 echo < /proc/$(pgrep -xf ${pkgs.pantheon.gala}/bin/gala)/environ"
machine.succeed(f"{cmd} | grep 'XDG_CURRENT_DESKTOP' | grep 'Pantheon'")
machine.succeed(f"{cmd} | grep 'XDG_SESSION_TYPE' | grep 'wayland'")
# Hopefully from the sessionPath option.
machine.succeed(f"{cmd} | grep 'XDG_DATA_DIRS' | grep 'gsettings-schemas/pantheon-agent-geoclue2'")
# Hopefully from login shell.
machine.succeed(f"{cmd} | grep '__NIXOS_SET_ENVIRONMENT_DONE' | grep '1'")
with subtest("Wait for elementary videos autostart"):
machine.wait_until_succeeds("pgrep -f io.elementary.videos")
machine.wait_for_text("No Videos Open")
machine.screenshot("videos")
with subtest("Trigger multitasking view"):
cmd = "dbus-send --session --dest=org.pantheon.gala --print-reply /org/pantheon/gala org.pantheon.gala.PerformAction int32:1"
env = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${toString user.uid}/bus"
machine.succeed(f"su - ${user.name} -c '{env} {cmd}'")
machine.sleep(5)
machine.screenshot("multitasking")
machine.succeed(f"su - ${user.name} -c '{env} {cmd}'")
with subtest("Check if gala has ever coredumped"):
machine.fail("coredumpctl --json=short | grep gala")
# So we can see the dock.
machine.execute("pkill -f -9 io.elementary.videos")
machine.sleep(10)
machine.screenshot("screen")
'';
}
)

View file

@ -56,11 +56,11 @@ import ./make-test-python.nix ({ pkgs, lib, ...} :
machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}")
with subtest("Check if Pantheon components actually start"):
for i in ["gala", "io.elementary.wingpanel", "plank", "gsd-media-keys", "io.elementary.desktop.agent-polkit"]:
for i in ["gala", "io.elementary.wingpanel", "io.elementary.dock", "gsd-media-keys", "io.elementary.desktop.agent-polkit"]:
machine.wait_until_succeeds(f"pgrep -f {i}")
for i in ["gala", "io.elementary.wingpanel", "plank"]:
for i in ["gala", "io.elementary.wingpanel", "io.elementary.dock"]:
machine.wait_for_window(i)
for i in ["bamfdaemon.service", "io.elementary.files.xdg-desktop-portal.service"]:
for i in ["io.elementary.files.xdg-desktop-portal.service"]:
machine.wait_for_unit(i, "${user.name}")
with subtest("Check if various environment variables are set"):
@ -70,8 +70,6 @@ import ./make-test-python.nix ({ pkgs, lib, ...} :
machine.succeed(f"{cmd} | grep 'XDG_DATA_DIRS' | grep 'gsettings-schemas/pantheon-agent-geoclue2'")
# Hopefully from login shell.
machine.succeed(f"{cmd} | grep '__NIXOS_SET_ENVIRONMENT_DONE' | grep '1'")
# See elementary-session-settings packaging.
machine.succeed(f"{cmd} | grep 'XDG_CONFIG_DIRS' | grep 'elementary-default-settings'")
with subtest("Open elementary videos"):
machine.execute("su - ${user.name} -c 'DISPLAY=:0 io.elementary.videos >&2 &'")
@ -101,6 +99,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} :
machine.succeed(f"su - ${user.name} -c '{env} {cmd}'")
machine.sleep(5)
machine.screenshot("multitasking")
machine.succeed(f"su - ${user.name} -c '{env} {cmd}'")
with subtest("Check if gala has ever coredumped"):
machine.fail("coredumpctl --json=short | grep gala")

View file

@ -28,13 +28,13 @@ in
stdenv.mkDerivation rec {
pname = "tiled";
version = "1.11.0";
version = "1.11.1";
src = fetchFromGitHub {
owner = "mapeditor";
repo = pname;
rev = "v${version}";
sha256 = "sha256-cFS1OSYfGMsnw+VkZD/HO4+D+pxNKuifWjNhy0FoxN0=";
sha256 = "sha256-9cgGweo0D43U/puS82JCmBrikKe/TclHsrghQ4OZVEo=";
};
nativeBuildInputs = [

View file

@ -10,7 +10,6 @@
gobject-introspection,
gsettings-desktop-schemas,
glib-networking,
notify-osd,
gtk3,
glib,
gdk-pixbuf,
@ -51,7 +50,6 @@ stdenv.mkDerivation (finalAttrs: {
gobject-introspection
gsettings-desktop-schemas
glib-networking
notify-osd
gtk3
gstreamer
gst-libav

View file

@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
asciidoctor
cmake
gfortran
hamlib_4 # rigctl
libtool
pkg-config
qttools
@ -53,6 +54,8 @@ stdenv.mkDerivation rec {
boost
];
strictDeps = true;
meta = with lib; {
description = "Weak-signal digital communication modes for amateur radio";
longDescription = ''

View file

@ -7,14 +7,14 @@
python3Packages.buildPythonPackage rec {
pname = "arouteserver";
version = "1.23.1";
version = "1.23.2";
pyproject = true;
src = fetchFromGitHub {
owner = "pierky";
repo = "arouteserver";
rev = "v${version}";
hash = "sha256-EZOBMDBsxbuVzzjQWU8V4n3gcLkRQxCq2eVK/Tyko4E=";
tag = "v${version}";
hash = "sha256-qPU1eBEAlF6wcI1KEBtSuf0a+pKsqoCN0mtAPjIr+0c=";
};
postPatch = ''

View file

@ -104,6 +104,7 @@ stdenv.mkDerivation (finalAttrs: {
beautifulsoup4
css-parser
cssselect
fonttools
python-dateutil
dnspython
faust-cchardet
@ -206,7 +207,6 @@ stdenv.mkDerivation (finalAttrs: {
doInstallCheck = true;
installCheckInputs = with python3Packages; [
fonttools
psutil
];
installCheckPhase = ''

View file

@ -7,14 +7,14 @@
}:
python3Packages.buildPythonApplication rec {
pname = "exo";
version = "0.0.4-alpha";
version = "0.0.5-alpha";
pyproject = true;
src = fetchFromGitHub {
owner = "exo-explore";
repo = "exo";
tag = "v${version}";
hash = "sha256-tB+/MtAAyBwoculoToiUgwqHOKEOu6Ip1Jvx0+FqC8o=";
hash = "sha256-bAbKmLoJbDVwGoWTxA3a0CUzVFoso6/Uz6e48MSJDgw=";
};
build-system = with python3Packages; [ setuptools ];

View file

@ -28,13 +28,13 @@ let
in
buildDotnetModule (finalAttrs: {
pname = "famistudio";
version = "4.3.0";
version = "4.3.1";
src = fetchFromGitHub {
owner = "BleuBleu";
repo = "FamiStudio";
tag = finalAttrs.version;
hash = "sha256-Ldht7w1qgLTiqbRUJJvFQgl1VW6k+14w/jz58kAeMl0=";
hash = "sha256-ISOMsnsvsO3wOp9J/CilCr4wBgkHc29od2a2sBssN7k=";
};
postPatch =

View file

@ -27,6 +27,8 @@ stdenv.mkDerivation rec {
pkg-config
];
env.FLTK_CONFIG = lib.getExe' (lib.getDev fltk13) "fltk-config";
meta = {
description = "Digital modem rig control program";
homepage = "https://sourceforge.net/projects/fldigi/";

View file

@ -0,0 +1,58 @@
From aae1e774dd9de22fe3520cf9eb2bfbf7216f5eb0 Mon Sep 17 00:00:00 2001
From: WORLDofPEACE <worldofpeace@protonmail.ch>
Date: Sun, 20 Sep 2020 16:09:36 -0400
Subject: [PATCH] build: add a gnome_session_ctl_path option
In gsd.service.in the ExecStopPost expects g-s-d libexecdir to
be from the same prefix as gnome-session's, and this is not necessarily
true as there are linux distro's that install their packages into their
own individual prefixes (like NixOS or Guix).
---
meson_options.txt | 1 +
plugins/gsd.service.in | 2 +-
plugins/meson.build | 6 ++++++
3 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/meson_options.txt b/meson_options.txt
index 3e04cf64f..21e003c61 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,4 +1,5 @@
option('udev_dir', type: 'string', value: '', description: 'Absolute path of the udev base directory')
+option('gnome_session_ctl_path', type: 'string', value: '', description: 'Absolute path to the gnome-session-ctl binary')
option('systemd', type: 'boolean', value: true, description: 'Enable systemd integration')
option('alsa', type: 'boolean', value: true, description: 'build with ALSA support (not optional on Linux platforms)')
diff --git a/plugins/gsd.service.in b/plugins/gsd.service.in
index 79b5f5536..bfbde6d05 100644
--- a/plugins/gsd.service.in
+++ b/plugins/gsd.service.in
@@ -23,4 +23,4 @@ BusName=@plugin_dbus_name@
TimeoutStopSec=5
# We cannot use OnFailure as e.g. dependency failures are normal
# https://github.com/systemd/systemd/issues/12352
-ExecStopPost=@libexecdir@/gnome-session-ctl --exec-stop-check
+ExecStopPost=@gnome_session_ctl@ --exec-stop-check
diff --git a/plugins/meson.build b/plugins/meson.build
index 83e018854..266a0f093 100644
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -20,6 +20,11 @@ all_plugins = [
disabled_plugins = []
+gnome_session_ctl = get_option('gnome_session_ctl_path')
+if gnome_session_ctl == ''
+ gnome_session_ctl = join_paths(gsd_libexecdir, 'gnome-session-ctl')
+endif
+
if not enable_smartcard
disabled_plugins += ['smartcard']
endif
@@ -125,6 +130,7 @@ foreach plugin: all_plugins
unit_conf.set('plugin_name', plugin_name)
unit_conf.set('description', plugin_description)
unit_conf.set('libexecdir', gsd_libexecdir)
+ unit_conf.set('gnome_session_ctl', gnome_session_ctl)
unit_conf.set('plugin_dbus_name', plugin_dbus_name)
unit_conf.set('plugin_restart', plugin_restart_rule.get(plugin_name, 'on-failure'))

View file

@ -1,7 +1,6 @@
{
stdenv,
lib,
fetchpatch,
substituteAll,
fetchurl,
meson,
@ -13,7 +12,6 @@
glib,
libnotify,
libgnomekbd,
lcms2,
libpulseaudio,
alsa-lib,
libcanberra-gtk3,
@ -36,26 +34,22 @@
wrapGAppsHook3,
python3,
tzdata,
nss,
gcr_4,
gnome-session-ctl,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-settings-daemon";
version = "43.0";
version = "46.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-settings-daemon/${lib.versions.major finalAttrs.version}/gnome-settings-daemon-${finalAttrs.version}.tar.xz";
hash = "sha256-NRO7JPxvgYFmciOmSgZ1NP3M879mMmqUA9OLDw1gE9A=";
hash = "sha256-C5oPZPoYqOfgm0yVo/dU+gM8LNvS3DVwHwYYVywcs9c=";
};
patches = [
# https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/202
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/aae1e774dd9de22fe3520cf9eb2bfbf7216f5eb0.patch";
hash = "sha256-O4m0rOW8Zrgu3Q0p0OA8b951VC0FjYbOUk9MLzB9icI=";
})
./add-gnome-session-ctl-option.patch
(substituteAll {
src = ./fix-paths.patch;
@ -85,14 +79,12 @@ stdenv.mkDerivation (finalAttrs: {
libnotify
libgnomekbd # for org.gnome.libgnomekbd.keyboard schema
gnome-desktop
lcms2
libpulseaudio
alsa-lib
libcanberra-gtk3
upower
colord
libgweather
nss
polkit
geocode-glib_2
geoclue2

View file

@ -2,7 +2,6 @@
fetchurl,
runCommand,
lib,
fetchpatch,
stdenv,
pkg-config,
gettext,
@ -11,26 +10,43 @@
colord,
lcms2,
pango,
json-glib,
libstartup_notification,
libcanberra,
ninja,
xvfb-run,
xkeyboard_config,
libxcvt,
libxkbfile,
libICE,
libX11,
libXcomposite,
libXcursor,
libXdamage,
libxkbcommon,
libXext,
libXfixes,
libXi,
libXtst,
libxkbfile,
xkeyboard_config,
libxkbcommon,
libXrender,
libxcb,
libXrandr,
libXinerama,
libXau,
libinput,
libdrm,
libei,
libdisplay-info,
gsettings-desktop-schemas,
glib,
gtk3,
atk,
gtk4,
fribidi,
harfbuzz,
gnome-desktop,
pipewire,
libgudev,
libwacom,
libSM,
xwayland,
mesa,
meson,
@ -38,12 +54,11 @@
xorgserver,
python3,
wayland-scanner,
wrapGAppsHook3,
wrapGAppsHook4,
gi-docgen,
sysprof,
libsysprof-capture,
desktop-file-utils,
libcap_ng,
egl-wayland,
graphene,
wayland,
@ -52,7 +67,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "mutter";
version = "43.8";
version = "46.7";
outputs = [
"out"
@ -63,33 +78,13 @@ stdenv.mkDerivation (finalAttrs: {
src = fetchurl {
url = "mirror://gnome/sources/mutter/${lib.versions.major finalAttrs.version}/mutter-${finalAttrs.version}.tar.xz";
hash = "sha256-TjTh8XWTS9hJqEvZX6Nb8G6EEuAt8loDbC8RNdUz8oE=";
hash = "sha256-+7wVwLB2CS0WwB1cbwxvVNIR84Miy4wjseF9xW1MUl0=";
};
patches = [
# Fix build with separate sysprof.
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2572
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/285a5a4d54ca83b136b787ce5ebf1d774f9499d5.patch";
hash = "sha256-/npUE3idMSTVlFptsDpZmGWjZ/d2gqruVlJKq4eF4xU=";
})
# Remove support for window shading.
# The corresponding key was removed in gsettings-desktop-schemas 45.alpha.
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2884
#
# Fetch the patch from magpie as they share same code base and this feature
# is never supported on wayland (note that magpie 0.9.x won't support wayland).
# https://github.com/BuddiesOfBudgie/magpie/issues/9
(fetchpatch {
url = "https://github.com/BuddiesOfBudgie/magpie/commit/4177c466375462ca8ed8fdb60913df4422f19144.patch";
hash = "sha256-NVx40WDnlUL050D529KVohvNBdVrheXxmJ73U3+KSeQ=";
})
];
mesonFlags = [
"-Degl_device=true"
"-Dinstalled_tests=false" # TODO: enable these
"-Dtests=false"
"-Dwayland_eglstream=true"
"-Dprofiler=true"
"-Dxwayland_path=${lib.getExe xwayland}"
@ -100,10 +95,7 @@ stdenv.mkDerivation (finalAttrs: {
];
propagatedBuildInputs = [
# required for pkg-config to detect mutter-clutter
json-glib
libXtst
libcap_ng
# required for pkg-config to detect mutter-mtk
graphene
mesa # actually uses eglmesaext
];
@ -118,7 +110,7 @@ stdenv.mkDerivation (finalAttrs: {
pkg-config
python3
wayland-scanner
wrapGAppsHook3
wrapGAppsHook4
gi-docgen
xorgserver
gobject-introspection
@ -131,34 +123,50 @@ stdenv.mkDerivation (finalAttrs: {
gnome-desktop
gnome-settings-daemon
gsettings-desktop-schemas
gtk3
atk
fribidi
harfbuzz
libcanberra
libdrm
libei
libdisplay-info
libgudev
libinput
libstartup_notification
libwacom
libxkbcommon
libxkbfile
libXdamage
libSM
colord
lcms2
pango
pipewire
sysprof # for D-Bus interfaces
libsysprof-capture
xkeyboard_config
xwayland
wayland
wayland-protocols
# X11 client
gtk4
libICE
libX11
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXtst
libxkbfile
xkeyboard_config
libxkbcommon
libXrender
libxcb
libXrandr
libXinerama
libXau
];
postPatch = ''
patchShebangs src/backends/native/gen-default-modes.py
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3187
substituteInPlace meson.build \
--replace "dependency('sysprof-4')" "dependency('sysprof-6')"
'';
postInstall = ''
@ -168,7 +176,7 @@ stdenv.mkDerivation (finalAttrs: {
postFixup = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
# TODO: Move this into a directory devhelp can find.
moveToOutput "share/mutter-11/doc" "$devdoc"
moveToOutput "share/mutter-14/doc" "$devdoc"
'';
# Install udev files into our own tree.
@ -177,7 +185,7 @@ stdenv.mkDerivation (finalAttrs: {
separateDebugInfo = true;
passthru = {
libdir = "${finalAttrs.finalPackage}/lib/mutter-11";
libdir = "${finalAttrs.finalPackage}/lib/mutter-14";
tests = {
libdirExists = runCommand "mutter-libdir-exists" { } ''

View file

@ -0,0 +1,109 @@
{
darwin,
fetchFromGitHub,
graalvmPackages,
installShellFiles,
lib,
makeWrapper,
maven,
mvnd,
nix-update-script,
runCommand,
stdenv,
testers,
}:
let
platformMap = {
aarch64-darwin = "darwin-aarch64";
aarch64-linux = "linux-aarch64";
x86_64-darwin = "darwin-amd64";
x86_64-linux = "linux-amd64";
};
in
maven.buildMavenPackage rec {
pname = "mvnd";
version = "1.0.2";
src = fetchFromGitHub {
owner = "apache";
repo = "maven-mvnd";
rev = version;
sha256 = "sha256-c1jD7m4cOdPWQEoaUMcNap2zvvX7H9VaWQv8JSgAnRU=";
};
# need graalvm at build-time for the `native-image` tool
mvnJdk = graalvmPackages.graalvm-ce;
mvnHash = "sha256-Bx0XSnpHNxNX07uVPc18py9qbnG5b3b7J4vs44ty034=";
nativeBuildInputs = [
graalvmPackages.graalvm-ce
installShellFiles
makeWrapper
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.apple_sdk_11_0.frameworks.Foundation ];
mvnDepsParameters = mvnParameters;
mvnParameters = lib.concatStringsSep " " [
"-Dmaven.buildNumber.skip=true" # skip build number generation; requires a git repository
"-Drat.skip=true" # skip license checks; they require manaul approval and should have already been run upstream
"-Dspotless.skip=true" # skip formatting checks
# skip tests that fail in the sandbox
"-pl"
"!integration-tests"
"-Dtest=!org.mvndaemon.mvnd.client.OsUtilsTest,!org.mvndaemon.mvnd.cache.impl.CacheFactoryTest"
"-Dsurefire.failIfNoSpecifiedTests=false"
"-Pnative"
# propagate linker args required by the darwin build
# see `buildGraalvmNativeImage`
''-Dgraalvm-native-static-opt="-H:-CheckToolchain $(export -p | sed -n 's/^declare -x \([^=]\+\)=.*$/ -E\1/p' | tr -d \\n)"''
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mkdir -p $out/mvnd-home
cp -r dist/target/maven-mvnd-${version}-${platformMap.${stdenv.system}}/* $out/mvnd-home
makeWrapper $out/mvnd-home/bin/mvnd $out/bin/mvnd \
--set-default MVND_HOME $out/mvnd-home
installShellCompletion --cmd mvnd \
--bash $out/mvnd-home/bin/mvnd-bash-completion.bash
runHook postInstall
'';
passthru =
{
updateScript = nix-update-script { };
}
// (lib.optionalAttrs (!stdenv.hostPlatform.isDarwin) {
tests.version = testers.testVersion {
# `java` or `JAVA_HOME` is required to run mvnd
# presumably the user already has a JDK installed if they're using maven; don't pull in an unnecessary runtime dependency
package =
runCommand "mvnd"
{
inherit version;
nativeBuildInputs = [ makeWrapper ];
}
''
mkdir -p $out/bin
makeWrapper ${mvnd}/bin/mvnd $out/bin/mvnd \
--suffix PATH : ${lib.makeBinPath [ mvnJdk ]}
'';
};
});
meta = {
description = "The Apache Maven Daemon";
homepage = "https://maven.apache.org/";
license = lib.licenses.asl20;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ nathanregner ];
mainProgram = "mvnd";
};
}

View file

@ -104,6 +104,8 @@ rustPlatform.buildRustPackage rec {
preCheck = ''
export XDG_RUNTIME_DIR=$(mktemp -d)
# See https://github.com/YaLTeR/niri/issues/953
export RAYON_NUM_THREADS=1
'';
passthru = {

View file

@ -58,10 +58,11 @@ if [[ ! -e $mountPoint/etc/NIXOS ]]; then
exit 126
fi
mkdir -p "$mountPoint/dev" "$mountPoint/sys"
chmod 0755 "$mountPoint/dev" "$mountPoint/sys"
mkdir -p "$mountPoint/dev" "$mountPoint/sys" "$mountPoint/proc"
chmod 0755 "$mountPoint/dev" "$mountPoint/sys" "$mountPoint/proc"
mount --rbind /dev "$mountPoint/dev"
mount --rbind /sys "$mountPoint/sys"
mount --rbind /proc "$mountPoint/proc"
# modified from https://github.com/archlinux/arch-install-scripts/blob/bb04ab435a5a89cd5e5ee821783477bc80db797f/arch-chroot.in#L26-L52
chroot_add_resolv_conf() {

View file

@ -8,13 +8,13 @@
stdenv.mkDerivation rec {
pname = "rss-bridge";
version = "2024-02-02";
version = "2025-01-02";
src = fetchFromGitHub {
owner = "RSS-Bridge";
repo = "rss-bridge";
rev = version;
sha256 = "sha256-VycEgu7uHYwDnNE1eoVxgaWZAnC6mZLBxT8Le3PI4Rs=";
sha256 = "sha256-6Ise+qptY2wLkNveT/mzL0nWrX6OhxAlOJkF2+BmSTE=";
};
installPhase = ''

View file

@ -4,8 +4,8 @@
fetchFromGitHub,
cmake,
ninja,
llvm_17,
clang_17,
llvm,
clang,
z3,
makeWrapper,
}:
@ -48,13 +48,13 @@ stdenv.mkDerivation {
nativeBuildInputs = [
cmake
ninja
llvm_17
clang_17
llvm
clang
makeWrapper
];
buildInputs = [
llvm_17
llvm
z3
];

View file

@ -6,16 +6,16 @@ rustPlatform.buildRustPackage rec {
pname = "typos-lsp";
# Please update the corresponding VSCode extension too.
# See pkgs/applications/editors/vscode/extensions/tekumara.typos-vscode/default.nix
version = "0.1.32";
version = "0.1.33";
src = fetchFromGitHub {
owner = "tekumara";
repo = "typos-lsp";
tag = "v${version}";
hash = "sha256-ezRyitmdcOki/thQGJ11+UYMIG2fYJ9HMcvD++s/ewM=";
hash = "sha256-FunbE4HxDmugLmR2XwFFAjvNBTVbLAhiHtacxuPXMVE=";
};
cargoHash = "sha256-J1XbhCP2EMFIHs2U9kTtNNdGF4UnZWNgIO7L3YlYkqo=";
cargoHash = "sha256-hmKm8mPIZlEDcAPuvyUUQZUpIy51mSksahcRknMnMW0=";
# fix for compilation on aarch64
# see https://github.com/NixOS/nixpkgs/issues/145726

View file

@ -91,7 +91,7 @@ in
gnome-session = throw "The gnome.gnome-session was moved to top-level. Please use pkgs.gnome-session directly."; # Added on 2024-08-28.
gnome-session-ctl = throw "The gnome.gnome-session-ctl was moved to top-level. Please use pkgs.gnome-session-ctl directly."; # Added on 2024-08-28.
gnome-settings-daemon = throw "The gnome.gnome-settings-daemon was moved to top-level. Please use pkgs.gnome-settings-daemon directly."; # Added on 2024-08-28.
gnome-settings-daemon43 = throw "The gnome.gnome-settings-daemon43 was moved to top-level. Please use pkgs.gnome-settings-daemon43 directly."; # Added on 2024-08-28.
gnome-settings-daemon43 = throw "The gnome.gnome-settings-daemon43 was removed since it is no longer used by Pantheon."; # Added on 2024-08-28.
gnome-shell = throw "The gnome.gnome-shell was moved to top-level. Please use pkgs.gnome-shell directly."; # Added on 2024-08-28.
gnome-shell-extensions = throw "The gnome.gnome-shell-extensions was moved to top-level. Please use pkgs.gnome-shell-extensions directly."; # Added on 2024-08-11.
gnome-software = throw "The gnome.gnome-software was moved to top-level. Please use pkgs.gnome-software directly."; # Added on 2024-08-11.
@ -113,7 +113,7 @@ in
lightsoff = throw "The gnome.lightsoff was moved to top-level. Please use pkgs.lightsoff directly."; # Added on 2024-08-11.
metacity = throw "The gnome.metacity was moved to top-level. Please use pkgs.metacity directly."; # Added on 2024-08-11.
mutter = throw "The gnome.mutter was moved to top-level. Please use pkgs.mutter directly."; # Added on 2024-08-28.
mutter43 = throw "The gnome.mutter43 was moved to top-level. Please use pkgs.mutter43 directly."; # Added on 2024-08-28.
mutter43 = throw "The gnome.mutter43 was removed since it is no longer used by Pantheon."; # Added on 2024-08-28.
nautilus = throw "The gnome.nautilus was moved to top-level. Please use pkgs.nautilus directly."; # Added on 2024-06-13.
networkmanager-openvpn = throw "The gnome.networkmanager-openvpn was moved to top-level. Please use pkgs.networkmanager-openvpn directly."; # Added on 2024-08-31.
networkmanager-vpnc = throw "The gnome.networkmanager-vpnc was moved to top-level. Please use pkgs.networkmanager-vpnc directly."; # Added on 2024-08-31.

View file

@ -1,85 +1,61 @@
{ lib
, stdenv
, fetchFromGitHub
, vala
, atk
, cairo
, dconf
, glib
, gtk3
, libwnck
, libX11
, libXfixes
, libXi
, pango
, pkg-config
, libxml2
, bamf
, gdk-pixbuf
, libdbusmenu-gtk3
, gnome-menus
, libgee
, wrapGAppsHook3
, meson
, ninja
, granite
{
stdenv,
lib,
fetchFromGitHub,
meson,
ninja,
pkg-config,
vala,
wayland-scanner,
wrapGAppsHook4,
glib,
granite7,
gtk4,
libadwaita,
wayland,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "elementary-dock";
version = "unstable-2021-05-07";
version = "8.0.1";
outputs = [ "out" "dev" ];
outputs = [
"out"
"dev"
];
src = fetchFromGitHub {
owner = "elementary";
repo = "dock";
rev = "113c3b0bc7744501d2101dd7afc1ef21ba66b326";
sha256 = "sha256-YlvdB02/hUGaDyHIHy21bgloHyVy3vHcanyNKnp3YbM=";
rev = finalAttrs.version;
hash = "sha256-Q4Y9FVqzPXoz2Nti1qB5SOJQ0tETPcv2fZPOMkJaND8=";
};
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [
meson
ninja
libxml2 # xmllint
pkg-config
vala
wrapGAppsHook3
wayland-scanner
wrapGAppsHook4
];
buildInputs = [
atk
bamf
cairo
gdk-pixbuf
glib
gnome-menus
dconf
granite
gtk3
libX11
libXfixes
libXi
libdbusmenu-gtk3
libgee
libwnck
pango
granite7
gtk4
libadwaita
wayland
];
postInstall = ''
# elementary/dock/master is missing a Meson post
# install script that does this. This has been
# resolved after the dock rewrite (the `main` branch).
# https://github.com/elementary/default-settings/issues/267
glib-compile-schemas $out/share/glib-2.0/schemas
'';
meta = with lib; {
meta = {
description = "Elegant, simple, clean dock";
homepage = "https://github.com/elementary/dock";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ davidak ] ++ teams.pantheon.members;
mainProgram = "plank";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
maintainers = lib.teams.pantheon.members;
mainProgram = "io.elementary.dock";
};
}
})

View file

@ -15,7 +15,6 @@
, libportal-gtk3
, granite
, pango
, bamf
, sqlite
, zeitgeist
, libcloudproviders
@ -47,7 +46,6 @@ stdenv.mkDerivation rec {
];
buildInputs = [
bamf
glib
granite
gtk3

View file

@ -23,13 +23,13 @@
stdenv.mkDerivation rec {
pname = "switchboard-plug-keyboard";
version = "8.0.0";
version = "8.0.1";
src = fetchFromGitHub {
owner = "elementary";
repo = pname;
rev = version;
sha256 = "sha256-jOUrotgtSRmSVsxOXEbQfIi92BlpIPye7maCsa+ssT8=";
sha256 = "sha256-/jfUftlNL+B4570ajropS7/2fqro380kZzpPwm+A9fA=";
};
patches = [

View file

@ -1,7 +1,6 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, nix-update-script
, meson
, ninja
@ -25,24 +24,15 @@
stdenv.mkDerivation rec {
pname = "switchboard-plug-pantheon-shell";
version = "8.0.0";
version = "8.1.0";
src = fetchFromGitHub {
owner = "elementary";
repo = pname;
rev = version;
sha256 = "sha256-Cv1Ldvk0+VzNsKnDFwDtLZ5ixUOGV+PWYAqN9KV9g/s=";
sha256 = "sha256-S6EJGF9jRiCzH0f7WNrbLtAX23fjD/Hzd8YLEzkXesw=";
};
patches = [
# Set preferred color theme for mutter
# https://github.com/elementary/switchboard-plug-pantheon-shell/pull/413
(fetchpatch {
url = "https://github.com/elementary/switchboard-plug-pantheon-shell/commit/bdc8c167fabe5a4642efd37b0289e235e5d0a504.patch";
hash = "sha256-ueTAwURd8GM0U/qfPmoVLO7OVI/ppazq+ljnVzk0Npk=";
})
];
nativeBuildInputs = [
gettext
meson
@ -67,13 +57,6 @@ stdenv.mkDerivation rec {
wingpanel-quick-settings # gsettings schemas
];
postPatch = ''
# Hide these before we land the new dock
substituteInPlace src/Views/Dock.vala \
--replace-fail "box.append (icon_box);" "" \
--replace-fail "box.append (hide_box);" ""
'';
passthru = {
updateScript = nix-update-script { };
};

View file

@ -38,10 +38,10 @@ lib.makeScope pkgs.newScope (self: with self; {
maintainers = lib.teams.pantheon.members;
mutter = pkgs.mutter43;
mutter = pkgs.mutter46;
# Using 43 to match Mutter used in Pantheon
gnome-settings-daemon = pkgs.gnome-settings-daemon43;
gnome-settings-daemon = pkgs.gnome-settings-daemon46;
elementary-gsettings-schemas = callPackage ./desktop/elementary-gsettings-schemas { };

View file

@ -1,7 +1,6 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, nix-update-script
, meson
, ninja
@ -15,24 +14,15 @@
stdenv.mkDerivation rec {
pname = "elementary-default-settings";
version = "7.1.0";
version = "8.0.2";
src = fetchFromGitHub {
owner = "elementary";
repo = "default-settings";
rev = version;
sha256 = "sha256-j4K8qYwfu6/s4qnTSzwv6KRsk9f+Qr/l1bhLywKMHMU=";
sha256 = "sha256-vytjRlSXnC+cSIAn6v6wpoig4zjJZObGZ6MCLfsIwIA=";
};
patches = [
# Add pantheon-portals.conf
# https://github.com/elementary/default-settings/pull/293
(fetchpatch {
url = "https://github.com/elementary/default-settings/commit/8201eeb6a356e6059b505756ef7a556a6848ad3b.patch";
sha256 = "sha256-qhGj7WQTAWJTC1kouUZhBWKqyO4hQWJghEhLVl8QVUM=";
})
];
nativeBuildInputs = [
glib # glib-compile-schemas
meson
@ -49,19 +39,8 @@ stdenv.mkDerivation rec {
mesonFlags = [
"--sysconfdir=${placeholder "out"}/etc"
"-Ddefault-wallpaper=${nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}"
"-Dplank-dockitems=false"
];
preInstall = ''
# Install our override for plank dockitems as the desktop file path is different.
schema_dir=$out/share/glib-2.0/schemas
install -D ${./overrides/plank-dockitems.gschema.override} $schema_dir/plank-dockitems.gschema.override
# Our launchers that use paths at /run/current-system/sw/bin
mkdir -p $out/etc/skel/.config/plank/dock1
cp -avr ${./launchers} $out/etc/skel/.config/plank/dock1/launchers
'';
postFixup = ''
# https://github.com/elementary/default-settings/issues/55
rm -r $out/share/cups

View file

@ -1,2 +0,0 @@
[PlankDockItemPreferences]
Launcher=file:///run/current-system/sw/share/applications/gala-multitaskingview.desktop

View file

@ -1,2 +0,0 @@
[PlankDockItemPreferences]
Launcher=file:///run/current-system/sw/share/applications/io.elementary.appcenter.desktop

View file

@ -1,2 +0,0 @@
[PlankDockItemPreferences]
Launcher=file:///run/current-system/sw/share/applications/io.elementary.calendar.desktop

View file

@ -1,2 +0,0 @@
[PlankDockItemPreferences]
Launcher=file:///run/current-system/sw/share/applications/io.elementary.files.desktop

View file

@ -1,2 +0,0 @@
[PlankDockItemPreferences]
Launcher=file:///run/current-system/sw/share/applications/io.elementary.mail.desktop

View file

@ -1,2 +0,0 @@
[PlankDockItemPreferences]
Launcher=file:///run/current-system/sw/share/applications/io.elementary.music.desktop

View file

@ -1,2 +0,0 @@
[PlankDockItemPreferences]
Launcher=file:///run/current-system/sw/share/applications/io.elementary.photos.desktop

View file

@ -1,2 +0,0 @@
[PlankDockItemPreferences]
Launcher=file:///run/current-system/sw/share/applications/io.elementary.settings.desktop

View file

@ -1,2 +0,0 @@
[PlankDockItemPreferences]
Launcher=file:///run/current-system/sw/share/applications/io.elementary.tasks.desktop

View file

@ -1,2 +0,0 @@
[PlankDockItemPreferences]
Launcher=file:///run/current-system/sw/share/applications/io.elementary.videos.desktop

View file

@ -1,2 +0,0 @@
[PlankDockItemPreferences]
Launcher=file:///run/current-system/sw/share/applications/org.gnome.Epiphany.desktop

View file

@ -1,2 +0,0 @@
[net.launchpad.plank.dock.settings]
dock-items=['gala-multitaskingview.dockitem','io.elementary.files.dockitem','org.gnome.Epiphany.dockitem','io.elementary.mail.dockitem','io.elementary.tasks.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.settings.dockitem','io.elementary.appcenter.dockitem']

View file

@ -14,6 +14,7 @@
, granite
, libgee
, libhandy
, gnome-desktop
, gnome-settings-daemon
, mutter
, elementary-icon-theme
@ -24,18 +25,19 @@
, gdk-pixbuf
, dbus
, accountsservice
, wayland-scanner
, wrapGAppsHook3
}:
stdenv.mkDerivation rec {
pname = "elementary-greeter";
version = "7.0.0";
version = "8.0.0";
src = fetchFromGitHub {
owner = "elementary";
repo = "greeter";
rev = version;
sha256 = "sha256-m/xuaMCAPoqhl/M547mdafBPBu3UhHmVmBIUKQoS5L8=";
sha256 = "sha256-fx3KHMF6UhIFXyJHQ4dKJnVidsNMBk7AvHzaF3ELH1k=";
};
patches = [
@ -47,18 +49,22 @@ stdenv.mkDerivation rec {
})
];
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [
desktop-file-utils
meson
ninja
pkg-config
vala
wayland-scanner
wrapGAppsHook3
];
buildInputs = [
accountsservice
elementary-icon-theme
gnome-desktop
gnome-settings-daemon
gdk-pixbuf
granite

View file

@ -4,7 +4,6 @@
, elementary-default-settings
, glib
, gala
, epiphany
, gnome-settings-daemon
, gtk3
, elementary-dock
@ -20,7 +19,6 @@ let
gsettingsOverridePackages = [
elementary-dock
gnome-settings-daemon
epiphany
gala
gsettings-desktop-schemas
gtk3

View file

@ -16,17 +16,18 @@
gtk4,
libadwaita,
libgee,
pantheon-wayland,
}:
stdenv.mkDerivation rec {
pname = "elementary-onboarding";
version = "8.0.2";
version = "8.0.3";
src = fetchFromGitHub {
owner = "elementary";
repo = "onboarding";
rev = version;
sha256 = "sha256-tLqLGkcryXGe1wsupgwtnNtFj5aXXUPrwkpxUQmyJFM=";
sha256 = "sha256-e8eYBGQ+qTXsp+E3l0g5UI1nYD75z0ibTtzm0WbqlU4=";
};
nativeBuildInputs = [
@ -46,6 +47,7 @@ stdenv.mkDerivation rec {
gtk4
libadwaita
libgee
pantheon-wayland
];
passthru = {

View file

@ -5,7 +5,6 @@
, desktop-file-utils
, gettext
, pkg-config
, writeScript
, gnome-keyring
, gnome-session
, wingpanel
@ -20,76 +19,6 @@
, ninja
}:
let
#
# ─── ENSURES PLANK GETS ELEMENTARY'S DEFAULT DOCKITEMS ────────────────────────────
#
#
# Upstream relies on /etc/skel to initiate a new users home directory with plank's dockitems.
#
# That is not possible within nixos, but we can achieve this easily with a simple script that copies
# them. We then use a xdg autostart and initialize it during the "EarlyInitialization" phase of a gnome session
# which is most appropriate for installing files into $HOME.
#
dockitems-script = writeScript "dockitems-script" ''
#!${runtimeShell}
elementary_default_settings="${elementary-default-settings}"
dock_items="$elementary_default_settings/etc/skel/.config/plank/dock1/launchers"/*
if [ ! -d "$HOME/.config/plank/dock1" ]; then
echo "Instantiating default Plank Dockitems..."
mkdir -p "$HOME/.config/plank/dock1/launchers"
cp -r --no-preserve=mode,ownership $dock_items "$HOME/.config/plank/dock1/launchers/"
else
echo "Plank Dockitems already instantiated"
fi
'';
dockitemAutostart = writeText "default-elementary-dockitems.desktop" ''
[Desktop Entry]
Type=Application
Name=Instantiate Default elementary dockitems
Exec=${dockitems-script}
StartupNotify=false
NoDisplay=true
OnlyShowIn=Pantheon;
X-GNOME-Autostart-Phase=EarlyInitialization
'';
executable = writeScript "pantheon" ''
# gnome-session can find RequiredComponents for `pantheon` session (notably pantheon's patched g-s-d autostarts)
export XDG_CONFIG_DIRS=@out@/etc/xdg:$XDG_CONFIG_DIRS
# Make sure we use our gtk-3.0/settings.ini
export XDG_CONFIG_DIRS=${elementary-default-settings}/etc:$XDG_CONFIG_DIRS
# * gnome-session can find the `pantheon' session
# * use pantheon-mimeapps.list
export XDG_DATA_DIRS=@out@/share:$XDG_DATA_DIRS
# Start pantheon session. Keep in sync with upstream
exec ${gnome-session}/bin/gnome-session --session=pantheon "$@"
'';
# Absolute path patched version of the upstream xsession
xsession = writeText "pantheon.desktop" ''
[Desktop Entry]
Name=Pantheon
Comment=This session provides elementary experience
Exec=@out@/libexec/pantheon
TryExec=${wingpanel}/bin/io.elementary.wingpanel
Icon=
DesktopNames=Pantheon
Type=Application
'';
in
stdenv.mkDerivation rec {
pname = "elementary-session-settings";
version = "8.0.1";
@ -122,6 +51,7 @@ stdenv.mkDerivation rec {
"-Dfallback-session=GNOME"
"-Ddetect-program-prefixes=true"
"--sysconfdir=${placeholder "out"}/etc"
"-Dwayland=true"
];
postInstall = ''
@ -130,16 +60,10 @@ stdenv.mkDerivation rec {
mkdir -p $out/share/applications
cp -av ${./pantheon-mimeapps.list} $out/share/applications/pantheon-mimeapps.list
# instantiates pantheon's dockitems
cp "${dockitemAutostart}" $out/etc/xdg/autostart/default-elementary-dockitems.desktop
# script `Exec` to start pantheon
mkdir -p $out/libexec
substitute ${executable} $out/libexec/pantheon --subst-var out
chmod +x $out/libexec/pantheon
# absolute path patched xsession
substitute ${xsession} $out/share/xsessions/pantheon.desktop --subst-var out
# absolute path patched sessions
substituteInPlace $out/share/{xsessions/pantheon.desktop,wayland-sessions/pantheon-wayland.desktop} \
--replace-fail "Exec=gnome-session" "Exec=${gnome-session}/bin/gnome-session" \
--replace-fail "TryExec=io.elementary.wingpanel" "TryExec=${wingpanel}/bin/io.elementary.wingpanel"
'';
passthru = {
@ -147,6 +71,7 @@ stdenv.mkDerivation rec {
providedSessions = [
"pantheon"
"pantheon-wayland"
];
};

View file

@ -20,13 +20,13 @@
stdenv.mkDerivation rec {
pname = "elementary-shortcut-overlay";
version = "8.0.0";
version = "8.0.1";
src = fetchFromGitHub {
owner = "elementary";
repo = "shortcut-overlay";
rev = version;
sha256 = "sha256-HqF2eSNwAzgzwyfNQIeumaGkPYiSc+2OfaD3JRQp4/4=";
sha256 = "sha256-RWFzs4rw/KC0MXkNfA178FejMbuIBh5FVox1RxmxCJA=";
};
nativeBuildInputs = [

View file

@ -1,60 +1,51 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, nix-update-script
, pkg-config
, meson
, python3
, ninja
, vala
, desktop-file-utils
, gettext
, libxml2
, gtk3
, granite
, libgee
, bamf
, libcanberra-gtk3
, gnome-desktop
, mutter
, gnome-settings-daemon
, wrapGAppsHook3
, gexiv2
, systemd
{
stdenv,
lib,
fetchFromGitHub,
desktop-file-utils,
gettext,
libxml2,
meson,
ninja,
pkg-config,
vala,
wayland-scanner,
wrapGAppsHook3,
at-spi2-core,
gnome-settings-daemon,
gnome-desktop,
granite,
granite7,
gtk3,
gtk4,
libcanberra,
libgee,
libhandy,
mutter,
sqlite,
systemd,
nix-update-script,
}:
stdenv.mkDerivation rec {
pname = "gala";
version = "7.1.3";
version = "8.1.0";
src = fetchFromGitHub {
owner = "elementary";
repo = pname;
rev = version;
sha256 = "sha256-0fDbR28gh7F8Bcnofn48BBP1CTsYnfmY5kG72ookOXw=";
hash = "sha256-C0Vct2xuGHd/G5x0Faif0DfpyNyCLJDxki+O9697c2s=";
};
patches = [
# We look for plugins in `/run/current-system/sw/lib/` because
# there are multiple plugin providers (e.g. gala and wingpanel).
./plugins-dir.patch
# Start gala-daemon internally (needed for systemd managed gnome-session)
# https://github.com/elementary/gala/pull/1844
(fetchpatch {
url = "https://github.com/elementary/gala/commit/351722c5a4fded46992b725e03dc94971c5bd31f.patch";
hash = "sha256-RvdVHQjCUNmLrROBZTF+m1vE2XudtQZjk/YW28P/vKc=";
})
# InternalUtils: Fix window placement
# https://github.com/elementary/gala/pull/1913
(fetchpatch {
url = "https://github.com/elementary/gala/commit/2d30bee678788c5a853721d16b5b39c997b23c02.patch";
hash = "sha256-vhGFaLpJZFx1VTfjY1BahQiOUvBPi0dBSXLGhYc7r8A=";
})
];
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [
desktop-file-utils
gettext
@ -62,29 +53,27 @@ stdenv.mkDerivation rec {
meson
ninja
pkg-config
python3
vala
wayland-scanner
wrapGAppsHook3
];
buildInputs = [
bamf
at-spi2-core
gnome-settings-daemon
gexiv2
gnome-desktop
granite
granite7
gtk3
libcanberra-gtk3
gtk4 # gala-daemon
libcanberra
libgee
libhandy
mutter
sqlite
systemd
];
postPatch = ''
chmod +x build-aux/meson/post_install.py
patchShebangs build-aux/meson/post_install.py
'';
passthru = {
updateScript = nix-update-script { };
};

View file

@ -1,12 +1,10 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, nix-update-script
, substituteAll
, meson
, ninja
, python3
, pkg-config
, vala
, granite
@ -14,8 +12,6 @@
, gettext
, gtk3
, json-glib
, elementary-dock
, bamf
, switchboard-with-plugs
, libsoup_2_4
, wingpanel
@ -26,13 +22,13 @@
stdenv.mkDerivation rec {
pname = "wingpanel-applications-menu";
version = "2.11.1";
version = "8.0.0";
src = fetchFromGitHub {
owner = "elementary";
repo = "applications-menu";
rev = version;
sha256 = "sha256-WlRrEkX0DGIHYWvUc9G4BbvofzWJwqkiJaJFwQ43GPE=";
sha256 = "sha256-HA82CcVC2+hJFksOuZ8pFmw7phpkCEjPCgE/5naaPcg=";
};
patches = [
@ -40,14 +36,6 @@ stdenv.mkDerivation rec {
src = ./fix-paths.patch;
bc = "${bc}/bin/bc";
})
# Build against switchboard-3
# https://github.com/elementary/applications-menu/pull/580
(fetchpatch {
url = "https://github.com/elementary/applications-menu/commit/9191ee5a2ee33477515d331b96945d51a13074a9.patch";
excludes = [ ".github/workflows/githubci.yml" ];
hash = "sha256-/LOIEOg9fVfKv/BWFsP1VyuUOIFYem9Gk+3e49M2b9E=";
})
];
nativeBuildInputs = [
@ -55,13 +43,10 @@ stdenv.mkDerivation rec {
meson
ninja
pkg-config
python3
vala
];
buildInputs = [
bamf
elementary-dock
granite
gtk3
json-glib
@ -83,11 +68,6 @@ stdenv.mkDerivation rec {
"--sysconfdir=${placeholder "out"}/etc"
];
postPatch = ''
chmod +x meson/post_install.py
patchShebangs meson/post_install.py
'';
doCheck = true;
passthru = {

View file

@ -1,42 +1,40 @@
diff --git a/src/synapse-plugins/calculator-plugin/calculator-plugin-backend.vala b/src/synapse-plugins/calculator-plugin/calculator-plugin-backend.vala
index 542e7aa..228c6d7 100644
index 84454146..fb082fe4 100644
--- a/src/synapse-plugins/calculator-plugin/calculator-plugin-backend.vala
+++ b/src/synapse-plugins/calculator-plugin/calculator-plugin-backend.vala
@@ -83,7 +83,7 @@ namespace Synapse {
Pid pid;
int read_fd, write_fd;
/* Must include math library to get non-integer results and to access standard math functions */
- string[] argv = {"bc", "-l"};
+ string[] argv = {"@bc@", "-l"};
@@ -73,7 +73,7 @@ namespace Synapse {
Pid pid;
int read_fd, write_fd;
/* Must include math library to get non-integer results and to access standard math functions */
- string[] argv = {"bc", "-l"};
+ string[] argv = {"@bc@", "-l"};
Process.spawn_async_with_pipes (
null, argv, null,
Process.spawn_async_with_pipes (
null, argv, null,
diff --git a/src/synapse-plugins/calculator-plugin/calculator-plugin.vala b/src/synapse-plugins/calculator-plugin/calculator-plugin.vala
index d14f1de..35c8621 100644
index 089b8278..0e532bfc 100644
--- a/src/synapse-plugins/calculator-plugin/calculator-plugin.vala
+++ b/src/synapse-plugins/calculator-plugin/calculator-plugin.vala
@@ -49,9 +49,7 @@ namespace Synapse {
_("Calculator"),
_("Calculate basic expressions."),
@@ -47,8 +47,7 @@ namespace Synapse {
DataSink.PluginRegistry.get_default ().register_plugin (
typeof (CalculatorPlugin),
"accessories-calculator",
- register_plugin,
- Environment.find_program_in_path ("bc") != null,
- _("bc is not installed")
- Environment.find_program_in_path ("bc") != null
+ register_plugin
);
}
diff --git a/src/synapse-plugins/converter-plugin/converter-plugin.vala b/src/synapse-plugins/converter-plugin/converter-plugin.vala
index 8d230cc..ed31927 100644
index 34391e6a..a5bfc71e 100644
--- a/src/synapse-plugins/converter-plugin/converter-plugin.vala
+++ b/src/synapse-plugins/converter-plugin/converter-plugin.vala
@@ -46,9 +46,7 @@ namespace Synapse {
_("Converter"),
_("Convert between units."),
@@ -44,8 +44,7 @@ namespace Synapse {
DataSink.PluginRegistry.get_default ().register_plugin (
typeof (ConverterPlugin),
"accessories-converter",
- register_plugin,
- Environment.find_program_in_path ("bc") != null,
- _("bc is not installed")
- Environment.find_program_in_path ("bc") != null
+ register_plugin
);
}

View file

@ -1,8 +1,8 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, nix-update-script
, wayland-scanner
, wrapGAppsHook3
, pkg-config
, meson
@ -14,6 +14,7 @@
, granite
, gettext
, mutter
, wayland
, json-glib
, elementary-gtk-theme
, elementary-icon-theme
@ -21,24 +22,21 @@
stdenv.mkDerivation rec {
pname = "wingpanel";
version = "3.0.5";
version = "8.0.1";
src = fetchFromGitHub {
owner = "elementary";
repo = pname;
rev = version;
sha256 = "sha256-xowGdaH0e6y0Q2xSl0kUa01rxxoEQ0qXB3sUol0YDBA=";
sha256 = "sha256-c77ebUTs4D5M3//AfvtWI643n1a1sPb5Z70P+4tX3y8=";
};
patches = [
./indicators.patch
];
# Add sorting for QuickSettings
# https://github.com/elementary/wingpanel/pull/516
(fetchpatch {
url = "https://github.com/elementary/wingpanel/commit/cae197c953f4332e67cf0a5457b4e54f8adc3424.patch";
hash = "sha256-P7Cl6M3qvh9pa1qIwWQV4XG5NoCQId+buzEChcUOapk=";
})
depsBuildBuild = [
pkg-config
];
nativeBuildInputs = [
@ -47,6 +45,7 @@ stdenv.mkDerivation rec {
ninja
pkg-config
vala
wayland-scanner
wrapGAppsHook3
];
@ -58,6 +57,7 @@ stdenv.mkDerivation rec {
json-glib
libgee
mutter
wayland
];
preFixup = ''

View file

@ -17,13 +17,13 @@
stdenv.mkDerivation rec {
pname = "elementary-notifications";
version = "7.0.1";
version = "8.0.0";
src = fetchFromGitHub {
owner = "elementary";
repo = "notifications";
rev = version;
sha256 = "sha256-of7Tw38yJAhHKICU3XxGwIOwqfUhrL7SGKqFd9Dps/I=";
sha256 = "sha256-40STrDpMx1WFaTriJNrvkkbzAM0DeBaPdc8o8URItQI=";
};
nativeBuildInputs = [
@ -44,12 +44,6 @@ stdenv.mkDerivation rec {
libhandy
];
postPatch = ''
# https://github.com/elementary/notifications/issues/222
substituteInPlace src/FdoActionGroup.vala \
--replace-fail "out VariantType" "out unowned VariantType"
'';
passthru = {
updateScript = nix-update-script { };
};

View file

@ -10,19 +10,20 @@
, libadwaita
, libgee
, granite7
, pantheon-wayland
, polkit
, wrapGAppsHook4
}:
stdenv.mkDerivation rec {
pname = "pantheon-agent-polkit";
version = "8.0.0";
version = "8.0.1";
src = fetchFromGitHub {
owner = "elementary";
repo = pname;
rev = version;
hash = "sha256-Hm4vEubj2VjObD2t7wBHGrjnp6Nza6Ze7AOcJ0n5Dmc=";
hash = "sha256-qqeB8SLuES/KoK7ycQ2J1YBA07HITovdnO8kSsrVcfs=";
};
nativeBuildInputs = [
@ -38,6 +39,7 @@ stdenv.mkDerivation rec {
gtk4
libadwaita
libgee
pantheon-wayland
polkit
];

View file

@ -11,19 +11,20 @@
, granite7
, gsettings-desktop-schemas
, gtk4
, pantheon-wayland
, systemd
, xorg
}:
stdenv.mkDerivation rec {
pname = "xdg-desktop-portal-pantheon";
version = "7.2.0";
version = "8.0.0";
src = fetchFromGitHub {
owner = "elementary";
repo = "portals";
rev = version;
sha256 = "sha256-0pXb4GPUThHfe0mCqoYuQzMgRCeejsEI3fK7PxjrtJM=";
sha256 = "sha256-pf7xQwsBRjjyOMUPe7fJp1vOhhBmuXJ6Uf4YosxbHtw=";
};
nativeBuildInputs = [
@ -39,6 +40,7 @@ stdenv.mkDerivation rec {
granite7
gsettings-desktop-schemas
gtk4
pantheon-wayland
systemd
xorg.libX11
];

View file

@ -218,11 +218,7 @@ effectiveStdenv.mkDerivation rec {
];
env = lib.optionalAttrs effectiveStdenv.cc.isClang {
NIX_CFLAGS_COMPILE = toString [
"-Wno-error=deprecated-declarations"
"-Wno-error=deprecated-pragma"
"-Wno-error=unused-but-set-variable"
];
NIX_CFLAGS_COMPILE = "-Wno-error";
};
# aarch64-linux fails cpuinfo test, because /sys/devices/system/cpu/ does not exist in the sandbox
@ -275,9 +271,5 @@ effectiveStdenv.mkDerivation rec {
platforms = platforms.unix;
license = licenses.mit;
maintainers = with maintainers; [ puffnfresh ck3d cbourjau ];
badPlatforms = [
# error: implicit capture of 'this' with a capture default of '=' is deprecated [-Werror,-Wdeprecated-this-capture]
lib.systems.inspect.patterns.isDarwin
];
};
}

View file

@ -13,11 +13,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "newlib";
version = "4.4.0.20231231";
version = "4.5.0.20241231";
src = fetchurl {
url = "ftp://sourceware.org/pub/newlib/newlib-${finalAttrs.version}.tar.gz";
sha256 = "sha256-DBZqOeG/CVHfr81olJ/g5LbTZYCB1igvOa7vxjEPLxM=";
sha256 = "sha256-M/EmBeAFSWWZbCXBOCs+RjsK+ReZAB9buMBjDy7IyFI=";
};
patches = lib.optionals nanoizeNewlib [

View file

@ -23,14 +23,14 @@
buildPythonPackage rec {
pname = "bayesian-optimization";
version = "2.0.1";
version = "2.0.3";
pyproject = true;
src = fetchFromGitHub {
owner = "bayesian-optimization";
repo = "BayesianOptimization";
tag = "v${version}";
hash = "sha256-7XjbW/pKe5pbSDpoXdUxm/eRlD+KipCVLMEl5q0hjxo=";
hash = "sha256-vT8MlfAdzIKj6uyQedYngP6rCkIZwS8EdtKs4+8l9CA=";
};
build-system = [ poetry-core ];

View file

@ -16,7 +16,7 @@
buildPythonPackage rec {
pname = "httpx-ws";
version = "0.7.0";
version = "0.7.1";
pyproject = true;
disabled = pythonOlder "3.9";
@ -25,7 +25,7 @@ buildPythonPackage rec {
owner = "frankie567";
repo = "httpx-ws";
tag = "v${version}";
hash = "sha256-/xhj27uMPvbVsieAjnd8Z9q18BLxaXP/1ndrgewN4Og=";
hash = "sha256-UO9O4d7QfPdIWL4CtlOuwQRsk/9sEFknahDLWIOfeA0=";
};
# we don't need to use the hatch-regex-commit plugin

View file

@ -14,22 +14,22 @@
buildPythonPackage rec {
pname = "linode-api";
version = "5.25.0";
version = "5.26.0";
pyproject = true;
disabled = pythonOlder "3.6";
disabled = pythonOlder "3.9";
# Sources from Pypi exclude test fixtures
src = fetchFromGitHub {
owner = "linode";
repo = "python-linode-api";
tag = "v${version}";
hash = "sha256-rEBMZft4o7R2e0N7x1ZEaCisRmhKggMbZWdtDvraoD0=";
hash = "sha256-+Co8c0JJKzA2IBj/RUrY+iNTCI0nCvqQUW1F7Crd2mc=";
};
nativeBuildInputs = [ setuptools ];
build-system = [ setuptools ];
propagatedBuildInputs = [
dependencies = [
requests
polling
deprecated
@ -48,10 +48,10 @@ buildPythonPackage rec {
pythonImportsCheck = [ "linode_api4" ];
meta = with lib; {
meta = {
description = "Python library for the Linode API v4";
homepage = "https://github.com/linode/python-linode-api";
license = licenses.bsd3;
maintainers = with maintainers; [ glenns ];
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ glenns ];
};
}

View file

@ -18,7 +18,7 @@ buildPythonPackage rec {
src = fetchFromGitHub {
owner = "cjekel";
repo = "piecewise_linear_fit_py";
tag = "v.${version}";
tag = "v${version}";
hash = "sha256-TamFg+bX8QPRjY0HdrYviJRP8VwM7ucDFE2eZz5xNr0=";
};

View file

@ -13,7 +13,7 @@
buildPythonPackage rec {
pname = "python-gitlab";
version = "5.3.0";
version = "5.3.1";
pyproject = true;
disabled = pythonOlder "3.8";
@ -21,7 +21,7 @@ buildPythonPackage rec {
src = fetchPypi {
pname = "python_gitlab";
inherit version;
hash = "sha256-GPEHZLasFK0MtSUu1mAlvf5ijOdHsau7z+dqgirGuuc=";
hash = "sha256-yqvLUAIQ9PWe+fj+7E+Z6CHWUqVccuyfW/gg9F/Bcpg=";
};
build-system = [ setuptools ];

View file

@ -29,14 +29,14 @@
stdenv.mkDerivation rec {
pname = "vcmi";
version = "1.6.2";
version = "1.6.3";
src = fetchFromGitHub {
owner = "vcmi";
repo = "vcmi";
rev = version;
fetchSubmodules = true;
hash = "sha256-IUE/19tknfvca84Jiybbq0zb00WxOgP9N+BMTbUfPzA=";
hash = "sha256-nq/2y0bV1UMMQVOpT/iG27Ulvux1aWS55XalMtayOtQ=";
};
nativeBuildInputs = [

View file

@ -14,12 +14,12 @@ let
# kernel config in the xanmod version commit
variants = {
lts = {
version = "6.6.69";
hash = "sha256-ZU0vVea8CCR41Sc+bbM4GOnDsFUpTvBvCEHSHLmWHds=";
version = "6.6.70";
hash = "sha256-5G3Lo+dWObVDaBRzn2Ho24R2vMjsupx5z2jRIQ0NAl0=";
};
main = {
version = "6.12.8";
hash = "sha256-rEzSM71ACrBclunnJZ4qaEhPGIKCvyLVpeHgsiDxMu4=";
version = "6.12.9";
hash = "sha256-vA1/OhhwSKVIaLJ7uN2ut1b1/UX/mIAITQ3BqTZD9Uk=";
};
};

View file

@ -7,13 +7,13 @@
python3.pkgs.buildPythonApplication rec {
pname = "ansible-lint";
version = "24.9.2";
version = "24.12.2";
format = "pyproject";
src = fetchPypi {
inherit version;
pname = "ansible_lint";
hash = "sha256-fP9sWvEO+Za3xgEMvUjJFZJ2SuCY8rBUCHJomaEGan8=";
hash = "sha256-9jYwnE5/ck/BpUTfUpxMI1T1TPNe3hHXUDZq+xFYpGQ=";
};
postPatch = ''

View file

@ -54,6 +54,8 @@ let
dontConfigure = true;
patches = [ ./disable-theme-tests.patch ];
postPatch = ''
patchShebangs --build test.sh test/shimexec .test-framework/bin/best.sh
'';
@ -103,8 +105,6 @@ let
license = with licenses; [ mit ];
maintainers = with maintainers; [ bbigras ];
platforms = platforms.all;
# not compatible with bat 0.25.0
broken = true;
};
};
script =

View file

@ -0,0 +1,42 @@
Subject: [PATCH] skip tests depending on color theme
===================================================================
diff --git a/test/suite/batpipe.sh b/test/suite/batpipe.sh
--- a/test/suite/batpipe.sh (revision 36c77c171cc71b2ff3ec4cb781aa16ca3ad258b1)
+++ b/test/suite/batpipe.sh (date 1736621098865)
@@ -29,6 +29,7 @@
test:batpipe_term_width() {
description "Test support for BATPIPE_TERM_WIDTH"
snapshot STDOUT
+ skip "bat-extras does not support `--theme` flag"
export BATPIPE=color
export BATPIPE_DEBUG_PARENT_EXECUTABLE=less
Index: test/suite/batgrep.sh
===================================================================
diff --git a/test/suite/batgrep.sh b/test/suite/batgrep.sh
--- a/test/suite/batgrep.sh (revision 36c77c171cc71b2ff3ec4cb781aa16ca3ad258b1)
+++ b/test/suite/batgrep.sh (date 1736621086239)
@@ -58,6 +58,7 @@
description "Snapshot test for colored output."
snapshot stdout
snapshot stderr
+ skip "bat-extras does not support `--theme` flag"
require_rg
@@ -118,6 +119,7 @@
description "Should respect the BAT_STYLE variable."
snapshot stdout
snapshot stderr
+ skip "bat-extras does not support `--theme` flag"
require_rg
@@ -128,6 +130,7 @@
description "Snapshot test for output without separator"
snapshot stdout
snapshot stderr
+ skip "bat-extras does not support `--theme` flag"
require_rg

View file

@ -15,7 +15,7 @@
}:
let
version = "0.1";
version = "0.3";
pluginPath = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" [
gstreamer
@ -34,7 +34,7 @@ stdenv.mkDerivation {
owner = "hzeller";
repo = "gmrender-resurrect";
rev = "v${version}";
sha256 = "sha256-FR5bMjwPnY1/PNdPRiaxoY1keogq40M06YOaoks4zVY=";
sha256 = "sha256-Zt8YYRqqX5L/MGLsFzR8JOdYoNX9ypXLX5i+fqkzPkk=";
};
buildInputs = [

View file

@ -456,6 +456,7 @@ mapAliases {
gmtk = throw "'gmtk' has been removed due to lack of maintenance upstream"; # Added 2024-09-14
gmtp = throw "'gmtp' has been removed due to lack of maintenance upstream. Consider using 'gnome-music' instead"; # Added 2024-09-14
gnome-latex = throw "'gnome-latex' has been superseded by 'enter-tex'"; # Added 2024-09-18
gnome-settings-daemon43 = throw "'gnome-settings-daemon43' has been removed since it is no longer used by Pantheon."; # Added 2024-09-22
gnu-cobol = gnucobol; # Added 2024-09-17
gnupg1orig = throw "'gnupg1orig' has been removed due to lack of active upstream maintainance. Consider using 'gnupg' instead"; # Added 2025-01-11
gnupg22 = throw "'gnupg22' is end-of-life. Consider using 'gnupg24' instead"; # Added 2025-01-05
@ -886,6 +887,7 @@ mapAliases {
mupdf_1_17 = throw "'mupdf_1_17' has been removed due to being outdated and insecure. Consider using 'mupdf' instead."; # Added 2024-08-22
mustache-tcl = tclPackages.mustache-tcl; # Added 2024-10-02
mutt-with-sidebar = mutt; # Added 2022-09-17
mutter43 = throw "'mutter43' has been removed since it is no longer used by Pantheon."; # Added 2024-09-22
mysql-client = hiPrio mariadb.client;
mysql = throw "'mysql' has been renamed to/replaced by 'mariadb'"; # Converted to throw 2024-10-17
mesa_drivers = throw "'mesa_drivers' has been removed, use 'pkgs.mesa' or 'pkgs.mesa.drivers' depending on target use case."; # Converted to throw 2024-07-11