diff --git a/configuration.nix b/configuration.nix index dfbda19..c4f7af8 100644 --- a/configuration.nix +++ b/configuration.nix @@ -43,7 +43,13 @@ defaultSession = "none+xmonad"; }; libinput.enable = true; # Enable touchpad. - windowManager.xmonad.enable = true; + windowManager.xmonad = { + enable = true; + flake = { + enable = true; + compiler = "ghc924"; + }; + }; xkb.layout = "de"; }; # Enable CUPS to print. @@ -91,7 +97,10 @@ ''; }; - nixpkgs.config.allowUnfree = true; + nixpkgs.config = { + allowUnfree = true; + permittedInsecurePackages = [ "electron-25.9.0" ]; + }; # Enable zsh for setting it as shell for users. programs.zsh.enable = true; diff --git a/flake.nix b/flake.nix index 99614ca..0dc0bf6 100644 --- a/flake.nix +++ b/flake.nix @@ -26,8 +26,19 @@ useUserPackages = true; users.elias = import ./home/default.nix; }; - nixpkgs.overlays = [ inputs.neovim-nightly-overlay.overlay ]; + nixpkgs.overlays = [ + (final: prev: { + xmobar = final.haskellPackages.callPackage + ./home/programs/xmonad/src/xmobar/default.nix { }; + }) + inputs.neovim-nightly-overlay.overlay + ]; } + ] ++ xmonad-contrib.nixosModules ++ [ + # `modernise` replaces the standard xmonad module and wrapper script + # with those from unstable. This is currently a necessary workaround to + # make Mod-q recompilation work. + xmonad-contrib.modernise."x86_64-linux" ]; }; }; diff --git a/home/programs/xmonad/src/xmobar/default.nix b/home/programs/xmonad/src/xmobar/default.nix new file mode 100644 index 0000000..d8acd4f --- /dev/null +++ b/home/programs/xmonad/src/xmobar/default.nix @@ -0,0 +1,13 @@ +{ pkgs ? import { } }: +with pkgs; +haskellPackages.mkDerivation { + pname = "xmobar"; + version = "0.1.0.0"; + src = /etc/nixos/home/programs/xmonad/src/xmobar/.; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = with haskellPackages; [ base xmobar ]; + license = "unknown"; + hydraPlatforms = lib.platforms.none; +} + diff --git a/home/programs/xmonad/src/xmobar/xmobar-custom.cabal b/home/programs/xmonad/src/xmobar/xmobar-custom.cabal new file mode 100644 index 0000000..26a1c2e --- /dev/null +++ b/home/programs/xmonad/src/xmobar/xmobar-custom.cabal @@ -0,0 +1,54 @@ +cabal-version: 3.0 +-- The cabal-version field refers to the version of the .cabal specification, +-- and can be different from the cabal-install (the tool) version and the +-- Cabal (the library) version you are using. As such, the Cabal (the library) +-- version used must be equal or greater than the version stated in this field. +-- Starting from the specification version 2.2, the cabal-version field must be +-- the first thing in the cabal file. + +-- Initial package description 'xmobar-custom' generated by +-- 'cabal init'. For further documentation, see: +-- http://haskell.org/cabal/users-guide/ +-- +-- The name of the package. +name: xmobar-custom + +-- The package version. +-- See the Haskell package versioning policy (PVP) for standards +-- guiding when and how versions should be incremented. +-- https://pvp.haskell.org +-- PVP summary: +-+------- breaking API changes +-- | | +----- non-breaking API additions +-- | | | +--- code changes with no API change +version: 0.1.0.0 + +-- The package author(s). +author: einfischy + +-- An email address to which users can send suggestions, bug reports, and patches. +maintainer: accounts.codeberg@kstn.in + +-- A copyright notice. +-- copyright: +build-type: Simple + +common warnings + ghc-options: -Wall -threaded + +executable xmobar + -- Import common warning flags. + import: warnings + + -- .hs or .lhs file containing the Main module. + main-is: xmobar.hs + + -- Other library packages from which modules are imported. + build-depends: base ^>=4.17.2.1, + xmobar ^>=0.47.1 + + -- Directories containing source files. + hs-source-dirs: . + + -- Base language which the package is written in. + default-language: Haskell2010 + diff --git a/home/programs/xmonad/src/xmobar/xmobar.hs b/home/programs/xmonad/src/xmobar/xmobar.hs new file mode 100644 index 0000000..c059d40 --- /dev/null +++ b/home/programs/xmonad/src/xmobar/xmobar.hs @@ -0,0 +1,62 @@ +import Xmobar + +config :: Config +config = + defaultConfig + { font = "Fira Code" + , position = TopH 30 + , borderColor = "#1e2030" + , border = FullB + , borderWidth = 3 + , bgColor = "#24273a" + , fgColor = "#cad3f5" + , commands = [ Run $ Cpu [ "--template", "\xf085 %" + , "--Low","3" + , "--High","50" + , "--low","#bbc2cf" + , "--normal","#bbc2cf" + , "--high","#fb4934"] 50 + , Run $ Memory ["-t","\xF2DB %" + ,"-H","80" + ,"-L","10" + ,"-l","#bbc2cf" + ,"-n","#bbc2cf" + ,"-h","#fb4934"] 50 + , Run $ Date "\xf017 %a %b %_d %H:%M" "date" 300 + , Run $ DynNetwork ["-t","\xf063 \xf062 " + ,"-H","200" + ,"-L","10" + ,"-h","#bbc2cf" + ,"-l","#bbc2cf" + ,"-n","#bbc2cf"] 50 + , Run $ CoreTemp ["-t", "\xf2c7 °" + , "-L", "30" + , "-H", "75" + , "-l", "lightblue" + , "-n", "#bbc2cf" + , "-h", "#aa4450"] 50 + , Run $ BatteryP [ "BAT1" ] + [ "--template" , "\xf240 " + , "--Low" , "10" -- units: % + , "--High" , "80" -- units: % + , "--low" , "#fb4934" + , "--normal" , "#bbc2cf" + , "--high" , "#98be65" + , "--" -- battery specific options + -- discharging status + , "-o" , "% ()" + -- AC "on" status + , "-O" , "% (Charging)" + -- charged status + , "-i" , "Charged" + ] 50 + , Run XMonadLog + ] + , sepChar = "%" + , alignSep = "}{" + , template = "%XMonadLog% }{ %cpu% | %coretemp% | %memory% | %battery% | %dynnetwork% | %date% |" + } + +main :: IO () +main = xmobar config +