Compare commits

...

47 Commits

Author SHA1 Message Date
598c08a060 20240210 - Edited river, bash, waybar, and package collections 2024-02-10 09:31:53 -08:00
0173d9cdc3 Changed tmux config closer to original, removing the dracula plugin. 2024-02-09 06:56:43 -08:00
083aa025bc [nb] Commit 2024-02-07 20:41:59 -08:00
c4d43d21c8 [nb] Commit 2024-02-07 20:32:44 -08:00
660285c743 [nb] Commit 2024-01-24 21:38:01 -08:00
fcdf1058a5 Added cage compositor again to test. 2024-01-21 19:10:16 -08:00
450f9e382d Moved package collections into their own directory and created a dev.nix collection. 2024-01-20 10:53:04 -08:00
c1d0c467a9 [nb] Add: todos/20240120104042.todo.md 2024-01-20 10:40:42 -08:00
d0d24560d5 [nb] Commit 2024-01-20 10:40:39 -08:00
0ddb13b31a Removed nix-colors and gtk-nix, they were not working as well as I hoped. 2024-01-17 20:29:00 -08:00
4e6f7979b0 [nb] Add: todos/20240116194420.todo.md 2024-01-16 19:44:20 -08:00
c172f2d358 [nb] Commit 2024-01-16 19:43:56 -08:00
331084c19a Added waybar again 2024-01-15 19:30:48 -08:00
0591102ed7 [nb] Edit: todos/20240115093833.todo.md 2024-01-15 09:39:05 -08:00
abd4276cfb [nb] Add: todos/20240115093833.todo.md 2024-01-15 09:38:33 -08:00
23057f5ba6 [nb] Edit: todos/20240115093320.todo.md 2024-01-15 09:38:11 -08:00
9911b86478 [nb] Commit 2024-01-15 09:37:37 -08:00
2de9b8a6b3 [nb] Edit: todos/20240115093320.todo.md 2024-01-15 09:36:13 -08:00
d3bbb125de [nb] Edit: todos/20240115093320.todo.md 2024-01-15 09:33:42 -08:00
17603cfafd [nb] Add: todos/20240115093320.todo.md 2024-01-15 09:33:20 -08:00
041780e3d7 [nb] Edit: todos/20240115092910.todo.md 2024-01-15 09:30:12 -08:00
58dcf630a8 [nb] Reconcile Index 2024-01-15 09:29:41 -08:00
70e61193b4 [nb] Commit 2024-01-15 09:29:33 -08:00
7c71848893 [nb] Add: 20240115092910.todo.md 2024-01-15 09:29:10 -08:00
401b7c91a5 [nb] Commit 2024-01-15 09:29:09 -08:00
e09fcfffc1 [nb] Done: todos/20240114221107.todo.md 2024-01-15 08:43:19 -08:00
a3e71d894e [nb] Commit 2024-01-15 08:43:03 -08:00
c13d39843c Switched from way-displays to kanshi, seems to work much better. 2024-01-15 08:42:05 -08:00
d5aea5ccd3 [nb] Commit 2024-01-15 07:59:03 -08:00
e92617649f Cleaned up todo list with nb. 2024-01-14 22:19:04 -08:00
7a2345d3e3 [nb] Edit: todos/20240114221107.todo.md 2024-01-14 22:17:15 -08:00
4aea3d5fc8 [nb] Edit: todos/20240114221545.todo.md 2024-01-14 22:16:22 -08:00
e29e3e895f [nb] Add: todos/20240114221545.todo.md 2024-01-14 22:15:45 -08:00
d2532f713d [nb] Edit: todos/20240114221429.todo.md 2024-01-14 22:15:13 -08:00
35c53cfd5c [nb] Add: todos/20240114221429.todo.md 2024-01-14 22:14:29 -08:00
7c32ff5a6b [nb] Edit: todos/20240114221315.todo.md 2024-01-14 22:14:07 -08:00
8d795cb782 [nb] Add: todos/20240114221315.todo.md 2024-01-14 22:13:15 -08:00
a09b48feab [nb] Commit 2024-01-14 22:12:48 -08:00
f892218419 [nb] Edit: 20240114221107.todo.md 2024-01-14 22:11:44 -08:00
cf8e8f08f9 [nb] Add: 20240114221107.todo.md 2024-01-14 22:11:07 -08:00
1e687fa231 [nb] Add: 20240114220929.todo.md 2024-01-14 22:09:29 -08:00
5f6a23a104 [nb] Commit 2024-01-14 22:07:28 -08:00
2c50398ea8 Successful nix-colors implementation. Merging into master branch. 2024-01-14 21:32:29 -08:00
23ac64bf87 Switch from stylix which auto-generates themes to nix-colors which allows manual color assignment. Added gtk-nix flake to assist with nix-colors and gtk. 2024-01-14 19:09:07 -08:00
535fb8778b Made changes to river init key mappings, made changes to vimrc defaults, and added wf-recorder package. 2024-01-14 16:24:12 -08:00
34e40b502b Switched from grimblast to grim/slurp/swappy. 2024-01-14 12:07:06 -08:00
0202aab104 Changed some river keybindings and moved mako location to top-right. 2024-01-14 11:30:24 -08:00
62 changed files with 946 additions and 876 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
build.log
flake.lock
.index

12
.index Normal file
View File

@ -0,0 +1,12 @@
flake.lock
flake.nix
home-manager
hosts
nixos
pkgs
README.md
todos
justfile

View File

@ -22,11 +22,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1703013332,
"narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=",
"lastModified": 1707092692,
"narHash": "sha256-ZbHsm+mGk/izkWtT4xwwqz38fdlwu7nUUKXTOmm4SyE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "54aac082a4d9bb5bbc5c4e899603abfb76a3f6d6",
"rev": "faf912b086576fd1a15fca610166c98d47bc667e",
"type": "github"
},
"original": {

View File

@ -10,7 +10,7 @@
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs @ { self, nixpkgs, home-manager }:
outputs = { nixpkgs, home-manager, ... }@inputs:
let
system = "x86_64-linux";
user = {

View File

@ -14,20 +14,6 @@
dataHome = "${config.home.homeDirectory}/.local/share";
stateHome = "${config.home.homeDirectory}/.local/state";
};
home.file = {
"bash_login" = {
source = ./dots/bash_login;
target = ".bash_login";
};
"bash_logout" = {
source = ./dots/bash_logout;
target = ".bash_logout";
};
"bashrc" = {
source = ./dots/bashrc;
target = ".bashrc";
};
};
programs.fzf = {
enable = true;
tmux.enableShellIntegration = true;
@ -51,20 +37,6 @@
defaultEditor = true;
viAlias = true;
vimAlias = true;
extraConfig = ''
syntax enable
set nowrap
set linebreak
set number
set relativenumber
set splitbelow
set splitright
set tabstop=4
set shiftwidth=4
if filereadable(expand(".vim-project"))
source .vim-project
endif
'';
};
programs.password-store = {
enable = true;
@ -85,60 +57,6 @@
newSession = false;
prefix = "C-b";
terminal = "screen-256color";
extraConfig = ''
# Do not rename windows automatically
set-option -g allow-rename off
# Hide statusbar while using one window
set -g status off
set-hook -g after-new-window 'if "[ #{session_windows} -gt 1 ]" "set status on"'
set-hook -g after-kill-pane 'if "[ #{session_windows} -lt 2 ]" "set status off"'
set-hook -g pane-exited 'if "[ #{session_windows} -lt 2 ]" "set status off"'
set-hook -g window-layout-changed 'if "[ #{session_windows} -lt 2 ]" "set status off"'
# Reload tmux.conf
unbind r
bind r source-file $HOME/.config/tmux/tmux.conf \; display "tmux config reloaded"
# Rebind vertical/horizontal splitting
unbind %
unbind v
bind v split-window -h -c "#{pane_current_path}"
unbind '"'
unbind c
bind c split-window -v -c "#{pane_current_path}"
unbind Enter
bind Enter new-window
unbind Tab
bind Tab last-window
unbind l
# Rebind moving panes
bind -n C-h select-pane -L
bind -n C-j select-pane -D
bind -n C-k select-pane -U
bind -n C-l select-pane -R
bind -n M-h select-pane -L
bind -n M-j select-pane -D
bind -n M-k select-pane -U
bind -n M-l select-pane -R
# Set status bar postition
set -g status-position top
# Status bar theme
set -g status-style "fg=#50fa7b"
# Window theme
setw -g window-status-current-style "bg=#50fa7b fg=#282a36"
setw -g window-status-current-format " #I:#W#F "
setw -g window-status-format "[#I:#W#F]"
'';
plugins = with pkgs; [
tmuxPlugins.urlview
tmuxPlugins.yank
];
};
home.stateVersion = "23.05";
}

