Add initial installer
This commit is contained in:
130
home-manager/modules/common.nix
Normal file
130
home-manager/modules/common.nix
Normal file
@@ -0,0 +1,130 @@
|
||||
{ lib, pkgs, pkgs', inputs, config, ... }@args:
|
||||
let
|
||||
inherit (lib) optionalAttrs versionAtLeast mkMerge mkIf mkDefault mkOption;
|
||||
inherit (lib.my) mkOpt' dummyOption;
|
||||
in
|
||||
{
|
||||
options = with lib.types; {
|
||||
my = {
|
||||
isStandalone = mkOption {
|
||||
type = bool;
|
||||
internal = true;
|
||||
description = "Whether home-manager is running inside a NixOS system or not.";
|
||||
};
|
||||
};
|
||||
|
||||
# Only present in >=22.05, so forward declare
|
||||
nix.registry = dummyOption;
|
||||
};
|
||||
config = mkMerge [
|
||||
(mkIf (versionAtLeast config.home.stateVersion "22.05") {
|
||||
nix.registry = {
|
||||
pkgs = {
|
||||
to = {
|
||||
type = "path";
|
||||
path = toString pkgs.path;
|
||||
};
|
||||
exact = true;
|
||||
};
|
||||
};
|
||||
})
|
||||
{
|
||||
my.isStandalone = !(args ? osConfig);
|
||||
|
||||
programs = {
|
||||
# Even when enabled this will only be actually installed in standalone mode
|
||||
# Note: `home-manager.path` is for telling home-manager is installed and setting it in NIX_PATH, which we should
|
||||
# never care about.
|
||||
home-manager.enable = true;
|
||||
|
||||
lsd = {
|
||||
enable = mkDefault true;
|
||||
enableAliases = mkDefault true;
|
||||
};
|
||||
|
||||
starship = {
|
||||
enable = mkDefault true;
|
||||
settings = {
|
||||
aws.disabled = true;
|
||||
};
|
||||
};
|
||||
|
||||
bash = {
|
||||
# This not only installs bash but has home-manager control .bashrc and friends
|
||||
enable = mkDefault true;
|
||||
initExtra =
|
||||
''
|
||||
flake-src() {
|
||||
cd "$(nix eval "''${@:2}" --impure --raw --expr "builtins.getFlake \"$1\"")"
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
direnv = {
|
||||
enable = mkDefault true;
|
||||
nix-direnv.enable = true;
|
||||
stdlib =
|
||||
''
|
||||
# addition to nix-direnv's use_nix that registers outputs as gc roots (as well as the .drv)
|
||||
use_nix_outputs() {
|
||||
local layout_dir drv deps
|
||||
layout_dir="$(direnv_layout_dir)"
|
||||
drv="$layout_dir/drv"
|
||||
deps="$layout_dir/deps"
|
||||
|
||||
if [ ! -e "$deps" ] || (( "$(stat --format=%Z "$drv")" > "$(stat --format=%Z "$deps")" )); then
|
||||
rm -rf "$deps"
|
||||
mkdir -p "$deps"
|
||||
nix-store --indirect --add-root "$deps/out" --realise $(nix-store --query --references "$drv") > /dev/null
|
||||
log_status renewed outputs gc roots
|
||||
fi
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
htop = {
|
||||
enable = true;
|
||||
settings = {};
|
||||
};
|
||||
};
|
||||
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
tree
|
||||
iperf3
|
||||
];
|
||||
|
||||
sessionVariables = {
|
||||
EDITOR = "vim";
|
||||
};
|
||||
shellAliases = {
|
||||
hm = "home-manager";
|
||||
};
|
||||
|
||||
language.base = mkDefault "en_IE.UTF-8";
|
||||
};
|
||||
}
|
||||
(mkIf (config.my.isStandalone || !args.osConfig.home-manager.useGlobalPkgs) {
|
||||
# Note: If globalPkgs mode is on, then these will be overridden by the NixOS equivalents of these options
|
||||
nixpkgs = {
|
||||
overlays = [
|
||||
(final: prev: { nix = inputs.nix.defaultPackage.${config.nixpkgs.system}; })
|
||||
# TODO: Wait for https://github.com/NixOS/nixpkgs/pull/159074 to arrive to nixos-unstable
|
||||
(final: prev: { remarshal = pkgs'.master.remarshal; })
|
||||
];
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
};
|
||||
};
|
||||
})
|
||||
(mkIf config.my.isStandalone {
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
nix
|
||||
];
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
24
home-manager/modules/gui.nix
Normal file
24
home-manager/modules/gui.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{ lib, pkgs, config, ... }:
|
||||
let
|
||||
inherit (lib) mkIf mkDefault mkMerge;
|
||||
inherit (lib.my) mkBoolOpt';
|
||||
|
||||
cfg = config.my.gui;
|
||||
in
|
||||
{
|
||||
options.my.gui = {
|
||||
enable = mkBoolOpt' true "Enable settings and packages meant for graphical systems";
|
||||
};
|
||||
|
||||
config = mkMerge [
|
||||
(mkIf cfg.enable {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
(nerdfonts.override {
|
||||
fonts = [ "DroidSansMono" "SourceCodePro" ];
|
||||
})
|
||||
];
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
Reference in New Issue
Block a user