refac(nix): organize nix config with modules
This commit is contained in:
parent
46d9a0c039
commit
0176ec8edc
11 changed files with 381 additions and 163 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -4,6 +4,9 @@
|
||||||
|
|
||||||
!/nix
|
!/nix
|
||||||
/nix/*
|
/nix/*
|
||||||
|
!/nix/wm
|
||||||
|
!/nix/shell
|
||||||
|
!/nix/progs
|
||||||
!/nix/home.nix
|
!/nix/home.nix
|
||||||
!/nix/*.example.nix
|
!/nix/*.example.nix
|
||||||
|
|
||||||
|
|
214
nix/home.nix
214
nix/home.nix
|
@ -4,16 +4,15 @@ let
|
||||||
secrets = import ./secrets.nix;
|
secrets = import ./secrets.nix;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
nixpkgs.overlays = [
|
imports = [
|
||||||
(self: super: {
|
./wm/xmonad.nix
|
||||||
haskellPackages = super.haskellPackages.override {
|
./shell/zsh.nix
|
||||||
overrides = hself: hsuper: {
|
./progs/git.nix
|
||||||
xmonad = hsuper.xmonad_0_17_0;
|
./progs/pass.nix
|
||||||
xmonad-contrib = hsuper.xmonad-contrib_0_17_0;
|
./progs/himalaya.nix
|
||||||
xmonad-extras = hsuper.xmonad-extras_0_17_0;
|
./progs/nvim.nix
|
||||||
};
|
./progs/exa.nix
|
||||||
};
|
./progs/zoxide.nix
|
||||||
})
|
|
||||||
];
|
];
|
||||||
|
|
||||||
targets.genericLinux.enable = true;
|
targets.genericLinux.enable = true;
|
||||||
|
@ -30,27 +29,13 @@ in
|
||||||
options = ["grp:win_space_toggle"];
|
options = ["grp:win_space_toggle"];
|
||||||
};
|
};
|
||||||
|
|
||||||
# This value determines the Home Manager release that your
|
|
||||||
# configuration is compatible with. This helps avoid breakage
|
|
||||||
# when a new Home Manager release introduces backwards
|
|
||||||
# incompatible changes.
|
|
||||||
#
|
|
||||||
# You can update Home Manager without changing this value. See
|
|
||||||
# the Home Manager release notes for a list of state version
|
|
||||||
# changes in each release.
|
|
||||||
home.stateVersion = "21.11";
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# system
|
# TODO: move packages to separate modules
|
||||||
xclip # access x clipboard from a console
|
|
||||||
dmenu # menu for x window system
|
|
||||||
flameshot # powerful yet simple to use screenshot software
|
|
||||||
|
|
||||||
# tools
|
# tools
|
||||||
xh # friendly and fast tool for sending HTTP requests
|
xh # friendly and fast tool for sending HTTP requests
|
||||||
fd # a simple, fast and user-friendly alternative to find
|
fd # a simple, fast and user-friendly alternative to find
|
||||||
bat # a cat clone with syntax highlighting and git integration
|
bat # a cat clone with syntax highlighting and git integration
|
||||||
pass # cli password manager
|
|
||||||
|
|
||||||
# haskell
|
# haskell
|
||||||
stylish-haskell # formatter
|
stylish-haskell # formatter
|
||||||
|
@ -62,38 +47,43 @@ in
|
||||||
librewolf # a fork of firefox, focused on privacy, security and freedom
|
librewolf # a fork of firefox, focused on privacy, security and freedom
|
||||||
];
|
];
|
||||||
|
|
||||||
home.sessionVariables =
|
# window manager
|
||||||
let
|
wm.xmonad.enable = true;
|
||||||
pass_data_dir = "${config.home.sessionVariables.XDG_DATA_HOME}/pass";
|
|
||||||
in
|
# shell
|
||||||
{
|
shell.zsh.enable = true;
|
||||||
EDITOR = "nvim";
|
|
||||||
# for 'pass' tool
|
# programs
|
||||||
PASSWORD_STORE_DIR = "${pass_data_dir}/store";
|
progs = {
|
||||||
PASSWORD_STORE_EXTENSIONS_DIR = "${pass_data_dir}/extensions";
|
git = with secrets.git; {
|
||||||
|
enable = true;
|
||||||
|
inherit userName;
|
||||||
|
inherit userEmail;
|
||||||
|
};
|
||||||
|
|
||||||
|
# password manager
|
||||||
|
pass.enable = true;
|
||||||
|
|
||||||
|
# email manager
|
||||||
|
himalaya.enable = true;
|
||||||
|
|
||||||
|
# editor
|
||||||
|
nvim = {
|
||||||
|
enable = true;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# tools
|
||||||
|
exa.enable = true;
|
||||||
|
zoxide.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
accounts.email = {
|
accounts.email = {
|
||||||
|
# TODO: add module for email account
|
||||||
accounts = secrets.emailAccounts;
|
accounts = secrets.emailAccounts;
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.himalaya = {
|
# TODO: add module for lock screen
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
default-page-size = 10;
|
|
||||||
downloads-dir = "${config.home.homeDirectory}/downloads/email";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xsession = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
windowManager.xmonad = {
|
|
||||||
enable = true;
|
|
||||||
enableContribAndExtras = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.screen-locker = {
|
services.screen-locker = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
@ -102,112 +92,6 @@ in
|
||||||
inactiveInterval = 5;
|
inactiveInterval = 5;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.gpg-agent.enable = true;
|
|
||||||
|
|
||||||
# Let Home Manager install and manage itself.
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
|
|
||||||
# used for pass
|
|
||||||
programs.gpg.enable = true;
|
|
||||||
|
|
||||||
# enable z shell
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
enableAutosuggestions = true;
|
|
||||||
defaultKeymap = "viins";
|
|
||||||
dotDir = ".config/zsh";
|
|
||||||
|
|
||||||
history = {
|
|
||||||
path = "${config.xdg.dataHome}/zsh/zsh_history";
|
|
||||||
expireDuplicatesFirst = true;
|
|
||||||
ignorePatterns = [
|
|
||||||
"rm *"
|
|
||||||
"kill *"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
oh-my-zsh = {
|
|
||||||
enable = true;
|
|
||||||
theme = "robbyrussell";
|
|
||||||
};
|
|
||||||
|
|
||||||
initExtraFirst = ''
|
|
||||||
# nix
|
|
||||||
if [ -e $HOME/.nix-profile/etc/profile.d/nix.sh ]; then
|
|
||||||
source $HOME/.nix-profile/etc/profile.d/nix.sh;
|
|
||||||
fi
|
|
||||||
|
|
||||||
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
|
||||||
|
|
||||||
export NIX_PATH=$HOME/.nix-defexpr/channels''${NIX_PATH:+:$NIX_PATH}
|
|
||||||
|
|
||||||
# ghcup
|
|
||||||
if [ -f "$HOME/.ghcup/env" ]; then
|
|
||||||
source "$HOME/.ghcup/env"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
shellAliases =
|
|
||||||
let
|
|
||||||
exa = "${pkgs.exa}/bin/exa";
|
|
||||||
in {
|
|
||||||
# exa
|
|
||||||
ls = "${exa} -1";
|
|
||||||
ll = "${exa} -l";
|
|
||||||
lt = "${exa} --tree";
|
|
||||||
# nvim
|
|
||||||
vi = "nvim";
|
|
||||||
vim = "nvim";
|
|
||||||
# himalaya
|
|
||||||
himp = "himalaya -a personal";
|
|
||||||
himf = "himalaya -a family";
|
|
||||||
himw = "himalaya -a work";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# enable git VCS
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
userName = secrets.git.name;
|
|
||||||
userEmail = secrets.git.email;
|
|
||||||
extraConfig = {
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
pull.rebase = true;
|
|
||||||
};
|
|
||||||
aliases = {
|
|
||||||
co = "checkout";
|
|
||||||
cob = "checkout -b";
|
|
||||||
cobf = "checkout -B";
|
|
||||||
st = "status -sb";
|
|
||||||
d = "diff";
|
|
||||||
dc = "diff --cached";
|
|
||||||
aa = "add .";
|
|
||||||
ai = "add -i";
|
|
||||||
c = "commit";
|
|
||||||
cm = "commit -m";
|
|
||||||
ca = "commit --amend";
|
|
||||||
cam = "commit --amend -m";
|
|
||||||
can = "commit --amend --no-edit";
|
|
||||||
p = "push";
|
|
||||||
po = "push origin";
|
|
||||||
pf = "push --force-with-lease";
|
|
||||||
pfo = "push --force-with-lease origin";
|
|
||||||
pl = "pull";
|
|
||||||
plo = "pull origin";
|
|
||||||
rb = "rebase";
|
|
||||||
rbi = "rebase -i";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# replacement for 'ls' written in rust
|
|
||||||
programs.exa.enable = true;
|
|
||||||
|
|
||||||
# a fast cd command that learns your habbits
|
|
||||||
programs.zoxide = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
"scripts" = {
|
"scripts" = {
|
||||||
source = ../scripts;
|
source = ../scripts;
|
||||||
|
@ -226,11 +110,19 @@ in
|
||||||
# add config for alacritty terminal
|
# add config for alacritty terminal
|
||||||
"alacritty/alacritty.yml".source = ../programs/alacritty/alacritty.yml;
|
"alacritty/alacritty.yml".source = ../programs/alacritty/alacritty.yml;
|
||||||
|
|
||||||
# add config for xmonad window manager
|
|
||||||
# "xmonad/xmonad.hs".source = ../programs/xmonad/xmonad.hs;
|
|
||||||
# "xmobar/xmobar.hs".source = ../programs/xmonad/xmobar.hs;
|
|
||||||
|
|
||||||
"stylish-haskell/config.yaml".source = ../programs/stylish-haskell/config.yml;
|
"stylish-haskell/config.yaml".source = ../programs/stylish-haskell/config.yml;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# This value determines the Home Manager release that your
|
||||||
|
# configuration is compatible with. This helps avoid breakage
|
||||||
|
# when a new Home Manager release introduces backwards
|
||||||
|
# incompatible changes.
|
||||||
|
#
|
||||||
|
# You can update Home Manager without changing this value. See
|
||||||
|
# the Home Manager release notes for a list of state version
|
||||||
|
# changes in each release.
|
||||||
|
home.stateVersion = "21.11";
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
}
|
}
|
||||||
|
|
28
nix/progs/exa.nix
Normal file
28
nix/progs/exa.nix
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.progs.exa;
|
||||||
|
bin = "${pkgs.exa}/bin/exa";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.progs.exa = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Add and configure exa, a modern replacement for ls";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.exa.enable = true;
|
||||||
|
|
||||||
|
programs.zsh.shellAliases = mkIf config.shell.zsh.enable {
|
||||||
|
ls = "${bin} -1";
|
||||||
|
ll = "${bin} -l";
|
||||||
|
lt = "${bin} --tree";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
61
nix/progs/git.nix
Normal file
61
nix/progs/git.nix
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.progs.git;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.progs.git = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Add git with my personal settings";
|
||||||
|
};
|
||||||
|
|
||||||
|
userName = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = "Set your global name";
|
||||||
|
};
|
||||||
|
|
||||||
|
userEmail = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = "Set your global email";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = cfg.userName;
|
||||||
|
userEmail = cfg.userEmail;
|
||||||
|
extraConfig = {
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
pull.rebase = true;
|
||||||
|
};
|
||||||
|
aliases = {
|
||||||
|
co = "checkout";
|
||||||
|
cob = "checkout -b";
|
||||||
|
cobf = "checkout -B";
|
||||||
|
st = "status -sb";
|
||||||
|
d = "diff";
|
||||||
|
dc = "diff --cached";
|
||||||
|
aa = "add .";
|
||||||
|
ai = "add -i";
|
||||||
|
c = "commit";
|
||||||
|
cm = "commit -m";
|
||||||
|
ca = "commit --amend";
|
||||||
|
cam = "commit --amend -m";
|
||||||
|
can = "commit --amend --no-edit";
|
||||||
|
p = "push";
|
||||||
|
po = "push origin";
|
||||||
|
pf = "push --force-with-lease";
|
||||||
|
pfo = "push --force-with-lease origin";
|
||||||
|
pl = "pull";
|
||||||
|
plo = "pull origin";
|
||||||
|
rb = "rebase";
|
||||||
|
rbi = "rebase -i";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
35
nix/progs/himalaya.nix
Normal file
35
nix/progs/himalaya.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.progs.himalaya;
|
||||||
|
bin = "${pkgs.himalaya}/bin/exa";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.progs.himalaya = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Add himalaya with my personal configuration";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.himalaya = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default-page-size = 10;
|
||||||
|
downloads-dir = "${config.home.homeDirectory}/downloads/email";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh.shellAliases = mkIf config.shell.zsh.enable {
|
||||||
|
him = bin;
|
||||||
|
himp = "${bin} -a personal";
|
||||||
|
himf = "${bin} -a family";
|
||||||
|
himw = "${bin} -a work";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
37
nix/progs/nvim.nix
Normal file
37
nix/progs/nvim.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.progs.nvim;
|
||||||
|
bin = "nvim";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.progs.nvim = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Add and configure exa, a modern replacement for ls";
|
||||||
|
};
|
||||||
|
|
||||||
|
default = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Set neovim as default editor";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
# TODO: install and configure neovim from home-manager
|
||||||
|
|
||||||
|
home.sessionVariables = mkIf cfg.default {
|
||||||
|
EDITOR = bin;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh.shellAliases = mkIf config.shell.zsh.enable {
|
||||||
|
vi = bin;
|
||||||
|
vim = bin;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
31
nix/progs/pass.nix
Normal file
31
nix/progs/pass.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.progs.pass;
|
||||||
|
pass_data_dir = "${config.home.sessionVariables.XDG_DATA_HOME}/pass";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.progs.pass = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Add and configure pass tool to manager your passwords";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = [pkgs.pass];
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
PASSWORD_STORE_DIR = "${pass_data_dir}/store";
|
||||||
|
PASSWORD_STORE_EXTENSIONS_DIR = "${pass_data_dir}/extensions";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.gpg.enable = true;
|
||||||
|
|
||||||
|
services.gpg-agent.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
24
nix/progs/zoxide.nix
Normal file
24
nix/progs/zoxide.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.progs.zoxide;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.progs.zoxide = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Add zoxide, a modern replacement for cd";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = config.shell.zsh.enable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
git = {
|
git = {
|
||||||
name = "Bob Ross";
|
userName = "Bob Ross";
|
||||||
email = "bross@example.com";
|
userEmail = "bross@example.com";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
56
nix/shell/zsh.nix
Normal file
56
nix/shell/zsh.nix
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.shell.zsh;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.shell.zsh = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Add z shell";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableAutosuggestions = true;
|
||||||
|
defaultKeymap = "viins";
|
||||||
|
dotDir = ".config/zsh";
|
||||||
|
|
||||||
|
history = {
|
||||||
|
path = "${config.xdg.dataHome}/zsh/zsh_history";
|
||||||
|
expireDuplicatesFirst = true;
|
||||||
|
ignorePatterns = [
|
||||||
|
"rm *"
|
||||||
|
"kill *"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
oh-my-zsh = {
|
||||||
|
enable = true;
|
||||||
|
theme = "robbyrussell";
|
||||||
|
};
|
||||||
|
|
||||||
|
initExtraFirst = ''
|
||||||
|
# nix
|
||||||
|
if [ -e $HOME/.nix-profile/etc/profile.d/nix.sh ]; then
|
||||||
|
source $HOME/.nix-profile/etc/profile.d/nix.sh;
|
||||||
|
fi
|
||||||
|
|
||||||
|
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
|
||||||
|
export NIX_PATH=$HOME/.nix-defexpr/channels''${NIX_PATH:+:$NIX_PATH}
|
||||||
|
|
||||||
|
# ghcup
|
||||||
|
if [ -f "$HOME/.ghcup/env" ]; then
|
||||||
|
source "$HOME/.ghcup/env"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
51
nix/wm/xmonad.nix
Normal file
51
nix/wm/xmonad.nix
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
{ lib, config, pkgs, ...}:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.wm.xmonad;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.wm.xmonad = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Enable xsessions and xmonad window manager";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
haskellPackages = super.haskellPackages.override {
|
||||||
|
overrides = hself: hsuper: {
|
||||||
|
xmonad = hsuper.xmonad_0_17_0;
|
||||||
|
xmonad-contrib = hsuper.xmonad-contrib_0_17_0;
|
||||||
|
xmonad-extras = hsuper.xmonad-extras_0_17_0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
xclip # access x clipboard from a console
|
||||||
|
dmenu # menu for x window system
|
||||||
|
flameshot # powerful yet simple to use screenshot software
|
||||||
|
];
|
||||||
|
|
||||||
|
xsession = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
windowManager.xmonad = {
|
||||||
|
enable = true;
|
||||||
|
enableContribAndExtras = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile = {
|
||||||
|
# add config for xmonad window manager
|
||||||
|
# "xmonad/xmonad.hs".source = ../programs/xmonad/xmonad.hs;
|
||||||
|
# "xmobar/xmobar.hs".source = ../programs/xmonad/xmobar.hs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue