Browse Source

Use home-manager to build home packages and configs

main
Leonora Tindall 2 years ago
parent
commit
e97e91be5d
  1. 9
      .gitmodules
  2. 1
      .ignore
  3. 28
      common/common.nix
  4. 17
      common/default.nix
  5. 20
      common/home_manager/common.nix
  6. 15
      common/home_manager/communication.nix
  7. 10
      common/home_manager/desktop.nix
  8. 16
      common/home_manager/graphical.nix
  9. 8
      common/home_manager/python.nix
  10. 9
      common/home_manager/rust.nix
  11. 20
      common/home_manager/terminal.nix
  12. 6
      common/packagesets/desktop.nix
  13. 44
      common/packagesets/packages.nix
  14. 3
      common/users/default.nix
  15. 1
      external/home-manager
  16. 1
      external/nixos-hardware
  17. 1
      external/nixpkgs
  18. 13
      hosts/calembel/configuration.nix
  19. 12
      hosts/calembel/home.nix
  20. 6
      ops/home/network.nix

9
.gitmodules

@ -0,0 +1,9 @@
[submodule "external/nixos-hardware"]
path = external/nixos-hardware
url = git@github.com:NixOS/nixos-hardware.git
[submodule "external/nixpkgs"]
path = external/nixpkgs
url = git@github.com:NixOS/nixpkgs.git
[submodule "external/home-manager"]
path = external/home-manager
url = git@github.com:nix-community/home-manager.git

1
.ignore

@ -0,0 +1 @@
external/

28
common/common.nix

@ -0,0 +1,28 @@
# Common options for all hosts.
{ config, pkgs, ... }:
{
imports = [
./users
];
boot.cleanTmpDir = true;
nix.autoOptimiseStore = true;
nixpkgs.config.allowUnfree = true;
services.journald.extraConfig = ''
SystemMaxUse=100M
MaxFileSec=7day
'';
fonts.fonts = with pkgs; [
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
(nerdfonts.override { fonts = ["FiraCode" "DroidSansMono"]; })
];
i18n.defaultLocale = "en_US.UTF-8";
}

17
common/default.nix

@ -4,20 +4,7 @@
{
imports = [
./users
./common.nix
../external/home-manager/nixos
];
boot.cleanTmpDir = true;
# Automatically optimize the Nix store to save space
# by hard-linking identical files together.
# These savings add up.
nix.autoOptimiseStore = true;
# Limit the systemd journal to 100 MB of disk or the
# last 7 days of logs, whichever happens first.
services.journald.extraConfig = ''
SystemMaxUse=100M
MaxFileSec=7day
'';
}

20
common/home_manager/common.nix

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
home-manager.useGlobalPkgs = true;
home-manager.users.nora = {
home.username = "nora";
home.homeDirectory = "/home/nora";
home.stateVersion = "22.05";
programs = {
home-manager.enable = true;
git = {
enable = true;
userName = "Leonora Tindall";
userEmail = "nora@nora.codes";
};
};
services = {};
};
}

15
common/home_manager/communication.nix

@ -0,0 +1,15 @@
{ pkgs, ...}:
{
home-manager.users.nora = {
home.packages = with pkgs; [
element-desktop
discord
tdesktop
mumble
# TTS for mumble
speechd
arcan.espeak
];
};
}

10
common/home_manager/desktop.nix

@ -0,0 +1,10 @@
# Packages that make sense only for desktop-class machines
{ pkgs, ...}:
{
home-manager.users.nora = {
home.packages = with pkgs; [
wally-cli # flash my ergodox
];
};
}

16
common/home_manager/graphical.nix

@ -0,0 +1,16 @@
{ pkgs, ...}:
{
home-manager.users.nora = {
home.packages = with pkgs; [
firefox
vlc
pavucontrol
kcharselect
glimpse
libreoffice
qrencode
xorg.xkill
xorg.xev
];
};
}

8
common/home_manager/python.nix

@ -0,0 +1,8 @@
{pkgs, ...}:
{
home-manager.users.nora = {
home.packages = with pkgs; [
(python39.withPackages (ps: with ps; [ pylint pyflakes flake8 pygments ]))
];
};
}

9
common/home_manager/rust.nix

@ -0,0 +1,9 @@
{pkgs, ...}:
{
home-manager.users.nora = {
home.packages = with pkgs; [
rustup
evcxr
];
};
}

20
common/home_manager/terminal.nix

@ -0,0 +1,20 @@
{ pkgs, ...}:
{
home-manager.users.nora = {
home.packages = with pkgs; [
vim
curl
wget
dfc
htop
ripgrep
ncdu # disk usage analyzer
tldr # community man pages
jq
fd # replace find
rcm # manage dotfiles
killall
tree
];
};
}

6
common/packagesets/desktop.nix

