From 61e11f789f4a124c68f518dcbecef1be4954bf28 Mon Sep 17 00:00:00 2001 From: Heitor Augusto Date: Sun, 2 Mar 2025 12:56:45 -0300 Subject: [PATCH 1/9] cosmic-settings: add updateScript --- pkgs/by-name/co/cosmic-settings/package.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/by-name/co/cosmic-settings/package.nix b/pkgs/by-name/co/cosmic-settings/package.nix index 052c35c268b2..6618f69b47ef 100644 --- a/pkgs/by-name/co/cosmic-settings/package.nix +++ b/pkgs/by-name/co/cosmic-settings/package.nix @@ -17,6 +17,7 @@ expat, udev, util-linux, + nix-update-script, }: rustPlatform.buildRustPackage rec { @@ -71,6 +72,15 @@ rustPlatform.buildRustPackage rec { --suffix XDG_DATA_DIRS : "$out/share:${cosmic-icons}/share" ''; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version" + "unstable" + "--version-regex" + "epoch-(.*)" + ]; + }; + meta = with lib; { homepage = "https://github.com/pop-os/cosmic-settings"; description = "Settings for the COSMIC Desktop Environment"; From 1e5d8763fcd0fbe1db2f7cf0a4b3402475a261e7 Mon Sep 17 00:00:00 2001 From: Heitor Augusto Date: Sun, 2 Mar 2025 13:03:55 -0300 Subject: [PATCH 2/9] cosmic-settings: use libcosmicAppHook --- pkgs/by-name/co/cosmic-settings/package.nix | 30 ++++++++++----------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/pkgs/by-name/co/cosmic-settings/package.nix b/pkgs/by-name/co/cosmic-settings/package.nix index 6618f69b47ef..3b7f44779ca5 100644 --- a/pkgs/by-name/co/cosmic-settings/package.nix +++ b/pkgs/by-name/co/cosmic-settings/package.nix @@ -4,22 +4,23 @@ fetchFromGitHub, rustPlatform, cmake, - makeBinaryWrapper, - cosmic-icons, - cosmic-randr, just, + libcosmicAppHook, pkg-config, - libxkbcommon, + expat, libinput, fontconfig, freetype, - wayland, - expat, udev, util-linux, + cosmic-randr, nix-update-script, }: - +let + libcosmicAppHook' = (libcosmicAppHook.__spliced.buildHost or libcosmicAppHook).override { + includeSettings = false; + }; +in rustPlatform.buildRustPackage rec { pname = "cosmic-settings"; version = "1.0.0-alpha.1"; @@ -41,16 +42,15 @@ rustPlatform.buildRustPackage rec { nativeBuildInputs = [ cmake just + libcosmicAppHook' pkg-config - makeBinaryWrapper ]; + buildInputs = [ - libxkbcommon - libinput + expat fontconfig freetype - wayland - expat + libinput udev util-linux ]; @@ -66,10 +66,8 @@ rustPlatform.buildRustPackage rec { "target/${stdenv.hostPlatform.rust.cargoShortTarget}/release/cosmic-settings" ]; - postInstall = '' - wrapProgram "$out/bin/cosmic-settings" \ - --prefix PATH : ${lib.makeBinPath [ cosmic-randr ]} \ - --suffix XDG_DATA_DIRS : "$out/share:${cosmic-icons}/share" + preFixup = '' + libcosmicAppWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ cosmic-randr ]}) ''; passthru.updateScript = nix-update-script { From 3d1c1f6f399b673eeae09f84d2a019daefa1ee16 Mon Sep 17 00:00:00 2001 From: Heitor Augusto Date: Sun, 2 Mar 2025 13:05:23 -0300 Subject: [PATCH 3/9] cosmic-settings: add missing dependencies --- pkgs/by-name/co/cosmic-settings/package.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/co/cosmic-settings/package.nix b/pkgs/by-name/co/cosmic-settings/package.nix index 3b7f44779ca5..9b4ff2145ac0 100644 --- a/pkgs/by-name/co/cosmic-settings/package.nix +++ b/pkgs/by-name/co/cosmic-settings/package.nix @@ -11,6 +11,8 @@ libinput, fontconfig, freetype, + pipewire, + pulseaudio, udev, util-linux, cosmic-randr, @@ -44,6 +46,8 @@ rustPlatform.buildRustPackage rec { just libcosmicAppHook' pkg-config + rustPlatform.bindgenHook + util-linux ]; buildInputs = [ @@ -51,8 +55,9 @@ rustPlatform.buildRustPackage rec { fontconfig freetype libinput + pipewire + pulseaudio udev - util-linux ]; dontUseJustBuild = true; From 13aa3514f2199dc06dc1519e692d702ee73bf458 Mon Sep 17 00:00:00 2001 From: Heitor Augusto Date: Sun, 2 Mar 2025 13:09:39 -0300 Subject: [PATCH 4/9] cosmic-settings: refactor --- pkgs/by-name/co/cosmic-settings/package.nix | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/pkgs/by-name/co/cosmic-settings/package.nix b/pkgs/by-name/co/cosmic-settings/package.nix index 9b4ff2145ac0..d1f7d245c887 100644 --- a/pkgs/by-name/co/cosmic-settings/package.nix +++ b/pkgs/by-name/co/cosmic-settings/package.nix @@ -30,17 +30,13 @@ rustPlatform.buildRustPackage rec { src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-settings"; - rev = "epoch-${version}"; + tag = "epoch-${version}"; hash = "sha256-gTzZvhj7oBuL23dtedqfxUCT413eMoDc0rlNeqCeZ6E="; }; useFetchCargoVendor = true; cargoHash = "sha256-zMHJc6ytbOoi9E47Zsg6zhbQKObsaOtVHuPnLAu36I4="; - postPatch = '' - substituteInPlace justfile --replace '#!/usr/bin/env' "#!$(command -v env)" - ''; - nativeBuildInputs = [ cmake just @@ -61,6 +57,7 @@ rustPlatform.buildRustPackage rec { ]; dontUseJustBuild = true; + dontUseJustCheck = true; justFlags = [ "--set" @@ -84,12 +81,12 @@ rustPlatform.buildRustPackage rec { ]; }; - meta = with lib; { - homepage = "https://github.com/pop-os/cosmic-settings"; + meta = { description = "Settings for the COSMIC Desktop Environment"; - license = licenses.gpl3Only; - maintainers = with maintainers; [ nyabinary ]; - platforms = platforms.linux; + homepage = "https://github.com/pop-os/cosmic-settings"; + license = lib.licenses.gpl3Only; mainProgram = "cosmic-settings"; + maintainers = with lib.maintainers; [ nyabinary ]; + platforms = lib.platforms.linux; }; } From 7e6f49d988e8f3597a1900ad983453ae45b0e368 Mon Sep 17 00:00:00 2001 From: Heitor Augusto Date: Sun, 2 Mar 2025 13:14:29 -0300 Subject: [PATCH 5/9] cosmic-settings: add X11 xkb rules paths to wrapper Set X11_BASE_RULES_XML and X11_BASE_EXTRA_RULES_XML environment variables in the wrapper to fix xkeyboard_config path resolution. The xkb-data crate used by cosmic-settings had hard-coded paths for the base.xml and extra.xml files (/usr/share/X11/xkb/rules/), which are not compatible with NixOS. --- pkgs/by-name/co/cosmic-settings/package.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/co/cosmic-settings/package.nix b/pkgs/by-name/co/cosmic-settings/package.nix index d1f7d245c887..7d3f96afd695 100644 --- a/pkgs/by-name/co/cosmic-settings/package.nix +++ b/pkgs/by-name/co/cosmic-settings/package.nix @@ -16,6 +16,7 @@ udev, util-linux, cosmic-randr, + xkeyboard_config, nix-update-script, }: let @@ -69,7 +70,11 @@ rustPlatform.buildRustPackage rec { ]; preFixup = '' - libcosmicAppWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ cosmic-randr ]}) + libcosmicAppWrapperArgs+=( + --prefix PATH : ${lib.makeBinPath [ cosmic-randr ]} + --set-default X11_BASE_RULES_XML ${xkeyboard_config}/share/X11/xkb/rules/base.xml + --set-default X11_BASE_EXTRA_RULES_XML ${xkeyboard_config}/share/X11/xkb/rules/extra.xml + ) ''; passthru.updateScript = nix-update-script { From 506b3a3a18e68fcdb8adf095b498996eb52494bf Mon Sep 17 00:00:00 2001 From: Heitor Augusto Date: Sun, 2 Mar 2025 13:18:00 -0300 Subject: [PATCH 6/9] cosmic-settings: add HeitorAugustoLN as a maintainer --- pkgs/by-name/co/cosmic-settings/package.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/co/cosmic-settings/package.nix b/pkgs/by-name/co/cosmic-settings/package.nix index 7d3f96afd695..9bac40d11b18 100644 --- a/pkgs/by-name/co/cosmic-settings/package.nix +++ b/pkgs/by-name/co/cosmic-settings/package.nix @@ -91,7 +91,10 @@ rustPlatform.buildRustPackage rec { homepage = "https://github.com/pop-os/cosmic-settings"; license = lib.licenses.gpl3Only; mainProgram = "cosmic-settings"; - maintainers = with lib.maintainers; [ nyabinary ]; + maintainers = with lib.maintainers; [ + nyabinary + HeitorAugustoLN + ]; platforms = lib.platforms.linux; }; } From 4c7f122c486a3877fe66dc282ffc550e97f1677c Mon Sep 17 00:00:00 2001 From: Heitor Augusto Date: Sun, 2 Mar 2025 13:20:05 -0300 Subject: [PATCH 7/9] cosmic-settings: 1.0.0-alpha.1 -> 1.0.0-alpha.6 --- pkgs/by-name/co/cosmic-settings/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/co/cosmic-settings/package.nix b/pkgs/by-name/co/cosmic-settings/package.nix index 9bac40d11b18..bc4ef4cd2da5 100644 --- a/pkgs/by-name/co/cosmic-settings/package.nix +++ b/pkgs/by-name/co/cosmic-settings/package.nix @@ -26,17 +26,17 @@ let in rustPlatform.buildRustPackage rec { pname = "cosmic-settings"; - version = "1.0.0-alpha.1"; + version = "1.0.0-alpha.6"; src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-settings"; tag = "epoch-${version}"; - hash = "sha256-gTzZvhj7oBuL23dtedqfxUCT413eMoDc0rlNeqCeZ6E="; + hash = "sha256-UKg3TIpyaqtynk6wLFFPpv69F74hmqfMVPra2+iFbvE="; }; useFetchCargoVendor = true; - cargoHash = "sha256-zMHJc6ytbOoi9E47Zsg6zhbQKObsaOtVHuPnLAu36I4="; + cargoHash = "sha256-mf/Cw3/RLrCYgsk7JKCU2+oPn1VPbD+4JzkUmbd47m8="; nativeBuildInputs = [ cmake From d9344e9f6798845a33636b9a14f51da1dd7622c9 Mon Sep 17 00:00:00 2001 From: Heitor Augusto Date: Sun, 2 Mar 2025 18:21:39 -0300 Subject: [PATCH 8/9] cosmic-settings: use mold linker --- pkgs/by-name/co/cosmic-settings/package.nix | 144 +++++++++++--------- 1 file changed, 76 insertions(+), 68 deletions(-) diff --git a/pkgs/by-name/co/cosmic-settings/package.nix b/pkgs/by-name/co/cosmic-settings/package.nix index bc4ef4cd2da5..76b4a372df91 100644 --- a/pkgs/by-name/co/cosmic-settings/package.nix +++ b/pkgs/by-name/co/cosmic-settings/package.nix @@ -1,6 +1,7 @@ { lib, stdenv, + stdenvAdapters, fetchFromGitHub, rustPlatform, cmake, @@ -18,83 +19,90 @@ cosmic-randr, xkeyboard_config, nix-update-script, + + withMoldLinker ? stdenv.targetPlatform.isLinux, }: let libcosmicAppHook' = (libcosmicAppHook.__spliced.buildHost or libcosmicAppHook).override { includeSettings = false; }; in -rustPlatform.buildRustPackage rec { - pname = "cosmic-settings"; - version = "1.0.0-alpha.6"; +rustPlatform.buildRustPackage.override + { stdenv = if withMoldLinker then stdenvAdapters.useMoldLinker stdenv else stdenv; } + rec { + pname = "cosmic-settings"; + version = "1.0.0-alpha.6"; - src = fetchFromGitHub { - owner = "pop-os"; - repo = "cosmic-settings"; - tag = "epoch-${version}"; - hash = "sha256-UKg3TIpyaqtynk6wLFFPpv69F74hmqfMVPra2+iFbvE="; - }; + src = fetchFromGitHub { + owner = "pop-os"; + repo = "cosmic-settings"; + tag = "epoch-${version}"; + hash = "sha256-UKg3TIpyaqtynk6wLFFPpv69F74hmqfMVPra2+iFbvE="; + }; - useFetchCargoVendor = true; - cargoHash = "sha256-mf/Cw3/RLrCYgsk7JKCU2+oPn1VPbD+4JzkUmbd47m8="; + useFetchCargoVendor = true; + cargoHash = "sha256-mf/Cw3/RLrCYgsk7JKCU2+oPn1VPbD+4JzkUmbd47m8="; - nativeBuildInputs = [ - cmake - just - libcosmicAppHook' - pkg-config - rustPlatform.bindgenHook - util-linux - ]; - - buildInputs = [ - expat - fontconfig - freetype - libinput - pipewire - pulseaudio - udev - ]; - - dontUseJustBuild = true; - dontUseJustCheck = true; - - justFlags = [ - "--set" - "prefix" - (placeholder "out") - "--set" - "bin-src" - "target/${stdenv.hostPlatform.rust.cargoShortTarget}/release/cosmic-settings" - ]; - - preFixup = '' - libcosmicAppWrapperArgs+=( - --prefix PATH : ${lib.makeBinPath [ cosmic-randr ]} - --set-default X11_BASE_RULES_XML ${xkeyboard_config}/share/X11/xkb/rules/base.xml - --set-default X11_BASE_EXTRA_RULES_XML ${xkeyboard_config}/share/X11/xkb/rules/extra.xml - ) - ''; - - passthru.updateScript = nix-update-script { - extraArgs = [ - "--version" - "unstable" - "--version-regex" - "epoch-(.*)" + nativeBuildInputs = [ + cmake + just + libcosmicAppHook' + pkg-config + rustPlatform.bindgenHook + util-linux ]; - }; - meta = { - description = "Settings for the COSMIC Desktop Environment"; - homepage = "https://github.com/pop-os/cosmic-settings"; - license = lib.licenses.gpl3Only; - mainProgram = "cosmic-settings"; - maintainers = with lib.maintainers; [ - nyabinary - HeitorAugustoLN + buildInputs = [ + expat + fontconfig + freetype + libinput + pipewire + pulseaudio + udev ]; - platforms = lib.platforms.linux; - }; -} + + dontUseJustBuild = true; + dontUseJustCheck = true; + + justFlags = [ + "--set" + "prefix" + (placeholder "out") + "--set" + "bin-src" + "target/${stdenv.hostPlatform.rust.cargoShortTarget}/release/cosmic-settings" + ]; + + env."CARGO_TARGET_${stdenv.hostPlatform.rust.cargoEnvVarTarget}_RUSTFLAGS" = + lib.optionalString withMoldLinker "-C link-arg=-fuse-ld=mold"; + + preFixup = '' + libcosmicAppWrapperArgs+=( + --prefix PATH : ${lib.makeBinPath [ cosmic-randr ]} + --set-default X11_BASE_RULES_XML ${xkeyboard_config}/share/X11/xkb/rules/base.xml + --set-default X11_BASE_EXTRA_RULES_XML ${xkeyboard_config}/share/X11/xkb/rules/extra.xml + ) + ''; + + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version" + "unstable" + "--version-regex" + "epoch-(.*)" + ]; + }; + + meta = { + description = "Settings for the COSMIC Desktop Environment"; + homepage = "https://github.com/pop-os/cosmic-settings"; + license = lib.licenses.gpl3Only; + mainProgram = "cosmic-settings"; + maintainers = with lib.maintainers; [ + nyabinary + HeitorAugustoLN + ]; + platforms = lib.platforms.linux; + }; + } From b00b9d88ac2c981cbcedc0450809a42d669e10d5 Mon Sep 17 00:00:00 2001 From: Heitor Augusto Date: Mon, 3 Mar 2025 10:32:33 -0300 Subject: [PATCH 9/9] cosmic-settings: replace `rec` with `finalAttrs` --- pkgs/by-name/co/cosmic-settings/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/co/cosmic-settings/package.nix b/pkgs/by-name/co/cosmic-settings/package.nix index 76b4a372df91..3cac2e12b85f 100644 --- a/pkgs/by-name/co/cosmic-settings/package.nix +++ b/pkgs/by-name/co/cosmic-settings/package.nix @@ -29,14 +29,14 @@ let in rustPlatform.buildRustPackage.override { stdenv = if withMoldLinker then stdenvAdapters.useMoldLinker stdenv else stdenv; } - rec { + (finalAttrs: { pname = "cosmic-settings"; version = "1.0.0-alpha.6"; src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-settings"; - tag = "epoch-${version}"; + tag = "epoch-${finalAttrs.version}"; hash = "sha256-UKg3TIpyaqtynk6wLFFPpv69F74hmqfMVPra2+iFbvE="; }; @@ -105,4 +105,4 @@ rustPlatform.buildRustPackage.override ]; platforms = lib.platforms.linux; }; - } + })