View File

@ -3,6 +3,8 @@
{
imports = [
./base.nix
./dots/tmux.nix
./dots/bash.nix
];
home.shellAliases = {
wget = "wget --hsts-file=${config.xdg.configHome}/wget-hsts";
@ -51,16 +53,27 @@
};
neovim = {
extraConfig = ''
let g:limelight_conceal_ctermfg = 'block'
syntax enable
set wrap
set nospell
set linebreak
set number
set relativenumber
set splitbelow
set splitright
set tabstop=4
set shiftwidth=4
if filereadable(expand(".vim-project"))
source .vim-project
endif
let g:limelight_conceal_ctermfg = 'block'
'';
plugins = with pkgs.vimPlugins; [
dracula-nvim
goyo-vim
limelight-vim
twilight-nvim
vim-numbertoggle
vim-nix
vimwiki
zen-mode-nvim
];
};
yt-dlp = {

View File

@ -0,0 +1,93 @@
{ pkgs, config, user, ... }:
{
home = {
sessionVariables = {
};
file = {
".bash_login" = {
enable = true;
text = ''
[[ -f ~/.bashrc ]] && . ~/.bashrc
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" -eq 1 ]; then
exec river
fi
'';
};
".bash_logout" = {
enable = true;
text = ''
if [ "$SHLVL" = 1 ]; then
[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi
'';
};
".bashrc" = {
enable = true;
text = ''
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
set -o vi
unset HISTFILE
# Aliases
alias mkfoo='. $HOME/.local/bin/mkfoo.sh'
alias ed='ed -p "> "'
# Functions
function get-ssh() {
if [ ! -f $HOME/.ssh/id_ed25519.pub ]; then
ssh-keygen -t ed25519 -C "${user.email}"
fi
cat $HOME/.ssh/id_ed25519.pub
}
function home() {
cd
clear
}
function search() {
surfraw $(surfraw -elvi | fzf | awk '{print $1;}')
}
function mkcd {
mkdir -p $1
cd $1
}
# fe [FUZZY PATTERN] - Open the selected file with the default editor
# - Bypass fuzzy finder if there's only one match (--select-1)
# - Exit if there's no match (--exit-0)
function fe() {
IFS='
'
files=$(fzf --query="$1" --multi --select-1 --exit-0)
[ -n "$files" ] && "$EDITOR" "$files"
}
# Environmental Variables
# Uncomment the following line if you don't like systemctl's auto-paging feature:
export SYSTEMD_PAGER=
export PS1="\n\u@\h:\w (\j)\n$? \$ "
export LIBSEAT_BACKEND=logind
export BEMENU_OPTS="--fn 'Comic Mono 12'\
--tb '#6272a4'\
--tf '#f8f8f2'\
--fb '#282a36'\
--ff '#f8f8f2'\
--nb '#282a36'\
--nf '#6272a4'\
--hb '#44475a'\
--hf '#50fa7b'\
--sb '#44475a'\
--sf '#50fa7b'\
--scb '#282a36'\
--scf '#ff79c6'\
--hp '10'\
--binding 'vim'\
--vim-esc-exits\
--ignorecase\
--no-overlap\
--bottom"
'';
};
};
};
}

View File

@ -1,4 +0,0 @@
[[ -f ~/.bashrc ]] && . ~/.bashrc
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" -eq 1 ]; then
exec river
fi

View File

@ -1,3 +0,0 @@
if [ "$SHLVL" = 1 ]; then
[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi

View File

@ -1,131 +0,0 @@
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
set -o vi
unset HISTFILE
# Functions
function home() {
cd
clear
}
function search() {
surfraw $(surfraw -elvi | fzf | awk '{print $1;}')
}
function mkcd {
mkdir -p $1
cd $1
}
# fe [FUZZY PATTERN] - Open the selected file with the default editor
# - Bypass fuzzy finder if there's only one match (--select-1)
# - Exit if there's no match (--exit-0)
function fe() {
IFS='
'
files=$(fzf --query="$1" --multi --select-1 --exit-0)
[ -n "$files" ] && ${EDITOR} "${files}"
}
function _track() {
TRACK_DIR=${TRACK_DIR:-.}
local lis
lis=$(find "$TRACK_DIR"/*.csv -maxdepth 1 2>/dev/null | sed -e 's/.*\///' | sed -e 's/\..*$//')
local cur
cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "$lis" -- "$cur") )
}
function track() {
TRACK_DIR=${TRACK_DIR:-.}
if [ $# -eq 0 ]; then
find "$TRACK_DIR"/*.csv -maxdepth 1 2>/dev/null | sed -e 's/.*\///' | sed -e 's/\..*$//'
else
case "$1" in
-h|--help)
echo "track - track a thing"
echo " "
echo "usage: track # list things tracked"
echo "usage: track (-h or --help) # show this help"
echo "usage: track [thing] # show most recent value of thing"
echo "usage: track [thing] [value] # track new value of thing for today"
echo "usage: track [thing] [options]"
echo " options:"
echo " -a, --all # show all values of thing"
echo " -n, --number # show (number) values of thing"
echo " -d, --delete # delete thing tracking"
;;
*)
local f
local fn
f="$TRACK_DIR"/"$1".csv
fn="$1"
shift
if [ $# -eq 0 ]; then
if [ ! -f "$f" ]; then
echo "track: '$fn' not found"
else
tail -n 1 "$f" | column -s, -t | awk '{printf "\033[38;05;226m%s-\033[38;05;226m%s-\033[38;05;226m%s\t\033[38;05;46m%s\t\n", $1, $2, $3, $4;}'
fi
else
if [ ! -f "$f" ]; then
echo "year,month,day,$fn" > "$f"
fi
case "$1" in
-a|--all)
column -s, -t "$f" | awk '{printf "\033[38;05;226m%s-\033[38;05;226m%s-\033[38;05;226m%s\t\033[38;05;46m%s\t\n", $1, $2, $3, $4;}'
;;
-n|--number)
tail -n "$2" "$f" | column -s, -t | awk '{printf "\033[38;05;226m%s-\033[38;05;226m%s-\033[38;05;226m%s\t\033[38;05;46m%s\t\n", $1, $2, $3, $4;}'
;;
-d|--delete)
rm "$f"
;;
*)
local d
d=$(date '+%Y,%m,%d')
local l
l=$(sed -n "/$d/{=;}" "$f")
local c
c="${*//,/-}"
if [ -z "$l" ]; then
echo "$d,$c" >> "$f"
else
sed -i "$l c $d,$c" "$f"
fi
;;
esac
fi
;;
esac
fi
}
complete -F _track track
# Environmental Variables
# Uncomment the following line if you don't like systemctl's auto-paging feature:
export SYSTEMD_PAGER=
export BEMENU_OPTS="--tb '#6272a4'\
--tf '#f8f8f2'\
--fb '#282a36'\
--ff '#f8f8f2'\
--nb '#282a36'\
--nf '#6272a4'\
--hb '#44475a'\
--hf '#50fa7b'\
--sb '#44475a'\
--sf '#50fa7b'\
--scb '#282a36'\
--scf '#ff79c6'\
--fn 'Comic Mono 12'\
--hp '10'\
--binding 'vim'\
--vim-esc-exits\
--ignorecase\
--no-overlap"

View File

@ -0,0 +1,50 @@
# Firefox home.nix
{ config, lib, pkgs, inputs, user, ... }:
{
programs = {
firefox = {
enable = true;
profiles.${user.name} = {
id = 0;
name = "default";
settings = {
"toolkit.telemetry.reportingpolicy.firstRun" = false;
};
bookmarks = [
{
name = "readlater";
url = "javascript:q=location.href;p=document.title;void(t=open('https://pinboard.in/add?later=yes&noui=yes&jump=close&url='+encodeURIComponent(q)+'&title='+encodeURIComponent(p),'Pinboard','toolbar=no,width=100,height=100'));t.blur();";
},
{
name = "bookmark";
url = "javascript:q=location.href;if(document.getSelection){d=document.getSelection();}else{d='''';};p=document.title;void(open('https://pinboard.in/add?url='+encodeURIComponent(q)+'&description='+encodeURIComponent(d)+'&title='+encodeURIComponent(p),'Pinboard','toolbar=no,width=700,height=350'));";
},
{
name = "subscribe";
url = "javascript:location.href='https://reader.miniflux.app/bookmarklet?uri='+encodeURIComponent(window.location.href)";
},
{
name = "untagged";
url = "https://pinboard.in/u:iiogama/untagged/";
},
{
name = "fastmail";
url = "https://app.fastmail.com/";
},
{
name = "transmission";
url = "http://127.0.0.1:9091/transmission/web/";
},
{
name = "iptorrents";
url = "https://iptorrents.com/peers";
},
{
name = "soundcloud";
url = "https://soundcloud.com/";
}
];
};
};
};
}

View File

@ -0,0 +1,35 @@
{ pkgs, config, ... }:
{
programs.foot = {
enable = true;
settings = {
main = {
font = "Comic Mono:size=12";
};
colors = {
alpha = 1.0;
background = "282a36";
foreground = "f8f8f2";
regular0 = "21222c";
regular1 = "ff5555";
regular2 = "50fa7b";
regular3 = "f1fa8c";
regular4 = "bd93f9";
regular5 = "ff79c6";
regular6 = "8be9fd";
regular7 = "f8f8f2";
bright0 = "6272a4";
bright1 = "ff6e6e";
bright2 = "69ff94";
bright3 = "ffffa5";
bright4 = "d6acff";
bright5 = "ff92df";
bright6 = "a4ffff";
bright7 = "ffffff";
selection-foreground = "ffffff";
selection-background = "44475a";
urls = "8be9fd";
};
};
};
}

View File

@ -1,23 +0,0 @@
font=Comic Mono:size=11
[colors]
alpha=1.0
foreground=f8f8f2
background=282a36
## Normal/regular colors (color palette 0-7)
regular0=000000
regular1=ff5555
regular2=50fa7b
regular3=f1fa8c
regular4=bd93f9
regular5=ff79c6
regular6=8be9fd
regular7=bfbfbf
## Bright colors (color palette 8-15)
bright0=4d4d4d
bright1=ff6367
bright2=5af78e
bright3=f4f99d
bright4=caa9fa
bright5=ff92d0
bright6=9aedfe
bright7=e63636

View File

@ -0,0 +1,29 @@
{ pkgs, config, ... }:
{
services.mako = {
enable = true;
backgroundColor = "#282A36";
borderColor = "#BD93F9";
borderRadius = 5;
borderSize = 2;
margin = "20";
textColor = "#F8F8F2";
anchor = "bottom-right";
layer = "overlay";
maxVisible = 5;
font = "Comic Mono 12";
defaultTimeout = 10000;
extraConfig = ''
[urgency=low]
border-color=#282A36
text-color=#F8F8F2
[urgency=normal]
border-color=#BD93F9
text-color=#F8F8F2
[urgency=high]
background-color=#FF5555
border-color=#FF5555
text-color=#F8F8F2
'';
};
}

View File

@ -1,21 +0,0 @@
max-history=10
max-visible=5
anchor=bottom-right
font=Comic Mono 12
background-color=#282a36
text-color=#50fa7b
border-color=#282a36
default-timeout=10000
[urgency=low]
border-color=#282a36
text-color=#6272a4
[urgency=normal]
border-color=#bd93f9
text-color=#50fa7b
[urgency=high]
background-color=#ff5555
border-color=#ff5555
text-color=#f8f8f2

174
home-manager/dots/river.nix Normal file
View File

@ -0,0 +1,174 @@
{ pkgs, config, ... }:
{
xdg.configFile = {
"river/init" = {
enable = true;
executable = true;
text = ''
#!/usr/bin/env sh
# See the river(1), riverctl(1), and rivertile(1) man pages for complete
# documentation.
# Variables
TERMINAL="foot"
LOCKSCREEN="swaylock"
# Autostart
riverctl spawn "kanshi"
riverctl spawn "wallpaper.sh -r"
riverctl spawn "waybar"
riverctl spawn "mako"
riverctl spawn "wl-paste --type text --watch cliphist store"
riverctl spawn "wl-paste --type image --watch cliphist store"
riverctl spawn "mullvad-gui"
riverctl spawn "nm-applet"
# Theme
riverctl background-color 0x282A36
riverctl border-color-focused 0xBD93F9
riverctl border-color-unfocused 0x282A36
# Launch Shortcuts
riverctl map normal Super Return spawn "$TERMINAL tmux.sh"
riverctl map normal Super+Shift Return spawn "$TERMINAL"
riverctl map normal Super Space spawn "wmenu.sh"
# Focus Controls
riverctl map normal Super H focus-view previous
riverctl map normal Super J focus-view next
riverctl map normal Super K focus-view previous
riverctl map normal Super L focus-view next
riverctl map normal Alt Tab focus-view next
riverctl map normal Alt+Shift Tab focus-view previous
riverctl map normal Super Tab focus-output next
riverctl map normal Super Bracketright focus-output next
riverctl map normal Super Bracketleft focus-output previous
# Move Controls
riverctl map normal Super+Shift H swap previous
riverctl map normal Super+Shift J swap next
riverctl map normal Super+Shift K swap previous
riverctl map normal Super+Shift L swap next
riverctl map normal Super+Shift Space zoom
riverctl map normal Super+Shift Tab send-to-output next
riverctl map normal Super+Shift Bracketright send-to-output next
riverctl map normal Super+Shift Bracketleft send-to-output previous
# Layout Controls
riverctl map normal Super+Alt H send-layout-cmd rivertile "main-ratio -0.05"
riverctl map normal Super+Alt L send-layout-cmd rivertile "main-ratio +0.05"
riverctl map normal Super I send-layout-cmd rivertile "main-count +1"
riverctl map normal Super+Shift I send-layout-cmd rivertile "main-count -1"
riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
# Floating Controls
riverctl map normal Super F toggle-float
riverctl map normal Super+Control H move left 100
riverctl map normal Super+Control J move down 100
riverctl map normal Super+Control K move up 100
riverctl map normal Super+Control L move right 100
riverctl map normal Super+Shift+Control H snap left
riverctl map normal Super+Shift+Control J snap down
riverctl map normal Super+Shift+Control K snap up
riverctl map normal Super+Shift+Control L snap right
riverctl map normal Super+Alt+Shift H resize horizontal -100
riverctl map normal Super+Alt+Shift J resize vertical 100
riverctl map normal Super+Alt+Shift K resize vertical -100
riverctl map normal Super+Alt+Shift L resize horizontal 100
riverctl map-pointer normal Super BTN_LEFT move-view
riverctl map-pointer normal Super BTN_RIGHT resize-view
# Close focused view
riverctl map normal Super W close
riverctl map normal Super Q close
# Exit River
riverctl map normal Super+Shift Q exit
for i in $(seq 1 9)
do
tags=$((1 << ($i - 1)))
# Super+[1-9] to focus tag [0-8]
riverctl map normal Super $i spawn "riverctl set-focused-tags $tags; notify-send 'Tag $tags focus toggle';"
# Super+Shift+[1-9] to tag focused view with tag [0-8]
riverctl map normal Super+Shift $i spawn "riverctl set-view-tags $tags; riverctl set-focused-tags $tags; notify-send 'Tag $tags swap toggle';"
# Super+Control+[1-9] to toggle focus of tag [0-8]
riverctl map normal Super+Control $i spawn "riverctl toggle-focused-tags $tags; notify-send 'Tag $tags focus toggle';"
# Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
riverctl map normal Super+Shift+Control $i spawn "riverctl toggle-view-tags $tags; notiy-send 'Tag $tags assignment toggle';"
done
# Super+0 to focus all tags
# Super+Shift+0 to tag focused view with all tags
all_tags=$(((1 << 32) - 1))
riverctl map normal Super 0 spawn "riverctl set-focused-tags $all_tags; notify-send 'All tags focus toggle';"
riverctl map normal Super+Shift 0 spawn "riverctl set-view-tags $all_tags; notify-send 'All tags assignment toggle';"
# Toggle fullscreen
riverctl map normal None F11 toggle-fullscreen
riverctl map normal Super Z toggle-fullscreen
# Declare a passthrough mode. This mode has only a single mapping to return to
# normal mode. This makes it useful for testing a nested wayland compositor
riverctl declare-mode passthrough
# Super+F11 to enter passthrough mode
riverctl map normal Super F11 enter-mode passthrough
# Super+F11 to return to normal mode
riverctl map passthrough Super F11 enter-mode normal
# Various media key mapping examples for both normal and locked mode which do
# not have a modifier
for mode in normal locked
do
riverctl map $mode None XF86Eject spawn 'eject -T'
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
# Control screen backlight brightness with light (https://github.com/haikarainen/light)
riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5'
riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5'
done
# Set keyboard repeat rate
riverctl set-repeat 50 300
# Make all views with an app-id that starts with "float" and title "foo" start floating.
riverctl rule-add -app-id 'float*' -title 'foo' float
# Make all views with app-id "bar" and any title use client-side decorations
riverctl rule-add -app-id "bar" csd
# Global Configuration Settings
riverctl default-layout rivertile
rivertile -view-padding 10 -outer-padding 10 &
riverctl attach-mode bottom
riverctl hide-cursor timeout 10000
riverctl hide-cursor when-typing enabled
riverctl set-cursor-warp on-focus-change
riverctl focus-follows-cursor always
riverctl focus-output DP-1
riverctl send-layout-cmd rivertile "main-location right"
riverctl focus-output DP-2
riverctl send-layout-cmd rivertile "main-location left"
'';
};
};
}

View File

@ -1,152 +0,0 @@
#!/bin/sh
# See the river(1), riverctl(1), and rivertile(1) man pages for complete
# documentation.
# Autostart
riverctl spawn "way-displays -c $HOME/.config/way-displays/cfg.yaml"
riverctl spawn "swww init"
riverctl spawn "swww img $HOME/Pictures/wallpapers/bliss-night.png --transition-type simple"
riverctl spawn "wl-paste --type text --watch cliphist store"
riverctl spawn "wl-paste --type image --watch cliphist store"
riverctl spawn "mako"
riverctl spawn "mullvad-gui"
# Theme
riverctl background-color 0x282a36
riverctl border-color-focused 0xbd93f9
riverctl border-color-unfocused 0x282a36
# Launch Shortcuts
riverctl map normal Super Return spawn "foot tmux.sh"
riverctl map normal Super+Shift Return spawn "foot"
riverctl map normal Super Space spawn "wmenu.sh"
# Focus Controls
riverctl map normal Super H focus-view previous
riverctl map normal Super J focus-view next
riverctl map normal Super K focus-view previous
riverctl map normal Super L focus-view next
riverctl map normal Alt Tab focus-view next
riverctl map normal Alt+Shift Tab focus-view previous
riverctl map normal Super Tab focus-output next
riverctl map normal Super Bracketright focus-output next
riverctl map normal Super Bracketleft focus-output previous
# Move Controls
riverctl map normal Super+Shift H zoom
riverctl map normal Super+Shift J swap next
riverctl map normal Super+Shift K swap previous
riverctl map normal Super+Shift L swap next
riverctl map normal Super+Shift Tab send-to-output next
riverctl map normal Super+Shift Bracketright send-to-output next
riverctl map normal Super+Shift Bracketleft send-to-output previous
# Layout Controls
riverctl map normal Super+Alt H send-layout-cmd rivertile "main-ratio -0.05"
riverctl map normal Super+Alt L send-layout-cmd rivertile "main-ratio +0.05"
riverctl map normal Super I send-layout-cmd rivertile "main-count +1"
riverctl map normal Super D send-layout-cmd rivertile "main-count -1"
riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
# Floating Controls
riverctl map normal Super F toggle-float
riverctl map normal Super+Control H move left 100
riverctl map normal Super+Control J move down 100
riverctl map normal Super+Control K move up 100
riverctl map normal Super+Control L move right 100
riverctl map normal Super+Shift+Control H snap left
riverctl map normal Super+Shift+Control J snap down
riverctl map normal Super+Shift+Control K snap up
riverctl map normal Super+Shift+Control L snap right
riverctl map normal Super+Alt+Shift H resize horizontal -100
riverctl map normal Super+Alt+Shift J resize vertical 100
riverctl map normal Super+Alt+Shift K resize vertical -100
riverctl map normal Super+Alt+Shift L resize horizontal 100
riverctl map-pointer normal Super BTN_LEFT move-view
riverctl map-pointer normal Super BTN_RIGHT resize-view
# Close focused view
riverctl map normal Super W close
riverctl map normal Super Q close
# Exit River
riverctl map normal Super+Shift Q exit
for i in $(seq 1 9)
do
tags=$((1 << ($i - 1)))
# Super+[1-9] to focus tag [0-8]
riverctl map normal Super $i set-focused-tags $tags
# Super+Shift+[1-9] to tag focused view with tag [0-8]
riverctl map normal Super+Shift $i set-view-tags $tags
# Super+Control+[1-9] to toggle focus of tag [0-8]
riverctl map normal Super+Control $i toggle-focused-tags $tags
# Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
done
# Super+0 to focus all tags
# Super+Shift+0 to tag focused view with all tags
all_tags=$(((1 << 32) - 1))
riverctl map normal Super 0 set-focused-tags $all_tags
riverctl map normal Super+Shift 0 set-view-tags $all_tags
# Toggle fullscreen
riverctl map normal None F11 toggle-fullscreen
riverctl map normal Super Z toggle-fullscreen
# Declare a passthrough mode. This mode has only a single mapping to return to
# normal mode. This makes it useful for testing a nested wayland compositor
riverctl declare-mode passthrough
# Super+F11 to enter passthrough mode
riverctl map normal Super F11 enter-mode passthrough
# Super+F11 to return to normal mode
riverctl map passthrough Super F11 enter-mode normal
# Various media key mapping examples for both normal and locked mode which do
# not have a modifier
for mode in normal locked
do
riverctl map $mode None XF86Eject spawn 'eject -T'
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
# Control screen backlight brightness with light (https://github.com/haikarainen/light)
riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5'
riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5'
done
# Set keyboard repeat rate
riverctl set-repeat 50 300
# Make all views with an app-id that starts with "float" and title "foo" start floating.
riverctl rule-add -app-id 'float*' -title 'foo' float
# Make all views with app-id "bar" and any title use client-side decorations
riverctl rule-add -app-id "bar" csd
# Global Configuration Settings
riverctl default-layout rivertile
rivertile -view-padding 10 -outer-padding 10 &
riverctl attach-mode bottom
riverctl hide-cursor timeout 10000
riverctl hide-cursor when-typing enabled
riverctl set-cursor-warp on-focus-change
riverctl focus-follows-cursor always

View File

@ -0,0 +1,15 @@
{ pkgs, config, ... }:
{
xdg.configFile = {
"swappy/config" = {
enable = true;
text = ''
[Default]
save_dir=$HOME/Pictures/screenshots
line_size=5
text_size=20
text_font=Comic Mono
'';
};
};
}

View File

@ -0,0 +1,30 @@
{ pkgs, config, ... }:
{
programs.swaylock = {
enable = true;
settings = {
color = "282a36";
inside-color = "1F202A";
line-color = "1F202A";
ring-color = "bd93f9";
text-color = "f8f8f2";
layout-bg-color = "1F202A";
layout-text-color = "f8f8f2";
inside-clear-color = "6272a4";
line-clear-color = "1F202A";
ring-clear-color = "6272a4";
text-clear-color = "1F202A";
inside-ver-color = "bd93f9";
line-ver-color = "1F202A";
ring-ver-color = "bd93f9";
text-ver-color = "1F202A";
inside-wrong-color = "ff5555";
line-wrong-color = "1F202A";
ring-wrong-color = "ff5555";
text-wrong-color = "1F202A";
bs-hl-color = "ff5555";
key-hl-color = "50fa7b";
text-caps-lock-color = "f8f8f2";
};
};
}

View File

@ -1,28 +0,0 @@
color=282a36
inside-color=1F202A
line-color=1F202A
ring-color=bd93f9
text-color=f8f8f2
layout-bg-color=1F202A
layout-text-color=f8f8f2
inside-clear-color=6272a4
line-clear-color=1F202A
ring-clear-color=6272a4
text-clear-color=1F202A
inside-ver-color=bd93f9
line-ver-color=1F202A
ring-ver-color=bd93f9
text-ver-color=1F202A
inside-wrong-color=ff5555
line-wrong-color=1F202A
ring-wrong-color=ff5555
text-wrong-color=1F202A
bs-hl-color=ff5555
key-hl-color=50fa7b
text-caps-lock-color=f8f8f2

View File

@ -0,0 +1,55 @@
{ pkgs, config, ... }:
{
programs.tmux = {
extraConfig = ''
# Do not rename windows automatically
set-option -g allow-rename off
# Hide statusbar while using one window
set -g status off
set-hook -g after-new-window 'if "[ #{session_windows} -gt 1 ]" "set status on"'
set-hook -g after-kill-pane 'if "[ #{session_windows} -lt 2 ]" "set status off"'
set-hook -g pane-exited 'if "[ #{session_windows} -lt 2 ]" "set status off"'
set-hook -g window-layout-changed 'if "[ #{session_windows} -lt 2 ]" "set status off"'
# Reload tmux.conf
unbind r
bind r source-file $HOME/.config/tmux/tmux.conf \; display "tmux config reloaded"
# Rebind vertical/horizontal splitting
unbind %
unbind v
bind v split-window -h -c "#{pane_current_path}"
unbind '"'
unbind c
bind c split-window -v -c "#{pane_current_path}"
unbind Enter
bind Enter new-window
unbind Tab
bind Tab last-window
unbind l
# Rebind moving panes
bind -n C-h select-pane -L
bind -n C-j select-pane -D
bind -n C-k select-pane -U
bind -n C-l select-pane -R
bind -n M-h select-pane -L
bind -n M-j select-pane -D
bind -n M-k select-pane -U
bind -n M-l select-pane -R
set -g status-position top
set -g status-left "[#S] "
set -g status-right "#{=21:pane_title} %H:%M"
set -g status-style "bg=#282a36 fg=#f8f8f2"
setw -g window-status-current-style "bg=#BD93F9 fg=#282a36"
setw -g window-status-current-format " #I:#W #F "
setw -g window-status-format "#I:#W #F"
'';
plugins = with pkgs.tmuxPlugins; [
urlview
];
};
}

View File

@ -1,80 +0,0 @@
# Default cfg.yaml for way-displays.
# Copy this to ~/.config/way-displays/cfg.yaml and edit it to your liking.
#
# See https://github.com/alex-courtis/way-displays/blob/master/doc/CONFIGURATION.md
# Arrange displays in a ROW (default, left to right) or a COLUMN (top to bottom)
ARRANGE: ROW
# Align ROWs at the TOP (default), MIDDLE or BOTTOM
# Align COLUMNs at the LEFT (default), MIDDLE or RIGHT
ALIGN: TOP
# The default ORDER is simply the order in which the displays are discovered.
# Define your own.
ORDER:
- 'DP-1'
- 'DP-2'
# Enable scaling, overrides AUTO_SCALE and SCALE
SCALING: TRUE
# The default is to scale each display by DPI.
# This may be disabled and scale 1 will be used, unless a SCALE has been specified.
AUTO_SCALE: TRUE
# Auto scale may be overridden for each display.
SCALE:
#- NAME_DESC: 'monitor description'
# SCALE: 1.75
# Override the preferred mode.
# WARNING: this may result in an unusable display. See https://github.com/alex-courtis/way-displays#known-issues-with-workarounds
# for a possible workaround.
MODE:
# Resolution and refresh
#- NAME_DESC: HDMI-A-1
# WIDTH: 1920
# HEIGHT: 1080
# HZ: 60
# Resolution with highest refresh
#- NAME_DESC: 'monitor description'
# WIDTH: 2560
# HEIGHT: 1440
# Highest available
- NAME_DESC: DP-1
MAX: TRUE
- NAME_DESC: DP-2
MAX: TRUE
# Rotate or translate the display.
# 90, 180, 270, FLIPPED, FLIPPED-90, FLIPPED-180, FLIPPED-270
TRANSFORM:
# - NAME_DESC: 'monitor description'
# TRANSFORM: 270
# VRR / adaptive sync is enabled by default. Disable it per display.
VRR_OFF:
# - DP-2
# - '!.*my monitor.*'
# Laptop displays usually start with eDP e.g. eDP-1. This may be overridden if
# your laptop is different.
#LAPTOP_DISPLAY_PREFIX: 'eDP'
# One of: ERROR, WARNING, INFO (default), DEBUG
LOG_THRESHOLD: INFO
# Disable the specified displays.
DISABLED:
#- "eDP-1"

View File

@ -0,0 +1,78 @@
{ pkgs, config, ... }:
{
xdg.configFile = {
"waybar/config" = {
enable = true;
executable = false;
text = ''
[{
"exclusive": false,
"position": "top",
"height": 20,
"fixed-center": false,
"modules-left": [
"user"
],
"modules-right": [
"clock"
],
"user": {
"format": "{work_d}:{work_H}:{work_M}:{work_S}",
"interval": 1
},
"clock": {
"format": "{:%H:%M:%S}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%Y-%m-%d}",
"interval": 1
}
},
{
"exclusive": false,
"position": "bottom",
"height": 20,
"fixed-center": false,
"modules-left": [
"river/mode"
],
"modules-right": [
"tray"
],
"tray": {
"icon-size": 16,
"spacing": 4,
"show-passive-items": true,
"reverse-direction": true
}
}]
'';
};
"waybar/style.css" = {
enable = true;
executable = false;
text = ''
* {
background: transparent;
color: #F2F2F8;
font-size: 16px;
}
#user {
background: #282A36;
padding: 0 8 0 8;
}
#clock {
background: #282A36;
padding: 0 8 0 8;
}
#mode {
background: #282A36;
padding: 0 8 0 8;
}
#tray {
background: #282A36;
padding: 0 4 0 8;
}
'';
};
};
}