@ -0,0 +1,6 @@
{ pkgs, ...}:
{
users.nora.packages = with pkgs; [
wally-cli # flash my ergodox
];
}

44
common/packagesets/packages.nix

@ -0,0 +1,44 @@
{ pkgs, ...}:
{
packageOverrides = pkgs: with pkgs; rec {
# Machines
Calembel = pkgs.buildEnv {
name = "calembel";
paths = [ Terminal X Graphical Audio Rust ];
};
X = pkgs.buildEnv {
name = "x-tools";
paths = [
xorg.xkill
xorg.xev
];
};
Graphical = pkgs.buildEnv {
name = "graphical";
paths = [
element-desktop
discord
tdesktop
mumble
];
};
Audio = pkgs.buildEnv {
name = "audio";
paths = [ pulseeffects-pw pulsemixer audacity picard ];
};
Rust = pkgs.buildEnv {
name = "rust";
paths = [ evcxr rustup ];
};
# Bugged; "found a set where a list was expected", whatever that means.
Python = pkgs.buildEnv {
name = "python";
paths = (python39.withPackages (ps: with ps; [ pylint pyflakes flake8 pygments ]));
};
};}

3
common/users/default.nix

@ -5,8 +5,9 @@
isNormalUser = true;
shell = pkgs.zsh;
openssh.authorizedKeys.keys = [
"SHA256:Me7hh7eJUYBRJ5NZIxPa+LOC3A4tBhD19v6KrCJFd7s"
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDQ1d8l650uqbw8qzOkf//sjmGFHBUP0edWCgyOThRc8ml46Mh0Dhge57dGrnMgrk1TYYh+RfQDscdioyAB98VocveNMCd0qkOkC9cwBfomwiQqXDuxs7hOjy06Q492ESjCQdLBf+pR3XsA6biQZmKa67VS3JEUyqo3u/HCZvlLM4NuIS61UAI3FcGqMINUEI+9IBYT/H5bYU6w/YWhpUegyySGcEsAH5d64O2O2vPgAnx4eI5Yph9Ed/D5V2+lhx/gIFrYA4N0cSEidpyOOOJiAKPC9ujnukUj6EOipoFmK96TzS17kVQQ74Th6SjdSIvAU33KsHfZ1yOpttbykUMOwrxTQDyQNWtH3dMd2e0RSJgLZ3fruslDV6zkHcJPVnf3d66hjobjfJP8J12oSGEdKPdsmp3VjZrG6FyOskcJaoIdRjX8S1AhRV/CuZ+r7p98CPgtu2I+xw4fsPSoziN7dhLzRUT2Vaw+Iaq73/hHaci4cXuT/2Y7c9bKt7c22oF0p7tNjoBhVB7y+CwIibWwLr2G2ySMQLyDa9/iNbRa4TiXVyyaAHINcW6Us05+h+7RLeYbcY1bETGMXB+f/1jtGVNpS4tHOI7a1kAdBTE7FoIVyFGUt9K9GdErOc48bhRpx7TTxIl8XgxNN3XQ+Byu0QtFErsBl8HW0w0DKYzw3Q== nora@nora.codes"
];
extraGroups = [ "wheel" ];
};
users.users.root.openssh.authorizedKeys.keys =

1
external/home-manager

@ -0,0 +1 @@
Subproject commit 6d9d9294d09b5e88df65f8c6651efb8a4d7d2476

1
external/nixos-hardware

@ -0,0 +1 @@
Subproject commit 9886a06e4745edb31587d0e9481ad82d35f0d593

1
external/nixpkgs

@ -0,0 +1 @@
Subproject commit cca9ad741a2d0314f52603ffa457fb48f1ced422

13
hosts/calembel/configuration.nix

@ -31,8 +31,7 @@
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
networking.wireguard.enable = true;
networking.wireguard.enable = true;
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
@ -62,16 +61,6 @@
# Enable touchpad support (enabled default in most desktopManager).
services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.nora = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
};
nixpkgs.config = {
allowUnfree = true;
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [

12
hosts/calembel/home.nix

@ -0,0 +1,12 @@
{ pkgs, ...}:
{
imports = [
../../common/home_manager/common.nix
../../common/home_manager/desktop.nix
../../common/home_manager/terminal.nix
../../common/home_manager/graphical.nix
../../common/home_manager/communication.nix
../../common/home_manager/rust.nix
../../common/home_manager/python.nix
];
}

6
ops/home/network.nix

@ -4,7 +4,11 @@
};
"calembel" = { config, pkgs, lib, ... }: {
imports = [ ../../common ../../hosts/calembel/configuration.nix ];
imports = [
../../common/default.nix
../../hosts/calembel/configuration.nix
../../hosts/calembel/home.nix
];
deployment.targetUser = "root";
deployment.targetHost = "127.0.0.1";
};

Loading…
Cancel
Save