Merge remote-tracking branch 'ni/master'
This commit is contained in:
commit
f6b5bbc305
21
default.nix
21
default.nix
@ -1,19 +1,12 @@
|
|||||||
import <nixpkgs/nixos/lib/eval-config.nix> {
|
import <nixpkgs/nixos> {} // rec {
|
||||||
modules = [
|
|
||||||
(import <nixpkgs/nixos/lib/from-env.nix> "NIXOS_CONFIG" <nixos-config>)
|
|
||||||
];
|
|
||||||
}
|
|
||||||
//
|
|
||||||
{
|
|
||||||
lib = import ./lib;
|
lib = import ./lib;
|
||||||
systems = with import ./lib; let
|
systems = with lib; let
|
||||||
ns = getEnv "LOGNAME";
|
namespace = getEnv "LOGNAME";
|
||||||
|
systemsDir = <stockholm> + "/${namespace}/1systems";
|
||||||
in
|
in
|
||||||
genAttrs
|
genAttrs
|
||||||
(attrNames (filterAttrs (_: eq "directory") (readDir (<stockholm> + "/${ns}/1systems"))))
|
(attrNames (filterAttrs (_: eq "directory") (readDir systemsDir)))
|
||||||
(name: let
|
(name: import <nixpkgs/nixos> {
|
||||||
config = import (<stockholm> + "/${ns}/1systems/${name}/config.nix");
|
configuration = import (systemsDir + "/${name}/config.nix");
|
||||||
in import <nixpkgs/nixos/lib/eval-config.nix> {
|
|
||||||
modules = [ config ];
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -15,10 +15,4 @@ let
|
|||||||
else override;
|
else override;
|
||||||
in
|
in
|
||||||
|
|
||||||
listToAttrs
|
mapNixDir (path: callPackage path {}) ./.
|
||||||
(map
|
|
||||||
(name: nameValuePair (removeSuffix ".nix" name)
|
|
||||||
(callPackage (./. + "/${name}") {}))
|
|
||||||
(filter
|
|
||||||
(name: name != "default.nix" && !hasPrefix "." name)
|
|
||||||
(attrNames (readDir ./.))))
|
|
||||||
|
@ -1,13 +1,6 @@
|
|||||||
with import <stockholm/lib>;
|
with import <stockholm/lib>;
|
||||||
let
|
let
|
||||||
overrides = self: super:
|
overrides = self: super: mapNixDir (path: self.callPackage path {}) ./.;
|
||||||
listToAttrs
|
|
||||||
(map
|
|
||||||
(name: nameValuePair (removeSuffix ".nix" name)
|
|
||||||
(self.callPackage (./. + "/${name}") {}))
|
|
||||||
(filter
|
|
||||||
(name: name != "default.nix" && !hasPrefix "." name)
|
|
||||||
(attrNames (readDir ./.))));
|
|
||||||
in
|
in
|
||||||
self: super:
|
self: super:
|
||||||
{
|
{
|
||||||
|
@ -15,10 +15,4 @@ let
|
|||||||
else override;
|
else override;
|
||||||
in
|
in
|
||||||
|
|
||||||
listToAttrs
|
mapNixDir (path: callPackage path {}) ./.
|
||||||
(map
|
|
||||||
(name: nameValuePair (removeSuffix ".nix" name)
|
|
||||||
(callPackage (./. + "/${name}") {}))
|
|
||||||
(filter
|
|
||||||
(name: name != "default.nix" && !hasPrefix "." name)
|
|
||||||
(attrNames (readDir ./.))))
|
|
||||||
|
@ -5,6 +5,7 @@ let
|
|||||||
evalSource = import ./eval-source.nix;
|
evalSource = import ./eval-source.nix;
|
||||||
|
|
||||||
git = import ./git.nix { inherit lib; };
|
git = import ./git.nix { inherit lib; };
|
||||||
|
krops = import ../submodules/krops/lib;
|
||||||
shell = import ./shell.nix { inherit lib; };
|
shell = import ./shell.nix { inherit lib; };
|
||||||
types = nixpkgs-lib.types // import ./types.nix { inherit lib; };
|
types = nixpkgs-lib.types // import ./types.nix { inherit lib; };
|
||||||
|
|
||||||
@ -44,6 +45,23 @@ let
|
|||||||
|
|
||||||
indent = replaceChars ["\n"] ["\n "];
|
indent = replaceChars ["\n"] ["\n "];
|
||||||
|
|
||||||
|
mapNixDir = f: x: {
|
||||||
|
list = foldl' mergeAttrs {} (map (mapNixDir1 f) x);
|
||||||
|
path = mapNixDir1 f x;
|
||||||
|
}.${typeOf x};
|
||||||
|
|
||||||
|
mapNixDir1 = f: dirPath:
|
||||||
|
listToAttrs
|
||||||
|
(map
|
||||||
|
(relPath: let
|
||||||
|
name = removeSuffix ".nix" relPath;
|
||||||
|
path = dirPath + "/${relPath}";
|
||||||
|
in
|
||||||
|
nameValuePair name (f path))
|
||||||
|
(filter
|
||||||
|
(name: name != "default.nix" && !hasPrefix "." name)
|
||||||
|
(attrNames (readDir dirPath))));
|
||||||
|
|
||||||
# https://tools.ietf.org/html/rfc5952
|
# https://tools.ietf.org/html/rfc5952
|
||||||
normalize-ip6-addr =
|
normalize-ip6-addr =
|
||||||
let
|
let
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 6f49342b2d5973478f1f5eb6f8d6307059e7bcf7
|
Subproject commit 4017c60485c4bfff533ff11bdbb5557fa951655f
|
@ -13,6 +13,20 @@ with import <stockholm/lib>;
|
|||||||
shopt -s histappend histreedit histverify
|
shopt -s histappend histreedit histverify
|
||||||
shopt -s no_empty_cmd_completion
|
shopt -s no_empty_cmd_completion
|
||||||
complete -d cd
|
complete -d cd
|
||||||
|
|
||||||
|
case $UID in
|
||||||
|
${shell.escape (toString config.krebs.users.tv.uid)})
|
||||||
|
if test ''${SHLVL-1} = 1; then
|
||||||
|
case ''${XMONAD_SPAWN_WORKSPACE-} in
|
||||||
|
stockholm)
|
||||||
|
cd ~/stockholm
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
export NIX_PATH="stockholm=$HOME/stockholm:$NIX_PATH"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
'';
|
'';
|
||||||
promptInit = /* sh */ ''
|
promptInit = /* sh */ ''
|
||||||
case $UID in
|
case $UID in
|
||||||
@ -32,14 +46,6 @@ with import <stockholm/lib>;
|
|||||||
if test -n "$SSH_AGENT_PID"; then
|
if test -n "$SSH_AGENT_PID"; then
|
||||||
PS1="ssh-agent[$SSH_AGENT_PID] $PS1"
|
PS1="ssh-agent[$SSH_AGENT_PID] $PS1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test ''${SHLVL-1} = 1; then
|
|
||||||
case ''${XMONAD_SPAWN_WORKSPACE-} in
|
|
||||||
stockholm)
|
|
||||||
cd ~/stockholm
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -87,11 +87,6 @@ with import <stockholm/lib>;
|
|||||||
export SYSTEM="$1"
|
export SYSTEM="$1"
|
||||||
exec nix-shell -I stockholm="$PWD" --run 'deploy --system="$SYSTEM"'
|
exec nix-shell -I stockholm="$PWD" --run 'deploy --system="$SYSTEM"'
|
||||||
'';
|
'';
|
||||||
reload = "systemctl reload";
|
|
||||||
restart = "systemctl restart";
|
|
||||||
start = "systemctl start";
|
|
||||||
status = "systemctl status";
|
|
||||||
stop = "systemctl stop";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
|
@ -57,7 +57,9 @@ in {
|
|||||||
|
|
||||||
systemd.services.display-manager.enable = false;
|
systemd.services.display-manager.enable = false;
|
||||||
|
|
||||||
systemd.services.xmonad = {
|
systemd.services.xmonad = let
|
||||||
|
xmonad = "${pkgs.haskellPackages.xmonad-tv}/bin/xmonad";
|
||||||
|
in {
|
||||||
wantedBy = [ "graphical.target" ];
|
wantedBy = [ "graphical.target" ];
|
||||||
requires = [ "xserver.service" ];
|
requires = [ "xserver.service" ];
|
||||||
environment = {
|
environment = {
|
||||||
@ -93,6 +95,11 @@ in {
|
|||||||
"za" "zh" "zj" "zs"
|
"za" "zh" "zj" "zs"
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
path = [
|
||||||
|
pkgs.fzmenu
|
||||||
|
pkgs.pulseaudioLight.out
|
||||||
|
pkgs.rxvt_unicode
|
||||||
|
];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
SyslogIdentifier = "xmonad";
|
SyslogIdentifier = "xmonad";
|
||||||
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p ${toString [
|
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p ${toString [
|
||||||
@ -100,8 +107,8 @@ in {
|
|||||||
"\${XMONAD_CONFIG_DIR}"
|
"\${XMONAD_CONFIG_DIR}"
|
||||||
"\${XMONAD_DATA_DIR}"
|
"\${XMONAD_DATA_DIR}"
|
||||||
]}";
|
]}";
|
||||||
ExecStart = "${pkgs.xmonad-tv}/bin/xmonad-${currentSystem}";
|
ExecStart = "@${xmonad} xmonad-${currentSystem} ";
|
||||||
ExecStop = "${pkgs.xmonad-tv}/bin/xmonad-${currentSystem} --shutdown";
|
ExecStop = "@${xmonad} xmonad-${currentSystem} --shutdown";
|
||||||
User = cfg.user.name;
|
User = cfg.user.name;
|
||||||
WorkingDirectory = cfg.user.home;
|
WorkingDirectory = cfg.user.home;
|
||||||
};
|
};
|
||||||
|
20
tv/5pkgs/haskell/default.nix
Normal file
20
tv/5pkgs/haskell/default.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
with import <stockholm/lib>;
|
||||||
|
let
|
||||||
|
overrides = self: super:
|
||||||
|
mapNixDir (path: self.callPackage path {}) [
|
||||||
|
<stockholm/krebs/5pkgs/haskell>
|
||||||
|
./.
|
||||||
|
];
|
||||||
|
in
|
||||||
|
self: super: {
|
||||||
|
haskell = super.haskell // {
|
||||||
|
packages = mapAttrs (name: value:
|
||||||
|
if hasAttr "override" value
|
||||||
|
then value.override { inherit overrides; }
|
||||||
|
else value
|
||||||
|
) super.haskell.packages;
|
||||||
|
};
|
||||||
|
haskellPackages = super.haskellPackages.override {
|
||||||
|
inherit overrides;
|
||||||
|
};
|
||||||
|
}
|
15
tv/5pkgs/haskell/xmonad-tv/default.nix
Normal file
15
tv/5pkgs/haskell/xmonad-tv/default.nix
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{ mkDerivation, base, containers, directory, extra, stdenv, unix
|
||||||
|
, X11, xmonad, xmonad-contrib, xmonad-stockholm
|
||||||
|
}:
|
||||||
|
mkDerivation {
|
||||||
|
pname = "xmonad-tv";
|
||||||
|
version = "1.0.0";
|
||||||
|
src = ./src;
|
||||||
|
isLibrary = false;
|
||||||
|
isExecutable = true;
|
||||||
|
executableHaskellDepends = [
|
||||||
|
base containers directory extra unix X11 xmonad xmonad-contrib
|
||||||
|
xmonad-stockholm
|
||||||
|
];
|
||||||
|
license = stdenv.lib.licenses.mit;
|
||||||
|
}
|
78
tv/5pkgs/haskell/xmonad-tv/shell.nix
Normal file
78
tv/5pkgs/haskell/xmonad-tv/shell.nix
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
{ compiler ? "default" }: let
|
||||||
|
|
||||||
|
stockholm = import <stockholm>;
|
||||||
|
|
||||||
|
inherit (stockholm.systems.${lib.krops.getHostName}) config pkgs;
|
||||||
|
inherit (stockholm) lib;
|
||||||
|
|
||||||
|
haskellPackages =
|
||||||
|
if compiler == "default"
|
||||||
|
then pkgs.haskellPackages
|
||||||
|
else pkgs.haskell.packages.${compiler};
|
||||||
|
|
||||||
|
xmonadDrv = haskellPackages.callPackage (import ./.) {};
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
lib.overrideDerivation xmonadDrv.env (oldAttrs: {
|
||||||
|
shellHook = ''
|
||||||
|
pkg_name=${lib.shell.escape (lib.baseNameOf (toString ./.))}
|
||||||
|
|
||||||
|
WORKDIR=${toString ./src}
|
||||||
|
CACHEDIR=$HOME/tmp/$pkg_name
|
||||||
|
HISTFILE=$CACHEDIR/bash_history
|
||||||
|
|
||||||
|
mkdir -p "$CACHEDIR"
|
||||||
|
|
||||||
|
config_XMONAD_CACHE_DIR=${lib.shell.escape
|
||||||
|
config.systemd.services.xmonad.environment.XMONAD_CACHE_DIR
|
||||||
|
}
|
||||||
|
|
||||||
|
xmonad=$CACHEDIR/main
|
||||||
|
|
||||||
|
xmonad_build() {(
|
||||||
|
set -efu
|
||||||
|
cd "$WORKDIR"
|
||||||
|
options=$(
|
||||||
|
${pkgs.cabal-read}/bin/ghc-options "$WORKDIR/$pkg_name.cabal" xmonad
|
||||||
|
)
|
||||||
|
ghc $options \
|
||||||
|
-odir "$CACHEDIR" \
|
||||||
|
-hidir "$CACHEDIR" \
|
||||||
|
-o "$xmonad" \
|
||||||
|
main.hs
|
||||||
|
)}
|
||||||
|
|
||||||
|
xmonad_restart() {(
|
||||||
|
set -efu
|
||||||
|
cd "$WORKDIR"
|
||||||
|
if systemctl is-active xmonad; then
|
||||||
|
sudo systemctl stop xmonad
|
||||||
|
cp -b "$config_XMONAD_CACHE_DIR"/xmonad.state "$CACHEDIR"/
|
||||||
|
echo "xmonad.state: $(cat "$CACHEDIR"/xmonad.state)"
|
||||||
|
else
|
||||||
|
"$xmonad" --shutdown || :
|
||||||
|
fi
|
||||||
|
"$xmonad" &
|
||||||
|
echo xmonad pid: $! >&2
|
||||||
|
)}
|
||||||
|
|
||||||
|
xmonad_yield() {(
|
||||||
|
set -efu
|
||||||
|
"$xmonad" --shutdown
|
||||||
|
cp -b "$CACHEDIR"/xmonad.state "$config_XMONAD_CACHE_DIR"/
|
||||||
|
sudo systemctl start xmonad
|
||||||
|
)}
|
||||||
|
|
||||||
|
export PATH=${config.systemd.services.xmonad.path}:$PATH
|
||||||
|
export SHELL=/run/current-system/sw/bin/bash
|
||||||
|
|
||||||
|
export XMONAD_CACHE_DIR="$CACHEDIR"
|
||||||
|
export XMONAD_DATA_DIR="$CACHEDIR"
|
||||||
|
export XMONAD_CONFIG_DIR=/var/empty
|
||||||
|
|
||||||
|
unset XMONAD_STARTUP_HOOK
|
||||||
|
|
||||||
|
cd "$WORKDIR"
|
||||||
|
'';
|
||||||
|
})
|
15
tv/5pkgs/haskell/xmonad-tv/src/Helpers/Path.hs
Normal file
15
tv/5pkgs/haskell/xmonad-tv/src/Helpers/Path.hs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
module Helpers.Path where
|
||||||
|
|
||||||
|
import qualified Data.List
|
||||||
|
import qualified System.Directory
|
||||||
|
import qualified System.IO.Unsafe
|
||||||
|
|
||||||
|
|
||||||
|
findExecutable :: String -> FilePath
|
||||||
|
findExecutable =
|
||||||
|
System.IO.Unsafe.unsafePerformIO . find
|
||||||
|
where
|
||||||
|
find name =
|
||||||
|
maybe failure id <$> System.Directory.findExecutable name
|
||||||
|
where
|
||||||
|
failure = error (Data.List.intercalate " " [name, "not found"])
|
22
tv/5pkgs/haskell/xmonad-tv/src/Paths.hs
Normal file
22
tv/5pkgs/haskell/xmonad-tv/src/Paths.hs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
module Paths where
|
||||||
|
|
||||||
|
import Helpers.Path
|
||||||
|
|
||||||
|
|
||||||
|
otpmenu :: FilePath
|
||||||
|
otpmenu = findExecutable "otpmenu"
|
||||||
|
|
||||||
|
pactl :: FilePath
|
||||||
|
pactl = findExecutable "pactl"
|
||||||
|
|
||||||
|
passmenu :: FilePath
|
||||||
|
passmenu = findExecutable "passmenu"
|
||||||
|
|
||||||
|
slock :: FilePath
|
||||||
|
slock = "/run/wrappers/bin/slock"
|
||||||
|
|
||||||
|
su :: FilePath
|
||||||
|
su = "/run/wrappers/bin/su"
|
||||||
|
|
||||||
|
urxvtc :: FilePath
|
||||||
|
urxvtc = findExecutable "urxvtc"
|
@ -1,23 +1,10 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
pkgs.writeHaskellPackage "xmonad-tv" {
|
|
||||||
executables."xmonad-${builtins.currentSystem}" = {
|
|
||||||
extra-depends = [
|
|
||||||
"containers"
|
|
||||||
"extra"
|
|
||||||
"unix"
|
|
||||||
"X11"
|
|
||||||
"xmonad"
|
|
||||||
"xmonad-contrib"
|
|
||||||
"xmonad-stockholm"
|
|
||||||
];
|
|
||||||
text = /* haskell */ ''
|
|
||||||
{-# LANGUAGE DeriveDataTypeable #-} -- for XS
|
{-# LANGUAGE DeriveDataTypeable #-} -- for XS
|
||||||
{-# LANGUAGE FlexibleContexts #-} -- for xmonad'
|
{-# LANGUAGE FlexibleContexts #-} -- for xmonad'
|
||||||
{-# LANGUAGE LambdaCase #-}
|
{-# LANGUAGE LambdaCase #-}
|
||||||
{-# LANGUAGE ScopedTypeVariables #-}
|
{-# LANGUAGE ScopedTypeVariables #-}
|
||||||
|
|
||||||
|
|
||||||
module Main where
|
module Main (main) where
|
||||||
|
|
||||||
import System.Exit (exitFailure)
|
import System.Exit (exitFailure)
|
||||||
|
|
||||||
@ -31,7 +18,6 @@ import System.Environment (getArgs, getEnv, getEnvironment, lookupEnv)
|
|||||||
import System.Posix.Process (executeFile)
|
import System.Posix.Process (executeFile)
|
||||||
import XMonad.Actions.DynamicWorkspaces ( addWorkspacePrompt, renameWorkspace
|
import XMonad.Actions.DynamicWorkspaces ( addWorkspacePrompt, renameWorkspace
|
||||||
, removeEmptyWorkspace)
|
, removeEmptyWorkspace)
|
||||||
import XMonad.Actions.GridSelect
|
|
||||||
import XMonad.Actions.CycleWS (toggleWS)
|
import XMonad.Actions.CycleWS (toggleWS)
|
||||||
import XMonad.Layout.NoBorders ( smartBorders )
|
import XMonad.Layout.NoBorders ( smartBorders )
|
||||||
import qualified XMonad.StackSet as W
|
import qualified XMonad.StackSet as W
|
||||||
@ -44,25 +30,21 @@ import XMonad.Hooks.Place (placeHook, smart)
|
|||||||
import XMonad.Actions.PerWorkspaceKeys (chooseAction)
|
import XMonad.Actions.PerWorkspaceKeys (chooseAction)
|
||||||
|
|
||||||
import XMonad.Stockholm.Pager
|
import XMonad.Stockholm.Pager
|
||||||
import XMonad.Stockholm.Rhombus
|
|
||||||
import XMonad.Stockholm.Shutdown
|
import XMonad.Stockholm.Shutdown
|
||||||
|
import qualified Paths
|
||||||
|
|
||||||
|
|
||||||
amixerPath :: FilePath
|
|
||||||
amixerPath = "${pkgs.alsaUtils}/bin/amixer"
|
|
||||||
|
|
||||||
urxvtcPath :: FilePath
|
|
||||||
urxvtcPath = "${pkgs.rxvt_unicode}/bin/urxvtc"
|
|
||||||
|
|
||||||
myFont :: String
|
myFont :: String
|
||||||
myFont = "-schumacher-*-*-*-*-*-*-*-*-*-*-*-iso10646-*"
|
myFont = "-schumacher-*-*-*-*-*-*-*-*-*-*-*-iso10646-*"
|
||||||
|
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = getArgs >>= \case
|
main = getArgs >>= \case
|
||||||
[] -> mainNoArgs
|
[] -> mainNoArgs
|
||||||
["--shutdown"] -> shutdown
|
["--shutdown"] -> shutdown
|
||||||
args -> hPutStrLn stderr ("bad arguments: " <> show args) >> exitFailure
|
args -> hPutStrLn stderr ("bad arguments: " <> show args) >> exitFailure
|
||||||
|
|
||||||
|
|
||||||
mainNoArgs :: IO ()
|
mainNoArgs :: IO ()
|
||||||
mainNoArgs = do
|
mainNoArgs = do
|
||||||
workspaces0 <- getWorkspaces0
|
workspaces0 <- getWorkspaces0
|
||||||
@ -70,7 +52,7 @@ mainNoArgs = do
|
|||||||
xmonad
|
xmonad
|
||||||
$ withUrgencyHook (SpawnUrgencyHook "echo emit Urgency ")
|
$ withUrgencyHook (SpawnUrgencyHook "echo emit Urgency ")
|
||||||
$ def
|
$ def
|
||||||
{ terminal = urxvtcPath
|
{ terminal = Paths.urxvtc
|
||||||
, modMask = mod4Mask
|
, modMask = mod4Mask
|
||||||
, keys = myKeys
|
, keys = myKeys
|
||||||
, workspaces = workspaces0
|
, workspaces = workspaces0
|
||||||
@ -102,6 +84,7 @@ getWorkspaces0 =
|
|||||||
where
|
where
|
||||||
warn msg = hPutStrLn stderr ("getWorkspaces0: " ++ msg) >> return []
|
warn msg = hPutStrLn stderr ("getWorkspaces0: " ++ msg) >> return []
|
||||||
|
|
||||||
|
|
||||||
displaySomeException :: SomeException -> String
|
displaySomeException :: SomeException -> String
|
||||||
displaySomeException = displayException
|
displaySomeException = displayException
|
||||||
|
|
||||||
@ -110,76 +93,52 @@ forkFile :: FilePath -> [String] -> Maybe [(String, String)] -> X ()
|
|||||||
forkFile path args env =
|
forkFile path args env =
|
||||||
xfork (executeFile path False args env) >> return ()
|
xfork (executeFile path False args env) >> return ()
|
||||||
|
|
||||||
|
|
||||||
spawnRootTerm :: X ()
|
spawnRootTerm :: X ()
|
||||||
spawnRootTerm =
|
spawnRootTerm =
|
||||||
forkFile
|
forkFile
|
||||||
urxvtcPath
|
Paths.urxvtc
|
||||||
["-name", "root-urxvt", "-e", "/run/wrappers/bin/su", "-"]
|
["-name", "root-urxvt", "-e", Paths.su, "-"]
|
||||||
Nothing
|
Nothing
|
||||||
|
|
||||||
|
|
||||||
spawnTermAt :: String -> X ()
|
spawnTermAt :: String -> X ()
|
||||||
spawnTermAt ws = do
|
spawnTermAt ws = do
|
||||||
env <- io getEnvironment
|
env <- io getEnvironment
|
||||||
let env' = ("XMONAD_SPAWN_WORKSPACE", ws) : env
|
let env' = ("XMONAD_SPAWN_WORKSPACE", ws) : env
|
||||||
forkFile urxvtcPath [] (Just env')
|
forkFile Paths.urxvtc [] (Just env')
|
||||||
|
|
||||||
|
|
||||||
myKeys :: XConfig Layout -> Map (KeyMask, KeySym) (X ())
|
myKeys :: XConfig Layout -> Map (KeyMask, KeySym) (X ())
|
||||||
myKeys conf = Map.fromList $
|
myKeys conf = Map.fromList $
|
||||||
[ ((_4 , xK_Escape ), forkFile "/run/wrappers/bin/slock" [] Nothing)
|
[ ((_4 , xK_Escape ), forkFile Paths.slock [] Nothing)
|
||||||
, ((_4S , xK_c ), kill)
|
, ((_4S , xK_c ), kill)
|
||||||
|
|
||||||
, ((_4 , xK_o ), forkFile "${pkgs.fzmenu}/bin/otpmenu" [] Nothing)
|
, ((_4 , xK_o ), forkFile Paths.otpmenu [] Nothing)
|
||||||
, ((_4 , xK_p ), forkFile "${pkgs.fzmenu}/bin/passmenu" [] Nothing)
|
, ((_4 , xK_p ), forkFile Paths.passmenu [] Nothing)
|
||||||
|
|
||||||
, ((_4 , xK_x ), chooseAction spawnTermAt)
|
, ((_4 , xK_x ), chooseAction spawnTermAt)
|
||||||
, ((_4C , xK_x ), spawnRootTerm)
|
, ((_4C , xK_x ), spawnRootTerm)
|
||||||
|
|
||||||
--, ((_4 , xK_F1 ), withFocused jojo)
|
|
||||||
--, ((_4 , xK_F1 ), printAllGeometries)
|
|
||||||
|
|
||||||
, ((0 , xK_Menu ), gets windowset >>= allWorkspaceNames >>= pager pagerConfig (windows . W.view) )
|
, ((0 , xK_Menu ), gets windowset >>= allWorkspaceNames >>= pager pagerConfig (windows . W.view) )
|
||||||
, ((_S , xK_Menu ), gets windowset >>= allWorkspaceNames >>= pager pagerConfig (windows . W.shift) )
|
, ((_S , xK_Menu ), gets windowset >>= allWorkspaceNames >>= pager pagerConfig (windows . W.shift) )
|
||||||
, ((_C , xK_Menu ), toggleWS)
|
, ((_C , xK_Menu ), toggleWS)
|
||||||
, ((_4 , xK_Menu ), rhombus horseConfig (liftIO . hPutStrLn stderr) ["Correct", "Horse", "Battery", "Staple", "Stuhl", "Tisch"] )
|
|
||||||
|
|
||||||
-- %! Rotate through the available layout algorithms
|
|
||||||
, ((_4 , xK_space ), sendMessage NextLayout)
|
, ((_4 , xK_space ), sendMessage NextLayout)
|
||||||
, ((_4S , xK_space ), setLayout $ XMonad.layoutHook conf) -- reset layout
|
, ((_4S , xK_space ), setLayout $ XMonad.layoutHook conf) -- reset layout
|
||||||
|
|
||||||
---- BinarySpacePartition
|
|
||||||
--, ((_4 , xK_l), sendMessage $ ExpandTowards R)
|
|
||||||
--, ((_4 , xK_h), sendMessage $ ExpandTowards L)
|
|
||||||
--, ((_4 , xK_j), sendMessage $ ExpandTowards D)
|
|
||||||
--, ((_4 , xK_k), sendMessage $ ExpandTowards U)
|
|
||||||
--, ((_4S , xK_l), sendMessage $ ShrinkFrom R)
|
|
||||||
--, ((_4S , xK_h), sendMessage $ ShrinkFrom L)
|
|
||||||
--, ((_4S , xK_j), sendMessage $ ShrinkFrom D)
|
|
||||||
--, ((_4S , xK_k), sendMessage $ ShrinkFrom U)
|
|
||||||
--, ((_4 , xK_n), sendMessage Rotate)
|
|
||||||
--, ((_4S , xK_n), sendMessage Swap)
|
|
||||||
|
|
||||||
---- mouseResizableTile
|
|
||||||
--, ((_4 , xK_u), sendMessage ShrinkSlave)
|
|
||||||
--, ((_4 , xK_i), sendMessage ExpandSlave)
|
|
||||||
|
|
||||||
-- move focus up or down the window stack
|
|
||||||
--, ((_4 , xK_m ), windows W.focusMaster)
|
|
||||||
, ((_4 , xK_j ), windows W.focusDown)
|
, ((_4 , xK_j ), windows W.focusDown)
|
||||||
, ((_4 , xK_k ), windows W.focusUp)
|
, ((_4 , xK_k ), windows W.focusUp)
|
||||||
|
|
||||||
-- modifying the window order
|
|
||||||
, ((_4S , xK_m ), windows W.swapMaster)
|
, ((_4S , xK_m ), windows W.swapMaster)
|
||||||
, ((_4S , xK_j ), windows W.swapDown)
|
, ((_4S , xK_j ), windows W.swapDown)
|
||||||
, ((_4S , xK_k ), windows W.swapUp)
|
, ((_4S , xK_k ), windows W.swapUp)
|
||||||
|
|
||||||
-- resizing the master/slave ratio
|
, ((_4 , xK_h ), sendMessage Shrink)
|
||||||
, ((_4 , xK_h ), sendMessage Shrink) -- %! Shrink the master area
|
, ((_4 , xK_l ), sendMessage Expand)
|
||||||
, ((_4 , xK_l ), sendMessage Expand) -- %! Expand the master area
|
|
||||||
|
|
||||||
-- floating layer support
|
, ((_4 , xK_t ), withFocused $ windows . W.sink) -- make tiling
|
||||||
, ((_4 , xK_t ), withFocused $ windows . W.sink) -- make tiling
|
|
||||||
|
|
||||||
-- increase or decrease number of windows in the master area
|
|
||||||
, ((_4 , xK_comma ), sendMessage $ IncMasterN 1)
|
, ((_4 , xK_comma ), sendMessage $ IncMasterN 1)
|
||||||
, ((_4 , xK_period ), sendMessage $ IncMasterN (-1))
|
, ((_4 , xK_period ), sendMessage $ IncMasterN (-1))
|
||||||
|
|
||||||
@ -188,13 +147,10 @@ myKeys conf = Map.fromList $
|
|||||||
, ((_4 , xK_Delete ), removeEmptyWorkspace)
|
, ((_4 , xK_Delete ), removeEmptyWorkspace)
|
||||||
|
|
||||||
, ((_4 , xK_Return ), toggleWS)
|
, ((_4 , xK_Return ), toggleWS)
|
||||||
--, (0 , xK_Menu ) & \k -> (k, gridselectWorkspace wsGSConfig { gs_navigate = makeGSNav k } W.view)
|
|
||||||
--, (_4 , xK_v ) & \k -> (k, gridselectWorkspace wsGSConfig { gs_navigate = makeGSNav k } W.view)
|
, ((0, xF86XK_AudioLowerVolume), audioLowerVolume)
|
||||||
--, (_4S , xK_v ) & \k -> (k, gridselectWorkspace wsGSConfig { gs_navigate = makeGSNav k } W.shift)
|
, ((0, xF86XK_AudioRaiseVolume), audioRaiseVolume)
|
||||||
--, (_4 , xK_b ) & \k -> (k, goToSelected wGSConfig { gs_navigate = makeGSNav k })
|
, ((0, xF86XK_AudioMute), audioMute)
|
||||||
, ((noModMask, xF86XK_AudioLowerVolume), amixer ["sset", "Master", "5%-"])
|
|
||||||
, ((noModMask, xF86XK_AudioRaiseVolume), amixer ["sset", "Master", "5%+"])
|
|
||||||
, ((noModMask, xF86XK_AudioMute), amixer ["sset", "Master", "toggle"])
|
|
||||||
]
|
]
|
||||||
where
|
where
|
||||||
_4 = mod4Mask
|
_4 = mod4Mask
|
||||||
@ -207,18 +163,17 @@ myKeys conf = Map.fromList $
|
|||||||
_4CM = _4 .|. _C .|. _M
|
_4CM = _4 .|. _C .|. _M
|
||||||
_4SM = _4 .|. _S .|. _M
|
_4SM = _4 .|. _S .|. _M
|
||||||
|
|
||||||
amixer args = forkFile amixerPath args Nothing
|
pactl args = forkFile Paths.pactl args Nothing
|
||||||
|
audioLowerVolume = pactl ["--", "set-sink-volume", "@DEFAULT_SINK@", "-5%"]
|
||||||
|
audioRaiseVolume = pactl ["--", "set-sink-volume", "@DEFAULT_SINK@", "+5%"]
|
||||||
|
audioMute = pactl ["--", "set-sink-mute", "@DEFAULT_SINK@", "toggle"]
|
||||||
|
|
||||||
|
|
||||||
pagerConfig :: PagerConfig
|
pagerConfig :: PagerConfig
|
||||||
pagerConfig = def
|
pagerConfig = def
|
||||||
{ pc_font = myFont
|
{ pc_font = myFont
|
||||||
, pc_cellwidth = 64
|
, pc_cellwidth = 64
|
||||||
--, pc_cellheight = 36 -- TODO automatically keep screen aspect
|
|
||||||
--, pc_borderwidth = 1
|
|
||||||
--, pc_matchcolor = "#f0b000"
|
|
||||||
, pc_matchmethod = MatchPrefix
|
, pc_matchmethod = MatchPrefix
|
||||||
--, pc_colors = pagerWorkspaceColors
|
|
||||||
, pc_windowColors = windowColors
|
, pc_windowColors = windowColors
|
||||||
}
|
}
|
||||||
where
|
where
|
||||||
@ -229,34 +184,7 @@ pagerConfig = def
|
|||||||
then ("#402020", snd y)
|
then ("#402020", snd y)
|
||||||
else y
|
else y
|
||||||
|
|
||||||
horseConfig :: RhombusConfig
|
|
||||||
horseConfig = def
|
|
||||||
{ rc_font = myFont
|
|
||||||
, rc_cellwidth = 64
|
|
||||||
--, rc_cellheight = 36 -- TODO automatically keep screen aspect
|
|
||||||
--, rc_borderwidth = 1
|
|
||||||
--, rc_matchcolor = "#f0b000"
|
|
||||||
, rc_matchmethod = MatchPrefix
|
|
||||||
--, rc_colors = pagerWorkspaceColors
|
|
||||||
--, rc_paint = myPaint
|
|
||||||
}
|
|
||||||
|
|
||||||
wGSConfig :: GSConfig Window
|
|
||||||
wGSConfig = def
|
|
||||||
{ gs_cellheight = 20
|
|
||||||
, gs_cellwidth = 192
|
|
||||||
, gs_cellpadding = 5
|
|
||||||
, gs_font = myFont
|
|
||||||
, gs_navigate = navNSearch
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
(&) :: a -> (a -> c) -> c
|
|
||||||
(&) = flip ($)
|
|
||||||
|
|
||||||
allWorkspaceNames :: W.StackSet i l a sid sd -> X [i]
|
allWorkspaceNames :: W.StackSet i l a sid sd -> X [i]
|
||||||
allWorkspaceNames ws =
|
allWorkspaceNames ws =
|
||||||
return $ map W.tag (W.hidden ws) ++ [W.tag $ W.workspace $ W.current ws]
|
return $ map W.tag (W.hidden ws) ++ [W.tag $ W.workspace $ W.current ws]
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
25
tv/5pkgs/haskell/xmonad-tv/src/xmonad-tv.cabal
Normal file
25
tv/5pkgs/haskell/xmonad-tv/src/xmonad-tv.cabal
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
name: xmonad-tv
|
||||||
|
version: 1.0.0
|
||||||
|
license: MIT
|
||||||
|
author: tv <tv@krebsco.de>
|
||||||
|
maintainer: tv <tv@krebsco.de>
|
||||||
|
build-type: Simple
|
||||||
|
cabal-version: >=1.10
|
||||||
|
|
||||||
|
executable xmonad
|
||||||
|
main-is: main.hs
|
||||||
|
build-depends:
|
||||||
|
base,
|
||||||
|
containers,
|
||||||
|
directory,
|
||||||
|
extra,
|
||||||
|
unix,
|
||||||
|
X11,
|
||||||
|
xmonad,
|
||||||
|
xmonad-contrib,
|
||||||
|
xmonad-stockholm
|
||||||
|
other-modules:
|
||||||
|
Helpers.Path,
|
||||||
|
Paths
|
||||||
|
default-language: Haskell2010
|
||||||
|
ghc-options: -O2 -Wall -threaded
|
@ -15,10 +15,4 @@ let
|
|||||||
else override;
|
else override;
|
||||||
in
|
in
|
||||||
|
|
||||||
listToAttrs
|
mapNixDir (path: callPackage path {}) ./.
|
||||||
(map
|
|
||||||
(name: nameValuePair (removeSuffix ".nix" name)
|
|
||||||
(callPackage (./. + "/${name}") {}))
|
|
||||||
(filter
|
|
||||||
(name: name != "default.nix" && !hasPrefix "." name)
|
|
||||||
(attrNames (readDir ./.))))
|
|
||||||
|
Loading…
Reference in New Issue
Block a user