From 0a55457b38a82b9e8346382076308b5c65834877 Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Sat, 17 Apr 2021 02:26:28 +0200 Subject: [PATCH] Use patches for my pull requests --- flake.lock | 22 ++-- flake.nix | 16 ++- machines/kharbranth/default.nix | 5 +- machines/kholinar/default.nix | 5 +- machines/lasting-integrity/default.nix | 5 +- machines/urithiru/default.nix | 5 +- patches/119540.patch | 159 +++++++++++++++++++++++++ patches/119643.patch | 136 +++++++++++++++++++++ 8 files changed, 321 insertions(+), 32 deletions(-) create mode 100644 patches/119540.patch create mode 100644 patches/119643.patch diff --git a/flake.lock b/flake.lock index d3e18a69..8ba7e881 100644 --- a/flake.lock +++ b/flake.lock @@ -53,16 +53,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1618560353, - "narHash": "sha256-8I2frsJ7raO0k4tl49D31DgaRKd/bZ4LP7pBmgR7/1g=", - "owner": "chvp", + "lastModified": 1618586781, + "narHash": "sha256-zGtzzoN4dJ73WLQsvHm7d4260X4BifDm+1r6nxJBY2Y=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "c4a1855ef2ee48298d9a55e7e040c8abebd6f6b2", + "rev": "b77c77debbc6d0f7ce96196748ebd647d0fae5db", "type": "github" }, "original": { - "owner": "chvp", - "ref": "nixos-rebuild-remote-flakes", + "owner": "nixos", + "ref": "nixos-unstable-small", "repo": "nixpkgs", "type": "github" } @@ -80,15 +80,15 @@ "flake-utils": "flake-utils" }, "locked": { - "lastModified": 1618507051, - "narHash": "sha256-+e3AuL7BxxHyRfLiEsDnm5kwZk3EvKntqMYS3jtvEPw=", - "owner": "gytis-ivaskevicius", + "lastModified": 1618618037, + "narHash": "sha256-i9gV2CnBb/2c7a9z05THwaMozbimcygdo5qAz4aP8ow=", + "owner": "chvp", "repo": "flake-utils-plus", - "rev": "c87df35ff6a925ea88a0cb98662c91b451bf1cfc", + "rev": "23d3f12d6e34faa935646110d8af51ed1bc7a23d", "type": "github" }, "original": { - "owner": "gytis-ivaskevicius", + "owner": "chvp", "ref": "staging", "repo": "flake-utils-plus", "type": "github" diff --git a/flake.nix b/flake.nix index 2c5a5bfb..2ee7bb53 100644 --- a/flake.nix +++ b/flake.nix @@ -7,17 +7,17 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; - nixpkgs.url = "github:chvp/nixpkgs/nixos-rebuild-remote-flakes"; - utils.url = "github:gytis-ivaskevicius/flake-utils-plus/staging"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable-small"; + utils.url = "github:chvp/flake-utils-plus/staging"; }; outputs = inputs@{ self, nixpkgs, emacs-overlay, home-manager, utils }: utils.lib.systemFlake { inherit self inputs; channels.nixpkgs = { input = nixpkgs; - patches = [ ]; + patches = map (patch: ./patches + "/${patch}") (builtins.attrNames (builtins.readDir ./patches)); + overlaysBuilder = _: [ emacs-overlay.overlay ]; }; - sharedOverlays = [ emacs-overlay.overlay ]; hostDefaults = { modules = [ ({ lib, ... }: { @@ -36,6 +36,12 @@ urithiru.modules = [ ./machines/urithiru ]; }; devShellBuilder = channels: - let pkgs = channels.nixpkgs; in pkgs.mkShell { buildInputs = [ pkgs.nixpkgs-fmt ]; }; + let pkgs = channels.nixpkgs; in + pkgs.mkShell { + buildInputs = [ + pkgs.nixpkgs-fmt + (pkgs.writeShellScriptBin "fetchpatch" "curl -L https://github.com/NixOS/nixpkgs/pull/$1.patch -o patches/$1.patch") + ]; + }; }; } diff --git a/machines/kharbranth/default.nix b/machines/kharbranth/default.nix index 42d55b6c..c0603e18 100644 --- a/machines/kharbranth/default.nix +++ b/machines/kharbranth/default.nix @@ -8,10 +8,7 @@ boot.kernelPackages = pkgs.linuxPackages_latest; - networking = { - hostId = "e718389d"; - hostName = "kharbranth"; - }; + networking.hostId = "e718389d"; time.timeZone = "Europe/Brussels"; diff --git a/machines/kholinar/default.nix b/machines/kholinar/default.nix index 0dce570b..fc13c0ad 100644 --- a/machines/kholinar/default.nix +++ b/machines/kholinar/default.nix @@ -20,10 +20,7 @@ }; }; - networking = { - hostId = "3cc1a4b2"; - hostName = "kholinar"; - }; + networking.hostId = "3cc1a4b2"; time.timeZone = "Europe/Brussels"; diff --git a/machines/lasting-integrity/default.nix b/machines/lasting-integrity/default.nix index e6cc9352..9d5bd330 100644 --- a/machines/lasting-integrity/default.nix +++ b/machines/lasting-integrity/default.nix @@ -8,10 +8,7 @@ time.timeZone = "Europe/Berlin"; - networking = { - hostName = "lasting-integrity"; - hostId = "b352adfe"; - }; + networking.hostId = "b352adfe"; chvp = { stateVersion = "20.09"; diff --git a/machines/urithiru/default.nix b/machines/urithiru/default.nix index 2aa5e162..9ed4e4b6 100644 --- a/machines/urithiru/default.nix +++ b/machines/urithiru/default.nix @@ -9,10 +9,7 @@ time.timeZone = "Europe/Berlin"; - networking = { - hostName = "urithiru"; - hostId = "079e60ba"; - }; + networking.hostId = "079e60ba"; chvp = { stateVersion = "20.09"; diff --git a/patches/119540.patch b/patches/119540.patch new file mode 100644 index 00000000..b321ec06 --- /dev/null +++ b/patches/119540.patch @@ -0,0 +1,159 @@ +From 456aa2db499409ab500d98c464b3321d4b7cecc3 Mon Sep 17 00:00:00 2001 +From: Charlotte Van Petegem +Date: Thu, 15 Apr 2021 15:40:20 +0200 +Subject: [PATCH 1/2] nixos-rebuild: Allow remote building when using flakes + +--- + .../linux/nixos-rebuild/nixos-rebuild.sh | 65 +++++++++++++++---- + 1 file changed, 53 insertions(+), 12 deletions(-) + +diff --git a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh +index 5874f334fedb9..6e31e174c849a 100644 +--- a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh ++++ b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh +@@ -214,6 +214,49 @@ nixBuild() { + fi + } + ++nixFlakeBuild() { ++ if [ -z "$buildHost" ]; then ++ nix build "$@" --out-link "${tmpDir}/result" ++ readlink -f "${tmpDir}/result" ++ else ++ local attr="$1" ++ shift 1 ++ local evalArgs=() ++ local buildArgs=() ++ while [ "$#" -gt 0 ]; do ++ local i="$1"; shift 1 ++ case "$i" in ++ --recreate-lock-file|--no-update-lock-file|--no-write-lock-file|--no-registries|--commit-lock-file) ++ evalArgs+=("$i") ++ ;; ++ --update-input) ++ local j="$1"; shift 1 ++ evalArgs+=("$i" "$j") ++ ;; ++ --override-input) ++ local j="$1"; shift 1 ++ local k="$1"; shift 1 ++ evalArgs+=("$i" "$j" "$k") ++ ;; ++ *) ++ buildArgs+=("$i") ++ ;; ++ esac ++ done ++ ++ local drv="$(nix "${flakeFlags[@]}" eval --raw "${attr}.drvPath" "${evalArgs[@]}" "${extraBuildArgs[@]}")" ++ if [ -a "$drv" ]; then ++ NIX_SSHOPTS=$SSHOPTS nix "${flakeFlags[@]}" copy --derivation --to "ssh://$buildHost" "$drv" ++ # The 'nix-command flakes' part in "${flakeFlags[@]}" is seen as two separate args over SSH ++ buildHostCmd nix --experimental-features "'nix-command flakes'" build "${buildArgs[@]}" --out-link "${tmpDir}/result" "$drv" ++ buildHostCmd readlink -f "${tmpDir}/result" ++ else ++ echo "nix eval failed" ++ exit 1 ++ fi ++ fi ++} ++ + + if [ -z "$action" ]; then showSyntax; fi + +@@ -315,8 +358,14 @@ fi + + tmpDir=$(mktemp -t -d nixos-rebuild.XXXXXX) + SSHOPTS="$NIX_SSHOPTS -o ControlMaster=auto -o ControlPath=$tmpDir/ssh-%n -o ControlPersist=60" ++if [ -n "$buildHost" -a -n "$flake" ]; then ++ buildHostCmd mkdir -p "$tmpDir" ++fi + + cleanup() { ++ if [ -n "$buildHost" -a -n "$flake" ]; then ++ buildHostCmd rm -rf "$tmpDir" ++ fi + for ctrl in "$tmpDir"/ssh-*; do + ssh -o ControlPath="$ctrl" -O exit dummyhost 2>/dev/null || true + done +@@ -418,10 +467,7 @@ if [ -z "$rollback" ]; then + if [[ -z $flake ]]; then + pathToConfig="$(nixBuild '' --no-out-link -A system "${extraBuildFlags[@]}")" + else +- outLink=$tmpDir/result +- nix "${flakeFlags[@]}" build "$flake#$flakeAttr.config.system.build.toplevel" \ +- "${extraBuildFlags[@]}" "${lockFlags[@]}" --out-link $outLink +- pathToConfig="$(readlink -f $outLink)" ++ pathToConfig="$(nixFlakeBuild "$flake#$flakeAttr.config.system.build.toplevel" "${extraBuildFlags[@]}" "${lockFlags[@]}")" + fi + copyToTarget "$pathToConfig" + targetHostCmd nix-env -p "$profile" --set "$pathToConfig" +@@ -429,24 +475,19 @@ if [ -z "$rollback" ]; then + if [[ -z $flake ]]; then + pathToConfig="$(nixBuild '' -A system -k "${extraBuildFlags[@]}")" + else +- nix "${flakeFlags[@]}" build "$flake#$flakeAttr.config.system.build.toplevel" "${extraBuildFlags[@]}" "${lockFlags[@]}" +- pathToConfig="$(readlink -f ./result)" ++ pathToConfig="$(nixFlakeBuild "$flake#$flakeAttr.config.system.build.toplevel" "${extraBuildFlags[@]}" "${lockFlags[@]}")" + fi + elif [ "$action" = build-vm ]; then + if [[ -z $flake ]]; then + pathToConfig="$(nixBuild '' -A vm -k "${extraBuildFlags[@]}")" + else +- nix "${flakeFlags[@]}" build "$flake#$flakeAttr.config.system.build.vm" \ +- "${extraBuildFlags[@]}" "${lockFlags[@]}" +- pathToConfig="$(readlink -f ./result)" ++ pathToConfig="$(nixFlakeBuild "$flake#$flakeAttr.config.system.build.vm" "${extraBuildFlags[@]}" "${lockFlags[@]}")" + fi + elif [ "$action" = build-vm-with-bootloader ]; then + if [[ -z $flake ]]; then + pathToConfig="$(nixBuild '' -A vmWithBootLoader -k "${extraBuildFlags[@]}")" + else +- nix "${flakeFlags[@]}" build "$flake#$flakeAttr.config.system.build.vmWithBootLoader" \ +- "${extraBuildFlags[@]}" "${lockFlags[@]}" +- pathToConfig="$(readlink -f ./result)" ++ pathToConfig="$(nixFlakeBuild "$flake#$flakeAttr.config.system.build.vmWithBootLoader" "${extraBuildFlags[@]}" "${lockFlags[@]}")" + fi + else + showSyntax + +From fa827f3f624659d822666bc79d36534d6d3ea9d1 Mon Sep 17 00:00:00 2001 +From: Charlotte Van Petegem +Date: Fri, 16 Apr 2021 12:42:26 +0200 +Subject: [PATCH 2/2] nixos-rebuild: Use old-style nix command when building + flake on a remote host + +--- + pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh | 10 +--------- + 1 file changed, 1 insertion(+), 9 deletions(-) + +diff --git a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh +index 6e31e174c849a..01d0fa823b9b5 100644 +--- a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh ++++ b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh +@@ -247,9 +247,7 @@ nixFlakeBuild() { + local drv="$(nix "${flakeFlags[@]}" eval --raw "${attr}.drvPath" "${evalArgs[@]}" "${extraBuildArgs[@]}")" + if [ -a "$drv" ]; then + NIX_SSHOPTS=$SSHOPTS nix "${flakeFlags[@]}" copy --derivation --to "ssh://$buildHost" "$drv" +- # The 'nix-command flakes' part in "${flakeFlags[@]}" is seen as two separate args over SSH +- buildHostCmd nix --experimental-features "'nix-command flakes'" build "${buildArgs[@]}" --out-link "${tmpDir}/result" "$drv" +- buildHostCmd readlink -f "${tmpDir}/result" ++ buildHostCmd nix-store -r "$drv" "${buildArgs[@]}" + else + echo "nix eval failed" + exit 1 +@@ -358,14 +356,8 @@ fi + + tmpDir=$(mktemp -t -d nixos-rebuild.XXXXXX) + SSHOPTS="$NIX_SSHOPTS -o ControlMaster=auto -o ControlPath=$tmpDir/ssh-%n -o ControlPersist=60" +-if [ -n "$buildHost" -a -n "$flake" ]; then +- buildHostCmd mkdir -p "$tmpDir" +-fi + + cleanup() { +- if [ -n "$buildHost" -a -n "$flake" ]; then +- buildHostCmd rm -rf "$tmpDir" +- fi + for ctrl in "$tmpDir"/ssh-*; do + ssh -o ControlPath="$ctrl" -O exit dummyhost 2>/dev/null || true + done diff --git a/patches/119643.patch b/patches/119643.patch new file mode 100644 index 00000000..8cd4da3f --- /dev/null +++ b/patches/119643.patch @@ -0,0 +1,136 @@ +From 66f9ad192710d18d44322f49c87bba64d2beec11 Mon Sep 17 00:00:00 2001 +From: Charlotte Van Petegem +Date: Fri, 16 Apr 2021 18:40:48 +0200 +Subject: [PATCH 1/2] zeroad: Split data from binaries again + +The rootdir patch was lost in the update to 0.0.24b. Adding it allows +hydra to build the game. It can't when the binaries depend on the data +since the data is too big for hydra. +--- + pkgs/games/0ad/game.nix | 10 +++----- + pkgs/games/0ad/rootdir_env.patch | 39 ++++++++++++++++++++++++++++++++ + 2 files changed, 42 insertions(+), 7 deletions(-) + create mode 100644 pkgs/games/0ad/rootdir_env.patch + +diff --git a/pkgs/games/0ad/game.nix b/pkgs/games/0ad/game.nix +index bb3b7c0138aff..81965b116be67 100644 +--- a/pkgs/games/0ad/game.nix ++++ b/pkgs/games/0ad/game.nix +@@ -2,7 +2,7 @@ + , pkg-config, spidermonkey_78, boost, icu, libxml2, libpng, libsodium + , libjpeg, zlib, curl, libogg, libvorbis, enet, miniupnpc + , openal, libGLU, libGL, xorgproto, libX11, libXcursor, nspr, SDL2 +-, gloox, nvidia-texture-tools, zeroad-data ++, gloox, nvidia-texture-tools + , withEditor ? true, wxGTK + }: + +@@ -50,6 +50,8 @@ stdenv.mkDerivation rec { + "-I${fmt.dev}/include" + ]; + ++ patches = [ ./rootdir_env.patch ]; ++ + configurePhase = '' + # Delete shipped libraries which we don't need. + rm -rf libraries/source/{enet,miniupnpc,nvtt,spidermonkey} +@@ -62,7 +64,6 @@ stdenv.mkDerivation rec { + ${lib.optionalString withEditor "--enable-atlas"} \ + --bindir="$out"/bin \ + --libdir="$out"/lib/0ad \ +- --datadir="$out"/share/0ad/data \ + --without-tests \ + -j $NIX_BUILD_CORES + popd +@@ -85,11 +86,6 @@ stdenv.mkDerivation rec { + # Copy l10n data. + install -Dm755 -t $out/share/0ad/data/l10n binaries/data/l10n/* + +- # Link in game data from package +- ln -s ${zeroad-data}/share/0ad/data/config $out/share/0ad/data/config +- ln -s ${zeroad-data}/share/0ad/data/mods $out/share/0ad/data/mods +- ln -s ${zeroad-data}/share/0ad/data/tools $out/share/0ad/data/tools +- + # Copy libraries. + install -Dm644 -t $out/lib/0ad binaries/system/*.so + +diff --git a/pkgs/games/0ad/rootdir_env.patch b/pkgs/games/0ad/rootdir_env.patch +new file mode 100644 +index 0000000000000..95463c7e2df46 +--- /dev/null ++++ b/pkgs/games/0ad/rootdir_env.patch +@@ -0,0 +1,39 @@ ++diff --git a/source/ps/GameSetup/Paths.cpp b/source/ps/GameSetup/Paths.cpp ++index 474364e..bf084b4 100644 ++--- a/source/ps/GameSetup/Paths.cpp +++++ b/source/ps/GameSetup/Paths.cpp ++@@ -155,32 +155,8 @@ Paths::Paths(const CmdLineArgs& args) ++ ++ /*static*/ OsPath Paths::Root(const OsPath& argv0) ++ { ++-#if OS_ANDROID ++- return OsPath("/sdcard/0ad"); // TODO: this is kind of bogus ++-#else ++- ++- // get full path to executable ++- OsPath pathname = sys_ExecutablePathname(); // safe, but requires OS-specific implementation ++- if(pathname.empty()) // failed, use argv[0] instead ++- { ++- errno = 0; ++- pathname = wrealpath(argv0); ++- if(pathname.empty()) ++- WARN_IF_ERR(StatusFromErrno()); ++- } ++- ++- // make sure it's valid ++- if(!FileExists(pathname)) ++- { ++- LOGERROR("Cannot find executable (expected at '%s')", pathname.string8()); ++- WARN_IF_ERR(StatusFromErrno()); ++- } ++- ++- for(size_t i = 0; i < 2; i++) // remove "system/name.exe" ++- pathname = pathname.Parent(); ++- return pathname; ++- ++-#endif +++ UNUSED2(argv0); +++ return OsPath(getenv("ZEROAD_ROOTDIR")); ++ } ++ ++ /*static*/ OsPath Paths::RootData(const OsPath& argv0) + +From 8d6375ba029851c053388ff95ed445d2ae0a56cc Mon Sep 17 00:00:00 2001 +From: Charlotte Van Petegem +Date: Fri, 16 Apr 2021 18:42:32 +0200 +Subject: [PATCH 2/2] zeroad: Add myself as a maintainer + +--- + pkgs/games/0ad/data.nix | 1 + + pkgs/games/0ad/game.nix | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/pkgs/games/0ad/data.nix b/pkgs/games/0ad/data.nix +index 5cb28b3f3bd63..9533af21b15d1 100644 +--- a/pkgs/games/0ad/data.nix ++++ b/pkgs/games/0ad/data.nix +@@ -19,6 +19,7 @@ stdenv.mkDerivation rec { + description = "A free, open-source game of ancient warfare -- data files"; + homepage = "https://play0ad.com/"; + license = licenses.cc-by-sa-30; ++ maintainers = with maintainers; [ chvp ]; + platforms = platforms.linux; + hydraPlatforms = []; + }; +diff --git a/pkgs/games/0ad/game.nix b/pkgs/games/0ad/game.nix +index 81965b116be67..feaf4347329c4 100644 +--- a/pkgs/games/0ad/game.nix ++++ b/pkgs/games/0ad/game.nix +@@ -101,6 +101,7 @@ stdenv.mkDerivation rec { + gpl2 lgpl21 mit cc-by-sa-30 + licenses.zlib # otherwise masked by pkgs.zlib + ]; ++ maintainers = with maintainers; [ chvp ]; + platforms = subtractLists platforms.i686 platforms.linux; + }; + }