diff --git a/flake.lock b/flake.lock index f7500ea..dcacb35 100644 --- a/flake.lock +++ b/flake.lock @@ -17,24 +17,42 @@ }, "nixpkgs": { "locked": { - "lastModified": 1680273054, - "narHash": "sha256-Bs6/5LpvYp379qVqGt9mXxxx9GSE789k3oFc+OAL07M=", + "lastModified": 1718490232, + "narHash": "sha256-0Fh3aJZuTJVmiiKY/5SyvHlfhZ3HeZTDUQnd+Fx6/Qo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3364b5b117f65fe1ce65a3cdd5612a078a3b31e3", + "rev": "ede5282c487a1fd2de64303ba59adad6726f1225", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "ede5282c487a1fd2de64303ba59adad6726f1225", "type": "github" } }, "root": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "static-haskell-nix": "static-haskell-nix" + } + }, + "static-haskell-nix": { + "flake": false, + "locked": { + "lastModified": 1719753784, + "narHash": "sha256-Dg8ZXzTJ5wbxa8uc1MnAv4TuOfua2S6+wMUtu7m64dQ=", + "owner": "nh2", + "repo": "static-haskell-nix", + "rev": "d0f4678948b0e128e73ca4f5232b936bc02e38ef", + "type": "github" + }, + "original": { + "owner": "nh2", + "ref": "fp/fix-callPackage-dynamic-executables", + "repo": "static-haskell-nix", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index a3a864a..fdcdfe9 100644 --- a/flake.nix +++ b/flake.nix @@ -1,8 +1,20 @@ { description = "glualint - Linter and pretty printer for Garry's Mod's variant of Lua."; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + nixpkgs = { + type = "github"; + owner = "NixOS"; + repo = "nixpkgs"; + flake = true; + # This is specifically pinned to be the same as the nixpkgs used by static-haskell-nix. That + # ensures that the caches from nh2 can be reused. + rev = "ede5282c487a1fd2de64303ba59adad6726f1225"; + }; flake-utils.url = "github:numtide/flake-utils"; + static-haskell-nix = { + url = "github:nh2/static-haskell-nix/fp/fix-callPackage-dynamic-executables"; + flake = false; + }; }; nixConfig = { @@ -11,13 +23,20 @@ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= glualint.cachix.org-1:wHSvobqyCtsGg5tvumXl2SKi998JKhEZbbQeupxHHeY="; }; - outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: + outputs = { self, nixpkgs, flake-utils, static-haskell-nix}: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; - overlays = [ self.overlays.${system}.glualint ]; + overlays = [ (import ./nix/overlay.nix) ]; }; + # Use the default.nix in static-haskell-nix/survey to build a statically linked glualint + survey = import (static-haskell-nix + "/survey") { + normalPkgs = pkgs; + compiler = "ghc965"; + }; + staticHaskellPackages = survey.haskellPackages.extend (pkgs.callPackage nix/haskell-overlay.nix {}); + # Function to build a devshell for glualint mkDevShell = mkBuildInputs: pkgs.glualintPkgs.haskellPackages.shellFor { packages = p: [ p.glualint ]; @@ -29,7 +48,7 @@ packages = { glualint = pkgs.glualintPkgs.haskellPackages.glualint; - glualint-static = pkgs.glualintPkgs.staticHaskellPackages.glualint; + glualint-static = staticHaskellPackages.glualint; default = self.packages.${system}.glualint-static; }; diff --git a/nix/haskell-overlay.nix b/nix/haskell-overlay.nix index a4b3f0f..505c9f5 100644 --- a/nix/haskell-overlay.nix +++ b/nix/haskell-overlay.nix @@ -5,10 +5,10 @@ let # https://github.com/UU-ComputerScience/uuagc/pull/11 uuagc-source = fetchFromGitHub { - owner = "FPtje"; + owner = "UU-ComputerScience"; repo = "uuagc"; - rev = "93783365b8e0771b092b9d99264227ca7c5d0823"; - sha256 = "sha256-hvJ/GShwR1AvSofPmmR4FJMPUwUaCMiL1l1CKcKvQw0="; + rev = "7d1dcacb18846820f9f56bbf94209fd1c630fb97"; + sha256 = "sha256-TbJbSRvGG/U5SCLgVICx82d5g2m42rZGFwuT4pX6a30="; }; in { diff --git a/nix/overlay.nix b/nix/overlay.nix index 579f844..02c5497 100644 --- a/nix/overlay.nix +++ b/nix/overlay.nix @@ -4,9 +4,9 @@ final: previous: haskellOverlay = final.callPackage ./haskell-overlay.nix {}; haskellPackages = - previous.haskell.packages.ghc94.extend final.glualintPkgs.haskellOverlay; + previous.haskell.packages.ghc965.extend final.glualintPkgs.haskellOverlay; staticHaskellPackages = - previous.pkgsStatic.haskell.packages.ghc94.extend final.glualintPkgs.haskellOverlay; + previous.pkgsStatic.haskell.packages.ghc965.extend final.glualintPkgs.haskellOverlay; }; }