Add 'users/glittershark/system/' from commit '3b174300ae60f63f50427cde3bfd680fd3043c3a'
git-subtree-dir: users/glittershark/system git-subtree-mainline:85d82a9dc2
git-subtree-split:3b174300ae
This commit is contained in:
commit
81564185e9
49 changed files with 3802 additions and 0 deletions
1
users/glittershark/system/.gitignore
vendored
Normal file
1
users/glittershark/system/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
**/result
|
|
@ -0,0 +1,8 @@
|
|||
with import <nixpkgs> {};
|
||||
fetchgit {
|
||||
url = "https://github.com/glittershark/dotfiles.git";
|
||||
rev = "e0c7f2592fbc2f9942763d2146d362a1314630e9";
|
||||
# date = "2020-03-25T20:38:51-04:00";
|
||||
sha256 = "126zy4ff6nl2vma2s74waksim7j5h3n6qpaxnnn17vkc1cq0fcd9";
|
||||
fetchSubmodules = false;
|
||||
}
|
18
users/glittershark/system/home/common/solarized.nix
Normal file
18
users/glittershark/system/home/common/solarized.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
rec {
|
||||
base03 = "#002B36";
|
||||
base02 = "#073642";
|
||||
base01 = "#586e75";
|
||||
base00 = "#657b83";
|
||||
base0 = "#839496";
|
||||
base1 = "#93a1a1";
|
||||
base2 = "#eee8d5";
|
||||
base3 = "#fdf6e3";
|
||||
yellow = "#b58900";
|
||||
orange = "#cb4b16";
|
||||
red = "#dc322f";
|
||||
magenta = "#d33682";
|
||||
violet = "#6c71c4";
|
||||
blue = "#268bd2";
|
||||
cyan = "#2aa198";
|
||||
green = "#859900";
|
||||
}
|
20
users/glittershark/system/home/home.nix
Normal file
20
users/glittershark/system/home/home.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
(throw "Pick a machine from ./machines")
|
||||
];
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
# This value determines the Home Manager release that your
|
||||
# configuration is compatible with. This helps avoid breakage
|
||||
# when a new Home Manager release introduces backwards
|
||||
# incompatible changes.
|
||||
#
|
||||
# You can update Home Manager without changing this value. See
|
||||
# the Home Manager release notes for a list of state version
|
||||
# changes in each release.
|
||||
home.stateVersion = "19.09";
|
||||
}
|
45
users/glittershark/system/home/machines/chupacabra.nix
Normal file
45
users/glittershark/system/home/machines/chupacabra.nix
Normal file
|
@ -0,0 +1,45 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
laptopKeyboardId = "25";
|
||||
in {
|
||||
imports = [
|
||||
../platforms/linux.nix
|
||||
../modules/common.nix
|
||||
../modules/games.nix
|
||||
../modules/rtlsdr.nix
|
||||
|
||||
~/code/urb/urbos/home
|
||||
];
|
||||
|
||||
# for when hacking
|
||||
programs.home-manager.path = "/home/grfn/code/home-manager";
|
||||
|
||||
system.machine = {
|
||||
wirelessInterface = "wlp59s0";
|
||||
i3FontSize = 9;
|
||||
};
|
||||
|
||||
systemd.user.services.laptop-keyboard = {
|
||||
Unit = {
|
||||
Description = "Swap caps+escape and alt+super, but only on the built-in laptop keyboard";
|
||||
After = [ "graphical-session-pre.target" ];
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
};
|
||||
|
||||
Install = { WantedBy = [ "graphical-session.target" ]; };
|
||||
|
||||
Service = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
ExecStart = (
|
||||
"${pkgs.xorg.setxkbmap}/bin/setxkbmap "
|
||||
+ "-device ${laptopKeyboardId} "
|
||||
+ "-option caps:swapescape "
|
||||
+ "-option compose:ralt "
|
||||
+ "-option altwin:swap_alt_win"
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
urbint.projectPath = "code/urb";
|
||||
}
|
17
users/glittershark/system/home/machines/dobharchu.nix
Normal file
17
users/glittershark/system/home/machines/dobharchu.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../platforms/darwin.nix
|
||||
../modules/common.nix
|
||||
../modules/games.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
coreutils
|
||||
gnupg
|
||||
nix-prefetch-github
|
||||
pass
|
||||
pinentry_mac
|
||||
];
|
||||
}
|
49
users/glittershark/system/home/modules/alacritty.nix
Normal file
49
users/glittershark/system/home/modules/alacritty.nix
Normal file
|
@ -0,0 +1,49 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
alacritty
|
||||
];
|
||||
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
font.size = 6;
|
||||
font.normal.family = "Meslo LGSDZ Nerd Font";
|
||||
|
||||
draw_bold_text_with_bright_colors = false;
|
||||
|
||||
colors = with import ../common/solarized.nix; rec {
|
||||
# Default colors
|
||||
primary = {
|
||||
background = base3;
|
||||
foreground = base00;
|
||||
};
|
||||
|
||||
cursor = {
|
||||
text = base3;
|
||||
cursor = base00;
|
||||
};
|
||||
|
||||
# Normal colors
|
||||
normal = {
|
||||
inherit red green yellow blue magenta cyan;
|
||||
black = base02;
|
||||
white = base2;
|
||||
};
|
||||
|
||||
# Bright colors
|
||||
# bright = normal;
|
||||
bright = {
|
||||
black = base03;
|
||||
red = orange;
|
||||
green = base01;
|
||||
yellow = base00;
|
||||
blue = base0;
|
||||
magenta = violet;
|
||||
cyan = base1;
|
||||
white = base3;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
60
users/glittershark/system/home/modules/alsi.nix
Normal file
60
users/glittershark/system/home/modules/alsi.nix
Normal file
|
@ -0,0 +1,60 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
let alsi = pkgs.callPackage ~/code/system/pkgs/alsi {};
|
||||
in
|
||||
{
|
||||
home.packages = [ alsi ];
|
||||
|
||||
xdg.configFile."alsi/alsi.logo" = {
|
||||
source = ./nixos-logo.txt;
|
||||
force = true;
|
||||
};
|
||||
|
||||
xdg.configFile."alsi/alsi.conf" = {
|
||||
force = true;
|
||||
text = ''
|
||||
#!${pkgs.perl}/bin/perl
|
||||
|
||||
scalar {
|
||||
ALSI_VERSION => "0.4.8",
|
||||
COLORS_FILE => "/${config.home.homeDirectory}/.config/alsi/alsi.colors",
|
||||
DE_FILE => "/${config.home.homeDirectory}/.config/alsi/alsi.de",
|
||||
DEFAULT_COLOR_BOLD => "blue",
|
||||
DEFAULT_COLOR_NORMAL => "blue",
|
||||
DF_COMMAND => "df -Th -x sys -x tmpfs -x devtmpfs &>/dev/stdout",
|
||||
GTK2_RC_FILE => "/${config.home.homeDirectory}/.gtkrc-2.0",
|
||||
GTK3_RC_FILE => "/${config.home.homeDirectory}/.config/gtk-3.0/settings.ini",
|
||||
LOGO_FILE => "/${config.home.homeDirectory}/.config/alsi/alsi.logo",
|
||||
OUTPUT_FILE => "/${config.home.homeDirectory}/.config/alsi/alsi.output",
|
||||
# PACKAGES_PATH => "/var/lib/pacman/local/",
|
||||
PS_COMMAND => "ps -A",
|
||||
USAGE_COLORS => 0,
|
||||
USAGE_COLORS_BOLD => 0,
|
||||
USAGE_PRECENT_GREEN => 50,
|
||||
USAGE_PRECENT_RED => 100,
|
||||
USAGE_PRECENT_YELLOW => 85,
|
||||
USE_LOGO_FROM_FILE => 1,
|
||||
USE_VALUES_COLOR => 0,
|
||||
WM_FILE => "/${config.home.homeDirectory}/.config/alsi/alsi.wm",
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
xdg.configFile."alsi/alsi.colors".text = ''
|
||||
#!${pkgs.perl}/bin/perl
|
||||
|
||||
# Colors for alsi
|
||||
|
||||
scalar {
|
||||
black => {normal => "\e[0;30m", bold => "\e[1;30m"},
|
||||
red => {normal => "\e[0;31m", bold => "\e[1;31m"},
|
||||
green => {normal => "\e[0;32m", bold => "\e[1;32m"},
|
||||
yellow => {normal => "\e[0;33m", bold => "\e[1;33m"},
|
||||
default => {normal => "\e[0;34m", bold => "\e[1;34m"},
|
||||
blue => {normal => "\e[0;34m", bold => "\e[1;34m"},
|
||||
purple => {normal => "\e[0;35m", bold => "\e[1;35m"},
|
||||
cyan => {normal => "\e[0;36m", bold => "\e[1;36m"},
|
||||
white => {normal => "\e[0;37m", bold => "\e[1;37m"},
|
||||
reset => "\e[0m",
|
||||
}
|
||||
'';
|
||||
}
|
49
users/glittershark/system/home/modules/common.nix
Normal file
49
users/glittershark/system/home/modules/common.nix
Normal file
|
@ -0,0 +1,49 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
# Everything in here needs to work on linux or darwin
|
||||
|
||||
{
|
||||
imports = [
|
||||
../modules/shell.nix
|
||||
../modules/development.nix
|
||||
../modules/emacs.nix
|
||||
../modules/vim.nix
|
||||
../modules/tarsnap.nix
|
||||
../modules/twitter.nix
|
||||
../modules/lib/cloneRepo.nix
|
||||
];
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
programs.password-store.enable = true;
|
||||
|
||||
grfn.impure.clonedRepos.passwordStore = {
|
||||
github = "glittershark/pass";
|
||||
path = ".local/share/password-store";
|
||||
};
|
||||
|
||||
urbint.projectPath = "code/urb";
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# System utilities
|
||||
bat
|
||||
htop
|
||||
killall
|
||||
bind
|
||||
zip unzip
|
||||
tree
|
||||
ncat
|
||||
bc
|
||||
|
||||
# Security
|
||||
gnupg
|
||||
keybase
|
||||
openssl
|
||||
|
||||
# Nix things
|
||||
nixfmt
|
||||
nix-prefetch-github
|
||||
nix-review
|
||||
cachix
|
||||
];
|
||||
}
|
169
users/glittershark/system/home/modules/development.nix
Normal file
169
users/glittershark/system/home/modules/development.nix
Normal file
|
@ -0,0 +1,169 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
clj2nix = pkgs.callPackage (pkgs.fetchFromGitHub {
|
||||
owner = "hlolli";
|
||||
repo = "clj2nix";
|
||||
rev = "3ab3480a25e850b35d1f532a5e4e7b3202232383";
|
||||
sha256 = "1lry026mlpxp1j563qs13nhxf37i2zpl7lh0lgfdwc44afybqka6";
|
||||
}) {};
|
||||
|
||||
pg-dump-upsert = pkgs.buildGoModule rec {
|
||||
pname = "pg-dump-upsert";
|
||||
version = "165258deaebded5e9b88f7a0acf3a4b7350e7bf4";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "tomyl";
|
||||
repo = "pg-dump-upsert";
|
||||
rev = version;
|
||||
sha256 = "1an4h8jjbj3r618ykjwk9brii4h9cxjqy47c4c8rivnvhimgf4wm";
|
||||
};
|
||||
|
||||
modSha256 = "07ci2726nrn8qjvwcypk6nf8zqmfnmvch8l28bmgj7hpfrbyb424";
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
imports = [
|
||||
./lib/zshFunctions.nix
|
||||
./development/kube.nix
|
||||
./development/urbint.nix
|
||||
./development/agda.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
jq
|
||||
yq
|
||||
gitAndTools.hub
|
||||
gitAndTools.tig
|
||||
shellcheck
|
||||
httpie
|
||||
entr
|
||||
gnumake
|
||||
inetutils
|
||||
loc
|
||||
|
||||
clj2nix
|
||||
|
||||
pg-dump-upsert
|
||||
|
||||
(import ../pkgs/clang-tools { inherit pkgs; })
|
||||
] ++ optional (stdenv.isLinux) julia;
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
package = pkgs.gitFull;
|
||||
userEmail = "root@gws.fyi";
|
||||
userName = "Griffin Smith";
|
||||
ignores = [
|
||||
"*.sw*"
|
||||
".classpath"
|
||||
".project"
|
||||
".settings/"
|
||||
".dir-locals.el"
|
||||
".stack-work-profiling"
|
||||
".projectile"
|
||||
];
|
||||
extraConfig = {
|
||||
github.user = "glittershark";
|
||||
merge.conflictstyle = "diff3";
|
||||
};
|
||||
|
||||
delta = {
|
||||
enable = true;
|
||||
options = [
|
||||
"--theme 'Solarized (light)'"
|
||||
"--hunk-style" "plain"
|
||||
"--commit-style" "box"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
home.file.".psqlrc".text = ''
|
||||
\set QUIET 1
|
||||
\timing
|
||||
\set ON_ERROR_ROLLBACK interactive
|
||||
\set VERBOSITY verbose
|
||||
\x auto
|
||||
\set PROMPT1 '%[%033[1m%]%M/%/%R%[%033[0m%]%# '
|
||||
\set PROMPT2 '...%# '
|
||||
\set HISTFILE ~/.psql_history- :DBNAME
|
||||
\set HISTCONTROL ignoredups
|
||||
\pset null [null]
|
||||
\unset QUIET
|
||||
'';
|
||||
|
||||
programs.readline = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
set editing-mode vi
|
||||
'';
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
shellAliases = {
|
||||
# Git
|
||||
"gwip" = "git add . && git commit -am wip";
|
||||
"gpr" = "g pull-request";
|
||||
"gcl" = "git clone";
|
||||
"grs" = "gr --soft";
|
||||
"grhh" = "grh HEAD";
|
||||
"grh" = "gr --hard";
|
||||
"gr" = "git reset";
|
||||
"gcb" = "gc -b";
|
||||
"gco" = "gc";
|
||||
"gcd" = "gc development";
|
||||
"gcm" = "gc master";
|
||||
"gc" = "git checkout";
|
||||
"gbg" = "git branch | grep";
|
||||
"gba" = "git branch -a";
|
||||
"gb" = "git branch";
|
||||
"gcv" = "git commit --verbose";
|
||||
"gci" = "git commit";
|
||||
"gm" = "git merge";
|
||||
"gdc" = "gd --cached";
|
||||
"gd" = "git diff";
|
||||
"gsl" = "git stash list";
|
||||
"gss" = "git show stash";
|
||||
"gsad" = "git stash drop";
|
||||
"gsa" = "git stash";
|
||||
"gst" = "gs";
|
||||
"gs" = "git status";
|
||||
"gg" = "gl --decorate --oneline --graph --date-order --all";
|
||||
"gl" = "git log";
|
||||
"gf" = "git fetch";
|
||||
"gur" = "gu --rebase";
|
||||
"gu" = "git pull";
|
||||
"gpf" = "gp -f";
|
||||
"gpa" = "gp --all";
|
||||
"gpu" = "git push -u origin \"$(git symbolic-ref --short HEAD)\"";
|
||||
"gp" = "git push";
|
||||
"ganw" = "git diff -w --no-color | git apply --cached --ignore-whitespace";
|
||||
"ga" = "git add";
|
||||
"gnp" = "git --no-pager";
|
||||
"g" = "git";
|
||||
"git" = "hub";
|
||||
"grim" = "git fetch && git rebase -i origin/master";
|
||||
"grc" = "git rebase --continue";
|
||||
"gcan" = "git commit --amend --no-edit";
|
||||
"grl" = "git reflog";
|
||||
|
||||
# Haskell
|
||||
"cnb" = "cabal new-build";
|
||||
"cob" = "cabal old-build";
|
||||
"cnr" = "cabal new-run";
|
||||
"cor" = "cabal old-run";
|
||||
"ho" = "hoogle";
|
||||
};
|
||||
|
||||
functions = {
|
||||
gdelmerged = ''
|
||||
git branch --merged | egrep -v 'master' | tr -d '+ ' | xargs git branch -d
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
61
users/glittershark/system/home/modules/development/agda.nix
Normal file
61
users/glittershark/system/home/modules/development/agda.nix
Normal file
|
@ -0,0 +1,61 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
nixpkgs-unstable = import <nixpkgs-unstable> {};
|
||||
|
||||
agda-categories = with nixpkgs-unstable.agdaPackages; mkDerivation rec {
|
||||
pname = "agda-categories";
|
||||
version = "2128fab";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "agda";
|
||||
repo = "agda-categories";
|
||||
rev = version;
|
||||
sha256 = "08mc20qaz9vp5rhi60rh8wvjkg5aby3bgwwdhfnxha1663qf1q24";
|
||||
};
|
||||
|
||||
buildInputs = [ standard-library ];
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
imports = [
|
||||
../lib/cloneRepo.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
(nixpkgs-unstable.agda.withPackages
|
||||
(p: with p; [
|
||||
p.standard-library
|
||||
|
||||
]))
|
||||
];
|
||||
|
||||
grfn.impure.clonedRepos = {
|
||||
agda-stdlib = {
|
||||
github = "agda/agda-stdlib";
|
||||
path = "code/agda-stdlib";
|
||||
};
|
||||
|
||||
agda-categories = {
|
||||
github = "agda/agda-categories";
|
||||
path = "code/agda-categories";
|
||||
};
|
||||
|
||||
categories-examples = {
|
||||
github = "agda/categories-examples";
|
||||
path = "code/categories-examples";
|
||||
};
|
||||
};
|
||||
|
||||
home.file.".agda/defaults".text = ''
|
||||
standard-library
|
||||
'';
|
||||
|
||||
home.file.".agda/libraries".text = ''
|
||||
${config.home.homeDirectory}/code/agda-stdlib/standard-library.agda-lib
|
||||
${config.home.homeDirectory}/code/agda-categories/agda-categories.agda-lib
|
||||
'';
|
||||
|
||||
}
|
37
users/glittershark/system/home/modules/development/kube.nix
Normal file
37
users/glittershark/system/home/modules/development/kube.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
pkgs-unstable = import <nixpkgs-unstable> {};
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
kubectl
|
||||
kubetail
|
||||
sops
|
||||
pkgs-unstable.kubie
|
||||
# pkgs-unstable.argocd # provided by urbos
|
||||
];
|
||||
|
||||
programs.zsh.shellAliases = {
|
||||
"kc" = "kubectl";
|
||||
"kg" = "kc get";
|
||||
"kga" = "kc get --all-namespaces";
|
||||
"kpd" = "kubectl get pods";
|
||||
"kpa" = "kubectl get pods --all-namespaces";
|
||||
"klf" = "kubectl logs -f";
|
||||
"kdep" = "kubectl get deployments";
|
||||
"ked" = "kubectl edit deployment";
|
||||
"kpw" = "kubectl get pods -w";
|
||||
"kew" = "kubectl get events -w";
|
||||
"kdel" = "kubectl delete";
|
||||
"knw" = "kubectl get nodes -w";
|
||||
"kev" = "kubectl get events --sort-by='.metadata.creationTimestamp'";
|
||||
|
||||
"arsy" = "argocd app sync --prune";
|
||||
};
|
||||
|
||||
home.file.".kube/kubie.yaml".text = ''
|
||||
shell: zsh
|
||||
prompt:
|
||||
zsh_use_rps1: true
|
||||
'';
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
# urbint-only dev stuff
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
yarn2nix = (import (pkgs.fetchFromGitHub {
|
||||
owner = "moretea";
|
||||
repo = "yarn2nix";
|
||||
rev = "9e7279edde2a4e0f5ec04c53f5cd64440a27a1ae";
|
||||
sha256 = "0zz2lrwn3y3rb8gzaiwxgz02dvy3s552zc70zvfqc0zh5dhydgn7";
|
||||
}) { inherit pkgs; }).yarn2nix;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
yarn2nix
|
||||
python36
|
||||
python36Packages.ipython
|
||||
];
|
||||
|
||||
programs.zsh = {
|
||||
shellAliases = {
|
||||
ipy = "ipython";
|
||||
amerge = "alembic merge heads";
|
||||
};
|
||||
|
||||
functions = {
|
||||
aup = "alembic upgrade \${1:-head}";
|
||||
adown = "alembic downgrade \${1:--1}";
|
||||
};
|
||||
};
|
||||
|
||||
programs.git = {
|
||||
extraConfig.filter.black100to80 =
|
||||
let inherit (pkgs.python36Packages) black; in {
|
||||
clean = "${black}/bin/black --target-version py36 -l 100 -";
|
||||
smudge = "${black}/bin/black --target-version py36 -l 80 -";
|
||||
};
|
||||
|
||||
|
||||
includes = [{
|
||||
condition = "gitdir:~/code/urb/";
|
||||
contents = {
|
||||
user.email = "grfn@urbint.com";
|
||||
};
|
||||
}];
|
||||
};
|
||||
|
||||
home.file.".ipython/profile_default/ipython_config.py".text = ''
|
||||
c.InteractiveShellApp.exec_lines = ['%autoreload 2']
|
||||
c.InteractiveShellApp.extensions = ['autoreload']
|
||||
c.TerminalInteractiveShell.editing_mode = 'vi'
|
||||
'';
|
||||
}
|
82
users/glittershark/system/home/modules/emacs.nix
Normal file
82
users/glittershark/system/home/modules/emacs.nix
Normal file
|
@ -0,0 +1,82 @@
|
|||
{ pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
# doom-emacs = pkgs.callPackage (builtins.fetchTarball {
|
||||
# url = https://github.com/vlaci/nix-doom-emacs/archive/master.tar.gz;
|
||||
# }) {
|
||||
# doomPrivateDir = ./doom.d; # Directory containing your config.el init.el
|
||||
# # and packages.el files
|
||||
# };
|
||||
in {
|
||||
imports = [ ./lib/cloneRepo.nix ];
|
||||
|
||||
# home.packages = [ doom-emacs ];
|
||||
# home.file.".emacs.d/init.el".text = ''
|
||||
# (load "default.el")
|
||||
# '';
|
||||
#
|
||||
|
||||
config = mkMerge [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
# LaTeX (for org export)
|
||||
(pkgs.texlive.combine {
|
||||
inherit (pkgs.texlive)
|
||||
scheme-basic collection-fontsrecommended ulem
|
||||
fncychap titlesec tabulary varwidth framed fancyvrb float parskip
|
||||
wrapfig upquote capt-of needspace;
|
||||
})
|
||||
|
||||
ispell
|
||||
|
||||
ripgrep
|
||||
coreutils
|
||||
fd
|
||||
clang
|
||||
gnutls
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(import (builtins.fetchTarball {
|
||||
url = "https://github.com/nix-community/emacs-overlay/archive/54afb061bdd12c61bbfcc13bad98b7a3aab7d8d3.tar.gz";
|
||||
sha256 = "0hrbg65d5h0cb0nky7a46md7vlvhajq1hf0328l2f7ln9hznqz6j";
|
||||
}))
|
||||
];
|
||||
|
||||
programs.emacs = {
|
||||
enable = true;
|
||||
package = pkgs.emacsUnstable;
|
||||
};
|
||||
|
||||
grfn.impure.clonedRepos = {
|
||||
orgClubhouse = {
|
||||
github = "glittershark/org-clubhouse";
|
||||
path = "code/org-clubhouse";
|
||||
};
|
||||
|
||||
doomEmacs = {
|
||||
github = "hlissner/doom-emacs";
|
||||
path = ".emacs.d";
|
||||
after = ["emacs.d"];
|
||||
onClone = "bin/doom install";
|
||||
};
|
||||
|
||||
"emacs.d" = {
|
||||
github = "glittershark/emacs.d";
|
||||
path = ".doom.d";
|
||||
after = ["orgClubhouse"];
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
(mkIf pkgs.stdenv.isLinux {
|
||||
# Notes
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
tray = true;
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
54
users/glittershark/system/home/modules/email.nix
Normal file
54
users/glittershark/system/home/modules/email.nix
Normal file
|
@ -0,0 +1,54 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
# programs.mbsync.enable = true;
|
||||
programs.lieer.enable = true;
|
||||
programs.notmuch.enable = true;
|
||||
services.lieer.enable = true;
|
||||
programs.msmtp.enable = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
mu
|
||||
msmtp
|
||||
];
|
||||
|
||||
accounts.email.maildirBasePath = "mail";
|
||||
accounts.email.accounts =
|
||||
let
|
||||
mkAccount = params@{ passEntry, ... }: {
|
||||
realName = "Griffin Smith";
|
||||
passwordCommand = "pass ${passEntry}";
|
||||
|
||||
flavor = "gmail.com";
|
||||
|
||||
imapnotify = {
|
||||
enable = true;
|
||||
boxes = [ "Inbox" ];
|
||||
};
|
||||
|
||||
gpg = {
|
||||
key = "0F11A989879E8BBBFDC1E23644EF5B5E861C09A7";
|
||||
signByDefault = true;
|
||||
};
|
||||
|
||||
# mbsync.enable = true;
|
||||
notmuch.enable = true;
|
||||
lieer = {
|
||||
enable = true;
|
||||
sync.enable = true;
|
||||
};
|
||||
msmtp.enable = true;
|
||||
} // builtins.removeAttrs params ["passEntry"];
|
||||
in {
|
||||
work = mkAccount {
|
||||
primary = true;
|
||||
address = "griffin@urbint.com";
|
||||
aliases = [ "grfn@urbint.com" ];
|
||||
passEntry = "urbint/msmtp-app-password";
|
||||
};
|
||||
|
||||
personal = mkAccount {
|
||||
address = "root@gws.fyi";
|
||||
passEntry = "root-gws-msmtp";
|
||||
};
|
||||
};
|
||||
}
|
22
users/glittershark/system/home/modules/firefox.nix
Normal file
22
users/glittershark/system/home/modules/firefox.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
|
||||
xdg.mimeApps = rec {
|
||||
enable = true;
|
||||
defaultApplications = {
|
||||
"text/html" = [ "firefox.desktop" ];
|
||||
"x-scheme-handler/http" = [ "firefox.desktop" ];
|
||||
"x-scheme-handler/https" = [ "firefox.desktop" ];
|
||||
"x-scheme-handler/ftp" = [ "firefox.desktop" ];
|
||||
"x-scheme-handler/chrome" = [ "firefox.desktop" ];
|
||||
"application/x-extension-htm" = [ "firefox.desktop" ];
|
||||
"application/x-extension-html" = [ "firefox.desktop" ];
|
||||
"application/x-extension-shtml" = [ "firefox.desktop" ];
|
||||
"application/xhtml+xml" = [ "firefox.desktop" ];
|
||||
"application/x-extension-xhtml" = [ "firefox.desktop" ];
|
||||
"application/x-extension-xht" = [ "firefox.desktop" ];
|
||||
};
|
||||
associations.added = defaultApplications;
|
||||
};
|
||||
}
|
58
users/glittershark/system/home/modules/games.nix
Normal file
58
users/glittershark/system/home/modules/games.nix
Normal file
|
@ -0,0 +1,58 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with pkgs;
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
df-orig = dwarf-fortress-packages.dwarf-fortress-original;
|
||||
|
||||
df-full = (dwarf-fortress-packages.dwarf-fortress-full.override {
|
||||
theme = null;
|
||||
enableIntro = false;
|
||||
enableFPS = true;
|
||||
});
|
||||
|
||||
init = runCommand "init.txt" {} ''
|
||||
substitute "${df-orig}/data/init/init.txt" $out \
|
||||
--replace "[INTRO:YES]" "[INTRO:NO]" \
|
||||
--replace "[VOLUME:255]" "[VOLUME:0]" \
|
||||
--replace "[FPS:NO]" "[FPS:YES]"
|
||||
'';
|
||||
|
||||
d_init = runCommand "d_init.txt" {} ''
|
||||
substitute "${df-orig}/data/init/d_init.txt" $out \
|
||||
--replace "[AUTOSAVE:NONE]" "[AUTOSAVE:SEASONAL]" \
|
||||
--replace "[AUTOSAVE_PAUSE:NO]" "[AUTOSAVE_PAUSE:YES]" \
|
||||
--replace "[INITIAL_SAVE:NO]" "[INITIAL_SAVE:YES]" \
|
||||
--replace "[EMBARK_WARNING_ALWAYS:NO]" "[EMBARK_WARNING_ALWAYS:YES]" \
|
||||
--replace "[VARIED_GROUND_TILES:YES]" "[VARIED_GROUND_TILES:NO]" \
|
||||
--replace "[SHOW_FLOW_AMOUNTS:NO]" "[SHOW_FLOW_AMOUNTS:YES]"
|
||||
'';
|
||||
|
||||
df = runCommand "dwarf-fortress" {} ''
|
||||
mkdir -p $out/bin
|
||||
sed \
|
||||
-e '4icp -f ${init} "$DF_DIR/data/init/init.txt"' \
|
||||
-e '4icp -f ${d_init} "$DF_DIR/data/init/d_init.txt"' \
|
||||
< "${df-full}/bin/dwarf-fortress" >"$out/bin/dwarf-fortress"
|
||||
|
||||
shopt -s extglob
|
||||
ln -s ${df-full}/bin/!(dwarf-fortress) $out/bin
|
||||
|
||||
chmod +x $out/bin/dwarf-fortress
|
||||
'';
|
||||
|
||||
in mkMerge [
|
||||
{
|
||||
home.packages = [
|
||||
crawl
|
||||
];
|
||||
}
|
||||
(mkIf stdenv.isLinux {
|
||||
home.packages = [
|
||||
df
|
||||
];
|
||||
})
|
||||
]
|
||||
|
324
users/glittershark/system/home/modules/i3.nix
Normal file
324
users/glittershark/system/home/modules/i3.nix
Normal file
|
@ -0,0 +1,324 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
mod = "Mod4";
|
||||
solarized = import ../common/solarized.nix;
|
||||
# TODO pull this out into lib
|
||||
emacsclient = eval: pkgs.writeShellScript "emacsclient-eval" ''
|
||||
msg=$(emacsclient --eval '${eval}' 2>&1)
|
||||
echo "''${msg:1:-1}"
|
||||
'';
|
||||
screenlayout = {
|
||||
home = pkgs.writeShellScript "screenlayout_home.sh" ''
|
||||
xrandr \
|
||||
--output eDP1 --mode 3840x2160 --pos 0x0 --rotate normal \
|
||||
--output DP1 --primary --mode 3840x2160 --pos 0x2160 --rotate normal \
|
||||
--output DP2 --off --output DP3 --off --output VIRTUAL1 --off
|
||||
'';
|
||||
};
|
||||
in {
|
||||
options = with lib; {
|
||||
system.machine.wirelessInterface = mkOption {
|
||||
description = ''
|
||||
Name of the primary wireless interface. Used by i3status, etc.
|
||||
'';
|
||||
default = "wlp3s0";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
system.machine.i3FontSize = mkOption {
|
||||
description = "Font size to use in i3 window decorations etc.";
|
||||
default = 6;
|
||||
type = types.int;
|
||||
};
|
||||
};
|
||||
|
||||
config =
|
||||
let decorationFont = "MesloLGSDZ ${toString config.system.machine.i3FontSize}"; in
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
rofi
|
||||
rofi-pass
|
||||
python38Packages.py3status
|
||||
i3lock
|
||||
dconf # for gtk
|
||||
|
||||
# Screenshots
|
||||
maim
|
||||
|
||||
# GIFs
|
||||
picom
|
||||
peek
|
||||
];
|
||||
|
||||
xsession.scriptPath = ".hm-xsession";
|
||||
xsession.windowManager.i3 = {
|
||||
enable = true;
|
||||
config = {
|
||||
modifier = mod;
|
||||
keybindings = lib.mkOptionDefault rec {
|
||||
"${mod}+h" = "focus left";
|
||||
"${mod}+j" = "focus down";
|
||||
"${mod}+k" = "focus up";
|
||||
"${mod}+l" = "focus right";
|
||||
"${mod}+semicolon" = "focus parent";
|
||||
|
||||
"${mod}+Shift+h" = "move left";
|
||||
"${mod}+Shift+j" = "move down";
|
||||
"${mod}+Shift+k" = "move up";
|
||||
"${mod}+Shift+l" = "move right";
|
||||
|
||||
"${mod}+Shift+x" = "kill";
|
||||
|
||||
"${mod}+Return" = "exec alacritty";
|
||||
|
||||
"${mod}+Shift+s" = "split h";
|
||||
"${mod}+Shift+v" = "split v";
|
||||
|
||||
"${mod}+f" = "fullscreen";
|
||||
|
||||
"${mod}+Shift+r" = "restart";
|
||||
|
||||
"${mod}+r" = "mode resize";
|
||||
|
||||
# Marks
|
||||
"${mod}+Shift+m" = ''exec i3-input -F "mark %s" -l 1 -P 'Mark: ' '';
|
||||
"${mod}+m" = ''exec i3-input -F '[con_mark="%s"] focus' -l 1 -P 'Go to: ' '';
|
||||
|
||||
# Screenshots
|
||||
"${mod}+q" = "exec \"maim | xclip -selection clipboard -t image/png\"";
|
||||
"${mod}+Shift+q" = "exec \"maim -s | xclip -selection clipboard -t image/png\"";
|
||||
"${mod}+Ctrl+q" = "exec ${pkgs.writeShellScript "peek.sh" ''
|
||||
picom &
|
||||
picom_pid=$!
|
||||
peek || true
|
||||
kill -SIGINT $picom_pid
|
||||
''}";
|
||||
|
||||
# Launching applications
|
||||
"${mod}+u" = "exec ${pkgs.writeShellScript "rofi" ''
|
||||
rofi \
|
||||
-modi 'combi' \
|
||||
-combi-modi "window,drun,ssh,run" \
|
||||
-font '${decorationFont}' \
|
||||
-show combi
|
||||
''}";
|
||||
|
||||
# Passwords
|
||||
"${mod}+p" = "exec rofi-pass -font '${decorationFont}'";
|
||||
|
||||
# Media
|
||||
"XF86AudioPlay" = "exec playerctl play-pause";
|
||||
"XF86AudioNext" = "exec playerctl next";
|
||||
"XF86AudioPrev" = "exec playerctl previous";
|
||||
"XF86AudioRaiseVolume" = "exec pulseaudio-ctl up";
|
||||
"XF86AudioLowerVolume" = "exec pulseaudio-ctl down";
|
||||
"XF86AudioMute" = "exec pulseaudio-ctl mute";
|
||||
|
||||
# Lock
|
||||
Pause = "exec \"sh -c 'playerctl pause; ${pkgs.i3lock}/bin/i3lock -c 222222'\"";
|
||||
F7 = Pause;
|
||||
|
||||
# Screen Layout
|
||||
"${mod}+Shift+t" = "exec xrandr --auto";
|
||||
"${mod}+t" = "exec ${screenlayout.home}";
|
||||
"${mod}+Ctrl+t" = "exec ${pkgs.writeShellScript "fix_term.sh" ''
|
||||
xrandr --output eDP-1 --off && ${screenlayout.home}
|
||||
''}";
|
||||
|
||||
# Notifications
|
||||
"${mod}+Shift+n" = "exec killall -SIGUSR1 .dunst-wrapped";
|
||||
"${mod}+n" = "exec killall -SIGUSR2 .dunst-wrapped";
|
||||
};
|
||||
|
||||
fonts = [ decorationFont ];
|
||||
|
||||
colors = with solarized; rec {
|
||||
focused = {
|
||||
border = base01;
|
||||
background = base01;
|
||||
text = base3;
|
||||
indicator = red;
|
||||
childBorder = base02;
|
||||
};
|
||||
focusedInactive = focused // {
|
||||
border = base03;
|
||||
background = base03;
|
||||
# text = base1;
|
||||
};
|
||||
unfocused = focusedInactive;
|
||||
background = base03;
|
||||
};
|
||||
|
||||
modes.resize = {
|
||||
l = "resize shrink width 5 px or 5 ppt";
|
||||
k = "resize grow height 5 px or 5 ppt";
|
||||
j = "resize shrink height 5 px or 5 ppt";
|
||||
h = "resize grow width 5 px or 5 ppt";
|
||||
|
||||
Return = "mode \"default\"";
|
||||
};
|
||||
|
||||
bars = [{
|
||||
statusCommand =
|
||||
let i3status-conf = pkgs.writeText "i3status.conf" ''
|
||||
general {
|
||||
output_format = i3bar
|
||||
colors = true
|
||||
color_good = "#859900"
|
||||
|
||||
interval = 1
|
||||
}
|
||||
|
||||
order += "external_script current_task"
|
||||
order += "external_script inbox"
|
||||
order += "spotify"
|
||||
order += "wireless ${config.system.machine.wirelessInterface}"
|
||||
# order += "ethernet enp3s0f0"
|
||||
order += "cpu_usage"
|
||||
order += "battery 0"
|
||||
# order += "volume master"
|
||||
order += "time"
|
||||
|
||||
mpd {
|
||||
format = "%artist - %album - %title"
|
||||
}
|
||||
|
||||
wireless ${config.system.machine.wirelessInterface} {
|
||||
format_up = "W: (%quality - %essid - %bitrate) %ip"
|
||||
format_down = "W: -"
|
||||
}
|
||||
|
||||
ethernet enp3s0f0 {
|
||||
format_up = "E: %ip"
|
||||
format_down = "E: -"
|
||||
}
|
||||
|
||||
battery 0 {
|
||||
format = "%status %percentage"
|
||||
path = "/sys/class/power_supply/BAT%d/uevent"
|
||||
low_threshold = 10
|
||||
}
|
||||
|
||||
cpu_usage {
|
||||
format = "CPU: %usage"
|
||||
}
|
||||
|
||||
load {
|
||||
format = "%5min"
|
||||
}
|
||||
|
||||
time {
|
||||
format = " %a %h %d ⌚ %I:%M "
|
||||
}
|
||||
|
||||
spotify {
|
||||
color_playing = "#fdf6e3"
|
||||
color_paused = "#93a1a1"
|
||||
format_stopped = ""
|
||||
format_down = ""
|
||||
format = "{title} - {artist} ({album})"
|
||||
}
|
||||
|
||||
external_script inbox {
|
||||
script_path = '${emacsclient "(grfn/num-inbox-items-message)"}'
|
||||
format = 'Inbox: {output}'
|
||||
cache_timeout = 120
|
||||
color = "#93a1a1"
|
||||
}
|
||||
|
||||
external_script current_task {
|
||||
script_path = '${emacsclient "(grfn/org-current-clocked-in-task-message)"}'
|
||||
# format = '{output}'
|
||||
cache_timeout = 60
|
||||
color = "#93a1a1"
|
||||
}
|
||||
|
||||
|
||||
# volume master {
|
||||
# format = "☊ %volume"
|
||||
# format_muted = "☊ X"
|
||||
# device = "default"
|
||||
# mixer_idx = 0
|
||||
# }
|
||||
'';
|
||||
in "py3status -c ${i3status-conf}";
|
||||
fonts = [ decorationFont ];
|
||||
position = "top";
|
||||
colors = with solarized; rec {
|
||||
background = base03;
|
||||
statusline = base3;
|
||||
separator = base1;
|
||||
activeWorkspace = {
|
||||
border = base03;
|
||||
background = base1;
|
||||
text = base3;
|
||||
};
|
||||
focusedWorkspace = activeWorkspace;
|
||||
inactiveWorkspace = activeWorkspace // {
|
||||
background = base01;
|
||||
};
|
||||
urgentWorkspace = activeWorkspace // {
|
||||
background = red;
|
||||
};
|
||||
};
|
||||
}];
|
||||
};
|
||||
};
|
||||
|
||||
services.dunst = {
|
||||
enable = true;
|
||||
settings = with solarized; {
|
||||
global = {
|
||||
font = "MesloLGSDZ ${toString (config.system.machine.i3FontSize * 1.5)}";
|
||||
allow_markup = true;
|
||||
format = "<b>%s</b>\n%b";
|
||||
sort = true;
|
||||
alignment = "left";
|
||||
geometry = "600x15-40+40";
|
||||
idle_threshold = 120;
|
||||
separator_color = "frame";
|
||||
separator_height = 1;
|
||||
word_wrap = true;
|
||||
padding = 8;
|
||||
horizontal_padding = 8;
|
||||
};
|
||||
|
||||
frame = {
|
||||
width = 0;
|
||||
color = "#aaaaaa";
|
||||
};
|
||||
|
||||
shortcuts = {
|
||||
close = "ctrl+space";
|
||||
close_all = "ctrl+shift+space";
|
||||
history = "ctrl+grave";
|
||||
context = "ctrl+shift+period";
|
||||
};
|
||||
|
||||
urgency_low = {
|
||||
background = base03;
|
||||
foreground = base3;
|
||||
timeout = 5;
|
||||
};
|
||||
|
||||
urgency_normal = {
|
||||
background = base02;
|
||||
foreground = base3;
|
||||
timeout = 7;
|
||||
};
|
||||
|
||||
urgency_critical = {
|
||||
background = red;
|
||||
foreground = base3;
|
||||
timeout = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
iconTheme.name = "Adwaita";
|
||||
theme.name = "Adwaita";
|
||||
};
|
||||
};
|
||||
}
|
67
users/glittershark/system/home/modules/lib/cloneRepo.nix
Normal file
67
users/glittershark/system/home/modules/lib/cloneRepo.nix
Normal file
|
@ -0,0 +1,67 @@
|
|||
{ lib, config, ... }:
|
||||
with lib;
|
||||
{
|
||||
options = {
|
||||
grfn.impure.clonedRepos = mkOption {
|
||||
description = "Repositories to clone";
|
||||
default = {};
|
||||
type = with types; loaOf (
|
||||
let sm = submodule {
|
||||
options = {
|
||||
url = mkOption {
|
||||
type = nullOr str;
|
||||
description = "URL of repository to clone";
|
||||
default = null;
|
||||
};
|
||||
|
||||
github = mkOption {
|
||||
type = nullOr str;
|
||||
description = "Github owner/repo of repository to clone";
|
||||
default = null;
|
||||
};
|
||||
|
||||
path = mkOption {
|
||||
type = str;
|
||||
description = "Path to clone to";
|
||||
};
|
||||
|
||||
onClone = mkOption {
|
||||
type = str;
|
||||
description = ''
|
||||
Shell command to run after cloning the repo for the first time.
|
||||
Runs inside the repo itself.
|
||||
'';
|
||||
default = "";
|
||||
};
|
||||
|
||||
after = mkOption {
|
||||
type = listOf str;
|
||||
description = "Activation hooks that this repository must be cloned after";
|
||||
default = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
in addCheck sm (cr: (! isNull cr.url || ! isNull cr.github))
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
home.activation =
|
||||
mapAttrs
|
||||
(_: {
|
||||
url, path, github, onClone, after, ...
|
||||
}:
|
||||
let repoURL = if isNull url then "git@github.com:${github}" else url;
|
||||
in hm.dag.entryAfter (["writeBoundary"] ++ after) ''
|
||||
$DRY_RUN_CMD mkdir -p $(dirname "${path}")
|
||||
if [[ ! -d ${path} ]]; then
|
||||
$DRY_RUN_CMD git clone "${repoURL}" "${path}"
|
||||
pushd ${path}
|
||||
$DRY_RUN_CMD ${onClone}
|
||||
popd
|
||||
fi
|
||||
'')
|
||||
config.grfn.impure.clonedRepos;
|
||||
};
|
||||
}
|
21
users/glittershark/system/home/modules/lib/zshFunctions.nix
Normal file
21
users/glittershark/system/home/modules/lib/zshFunctions.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
options = {
|
||||
programs.zsh.functions = mkOption {
|
||||
description = "An attribute set that maps function names to their source";
|
||||
default = {};
|
||||
type = with types; attrsOf (either str path);
|
||||
};
|
||||
};
|
||||
|
||||
config.programs.zsh.initExtra = concatStringsSep "\n" (
|
||||
mapAttrsToList (name: funSrc: ''
|
||||
function ${name}() {
|
||||
${funSrc}
|
||||
}
|
||||
'') config.programs.zsh.functions
|
||||
);
|
||||
}
|
26
users/glittershark/system/home/modules/nixos-logo.txt
Normal file
26
users/glittershark/system/home/modules/nixos-logo.txt
Normal file
|
@ -0,0 +1,26 @@
|
|||
[38;5;m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;m( [38;5;m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m# [38;5;m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m/
|
||||
[38;5;m,[38;5;068m([38;5;067m([38;5;068m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;061m/[38;5;m( [38;5;m#[38;5;110m%[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m%[38;5;m# [38;5;m.[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m%[38;5;m#
|
||||
[38;5;m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;061m/[38;5;061m/[38;5;m/ [38;5;m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;m. [38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m/
|
||||
[38;5;m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;061m/[38;5;067m([38;5;061m/[38;5;061m/[38;5;m, [38;5;m/[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m#
|
||||
[38;5;m([38;5;067m([38;5;067m([38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m/ [38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m(
|
||||
[38;5;m.[38;5;068m([38;5;068m([38;5;068m([38;5;068m([38;5;068m([38;5;068m([38;5;068m([38;5;068m([38;5;068m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;061m([38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m#[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m# [38;5;m([38;5;m(
|
||||
[38;5;m([38;5;067m([38;5;067m([38;5;067m([38;5;068m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m/[38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m# [38;5;m.[38;5;m([38;5;067m([38;5;067m([38;5;m(
|
||||
[38;5;m([38;5;068m([38;5;067m([38;5;067m([38;5;067m([38;5;068m([38;5;067m([38;5;067m([38;5;067m([38;5;068m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;061m/[38;5;061m([38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m/[38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m# [38;5;m([38;5;068m([38;5;067m([38;5;067m([38;5;067m([38;5;068m([38;5;067m([38;5;m(
|
||||
[38;5;m([38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;074m#[38;5;m# [38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m# [38;5;m([38;5;067m([38;5;068m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;m(
|
||||
[38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m# [38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m/[38;5;m([38;5;067m([38;5;068m([38;5;067m([38;5;068m([38;5;067m([38;5;068m([38;5;067m([38;5;068m([38;5;m(
|
||||
[38;5;m*[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m# [38;5;m.[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m#[38;5;m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;m(
|
||||
[38;5;m#[38;5;m#[38;5;m#[38;5;m%[38;5;m#[38;5;m#[38;5;m#[38;5;m#[38;5;m#[38;5;m#[38;5;m#[38;5;m#[38;5;m#[38;5;m#[38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m# [38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m([38;5;061m/[38;5;061m/[38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;m([38;5;m([38;5;m([38;5;m([38;5;m([38;5;m([38;5;m([38;5;m([38;5;m([38;5;m(
|
||||
[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m# [38;5;m.[38;5;m#[38;5;m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;m(
|
||||
[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m([38;5;m( [38;5;m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;m(
|
||||
[38;5;m#[38;5;m#[38;5;m#[38;5;m%[38;5;m#[38;5;m#[38;5;m#[38;5;m#[38;5;m#[38;5;m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m#[38;5;m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m. [38;5;m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m/[38;5;m/[38;5;m/[38;5;m/[38;5;m/[38;5;m/[38;5;m/[38;5;m/[38;5;m/[38;5;m/[38;5;m([38;5;m([38;5;m([38;5;m(
|
||||
[38;5;m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m( [38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m/
|
||||
[38;5;m.[38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m# [38;5;m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m/ [38;5;m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m,
|
||||
[38;5;m%[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m%[38;5;m* [38;5;m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m( [38;5;m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m/
|
||||
[38;5;m.[38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;m# [38;5;m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m([38;5;m#[38;5;074m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m,
|
||||
[38;5;m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m# [38;5;m([38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m%
|
||||
[38;5;m.[38;5;m# [38;5;m([38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m/[38;5;061m([38;5;061m/[38;5;061m/[38;5;067m([38;5;m([38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;m%
|
||||
[38;5;m([38;5;061m/[38;5;061m/[38;5;061m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m( [38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m%[38;5;110m%[38;5;110m%[38;5;m(
|
||||
[38;5;m/[38;5;061m/[38;5;067m([38;5;061m/[38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;m( [38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;m#
|
||||
[38;5;m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;m( [38;5;m([38;5;067m([38;5;067m([38;5;067m([38;5;068m([38;5;067m([38;5;067m([38;5;067m([38;5;068m( [38;5;m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m/
|
||||
[38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;m( [38;5;m/[38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;067m([38;5;068m([38;5;067m([38;5;m( [38;5;m.[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m#[38;5;110m#[38;5;110m#[38;5;m%
|
||||
[38;5;m([38;5;068m([38;5;067m([38;5;068m([38;5;067m([38;5;m( [38;5;m([38;5;068m([38;5;067m([38;5;068m([38;5;067m([38;5;068m([38;5;067m([38;5;068m([38;5;m( [38;5;m%[38;5;110m#[38;5;110m%[38;5;110m#[38;5;110m%[38;5;110m#[38;5;m/
|
66
users/glittershark/system/home/modules/obs.nix
Normal file
66
users/glittershark/system/home/modules/obs.nix
Normal file
|
@ -0,0 +1,66 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with pkgs;
|
||||
|
||||
let
|
||||
libuiohook = stdenv.mkDerivation rec {
|
||||
pname = "libuiohook";
|
||||
version = "1.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "kwhat";
|
||||
repo = "libuiohook";
|
||||
rev = version;
|
||||
sha256 = "1isfxn3cfrdqq22d3mlz2lzm4asf9gprs7ww2xy9c3j3srk9kd7r";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
./bootstrap.sh
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [
|
||||
libtool autoconf automake
|
||||
x11
|
||||
xorg.libXtst
|
||||
xorg.libXinerama
|
||||
xorg.libxkbfile
|
||||
libxkbcommon
|
||||
];
|
||||
};
|
||||
|
||||
obs-input-overlay = stdenv.mkDerivation rec {
|
||||
pname = "obs-input-overlay";
|
||||
version = "4.8";
|
||||
src = fetchFromGitHub {
|
||||
owner = "univrsal";
|
||||
repo = "input-overlay";
|
||||
rev = "v${version}";
|
||||
sha256 = "1dklg0dx9ijwyhgwcaqz859rbpaivmqxqvh9w3h4byrh5pnkz8bf";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ obs-studio libuiohook ];
|
||||
|
||||
postPatch = ''
|
||||
sed -i CMakeLists.txt \
|
||||
-e '2iinclude(${obs-studio.src}/cmake/Modules/ObsHelpers.cmake)' \
|
||||
-e '2ifind_package(LibObs REQUIRED)'
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-Wno-dev"
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
home.packages = [
|
||||
obs-studio
|
||||
obs-input-overlay
|
||||
];
|
||||
|
||||
xdg.configFile."obs-studio/plugins/input-overlay/bin/64bit/input-overlay.so".source =
|
||||
"${obs-input-overlay}/lib/obs-plugins/input-overlay.so";
|
||||
xdg.configFile."obs-studio/plugins/input-overlay/data".source =
|
||||
"${obs-input-overlay}/share/obs/obs-plugins/input-overlay";
|
||||
}
|
151
users/glittershark/system/home/modules/pure.zsh-theme
Executable file
151
users/glittershark/system/home/modules/pure.zsh-theme
Executable file
|
@ -0,0 +1,151 @@
|
|||
#!/bin/zsh -f
|
||||
# vim: ft=zsh:
|
||||
# MIT License
|
||||
# For my own and others sanity
|
||||
# git:
|
||||
# %b => current branch
|
||||
# %a => current action (rebase/merge)
|
||||
# prompt:
|
||||
# %F => color dict
|
||||
# %f => reset color
|
||||
# %~ => current path
|
||||
# %* => time
|
||||
# %n => username
|
||||
# %m => shortname host
|
||||
# %(?..) => prompt conditional - %(condition.true.false)
|
||||
|
||||
# turns seconds into human readable time
|
||||
# 165392 => 1d 21h 56m 32s
|
||||
prompt_pure_human_time() {
|
||||
local tmp=$1
|
||||
local days=$(( tmp / 60 / 60 / 24 ))
|
||||
local hours=$(( tmp / 60 / 60 % 24 ))
|
||||
local minutes=$(( tmp / 60 % 60 ))
|
||||
local seconds=$(( tmp % 60 ))
|
||||
(( $days > 0 )) && echo -n "${days}d "
|
||||
(( $hours > 0 )) && echo -n "${hours}h "
|
||||
(( $minutes > 0 )) && echo -n "${minutes}m "
|
||||
echo "${seconds}s"
|
||||
}
|
||||
|
||||
is_git_repo() {
|
||||
command git rev-parse --is-inside-work-tree &>/dev/null
|
||||
return $?
|
||||
}
|
||||
|
||||
# fastest possible way to check if repo is dirty
|
||||
prompt_pure_git_dirty() {
|
||||
# check if we're in a git repo
|
||||
is_git_repo || return
|
||||
# check if it's dirty
|
||||
[[ "$PURE_GIT_UNTRACKED_DIRTY" == 0 ]] && local umode="-uno" || local umode="-unormal"
|
||||
command test -n "$(git status --porcelain --ignore-submodules ${umode})"
|
||||
|
||||
(($? == 0)) && echo '*'
|
||||
}
|
||||
|
||||
prompt_pure_git_wip() {
|
||||
is_git_repo || return
|
||||
local subject="$(command git show --pretty=%s --quiet HEAD 2>/dev/null)"
|
||||
[ "$subject" == 'wip' ] && echo '[WIP]'
|
||||
}
|
||||
|
||||
# displays the exec time of the last command if set threshold was exceeded
|
||||
prompt_pure_cmd_exec_time() {
|
||||
local stop=$EPOCHSECONDS
|
||||
local start=${cmd_timestamp:-$stop}
|
||||
integer elapsed=$stop-$start
|
||||
(($elapsed > ${PURE_CMD_MAX_EXEC_TIME:=5})) && prompt_pure_human_time $elapsed
|
||||
}
|
||||
|
||||
prompt_pure_preexec() {
|
||||
cmd_timestamp=$EPOCHSECONDS
|
||||
|
||||
# shows the current dir and executed command in the title when a process is active
|
||||
print -Pn "\e]0;"
|
||||
echo -nE "$PWD:t: $2"
|
||||
print -Pn "\a"
|
||||
}
|
||||
|
||||
# string length ignoring ansi escapes
|
||||
prompt_pure_string_length() {
|
||||
echo ${#${(S%%)1//(\%([KF1]|)\{*\}|\%[Bbkf])}}
|
||||
}
|
||||
|
||||
prompt_pure_nix_info() {
|
||||
local packages_info=''
|
||||
if [[ -z $NIX_SHELL_PACKAGES ]]; then
|
||||
packages_info='[nix-shell]'
|
||||
else
|
||||
packages_info="{ $NIX_SHELL_PACKAGES }"
|
||||
fi
|
||||
|
||||
case $IN_NIX_SHELL in
|
||||
'pure')
|
||||
echo "$fg_bold[green][nix-shell] "
|
||||
;;
|
||||
'impure')
|
||||
echo "$fg_bold[magenta][nix-shell] "
|
||||
;;
|
||||
*) ;;
|
||||
esac
|
||||
}
|
||||
|
||||
prompt_pure_precmd() {
|
||||
# shows the full path in the title
|
||||
print -Pn '\e]0;%~\a'
|
||||
|
||||
# git info
|
||||
vcs_info
|
||||
|
||||
local prompt_pure_preprompt="\n$(prompt_pure_nix_info)$fg_bold[green]$prompt_pure_username%F{blue}%~%F{yellow}$vcs_info_msg_0_`prompt_pure_git_dirty` $fg_no_bold[red]`prompt_pure_git_wip`%f %F{yellow}`prompt_pure_cmd_exec_time`%f "
|
||||
print -P $prompt_pure_preprompt
|
||||
|
||||
# check async if there is anything to pull
|
||||
# (( ${PURE_GIT_PULL:-1} )) && {
|
||||
# # check if we're in a git repo
|
||||
# command git rev-parse --is-inside-work-tree &>/dev/null &&
|
||||
# # make sure working tree is not $HOME
|
||||
# [[ "$(command git rev-parse --show-toplevel)" != "$HOME" ]] &&
|
||||
# # check check if there is anything to pull
|
||||
# command git fetch &>/dev/null &&
|
||||
# # check if there is an upstream configured for this branch
|
||||
# command git rev-parse --abbrev-ref @'{u}' &>/dev/null && {
|
||||
# local arrows=''
|
||||
# (( $(command git rev-list --right-only --count HEAD...@'{u}' 2>/dev/null) > 0 )) && arrows='⇣'
|
||||
# (( $(command git rev-list --left-only --count HEAD...@'{u}' 2>/dev/null) > 0 )) && arrows+='⇡'
|
||||
# print -Pn "\e7\e[A\e[1G\e[`prompt_pure_string_length $prompt_pure_preprompt`C%F{cyan}${arrows}%f\e8"
|
||||
# }
|
||||
# } &!
|
||||
|
||||
# reset value since `preexec` isn't always triggered
|
||||
unset cmd_timestamp
|
||||
}
|
||||
|
||||
|
||||
prompt_pure_setup() {
|
||||
# prevent percentage showing up
|
||||
# if output doesn't end with a newline
|
||||
export PROMPT_EOL_MARK=''
|
||||
|
||||
prompt_opts=(cr subst percent)
|
||||
|
||||
zmodload zsh/datetime
|
||||
autoload -Uz add-zsh-hook
|
||||
autoload -Uz vcs_info
|
||||
|
||||
add-zsh-hook precmd prompt_pure_precmd
|
||||
add-zsh-hook preexec prompt_pure_preexec
|
||||
|
||||
zstyle ':vcs_info:*' enable git
|
||||
zstyle ':vcs_info:git*' formats ' %b'
|
||||
zstyle ':vcs_info:git*' actionformats ' %b|%a'
|
||||
|
||||
# show username@host if logged in through SSH
|
||||
[[ "$SSH_CONNECTION" != '' ]] && prompt_pure_username='%n@%m '
|
||||
|
||||
# prompt turns red if the previous command didn't exit with 0
|
||||
PROMPT='%(?.%F{green}.%F{red})❯%f '
|
||||
}
|
||||
|
||||
prompt_pure_setup "$@"
|
21
users/glittershark/system/home/modules/rtlsdr.nix
Normal file
21
users/glittershark/system/home/modules/rtlsdr.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
nixpkgs-gnuradio = import (pkgs.fetchFromGitHub {
|
||||
owner = "doronbehar";
|
||||
repo = "nixpkgs";
|
||||
rev = "712561aa5f10bfe6112a1726a912585612a70d1f";
|
||||
sha256 = "04yqflbwjcfl9vlplphpj82csqqz9k6m3nj1ybhwgmsc4by7vivl";
|
||||
}) {};
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
rtl-sdr
|
||||
nixpkgs-gnuradio.gnuradio
|
||||
nixpkgs-gnuradio.gnuradio.plugins.osmosdr
|
||||
nixpkgs-gnuradio.gqrx
|
||||
];
|
||||
}
|
181
users/glittershark/system/home/modules/shell.nix
Normal file
181
users/glittershark/system/home/modules/shell.nix
Normal file
|
@ -0,0 +1,181 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
shellAliases = rec {
|
||||
# NixOS stuff
|
||||
hms = "home-manager switch";
|
||||
nor = "sudo nixos-rebuild switch";
|
||||
nrs = nor;
|
||||
nrb = "sudo nixos-rebuild boot";
|
||||
ncg = "nix-collect-garbage";
|
||||
vihome = "vim ~/.config/nixpkgs/home.nix && home-manager switch";
|
||||
virc = "vim ~/code/system/home/modules/shell.nix && home-manager switch && source ~/.zshrc";
|
||||
visystem = "sudo vim /etc/nixos/configuration.nix && sudo nixos-rebuild switch";
|
||||
|
||||
# Nix
|
||||
ns = "nix-shell";
|
||||
nb = "nix build -f .";
|
||||
nc = "nix copy --to https://nix.urbinternal.com";
|
||||
"nc." = "nix copy -f . --to https://nix.urbinternal.com";
|
||||
|
||||
# Docker and friends
|
||||
"dcu" = "docker-compose up";
|
||||
"dcud" = "docker-compose up -d";
|
||||
"dc" = "docker-compose";
|
||||
"dcr" = "docker-compose restart";
|
||||
"dclf" = "docker-compose logs -f";
|
||||
"dck" = "docker";
|
||||
"dockerclean" = "dockercleancontainers && dockercleanimages";
|
||||
"dockercleanimages" = "docker images -a --no-trunc | grep none | awk '{print \$$3}' | xargs -L 1 -r docker rmi";
|
||||
"dockercleancontainers" = "docker ps -a --no-trunc| grep 'Exit' | awk '{print \$$1}' | xargs -L 1 -r docker rm";
|
||||
|
||||
# Directories
|
||||
stck = "dirs -v";
|
||||
b= "cd ~1";
|
||||
".." = "cd ..";
|
||||
"..." = "cd ../..";
|
||||
"...." = "cd ../../..";
|
||||
"....." = "cd ../../../..";
|
||||
|
||||
# Aliases from old config
|
||||
"http" = "http --style solarized";
|
||||
"grep" = "grep $GREP_OPTIONS";
|
||||
"bak" = "~/bin/backup.sh";
|
||||
"xmm" = "xmodmap ~/.Xmodmap";
|
||||
"asdflkj" = "asdf";
|
||||
"asdf" = "asdfghjkl";
|
||||
"asdfghjkl" = "echo \"Having some trouble?\"";
|
||||
"ift" = "sudo iftop -i wlp3s0";
|
||||
"first" = "awk '{print \$$1}'";
|
||||
"cmt" = "git log --oneline | fzf-tmux | awk '{print \$$1}'";
|
||||
"workmon" = "xrandr --output DP-2 --pos 1440x900 --primary";
|
||||
"vi" = "vim";
|
||||
"adbdev" = "adb devices";
|
||||
"adbcon" = "adb connect $GNEX_IP";
|
||||
"mpalb" = "mpc search album";
|
||||
"mpart" = "mpc search artist";
|
||||
"mps" = "mpc search";
|
||||
"mpa" = "mpc add";
|
||||
"mpt" = "mpc toggle";
|
||||
"mpl" = "mpc playlist";
|
||||
"dsstore" = "find . -name '*.DS_Store' -type f -ls -delete";
|
||||
"df" = "df -h";
|
||||
"fs" = "stat -f '%z bytes'";
|
||||
"ll" = "ls -al";
|
||||
"la" = "ls -a";
|
||||
};
|
||||
in {
|
||||
home.packages = with pkgs; [
|
||||
zsh
|
||||
autojump
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
EDITOR = "vim";
|
||||
LS_COLORS = "no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:";
|
||||
BROWSER = "firefox";
|
||||
BAT_THEME = "ansi-light";
|
||||
};
|
||||
|
||||
programs.bash = {
|
||||
enable = true;
|
||||
inherit shellAliases;
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableAutosuggestions = true;
|
||||
autocd = true;
|
||||
|
||||
inherit shellAliases;
|
||||
|
||||
history = rec {
|
||||
save = 100000;
|
||||
size = save;
|
||||
};
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
|
||||
plugins = [
|
||||
"battery"
|
||||
"colorize"
|
||||
"command-not-found"
|
||||
"github"
|
||||
"gitignore"
|
||||
"postgres"
|
||||
"systemd"
|
||||
"themes"
|
||||
"vi-mode"
|
||||
];
|
||||
|
||||
custom = "${pkgs.stdenv.mkDerivation {
|
||||
name = "oh-my-zsh-custom";
|
||||
unpackPhase = ":";
|
||||
installPhase = ''
|
||||
mkdir -p $out/themes
|
||||
mkdir -p $out/custom/plugins
|
||||
ln -s ${./pure.zsh-theme} $out/themes/pure.zsh-theme
|
||||
'';
|
||||
}}";
|
||||
|
||||
theme = "pure";
|
||||
};
|
||||
|
||||
plugins = [{
|
||||
name = "pure-theme";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "sindresorhus";
|
||||
repo = "pure";
|
||||
rev = "0a92b02dd4172f6c64fdc9b81fe6cd4bddb0a23b";
|
||||
sha256 = "0l8jqhmmjn7p32hdjnv121xsjnqd2c0plhzgydv2yzrmqgyvx7cc";
|
||||
};
|
||||
}];
|
||||
|
||||
initExtraBeforeCompInit = ''
|
||||
zstyle ':completion:*' completer _complete _ignored _correct _approximate
|
||||
zstyle ':completion:*' matcher-list \'\' 'm:{[:lower:]}={[:upper:]} m:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[._- :]=** r:|=**' 'l:|=* r:|=*'
|
||||
zstyle ':completion:*' max-errors 5
|
||||
zstyle ':completion:*' use-cache yes
|
||||
zstyle ':completion::complete:grunt::options:' expire 1
|
||||
zstyle ':completion:*' prompt '%e errors'
|
||||
# zstyle :compinstall filename '~/.zshrc'
|
||||
autoload -Uz compinit
|
||||
'';
|
||||
|
||||
initExtra = ''
|
||||
source ${./zshrc}
|
||||
source ${pkgs.fetchFromGitHub {
|
||||
owner = "zsh-users";
|
||||
repo = "zsh-syntax-highlighting";
|
||||
rev = "7678a8a22780141617f809002eeccf054bf8f448";
|
||||
sha256 = "0xh4fbd54kvwwpqvabk8lpw7m80phxdzrd75q3y874jw0xx1a9q6";
|
||||
}}/zsh-syntax-highlighting.zsh
|
||||
source ${pkgs.autojump}/share/autojump/autojump.zsh
|
||||
source ${pkgs.fetchFromGitHub {
|
||||
owner = "chisui";
|
||||
repo = "zsh-nix-shell";
|
||||
rev = "a65382a353eaee5a98f068c330947c032a1263bb";
|
||||
sha256 = "0l41ac5b7p8yyjvpfp438kw7zl9dblrpd7icjg1v3ig3xy87zv0n";
|
||||
}}/nix-shell.plugin.zsh
|
||||
|
||||
export RPS1=""
|
||||
autoload -U promptinit; promptinit
|
||||
prompt pure
|
||||
|
||||
if [[ "$TERM" == "dumb" ]]; then
|
||||
unsetopt zle
|
||||
unsetopt prompt_cr
|
||||
unsetopt prompt_subst
|
||||
unfunction precmd
|
||||
unfunction preexec
|
||||
export PS1='$ '
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
}
|
64
users/glittershark/system/home/modules/tarsnap.nix
Normal file
64
users/glittershark/system/home/modules/tarsnap.nix
Normal file
|
@ -0,0 +1,64 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
tarsnap
|
||||
];
|
||||
|
||||
home.file.".tarsnaprc".text = ''
|
||||
### Recommended options
|
||||
|
||||
# Tarsnap cache directory
|
||||
cachedir /home/grfn/.cache/tarsnap
|
||||
|
||||
# Tarsnap key file
|
||||
keyfile /home/grfn/.private/tarsnap.key
|
||||
|
||||
# Don't archive files which have the nodump flag set.
|
||||
nodump
|
||||
|
||||
# Print statistics when creating or deleting archives.
|
||||
print-stats
|
||||
|
||||
# Create a checkpoint once per GB of uploaded data.
|
||||
checkpoint-bytes 1G
|
||||
|
||||
### Commonly useful options
|
||||
|
||||
# Use SI prefixes to make numbers printed by --print-stats more readable.
|
||||
humanize-numbers
|
||||
|
||||
### Other options, not applicable to most systems
|
||||
|
||||
# Aggressive network behaviour: Use multiple TCP connections when
|
||||
# writing archives. Use of this option is recommended only in
|
||||
# cases where TCP congestion control is known to be the limiting
|
||||
# factor in upload performance.
|
||||
#aggressive-networking
|
||||
|
||||
# Exclude files and directories matching specified patterns.
|
||||
# Only one file or directory per command; multiple "exclude"
|
||||
# commands may be given.
|
||||
#exclude
|
||||
|
||||
# Include only files and directories matching specified patterns.
|
||||
# Only one file or directory per command; multiple "include"
|
||||
# commands may be given.
|
||||
#include
|
||||
|
||||
# Attempt to reduce tarsnap memory consumption. This option
|
||||
# will slow down the process of creating archives, but may help
|
||||
# on systems where the average size of files being backed up is
|
||||
# less than 1 MB.
|
||||
#lowmem
|
||||
|
||||
# Try even harder to reduce tarsnap memory consumption. This can
|
||||
# significantly slow down tarsnap, but reduces its memory usage
|
||||
# by an additional factor of 2 beyond what the lowmem option does.
|
||||
#verylowmem
|
||||
|
||||
# Snapshot time. Use this option if you are backing up files
|
||||
# from a filesystem snapshot rather than from a "live" filesystem.
|
||||
#snaptime <file>
|
||||
'';
|
||||
}
|
23
users/glittershark/system/home/modules/twitter.nix
Normal file
23
users/glittershark/system/home/modules/twitter.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{ pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
t
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
TWITTER_WHOAMI = "glittershark1";
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
shellAliases = {
|
||||
"mytl" = "t tl $TWITTER_WHOAMI";
|
||||
};
|
||||
|
||||
functions = {
|
||||
favelast = "t fave $(t tl -l $1 | head -n1 | cut -d' ' -f1)";
|
||||
rtlast = "t rt $(t tl -l $1 | head -n1 | cut -d' ' -f1)";
|
||||
tthread = "t reply $(t tl -l $TWITTER_WHOAMI | head -n1 | cut -d' ' -f1) $@";
|
||||
};
|
||||
};
|
||||
}
|
47
users/glittershark/system/home/modules/vim.nix
Normal file
47
users/glittershark/system/home/modules/vim.nix
Normal file
|
@ -0,0 +1,47 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
ctrlp
|
||||
deoplete-nvim
|
||||
syntastic
|
||||
vim-abolish
|
||||
vim-airline
|
||||
vim-airline-themes
|
||||
vim-bufferline
|
||||
vim-closetag
|
||||
# vim-colors-solarized
|
||||
# solarized
|
||||
(pkgs.vimUtils.buildVimPlugin {
|
||||
name = "vim-colors-solarized";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "glittershark";
|
||||
repo = "vim-colors-solarized";
|
||||
rev = "4857c3221ec3f2693a45855154cb61a2cefb514d";
|
||||
sha256 = "0kqp5w14g7adaiinmixm7z3x4w74lv1lcgbqjbirx760f0wivf9y";
|
||||
};
|
||||
})
|
||||
vim-commentary
|
||||
vim-dispatch
|
||||
vim-endwise
|
||||
vim-repeat
|
||||
vim-fugitive
|
||||
vim-markdown
|
||||
vim-nix
|
||||
vim-rhubarb
|
||||
vim-sexp
|
||||
vim-sexp-mappings-for-regular-people
|
||||
vim-sleuth
|
||||
vim-startify
|
||||
vim-surround
|
||||
vim-unimpaired
|
||||
vinegar
|
||||
];
|
||||
extraConfig = ''
|
||||
source ${./vimrc}
|
||||
'';
|
||||
};
|
||||
}
|
1121
users/glittershark/system/home/modules/vimrc
Normal file
1121
users/glittershark/system/home/modules/vimrc
Normal file
File diff suppressed because it is too large
Load diff
306
users/glittershark/system/home/modules/zshrc
Normal file
306
users/glittershark/system/home/modules/zshrc
Normal file
|
@ -0,0 +1,306 @@
|
|||
#!/usr/bin/zsh
|
||||
# vim: set fdm=marker fmr={{{,}}}:
|
||||
|
||||
stty -ixon
|
||||
|
||||
# Compinstall {{{
|
||||
zstyle ':completion:*' completer _complete _ignored _correct _approximate
|
||||
zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]} m:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[._- :]=** r:|=**' 'l:|=* r:|=*'
|
||||
zstyle ':completion:*' max-errors 5
|
||||
zstyle ':completion:*' use-cache yes
|
||||
zstyle ':completion::complete:grunt::options:' expire 1
|
||||
zstyle ':completion:*' prompt '%e errors'
|
||||
zstyle :compinstall filename '~/.zshrc'
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
# }}}
|
||||
|
||||
# Zsh-newuser-install {{{
|
||||
HISTFILE=~/.histfile
|
||||
HISTSIZE=1000
|
||||
SAVEHIST=1000
|
||||
setopt appendhistory autocd extendedglob notify autopushd
|
||||
unsetopt beep nomatch
|
||||
bindkey -v
|
||||
# }}}
|
||||
|
||||
# Basic options {{{
|
||||
set -o vi
|
||||
umask 022
|
||||
export VIRTUAL_ENV_DISABLE_PROMPT=1
|
||||
# export PATH=~/.local/bin:~/.cabal/bin:$PATH:~/code/go/bin:~/bin:~/npm/bin:~/.gem/ruby/2.1.0/bin:~/.gem/ruby/2.0.0/bin:/home/smith/bin
|
||||
# }}}
|
||||
|
||||
# Zsh highlight highlighters {{{
|
||||
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern root)
|
||||
# }}}
|
||||
|
||||
# More basic options {{{
|
||||
setopt no_hist_verify
|
||||
setopt histignorespace
|
||||
# }}}
|
||||
|
||||
# Utility Functions {{{
|
||||
|
||||
# Set the terminal's title bar.
|
||||
function titlebar() {
|
||||
echo -ne "\033]0;$*\007"
|
||||
}
|
||||
|
||||
function quiet() {
|
||||
"$@" >/dev/null
|
||||
}
|
||||
|
||||
function quieter() {
|
||||
"$@" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# From http://stackoverflow.com/questions/370047/#370255
|
||||
function path_remove() {
|
||||
IFS=:
|
||||
# convert it to an array
|
||||
t=($PATH)
|
||||
unset IFS
|
||||
# perform any array operations to remove elements from the array
|
||||
t=(${t[@]%%$1})
|
||||
IFS=:
|
||||
# output the new array
|
||||
echo "${t[*]}"
|
||||
}
|
||||
|
||||
# }}}
|
||||
|
||||
# Force screen to use zsh {{{
|
||||
# }}}
|
||||
|
||||
# Environment {{{
|
||||
# }}}
|
||||
|
||||
# Directory Stuff {{{
|
||||
|
||||
# Always use color output for `ls`
|
||||
|
||||
# Directory listing
|
||||
|
||||
# Easier navigation: .., ..., -
|
||||
|
||||
# File size
|
||||
|
||||
# Recursively delete `.DS_Store` files
|
||||
|
||||
# Create a new directory and enter it
|
||||
function md() {
|
||||
mkdir -p "$@" && cd "$@"
|
||||
}
|
||||
|
||||
# }}}
|
||||
|
||||
# MPD/MPC stuff {{{
|
||||
function mp() {
|
||||
# Test if drive is already mounted
|
||||
if ! lsblk | grep /media/external >/dev/null; then
|
||||
if ! sudo mount /media/external; then
|
||||
echo "External drive not plugged in, or could not mount"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
if (mpc >/dev/null 2>&1); then
|
||||
ncmpcpp
|
||||
else
|
||||
mpd &&
|
||||
(pgrep mpdscribble || mpdscribble) &&
|
||||
ncmpcpp
|
||||
fi
|
||||
}
|
||||
|
||||
# kill mp
|
||||
function kmp() {
|
||||
killall ncmpcpp
|
||||
mpd --kill
|
||||
|
||||
local files
|
||||
|
||||
if (files=$(lsof 2>&1 | grep -v docker | grep external)); then
|
||||
echo
|
||||
echo "==> Still processes using external drive:"
|
||||
echo
|
||||
echo $files
|
||||
else
|
||||
sudo umount /media/external
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function mppal() {
|
||||
mpc search album "$1" | mpc add &&
|
||||
mpc play;
|
||||
}
|
||||
# }}}
|
||||
|
||||
# Git stuff {{{
|
||||
# function ga() { git add "${@:-.}"; } # Add all files by default
|
||||
# Add non-whitespace changes
|
||||
# function gc() { git checkout "${@:-master}"; } # Checkout master by default
|
||||
|
||||
# open all changed files (that still actually exist) in the editor
|
||||
function ged() {
|
||||
local files=()
|
||||
for f in $(git diff --name-only "$@"); do
|
||||
[[ -e "$f" ]] && files=("${files[@]}" "$f")
|
||||
done
|
||||
local n=${#files[@]}
|
||||
echo "Opening $n $([[ "$@" ]] || echo "modified ")file$([[ $n != 1 ]] && \
|
||||
echo s)${@:+ modified in }$@"
|
||||
q "${files[@]}"
|
||||
}
|
||||
|
||||
# git find-replace
|
||||
function gfr() {
|
||||
if [[ "$#" == "0" ]]; then
|
||||
echo 'Usage:'
|
||||
echo ' gg_replace term replacement file_mask'
|
||||
echo
|
||||
echo 'Example:'
|
||||
echo ' gg_replace cappuchino cappuccino *.html'
|
||||
echo
|
||||
else
|
||||
find=$1; shift
|
||||
replace=$1; shift
|
||||
|
||||
ORIG_GLOBIGNORE=$GLOBIGNORE
|
||||
GLOBIGNORE=*.*
|
||||
if [[ "$#" = "0" ]]; then
|
||||
set -- ' ' $@
|
||||
fi
|
||||
|
||||
while [[ "$#" -gt "0" ]]; do
|
||||
for file in `git grep -l $find -- $1`; do
|
||||
sed -e "s/$find/$replace/g" -i'' $file
|
||||
done
|
||||
shift
|
||||
done
|
||||
|
||||
GLOBIGNORE=$ORIG_GLOBIGNORE
|
||||
fi
|
||||
}
|
||||
|
||||
function vconflicts() {
|
||||
$EDITOR $(git status --porcelain | awk '/^UU/ { print $2 }')
|
||||
}
|
||||
# }}}
|
||||
|
||||
# fzf {{{
|
||||
v() {
|
||||
local file
|
||||
file=$(fzf-tmux --query="$1" --select-1 --exit-0)
|
||||
[ -n "$file" ] && ${EDITOR:-vim} "$file"
|
||||
}
|
||||
|
||||
c() {
|
||||
local dir
|
||||
dir=$(find ${1:-*} -path '*/\.*' -prune -o -type d -print 2> /dev/null | fzf +m) && cd "$dir"
|
||||
}
|
||||
|
||||
co() {
|
||||
local branch
|
||||
branch=$(git branch -a | sed -s "s/\s*\**//g" | fzf --query="$1" --select-1 --exit-0) && git checkout "$branch"
|
||||
}
|
||||
|
||||
|
||||
# fh - repeat history
|
||||
# h() {
|
||||
# eval $(([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s | sed 's/ *[0-9]* *//')
|
||||
# }
|
||||
|
||||
# fkill - kill process
|
||||
fkill() {
|
||||
ps -ef | sed 1d | fzf-tmux -m | awk '{print $2}' | xargs kill -${1:-9}
|
||||
}
|
||||
# }}}
|
||||
|
||||
# Tmux utils {{{
|
||||
kill_detached() {
|
||||
for sess in $(tmux ls | grep -v attached | sed -s "s/:.*$//"); do
|
||||
tmux kill-session -t $sess;
|
||||
done
|
||||
}
|
||||
# }}}
|
||||
|
||||
# Docker {{{
|
||||
|
||||
|
||||
# dbp foo/bar .
|
||||
function dbp () {
|
||||
docker build -t $1 ${@:2} && docker push $1
|
||||
}
|
||||
|
||||
# }}}
|
||||
|
||||
# Vagrant {{{
|
||||
# }}}
|
||||
|
||||
# Twitter! {{{
|
||||
|
||||
|
||||
# favelast <username>
|
||||
function favelast() {
|
||||
t fave $(t tl -l $1 | head -n1 | first)
|
||||
}
|
||||
|
||||
function rtlast() {
|
||||
t rt $(t tl -l $1 | head -n1 | first)
|
||||
}
|
||||
|
||||
function tthread() {
|
||||
t reply $(t tl -l $TWITTER_WHOAMI | head -n1 | first) $@
|
||||
}
|
||||
# }}}
|
||||
|
||||
# Geeknote {{{
|
||||
gnc() {
|
||||
gn create --title $1 --content '' &&
|
||||
gn find --count=1 "$1"
|
||||
gn edit 1
|
||||
}
|
||||
# }}}
|
||||
|
||||
# Systemd aliases {{{
|
||||
# }}}
|
||||
|
||||
# Misc aliases {{{
|
||||
|
||||
function fw() { # fix white
|
||||
local substitution
|
||||
local substitution='s/\x1b\[90m/\x1b[92m/g'
|
||||
$@ > >(perl -pe "$substitution") 2> >(perl -pe "$substitution" 1>&2)
|
||||
}
|
||||
# }}}
|
||||
|
||||
# Grep options {{{
|
||||
unset GREP_OPTIONS
|
||||
export GREP_OPTIONS=
|
||||
# }}}
|
||||
|
||||
|
||||
# Run docker containers {{{
|
||||
# -d \
|
||||
# -v $HOME/.pentadactyl:/home/firefox/.pentadactyl:rw \
|
||||
# -v $HOME/.pentadactylrc:/home/firefox/.pentadactylrc:rw \
|
||||
# -v $HOME/.mozilla:/home/firefox/.mozilla:rw \
|
||||
# -v $HOME/.config:/home/firefox/.config \
|
||||
# -v $HOME/Downloads:/home/firefox/Downloads:rw \
|
||||
# -v /etc/fonts:/etc/fonts \
|
||||
# -v /tmp/.X11-unix:/tmp/.X11-unix \
|
||||
# -v /dev/snd:/dev/snd \
|
||||
# --net=host \
|
||||
# -v $XDG_RUNTIME_DIR:$XDG_RUNTIME_DIR \
|
||||
# -e uid=$(id -u) \
|
||||
# -e gid=$(id -g) \
|
||||
# -e DISPLAY=$DISPLAY \
|
||||
# -e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR \
|
||||
# --name firefox \
|
||||
# --rm -it \
|
||||
# glittershark/firefox
|
||||
# }}}
|
||||
|
||||
[ -f ./.localrc ] && source ./.localrc
|
24
users/glittershark/system/home/platforms/darwin.nix
Normal file
24
users/glittershark/system/home/platforms/darwin.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
coreutils
|
||||
gnupg
|
||||
pinentry_mac
|
||||
];
|
||||
|
||||
home.activation.linkApplications = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||
$DRY_RUN_CMD ln -sf $VERBOSE_ARG \
|
||||
~/.nix-profile/Applications/* ~/Applications/
|
||||
'';
|
||||
|
||||
programs.zsh.initExtra = ''
|
||||
export NIX_PATH=$HOME/.nix-defexpr/channels:$NIX_PATH
|
||||
|
||||
if [[ "$TERM" == "alacritty" ]]; then
|
||||
export TERM="xterm-256color"
|
||||
fi
|
||||
'';
|
||||
}
|
89
users/glittershark/system/home/platforms/linux.nix
Normal file
89
users/glittershark/system/home/platforms/linux.nix
Normal file
|
@ -0,0 +1,89 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../modules/alacritty.nix
|
||||
../modules/alsi.nix
|
||||
../modules/development.nix
|
||||
../modules/emacs.nix
|
||||
../modules/email.nix
|
||||
../modules/firefox.nix
|
||||
../modules/games.nix
|
||||
../modules/obs.nix
|
||||
../modules/i3.nix
|
||||
../modules/shell.nix
|
||||
../modules/tarsnap.nix
|
||||
../modules/vim.nix
|
||||
];
|
||||
|
||||
xsession.enable = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
(import (fetchTarball "https://github.com/ashkitten/nixpkgs/archive/init-glimpse.tar.gz") {}).glimpse
|
||||
|
||||
# Desktop stuff
|
||||
arandr
|
||||
firefox
|
||||
feh
|
||||
chromium
|
||||
xclip
|
||||
xorg.xev
|
||||
picom
|
||||
peek
|
||||
signal-desktop
|
||||
apvlv # pdf viewer
|
||||
vlc
|
||||
irssi
|
||||
gnutls
|
||||
pandoc
|
||||
barrier
|
||||
|
||||
# System utilities
|
||||
powertop
|
||||
usbutils
|
||||
pciutils
|
||||
gdmap
|
||||
lsof
|
||||
tree
|
||||
ncat
|
||||
iftop
|
||||
|
||||
# Security
|
||||
gnupg
|
||||
keybase
|
||||
openssl
|
||||
|
||||
# Spotify...etc
|
||||
spotify
|
||||
playerctl
|
||||
];
|
||||
|
||||
services.redshift = {
|
||||
enable = true;
|
||||
provider = "geoclue2";
|
||||
};
|
||||
|
||||
services.pasystray.enable = true;
|
||||
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
gtk3.bookmarks = [
|
||||
"file:///home/grfn/code"
|
||||
];
|
||||
};
|
||||
|
||||
programs.tarsnap = {
|
||||
enable = true;
|
||||
keyfile = "/home/grfn/.private/tarsnap.key";
|
||||
printStats = true;
|
||||
humanizeNumbers = true;
|
||||
};
|
||||
|
||||
programs.zsh.initExtra = ''
|
||||
[[ ! $IN_NIX_SHELL ]] && alsi -l
|
||||
'';
|
||||
}
|
35
users/glittershark/system/install
Executable file
35
users/glittershark/system/install
Executable file
|
@ -0,0 +1,35 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
if [[ -f /etc/nixos/.system-installed ]]; then
|
||||
echo "=== System config already installed, skipping"
|
||||
else
|
||||
echo "==> Installing system config"
|
||||
|
||||
[[ -d /etc/nixos ]] && sudo mv /etc/nixos{,.bak}
|
||||
sudo mkdir -p /etc/nixos
|
||||
sudo cp /etc/nixos.bak/hardware-configuration.nix /etc/nixos
|
||||
|
||||
sudo cp ./system/configuration.nix /etc/nixos/
|
||||
sudo ln -s $(pwd)/system/{machines,modules,pkgs} /etc/nixos
|
||||
sudo touch /etc/nixos/.system-installed
|
||||
|
||||
echo "==> System config installed, your old configuration is at /etc/nixos.bak"
|
||||
fi
|
||||
echo
|
||||
|
||||
if [[ -f ~/.config/nixpkgs/system-installed ]]; then
|
||||
echo "=== home-manager config already installed, skipping"
|
||||
else
|
||||
echo "==> Installing home-manager config"
|
||||
nix-channel --add https://github.com/rycee/home-manager/archive/master.tar.gz home-manager
|
||||
nix-channel --update
|
||||
# nix-shell '<home-manager>' -A install
|
||||
|
||||
[[ -d ~/.config/nixpkgs ]] && mv ~/.config/{nixpkgs,nixpkgs.bak}
|
||||
mkdir -p ~/.config/nixpkgs
|
||||
ln -s $(pwd)/home/* ~/.config/nixpkgs
|
||||
|
||||
echo "==> home-manager config installed"
|
||||
fi
|
22
users/glittershark/system/pkgs/alsi/default.nix
Normal file
22
users/glittershark/system/pkgs/alsi/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ perl, stdenv, fetchFromGitHub }:
|
||||
stdenv.mkDerivation {
|
||||
name = "alsi";
|
||||
pname = "alsi";
|
||||
version = "0.4.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "trizen";
|
||||
repo = "alsi";
|
||||
rev = "fe2a925caad38d4cc7afe10d74ba60c5db09ee66";
|
||||
sha256 = "060xlalfclrda5f1h3svj4v2gr19mdrsc62vrg7hgii0f3lib7j5";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
(perl.withPackages (ps: with ps; [ DataDump ]))
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp alsi $out/bin/alsi
|
||||
'';
|
||||
}
|
1
users/glittershark/system/pkgs/argocd.nix
Normal file
1
users/glittershark/system/pkgs/argocd.nix
Normal file
|
@ -0,0 +1 @@
|
|||
(import <nixpkgs-unstable> {}).argocd
|
15
users/glittershark/system/pkgs/clang-tools.nix
Normal file
15
users/glittershark/system/pkgs/clang-tools.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
with import <nixpkgs> {};
|
||||
runCommand "clang-tools" {} ''
|
||||
mkdir -p $out/bin
|
||||
for file in ${clang-tools}/bin/*; do
|
||||
if [ $(basename "$file") != "clangd" ]; then
|
||||
ln -s "$file" $out/bin
|
||||
fi
|
||||
done
|
||||
|
||||
sed \
|
||||
-e "18iexport CPLUS_INCLUDE_PATH=${llvmPackages.libcxx}/include/c++/v1\\''${CPATH:+':'}\\''${CPATH}" \
|
||||
-e '/CPLUS_INCLUDE_PATH/d' \
|
||||
< ${clang-tools}/bin/clangd \
|
||||
> $out/bin/clangd
|
||||
''
|
24
users/glittershark/system/pkgs/clang-tools/default.nix
Normal file
24
users/glittershark/system/pkgs/clang-tools/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ pkgs }:
|
||||
with pkgs;
|
||||
|
||||
runCommand "clang-tools" {} ''
|
||||
mkdir -p $out/bin
|
||||
export libc_includes="${stdenv.lib.getDev stdenv.cc.libc}/include"
|
||||
export libcpp_includes="${llvmPackages.libcxx}/include/c++/v1"
|
||||
|
||||
export clang=${llvmPackages.clang-unwrapped}
|
||||
|
||||
echo $clang
|
||||
|
||||
substituteAll ${./wrapper} $out/bin/clangd
|
||||
chmod +x $out/bin/clangd
|
||||
for tool in \
|
||||
clang-apply-replacements \
|
||||
clang-check \
|
||||
clang-format \
|
||||
clang-rename \
|
||||
clang-tidy
|
||||
do
|
||||
ln -s $out/bin/clangd $out/bin/$tool
|
||||
done
|
||||
''
|
20
users/glittershark/system/pkgs/clang-tools/wrapper
Normal file
20
users/glittershark/system/pkgs/clang-tools/wrapper
Normal file
|
@ -0,0 +1,20 @@
|
|||
#!/bin/sh
|
||||
|
||||
buildcpath() {
|
||||
local path
|
||||
while (( $# )); do
|
||||
case $1 in
|
||||
-isystem)
|
||||
shift
|
||||
path=$path${path:+':'}$1
|
||||
esac
|
||||
shift
|
||||
done
|
||||
echo $path
|
||||
}
|
||||
|
||||
export CPATH=${CPATH}${CPATH:+':'}$(buildcpath ${NIX_CFLAGS_COMPILE})
|
||||
export CPATH=${CPATH}${CPATH:+':'}@libc_includes@
|
||||
export CPLUS_INCLUDE_PATH=@libcpp_includes@${CPATH:+':'}${CPATH}
|
||||
|
||||
exec -a "$0" @clang@/bin/$(basename $0) "$@"
|
11
users/glittershark/system/system/configuration.nix
Normal file
11
users/glittershark/system/system/configuration.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
let machine = throw "Pick a machine from ./machines"; in
|
||||
{
|
||||
imports =
|
||||
[
|
||||
/etc/nixos/hardware-configuration.nix
|
||||
./modules/common.nix
|
||||
machine
|
||||
];
|
||||
}
|
23
users/glittershark/system/system/machines/bumblebee.nix
Normal file
23
users/glittershark/system/system/machines/bumblebee.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
../modules/reusable/battery.nix
|
||||
];
|
||||
|
||||
networking.hostName = "bumblebee";
|
||||
|
||||
powerManagement = {
|
||||
enable = true;
|
||||
cpuFreqGovernor = "powersave";
|
||||
powertop.enable = true;
|
||||
};
|
||||
|
||||
# Hibernate on low battery
|
||||
laptop.onLowBattery = {
|
||||
enable = true;
|
||||
action = "hibernate";
|
||||
thresholdPercentage = 5;
|
||||
};
|
||||
|
||||
services.xserver.xkbOptions = "caps:swapescape";
|
||||
}
|
50
users/glittershark/system/system/machines/chupacabra.nix
Normal file
50
users/glittershark/system/system/machines/chupacabra.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
../modules/reusable/battery.nix
|
||||
<nixos-hardware/common/cpu/intel>
|
||||
<nixos-hardware/common/pc/laptop>
|
||||
];
|
||||
|
||||
networking.hostName = "chupacabra";
|
||||
|
||||
powerManagement = {
|
||||
enable = true;
|
||||
powertop.enable = true;
|
||||
};
|
||||
|
||||
laptop.onLowBattery = {
|
||||
enable = true;
|
||||
action = "hibernate";
|
||||
thresholdPercentage = 5;
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."cryptswap".device = "/dev/disk/by-uuid/3b6e2fd4-bfe9-4392-a6e0-4f3b3b76e019";
|
||||
|
||||
boot.kernelParams = [ "acpi_rev_override" ];
|
||||
services.thermald.enable = true;
|
||||
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
|
||||
# Intel-only graphics
|
||||
hardware.nvidiaOptimus.disable = true;
|
||||
boot.blacklistedKernelModules = [ "nouveau" "intel" ];
|
||||
services.xserver.videoDrivers = [ "intel" ];
|
||||
|
||||
# Nvidia Optimus (hybrid) - currently not working
|
||||
# services.xserver.videoDrivers = [ "intel" "nvidia" ];
|
||||
# boot.blacklistedKernelModules = [ "nouveau" "bbswitch" ];
|
||||
# boot.extraModulePackages = [ pkgs.linuxPackages.nvidia_x11 ];
|
||||
# hardware.bumblebee.enable = true;
|
||||
# hardware.bumblebee.pmMethod = "none";
|
||||
|
||||
systemd.services.disable-usb-autosuspend = {
|
||||
description = "Disable USB autosuspend";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = { Type = "oneshot"; };
|
||||
unitConfig.RequiresMountsFor = "/sys";
|
||||
script = ''
|
||||
echo -1 > /sys/module/usbcore/parameters/autosuspend
|
||||
'';
|
||||
};
|
||||
}
|
142
users/glittershark/system/system/modules/common.nix
Normal file
142
users/glittershark/system/system/modules/common.nix
Normal file
|
@ -0,0 +1,142 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
./xserver.nix
|
||||
./fonts.nix
|
||||
./sound.nix
|
||||
./kernel.nix
|
||||
./rtlsdr.nix
|
||||
/home/grfn/code/urb/urbos/system
|
||||
];
|
||||
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
networking.useDHCP = false;
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# Select internationalisation properties.
|
||||
# i18n = {
|
||||
# consoleFont = "Lat2-Terminus16";
|
||||
# consoleKeyMap = "us";
|
||||
# defaultLocale = "en_US.UTF-8";
|
||||
# };
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/New_York";
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
wget
|
||||
vim
|
||||
zsh
|
||||
git
|
||||
w3m
|
||||
libnotify
|
||||
file
|
||||
lm_sensors
|
||||
];
|
||||
|
||||
# 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;
|
||||
# pinentryFlavor = "gnome3";
|
||||
# };
|
||||
|
||||
programs.nm-applet.enable = true;
|
||||
|
||||
|
||||
services.openssh.enable = true;
|
||||
|
||||
programs.ssh.startAgent = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
networking.firewall.enable = false;
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
# services.printing.enable = true;
|
||||
|
||||
users.mutableUsers = true;
|
||||
programs.zsh.enable = true;
|
||||
environment.pathsToLink = [ "/share/zsh" ];
|
||||
users.users.grfn = {
|
||||
isNormalUser = true;
|
||||
initialPassword = "password";
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"networkmanager"
|
||||
"audio"
|
||||
"docker"
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "20.03"; # Did you read the comment?
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
services.geoclue2.enable = true;
|
||||
|
||||
powerManagement = {
|
||||
enable = true;
|
||||
cpuFreqGovernor = lib.mkDefault "powersave";
|
||||
powertop.enable = true;
|
||||
};
|
||||
# Hibernate on low battery
|
||||
laptop.onLowBattery = {
|
||||
enable = true;
|
||||
action = "hibernate";
|
||||
thresholdPercentage = 5;
|
||||
};
|
||||
|
||||
nix = {
|
||||
trustedUsers = [ "grfn" ];
|
||||
autoOptimiseStore = true;
|
||||
|
||||
buildMachines = [{
|
||||
hostName = "172.16.0.3";
|
||||
sshUser = "griffin";
|
||||
sshKey = "/home/grfn/.ssh/id_rsa";
|
||||
system = "x86_64-darwin";
|
||||
maxJobs = 4;
|
||||
} {
|
||||
hostName = "172.16.0.4";
|
||||
sshUser = "griffin";
|
||||
sshKey = "/home/grfn/.ssh/id_rsa";
|
||||
system = "x86_64-darwin";
|
||||
maxJobs = 8; # 16 cpus
|
||||
}];
|
||||
|
||||
distributedBuilds = true;
|
||||
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
};
|
||||
|
||||
urbos.enable = true;
|
||||
urbos.username = "grfn";
|
||||
|
||||
services.udev.extraRules = ''
|
||||
# UDEV rules for Teensy USB devices
|
||||
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789A]?", ENV{MTP_NO_PROBE}="1"
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789ABCD]?", MODE:="0666"
|
||||
KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", MODE:="0666"
|
||||
'';
|
||||
}
|
12
users/glittershark/system/system/modules/fonts.nix
Normal file
12
users/glittershark/system/system/modules/fonts.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
fonts = {
|
||||
fonts = with pkgs; [
|
||||
nerdfonts
|
||||
noto-fonts-emoji
|
||||
twitter-color-emoji
|
||||
];
|
||||
|
||||
fontconfig.defaultFonts.emoji = ["Twitter Color Emoji"];
|
||||
};
|
||||
}
|
28
users/glittershark/system/system/modules/kernel.nix
Normal file
28
users/glittershark/system/system/modules/kernel.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
with lib.versions;
|
||||
let
|
||||
inherit (pkgs) runCommand;
|
||||
kernelRelease = config.linuxPackages.kernel.version or pkgs.linux.version;
|
||||
mj = major kernelRelease;
|
||||
mm = majorMinor kernelRelease;
|
||||
linux-ck = runCommand "linux-ck-combined.patch" {} ''
|
||||
${pkgs.xz}/bin/unxz -kfdc ${builtins.fetchurl {
|
||||
# http://ck.kolivas.org/patches/5.0/5.4/5.4-ck1/patch-5.4-ck1.xz
|
||||
url = "http://ck.kolivas.org/patches/${mj}.0/${mm}/${mm}-ck1/patch-${mm}-ck1.xz";
|
||||
sha256 = "0p2ccwlsmq0587x6cnbrk4h2bwpl9342bmhsbyi1a87cs2jfwigl";
|
||||
}} > $out
|
||||
'';
|
||||
in
|
||||
{
|
||||
boot.kernelPackages = pkgs.linuxPackages.extend (self: super: {
|
||||
kernel = super.kernel.override {
|
||||
kernelPatches = super.kernel.kernelPatches ++ [{
|
||||
name = "linux-ck";
|
||||
patch = linux-ck;
|
||||
}];
|
||||
argsOverride = {
|
||||
modDirVersion = super.kernel.modDirVersion + "-ck1";
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
This directory contains things I'm eventually planning on contributing upstream
|
||||
to nixpkgs
|
|
@ -0,0 +1,32 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
{
|
||||
options = {
|
||||
laptop.onLowBattery = {
|
||||
enable = mkEnableOption "Perform action on low battery";
|
||||
|
||||
thresholdPercentage = mkOption {
|
||||
description = "Threshold battery percentage on which to perform the action";
|
||||
default = 5;
|
||||
type = types.int;
|
||||
};
|
||||
|
||||
action = mkOption {
|
||||
description = "Action to perform on low battery";
|
||||
default = "hibernate";
|
||||
type = types.enum [ "hibernate" "suspend" "suspend-then-hibernate" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config =
|
||||
let cfg = config.laptop.onLowBattery;
|
||||
in mkIf cfg.enable {
|
||||
services.udev.extraRules = concatStrings [
|
||||
''SUBSYSTEM=="power_supply", ''
|
||||
''ATTR{status}=="Discharging", ''
|
||||
''ATTR{capacity}=="[0-${toString cfg.thresholdPercentage}]", ''
|
||||
''RUN+="/${pkgs.systemd}/bin/systemctl ${cfg.action}"''
|
||||
];
|
||||
};
|
||||
}
|
17
users/glittershark/system/system/modules/rtlsdr.nix
Normal file
17
users/glittershark/system/system/modules/rtlsdr.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
rtl-sdr
|
||||
];
|
||||
|
||||
services.udev.packages = with pkgs; [
|
||||
rtl-sdr
|
||||
];
|
||||
|
||||
# blacklist for rtl-sdr
|
||||
boot.blacklistedKernelModules = [
|
||||
"dvb_usb_rtl28xxu"
|
||||
];
|
||||
}
|
14
users/glittershark/system/system/modules/sound.nix
Normal file
14
users/glittershark/system/system/modules/sound.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
# Enable sound.
|
||||
sound.enable = true;
|
||||
hardware.pulseaudio.enable = true;
|
||||
nixpkgs.config.pulseaudio = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
pulseaudio-ctl
|
||||
paprefs
|
||||
pasystray
|
||||
pavucontrol
|
||||
];
|
||||
}
|
18
users/glittershark/system/system/modules/xserver.nix
Normal file
18
users/glittershark/system/system/modules/xserver.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
layout = "us";
|
||||
|
||||
libinput.enable = true;
|
||||
|
||||
windowManager.i3 = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
i3status
|
||||
i3lock
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue