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"; email = "nathaniel.brough@gmail.com";
name = "Nathaniel Brough"; name = "Nathaniel Brough";
}; };
nathanregner = {
email = "nathanregner@gmail.com";
github = "nathanregner";
githubId = 9659564;
name = "Nathan Regner";
};
nathanruiz = { nathanruiz = {
email = "nathanruiz@protonmail.com"; email = "nathanruiz@protonmail.com";
github = "nathanruiz"; 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 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. - 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. - 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. - 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. - 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" '' askPasswordWrapper = pkgs.writeScript "ssh-askpass-wrapper" ''
#! ${pkgs.runtimeShell} -e #! ${pkgs.runtimeShell} -e
export DISPLAY="$(systemctl --user show-environment | ${pkgs.gnused}/bin/sed 's/^DISPLAY=\(.*\)/\1/; t; d')" eval export $(systemctl --user show-environment | ${pkgs.coreutils}/bin/grep -E '^(DISPLAY|WAYLAND_DISPLAY|XAUTHORITY)=')
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')"
exec ${cfg.askPassword} "$@" exec ${cfg.askPassword} "$@"
''; '';

View file

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

View file

@ -18,6 +18,13 @@ let
}; };
in in
{ {
imports = [
(lib.mkRenamedOptionModule
[ "services" "klipper" "mutableConfigFolder" ]
[ "services" "klipper" "configDir" ]
)
];
##### interface ##### interface
options = { options = {
services.klipper = { services.klipper = {
@ -52,23 +59,22 @@ in
default = false; default = false;
example = true; example = true;
description = '' description = ''
Whether to copy the config to a mutable directory instead of using the one directly from the nix store. Whether to manage the config outside of NixOS.
This will only copy the config if the file at `services.klipper.mutableConfigPath` doesn't exist.
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; type = lib.types.path;
default = "/var/lib/klipper"; default = "/var/lib/klipper";
description = "Path to mutable Klipper config file."; description = "Path to Klipper config file.";
}; };
configFile = lib.mkOption { configFile = lib.mkOption {
type = lib.types.nullOr lib.types.path; type = lib.types.nullOr lib.types.path;
default = null; default = null;
description = '' description = "Path to default Klipper config.";
Path to default Klipper config.
'';
}; };
octoprintIntegration = lib.mkOption { 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 { services.klipper = lib.mkIf cfg.octoprintIntegration {
user = config.services.octoprint.user; user = config.services.octoprint.user;
group = config.services.octoprint.group; group = config.services.octoprint.group;
@ -178,9 +179,7 @@ in
"--input-tty=${cfg.inputTTY}" "--input-tty=${cfg.inputTTY}"
+ lib.optionalString (cfg.apiSocket != null) " --api-server=${cfg.apiSocket}" + lib.optionalString (cfg.apiSocket != null) " --api-server=${cfg.apiSocket}"
+ lib.optionalString (cfg.logFile != null) " --logfile=${cfg.logFile}"; + lib.optionalString (cfg.logFile != null) " --logfile=${cfg.logFile}";
printerConfigPath = printerConfig =
if cfg.mutableConfig then cfg.mutableConfigFolder + "/printer.cfg" else "/etc/klipper.cfg";
printerConfigFile =
if cfg.settings != null then format.generate "klipper.cfg" cfg.settings else cfg.configFile; if cfg.settings != null then format.generate "klipper.cfg" cfg.settings else cfg.configFile;
in in
{ {
@ -188,19 +187,33 @@ in
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network.target" ]; after = [ "network.target" ];
preStart = '' preStart = ''
mkdir -p ${cfg.mutableConfigFolder} mkdir -p ${cfg.configDir}
${lib.optionalString (cfg.mutableConfig) '' pushd ${cfg.configDir}
[ -e ${printerConfigPath} ] || { if [ -e printer.cfg ]; then
cp ${printerConfigFile} ${printerConfigPath} ${
chmod +w ${printerConfigPath} 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"
''
} }
''} else
mkdir -p ${cfg.mutableConfigFolder}/gcodes cat ${printerConfig} > printer.cfg
fi
popd
''; '';
restartTriggers = lib.optional (!cfg.mutableConfig) [ printerConfig ];
serviceConfig = serviceConfig =
{ {
ExecStart = "${cfg.package}/bin/klippy ${klippyArgs} ${printerConfigPath}"; ExecStart = "${cfg.package}/bin/klippy ${klippyArgs} ${cfg.configDir}/printer.cfg";
RuntimeDirectory = "klipper"; RuntimeDirectory = "klipper";
StateDirectory = "klipper"; StateDirectory = "klipper";
SupplementaryGroups = [ "dialout" ]; SupplementaryGroups = [ "dialout" ];

View file

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

View file

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

View file

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

View file

@ -39,8 +39,8 @@
'' ''
newergen = machine.succeed("realpath /run/current-system/specialisation/newer-generation/bin/switch-to-configuration").rstrip() newergen = machine.succeed("realpath /run/current-system/specialisation/newer-generation/bin/switch-to-configuration").rstrip()
with subtest("/run/etc-metadata/ is mounted"): with subtest("/run/nixos-etc-metadata/ is mounted"):
print(machine.succeed("mountpoint /run/etc-metadata")) print(machine.succeed("mountpoint /run/nixos-etc-metadata"))
with subtest("No temporary files leaked into stage 2"): with subtest("No temporary files leaked into stage 2"):
machine.succeed("[ ! -e /etc-metadata-image ]") machine.succeed("[ ! -e /etc-metadata-image ]")
@ -91,10 +91,14 @@
machine.succeed(f"{newergen} switch") machine.succeed(f"{newergen} switch")
tmpMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc\\..*' | wc -l").rstrip() tmpMounts = machine.succeed("find /run -maxdepth 1 -type d -regex '/run/nixos-etc\\..*'").rstrip()
metaMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc-metadata\\..*' | wc -l").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" numOfTmpMounts = len(tmpMounts.splitlines())
assert metaMounts == "1", f"Found {metaMounts} remaining metamounts" 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() newergen = machine.succeed("realpath /run/current-system/specialisation/newer-generation/bin/switch-to-configuration").rstrip()
with subtest("/run/etc-metadata/ is mounted"): with subtest("/run/nixos-etc-metadata/ is mounted"):
print(machine.succeed("mountpoint /run/etc-metadata")) print(machine.succeed("mountpoint /run/nixos-etc-metadata"))
with subtest("No temporary files leaked into stage 2"): with subtest("No temporary files leaked into stage 2"):
machine.succeed("[ ! -e /etc-metadata-image ]") machine.succeed("[ ! -e /etc-metadata-image ]")
@ -68,10 +68,14 @@
machine.succeed(f"{newergen} switch") machine.succeed(f"{newergen} switch")
assert machine.succeed("cat /etc/newergen") == "newergen" assert machine.succeed("cat /etc/newergen") == "newergen"
tmpMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc\\..*' | wc -l").rstrip() tmpMounts = machine.succeed("find /run -maxdepth 1 -type d -regex '/run/nixos-etc\\..*'").rstrip()
metaMounts = machine.succeed("find /tmp -maxdepth 1 -type d -regex '/tmp/nixos-etc-metadata\\..*' | wc -l").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" numOfTmpMounts = len(tmpMounts.splitlines())
assert metaMounts == "1", f"Found {metaMounts} remaining metamounts" 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 {}; patroni = handleTestOn ["x86_64-linux"] ./patroni.nix {};
pantalaimon = handleTest ./matrix/pantalaimon.nix {}; pantalaimon = handleTest ./matrix/pantalaimon.nix {};
pantheon = handleTest ./pantheon.nix {}; pantheon = handleTest ./pantheon.nix {};
pantheon-wayland = handleTest ./pantheon-wayland.nix {};
paperless = handleTest ./paperless.nix {}; paperless = handleTest ./paperless.nix {};
parsedmarc = handleTest ./parsedmarc {}; parsedmarc = handleTest ./parsedmarc {};
password-option-override-ordering = handleTest ./password-option-override-ordering.nix {}; 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}") machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}")
with subtest("Check if Pantheon components actually start"): 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}") 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) 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}") machine.wait_for_unit(i, "${user.name}")
with subtest("Check if various environment variables are set"): 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'") machine.succeed(f"{cmd} | grep 'XDG_DATA_DIRS' | grep 'gsettings-schemas/pantheon-agent-geoclue2'")
# Hopefully from login shell. # Hopefully from login shell.
machine.succeed(f"{cmd} | grep '__NIXOS_SET_ENVIRONMENT_DONE' | grep '1'") 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"): with subtest("Open elementary videos"):
machine.execute("su - ${user.name} -c 'DISPLAY=:0 io.elementary.videos >&2 &'") 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.succeed(f"su - ${user.name} -c '{env} {cmd}'")
machine.sleep(5) machine.sleep(5)
machine.screenshot("multitasking") machine.screenshot("multitasking")
machine.succeed(f"su - ${user.name} -c '{env} {cmd}'")
with subtest("Check if gala has ever coredumped"): with subtest("Check if gala has ever coredumped"):
machine.fail("coredumpctl --json=short | grep gala") machine.fail("coredumpctl --json=short | grep gala")

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -27,6 +27,8 @@ stdenv.mkDerivation rec {
pkg-config pkg-config
]; ];
env.FLTK_CONFIG = lib.getExe' (lib.getDev fltk13) "fltk-config";
meta = { meta = {
description = "Digital modem rig control program"; description = "Digital modem rig control program";
homepage = "https://sourceforge.net/projects/fldigi/"; 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, stdenv,
lib, lib,
fetchpatch,
substituteAll, substituteAll,
fetchurl, fetchurl,
meson, meson,
@ -13,7 +12,6 @@
glib, glib,
libnotify, libnotify,
libgnomekbd, libgnomekbd,
lcms2,
libpulseaudio, libpulseaudio,
alsa-lib, alsa-lib,
libcanberra-gtk3, libcanberra-gtk3,
@ -36,26 +34,22 @@
wrapGAppsHook3, wrapGAppsHook3,
python3, python3,
tzdata, tzdata,
nss,
gcr_4, gcr_4,
gnome-session-ctl, gnome-session-ctl,
}: }:
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "gnome-settings-daemon"; pname = "gnome-settings-daemon";
version = "43.0"; version = "46.0";
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/gnome-settings-daemon/${lib.versions.major finalAttrs.version}/gnome-settings-daemon-${finalAttrs.version}.tar.xz"; 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 = [ patches = [
# https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/202 # https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/202
(fetchpatch { ./add-gnome-session-ctl-option.patch
url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/aae1e774dd9de22fe3520cf9eb2bfbf7216f5eb0.patch";
hash = "sha256-O4m0rOW8Zrgu3Q0p0OA8b951VC0FjYbOUk9MLzB9icI=";
})
(substituteAll { (substituteAll {
src = ./fix-paths.patch; src = ./fix-paths.patch;
@ -85,14 +79,12 @@ stdenv.mkDerivation (finalAttrs: {
libnotify libnotify
libgnomekbd # for org.gnome.libgnomekbd.keyboard schema libgnomekbd # for org.gnome.libgnomekbd.keyboard schema
gnome-desktop gnome-desktop
lcms2
libpulseaudio libpulseaudio
alsa-lib alsa-lib
libcanberra-gtk3 libcanberra-gtk3
upower upower
colord colord
libgweather libgweather
nss
polkit polkit
geocode-glib_2 geocode-glib_2
geoclue2 geoclue2

View file

@ -2,7 +2,6 @@
fetchurl, fetchurl,
runCommand, runCommand,
lib, lib,
fetchpatch,
stdenv, stdenv,
pkg-config, pkg-config,
gettext, gettext,
@ -11,26 +10,43 @@
colord, colord,
lcms2, lcms2,
pango, pango,
json-glib,
libstartup_notification, libstartup_notification,
libcanberra, libcanberra,
ninja, ninja,
xvfb-run, xvfb-run,
xkeyboard_config,
libxcvt, libxcvt,
libxkbfile, libICE,
libX11,
libXcomposite,
libXcursor,
libXdamage, libXdamage,
libxkbcommon, libXext,
libXfixes,
libXi,
libXtst, libXtst,
libxkbfile,
xkeyboard_config,
libxkbcommon,
libXrender,
libxcb,
libXrandr,
libXinerama,
libXau,
libinput, libinput,
libdrm, libdrm,
libei,
libdisplay-info,
gsettings-desktop-schemas, gsettings-desktop-schemas,
glib, glib,
gtk3, atk,
gtk4,
fribidi,
harfbuzz,
gnome-desktop, gnome-desktop,
pipewire, pipewire,
libgudev, libgudev,
libwacom, libwacom,
libSM,
xwayland, xwayland,
mesa, mesa,
meson, meson,
@ -38,12 +54,11 @@
xorgserver, xorgserver,
python3, python3,
wayland-scanner, wayland-scanner,
wrapGAppsHook3, wrapGAppsHook4,
gi-docgen, gi-docgen,
sysprof, sysprof,
libsysprof-capture, libsysprof-capture,
desktop-file-utils, desktop-file-utils,
libcap_ng,
egl-wayland, egl-wayland,
graphene, graphene,
wayland, wayland,
@ -52,7 +67,7 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "mutter"; pname = "mutter";
version = "43.8"; version = "46.7";
outputs = [ outputs = [
"out" "out"
@ -63,33 +78,13 @@ stdenv.mkDerivation (finalAttrs: {
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/mutter/${lib.versions.major finalAttrs.version}/mutter-${finalAttrs.version}.tar.xz"; 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 = [ mesonFlags = [
"-Degl_device=true" "-Degl_device=true"
"-Dinstalled_tests=false" # TODO: enable these "-Dinstalled_tests=false" # TODO: enable these
"-Dtests=false"
"-Dwayland_eglstream=true" "-Dwayland_eglstream=true"
"-Dprofiler=true" "-Dprofiler=true"
"-Dxwayland_path=${lib.getExe xwayland}" "-Dxwayland_path=${lib.getExe xwayland}"
@ -100,10 +95,7 @@ stdenv.mkDerivation (finalAttrs: {
]; ];
propagatedBuildInputs = [ propagatedBuildInputs = [
# required for pkg-config to detect mutter-clutter # required for pkg-config to detect mutter-mtk
json-glib
libXtst
libcap_ng
graphene graphene
mesa # actually uses eglmesaext mesa # actually uses eglmesaext
]; ];
@ -118,7 +110,7 @@ stdenv.mkDerivation (finalAttrs: {
pkg-config pkg-config
python3 python3
wayland-scanner wayland-scanner
wrapGAppsHook3 wrapGAppsHook4
gi-docgen gi-docgen
xorgserver xorgserver
gobject-introspection gobject-introspection
@ -131,34 +123,50 @@ stdenv.mkDerivation (finalAttrs: {
gnome-desktop gnome-desktop
gnome-settings-daemon gnome-settings-daemon
gsettings-desktop-schemas gsettings-desktop-schemas
gtk3 atk
fribidi
harfbuzz
libcanberra libcanberra
libdrm libdrm
libei
libdisplay-info
libgudev libgudev
libinput libinput
libstartup_notification libstartup_notification
libwacom libwacom
libxkbcommon libSM
libxkbfile
libXdamage
colord colord
lcms2 lcms2
pango pango
pipewire pipewire
sysprof # for D-Bus interfaces sysprof # for D-Bus interfaces
libsysprof-capture libsysprof-capture
xkeyboard_config
xwayland xwayland
wayland wayland
wayland-protocols wayland-protocols
# X11 client
gtk4
libICE
libX11
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXtst
libxkbfile
xkeyboard_config
libxkbcommon
libXrender
libxcb
libXrandr
libXinerama
libXau
]; ];
postPatch = '' postPatch = ''
patchShebangs src/backends/native/gen-default-modes.py 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 = '' postInstall = ''
@ -168,7 +176,7 @@ stdenv.mkDerivation (finalAttrs: {
postFixup = '' postFixup = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back. # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
# TODO: Move this into a directory devhelp can find. # 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. # Install udev files into our own tree.
@ -177,7 +185,7 @@ stdenv.mkDerivation (finalAttrs: {
separateDebugInfo = true; separateDebugInfo = true;
passthru = { passthru = {
libdir = "${finalAttrs.finalPackage}/lib/mutter-11"; libdir = "${finalAttrs.finalPackage}/lib/mutter-14";
tests = { tests = {
libdirExists = runCommand "mutter-libdir-exists" { } '' 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 = '' preCheck = ''
export XDG_RUNTIME_DIR=$(mktemp -d) export XDG_RUNTIME_DIR=$(mktemp -d)
# See https://github.com/YaLTeR/niri/issues/953
export RAYON_NUM_THREADS=1
''; '';
passthru = { passthru = {

View file

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

View file

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

View file

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

View file

@ -6,16 +6,16 @@ rustPlatform.buildRustPackage rec {
pname = "typos-lsp"; pname = "typos-lsp";
# Please update the corresponding VSCode extension too. # Please update the corresponding VSCode extension too.
# See pkgs/applications/editors/vscode/extensions/tekumara.typos-vscode/default.nix # See pkgs/applications/editors/vscode/extensions/tekumara.typos-vscode/default.nix
version = "0.1.32"; version = "0.1.33";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tekumara"; owner = "tekumara";
repo = "typos-lsp"; repo = "typos-lsp";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-ezRyitmdcOki/thQGJ11+UYMIG2fYJ9HMcvD++s/ewM="; hash = "sha256-FunbE4HxDmugLmR2XwFFAjvNBTVbLAhiHtacxuPXMVE=";
}; };
cargoHash = "sha256-J1XbhCP2EMFIHs2U9kTtNNdGF4UnZWNgIO7L3YlYkqo="; cargoHash = "sha256-hmKm8mPIZlEDcAPuvyUUQZUpIy51mSksahcRknMnMW0=";
# fix for compilation on aarch64 # fix for compilation on aarch64
# see https://github.com/NixOS/nixpkgs/issues/145726 # 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 = 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-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-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 = 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-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. 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. 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. 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. 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. 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-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. 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 stdenv,
, fetchFromGitHub lib,
, vala fetchFromGitHub,
, atk meson,
, cairo ninja,
, dconf pkg-config,
, glib vala,
, gtk3 wayland-scanner,
, libwnck wrapGAppsHook4,
, libX11 glib,
, libXfixes granite7,
, libXi gtk4,
, pango libadwaita,
, pkg-config wayland,
, libxml2
, bamf
, gdk-pixbuf
, libdbusmenu-gtk3
, gnome-menus
, libgee
, wrapGAppsHook3
, meson
, ninja
, granite
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "elementary-dock"; pname = "elementary-dock";
version = "unstable-2021-05-07"; version = "8.0.1";
outputs = [ "out" "dev" ]; outputs = [
"out"
"dev"
];
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "elementary"; owner = "elementary";
repo = "dock"; repo = "dock";
rev = "113c3b0bc7744501d2101dd7afc1ef21ba66b326"; rev = finalAttrs.version;
sha256 = "sha256-YlvdB02/hUGaDyHIHy21bgloHyVy3vHcanyNKnp3YbM="; hash = "sha256-Q4Y9FVqzPXoz2Nti1qB5SOJQ0tETPcv2fZPOMkJaND8=";
}; };
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [ nativeBuildInputs = [
meson meson
ninja ninja
libxml2 # xmllint
pkg-config pkg-config
vala vala
wrapGAppsHook3 wayland-scanner
wrapGAppsHook4
]; ];
buildInputs = [ buildInputs = [
atk
bamf
cairo
gdk-pixbuf
glib glib
gnome-menus granite7
dconf gtk4
granite libadwaita
gtk3 wayland
libX11
libXfixes
libXi
libdbusmenu-gtk3
libgee
libwnck
pango
]; ];
postInstall = '' meta = {
# 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; {
description = "Elegant, simple, clean dock"; description = "Elegant, simple, clean dock";
homepage = "https://github.com/elementary/dock"; homepage = "https://github.com/elementary/dock";
license = licenses.gpl3Plus; license = lib.licenses.gpl3Plus;
platforms = platforms.linux; platforms = lib.platforms.linux;
maintainers = with maintainers; [ davidak ] ++ teams.pantheon.members; maintainers = lib.teams.pantheon.members;
mainProgram = "plank"; mainProgram = "io.elementary.dock";
}; };
} })

View file

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

View file

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

View file

@ -1,7 +1,6 @@
{ lib { lib
, stdenv , stdenv
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, nix-update-script , nix-update-script
, meson , meson
, ninja , ninja
@ -25,24 +24,15 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "switchboard-plug-pantheon-shell"; pname = "switchboard-plug-pantheon-shell";
version = "8.0.0"; version = "8.1.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "elementary"; owner = "elementary";
repo = pname; repo = pname;
rev = version; 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 = [ nativeBuildInputs = [
gettext gettext
meson meson
@ -67,13 +57,6 @@ stdenv.mkDerivation rec {
wingpanel-quick-settings # gsettings schemas 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 = { passthru = {
updateScript = nix-update-script { }; updateScript = nix-update-script { };
}; };

View file

@ -38,10 +38,10 @@ lib.makeScope pkgs.newScope (self: with self; {
maintainers = lib.teams.pantheon.members; maintainers = lib.teams.pantheon.members;
mutter = pkgs.mutter43; mutter = pkgs.mutter46;
# Using 43 to match Mutter used in Pantheon # 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 { }; elementary-gsettings-schemas = callPackage ./desktop/elementary-gsettings-schemas { };

View file

@ -1,7 +1,6 @@
{ lib { lib
, stdenv , stdenv
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, nix-update-script , nix-update-script
, meson , meson
, ninja , ninja
@ -15,24 +14,15 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "elementary-default-settings"; pname = "elementary-default-settings";
version = "7.1.0"; version = "8.0.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "elementary"; owner = "elementary";
repo = "default-settings"; repo = "default-settings";
rev = version; 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 = [ nativeBuildInputs = [
glib # glib-compile-schemas glib # glib-compile-schemas
meson meson
@ -49,19 +39,8 @@ stdenv.mkDerivation rec {
mesonFlags = [ mesonFlags = [
"--sysconfdir=${placeholder "out"}/etc" "--sysconfdir=${placeholder "out"}/etc"
"-Ddefault-wallpaper=${nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}" "-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 = '' postFixup = ''
# https://github.com/elementary/default-settings/issues/55 # https://github.com/elementary/default-settings/issues/55
rm -r $out/share/cups 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 , granite
, libgee , libgee
, libhandy , libhandy
, gnome-desktop
, gnome-settings-daemon , gnome-settings-daemon
, mutter , mutter
, elementary-icon-theme , elementary-icon-theme
@ -24,18 +25,19 @@
, gdk-pixbuf , gdk-pixbuf
, dbus , dbus
, accountsservice , accountsservice
, wayland-scanner
, wrapGAppsHook3 , wrapGAppsHook3
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "elementary-greeter"; pname = "elementary-greeter";
version = "7.0.0"; version = "8.0.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "elementary"; owner = "elementary";
repo = "greeter"; repo = "greeter";
rev = version; rev = version;
sha256 = "sha256-m/xuaMCAPoqhl/M547mdafBPBu3UhHmVmBIUKQoS5L8="; sha256 = "sha256-fx3KHMF6UhIFXyJHQ4dKJnVidsNMBk7AvHzaF3ELH1k=";
}; };
patches = [ patches = [
@ -47,18 +49,22 @@ stdenv.mkDerivation rec {
}) })
]; ];
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [ nativeBuildInputs = [
desktop-file-utils desktop-file-utils
meson meson
ninja ninja
pkg-config pkg-config
vala vala
wayland-scanner
wrapGAppsHook3 wrapGAppsHook3
]; ];
buildInputs = [ buildInputs = [
accountsservice accountsservice
elementary-icon-theme elementary-icon-theme
gnome-desktop
gnome-settings-daemon gnome-settings-daemon
gdk-pixbuf gdk-pixbuf
granite granite

View file

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

View file

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

View file

@ -5,7 +5,6 @@
, desktop-file-utils , desktop-file-utils
, gettext , gettext
, pkg-config , pkg-config
, writeScript
, gnome-keyring , gnome-keyring
, gnome-session , gnome-session
, wingpanel , wingpanel
@ -20,76 +19,6 @@
, ninja , 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 { stdenv.mkDerivation rec {
pname = "elementary-session-settings"; pname = "elementary-session-settings";
version = "8.0.1"; version = "8.0.1";
@ -122,6 +51,7 @@ stdenv.mkDerivation rec {
"-Dfallback-session=GNOME" "-Dfallback-session=GNOME"
"-Ddetect-program-prefixes=true" "-Ddetect-program-prefixes=true"
"--sysconfdir=${placeholder "out"}/etc" "--sysconfdir=${placeholder "out"}/etc"
"-Dwayland=true"
]; ];
postInstall = '' postInstall = ''
@ -130,16 +60,10 @@ stdenv.mkDerivation rec {
mkdir -p $out/share/applications mkdir -p $out/share/applications
cp -av ${./pantheon-mimeapps.list} $out/share/applications/pantheon-mimeapps.list cp -av ${./pantheon-mimeapps.list} $out/share/applications/pantheon-mimeapps.list
# instantiates pantheon's dockitems # absolute path patched sessions
cp "${dockitemAutostart}" $out/etc/xdg/autostart/default-elementary-dockitems.desktop substituteInPlace $out/share/{xsessions/pantheon.desktop,wayland-sessions/pantheon-wayland.desktop} \
--replace-fail "Exec=gnome-session" "Exec=${gnome-session}/bin/gnome-session" \
# script `Exec` to start pantheon --replace-fail "TryExec=io.elementary.wingpanel" "TryExec=${wingpanel}/bin/io.elementary.wingpanel"
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
''; '';
passthru = { passthru = {
@ -147,6 +71,7 @@ stdenv.mkDerivation rec {
providedSessions = [ providedSessions = [
"pantheon" "pantheon"
"pantheon-wayland"
]; ];
}; };

View file

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

View file

@ -1,60 +1,51 @@
{ lib {
, stdenv stdenv,
, fetchFromGitHub lib,
, fetchpatch fetchFromGitHub,
, nix-update-script desktop-file-utils,
, pkg-config gettext,
, meson libxml2,
, python3 meson,
, ninja ninja,
, vala pkg-config,
, desktop-file-utils vala,
, gettext wayland-scanner,
, libxml2 wrapGAppsHook3,
, gtk3 at-spi2-core,
, granite gnome-settings-daemon,
, libgee gnome-desktop,
, bamf granite,
, libcanberra-gtk3 granite7,
, gnome-desktop gtk3,
, mutter gtk4,
, gnome-settings-daemon libcanberra,
, wrapGAppsHook3 libgee,
, gexiv2 libhandy,
, systemd mutter,
sqlite,
systemd,
nix-update-script,
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "gala"; pname = "gala";
version = "7.1.3"; version = "8.1.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "elementary"; owner = "elementary";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "sha256-0fDbR28gh7F8Bcnofn48BBP1CTsYnfmY5kG72ookOXw="; hash = "sha256-C0Vct2xuGHd/G5x0Faif0DfpyNyCLJDxki+O9697c2s=";
}; };
patches = [ patches = [
# We look for plugins in `/run/current-system/sw/lib/` because # We look for plugins in `/run/current-system/sw/lib/` because
# there are multiple plugin providers (e.g. gala and wingpanel). # there are multiple plugin providers (e.g. gala and wingpanel).
./plugins-dir.patch ./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 = [ nativeBuildInputs = [
desktop-file-utils desktop-file-utils
gettext gettext
@ -62,29 +53,27 @@ stdenv.mkDerivation rec {
meson meson
ninja ninja
pkg-config pkg-config
python3
vala vala
wayland-scanner
wrapGAppsHook3 wrapGAppsHook3
]; ];
buildInputs = [ buildInputs = [
bamf at-spi2-core
gnome-settings-daemon gnome-settings-daemon
gexiv2
gnome-desktop gnome-desktop
granite granite
granite7
gtk3 gtk3
libcanberra-gtk3 gtk4 # gala-daemon
libcanberra
libgee libgee
libhandy
mutter mutter
sqlite
systemd systemd
]; ];
postPatch = ''
chmod +x build-aux/meson/post_install.py
patchShebangs build-aux/meson/post_install.py
'';
passthru = { passthru = {
updateScript = nix-update-script { }; updateScript = nix-update-script { };
}; };

View file

@ -1,12 +1,10 @@
{ lib { lib
, stdenv , stdenv
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, nix-update-script , nix-update-script
, substituteAll , substituteAll
, meson , meson
, ninja , ninja
, python3
, pkg-config , pkg-config
, vala , vala
, granite , granite
@ -14,8 +12,6 @@
, gettext , gettext
, gtk3 , gtk3
, json-glib , json-glib
, elementary-dock
, bamf
, switchboard-with-plugs , switchboard-with-plugs
, libsoup_2_4 , libsoup_2_4
, wingpanel , wingpanel
@ -26,13 +22,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "wingpanel-applications-menu"; pname = "wingpanel-applications-menu";
version = "2.11.1"; version = "8.0.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "elementary"; owner = "elementary";
repo = "applications-menu"; repo = "applications-menu";
rev = version; rev = version;
sha256 = "sha256-WlRrEkX0DGIHYWvUc9G4BbvofzWJwqkiJaJFwQ43GPE="; sha256 = "sha256-HA82CcVC2+hJFksOuZ8pFmw7phpkCEjPCgE/5naaPcg=";
}; };
patches = [ patches = [
@ -40,14 +36,6 @@ stdenv.mkDerivation rec {
src = ./fix-paths.patch; src = ./fix-paths.patch;
bc = "${bc}/bin/bc"; 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 = [ nativeBuildInputs = [
@ -55,13 +43,10 @@ stdenv.mkDerivation rec {
meson meson
ninja ninja
pkg-config pkg-config
python3
vala vala
]; ];
buildInputs = [ buildInputs = [
bamf
elementary-dock
granite granite
gtk3 gtk3
json-glib json-glib
@ -83,11 +68,6 @@ stdenv.mkDerivation rec {
"--sysconfdir=${placeholder "out"}/etc" "--sysconfdir=${placeholder "out"}/etc"
]; ];
postPatch = ''
chmod +x meson/post_install.py
patchShebangs meson/post_install.py
'';
doCheck = true; doCheck = true;
passthru = { 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 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 --- a/src/synapse-plugins/calculator-plugin/calculator-plugin-backend.vala
+++ b/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 { @@ -73,7 +73,7 @@ namespace Synapse {
Pid pid; Pid pid;
int read_fd, write_fd; int read_fd, write_fd;
/* Must include math library to get non-integer results and to access standard math functions */ /* Must include math library to get non-integer results and to access standard math functions */
- string[] argv = {"bc", "-l"}; - string[] argv = {"bc", "-l"};
+ string[] argv = {"@bc@", "-l"}; + string[] argv = {"@bc@", "-l"};
Process.spawn_async_with_pipes ( Process.spawn_async_with_pipes (
null, argv, null, null, argv, null,
diff --git a/src/synapse-plugins/calculator-plugin/calculator-plugin.vala b/src/synapse-plugins/calculator-plugin/calculator-plugin.vala 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 --- a/src/synapse-plugins/calculator-plugin/calculator-plugin.vala
+++ b/src/synapse-plugins/calculator-plugin/calculator-plugin.vala +++ b/src/synapse-plugins/calculator-plugin/calculator-plugin.vala
@@ -49,9 +49,7 @@ namespace Synapse { @@ -47,8 +47,7 @@ namespace Synapse {
_("Calculator"), DataSink.PluginRegistry.get_default ().register_plugin (
_("Calculate basic expressions."), typeof (CalculatorPlugin),
"accessories-calculator", "accessories-calculator",
- register_plugin, - register_plugin,
- Environment.find_program_in_path ("bc") != null, - Environment.find_program_in_path ("bc") != null
- _("bc is not installed")
+ register_plugin + register_plugin
); );
} }
diff --git a/src/synapse-plugins/converter-plugin/converter-plugin.vala b/src/synapse-plugins/converter-plugin/converter-plugin.vala 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 --- a/src/synapse-plugins/converter-plugin/converter-plugin.vala
+++ b/src/synapse-plugins/converter-plugin/converter-plugin.vala +++ b/src/synapse-plugins/converter-plugin/converter-plugin.vala
@@ -46,9 +46,7 @@ namespace Synapse { @@ -44,8 +44,7 @@ namespace Synapse {
_("Converter"), DataSink.PluginRegistry.get_default ().register_plugin (
_("Convert between units."), typeof (ConverterPlugin),
"accessories-converter", "accessories-converter",
- register_plugin, - register_plugin,
- Environment.find_program_in_path ("bc") != null, - Environment.find_program_in_path ("bc") != null
- _("bc is not installed")
+ register_plugin + register_plugin
); );
} }

View file

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

View file

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

View file

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

View file

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

View file

@ -218,11 +218,7 @@ effectiveStdenv.mkDerivation rec {
]; ];
env = lib.optionalAttrs effectiveStdenv.cc.isClang { env = lib.optionalAttrs effectiveStdenv.cc.isClang {
NIX_CFLAGS_COMPILE = toString [ NIX_CFLAGS_COMPILE = "-Wno-error";
"-Wno-error=deprecated-declarations"
"-Wno-error=deprecated-pragma"
"-Wno-error=unused-but-set-variable"
];
}; };
# aarch64-linux fails cpuinfo test, because /sys/devices/system/cpu/ does not exist in the sandbox # 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; platforms = platforms.unix;
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ puffnfresh ck3d cbourjau ]; 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: { stdenv.mkDerivation (finalAttrs: {
pname = "newlib"; pname = "newlib";
version = "4.4.0.20231231"; version = "4.5.0.20241231";
src = fetchurl { src = fetchurl {
url = "ftp://sourceware.org/pub/newlib/newlib-${finalAttrs.version}.tar.gz"; 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 [ patches = lib.optionals nanoizeNewlib [

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -54,6 +54,8 @@ let
dontConfigure = true; dontConfigure = true;
patches = [ ./disable-theme-tests.patch ];
postPatch = '' postPatch = ''
patchShebangs --build test.sh test/shimexec .test-framework/bin/best.sh patchShebangs --build test.sh test/shimexec .test-framework/bin/best.sh
''; '';
@ -103,8 +105,6 @@ let
license = with licenses; [ mit ]; license = with licenses; [ mit ];
maintainers = with maintainers; [ bbigras ]; maintainers = with maintainers; [ bbigras ];
platforms = platforms.all; platforms = platforms.all;
# not compatible with bat 0.25.0
broken = true;
}; };
}; };
script = 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 let
version = "0.1"; version = "0.3";
pluginPath = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" [ pluginPath = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" [
gstreamer gstreamer
@ -34,7 +34,7 @@ stdenv.mkDerivation {
owner = "hzeller"; owner = "hzeller";
repo = "gmrender-resurrect"; repo = "gmrender-resurrect";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-FR5bMjwPnY1/PNdPRiaxoY1keogq40M06YOaoks4zVY="; sha256 = "sha256-Zt8YYRqqX5L/MGLsFzR8JOdYoNX9ypXLX5i+fqkzPkk=";
}; };
buildInputs = [ buildInputs = [

View file

@ -456,6 +456,7 @@ mapAliases {
gmtk = throw "'gmtk' has been removed due to lack of maintenance upstream"; # Added 2024-09-14 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 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-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 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 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 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 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 mustache-tcl = tclPackages.mustache-tcl; # Added 2024-10-02
mutt-with-sidebar = mutt; # Added 2022-09-17 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-client = hiPrio mariadb.client;
mysql = throw "'mysql' has been renamed to/replaced by 'mariadb'"; # Converted to throw 2024-10-17 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 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