[Backport release-9.x] Nix Flake spring cleaning (#3576)
This commit is contained in:
commit
a96a915d79
6
.gitignore
vendored
6
.gitignore
vendored
@ -47,8 +47,12 @@ run/
|
|||||||
|
|
||||||
# Nix/NixOS
|
# Nix/NixOS
|
||||||
.direnv/
|
.direnv/
|
||||||
.pre-commit-config.yaml
|
## Used when manually invoking stdenv phases
|
||||||
|
outputs/
|
||||||
|
## Regular artifacts
|
||||||
result
|
result
|
||||||
|
result-*
|
||||||
|
repl-result-*
|
||||||
|
|
||||||
# Flatpak
|
# Flatpak
|
||||||
.flatpak-builder
|
.flatpak-builder
|
||||||
|
13
default.nix
13
default.nix
@ -1,9 +1,4 @@
|
|||||||
(import (
|
(import (fetchTarball {
|
||||||
let
|
url = "https://github.com/edolstra/flake-compat/archive/ff81ac966bb2cae68946d5ed5fc4994f96d0ffec.tar.gz";
|
||||||
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
sha256 = "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=";
|
||||||
in
|
}) { src = ./.; }).defaultNix
|
||||||
fetchTarball {
|
|
||||||
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
|
|
||||||
sha256 = lock.nodes.flake-compat.locked.narHash;
|
|
||||||
}
|
|
||||||
) { src = ./.; }).defaultNix
|
|
||||||
|
39
flake.lock
generated
39
flake.lock
generated
@ -1,21 +1,5 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"flake-compat": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696426674,
|
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libnbtplusplus": {
|
"libnbtplusplus": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@ -32,28 +16,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix-filter": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1710156097,
|
|
||||||
"narHash": "sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj+rL8sRQsSM=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "nix-filter",
|
|
||||||
"rev": "3342559a24e85fc164b295c3444e8a139924675b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "nix-filter",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729256560,
|
"lastModified": 1743095683,
|
||||||
"narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
|
"narHash": "sha256-gWd4urRoLRe8GLVC/3rYRae1h+xfQzt09xOfb0PaHSk=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
|
"rev": "5e5402ecbcb27af32284d4a62553c019a3a49ea6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -65,9 +34,7 @@
|
|||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
|
||||||
"libnbtplusplus": "libnbtplusplus",
|
"libnbtplusplus": "libnbtplusplus",
|
||||||
"nix-filter": "nix-filter",
|
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
151
flake.nix
151
flake.nix
@ -15,28 +15,6 @@
|
|||||||
url = "github:PrismLauncher/libnbtplusplus";
|
url = "github:PrismLauncher/libnbtplusplus";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
nix-filter.url = "github:numtide/nix-filter";
|
|
||||||
|
|
||||||
/*
|
|
||||||
Inputs below this are optional and can be removed
|
|
||||||
|
|
||||||
```
|
|
||||||
{
|
|
||||||
inputs.prismlauncher = {
|
|
||||||
url = "github:PrismLauncher/PrismLauncher";
|
|
||||||
inputs = {
|
|
||||||
flake-compat.follows = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
*/
|
|
||||||
|
|
||||||
flake-compat = {
|
|
||||||
url = "github:edolstra/flake-compat";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
@ -44,9 +22,8 @@
|
|||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
libnbtplusplus,
|
libnbtplusplus,
|
||||||
nix-filter,
|
|
||||||
...
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
|
|
||||||
@ -58,27 +35,128 @@
|
|||||||
forAllSystems = lib.genAttrs systems;
|
forAllSystems = lib.genAttrs systems;
|
||||||
nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system});
|
nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system});
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
checks = forAllSystems (
|
checks = forAllSystems (
|
||||||
system:
|
system:
|
||||||
|
|
||||||
let
|
let
|
||||||
checks' = nixpkgsFor.${system}.callPackage ./nix/checks.nix { inherit self; };
|
pkgs = nixpkgsFor.${system};
|
||||||
|
llvm = pkgs.llvmPackages_19;
|
||||||
in
|
in
|
||||||
lib.filterAttrs (_: lib.isDerivation) checks'
|
|
||||||
|
{
|
||||||
|
formatting =
|
||||||
|
pkgs.runCommand "check-formatting"
|
||||||
|
{
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
deadnix
|
||||||
|
llvm.clang-tools
|
||||||
|
markdownlint-cli
|
||||||
|
nixfmt-rfc-style
|
||||||
|
statix
|
||||||
|
];
|
||||||
|
}
|
||||||
|
''
|
||||||
|
cd ${self}
|
||||||
|
|
||||||
|
echo "Running clang-format...."
|
||||||
|
clang-format --dry-run --style='file' --Werror */**.{c,cc,cpp,h,hh,hpp}
|
||||||
|
|
||||||
|
echo "Running deadnix..."
|
||||||
|
deadnix --fail
|
||||||
|
|
||||||
|
echo "Running markdownlint..."
|
||||||
|
markdownlint --dot .
|
||||||
|
|
||||||
|
echo "Running nixfmt..."
|
||||||
|
find -type f -name '*.nix' -exec nixfmt --check {} +
|
||||||
|
|
||||||
|
echo "Running statix"
|
||||||
|
statix check .
|
||||||
|
|
||||||
|
touch $out
|
||||||
|
'';
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
devShells = forAllSystems (
|
devShells = forAllSystems (
|
||||||
system:
|
system:
|
||||||
|
|
||||||
let
|
let
|
||||||
pkgs = nixpkgsFor.${system};
|
pkgs = nixpkgsFor.${system};
|
||||||
|
llvm = pkgs.llvmPackages_19;
|
||||||
|
|
||||||
|
packages' = self.packages.${system};
|
||||||
|
|
||||||
|
welcomeMessage = ''
|
||||||
|
Welcome to the Prism Launcher repository! 🌈
|
||||||
|
|
||||||
|
We just set some things up for you. To get building, you can run:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cd "$cmakeBuildDir"
|
||||||
|
$ ninjaBuildPhase
|
||||||
|
$ ninjaInstallPhase
|
||||||
|
```
|
||||||
|
|
||||||
|
Feel free to ask any questions in our Discord server or Matrix space:
|
||||||
|
- https://prismlauncher.org/discord
|
||||||
|
- https://matrix.to/#/#prismlauncher:matrix.org
|
||||||
|
|
||||||
|
And thanks for helping out :)
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Re-use our package wrapper to wrap our development environment
|
||||||
|
qt-wrapper-env = packages'.prismlauncher.overrideAttrs (old: {
|
||||||
|
name = "qt-wrapper-env";
|
||||||
|
|
||||||
|
# Required to use script-based makeWrapper below
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
# We don't need/want the unwrapped Prism package
|
||||||
|
paths = [ ];
|
||||||
|
|
||||||
|
nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [
|
||||||
|
# Ensure the wrapper is script based so it can be sourced
|
||||||
|
pkgs.makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
# Inspired by https://discourse.nixos.org/t/python-qt-woes/11808/10
|
||||||
|
buildCommand = ''
|
||||||
|
makeQtWrapper ${lib.getExe pkgs.runtimeShellPackage} "$out"
|
||||||
|
sed -i '/^exec/d' "$out"
|
||||||
|
'';
|
||||||
|
});
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
default = pkgs.mkShell {
|
default = pkgs.mkShell {
|
||||||
inputsFrom = [ self.packages.${system}.prismlauncher-unwrapped ];
|
inputsFrom = [ packages'.prismlauncher-unwrapped ];
|
||||||
buildInputs = with pkgs; [
|
|
||||||
|
packages = with pkgs; [
|
||||||
ccache
|
ccache
|
||||||
ninja
|
llvm.clang-tools
|
||||||
];
|
];
|
||||||
|
|
||||||
|
cmakeBuildType = "Debug";
|
||||||
|
cmakeFlags = [ "-GNinja" ] ++ packages'.prismlauncher.cmakeFlags;
|
||||||
|
dontFixCmake = true;
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
echo "Sourcing ${qt-wrapper-env}"
|
||||||
|
source ${qt-wrapper-env}
|
||||||
|
|
||||||
|
git submodule update --init --force
|
||||||
|
|
||||||
|
if [ ! -f compile_commands.json ]; then
|
||||||
|
cmakeConfigurePhase
|
||||||
|
cd ..
|
||||||
|
ln -s "$cmakeBuildDir"/compile_commands.json compile_commands.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ${lib.escapeShellArg welcomeMessage}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -89,7 +167,6 @@
|
|||||||
prismlauncher-unwrapped = prev.callPackage ./nix/unwrapped.nix {
|
prismlauncher-unwrapped = prev.callPackage ./nix/unwrapped.nix {
|
||||||
inherit
|
inherit
|
||||||
libnbtplusplus
|
libnbtplusplus
|
||||||
nix-filter
|
|
||||||
self
|
self
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
@ -99,6 +176,7 @@
|
|||||||
|
|
||||||
packages = forAllSystems (
|
packages = forAllSystems (
|
||||||
system:
|
system:
|
||||||
|
|
||||||
let
|
let
|
||||||
pkgs = nixpkgsFor.${system};
|
pkgs = nixpkgsFor.${system};
|
||||||
|
|
||||||
@ -111,6 +189,7 @@
|
|||||||
default = prismPackages.prismlauncher;
|
default = prismPackages.prismlauncher;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
|
||||||
# Only output them if they're available on the current system
|
# Only output them if they're available on the current system
|
||||||
lib.filterAttrs (_: lib.meta.availableOn pkgs.stdenv.hostPlatform) packages
|
lib.filterAttrs (_: lib.meta.availableOn pkgs.stdenv.hostPlatform) packages
|
||||||
);
|
);
|
||||||
@ -118,16 +197,18 @@
|
|||||||
# We put these under legacyPackages as they are meant for CI, not end user consumption
|
# We put these under legacyPackages as they are meant for CI, not end user consumption
|
||||||
legacyPackages = forAllSystems (
|
legacyPackages = forAllSystems (
|
||||||
system:
|
system:
|
||||||
|
|
||||||
let
|
let
|
||||||
prismPackages = self.packages.${system};
|
packages' = self.packages.${system};
|
||||||
legacyPackages = self.legacyPackages.${system};
|
legacyPackages' = self.legacyPackages.${system};
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
prismlauncher-debug = prismPackages.prismlauncher.override {
|
prismlauncher-debug = packages'.prismlauncher.override {
|
||||||
prismlauncher-unwrapped = legacyPackages.prismlauncher-unwrapped-debug;
|
prismlauncher-unwrapped = legacyPackages'.prismlauncher-unwrapped-debug;
|
||||||
};
|
};
|
||||||
|
|
||||||
prismlauncher-unwrapped-debug = prismPackages.prismlauncher-unwrapped.overrideAttrs {
|
prismlauncher-unwrapped-debug = packages'.prismlauncher-unwrapped.overrideAttrs {
|
||||||
cmakeBuildType = "Debug";
|
cmakeBuildType = "Debug";
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
};
|
};
|
||||||
|
@ -44,9 +44,6 @@ Example:
|
|||||||
# Note that this may break the reproducibility mentioned above, and you might not be able to access the binary cache
|
# Note that this may break the reproducibility mentioned above, and you might not be able to access the binary cache
|
||||||
#
|
#
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
# This is not required for Flakes
|
|
||||||
inputs.flake-compat.follows = "";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -92,9 +89,6 @@ Example:
|
|||||||
# Note that this may break the reproducibility mentioned above, and you might not be able to access the binary cache
|
# Note that this may break the reproducibility mentioned above, and you might not be able to access the binary cache
|
||||||
#
|
#
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
# This is not required for Flakes
|
|
||||||
inputs.flake-compat.follows = "";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,42 +0,0 @@
|
|||||||
{
|
|
||||||
runCommand,
|
|
||||||
deadnix,
|
|
||||||
llvmPackages_18,
|
|
||||||
markdownlint-cli,
|
|
||||||
nixfmt-rfc-style,
|
|
||||||
statix,
|
|
||||||
self,
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
formatting =
|
|
||||||
runCommand "check-formatting"
|
|
||||||
{
|
|
||||||
nativeBuildInputs = [
|
|
||||||
deadnix
|
|
||||||
llvmPackages_18.clang-tools
|
|
||||||
markdownlint-cli
|
|
||||||
nixfmt-rfc-style
|
|
||||||
statix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
''
|
|
||||||
cd ${self}
|
|
||||||
|
|
||||||
echo "Running clang-format...."
|
|
||||||
clang-format --dry-run --style='file' --Werror */**.{c,cc,cpp,h,hh,hpp}
|
|
||||||
|
|
||||||
echo "Running deadnix..."
|
|
||||||
deadnix --fail
|
|
||||||
|
|
||||||
echo "Running markdownlint..."
|
|
||||||
markdownlint --dot .
|
|
||||||
|
|
||||||
echo "Running nixfmt..."
|
|
||||||
nixfmt --check .
|
|
||||||
|
|
||||||
echo "Running statix"
|
|
||||||
statix check .
|
|
||||||
|
|
||||||
touch $out
|
|
||||||
'';
|
|
||||||
}
|
|
@ -11,7 +11,6 @@
|
|||||||
kdePackages,
|
kdePackages,
|
||||||
libnbtplusplus,
|
libnbtplusplus,
|
||||||
ninja,
|
ninja,
|
||||||
nix-filter,
|
|
||||||
self,
|
self,
|
||||||
stripJavaArchivesHook,
|
stripJavaArchivesHook,
|
||||||
tomlplusplus,
|
tomlplusplus,
|
||||||
@ -25,21 +24,41 @@ assert lib.assertMsg (
|
|||||||
gamemodeSupport -> stdenv.hostPlatform.isLinux
|
gamemodeSupport -> stdenv.hostPlatform.isLinux
|
||||||
) "gamemodeSupport is only available on Linux.";
|
) "gamemodeSupport is only available on Linux.";
|
||||||
|
|
||||||
|
let
|
||||||
|
date =
|
||||||
|
let
|
||||||
|
# YYYYMMDD
|
||||||
|
date' = lib.substring 0 8 self.lastModifiedDate;
|
||||||
|
year = lib.substring 0 4 date';
|
||||||
|
month = lib.substring 4 2 date';
|
||||||
|
date = lib.substring 6 2 date';
|
||||||
|
in
|
||||||
|
if (self ? "lastModifiedDate") then
|
||||||
|
lib.concatStringsSep "-" [
|
||||||
|
year
|
||||||
|
month
|
||||||
|
date
|
||||||
|
]
|
||||||
|
else
|
||||||
|
"unknown";
|
||||||
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "prismlauncher-unwrapped";
|
pname = "prismlauncher-unwrapped";
|
||||||
version = self.shortRev or self.dirtyShortRev or "unknown";
|
version = "9.3-unstable-${date}";
|
||||||
|
|
||||||
src = nix-filter.lib {
|
src = lib.fileset.toSource {
|
||||||
root = self;
|
root = ../.;
|
||||||
include = [
|
fileset = lib.fileset.unions [
|
||||||
"buildconfig"
|
|
||||||
"cmake"
|
|
||||||
"launcher"
|
|
||||||
"libraries"
|
|
||||||
"program_info"
|
|
||||||
"tests"
|
|
||||||
../COPYING.md
|
|
||||||
../CMakeLists.txt
|
../CMakeLists.txt
|
||||||
|
../COPYING.md
|
||||||
|
|
||||||
|
../buildconfig
|
||||||
|
../cmake
|
||||||
|
../launcher
|
||||||
|
../libraries
|
||||||
|
../program_info
|
||||||
|
../tests
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user