From fdb7a7b876fc0b46ff36751642cbc05ed4140232 Mon Sep 17 00:00:00 2001 From: Kleidi Bujari Date: Sun, 9 Aug 2026 17:38:22 -0700 Subject: init dfetch for system queries --- packages/code/dfetch/app/Dfetch/Battery.hs | 26 ++++++++++++++++++++++++++ packages/code/dfetch/app/Dfetch/Brightness.hs | 8 ++++++++ packages/code/dfetch/app/Main.hs | 8 ++++++++ packages/code/dfetch/dfetch.cabal | 27 +++++++++++++++++++++++++++ packages/code/dfetch/package.nix | 5 +++++ 5 files changed, 74 insertions(+) create mode 100644 packages/code/dfetch/app/Dfetch/Battery.hs create mode 100644 packages/code/dfetch/app/Dfetch/Brightness.hs create mode 100644 packages/code/dfetch/app/Main.hs create mode 100644 packages/code/dfetch/dfetch.cabal create mode 100644 packages/code/dfetch/package.nix (limited to 'packages/code/dfetch') 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 = ./.; +} -- cgit v1.3.1