aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.envrc1
-rw-r--r--.gitignore4
-rw-r--r--BUILD.md52
-rw-r--r--flake.lock110
-rw-r--r--flake.nix100
-rw-r--r--libraries/katabasis/acknowledgements.md12
-rw-r--r--nix/default.nix129
-rw-r--r--nix/flake-compat.nix2
8 files changed, 257 insertions, 153 deletions
diff --git a/.envrc b/.envrc
new file mode 100644
index 00000000..3550a30f
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+use flake
diff --git a/.gitignore b/.gitignore
index 010bc323..635d1c53 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,6 +22,10 @@ Debug
build
/build-*
+# direnv / Nix
+.direnv/
+.pre-commit-config.yaml
+
# Install dirs
install
/install-*
diff --git a/BUILD.md b/BUILD.md
index 2443ac56..a139039d 100644
--- a/BUILD.md
+++ b/BUILD.md
@@ -1,53 +1,3 @@
# Build Instructions
-Full build instructions will be available on [the website](https://prismlauncher.org/wiki/development/build-instructions/).
-
-If you would like to contribute or fix an issue with the Build instructions you will be able to do so [here](https://github.com/PrismLauncher/website/blob/master/src/wiki/development/build-instructions.md).
-
-## Getting the source
-
-Clone the source code using git, and grab all the submodules. This is generic for all platforms you want to build on.
-```
-git clone --recursive https://github.com/PrismLauncher/PrismLauncher
-cd PrismLauncher
-```
-
-## Linux
-
-This guide will mostly mention dependant packages by their Debian naming and commands are done by a user in the sudoers file.
-### Dependencies
-
-- A C++ compiler capable of building C++17 code (can be found in the package `build-essential`).
-- Qt Development tools 5.12 or newer (on Debian 11 or Debian-based distributions, `qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5`).
-- `cmake` 3.15 or newer.
-- `extra-cmake-modules`.
-- zlib (`zlib1g-dev` on Debian 11 or Debian-based distributions).
-- Java Development Kit (Java JDK) (`openjdk-17-jdk` on Debian 11 or Debian-based distributions).
-- Mesa GL headers (`libgl1-mesa-dev` on Debian 11 or Debian-based distributions).
-- (Optional) `scdoc` to generate man pages.
-
-In conclusion, to check if all you need is installed (including optional):
-
-```
-sudo apt install build-essential qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5 cmake extra-cmake-modules zlib1g-dev openjdk-17-jdk libgl1-mesa-dev scdoc
-```
-
-### Compiling
-#### Building and installing on the system
-This is usually the suggested way to build the client.
-
-```
-cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/usr" -DENABLE_LTO=ON
-cmake --build build -j$(nproc)
-sudo cmake --install build
-```
-
-#### Building a portable binary
-
-```
-cmake -S . -B build -DCMAKE_INSTALL_PREFIX=install
-cmake --build build -j$(nproc)
-cmake --install build
-cmake --install build --component portable
-```
-
+Full build instructions are available on [the website](https://prismlauncher.org/wiki/development/build-instructions/).
diff --git a/flake.lock b/flake.lock
index 051e1664..ad9196a9 100644
--- a/flake.lock
+++ b/flake.lock
@@ -3,11 +3,11 @@
"flake-compat": {
"flake": false,
"locked": {
- "lastModified": 1668681692,
- "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
+ "lastModified": 1673956053,
+ "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
- "rev": "009399224d5e398d03b22badca40a37ac85412a1",
+ "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
@@ -16,6 +16,58 @@
"type": "github"
}
},
+ "flake-compat_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1673956053,
+ "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1676283394,
+ "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "gitignore": {
+ "inputs": {
+ "nixpkgs": [
+ "pre-commit-hooks",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1660459072,
+ "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "type": "github"
+ }
+ },
"libnbtplusplus": {
"flake": false,
"locked": {
@@ -34,11 +86,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1671417167,
- "narHash": "sha256-JkHam6WQOwZN1t2C2sbp1TqMv3TVRjzrdoejqfefwrM=",
+ "lastModified": 1678693419,
+ "narHash": "sha256-bbSv5yqZAW6dz+3f3f3pOUZbxpPN+3OgCljgn7P+nnQ=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "bb31220cca6d044baa6dc2715b07497a2a7c4bc7",
+ "rev": "8e3fad82be64c06fbfb9fd43993aec9ef4623936",
"type": "github"
},
"original": {
@@ -48,11 +100,55 @@
"type": "github"
}
},
+ "nixpkgs-stable": {
+ "locked": {
+ "lastModified": 1673800717,
+ "narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-22.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "pre-commit-hooks": {
+ "inputs": {
+ "flake-compat": "flake-compat_2",
+ "flake-utils": [
+ "flake-utils"
+ ],
+ "gitignore": "gitignore",
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "nixpkgs-stable": "nixpkgs-stable"
+ },
+ "locked": {
+ "lastModified": 1678376203,
+ "narHash": "sha256-3tyYGyC8h7fBwncLZy5nCUjTJPrHbmNwp47LlNLOHSM=",
+ "owner": "cachix",
+ "repo": "pre-commit-hooks.nix",
+ "rev": "1a20b9708962096ec2481eeb2ddca29ed747770a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "pre-commit-hooks.nix",
+ "type": "github"
+ }
+ },
"root": {
"inputs": {
"flake-compat": "flake-compat",
+ "flake-utils": "flake-utils",
"libnbtplusplus": "libnbtplusplus",
- "nixpkgs": "nixpkgs"
+ "nixpkgs": "nixpkgs",
+ "pre-commit-hooks": "pre-commit-hooks"
}
}
},
diff --git a/flake.nix b/flake.nix
index 5615a758..f656703c 100644
--- a/flake.nix
+++ b/flake.nix
@@ -3,35 +3,89 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
- flake-compat = { url = "github:edolstra/flake-compat"; flake = false; };
- libnbtplusplus = { url = "github:PrismLauncher/libnbtplusplus"; flake = false; };
+ flake-utils.url = "github:numtide/flake-utils";
+ pre-commit-hooks = {
+ url = "github:cachix/pre-commit-hooks.nix";
+ inputs.nixpkgs.follows = "nixpkgs";
+ inputs.flake-utils.follows = "flake-utils";
+ };
+ flake-compat = {
+ url = "github:edolstra/flake-compat";
+ flake = false;
+ };
+ libnbtplusplus = {
+ url = "github:PrismLauncher/libnbtplusplus";
+ flake = false;
+ };
};
- outputs = { self, nixpkgs, libnbtplusplus, ... }:
- let
- # User-friendly version number.
- version = builtins.substring 0 8 self.lastModifiedDate;
+ outputs = {
+ self,
+ nixpkgs,
+ flake-utils,
+ pre-commit-hooks,
+ libnbtplusplus,
+ ...
+ }: let
+ # User-friendly version number.
+ version = builtins.substring 0 8 self.lastModifiedDate;
+
+ # Supported systems (qtbase is currently broken for "aarch64-darwin")
+ supportedSystems = with flake-utils.lib.system; [
+ x86_64-linux
+ x86_64-darwin
+ aarch64-linux
+ ];
+
+ packagesFn = pkgs: {
+ prismlauncher-qt5 = pkgs.libsForQt5.callPackage ./nix {
+ inherit version self libnbtplusplus;
+ };
+ prismlauncher = pkgs.qt6Packages.callPackage ./nix {
+ inherit version self libnbtplusplus;
+ };
+ };
+ in
+ flake-utils.lib.eachSystem supportedSystems (system: let
+ pkgs = nixpkgs.legacyPackages.${system};
+ in {
+ checks = {
+ pre-commit-check = pre-commit-hooks.lib.${system}.run {
+ src = ./.;
+ hooks = {
+ markdownlint.enable = true;
- # Supported systems (qtbase is currently broken for "aarch64-darwin")
- supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" ];
+ alejandra.enable = true;
+ deadnix.enable = true;
+
+ clang-format = {
+ enable =
+ false; # As most of the codebase is **not** formatted, we don't want clang-format yet
+ types_or = ["c" "c++"];
+ };
+ };
+ };
+ };
- # Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'.
- forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
+ packages = let
+ packages = packagesFn pkgs;
+ in
+ packages // {default = packages.prismlauncher;};
- # Nixpkgs instantiated for supported systems.
- pkgs = forAllSystems (system: nixpkgs.legacyPackages.${system});
+ devShells.default = pkgs.mkShell {
+ inherit (self.checks.${system}.pre-commit-check) shellHook;
+ packages = with pkgs; [
+ nodePackages.markdownlint-cli
+ alejandra
+ deadnix
+ clang-tools
+ ];
- packagesFn = pkgs: rec {
- prismlauncher-qt5 = pkgs.libsForQt5.callPackage ./nix { inherit version self libnbtplusplus; };
- prismlauncher = pkgs.qt6Packages.callPackage ./nix { inherit version self libnbtplusplus; };
+ inputsFrom = [self.packages.${system}.default];
+ buildInputs = with pkgs; [ccache ninja];
};
- in
- {
- packages = forAllSystems (system:
- let packages = packagesFn pkgs.${system}; in
- packages // { default = packages.prismlauncher; }
- );
-
- overlay = final: packagesFn;
+ })
+ // {
+ overlays.default = final: _: (packagesFn final);
};
}
diff --git a/libraries/katabasis/acknowledgements.md b/libraries/katabasis/acknowledgements.md
index ccc7c263..a6989d15 100644
--- a/libraries/katabasis/acknowledgements.md
+++ b/libraries/katabasis/acknowledgements.md
@@ -8,10 +8,10 @@
> Redistribution and use in source and binary forms, with or without
> modification, are permitted provided that the following conditions are met:
>
-> * Redistributions of source code must retain the above copyright notice, this
+> * Redistributions of source code must retain the above copyright notice, this
> list of conditions and the following disclaimer.
>
-> * Redistributions in binary form must reproduce the above copyright notice,
+> * Redistributions in binary form must reproduce the above copyright notice,
> this list of conditions and the following disclaimer in the documentation
> and/or other materials provided with the distribution.
>
@@ -36,12 +36,12 @@ Cryptographic methods for Qt.
> Redistribution and use in source and binary forms, with or without
> modification, are permitted provided that the following conditions are met:
>
-> * Redistributions of source code must retain the above copyright
+> * Redistributions of source code must retain the above copyright
> notice, this list of conditions and the following disclaimer.
-> * Redistributions in binary form must reproduce the above copyright
+> * Redistributions in binary form must reproduce the above copyright
> notice, this list of conditions and the following disclaimer in the
> documentation and/or other materials provided with the distribution.
-> * Neither the name of the Rathenau Instituut, Andre Somers nor the
+> * Neither the name of the Rathenau Instituut, Andre Somers nor the
> names of its contributors may be used to endorse or promote products
> derived from this software without specific prior written permission.
>
@@ -62,7 +62,7 @@ Configurable settings storage, Twitter XAuth specialization, new demos, cleanups
> "Hi Akos,
>
-> I'm writing this mail to confirm that my contributions to the O2 library, available here https://github.com/pipacs/o2, can be freely distributed according to the project's license (as shown in the LICENSE file).
+> I'm writing this mail to confirm that my contributions to the O2 library, available here <https://github.com/pipacs/o2>, can be freely distributed according to the project's license (as shown in the LICENSE file).
>
> Regards,
> -mandeep"
diff --git a/nix/default.nix b/nix/default.nix
index 99bb2231..6d4f3f24 100644
--- a/nix/default.nix
+++ b/nix/default.nix
@@ -1,52 +1,54 @@
-{ lib
-, stdenv
-, cmake
-, jdk8
-, jdk17
-, zlib
-, file
-, wrapQtAppsHook
-, xorg
-, libpulseaudio
-, qtbase
-, qtsvg
-, qtwayland
-, libGL
-, quazip
-, glfw
-, openal
-, extra-cmake-modules
-, tomlplusplus
-, ghc_filesystem
-, cmark
-, msaClientID ? ""
-, jdks ? [ jdk17 jdk8 ]
-
+{
+ lib,
+ stdenv,
+ cmake,
+ jdk8,
+ jdk17,
+ zlib,
+ file,
+ wrapQtAppsHook,
+ xorg,
+ libpulseaudio,
+ qtbase,
+ qtsvg,
+ qtwayland,
+ libGL,
+ quazip,
+ glfw,
+ openal,
+ extra-cmake-modules,
+ tomlplusplus,
+ ghc_filesystem,
+ cmark,
+ msaClientID ? "",
+ jdks ? [jdk17 jdk8],
# flake
-, self
-, version
-, libnbtplusplus
+ self,
+ version,
+ libnbtplusplus,
}:
-
stdenv.mkDerivation rec {
pname = "prismlauncher";
inherit version;
src = lib.cleanSource self;
- nativeBuildInputs = [ extra-cmake-modules cmake file jdk17 wrapQtAppsHook ];
- buildInputs = [
- qtbase
- qtsvg
- zlib
- quazip
- ghc_filesystem
- tomlplusplus
- cmark
- ] ++ lib.optional (lib.versionAtLeast qtbase.version "6") qtwayland;
+ nativeBuildInputs = [extra-cmake-modules cmake file jdk17 wrapQtAppsHook];
+ buildInputs =
+ [
+ qtbase
+ qtsvg
+ zlib
+ quazip
+ ghc_filesystem
+ tomlplusplus
+ cmark
+ ]
+ ++ lib.optional (lib.versionAtLeast qtbase.version "6") qtwayland;
- cmakeFlags = lib.optionals (msaClientID != "") [ "-DLauncher_MSA_CLIENT_ID=${msaClientID}" ]
- ++ lib.optionals (lib.versionOlder qtbase.version "6") [ "-DLauncher_QT_VERSION_MAJOR=5" ];
+ cmakeFlags =
+ lib.optionals (msaClientID != "") ["-DLauncher_MSA_CLIENT_ID=${msaClientID}"]
+ ++ lib.optionals (lib.versionOlder qtbase.version "6") ["-DLauncher_QT_VERSION_MAJOR=5"];
dontWrapQtApps = true;
postUnpack = ''
@@ -57,30 +59,27 @@ stdenv.mkDerivation rec {
chown -R $USER: source/libraries/libnbtplusplus
'';
- postInstall =
- let
- libpath = with xorg;
- lib.makeLibraryPath [
- libX11
- libXext
- libXcursor
- libXrandr
- libXxf86vm
- libpulseaudio
- libGL
- glfw
- openal
- stdenv.cc.cc.lib
- ];
- in
- ''
- # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
- wrapQtApp $out/bin/prismlauncher \
- --set LD_LIBRARY_PATH /run/opengl-driver/lib:${libpath} \
- --prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks} \
- --prefix PATH : ${lib.makeBinPath [xorg.xrandr]}
- '';
-
+ postInstall = let
+ libpath = with xorg;
+ lib.makeLibraryPath [
+ libX11
+ libXext
+ libXcursor
+ libXrandr
+ libXxf86vm
+ libpulseaudio
+ libGL
+ glfw
+ openal
+ stdenv.cc.cc.lib
+ ];
+ in ''
+ # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
+ wrapQtApp $out/bin/prismlauncher \
+ --set LD_LIBRARY_PATH /run/opengl-driver/lib:${libpath} \
+ --prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks} \
+ --prefix PATH : ${lib.makeBinPath [xorg.xrandr]}
+ '';
meta = with lib; {
homepage = "https://prismlauncher.org/";
@@ -93,6 +92,6 @@ stdenv.mkDerivation rec {
platforms = platforms.linux;
changelog = "https://github.com/PrismLauncher/PrismLauncher/releases/tag/${version}";
license = licenses.gpl3Only;
- maintainers = with maintainers; [ minion3665 Scrumplex ];
+ maintainers = with maintainers; [minion3665 Scrumplex];
};
}
diff --git a/nix/flake-compat.nix b/nix/flake-compat.nix
index 8b6cb99c..7162a6cf 100644
--- a/nix/flake-compat.nix
+++ b/nix/flake-compat.nix
@@ -6,4 +6,4 @@ let
sha256 = narHash;
};
in
-import flake-compat { src = ../.; }
+ import flake-compat {src = ../.;}