mirror of
https://codeberg.org/tmayoff/.dotfiles.git
synced 2025-12-06 08:48:34 -05:00
Initial Commit
This commit is contained in:
commit
e726aebd5b
22 changed files with 1098 additions and 0 deletions
115
dot_config/home-manager/flake.lock
generated
Normal file
115
dot_config/home-manager/flake.lock
generated
Normal file
|
|
@ -0,0 +1,115 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1659877975,
|
||||||
|
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726985855,
|
||||||
|
"narHash": "sha256-NJPGK030Y3qETpWBhj9oobDQRbXdXOPxtu+YgGvZ84o=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "04213d1ce4221f5d9b40bcee30706ce9a91d148d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixgl": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1713543440,
|
||||||
|
"narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixGL",
|
||||||
|
"rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixGL",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1660551188,
|
||||||
|
"narHash": "sha256-a1LARMMYQ8DPx1BgoI/UN4bXe12hhZkCNqdxNi6uS0g=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "441dc5d512153039f19ef198e662e4f3dbb9fd65",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-unstable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726755586,
|
||||||
|
"narHash": "sha256-PmUr/2GQGvFTIJ6/Tvsins7Q43KTMvMFhvG6oaYK+Wk=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c04d5652cfa9742b1d519688f65d1bbccea9eb7e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1727397532,
|
||||||
|
"narHash": "sha256-pojbL/qteElw/nIXlN8kmHn/w6PQbEHr7Iz+WOXs0EM=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "f65141456289e81ea0d5a05af8898333cab5c53d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixgl": "nixgl",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
55
dot_config/home-manager/flake.nix
Normal file
55
dot_config/home-manager/flake.nix
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
{
|
||||||
|
description = "Home manager flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||||
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
nixgl.url = "github:nix-community/nixGL";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = {
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
nixpkgs-unstable,
|
||||||
|
home-manager,
|
||||||
|
...
|
||||||
|
} @ inputs: let
|
||||||
|
inherit (self) outputs;
|
||||||
|
|
||||||
|
system = "x86_64-linux";
|
||||||
|
in rec {
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
overlays = import ./overlays {inherit inputs;};
|
||||||
|
|
||||||
|
defaultPackage.${system} = home-manager.defaultPackage.${system};
|
||||||
|
|
||||||
|
nixosConfigurations = {
|
||||||
|
mal = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {inherit inputs outputs;};
|
||||||
|
modules = [./nixos/mal/configuration.nix];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
homeConfigurations = {
|
||||||
|
"tyler@guidebolt" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
extraSpecialArgs = {inherit inputs outputs;};
|
||||||
|
modules = [./home/guidebolt/guidebolt.nix];
|
||||||
|
};
|
||||||
|
|
||||||
|
"tyler@wash" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
extraSpecialArgs = {inherit inputs outputs;};
|
||||||
|
modules = [./home/wash/wash.nix];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
224
dot_config/home-manager/home/common.nix
Normal file
224
dot_config/home-manager/home/common.nix
Normal file
|
|
@ -0,0 +1,224 @@
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
# lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
nixGLIntel = inputs.nixgl.packages."${pkgs.system}".nixGLIntel;
|
||||||
|
in rec {
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
home.username = "tyler";
|
||||||
|
home.homeDirectory = "/home/tyler";
|
||||||
|
|
||||||
|
home.enableNixpkgsReleaseCheck = false;
|
||||||
|
|
||||||
|
xdg.enable = true;
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./fish.nix
|
||||||
|
./nushell.nix
|
||||||
|
# ./nom.nix
|
||||||
|
# ./neovim.nix
|
||||||
|
(builtins.fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/Smona/home-manager/nixgl-compat/modules/misc/nixgl.nix";
|
||||||
|
sha256 = "01dkfr9wq3ib5hlyq9zq662mp0jl42fw3f6gd2qgdf8l8ia78j7i";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
nixGL.prefix = "${nixGLIntel}/bin/nixGLIntel";
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
overlays = [
|
||||||
|
outputs.overlays.additions
|
||||||
|
outputs.overlays.modifications
|
||||||
|
outputs.overlays.unstable-packages
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# Gnome
|
||||||
|
gnome.gnome-tweaks
|
||||||
|
adw-gtk3
|
||||||
|
|
||||||
|
nixGLIntel
|
||||||
|
|
||||||
|
# Fonts
|
||||||
|
(nerdfonts.override {fonts = ["JetBrainsMono"];})
|
||||||
|
|
||||||
|
unstable.nix-output-monitor
|
||||||
|
|
||||||
|
chezmoi
|
||||||
|
|
||||||
|
# backup
|
||||||
|
restic
|
||||||
|
libnotify
|
||||||
|
|
||||||
|
distrobox
|
||||||
|
discord
|
||||||
|
|
||||||
|
wl-clipboard
|
||||||
|
usbutils
|
||||||
|
|
||||||
|
yadm
|
||||||
|
|
||||||
|
# Shell
|
||||||
|
bash
|
||||||
|
starship
|
||||||
|
ripgrep
|
||||||
|
fh
|
||||||
|
fd
|
||||||
|
glow
|
||||||
|
unstable.helix
|
||||||
|
gitoxide
|
||||||
|
lnav
|
||||||
|
|
||||||
|
fzf
|
||||||
|
zoxide
|
||||||
|
|
||||||
|
# Software Dev
|
||||||
|
tig
|
||||||
|
mold
|
||||||
|
|
||||||
|
# Office
|
||||||
|
libreoffice
|
||||||
|
obsidian
|
||||||
|
|
||||||
|
# language servers
|
||||||
|
efm-langserver
|
||||||
|
sumneko-lua-language-server
|
||||||
|
nil
|
||||||
|
alejandra
|
||||||
|
lemminx
|
||||||
|
pylyzer
|
||||||
|
ltex-ls # Spell checker
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.gnome-shell = {
|
||||||
|
enable = true;
|
||||||
|
extensions = [
|
||||||
|
# {package = pkgs.gnomeExtensions.appindicator;}
|
||||||
|
{package = pkgs.gnomeExtensions.ddterm;}
|
||||||
|
{package = pkgs.gnomeExtensions.gsconnect;}
|
||||||
|
{package = pkgs.gnomeExtensions.paperwm;}
|
||||||
|
{package = pkgs.gnomeExtensions.night-theme-switcher;}
|
||||||
|
{package = pkgs.gnomeExtensions.blur-my-shell;}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.alacritty = {
|
||||||
|
enable = true;
|
||||||
|
package = config.lib.nixGL.wrap pkgs.alacritty;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.wezterm = {
|
||||||
|
enable = true;
|
||||||
|
package = config.lib.nixGL.wrap pkgs.wezterm;
|
||||||
|
extraConfig = ''
|
||||||
|
return {
|
||||||
|
font_size=9.25,
|
||||||
|
color_scheme="catppuccin-latte",
|
||||||
|
hide_tab_bar_if_only_one_tab = true,
|
||||||
|
window_frame = {
|
||||||
|
font_size = 10
|
||||||
|
},
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.bat = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
theme = "GitHub";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zellij = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.broot = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.eza = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.thefuck = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
enableInstantMode = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.yazi = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.unstable.yazi;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
shellWrapperName = "y";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services = {
|
||||||
|
daily_backup = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Run a backup script";
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = ["default.target"];
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${home.homeDirectory}/.local/bin/,daily_backup";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.darkman = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.unstable.darkman;
|
||||||
|
settings = {
|
||||||
|
lat = 45.408;
|
||||||
|
lng = -74.159;
|
||||||
|
};
|
||||||
|
|
||||||
|
darkModeScripts = {
|
||||||
|
helix-editor = ''
|
||||||
|
sed -i 's/theme = ".*"/theme = "catppuccin_macchiato"/' $HOME/.config/helix/config.toml
|
||||||
|
'';
|
||||||
|
|
||||||
|
alacritty = ''
|
||||||
|
ln -fs ~/.config/alacritty/themes/catppuccin_macchiato.toml ~/.config/alacritty/themes/_active.toml
|
||||||
|
touch ~/.config/alacritty/alacritty.toml
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
lightModeScripts = {
|
||||||
|
helix-editor = ''
|
||||||
|
sed -i 's/theme = ".*"/theme = "catppuccin_latte"/' $HOME/.config/helix/config.toml
|
||||||
|
'';
|
||||||
|
|
||||||
|
alacritty = ''
|
||||||
|
ln -fs ~/.config/alacritty/themes/catppuccin_latte.toml ~/.config/alacritty/themes/_active.toml
|
||||||
|
touch ~/.config/alacritty/alacritty.toml
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.stateVersion = "23.11";
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
}
|
||||||
74
dot_config/home-manager/home/fish.nix
Normal file
74
dot_config/home-manager/home/fish.nix
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
interactiveShellInit = ''
|
||||||
|
set -gx EDITOR hx
|
||||||
|
set -gx GIT_EDITOR $EDITOR
|
||||||
|
set -gx DEBEMAIL "tyler@tylermayoff.com"
|
||||||
|
|
||||||
|
fish_add_path $HOME/.local/bin
|
||||||
|
|
||||||
|
source $HOME/.config/fish/variables-$(hostname).fish
|
||||||
|
bind \cz 'fg 2>/dev/null; commandline -f repaint'
|
||||||
|
|
||||||
|
zoxide init fish | source
|
||||||
|
'';
|
||||||
|
|
||||||
|
shellInit = ''
|
||||||
|
set -gx EDITOR hx
|
||||||
|
set -gx GIT_EDITOR $EDITOR
|
||||||
|
set -gx DEBEMAIL "tyler@tylermayoff.com"
|
||||||
|
|
||||||
|
set -xg XDG_DATA_DIRS "$HOME/.nix-profile/share:$XDG_DATA_DIRS"
|
||||||
|
|
||||||
|
fish_add_path $HOME/.local/bin
|
||||||
|
source $HOME/.config/fish/variables-$(hostname).fish
|
||||||
|
'';
|
||||||
|
|
||||||
|
# functions = {
|
||||||
|
# yupdate = {
|
||||||
|
# body = ''
|
||||||
|
# echo "Hello world"
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
name = "forgit";
|
||||||
|
src = pkgs.fishPlugins.forgit.src;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
# ls
|
||||||
|
ls = "eza $eza_params";
|
||||||
|
l = "eza --git-ignore $eza_params";
|
||||||
|
ll = "eza --all --header --long $eza_params";
|
||||||
|
llm = "eza --all --header --long --sort=modified $eza_params";
|
||||||
|
la = "eza -lbhHigUmuSa";
|
||||||
|
lx = "eza -lbhHigUmuSa@";
|
||||||
|
lt = "eza --tree $eza_params";
|
||||||
|
tree = "eza --tree $eza_params";
|
||||||
|
|
||||||
|
# Git
|
||||||
|
gc = "git commit";
|
||||||
|
gcm = "git commit -m";
|
||||||
|
gac = "git add . && git commit";
|
||||||
|
gacp = "gac && git push";
|
||||||
|
gs = "git status";
|
||||||
|
|
||||||
|
# yac = "yadm add . && yadm commit";
|
||||||
|
# yacp = "yac && yadm push";
|
||||||
|
yc = "pushd $HOME/.local/share/yadm/repo.git && git-forgit add && yadm commit && popd";
|
||||||
|
yd = "pushd $HOME/.local/share/yadm/repo.git && git-forgit diff && popd";
|
||||||
|
|
||||||
|
# nix
|
||||||
|
flake = "nix flake";
|
||||||
|
|
||||||
|
# home-manager
|
||||||
|
hm-upgrade = "nix flake update --flake ~/.config/home-manager#";
|
||||||
|
hm-update = "home-manager switch";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
16
dot_config/home-manager/home/guidebolt/guidebolt.nix
Normal file
16
dot_config/home-manager/home/guidebolt/guidebolt.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [../common.nix];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# clang_17
|
||||||
|
# clang-tools
|
||||||
|
just
|
||||||
|
];
|
||||||
|
}
|
||||||
187
dot_config/home-manager/home/nom.nix
Normal file
187
dot_config/home-manager/home/nom.nix
Normal file
|
|
@ -0,0 +1,187 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
collectPathArgs = ''
|
||||||
|
paths=()
|
||||||
|
while [ "$#" -gt 0 ]; do
|
||||||
|
arg="$1"
|
||||||
|
[[ "$arg" =~ ^--?.+ ]] && break
|
||||||
|
paths+=("$arg"); shift
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
pathArgs = ''"''${paths[@]}"'';
|
||||||
|
collectFlakeFlags = ''
|
||||||
|
flakeFlags=()
|
||||||
|
while [ "$#" -gt 0 ]; do
|
||||||
|
arg="$1"
|
||||||
|
case "$arg" in
|
||||||
|
${
|
||||||
|
builtins.concatStringsSep "|" [
|
||||||
|
"build"
|
||||||
|
"bundle"
|
||||||
|
"copy"
|
||||||
|
"daemon"
|
||||||
|
"derivation"
|
||||||
|
"develop"
|
||||||
|
"doctor"
|
||||||
|
"edit"
|
||||||
|
"eval"
|
||||||
|
"flake"
|
||||||
|
"fmt"
|
||||||
|
"hash"
|
||||||
|
"help"
|
||||||
|
"help-stores"
|
||||||
|
"key"
|
||||||
|
"log"
|
||||||
|
"nar"
|
||||||
|
"path-info"
|
||||||
|
"print-dev-env"
|
||||||
|
"profile"
|
||||||
|
"realisation"
|
||||||
|
"registry"
|
||||||
|
"repl"
|
||||||
|
"run"
|
||||||
|
"search"
|
||||||
|
"shell"
|
||||||
|
"show-config"
|
||||||
|
"store"
|
||||||
|
"upgrade-nix"
|
||||||
|
"why-depends"
|
||||||
|
]
|
||||||
|
})
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
flakeFlags+=("$arg"); shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
flakeFlags = ''"''${flakeFlags[@]}"'';
|
||||||
|
nixNomArgs = "--log-format internal-json --verbose";
|
||||||
|
nixBuildCmdWithNomArgs = buildCmd: ''
|
||||||
|
${collectPathArgs}
|
||||||
|
${buildCmd} ${pathArgs} ${nixNomArgs} "$@"
|
||||||
|
'';
|
||||||
|
nixShellCmdWithNomArgs = shellCmd: ''
|
||||||
|
${shellCmd} ${nixNomArgs} "$@"
|
||||||
|
'';
|
||||||
|
nixStoreCmdWithNomArgs = storeCmd: ''
|
||||||
|
operation="$1"; shift
|
||||||
|
case "$operation" in
|
||||||
|
--realise|-r)
|
||||||
|
${collectPathArgs}
|
||||||
|
${storeCmd} "$operation" ${pathArgs} ${nixNomArgs} "$@"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
${storeCmd} "$operation" "$@"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
'';
|
||||||
|
nixWithNomArgs = nix:
|
||||||
|
pkgs.symlinkJoin {
|
||||||
|
name = "nix-with-nom-args-${nix.version}";
|
||||||
|
paths = (lib.attrsets.mapAttrsToList pkgs.writeShellScriptBin {
|
||||||
|
nix = ''
|
||||||
|
program="$(basename $0)"
|
||||||
|
case "$program" in
|
||||||
|
nix)
|
||||||
|
${collectFlakeFlags}
|
||||||
|
command="$1"; shift
|
||||||
|
case "$command" in
|
||||||
|
build)
|
||||||
|
${nixBuildCmdWithNomArgs "${nix}/bin/nix ${flakeFlags} build"}
|
||||||
|
;;
|
||||||
|
shell)
|
||||||
|
${nixShellCmdWithNomArgs "${nix}/bin/nix ${flakeFlags} shell"}
|
||||||
|
;;
|
||||||
|
store)
|
||||||
|
${nixStoreCmdWithNomArgs "${nix}/bin/nix ${flakeFlags} store"}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
${nix}/bin/nix ${flakeFlags} "$command" "$@"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
"${nix}/bin/$program" "$@"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
'';
|
||||||
|
# nix-build = nixBuildCmdWithNomArgs "${nix}/bin/nix-build";
|
||||||
|
nix-shell = nixShellCmdWithNomArgs "${nix}/bin/nix-shell";
|
||||||
|
nix-store = nixStoreCmdWithNomArgs "${nix}/bin/nix-store";
|
||||||
|
}) ++ [ nix ];
|
||||||
|
};
|
||||||
|
nixNomPkgs = { nix ? null, nixos-rebuild ? null, home-manager ? null }:
|
||||||
|
lib.attrsets.mapAttrs pkgs.writeShellScriptBin ((if nix != null then {
|
||||||
|
nix = ''
|
||||||
|
program="$(basename $0)"
|
||||||
|
case "$program" in
|
||||||
|
nix)
|
||||||
|
${collectFlakeFlags}
|
||||||
|
command="$1"; shift
|
||||||
|
case "$command" in
|
||||||
|
build|shell|develop)
|
||||||
|
${pkgs.nix-output-monitor}/bin/nom ${flakeFlags} "$command" "$@"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
${nix}/bin/nix ${flakeFlags} "$command" "$@"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
"${nix}/bin/$program" "$@"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
'';
|
||||||
|
# nix-build = ''
|
||||||
|
# ${pkgs.nix-output-monitor}/bin/nom-build "$@"
|
||||||
|
# '';
|
||||||
|
nix-shell = ''
|
||||||
|
${pkgs.nix-output-monitor}/bin/nom-shell "$@"
|
||||||
|
'';
|
||||||
|
nix-store = ''
|
||||||
|
${nixWithNomArgs nix}/bin/nix-store "$@" \
|
||||||
|
|& ${pkgs.nix-output-monitor}/bin/nom --json
|
||||||
|
'';
|
||||||
|
} else
|
||||||
|
{ }) // (if nixos-rebuild != null then {
|
||||||
|
nixos-rebuild = ''
|
||||||
|
${pkgs.expect}/bin/unbuffer \
|
||||||
|
${
|
||||||
|
nixos-rebuild.override (old: { nix = nixWithNomArgs old.nix; })
|
||||||
|
}/bin/nixos-rebuild "$@" \
|
||||||
|
|& ${pkgs.nix-output-monitor}/bin/nom --json
|
||||||
|
'';
|
||||||
|
} else
|
||||||
|
{ }) // (if home-manager != null then {
|
||||||
|
home-manager = ''
|
||||||
|
PATH="${nixWithNomArgs pkgs.nix}/bin:$PATH" \
|
||||||
|
${pkgs.expect}/bin/unbuffer \
|
||||||
|
${home-manager}/bin/home-manager "$@" \
|
||||||
|
|& ${pkgs.nix-output-monitor}/bin/nom --json
|
||||||
|
'';
|
||||||
|
} else
|
||||||
|
{ }));
|
||||||
|
nomAliases = pkgs:
|
||||||
|
lib.attrsets.mapAttrs (name: pkg: "${pkg}/bin/${name}") (nixNomPkgs pkgs);
|
||||||
|
wrapWithNom = let inherit (pkgs) symlinkJoin;
|
||||||
|
in (pkgs:
|
||||||
|
symlinkJoin {
|
||||||
|
name = "wrapped-with-nom";
|
||||||
|
paths = (builtins.attrValues (nixNomPkgs pkgs))
|
||||||
|
++ (builtins.attrValues pkgs);
|
||||||
|
});
|
||||||
|
|
||||||
|
in {
|
||||||
|
# home.shellAliases =
|
||||||
|
# nomAliases { inherit (pkgs) nix nixos-rebuild home-manager; };
|
||||||
|
|
||||||
|
# or
|
||||||
|
|
||||||
|
# home.packages = [
|
||||||
|
# (lib.hiPrio
|
||||||
|
# (wrapWithNom { inherit (pkgs) nix nixos-rebuild home-manager; }))
|
||||||
|
# ];
|
||||||
|
}
|
||||||
44
dot_config/home-manager/home/nushell.nix
Normal file
44
dot_config/home-manager/home/nushell.nix
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
programs.nushell = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
envFile = {
|
||||||
|
text = ''
|
||||||
|
$env.EDITOR = hx
|
||||||
|
$env.GIT_EDITOR = $env.EDITOR
|
||||||
|
$env.DEBMAIL = "tyler@tylermayoff.com"
|
||||||
|
$env.XDG_CONFIG_HOME = "$HOME/.config"
|
||||||
|
$env.XDG_CACHE_HOME = "$HOME/.cache"
|
||||||
|
$env.XDG_DATA_HOME = "$HOME/.local/share"
|
||||||
|
$env.XDG_STATE_HOME = "$HOME/.local/state"
|
||||||
|
|
||||||
|
zoxide init nushell | save -f ~/.config/nushell/zoxide.nu
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
# Git
|
||||||
|
gc = "git commit";
|
||||||
|
gcm = "git commit -m";
|
||||||
|
gac = "git add . and git commit";
|
||||||
|
gacp = "gac and git push";
|
||||||
|
gs = "git status";
|
||||||
|
|
||||||
|
yac = "yadm add --interactive and yadm commit";
|
||||||
|
yacp = "yac and yadm push";
|
||||||
|
|
||||||
|
# nix
|
||||||
|
flake = "nix flake";
|
||||||
|
|
||||||
|
# home-manager
|
||||||
|
hm-upgrade = "nix flake update --flake ~/.config/home-manager/";
|
||||||
|
hm-update = "home-manager switch --impure";
|
||||||
|
};
|
||||||
|
|
||||||
|
configFile = {
|
||||||
|
text = ''
|
||||||
|
source ~/.config/nushell/zoxide.nu
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
7
dot_config/home-manager/home/wash/wash.nix
Normal file
7
dot_config/home-manager/home/wash/wash.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [../common.nix];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ventoy
|
||||||
|
];
|
||||||
|
}
|
||||||
52
dot_config/home-manager/neovim.nix
Normal file
52
dot_config/home-manager/neovim.nix
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
programs.neovim = {
|
||||||
|
# package = pkgs.neovim-nightly;
|
||||||
|
enable = false;
|
||||||
|
defaultEditor = false;
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
vimdiffAlias = true;
|
||||||
|
|
||||||
|
plugins = with pkgs.vimPlugins; [
|
||||||
|
# Color schemes
|
||||||
|
rose-pine
|
||||||
|
gruvbox-nvim
|
||||||
|
|
||||||
|
cmp-buffer
|
||||||
|
cmp-path
|
||||||
|
cmp_luasnip
|
||||||
|
cmp-nvim-lua
|
||||||
|
cmp-nvim-lsp
|
||||||
|
|
||||||
|
friendly-snippets
|
||||||
|
glow-nvim
|
||||||
|
|
||||||
|
nvim-tree-lua
|
||||||
|
|
||||||
|
luasnip
|
||||||
|
lsp-zero-nvim
|
||||||
|
nvim-dap
|
||||||
|
nvim-dap-ui
|
||||||
|
|
||||||
|
copilot-vim
|
||||||
|
|
||||||
|
todo-comments-nvim
|
||||||
|
nvim-treesitter-context
|
||||||
|
nvim-treesitter.withAllGrammars
|
||||||
|
nvim-lspconfig
|
||||||
|
nvim-cmp
|
||||||
|
harpoon
|
||||||
|
undotree
|
||||||
|
#mini-nvim
|
||||||
|
formatter-nvim
|
||||||
|
telescope-nvim
|
||||||
|
vim-fugitive
|
||||||
|
|
||||||
|
vim-just
|
||||||
|
];
|
||||||
|
|
||||||
|
#extraConfig = ''
|
||||||
|
# builtins.readFile /home/jayne/.config/nvim/extra_init.vim
|
||||||
|
#'';
|
||||||
|
};
|
||||||
|
}
|
||||||
179
dot_config/home-manager/nixos/mal/configuration.nix
Normal file
179
dot_config/home-manager/nixos/mal/configuration.nix
Normal file
|
|
@ -0,0 +1,179 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page, on
|
||||||
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
overlays = [
|
||||||
|
outputs.overlays.additions
|
||||||
|
outputs.overlays.modifications
|
||||||
|
outputs.overlays.unstable-packages
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix = let
|
||||||
|
flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
|
||||||
|
in {
|
||||||
|
settings = {
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
};
|
||||||
|
|
||||||
|
channel.enable = false;
|
||||||
|
|
||||||
|
registry = lib.mapAttrs (_: flake: {inherit flake;}) flakeInputs;
|
||||||
|
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
networking.hostName = "mal"; # Define your hostname.
|
||||||
|
# Pick only one of the below networking options.
|
||||||
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||||
|
# networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
# time.timeZone = "Europe/Amsterdam";
|
||||||
|
|
||||||
|
# Configure network proxy if necessary
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
# i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
# console = {
|
||||||
|
# font = "Lat2-Terminus16";
|
||||||
|
# keyMap = "us";
|
||||||
|
# useXkbConfig = true; # use xkb.options in tty.
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
# services.xserver.enable = true;
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
services.xserver.xkb.layout = "us";
|
||||||
|
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
# services.printing.enable = true;
|
||||||
|
|
||||||
|
# Enable sound.
|
||||||
|
# hardware.pulseaudio.enable = true;
|
||||||
|
# OR
|
||||||
|
# services.pipewire = {
|
||||||
|
# enable = true;
|
||||||
|
# pulse.enable = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
|
# services.libinput.enable = true;
|
||||||
|
|
||||||
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users.users.tyler = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = ["wheel"]; # Enable ‘sudo’ for the user.
|
||||||
|
shell = pkgs.fish;
|
||||||
|
};
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
helix # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
wget
|
||||||
|
yadm
|
||||||
|
restic
|
||||||
|
];
|
||||||
|
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
# programs.mtr.enable = true;
|
||||||
|
# programs.gnupg.agent = {
|
||||||
|
# enable = true;
|
||||||
|
# enableSSHSupport = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
systemd.timers."backup-serenity"= {
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "monthly";
|
||||||
|
Persistent = true;
|
||||||
|
Unit = "backup-serenity.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services."backup-serenity"= {
|
||||||
|
script = ''
|
||||||
|
# Remove keys
|
||||||
|
${./secrets.sh}
|
||||||
|
printf "\nBacking up nextcloud \n"
|
||||||
|
${pkgs.restic} -r "$RESTIC_REPOSITORY/NextCloud" backup --verbose --no-scan /mnt/user/NextCloud
|
||||||
|
${pkgs.restic} -r "$RESTIC_REPOSITORY/NextCloud" check --verbose
|
||||||
|
|
||||||
|
printf "\nBacking up Backups \n"
|
||||||
|
${pkgs.restic} -r "$RESTIC_REPOSITORY/Backups" backup --verbose --no-scan /mnt/user/Backups
|
||||||
|
${pkgs.restic} -r "$RESTIC_REPOSITORY/Backups" check --verbose
|
||||||
|
|
||||||
|
printf "\nBacking up appdata \n"
|
||||||
|
${pkgs.restic} -r "$RESTIC_REPOSITORY/Appdata" backup --verbose --no-scan /mnt/user/appdata
|
||||||
|
${pkgs.restic} -r "$RESTIC_REPOSITORY/Appdata" check --verbose
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
programs.fish.enable = true;
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# Copy the NixOS configuration file and link it from the resulting system
|
||||||
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
|
# accidentally delete configuration.nix.
|
||||||
|
# system.copySystemConfiguration = true;
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any reason,
|
||||||
|
# even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||||
|
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||||
|
# to actually do that.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your system is
|
||||||
|
# out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||||
|
# and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "24.05"; # Did you read the comment?
|
||||||
|
}
|
||||||
41
dot_config/home-manager/nixos/mal/hardware-configuration.nix
Normal file
41
dot_config/home-manager/nixos/mal/hardware-configuration.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = ["uhci_hcd" "ehci_pci" "ahci" "virtio_pci" "sr_mod" "virtio_blk"];
|
||||||
|
boot.initrd.kernelModules = [];
|
||||||
|
boot.kernelModules = ["kvm-amd"];
|
||||||
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/b44df0dd-174f-47b0-af88-fd66c6e7deb5";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/5564-A778";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = ["fmask=0022" "dmask=0022"];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
||||||
6
dot_config/home-manager/nixos/mal/private_secrets.sh
Normal file
6
dot_config/home-manager/nixos/mal/private_secrets.sh
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
***REMOVED***
|
||||||
|
***REMOVED***
|
||||||
|
***REMOVED***
|
||||||
|
***REMOVED***
|
||||||
|
***REMOVED***
|
||||||
|
|
||||||
15
dot_config/home-manager/nushell.nix
Normal file
15
dot_config/home-manager/nushell.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
programs.nushell = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
envFile = ''
|
||||||
|
$env.EDITOR = hx
|
||||||
|
$env.GIT_EDITOR = $env.EDITOR
|
||||||
|
$env.DEBMAIL = "tyler@tylermayoff.com"
|
||||||
|
$env.XDG_CONFIG_HOME = "$HOME/.config"
|
||||||
|
$env.XDG_CACHE_HOME = "$HOME/.cache"
|
||||||
|
$env.XDG_DATA_HOME = "$HOME/.local/share"
|
||||||
|
$env.XDG_STATE_HOME = "$HOME/.local/state"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
12
dot_config/home-manager/overlays/default.nix
Normal file
12
dot_config/home-manager/overlays/default.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{inputs, ...}: {
|
||||||
|
additions = final: _prev: import ../pkgs final.pkgs;
|
||||||
|
|
||||||
|
modifications = final: prev: {};
|
||||||
|
|
||||||
|
unstable-packages = final: _prev: {
|
||||||
|
unstable = import inputs.nixpkgs-unstable {
|
||||||
|
system = final.system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
2
dot_config/home-manager/package.nix
Normal file
2
dot_config/home-manager/package.nix
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
final: prev: {
|
||||||
|
}
|
||||||
2
dot_config/home-manager/pkgs/default.nix
Normal file
2
dot_config/home-manager/pkgs/default.nix
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
pkgs: {
|
||||||
|
}
|
||||||
1
dot_config/home-manager/symlink_result
Normal file
1
dot_config/home-manager/symlink_result
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/x4vzxk2s9vr08kb9iybhhjy4nvsy4zgj-home-manager
|
||||||
41
private_dot_local/bin/executable_,daily_backup
Normal file
41
private_dot_local/bin/executable_,daily_backup
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/bin/env fish
|
||||||
|
|
||||||
|
set current_date $(date +%Y-%m-%d)
|
||||||
|
|
||||||
|
set log_dir "$XDG_STATE_HOME/logs/backups"
|
||||||
|
set log_file "$log_dir/backup_$current_date.log"
|
||||||
|
|
||||||
|
set last $(restic snapshots | tail -3 | head -1 | awk '{print $2}')
|
||||||
|
if test $status != 0
|
||||||
|
echo "can't find last snapshot" | tee -a $log_file
|
||||||
|
notify-send -a "backup" "Failed to get last snapshot for backups" -u critical
|
||||||
|
exit $status
|
||||||
|
end
|
||||||
|
|
||||||
|
function exit_handler
|
||||||
|
# Restore std...
|
||||||
|
# exec 2>&4 1>&3
|
||||||
|
end
|
||||||
|
|
||||||
|
# Setup logging
|
||||||
|
mkdir -p $log_dir || true
|
||||||
|
|
||||||
|
trap exit_handler 0 1 2 3
|
||||||
|
|
||||||
|
printf "Current date: %s. Last snapshot: %s\n" $current_date $last | tee -a $log_file
|
||||||
|
|
||||||
|
if test "$last" != "$current_date"
|
||||||
|
set not_id $(notify-send -a "backup" "Daily backup $current_date started." -p)
|
||||||
|
restic backup -v "$HOME" --exclude-file "$XDG_CONFIG_HOME/restic/ignore" | tee -a $log_file
|
||||||
|
if test $status != 0
|
||||||
|
echo "Backup failed." | tee -a $log_file
|
||||||
|
notify-send -a "backup" "Backup $current_date failed!" -u critical -r $not_id
|
||||||
|
exit $status
|
||||||
|
end
|
||||||
|
|
||||||
|
printf "Backup success\n." | tee -a $log_file
|
||||||
|
|
||||||
|
notify-send -a "backup" "Daily backup $current_date succeeded." -r $not_id
|
||||||
|
else
|
||||||
|
printf "No backup needed" | tee -a $log_file
|
||||||
|
end
|
||||||
6
private_dot_local/bin/executable_,git-prune
Normal file
6
private_dot_local/bin/executable_,git-prune
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
echo "Cleaning remote branches"
|
||||||
|
git remote prune origin
|
||||||
|
echo "Cleaning local branches"
|
||||||
|
git for-each-ref --format '%(refname:short)' refs/heads | grep -v master | xargs git branch -D
|
||||||
5
private_dot_local/bin/executable_,restic-backup.sh
Normal file
5
private_dot_local/bin/executable_,restic-backup.sh
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
restic backup "$HOME" --exclude-file "$XDG_CONFIG_HOME"/restic/ignore --exclude-caches
|
||||||
|
restic unlock
|
||||||
|
restic forget --keep-daily 7 --keep-weekly 4 --prune
|
||||||
4
private_dot_local/bin/executable_,restic-lastbackup.sh
Normal file
4
private_dot_local/bin/executable_,restic-lastbackup.sh
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
restic snapshots | tail -3 | head -1 | awk '{print "Last backup: " $2 " " $3}'
|
||||||
|
restic check
|
||||||
10
private_dot_local/bin/executable_,yupdate.fish
Normal file
10
private_dot_local/bin/executable_,yupdate.fish
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/env fish
|
||||||
|
|
||||||
|
yadm pull
|
||||||
|
|
||||||
|
pushd $HOME/.local/share/yadm/repo.git
|
||||||
|
git-forgit add
|
||||||
|
yadm commit
|
||||||
|
popd
|
||||||
|
|
||||||
|
yadm push
|
||||||
Loading…
Add table
Add a link
Reference in a new issue