diff options
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 152 |
1 files changed, 67 insertions, 85 deletions
@@ -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 + ]; }; }; }; |
