diff --git a/default.nix b/default.nix deleted file mode 100644 index 243321fec62ebad78a4f0d0a35ed8f28fef3309e..0000000000000000000000000000000000000000 --- a/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs ? import <nixpkgs> {}, haskellPackages ? pkgs.haskellPackages, args ? {} }: - -let - rawdrv = haskellPackages.callCabal2nix "qbar" ./. args; - drv = pkgs.haskell.lib.generateOptparseApplicativeCompletions [ "qbar" ] rawdrv; - -in - if pkgs.lib.inNixShell then rawdrv.env else drv diff --git a/flake.lock b/flake.lock index 1d6fed0f6607e411659de8740b9a6eb253453036..35b657e4658a528143693aad6920d6f020c6d802 100644 --- a/flake.lock +++ b/flake.lock @@ -2,21 +2,58 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1648486164, - "narHash": "sha256-v2EOpYJkFS+L4TFoBWC1ZTKYm6FsNNIGyWraY5MtO+4=", - "owner": "nixos", + "lastModified": 1681303793, + "narHash": "sha256-JEdQHsYuCfRL2PICHlOiH/2ue3DwoxUX7DJ6zZxZXFk=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "1be57bee8d0565a7bfd8745540fed257c8c7f523", + "rev": "fe2ecaf706a5907b5e54d979fbde4924d84b65fc", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1681303793, + "narHash": "sha256-JEdQHsYuCfRL2PICHlOiH/2ue3DwoxUX7DJ6zZxZXFk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fe2ecaf706a5907b5e54d979fbde4924d84b65fc", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "quasar": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1682474992, + "narHash": "sha256-tyN64/4weIGmlYMOOrVwFaBVyqvt8du9APhCO9vkV14=", + "owner": "queezle42", + "repo": "quasar", + "rev": "76faa881ae2e3a5575fba9f9e374931dbb8e6495", + "type": "github" + }, + "original": { + "owner": "queezle42", + "repo": "quasar", + "type": "github" } }, "root": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "quasar": "quasar" } } }, diff --git a/flake.nix b/flake.nix index 8d30d187145d2f92a5c3092a2848c6f16969a6f9..3a8d4b95966b946083a50b64ac878a1d244d22c4 100644 --- a/flake.nix +++ b/flake.nix @@ -1,46 +1,69 @@ { - outputs = { self, nixpkgs }: with nixpkgs.lib; let + inputs = { + nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable; + quasar.url = github:queezle42/quasar; + }; + outputs = { self, nixpkgs, quasar }: + with nixpkgs.lib; + let systems = platforms.unix; - forAllSystems = f: genAttrs systems (system: f system); - + forAllSystems = genAttrs systems; + getHaskellPackages = pkgs: pattern: pipe pkgs.haskell.packages [ + attrNames + (filter (x: !isNull (strings.match pattern x))) + (sort (x: y: x>y)) + (map (x: pkgs.haskell.packages.${x})) + head + ]; in { - packages = forAllSystems (system: - let pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; }; - in rec { - default = qbar; - qbar = pkgs.haskellPackages.qbar; + let + pkgs = import nixpkgs { inherit system; overlays = [ + self.overlays.default + quasar.overlays.default + ]; }; + haskellPackages = getHaskellPackages pkgs "ghc94."; + results = { + qbar = haskellPackages.qbar; + }; + in results // { + default = pkgs.linkFarm "qbar-all" (results // mapAttrs' (k: v: nameValuePair "${k}-doc" (v.doc or pkgs.emptyDirectory)) results); } ); - defaultPackage = forAllSystems (system: self.packages.${system}.qbar); - - overlay = final: prev: { + overlays.default = final: prev: { haskell = prev.haskell // { packageOverrides = hfinal: hprev: prev.haskell.packageOverrides hfinal hprev // { - qbar = import ./. { - pkgs = final; - haskellPackages = hfinal; - }; + qbar = hfinal.generateOptparseApplicativeCompletions ["qbar"] + (hfinal.callCabal2nix "qbar" ./. {}); }; }; }; - devShell = forAllSystems (system: + devShells = forAllSystems (system: let - pkgs = nixpkgs.legacyPackages.${system}; - in pkgs.mkShell { - inputsFrom = [ self.packages.${system}.default.env ]; - packages = [ - pkgs.cabal-install - pkgs.zsh - pkgs.entr - pkgs.ghcid - pkgs.haskell-language-server - ]; + pkgs = import nixpkgs { inherit system; overlays = [ + self.overlays.default + quasar.overlays.default + ]; }; + haskellPackages = getHaskellPackages pkgs "ghc94."; + in rec { + default = haskellPackages.shellFor { + packages = hpkgs: [ + hpkgs.qbar + ]; + nativeBuildInputs = [ + pkgs.cabal-install + pkgs.zsh + pkgs.entr + pkgs.ghcid + haskellPackages.haskell-language-server + pkgs.hlint + ]; + }; } ); - }; } + diff --git a/qbar.cabal b/qbar.cabal index a9b6227336070f7f5ba68af5456e7ac88f6b2c07..4fc91965916e8c41f3256bdcd3cb5ab43702a3dd 100644 --- a/qbar.cabal +++ b/qbar.cabal @@ -102,6 +102,8 @@ library pipes-network, pipes-parse, pipes-safe, + quasar, + quasar-timer, random, sorted-list, stm, @@ -151,39 +153,7 @@ executable qbar hs-source-dirs: app build-depends: - aeson, - async, - attoparsec, - base >=4.7 && <5, - binary, - bytestring, - colour, - concurrent-extra, - containers, - dbus, - directory, - filepath, - gitrev, - hostname, - lens, - mtl, - network, - optparse-applicative, - pipes, - pipes-aeson, - pipes-concurrency, - pipes-network, - pipes-parse, - pipes-safe, qbar, - random, - sorted-list, - stm, - text, - time, - typed-process, - unix, - unordered-containers, test-suite qbar-test import: shared-executable-properties @@ -195,4 +165,4 @@ test-suite qbar-test test build-depends: base >=4.7 && <5, - qbar, \ No newline at end of file + qbar, diff --git a/src/QBar/Utils.hs b/src/QBar/Utils.hs index ca0c2fc7c4f95b41bb4dbb458539624de578dd12..e00ab4e135761b07a052e0f35d6de822b8eb4501 100644 --- a/src/QBar/Utils.hs +++ b/src/QBar/Utils.hs @@ -7,7 +7,7 @@ import Control.Concurrent.STM (atomically) import Control.Concurrent.STM.TChan import Control.Concurrent.STM.TVar import Control.Monad (replicateM) -import qualified Data.Text.Lazy as T +import Data.Text.Lazy qualified as T import Pipes import System.Random