packages: address a TODO by moving extra stuff into home-manager
This commit is contained in:
18
modules/universal/env/home-manager.nix
vendored
18
modules/universal/env/home-manager.nix
vendored
@@ -10,6 +10,10 @@ with lib;
|
|||||||
let
|
let
|
||||||
cfg = config.sane.home-manager;
|
cfg = config.sane.home-manager;
|
||||||
vim-swap-dir = ".cache/vim-swap";
|
vim-swap-dir = ".cache/vim-swap";
|
||||||
|
# extract package from `extraPackages`
|
||||||
|
pkglist = pkgspec: builtins.map (e: e.pkg or e) pkgspec;
|
||||||
|
# extract `dir` from `extraPackages`
|
||||||
|
dirlist = pkgspec: builtins.concatLists (builtins.map (e: if e ? "dir" then [ e.dir ] else []) pkgspec);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
@@ -19,7 +23,9 @@ in
|
|||||||
};
|
};
|
||||||
sane.home-manager.extraPackages = mkOption {
|
sane.home-manager.extraPackages = mkOption {
|
||||||
default = [ ];
|
default = [ ];
|
||||||
type = types.listOf types.package;
|
# each entry can be either a package, or attrs:
|
||||||
|
# { pkg = package; dir = optional string;
|
||||||
|
type = types.listOf (types.either types.package types.attrs);
|
||||||
};
|
};
|
||||||
# attributes to copy directly to home-manager's `wayland.windowManager` option
|
# attributes to copy directly to home-manager's `wayland.windowManager` option
|
||||||
sane.home-manager.windowManager = mkOption {
|
sane.home-manager.windowManager = mkOption {
|
||||||
@@ -51,7 +57,7 @@ in
|
|||||||
"Pictures"
|
"Pictures"
|
||||||
"Videos"
|
"Videos"
|
||||||
vim-swap-dir
|
vim-swap-dir
|
||||||
];
|
] ++ (dirlist cfg.extraPackages);
|
||||||
|
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
@@ -59,6 +65,10 @@ in
|
|||||||
# XXX this weird rename + closure is to get home-manager's `config.lib.file` to exist.
|
# XXX this weird rename + closure is to get home-manager's `config.lib.file` to exist.
|
||||||
# see: https://github.com/nix-community/home-manager/issues/589#issuecomment-950474105
|
# see: https://github.com/nix-community/home-manager/issues/589#issuecomment-950474105
|
||||||
home-manager.users.colin = let sysconfig = config; in { config, ... }: {
|
home-manager.users.colin = let sysconfig = config; in { config, ... }: {
|
||||||
|
|
||||||
|
home.packages = pkglist cfg.extraPackages;
|
||||||
|
wayland.windowManager = cfg.windowManager;
|
||||||
|
|
||||||
home.stateVersion = "21.11";
|
home.stateVersion = "21.11";
|
||||||
home.username = "colin";
|
home.username = "colin";
|
||||||
home.homeDirectory = "/home/colin";
|
home.homeDirectory = "/home/colin";
|
||||||
@@ -286,10 +296,6 @@ in
|
|||||||
"cd.." = "cd ..";
|
"cd.." = "cd ..";
|
||||||
"cd../" = "cd ../";
|
"cd../" = "cd ../";
|
||||||
};
|
};
|
||||||
|
|
||||||
wayland.windowManager = cfg.windowManager;
|
|
||||||
|
|
||||||
home.packages = cfg.extraPackages;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
7
modules/universal/env/home-packages.nix
vendored
7
modules/universal/env/home-packages.nix
vendored
@@ -104,9 +104,6 @@ let
|
|||||||
# zcash coins. safe to delete, just slow to regenerate (10-60 minutes)
|
# zcash coins. safe to delete, just slow to regenerate (10-60 minutes)
|
||||||
{ pkg = zecwallet-lite; dir = ".zcash"; }
|
{ pkg = zecwallet-lite; dir = ".zcash"; }
|
||||||
] else []);
|
] else []);
|
||||||
|
|
||||||
pkglist = builtins.map (e: e.pkg or e) pkgspec;
|
|
||||||
dirlist = builtins.concatLists (builtins.map (e: if e ? "dir" then [ e.dir ] else []) pkgspec);
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# useful devtools:
|
# useful devtools:
|
||||||
@@ -120,7 +117,5 @@ in
|
|||||||
# mix2nix
|
# mix2nix
|
||||||
# rustup
|
# rustup
|
||||||
# swig
|
# swig
|
||||||
sane.home-manager.extraPackages = pkglist;
|
sane.home-manager.extraPackages = pkgspec;
|
||||||
# TODO: this should be gated behind home-manager being enabled...
|
|
||||||
sane.impermanence.home-dirs = dirlist;
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user