system/nix/home.nix

137 lines
2.9 KiB
Nix
Raw Normal View History

2022-04-05 10:03:33 +03:00
{ config, pkgs, ... }:
let
secrets = import ./secrets.nix;
in
{
imports = [
./wm/xmonad.nix
./shell/zsh.nix
./progs/git.nix
./progs/pass.nix
./progs/himalaya.nix
./progs/nvim.nix
./progs/exa.nix
./progs/zoxide.nix
./progs/hledger.nix
];
targets.genericLinux.enable = true;
2022-04-05 10:03:33 +03:00
# Home Manager needs a bit of information about you and the
# paths it should manage.
2022-04-05 11:26:26 +03:00
home.username = secrets.home.name;
home.homeDirectory = secrets.home.dir;
2022-04-05 10:03:33 +03:00
home.keyboard = {
model = "pc105";
layout = "us,ru";
variant = "dvorak,";
options = ["grp:win_space_toggle"];
};
home.packages = with pkgs; [
# TODO: move packages to separate modules
2022-04-05 17:47:31 +03:00
# tools
xh # friendly and fast tool for sending HTTP requests
fd # a simple, fast and user-friendly alternative to find
bat # a cat clone with syntax highlighting and git integration
# haskell
stylish-haskell # formatter
# database
postgresql_12 # 🤷 I need only psql
# browser
librewolf # a fork of firefox, focused on privacy, security and freedom
2022-06-01 17:33:47 +03:00
# TODO: move to specific project
nodePackages.sass
2022-04-05 17:18:23 +03:00
];
# window manager
wm.xmonad.enable = true;
# shell
shell.zsh.enable = true;
# programs
progs = {
git = with secrets.git; {
enable = true;
inherit userName;
inherit userEmail;
2022-06-01 16:48:29 +03:00
gpgKey = gpgSigningKey;
};
# password manager
pass.enable = true;
2022-04-05 10:42:47 +03:00
# email manager
himalaya.enable = true;
2022-04-05 16:40:07 +03:00
# finance manager
hledger.enable = true;
# editor
nvim = {
2022-04-05 16:40:07 +03:00
enable = true;
default = true;
2022-04-05 16:40:07 +03:00
};
# tools
exa.enable = true;
zoxide.enable = true;
2022-04-05 16:40:07 +03:00
};
accounts.email = {
# TODO: add module for email account
accounts = secrets.emailAccounts;
2022-04-05 11:26:26 +03:00
};
# TODO: add module for lock screen
services.screen-locker = {
2022-04-05 17:18:23 +03:00
enable = true;
lockCmd = "/bin/bash -c ${config.home.homeDirectory}/scripts/lock.sh";
inactiveInterval = 15;
2022-04-05 17:18:23 +03:00
};
2022-04-14 16:55:53 +03:00
home.file = {
"scripts" = {
source = ../scripts;
recursive = true;
};
2022-04-14 16:55:53 +03:00
"pictures/wallpapers" = {
source = ../wallpapers;
recursive = true;
};
};
2022-04-14 16:55:53 +03:00
xdg = {
enable = true;
configFile = {
# add config for alacritty terminal
"alacritty/alacritty.yml".source = ../programs/alacritty/alacritty.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;
2022-04-05 10:03:33 +03:00
}