View File

@ -0,0 +1,77 @@
{ pkgs, config, ... }:
{
programs.waybar = {
enable = true;
settings = [{
topBar = {
exclusive = false;
position = "top";
height = 22;
spacing = 16;
modules-left = [ "user" ];
modules-right = [ "clock" ];
"user" = {
format = "{work_d}:{work_H}:{work_M}:{work_S}";
interval = 1;
};
"clock" = {
format = "{:%H:%M:%S}";
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
format-alt = "{:%Y-%m-%d}";
interval = 1;
};
};
bottomBar = {
exclusive = false;
position = "bottom";
height = 22;
spacing = 16;
fixed-center = false;
modules-left = [ "river/mode" ];
modules-right = [ "tray" ];
"tray" = {
icon-size = 18;
spacing = 4;
};
};
}];
style = ''
* {
background: transparent;
color: #F2F2F8;
}
#user {
background: #282A36;
border-style: solid;
border-bottom-right-radius: 5px;
border-width: 0 2 2 0;
border-color: #BD93F9;
padding: 0 8 0 8;
}
#clock {
background: #282A36;
border-style: solid;
border-bottom-left-radius: 5px;
border-width: 0 0 2 2;
border-color: #BD93F9;
padding: 0 8 0 8;
}
#mode {
background: #282A36;
border-style: solid;
border-top-right-radius: 5px;
border-width: 2 2 0 0;
border-color: #BD93F9;
padding: 0 8 0 8;
}
#tray {
background: #282A36;
border-style: solid;
border-top-left-radius: 5px;
border-width: 2 0 0 2;
border-color: #BD93F9;
padding: 0 4 0 8;
}
'';
};
}

