chore: refactor home-manager (#43)
* docs: add better comments * add deploy-rs * wip * hackz * chore: make gc daily * chore: add --fast for haxing * fix: re-did home-manager * hax * hack * fix: re-factor homemanager for garnix? --------- Co-authored-by: Truxnell <9149206+truxnell@users.noreply.github.com>
This commit is contained in:
parent
e81f21e30f
commit
ab16557edf
12 changed files with 291 additions and 106 deletions
|
@ -63,7 +63,7 @@ tasks:
|
|||
- host
|
||||
cmds:
|
||||
- git add .
|
||||
- nixos-rebuild build --flake "{{.ROOT_DIR}}/#{{.host}}" --impure
|
||||
- nixos-rebuild build --flake "{{.ROOT_DIR}}/#{{.host}}" --impure --fast
|
||||
- nvd diff /run/current-system result
|
||||
preconditions:
|
||||
- sh: which nix
|
||||
|
|
106
flake.nix
106
flake.nix
|
@ -1,29 +1,37 @@
|
|||
{
|
||||
description = "My machines";
|
||||
description = "My nixos homelab";
|
||||
|
||||
inputs = {
|
||||
# Nixpkgs and unstable
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
|
||||
# nix-community hardware quirks
|
||||
# https://github.com/nix-community
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
|
||||
# home-manager
|
||||
# home-manager - home user+dotfile manager
|
||||
# https://github.com/nix-community/home-manager
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-23.11";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# sops-nix
|
||||
# sops-nix - secrets with mozilla sops
|
||||
# https://github.com/Mic92/sops-nix
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
# deploy-rs
|
||||
# deploy-rs - Remote deployment
|
||||
# https://github.com/serokell/deploy-rs
|
||||
deploy-rs = {
|
||||
url = "github:serokell/deploy-rs";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# VSCode community extensions
|
||||
# https://github.com/nix-community/nix-vscode-extensions
|
||||
nix-vscode-extensions = {
|
||||
url = "github:nix-community/nix-vscode-extensions";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
@ -33,6 +41,9 @@
|
|||
{ self
|
||||
, nixpkgs
|
||||
, sops-nix
|
||||
, deploy-rs
|
||||
, home-manager
|
||||
, nix-vscode-extensions
|
||||
, ...
|
||||
} @ inputs:
|
||||
|
||||
|
@ -43,27 +54,18 @@
|
|||
"x86_64-linux"
|
||||
];
|
||||
|
||||
# import overlays, ready for wrapping in nixossystem
|
||||
|
||||
in
|
||||
rec {
|
||||
{
|
||||
# Use nixpkgs-fmt for 'nix fmt'
|
||||
formatter = forAllSystems (system: nixpkgs.legacyPackages."${system}".nixpkgs-fmt);
|
||||
|
||||
nixosModules = import ./nixos/modules/nixos;
|
||||
|
||||
|
||||
nixosConfigurations =
|
||||
with self.lib;
|
||||
# with self.lib;
|
||||
let
|
||||
defaultModules =
|
||||
(builtins.attrValues nixosModules) ++
|
||||
[
|
||||
sops-nix.nixosModules.sops
|
||||
];
|
||||
specialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
# Import overlays for building nixosconfig with them.
|
||||
overlays = import ./nixos/overlays { inherit inputs; };
|
||||
|
||||
# generate a base nixos configuration with the
|
||||
|
@ -73,11 +75,24 @@
|
|||
, system ? "x86_64-linux"
|
||||
, nixpkgs ? inputs.nixpkgs
|
||||
, hardwareModules ? [ ]
|
||||
# basemodules is the base of the entire machine building
|
||||
# here we import all the modules and setup home-manager
|
||||
, baseModules ? [
|
||||
sops-nix.nixosModules.sops
|
||||
./nixos/profiles/global.nix
|
||||
./nixos/modules/nixos
|
||||
./nixos/hosts/${hostname}
|
||||
home-manager.nixosModules.home-manager
|
||||
./nixos/profiles/global.nix # all machines get a global profile
|
||||
./nixos/modules/nixos # all machines get nixos modules
|
||||
./nixos/hosts/${hostname} # load this host's config folder for machine-specific config
|
||||
{
|
||||
home-manager = {
|
||||
useUserPackages = true;
|
||||
useGlobalPkgs = true;
|
||||
extraSpecialArgs = {
|
||||
inherit inputs hostname system;
|
||||
};
|
||||
users.truxnell = ./nixos/home/truxnell;
|
||||
};
|
||||
}
|
||||
]
|
||||
, profileModules ? [ ]
|
||||
}:
|
||||
|
@ -98,7 +113,7 @@
|
|||
|
||||
};
|
||||
in
|
||||
{
|
||||
rec {
|
||||
|
||||
"rickenbacker" = mkNixosConfig {
|
||||
# NixOS laptop (dualboot windows, dunno why i kept it)
|
||||
|
@ -156,26 +171,31 @@
|
|||
];
|
||||
};
|
||||
|
||||
# # nix build .#images.rpi4
|
||||
# rpi4 = nixpkgs.lib.nixosSystem {
|
||||
# inherit specialArgs;
|
||||
|
||||
# modules = defaultModules ++ [
|
||||
# "${nixpkgs}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
|
||||
# ./nixos/hosts/images/sd-image
|
||||
# ];
|
||||
# };
|
||||
# # nix build .#images.iso
|
||||
# iso = nixpkgs.lib.nixosSystem {
|
||||
# inherit specialArgs;
|
||||
|
||||
# modules = defaultModules ++ [
|
||||
# "${nixpkgs}/nixos/modules/installer/cd-dvd/channel.nix"
|
||||
# "${nixpkgs}/nixos/modules/installer/cd-dvd/iso-image.nix"
|
||||
# ./nixos/hosts/images/cd-dvd
|
||||
# ];
|
||||
# };
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
# # nix build .#images.rpi4
|
||||
# rpi4 = nixpkgs.lib.nixosSystem {
|
||||
# inherit specialArgs;
|
||||
|
||||
# modules = defaultModules ++ [
|
||||
# "${nixpkgs}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
|
||||
# ./nixos/hosts/images/sd-image
|
||||
# ];
|
||||
# };
|
||||
# # nix build .#images.iso
|
||||
# iso = nixpkgs.lib.nixosSystem {
|
||||
# inherit specialArgs;
|
||||
|
||||
# modules = defaultModules ++ [
|
||||
# "${nixpkgs}/nixos/modules/installer/cd-dvd/channel.nix"
|
||||
# "${nixpkgs}/nixos/modules/installer/cd-dvd/iso-image.nix"
|
||||
# ./nixos/hosts/images/cd-dvd
|
||||
# ];
|
||||
# };
|
||||
|
||||
# simple shortcut to allow for easier referencing of correct
|
||||
# key for building images
|
||||
# > nix build .#images.rpi4
|
||||
|
@ -220,11 +240,11 @@
|
|||
nixtop = nixpkgs.lib.genAttrs
|
||||
(builtins.attrNames inputs.self.nixosConfigurations)
|
||||
(attr: inputs.self.nixosConfigurations.${attr}.config.system.build.toplevel);
|
||||
# hometop = genAttrs
|
||||
# (builtins.attrNames inputs.self.homeManagerConfigurations)
|
||||
# (attr: inputs.self.homeManagerConfigurations.${attr}.activationPackage);
|
||||
hometop = nixpkgs.lib.genAttrs
|
||||
(builtins.attrNames inputs.self.homeConfigurations)
|
||||
(attr: inputs.self.homeManagerConfigurations.${attr}.activationPackage);
|
||||
in
|
||||
nixtop; # // hometop
|
||||
nixtop // hometop;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -1,59 +0,0 @@
|
|||
My home infrastructure,
|
||||
|
||||
![](https://imgur.com/ISNnzgN.png)
|
||||
|
||||
## Structure
|
||||
|
||||
- [flake.nix](flake.nix) (Entrypoint for rebuilding via nixos-rebuild or home-manager)
|
||||
- [flake.lock](flake.lock) (lockfile for current nix flake state, updated daily via [github action](.github/workflows/main.yml))
|
||||
- [home-manager](home-manager) (User level configuration per machine via home-manager)
|
||||
- [hosts](hosts/README.md) - (Definition of physical/virutal hosts)
|
||||
- [common](hosts/common) (Role definitions [Desktop, Laptop, Server])
|
||||
- [darwin](hosts/common/darwin) (global host configuration used across all darwin hosts)
|
||||
- [nixos](hosts/common/nixos) (global host configuration used across all NixOS hosts)
|
||||
- [optional](hosts/common/optional) (optional host configuration used as-needed per host)
|
||||
- [nas](hosts/nas/README.md) (NixOS NAS server)
|
||||
- [home](hosts/home/README.md) (NixOS VM running in NAS)
|
||||
- [cloud](hosts/cloud/README.md) (NixOS VM running in Oracle Cloud)
|
||||
- [k3s-f](hosts/k3s-f/README.md) (NixOS running on an N100 tiny PC as a k3s node)
|
||||
- [k3s-g](hosts/k3s-g/README.md) (NixOS running on an N100 tiny PC as a k3s node)
|
||||
- [k3s-h](hosts/k3s-h/README.md) (NixOS running on an N100 tiny PC as a k3s node)
|
||||
- [jeffs_laptop](hosts/jeffs_laptop/README.md) (nix-darwin running on a MacBook Pro)
|
||||
- [jens_laptop](hosts/jens_laptop/README.md) (nix-darwin running on a MacBook Air)
|
||||
- [work_laptop](hosts/work_laptop/README.md) (nix-darwin running on a MacBook Pro)
|
||||
- [modules](modules) (Custom NixOS and home-manager modules)
|
||||
- [overlays](overlays) (Custom overlays, primarily used for packages currently)
|
||||
- [pkgs](pkgs) (Custom Packages, mainly items not yet in official nixpkgs)
|
||||
- [shell.nix](shell.nix) (Shell for bootstrapping flake-enabled nix and home-manager)
|
||||
- [nixpkgs.nix](nixpkgs.nix) (Used by shell.nix - useful to avoid using channels when using legacy nix commands)
|
||||
|
||||
## Background
|
||||
|
||||
Everyone keeps gushing about how amazing Nix is and I want to get in on the hype cycle
|
||||
|
||||
## Goals
|
||||
|
||||
- [x] Learn nix
|
||||
- [x] Mostly reproduce features from my existing [dotfiles](https://github.com/billimek/dotfiles)
|
||||
- [x] Replace existing ubunut-based 'home VM'
|
||||
- [x] Expand usage to other shell environments such as WSL, Macbook, etc
|
||||
- [x] handle secrets - ideally using 1Password and not SOPS - using git-crypt for now
|
||||
- [x] try agenix for secrets handling
|
||||
- [ ] introduce the concept of [impermanence](https://github.com/nix-community/impermanence) where appropriate
|
||||
|
||||
## References
|
||||
|
||||
- [Misterio77/nix-starter-config](https://github.com/Misterio77/nix-starter-configs)
|
||||
- [How to learn Nix](https://ianthehenry.com/posts/how-to-learn-nix/)
|
||||
- [home-manager](https://github.com/nix-community/home-manager)
|
||||
- [Zero to Nix: Everything I Know About Nix & NixOS](https://chetanbhasin.com/articles/zero-to-nix-everything-i-know-about-nix-nixos)
|
||||
- [Walkthrough of Nix Install and Setup on MacOS (YouTube)](https://www.youtube.com/watch?v=LE5JR4JcvMg)
|
||||
- [NixOS as a server, part 1: Impermanence](https://guekka.github.io/nixos-server-1/)
|
||||
- [budimanjojo/dotfiles](https://github.com/budimanjojo/dotfiles/tree/master/nixos)
|
||||
- [wrmilling/nixos-configuration](https://github.com/wrmilling/nixos-configuration)
|
||||
- [gshpychka/dotfiles-nix](https://github.com/gshpychka/dotfiles-nix)
|
||||
- [wimpysworld/nix-config](https://github.com/wimpysworld/nix-config)
|
||||
|
||||
## Old Dotfiles
|
||||
|
||||
Old dotfiles are still accessible in [archive branch](https://github.com/billimek/dotfiles/tree/archive)
|
25
nixos/home/modules/default.nix
Normal file
25
nixos/home/modules/default.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{ inputs
|
||||
, config
|
||||
, ...
|
||||
}: {
|
||||
imports = [
|
||||
./shell
|
||||
];
|
||||
|
||||
# Home-manager defaults
|
||||
config = {
|
||||
home.stateVersion = "23.11";
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
git.enable = true;
|
||||
};
|
||||
|
||||
xdg.enable = true;
|
||||
|
||||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
5
nixos/home/modules/shell/default.nix
Normal file
5
nixos/home/modules/shell/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
# ./fish
|
||||
];
|
||||
}
|
123
nixos/home/modules/shell/fish/default.nix
Normal file
123
nixos/home/modules/shell/fish/default.nix
Normal file
|
@ -0,0 +1,123 @@
|
|||
{ config
|
||||
, pkgs
|
||||
, lib
|
||||
, ...
|
||||
}:
|
||||
with lib; let
|
||||
inherit (config.home) username homeDirectory;
|
||||
cfg = config.myHome.shell.fish;
|
||||
in
|
||||
{
|
||||
options.myHome.shell.fish = {
|
||||
enable = mkEnableOption "fish";
|
||||
};
|
||||
|
||||
config = mkMerge [
|
||||
(mkIf cfg.enable {
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
||||
shellAliases = {
|
||||
m = "less";
|
||||
ls = "${pkgs.eza}/bin/eza --group";
|
||||
ll = "${pkgs.eza}/bin/eza --long --all --group --header";
|
||||
tm = "tmux attach -t (basename $PWD) || tmux new -s (basename $PWD)";
|
||||
x = "exit";
|
||||
};
|
||||
|
||||
shellAbbrs = {
|
||||
dup = "git add . ; darwin-rebuild --flake . switch";
|
||||
dupb = "git add . ; darwin-rebuild --flake . build --show-trace ; nvd diff /run/current-system result";
|
||||
nup = "git add . ; sudo nixos-rebuild --flake . switch";
|
||||
nhup = "nh os switch . --dry";
|
||||
nvdiff = "nvd diff /run/current-system result";
|
||||
ap = "ansible-playbook";
|
||||
apb = "ansible-playbook --ask-become";
|
||||
gfp = "git fetch -p && git pull";
|
||||
gitp = "git push";
|
||||
gitpf = "git push -f";
|
||||
tf = "terraform";
|
||||
};
|
||||
|
||||
# functions = {
|
||||
# brewup = {
|
||||
# description = "Update homebrew applications";
|
||||
# body = builtins.readFile ./functions/brewup.fish;
|
||||
# };
|
||||
# fish_prompt = {
|
||||
# description = "Set the fish prompt";
|
||||
# body = builtins.readFile ./functions/fish_prompt.fish;
|
||||
# };
|
||||
# fish_right_prompt = {
|
||||
# description = "Set the right prompt";
|
||||
# body = builtins.readFile ./functions/fish_right_prompt.fish;
|
||||
# };
|
||||
# fish_title = {
|
||||
# description = "Set the title";
|
||||
# body = builtins.readFile ./functions/fish_title.fish;
|
||||
# };
|
||||
# fwatch = {
|
||||
# description = "Watch with fish alias support";
|
||||
# body = builtins.readFile ./functions/fwatch.fish;
|
||||
# };
|
||||
# git_current_branch = {
|
||||
# description = "Display the current branch";
|
||||
# body = builtins.readFile ./functions/git_current_branch.fish;
|
||||
# };
|
||||
# };
|
||||
|
||||
interactiveShellInit = ''
|
||||
# Erase fish_mode_prompt function
|
||||
functions -e fish_mode_prompt
|
||||
|
||||
function remove_path
|
||||
if set -l index (contains -i $argv[1] $PATH)
|
||||
set --erase --universal fish_user_paths[$index]
|
||||
end
|
||||
end
|
||||
|
||||
function update_path
|
||||
if test -d $argv[1]
|
||||
fish_add_path -m $argv[1]
|
||||
else
|
||||
remove_path $argv[1]
|
||||
end
|
||||
end
|
||||
|
||||
# Paths are in reverse priority order
|
||||
update_path /opt/homebrew/opt/postgresql@16/bin
|
||||
update_path /opt/homebrew/bin
|
||||
update_path ${homeDirectory}/.krew/bin
|
||||
update_path /nix/var/nix/profiles/default/bin
|
||||
update_path /run/current-system/sw/bin
|
||||
update_path /etc/profiles/per-user/${username}/bin
|
||||
update_path /run/wrappers/bin
|
||||
update_path ${homeDirectory}/.nix-profile/bin
|
||||
update_path ${homeDirectory}/go/bin
|
||||
update_path ${homeDirectory}/.cargo/bin
|
||||
update_path ${homeDirectory}/.local/bin
|
||||
|
||||
set -gx EDITOR "nvim"
|
||||
|
||||
set -gx EZA_COLORS "da=1;34:gm=1;34"
|
||||
set -gx EZA_COLORS 'da=1;34:gm=1;34;di=01;34:ln=01;36:pi=33:so=01;35:bd=01;33:cd=33:or=31:ex=01;32:*.7z=01;31:*.bz2=01;31:*.gz=01;31:*.lz=01;31:*.lzma=01;31:*.lzo=01;31:*.rar=01;31:*.tar=01;31:*.tbz=01;31:*.tgz=01;31:*.xz=01;31:*.zip=01;31:*.zst=01;31:*.zstd=01;31:*.bmp=01;35:*.tiff=01;35:*.tif=01;35:*.TIFF=01;35:*.gif=01;35:*.jpeg=01;35:*.jpg=01;35:*.png=01;35:*.webp=01;35:*.pot=01;35:*.pcb=01;35:*.gbr=01;35:*.scm=01;35:*.xcf=01;35:*.spl=01;35:*.stl=01;35:*.dwg=01;35:*.ply=01;35:*.apk=01;31:*.deb=01;31:*.rpm=01;31:*.jad=01;31:*.jar=01;31:*.crx=01;31:*.xpi=01;31:*.avi=01;35:*.divx=01;35:*.m2v=01;35:*.m4v=01;35:*.mkv=01;35:*.MOV=01;35:*.mov=01;35:*.mp4=01;35:*.mpeg=01;35:*.mpg=01;35:*.sample=01;35:*.wmv=01;35:*.3g2=01;35:*.3gp=01;35:*.gp3=01;35:*.webm=01;35:*.flv=01;35:*.ogv=01;35:*.f4v=01;35:*.3ga=01;35:*.aac=01;35:*.m4a=01;35:*.mp3=01;35:*.mp4a=01;35:*.oga=01;35:*.ogg=01;35:*.opus=01;35:*.s3m=01;35:*.sid=01;35:*.wma=01;35:*.flac=01;35:*.alac=01;35:*.mid=01;35:*.midi=01;35:*.pcm=01;35:*.wav=01;35:*.ass=01;33:*.srt=01;33:*.ssa=01;33:*.sub=01;33:*.git=01;33:*.ass=01;33:*README=33:*README.rst=33:*README.md=33:*LICENSE=33:*COPYING=33:*INSTALL=33:*COPYRIGHT=33:*AUTHORS=33:*HISTORY=33:*CONTRIBUTOS=33:*PATENTS=33:*VERSION=33:*NOTICE=33:*CHANGES=33:*CHANGELOG=33:*log=33:*.txt=33:*.md=33:*.markdown=33:*.nfo=33:*.org=33:*.pod=33:*.rst=33:*.tex=33:*.texttile=33:*.bib=35:*.json=35:*.jsonl=35:*.jsonnet=35:*.libsonnet=35:*.rss=35:*.xml=35:*.fxml=35:*.toml=35:*.yaml=35:*.yml=35:*.dtd=35:*.cbr=35:*.cbz=35:*.chm=35:*.pdf=35:*.PDF=35:*.epub=35:*.awk=35:*.bash=35:*.bat=35:*.BAT=35:*.sed=35:*.sh=35:*.zsh=35:*.vim=35:*.py=35:*.ipynb=35:*.rb=35:*.gemspec=35:*.pl=35:*.PL=35:*.t=35:*.msql=35:*.mysql=35:*.pgsql=35:*.sql=35:*.r=35:*.R=35:*.cljw=35:*.scala=35:*.sc=35:*.dart=35:*.asm=35:*.cl=35:*.lisp=35:*.rkt=35:*.el=35:*.elc=35:*.eln=35:*.lua=35:*.c=35:*.C=35:*.h=35:*.H=35:*.tcc=35:*.c++=35:*.h++=35:*.hpp=35:*.hxx=35:*ii.=35:*.m=35:*.M=35:*.cc=35:*.cs=35:*.cp=35:*.cpp=35:*.cxx=35:*.go=35:*.f=35:*.F=35:*.nim=35:*.nimble=35:*.s=35:*.S=35:*.rs=35:*.scpt=35:*.swift=35:*.vala=35:*.vapi=35:*.hs=35:*.lhs=35:*.zig=35:*.v=35:*.pyc=35:*.tf=35:*.tfstate=35:*.tfvars=35:*.css=35:*.less=35:*.sass=35:*.scss=35:*.htm=35:*.html=35:*.jhtm=35:*.mht=35:*.eml=35:*.coffee=35:*.java=35:*.js=35:*.mjs=35:*.jsm=35:*.jsp=35:*.rasi=35:*.php=35:*.twig=35:*.vb=35:*.vba=35:*.vbs=35:*.Dockerfile=35:*.dockerignore=35:*.Makefile=35:*.MANIFEST=35:*.am=35:*.in=35:*.hin=35:*.scan=35:*.m4=35:*.old=35:*.out=35:*.SKIP=35:*.diff=35:*.patch=35:*.tmpl=35:*.j2=35:*PKGBUILD=35:*config=35:*.conf=35:*.service=31:*.@.service=31:*.socket=31:*.swap=31:*.device=31:*.mount=31:*.automount=31:*.target=31:*.path=31:*.timer=31:*.snapshot=31:*.allow=31:*.swp=31:*.swo=31:*.tmp=31:*.pid=31:*.state=31:*.lock=31:*.lockfile=31:*.pacnew=31:*.un=31:*.orig=31:'
|
||||
set -gx LSCOLORS "Gxfxcxdxbxegedabagacad"
|
||||
set -gx LS_COLORS 'di=01;34:ln=01;36:pi=33:so=01;35:bd=01;33:cd=33:or=31:ex=01;32:*.7z=01;31:*.bz2=01;31:*.gz=01;31:*.lz=01;31:*.lzma=01;31:*.lzo=01;31:*.rar=01;31:*.tar=01;31:*.tbz=01;31:*.tgz=01;31:*.xz=01;31:*.zip=01;31:*.zst=01;31:*.zstd=01;31:*.bmp=01;35:*.tiff=01;35:*.tif=01;35:*.TIFF=01;35:*.gif=01;35:*.jpeg=01;35:*.jpg=01;35:*.png=01;35:*.webp=01;35:*.pot=01;35:*.pcb=01;35:*.gbr=01;35:*.scm=01;35:*.xcf=01;35:*.spl=01;35:*.stl=01;35:*.dwg=01;35:*.ply=01;35:*.apk=01;31:*.deb=01;31:*.rpm=01;31:*.jad=01;31:*.jar=01;31:*.crx=01;31:*.xpi=01;31:*.avi=01;35:*.divx=01;35:*.m2v=01;35:*.m4v=01;35:*.mkv=01;35:*.MOV=01;35:*.mov=01;35:*.mp4=01;35:*.mpeg=01;35:*.mpg=01;35:*.sample=01;35:*.wmv=01;35:*.3g2=01;35:*.3gp=01;35:*.gp3=01;35:*.webm=01;35:*.flv=01;35:*.ogv=01;35:*.f4v=01;35:*.3ga=01;35:*.aac=01;35:*.m4a=01;35:*.mp3=01;35:*.mp4a=01;35:*.oga=01;35:*.ogg=01;35:*.opus=01;35:*.s3m=01;35:*.sid=01;35:*.wma=01;35:*.flac=01;35:*.alac=01;35:*.mid=01;35:*.midi=01;35:*.pcm=01;35:*.wav=01;35:*.ass=01;33:*.srt=01;33:*.ssa=01;33:*.sub=01;33:*.git=01;33:*.ass=01;33:*README=33:*README.rst=33:*README.md=33:*LICENSE=33:*COPYING=33:*INSTALL=33:*COPYRIGHT=33:*AUTHORS=33:*HISTORY=33:*CONTRIBUTOS=33:*PATENTS=33:*VERSION=33:*NOTICE=33:*CHANGES=33:*CHANGELOG=33:*log=33:*.txt=33:*.md=33:*.markdown=33:*.nfo=33:*.org=33:*.pod=33:*.rst=33:*.tex=33:*.texttile=33:*.bib=35:*.json=35:*.jsonl=35:*.jsonnet=35:*.libsonnet=35:*.rss=35:*.xml=35:*.fxml=35:*.toml=35:*.yaml=35:*.yml=35:*.dtd=35:*.cbr=35:*.cbz=35:*.chm=35:*.pdf=35:*.PDF=35:*.epub=35:*.awk=35:*.bash=35:*.bat=35:*.BAT=35:*.sed=35:*.sh=35:*.zsh=35:*.vim=35:*.py=35:*.ipynb=35:*.rb=35:*.gemspec=35:*.pl=35:*.PL=35:*.t=35:*.msql=35:*.mysql=35:*.pgsql=35:*.sql=35:*.r=35:*.R=35:*.cljw=35:*.scala=35:*.sc=35:*.dart=35:*.asm=35:*.cl=35:*.lisp=35:*.rkt=35:*.el=35:*.elc=35:*.eln=35:*.lua=35:*.c=35:*.C=35:*.h=35:*.H=35:*.tcc=35:*.c++=35:*.h++=35:*.hpp=35:*.hxx=35:*ii.=35:*.m=35:*.M=35:*.cc=35:*.cs=35:*.cp=35:*.cpp=35:*.cxx=35:*.go=35:*.f=35:*.F=35:*.nim=35:*.nimble=35:*.s=35:*.S=35:*.rs=35:*.scpt=35:*.swift=35:*.vala=35:*.vapi=35:*.hs=35:*.lhs=35:*.zig=35:*.v=35:*.pyc=35:*.tf=35:*.tfstate=35:*.tfvars=35:*.css=35:*.less=35:*.sass=35:*.scss=35:*.htm=35:*.html=35:*.jhtm=35:*.mht=35:*.eml=35:*.coffee=35:*.java=35:*.js=35:*.mjs=35:*.jsm=35:*.jsp=35:*.rasi=35:*.php=35:*.twig=35:*.vb=35:*.vba=35:*.vbs=35:*.Dockerfile=35:*.dockerignore=35:*.Makefile=35:*.MANIFEST=35:*.am=35:*.in=35:*.hin=35:*.scan=35:*.m4=35:*.old=35:*.out=35:*.SKIP=35:*.diff=35:*.patch=35:*.tmpl=35:*.j2=35:*PKGBUILD=35:*config=35:*.conf=35:*.service=31:*.@.service=31:*.socket=31:*.swap=31:*.device=31:*.mount=31:*.automount=31:*.target=31:*.path=31:*.timer=31:*.snapshot=31:*.allow=31:*.swp=31:*.swo=31:*.tmp=31:*.pid=31:*.state=31:*.lock=31:*.lockfile=31:*.pacnew=31:*.un=31:*.orig=31:'
|
||||
'';
|
||||
};
|
||||
|
||||
home.sessionVariables.fish_greeting = "";
|
||||
|
||||
programs.nix-index.enable = true;
|
||||
|
||||
programs.fish = {
|
||||
functions = {
|
||||
agent = {
|
||||
description = "Start SSH agent";
|
||||
body = builtins.readFile ./functions/agent.fish;
|
||||
};
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
35
nixos/home/truxnell/default.nix
Normal file
35
nixos/home/truxnell/default.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{ lib, pkgs, self, config, ... }:
|
||||
with config;
|
||||
{
|
||||
|
||||
imports = [
|
||||
../modules
|
||||
];
|
||||
|
||||
# services.gpg-agent.pinentryPackage = pkgs.pinentry-qt;
|
||||
systemd.user.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
VISUAL = "nvim";
|
||||
ZDOTDIR = "/home/pinpox/.config/zsh";
|
||||
};
|
||||
|
||||
home = {
|
||||
# Install these packages for my user
|
||||
packages = with pkgs; [
|
||||
eza
|
||||
htop
|
||||
unzip
|
||||
];
|
||||
|
||||
sessionVariables = {
|
||||
# Workaround for alacritty (breaks wezterm and other apps!)
|
||||
# LIBGL_ALWAYS_SOFTWARE = "1";
|
||||
EDITOR = "nvim";
|
||||
VISUAL = "nvim";
|
||||
ZDOTDIR = "/home/pinpox/.config/zsh";
|
||||
};
|
||||
|
||||
|
||||
|
||||
};
|
||||
}
|
3
nixos/home/truxnell/server.nix
Normal file
3
nixos/home/truxnell/server.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
{ lib, pkgs, self, config, ... }:
|
||||
with config;
|
||||
{ }
|
25
nixos/home/truxnell/workstation.nix
Normal file
25
nixos/home/truxnell/workstation.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{ lib, pkgs, self, config, ... }:
|
||||
with config;
|
||||
{
|
||||
|
||||
home = {
|
||||
# Install these packages for my user
|
||||
packages = with pkgs; [
|
||||
discord
|
||||
steam
|
||||
spotify
|
||||
brightnessctl
|
||||
|
||||
bat
|
||||
dbus
|
||||
direnv
|
||||
git
|
||||
nix-index
|
||||
python3
|
||||
fzf
|
||||
ripgrep
|
||||
|
||||
];
|
||||
|
||||
};
|
||||
}
|
|
@ -38,6 +38,7 @@ in
|
|||
gc = mkIf cfg.gc.enable {
|
||||
# garbage collection
|
||||
automatic = cfg.gc.enable;
|
||||
dates = "daily";
|
||||
options = "--delete-older-than 7d";
|
||||
inherit (cfg.gc) persistent;
|
||||
};
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
{ config, lib, pkgs, imports, boot, ... }:
|
||||
{ config, lib, pkgs, imports, boot, self, ... }:
|
||||
# Role for headless servers
|
||||
# covers raspi's, sbc, NUC etc, anything
|
||||
# that is headless and minimal for running services
|
||||
|
||||
with lib;
|
||||
{
|
||||
|
||||
|
||||
config = {
|
||||
|
||||
|
||||
# Enable monitoring for remote scraiping
|
||||
mySystem.services.promMonitoring.enable = true;
|
||||
mySystem.services.rebootRequiredCheck.enable = true;
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
{ config, lib, pkgs, imports, boot, ... }:
|
||||
{ config, lib, pkgs, imports, boot, self, ... }:
|
||||
# Role for workstations
|
||||
# Covers desktops/laptops, expected to have a GUI and do worloads
|
||||
# Will have home-manager installs
|
||||
|
||||
with config;
|
||||
{
|
||||
|
||||
|
||||
mySystem = {
|
||||
|
||||
de.gnome.enable = true;
|
||||
|
@ -34,11 +36,13 @@ with config;
|
|||
services.xserver.enable = true;
|
||||
|
||||
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
jq
|
||||
yq
|
||||
btop
|
||||
unstable.vim
|
||||
vim
|
||||
unstable.deploy-rs
|
||||
git
|
||||
dnsutils
|
||||
nix
|
||||
|
|
Reference in a new issue