summaryrefslogtreecommitdiff
path: root/packages/code
diff options
context:
space:
mode:
Diffstat (limited to 'packages/code')
-rw-r--r--packages/code/dfetch/app/Dfetch/Battery.hs26
-rw-r--r--packages/code/dfetch/app/Dfetch/Brightness.hs8
-rw-r--r--packages/code/dfetch/app/Main.hs8
-rw-r--r--packages/code/dfetch/dfetch.cabal27
-rw-r--r--packages/code/dfetch/package.nix5
5 files changed, 74 insertions, 0 deletions
diff --git a/packages/code/dfetch/app/Dfetch/Battery.hs b/packages/code/dfetch/app/Dfetch/Battery.hs
new file mode 100644
index 0000000..6e6a0a8
--- /dev/null
+++ b/packages/code/dfetch/app/Dfetch/Battery.hs
@@ -0,0 +1,26 @@
+module Dfetch.Battery
+ ( Battery(..)
+ , allBatteries
+ ) where
+
+import System.FilePath ((</>))
+import System.Directory (listDirectory)
+import Data.List (isPrefixOf)
+
+basePath :: FilePath
+basePath = "/sys/class/power_supply/"
+
+data Battery = Battery
+ {name :: String, capacity :: Int} deriving (Show)
+
+getCapacity :: String -> IO Battery
+getCapacity name = Battery <$> pure name <*> capacity
+ where
+ path = basePath </> name </> "capacity"
+ capacity = read <$> readFile path
+
+findBatteries :: IO [String]
+findBatteries = filter ("BAT" `isPrefixOf`) <$> listDirectory basePath
+
+allBatteries :: IO [Battery]
+allBatteries = findBatteries >>= traverse getCapacity
diff --git a/packages/code/dfetch/app/Dfetch/Brightness.hs b/packages/code/dfetch/app/Dfetch/Brightness.hs
new file mode 100644
index 0000000..912905a
--- /dev/null
+++ b/packages/code/dfetch/app/Dfetch/Brightness.hs
@@ -0,0 +1,8 @@
+module Dfetch.Brightness where
+
+import System.FilePath ((</>))
+import System.Directory (listDirectory)
+import Data.List (isPrefixOf)
+
+basePath :: FilePath
+basePath = "/sys/class/backlight/"
diff --git a/packages/code/dfetch/app/Main.hs b/packages/code/dfetch/app/Main.hs
new file mode 100644
index 0000000..d9a15ac
--- /dev/null
+++ b/packages/code/dfetch/app/Main.hs
@@ -0,0 +1,8 @@
+module Main (main) where
+
+import Dfetch.Battery (allBatteries)
+
+main :: IO ()
+main = do
+ bs <- allBatteries
+ print bs
diff --git a/packages/code/dfetch/dfetch.cabal b/packages/code/dfetch/dfetch.cabal
new file mode 100644
index 0000000..4b23eb3
--- /dev/null
+++ b/packages/code/dfetch/dfetch.cabal
@@ -0,0 +1,27 @@
+cabal-version: 3.0
+name: dfetch
+version: 0.1.0.0
+-- synopsis:
+-- description:
+license: BSD-3-Clause
+license-file: LICENSE
+author: Kleidi Bujari
+maintainer: mail@4kb.net
+-- copyright:
+build-type: Simple
+extra-doc-files: CHANGELOG.md
+-- extra-source-files:
+
+common warnings
+ ghc-options: -Wall
+
+executable dfetch
+ import: warnings
+ main-is: Main.hs
+ -- other-modules:
+ -- other-extensions:
+ build-depends: base ^>=4.20.2.0,
+ directory >= 1.3.8.5,
+ filepath >= 1.5.4.0
+ hs-source-dirs: app
+ default-language: Haskell2010
diff --git a/packages/code/dfetch/package.nix b/packages/code/dfetch/package.nix
new file mode 100644
index 0000000..1cf998d
--- /dev/null
+++ b/packages/code/dfetch/package.nix
@@ -0,0 +1,5 @@
+{ haskellPackages, ... }:
+
+haskellPackages.developPackage {
+ root = ./.;
+}