View File

@ -4,24 +4,24 @@
imports = [
./cli.nix
];
gtk = {
enable = true;
font = {
name = "Comic Mono";
};
iconTheme = {
name = "dracula-icon-theme";
package = pkgs.dracula-icon-theme;
};
theme = {
name = "dracula-theme";
package = pkgs.dracula-theme;
};
};
xdg = {
systemDirs.data = [
"/var/lib/flatpak/exports/share"
"${config.xdg.dataHome}/flatpak/exports/share"
];
};
gtk = {
enable = true;
theme = {
name = "Dracula";
package = pkgs.dracula-theme;
};
iconTheme = {
name = "Dracula-Icon-Theme";
package = pkgs.dracula-icon-theme;
};
font = {
name = "Comic Mono";
};
};
}

View File

@ -3,32 +3,30 @@
{
imports = [
./gui.nix
./dots/foot.nix
./dots/mako.nix
./dots/river.nix
./dots/swappy.nix
./dots/swaylock.nix
./dots/waybar.nix
];
xdg.configFile = {
"foot" = {
source = ./dots/foot;
target = "foot";
recursive = true;
};
"mako" = {
source = ./dots/mako;
target = "mako";
recursive = true;
};
"river" = {
source = ./dots/river;
target = "river";
recursive = true;
};
"swaylock" = {
source = ./dots/swaylock;
target = "swaylock";
recursive = true;
};
"way-displays" = {
source = ./dots/way-displays;
target = "way-displays";
recursive = true;
services.kanshi = {
enable = true;
profiles = {
default = {
outputs = [
{
criteria = "DP-1";
position = "0,0";
mode = "2560x1440@164.99Hz";
}
{
criteria = "DP-2";
position = "2560,0";
mode = "2560x1440@164.99Hz";
}
];
};
};
};
}

View File

@ -33,7 +33,7 @@
};
home.file = {
"xinitrc" = {
source = ./dots/xinitrc;
source = ./dots/xorg/xinitrc;
target = ".xinitrc";
};
};
@ -66,12 +66,12 @@
};
xdg.configFile = {
"dunst" = {
source = ./dots/dunst;
source = ./dots/xorg/dunst;
target = "dunst";
recursive = true;
};
"sxhkd" = {
source = ./dots/sxhkd;
source = ./dots/xorg/sxhkd;
target = "sxhkd";
recursive = true;
executable = true;

View File

@ -0,0 +1,26 @@
# Base configuration.nix
{ config, lib, pkgs, inputs, user, ... }:
let
hostname="nixos";
in
{
imports = [
./hardware-configuration.nix
];
boot = {
loader.grub = {
enable = true;
device = "/dev/vda";
useOSProber = true;
};
# Hardware-configuration edits
kernel.sysctl."net.ipv4.ip_forward" = 1;
};
networking = {
hostName = "${hostname}";
firewall = {
allowedTCPPorts = [ 445 139 ];
allowedUDPPorts = [ 137 138 ];
};
};
}

View File

@ -17,7 +17,6 @@ in
efi.efiSysMountPoint = "/boot/efi";
timeout = 2;
};
tmp.cleanOnBoot = true;
};
networking = {
hostName = "${hostname}";
@ -73,12 +72,15 @@ in
};
};
};
programs.virt-manager.enable = true;
programs = {
virt-manager.enable = true;
river.enable = true;
};
users.users.${user.name} = {
extraGroups = [ "davfs2" "libvirtd" "transmission" ];
packages = with pkgs; [
mixxx
polychromatic
python311Packages.eyeD3
tagutil
];
};
}

