From c0521491a6cf69fc094882a25ddf6cb236d1183d Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Tue, 26 Apr 2022 14:09:38 +0200 Subject: [PATCH 1/6] add a flake file --- flake.nix | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 flake.nix diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..221c01a --- /dev/null +++ b/flake.nix @@ -0,0 +1,44 @@ +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + with nixpkgs.legacyPackages.${system}; + let + t = lib.trivial; + hl = haskell.lib; + + name = "puzzld"; + + project = devTools: + let addBuildTools = (t.flip hl.addBuildTools) devTools; + in haskellPackages.developPackage { + root = lib.sourceFilesBySuffices ./. [ ".cabal" ".hs" ]; + name = name; + returnShellEnv = !(devTools == [ ]); + + modifier = (t.flip t.pipe) [ + addBuildTools + hl.dontHaddock + hl.enableStaticLibraries + hl.justStaticExecutables + hl.disableLibraryProfiling + hl.disableExecutableProfiling + ]; + }; + + in { + packages.pkg = project [ ]; + + defaultPackage = self.packages.${system}.pkg; + + devShell = project (with haskellPackages; [ + cabal-fmt + cabal-install + hlint + ]); + }); +} From 3bc530dc360cdbc1b6aa05e7a477c96eb2909c2f Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Tue, 26 Apr 2022 14:18:09 +0200 Subject: [PATCH 2/6] add flake.lock --- flake.lock | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 flake.lock diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..ee33796 --- /dev/null +++ b/flake.lock @@ -0,0 +1,42 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1649676176, + "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1650974676, + "narHash": "sha256-s1l10UXYd6EIBWm7s3h7oeRFGssv+LOtYqeDDW0gz4Q=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "5f3eeb9c5282b8c0f3cfe3397b8dc500dfc420b4", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} From 48630eb9a0c5ef660752fa21b2360ffba7627b0a Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Tue, 26 Apr 2022 14:18:17 +0200 Subject: [PATCH 3/6] relax base upper bound (for ghc 9.0(?) with nix) --- puzzld.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/puzzld.cabal b/puzzld.cabal index fac4a09..e362edb 100644 --- a/puzzld.cabal +++ b/puzzld.cabal @@ -17,7 +17,7 @@ executable puzzld main-is: Main.hs other-modules: Web -- other-extensions: - build-depends: base >=4.12 && <4.14, + build-depends: base >=4.12 && <5, aeson, containers, http-types, From c388c8f60983f92031bb28c9e19b1202c1d246b0 Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Tue, 26 Apr 2022 14:19:44 +0200 Subject: [PATCH 4/6] remove license file from cabal --- puzzld.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/puzzld.cabal b/puzzld.cabal index e362edb..3efdea9 100644 --- a/puzzld.cabal +++ b/puzzld.cabal @@ -5,7 +5,7 @@ synopsis: A websocket puzzle solve state sharing server -- description: -- bug-reports: -- license: -license-file: LICENSE +-- license-file: LICENSE author: Robert Vollmert maintainer: rob@vllmrt.net -- copyright: From a1c7a689a3ac1fa70f400a25a604dc1e9eae7b18 Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Tue, 26 Apr 2022 14:21:45 +0200 Subject: [PATCH 5/6] blindly restore LICENSE file --- flake.nix | 2 +- puzzld.cabal | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 221c01a..de73b44 100644 --- a/flake.nix +++ b/flake.nix @@ -16,7 +16,7 @@ project = devTools: let addBuildTools = (t.flip hl.addBuildTools) devTools; in haskellPackages.developPackage { - root = lib.sourceFilesBySuffices ./. [ ".cabal" ".hs" ]; + root = lib.sourceFilesBySuffices ./. [ ".cabal" ".hs" "LICENSE" ]; name = name; returnShellEnv = !(devTools == [ ]); diff --git a/puzzld.cabal b/puzzld.cabal index 3efdea9..e362edb 100644 --- a/puzzld.cabal +++ b/puzzld.cabal @@ -5,7 +5,7 @@ synopsis: A websocket puzzle solve state sharing server -- description: -- bug-reports: -- license: --- license-file: LICENSE +license-file: LICENSE author: Robert Vollmert maintainer: rob@vllmrt.net -- copyright: From 119a62cb25c1f464bd285913a19c44cc99970146 Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Thu, 12 May 2022 14:30:38 +0200 Subject: [PATCH 6/6] bit simpler / cleaner --- flake.nix | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/flake.nix b/flake.nix index de73b44..8c3863c 100644 --- a/flake.nix +++ b/flake.nix @@ -6,17 +6,17 @@ outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: - with nixpkgs.legacyPackages.${system}; let - t = lib.trivial; - hl = haskell.lib; + pkgs = nixpkgs.legacyPackages.${system}; + t = pkgs.lib.trivial; + hl = pkgs.haskell.lib; name = "puzzld"; project = devTools: let addBuildTools = (t.flip hl.addBuildTools) devTools; - in haskellPackages.developPackage { - root = lib.sourceFilesBySuffices ./. [ ".cabal" ".hs" "LICENSE" ]; + in pkgs.haskellPackages.developPackage { + root = pkgs.lib.sourceFilesBySuffices ./. [ ".cabal" ".hs" "LICENSE" ]; name = name; returnShellEnv = !(devTools == [ ]); @@ -31,14 +31,13 @@ }; in { - packages.pkg = project [ ]; + packages.puzzld = project [ ]; - defaultPackage = self.packages.${system}.pkg; + defaultPackage = self.packages.${system}.puzzld; - devShell = project (with haskellPackages; [ - cabal-fmt - cabal-install - hlint + devShell = project (with pkgs.haskellPackages; [ + pkgs.haskellPackages.cabal-fmt + pkgs.haskellPackages.cabal-install ]); }); }