dotfiles/nix-conf/home-manager/home.nix

93 lines
3.0 KiB
Nix
Raw Normal View History

# This is a nix module, with an additional wrapper from home-manager
# myHome, myLib is injected from extraSpecialArgs in flake.nix
# This file represents the base settings for each machine
# Additional configurations goes to profiles/<user>
# or inlined in flake.nix
{ config # Represents the realized final configuration
, pkgs # This is by default just ``= import <nixpkgs>{}`
2022-11-09 11:35:28 +00:00
, myHome
2022-12-08 21:00:53 +00:00
, myLib
, option # The options we're given, this might be useful for typesafety?
2022-11-09 11:35:28 +00:00
, ...
}:
2022-12-03 06:43:44 +00:00
let
nvim_pkgs = [
# Yes, I desperately want neovim to work out-of-the-box without flake.nix for now
# I want at least python LSP to work everywhere because it's basically
# an alternative to bash script when I move to OpenColo
pkgs.gccStdenv
pkgs.gcc
pkgs.tree-sitter
pkgs.ripgrep
pkgs.fzf
# pkgs.sumneko-lua-language-server
pkgs.ripgrep
pkgs.zk
pkgs.fd
pkgs.stdenv.cc.cc.lib
# Python3 as alternative to bash scripts :^)
# (pkgs.python310Full.withPackages (pypkgs: [
# # python-lsp-server's dependencies is absolutely astronomous
# # pypkgs.python-lsp-server # python-lsp. Now we'll have to tell mason to look for this
# pypkgs.pynvim # nvim provider
2022-12-03 10:08:54 +00:00
# pypkgs.ujson # pylsp seems to rely on this. satisfy it lol
2022-12-03 06:43:44 +00:00
# ]))
];
proj_root = builtins.toString ./../..;
2022-12-08 21:00:53 +00:00
inherit (myLib) fromYaml;
2022-12-03 06:43:44 +00:00
in
2022-11-06 20:23:10 +00:00
{
home = {
username = myHome.username;
homeDirectory = myHome.homeDirectory;
stateVersion = myHome.stateVersion or "22.05";
};
home.packages = pkgs.lib.unique ([
2022-12-01 02:17:06 +00:00
pkgs.ncdu
2022-11-09 11:35:28 +00:00
pkgs.htop
pkgs.ripgrep
pkgs.unzip
2022-11-25 23:45:08 +00:00
# pkgs.nodejs-18_x
# cool utilities
pkgs.yq # Yaml adaptor for jq (only pretty print, little query)
pkgs.xorg.xclock # TODO: only include if have GL # For testing GL installation
pkgs.logseq # TODO: only include if have GL # Obsidian alt
pkgs.mosh # Parsec for SSH
pkgs.nixops_unstable # nixops v2
pkgs.lynx # Web browser at your local terminal
# pkgs.tailscale # VPC;; This should be installed in system-nix
2022-12-01 02:17:06 +00:00
pkgs.python310 # dev packages should be in jk
2022-11-09 15:35:44 +00:00
# pkgs.python310.numpy
# pkgs.python310Packages.tensorflow
# pkgs.python310Packages.scikit-learn
] ++ (myHome.packages or [ ]) ++ nvim_pkgs);
2022-11-06 20:23:10 +00:00
2022-11-06 22:22:09 +00:00
## Configs ##
xdg.configFile."nvim/init.lua".source = "${proj_root}//neovim/init.lua";
xdg.configFile."zk/config.toml".source = "${proj_root}//zk/config.toml";
2022-11-06 22:22:09 +00:00
## Programs ##
2022-11-09 13:00:23 +00:00
programs.jq = {
enable = true;
};
2022-12-01 02:17:06 +00:00
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
withPython3 = true;
withNodeJs = true;
2022-12-03 10:08:54 +00:00
extraPackages = nvim_pkgs;
2022-12-01 08:18:39 +00:00
# extraPython3Packages = (pypkgs: [
2022-12-03 10:08:54 +00:00
# # pypkgs.python-lsp-server
2022-12-01 08:18:39 +00:00
# pypkgs.ujson
# ]);
2022-12-01 02:17:06 +00:00
# I use vim-plug, so I probably don't require packaging
# extraConfig actually writes to init-home-manager.vim (not lua)
# https://github.com/nix-community/home-manager/pull/3287
2022-12-03 06:43:44 +00:00
# extraConfig = builtins.readFile "${proj_root}/neovim/init.lua";
2022-12-01 02:17:06 +00:00
};
2022-11-06 20:23:10 +00:00
}