View File

@ -1,24 +1,6 @@
# Buckwheat home.nix
{ config, lib, pkgs, inputs, user, ... }:
{
xsession.windowManager.bspwm = {
monitors = {
DP-1 = [
"1"
"2"
"3"
"4"
"5"
];
DP-2 = [
"6"
"7"
"8"
"9"
"0"
];
};
};
services = {
udiskie = {
enable = true;

22
hosts/buckwheat/xorg.nix Normal file
View File

@ -0,0 +1,22 @@
# Buckwheat home.nix
{ config, lib, pkgs, inputs, user, ... }:
{
xsession.windowManager.bspwm = {
monitors = {
DP-1 = [
"1"
"2"
"3"
"4"
"5"
];
DP-2 = [
"6"
"7"
"8"
"9"
"0"
];
};
};
}

View File

@ -6,13 +6,14 @@
specialArgs = { inherit user inputs; };
modules = [
../nixos/wayland.nix
../nixos/gaming.nix
../nixos/office.nix
../nixos/collections/dev.nix
../nixos/collections/gaming.nix
../nixos/collections/office.nix
./buckwheat/configuration.nix
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit user; };
home-manager.extraSpecialArgs = { inherit user inputs; };
home-manager.users.${user.name} = {
imports = [
../home-manager/wayland.nix
@ -26,9 +27,9 @@
inherit system;
specialArgs = { inherit user inputs; };
modules = [
../nixos/xorg.nix
../nixos/office.nix
../nixos/pentest.nix
../nixos/wayland.nix
../nixos/collections/office.nix
../nixos/collections/pentest.nix
./fireweed/configuration.nix
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
@ -36,27 +37,26 @@
home-manager.extraSpecialArgs = { inherit user; };
home-manager.users.${user.name} = {
imports = [
../home-manager/xorg.nix
../home-manager/wayland.nix
./fireweed/home.nix
];
};
}
];
};
vm = lib.nixosSystem {
base = lib.nixosSystem {
inherit system;
specialArgs = { inherit user inputs; };
modules = [
../nixos/cli.nix
./vm/configuration.nix
../nixos/base.nix
./base/configuration.nix
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit user; };
home-manager.users.${user.name} = {
imports = [
../home-manager/cli.nix
./vm/home.nix
../home-manager/base.nix
];
};
}

View File

@ -32,11 +32,6 @@ in
allowedTCPPorts = [ 445 139 ];
allowedUDPPorts = [ 137 138 ];
};
# Proxy configuration
# proxy = {
# default = "http://user:password@proxy:port/";
# noProxy = "127.0.0.1,localhost,internal.domain";
# };
};
users.users.${user.name} = {
extraGroups = [ "davfs2" ];
@ -51,11 +46,11 @@ in
enable = true;
package = pkgs.mullvad-vpn;
};
udisks2 = {
cage = {
enable = true;
mountOnMedia = true;
program = "${pkgs.foot}/bin/foot";
user = "${user.name}";
};
# Enable automatic login for the user.
# getty.autologinUser = "${user.name}";
};
getty.autologinUser = "${user.name}";
}

View File

@ -1,47 +0,0 @@
# NixOS VM configuration.nix
{ config, lib, pkgs, inputs, user, ... }:
let
hostname="nixos";
in
{
imports = [
./hardware-configuration.nix
];
boot = {
loader.grub = {
enable = true;
device = "/dev/vda";
useOSProber = true;
};
# Hardware-configuration edits
kernel.sysctl."net.ipv4.ip_forward" = 1;
# Clean /tmp at boot
tmp.cleanOnBoot = true;
};
networking = {
hostName = "${hostname}"; # Define your hostname.
firewall = {
# To disable the firewall altogether:
# enable = false;
allowedTCPPorts = [ 445 139 ];
allowedUDPPorts = [ 137 138 ];
};
# Proxy configuration
# proxy = {
# default = "http://user:password@proxy:port/";
# noProxy = "127.0.0.1,localhost,internal.domain";
# };
};
users.users.${user.name} = {
extraGroups = [
];
packages = with pkgs; [
];
};
services = {
# Enable automatic login for the user.
getty.autologinUser = "${user.name}";
};
}

View File

@ -1,123 +0,0 @@
# Buckwheat configuration.nix
{ config, lib, pkgs, inputs, user, ... }:
let
hostname="buckwheat";
in
{
imports = [
./hardware-configuration.nix
];
boot = {
loader = {
systemd-boot = {
enable = true;
configurationLimit = 10;
};
efi.canTouchEfiVariables = true;
efi.efiSysMountPoint = "/boot/efi";
timeout = 2;
};
# Hardware-configuration edits
kernel.sysctl."net.ipv4.ip_forward" = 1;
# Clean /tmp at boot
tmp.cleanOnBoot = true;
};
networking = {
hostName = "${hostname}"; # Define your hostname.
firewall = {
# To disable the firewall altogether:
# enable = false;
allowedTCPPorts = [ 445 139 ];
allowedUDPPorts = [ 137 138 ];
};
# Proxy configuration
# proxy = {
# default = "http://user:password@proxy:port/";
# noProxy = "127.0.0.1,localhost,internal.domain";
# };
};
users.users.${user.name} = {
extraGroups = [ "davfs2" "libvirtd" "transmission" ];
packages = with pkgs; [
mixxx
virt-manager
];
};
services = {
davfs2 = {
enable = true;
};
mullvad-vpn = {
enable = true;
package = pkgs.mullvad-vpn;
};
transmission = {
enable = true;
openFirewall = true;
};
udisks2 = {
enable = true;
mountOnMedia = true;
};
# Enable automatic login for the user.
# getty.autologinUser = "${user.name}";
};
virtualisation.libvirtd.enable = true;
# Borg backup configuration
services.borgbackup.jobs."daily" = {
paths = [
"/home"
];
exclude = [
"/home/*/go/bin"
"/home/*/go/pkg"
];
repo = "/mnt/daily/buckwheat";
encryption = {
mode = "repokey-blake2";
passCommand = "cat /root/borgbackup/passphrase";
};
compression = "auto,lzma";
startAt = "daily";
prune.keep = {
within = "7d";
};
};
services.borgbackup.jobs."weekly" = {
paths = [
"/home"
];
exclude = [
"/home/*/go/bin"
"/home/*/go/pkg"
];
repo = "/mnt/weekly/buckwheat";
encryption = {
mode = "repokey-blake2";
passCommand = "cat /root/borgbackup/passphrase";
};
compression = "auto,lzma";
startAt = "weekly";
};
#services.borgbackup.jobs."borgbase" = {
# paths = [
# "/home"
# ];
# exclude = [
# "/home/*/go/bin"
# "/home/*/go/pkg"
# ];
# repo = "<repo_hash>.repo.borgbase.com:repo";
# encryption = {
# mode = "repokey-blake2";
# passCommand = "cat /root/borgbackup/passphrase";
# };
# environment.BORG_RSH = "ssh -i /root/borgbackup/ssh_key";
# compression = "auto,lzma";
# startAt = "daily";
#};
}

View File

@ -1,6 +0,0 @@
# NixOS VM home.nix
{ config, lib, pkgs, inputs, user, ... }:
{
services = {
};
}

20
justfile Normal file
View File

@ -0,0 +1,20 @@
recipe-name:
grep "description" "./flake.nix"
default:
just --list
debug:
nixos-rebuild switch --flake . --use-remote-sudo --show-trace --verbose
test:
nixos-rebuild test --flake ".#$(hostname)" --use-remote-sudo
switch:
nixos-rebuild switch --flake ".#$(hostname)" --use-remote-sudo
update:
nixos-rebuild switch --flake --update-input nixpkgs ".#$(hostname)"
todo:
nb todos/

View File

@ -18,10 +18,11 @@
keep-derivations = true
'';
};
boot = {
tmp.cleanOnBoot = true;
};
nixpkgs.config.allowUnfree = true;
networking.networkmanager.enable = true;
time.timeZone = "America/Los_Angeles";
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
@ -68,8 +69,8 @@
extraGroups = [ "networkmanager" "wheel" ];
initialPassword = "hunter2";
packages = with pkgs; [
bottom
eva
gotop
links2
nix-du
nmap
@ -111,17 +112,16 @@
];
};
system = {
#autoUpgrade = {
# enable = true;
# allowReboot = false;
# channel = "https://channels.nixos.org/nixos-unstable";
# flake = "<git repo url>";
# flags = [
# "--update-input"
# "nixpkgs"
# "--commit-lockfile"
# ];
#};
autoUpgrade = {
enable = true;
allowReboot = false;
flake = "https://git.sdf.org/${user.long}/confix.git";
flags = [
"--update-input"
"nixpkgs"
"--commit-lockfile"
];
};
stateVersion = "22.11";
};
}

