-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhome.nix
142 lines (133 loc) · 3.73 KB
/
home.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
{ config, pkgs, lib, misc, ... }:
let
username = "chloe";
homeDirectory = "/home/${username}";
myHomeManagerFlake = "${homeDirectory}/.dotfiles";
mydotfiles = "${myHomeManagerFlake}/dotfiles";
in
{
programs.home-manager.enable = true;
fonts.fontconfig.enable = true;
home.stateVersion = "24.05";
nixpkgs = {
# Configure your nixpkgs instance
config = {
# Disable if you don't want unfree packages
allowUnfree = true;
# Workaround for https://github.com/nix-community/home-manager/issues/2942
allowUnfreePredicate = (_: true);
};
};
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
".config/home-manager".source = config.lib.file.mkOutOfStoreSymlink myHomeManagerFlake;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
} // (
# This declares an attribute set that describes that each linkName is a
# symlink from ~/${linkName} to ${mydotfiles}/_${linkName}.
# The target path format is arbitrary and merely the convention I chose.
lib.attrsets.mergeAttrsList (lib.lists.map (linkName: {
"${linkName}".source = config.lib.file.mkOutOfStoreSymlink "${mydotfiles}/_${linkName}";
}) [
# Thus, these symlinks point to targets outside of the nix store
# and therefore both writable and tracked by this flake's version control
".bin"
".gitconfig"
".gitignore"
".config/distrobox"
".config/emacs"
".config/fish"
".config/redshift"
".config/starship.toml"
]));
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. These will be explicitly sourced when using a
# shell provided by Home Manager. If you don't want to manage your shell
# through Home Manager then you have to manually source 'hm-session-vars.sh'
# located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/chloe/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
EDITOR = "lvim";
VISUAL = "codium";
PAGER = "bat";
XDG_DATA_DIRS = "${homeDirectory}:$XDG_DATA_DIRS";
};
# packages are just installed (no configuration applied)
# programs are installed and configuration applied to dotfiles
home.packages = [
pkgs.asciinema
pkgs.bash
pkgs.bashInteractive
pkgs.bat
pkgs.bitwarden
pkgs.btop
pkgs.emacs
pkgs.eza
pkgs.firefox
pkgs.fish
pkgs.fjo
pkgs.fnm
pkgs.font-awesome
pkgs.fzf
pkgs.gh
pkgs.git
pkgs.git-stack
pkgs.glab
pkgs.gparted
pkgs.helix
pkgs.htop
pkgs.jq
pkgs.jujutsu
pkgs.just
pkgs.lazygit
pkgs.legcord
pkgs.libreoffice
pkgs.mdcat
pkgs.nautilus
pkgs.neofetch
pkgs.neovim
pkgs.nerdfix
pkgs.nerd-fonts.fira-code
pkgs.nh
pkgs.obsidian
pkgs.powerline-fonts
pkgs.powerline-rs
pkgs.powerline-symbols
pkgs.qflipper
pkgs.redshift
pkgs.ripgrep
pkgs.rustup
pkgs.shellcheck
pkgs.starship
pkgs.syncthing
pkgs.taskwarrior3
pkgs.thefuck
pkgs.tmsu
pkgs.ungoogled-chromium
pkgs.uutils-coreutils-noprefix
pkgs.ventoy-full
pkgs.vlc
pkgs.vscodium
pkgs.wofi
pkgs.zsh
#(pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; })
];
}