summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix152
1 files changed, 67 insertions, 85 deletions
diff --git a/flake.nix b/flake.nix
index d293e60..c95ded2 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,97 +1,79 @@
{
inputs = {
nixpkgs.url = "nixpkgs/nixpkgs-unstable";
- self.submodules = true;
};
- outputs = {nixpkgs, ...}: let
+ outputs = {
+ nixpkgs,
+ self,
+ ...
+ }: let
+ package = {
+ mkDerivation,
+ base,
+ gl,
+ lib,
+ libGL,
+ libX11,
+ libxkbcommon,
+ wayland,
+ xcursor,
+ xi,
+ xrandr,
+ }:
+ mkDerivation {
+ pname = "hs-rgfw";
+ version = "0.1.0.0";
+ src = ./.;
+ preBuild = ''
+ ${lib.getExe pkgs.wayland-scanner} public-code ${pkgs.wayland-protocols}/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml ./lib/xdg-shell.c
+ ${lib.getExe pkgs.wayland-scanner} public-code ${pkgs.wayland-protocols}/share/wayland-protocols/staging/xdg-toplevel-icon/xdg-toplevel-icon-v1.xml ./lib/xdg-toplevel-icon-v1.c
+ ${lib.getExe pkgs.wayland-scanner} public-code ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml ./lib/xdg-decoration-unstable-v1.c
+ ${lib.getExe pkgs.wayland-scanner} public-code ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/relative-pointer/relative-pointer-unstable-v1.xml ./lib/relative-pointer-unstable-v1.c
+ ${lib.getExe pkgs.wayland-scanner} public-code ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml ./lib/pointer-constraints-unstable-v1.c
+ ${lib.getExe pkgs.wayland-scanner} public-code ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/xdg-output/xdg-output-unstable-v1.xml ./lib/xdg-output-unstable-v1.c
+ ${lib.getExe pkgs.wayland-scanner} client-header ${pkgs.wayland-protocols}/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml ./lib/xdg-shell.h
+ ${lib.getExe pkgs.wayland-scanner} client-header ${pkgs.wayland-protocols}/share/wayland-protocols/staging/xdg-toplevel-icon/xdg-toplevel-icon-v1.xml ./lib/xdg-toplevel-icon-v1.h
+ ${lib.getExe pkgs.wayland-scanner} client-header ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml ./lib/xdg-decoration-unstable-v1.h
+ ${lib.getExe pkgs.wayland-scanner} client-header ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/relative-pointer/relative-pointer-unstable-v1.xml ./lib/relative-pointer-unstable-v1.h
+ ${lib.getExe pkgs.wayland-scanner} client-header ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml ./lib/pointer-constraints-unstable-v1.h
+ ${lib.getExe pkgs.wayland-scanner} client-header ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/xdg-output/xdg-output-unstable-v1.xml ./lib/xdg-output-unstable-v1.h
+ '';
+ libraryHaskellDepends = [
+ base
+ ];
+ libraryPkgconfigDepends = [
+ gl
+ libGL
+ libX11
+ libxkbcommon
+ wayland
+ xcursor
+ xi
+ xrandr
+ ];
+ postInstall = ''
+ '';
+ homepage = "https://git.mtgmonkey.net/Andromeda/hs-rgfw";
+ license = lib.licenses.bsd3;
+ platforms = ["x86_64-linux"];
+ };
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
- debugGhcOptions = pkgs.lib.concatStringsSep " " (debugGhcFlags ++ commonGhcFlags);
- debugGhcFlags =
- [
- "-O0"
- "-Wall"
- "-Widentities"
- "-Wincomplete-record-updates"
- "-Wincomplete-uni-patterns"
- # "-Wmissing-export-lists"
- "-Wmissing-home-modules"
- "-Wpartial-fields"
- "-Wredundant-constraints"
- ]
- ++ commonGhcFlags;
- haddockOptions = pkgs.lib.concatStringsSep " " haddockFlags;
- haddockFlags = [
- "--html"
- "--odir docs"
- "--optghc=-i./src"
- "src/Game.hs"
- ];
- releaseGhcOptions = pkgs.lib.concatStringsSep " " (releaseGhcFlags ++ commonGhcFlags);
- releaseGhcFlags =
- [
- "-O2"
- "-threaded"
- "-rtsopts"
- "-with-rtsopts=-N"
- "-main-is Main"
- ]
- ++ commonGhcFlags;
- noHaddockOptions = "";
- commonGhcFlags = [
- "-i./src"
- "-threaded"
- "-rtsopts"
- "-with-rtsopts=-N"
- "-main-is Main"
- ];
- ghcPackages = p: [
- ];
- buildDeps = [
- pkgs.egl-wayland
- pkgs.libGL
- pkgs.libxkbcommon
- pkgs.wayland
- pkgs.xorg.libX11
- pkgs.xorg.libXcursor
- pkgs.xorg.libXi
- pkgs.xorg.libXrandr
- ];
- runtimeDeps = [
- pkgs.makeWrapper
- pkgs.pkg-config
- pkgs.wayland-protocols
- pkgs.wayland-scanner
- ];
in {
packages.${system} = {
- debug = pkgs.callPackage ./package.nix {
- ghcOptions = debugGhcOptions;
- haddockOptions = noHaddockOptions;
- inherit ghcPackages;
- inherit buildDeps;
- inherit runtimeDeps;
- };
- release = pkgs.callPackage ./package.nix {
- ghcOptions = releaseGhcOptions;
- haddockOptions = noHaddockOptions;
- inherit ghcPackages;
- inherit buildDeps;
- inherit runtimeDeps;
+ default = pkgs.haskellPackages.callPackage package {
+ xcursor = pkgs.xorg.libXcursor;
+ xi = pkgs.xorg.libXi;
};
- docs = pkgs.callPackage ./package.nix {
- ghcOptions = "--version";
- inherit haddockOptions;
- inherit ghcPackages;
- inherit buildDeps;
- inherit runtimeDeps;
- };
- default = pkgs.callPackage ./package.nix {
- ghcOptions = releaseGhcOptions;
- inherit haddockOptions;
- inherit ghcPackages;
- inherit buildDeps;
- inherit runtimeDeps;
+ };
+ devShells.${system} = {
+ default = pkgs.mkShell {
+ packages = [
+ pkgs.cabal-install
+ ];
+ inputsFrom = [
+ self.packages.${system}.default
+ ];
};
};
};