View File

@ -7,7 +7,6 @@
environment = {
localBinInPath = true;
variables = {
GOPROXY = "direct";
#MAILRC="$XDG_CONFIG_HOME/mail/mailrc"
#allowing environmental variable is needed for a mosh connection
LC_CTYPE = "en_US.UTF-8";
@ -87,7 +86,6 @@
ffmpeg
fq
fx
gitui
glow
gpg-tui
gping
@ -105,6 +103,7 @@
john
jq
killall
lavat
lynis
mdp
mediainfo
@ -114,6 +113,7 @@
oed
pdfgrep
phetch
pinentry
profanity
recutils
senpai
@ -123,7 +123,7 @@
ssss
surfraw
tmux-xpanes
tut
toot
unrar
unzip
up
@ -132,5 +132,6 @@
yank
yq-go
yt-dlp
zoxide
];
}

17
nixos/collections/dev.nix Normal file
View File

@ -0,0 +1,17 @@
# Software Development Packages
{ config, lib, pkgs, user, ... }:
{
environment = {
variables = {
GOPROXY = "direct";
};
};
users.users.${user.name}.packages = with pkgs; [
cargo
gitui
go
just
lazygit
rustc
];
}

View File

@ -7,6 +7,7 @@
#obsidian
pandoc
pdftk
qcal
#sc-im
thunderbird
];

View File

@ -6,6 +6,7 @@
};
users.users.${user.name}.packages = with pkgs; [
burpsuite
httpie
metasploit
nikto
sherlock

View File

@ -44,7 +44,9 @@
};
users.users.${user.name}.packages = with pkgs; [
ani-cli
bitwarden
glib
gparted
lagrange
librewolf
mangal
@ -53,6 +55,7 @@
mupdf
#onionshare-gui
signal-desktop
simplex-chat-desktop
tor-browser-bundle-bin
#urlview
ytfzf

View File

@ -22,27 +22,27 @@
];
};
};
programs = {
river = {
enable = true;
extraPackages = with pkgs; [
bemenu
bemoji
cliphist
foot
grimblast
imv
mako
swaylock
swww
tessen
way-displays
wl-clipboard
wtype
];
};
xwayland = {
enable = true;
};
services = {
seatd.enable = true;
};
environment.systemPackages = with pkgs; [
bemenu
bemoji
cliphist
grim
foot
imv
kanshi
mako
pinentry-bemenu
slurp
swappy
swaylock
swww
tessen
waybar
wf-recorder
wl-clipboard
wtype
];
}

44
todo.md
View File

@ -1,44 +0,0 @@
- [ ] Create additional host configurations
- [ ] Implement the Impermanence module
- [Erase your darlings](https://grahamc.com/blog/erase-your-darlings/)
- [tmpfs as home](https://elis.nu/blog/2020/06/nixos-tmpfs-as-home/)
- [tmpfs as root](https://elis.nu/blog/2020/05/nixos-tmpfs-as-root/)
- [Impermanence - NixOS Wiki](https://nixos.wiki/wiki/Impermanence)
- [ ] Implement [Agenix](https://nixos.wiki/wiki/Agenix) or Sopsnix
- [Agenix Git Repo](https://github.com/ryantm/agenix)
- [Homeage Git Repo](https://github.com/jordanisaacs/homeage)
- [Handling Secrets in NixOS](https://lgug2z.com/articles/handling-secrets-in-nixos-an-overview/)
- [NixOS Secrets Management](https://onion.tube/watch?v=G5f6GC7SnhU)
- [ ] Implement [Stylix](https://danth.github.io/stylix/)
- [ ] Implement [MicroVM.nix](https://github.com/astro/microvm.nix)
- [ ] Figure out urlview and yank conflict with tmux plugins
- [ ] Implement [Nix-Colors](https://youtube.com/watch?v=jO2o0IN0LPE)
- [ ] Fix autoupdate with remote flake repo
- [ ] Wayland monitors swap positions after turning off and turning back on
- [ ] GPG unlock prompt not happening on Wayland anymore
https://github.com/alex-courtis/way-displays
Configure
Restart the compositor and run way-displays -g or look at /tmp/way-displays.1.me.log.
Tweak cfg.yaml to your liking and save it. Changes will be immediately applied.
Alternatively, use the command line to make your changes then persist them with way-displays -w.
You might want to tail -f /tmp/way-displays.1.me.log whilst you are tweaking.
Usage
See Configuration for details on cfg.yaml and the command line.
Start the way-displays server by running once with no arguments after your wayland compositor has been started.
It will remain in the background, responding to changes, such as plugging in a display, and will terminate when you exit the compositor.
It will print messages to inform you of everything that is going on.
You can interact with the server via the command line
The server responds to IPC requests to fetch and mutate state.

10
todos/.index Normal file
View File

@ -0,0 +1,10 @@
20240114220929.todo.md
20240114221107.todo.md
20240114221315.todo.md
20240114221429.todo.md
20240114221545.todo.md
20240115092910.todo.md
20240115093320.todo.md
20240115093833.todo.md
20240116194420.todo.md
20240120104042.todo.md

View File

@ -0,0 +1 @@
# [ ] GPG unlock GUI prompt not happening on Wayland anymore

View File

@ -0,0 +1,26 @@
# [x] Wayland monitors swap positions after turning off and turning back on
Kanshi may be the solution (https://github.com/emersion/kanshi)
https://github.com/alex-courtis/way-displays
Configure
Restart the compositor and run way-displays -g or look at /tmp/way-displays.1.me.log.
Tweak cfg.yaml to your liking and save it. Changes will be immediately applied.
Alternatively, use the command line to make your changes then persist them with way-displays -w.
You might want to tail -f /tmp/way-displays.1.me.log whilst you are tweaking.
Usage
See Configuration for details on cfg.yaml and the command line.
Start the way-displays server by running once with no arguments after your wayland compositor has been started.
It will remain in the background, responding to changes, such as plugging in a display, and will terminate when you exit the compositor.
It will print messages to inform you of everything that is going on.
You can interact with the server via the command line
The server responds to IPC requests to fetch and mutate state.

View File

@ -0,0 +1,2 @@
# [ ] Implement MicroVM.nix
https://github.com/astro/microvm.nix

View File

@ -0,0 +1,9 @@
# [ ] Implement Agenix or Sopsnix
- [Agenix](https://nixos.wiki/wiki/Agenix)
- Sopsnix
- [Agenix Git Repo](https://github.com/ryantm/agenix)
- [Homeage Git Repo](https://github.com/jordanisaacs/homeage)
- [Handling Secrets in NixOS](https://lgug2z.com/articles/handling-secrets-in-nixos-an-overview/)
- [NixOS Secrets Management](https://onion.tube/watch?v=G5f6GC7SnhU)
- https://www.youtube.com/watch?v=G5f6GC7SnhU
- This is needed for borg backup key

View File

@ -0,0 +1,5 @@
# [ ] Implement the Impermance module
- [Erase your darlings](https://grahamc.com/blog/erase-your-darlings/)
- [tmpfs as home](https://elis.nu/blog/2020/06/nixos-tmpfs-as-home/)
- [tmpfs as root](https://elis.nu/blog/2020/05/nixos-tmpfs-as-root/)
- [Impermanence - NixOS Wiki](https://nixos.wiki/wiki/Impermanence)

View File

@ -0,0 +1,2 @@
# [ ] Switch from librewolf to a declared firefox install
Follow this video tutorial https://youtube.com/watch?v=GaM_paeX7TI

View File

@ -0,0 +1,13 @@
# [ ] Implement flake-parts
# Flake Parts Information
https://github.com/hercules-ci/flake-parts
https://git.forge.nihilum.space/~yushyin/nurpkgs-yushyin/tree/master
# General Flake Information
https://dev.to/misterio/how-to-package-a-rust-app-using-nix-3lh3
https://srid.ca/rust-nix
https://www.youtube.com/watch?v=IdHbRGB-yXI
https://onion.tube/watch?v=a67Sv4Mbxmc
https://onion.tube/watch?v=4ZoBGlkMPWI
https://onion.tube/watch?v=WT75jfETWRg

View File

@ -0,0 +1,3 @@
# [ ] Figure out cron jobs or systemd timers
https://nixos.wiki/wiki/Cron

View File

@ -0,0 +1,12 @@
# [ ] Web Services
soju/senpai
soundcloud
bitwarden
searx
miniflux
ssh
http
gemini
gopher

View File

@ -0,0 +1 @@
# [ ] Figure out how to use Perl and Perl modules with NixOS