Move Nix files into a nix directory

Move everything from `config` to the root level.
This commit is contained in:
Oliver Davies 2024-11-20 21:37:15 +00:00
parent 9f47df62b5
commit 69a397e624
124 changed files with 14 additions and 14 deletions

View file

@ -0,0 +1,83 @@
{
desktop,
inputs,
pkgs,
username,
...
}:
let
php = pkgs.php82;
phpPackages = pkgs.php82Packages;
inherit (pkgs) writeShellApplication;
_timer = writeShellApplication (import ./scripts/_timer.nix);
create-zellij-session = writeShellApplication (
import ./scripts/create-zellij-session.nix { inherit pkgs; }
);
deliver = writeShellApplication (import ./scripts/deliver.nix { inherit pkgs; });
export-video-list = writeShellApplication (
import ./scripts/export-video-list.nix { inherit pkgs username; }
);
run = writeShellApplication (import ./scripts/run.nix { inherit pkgs; });
t = writeShellApplication (import ./scripts/t.nix { inherit pkgs; });
timer = writeShellApplication (import ./scripts/timer.nix);
in
with pkgs;
[
age
awscli2
bitwarden-cli
bottom
cachix
ctop
delta
devenv
dog
doppler
entr
fd
file
gcc
gh
git
git-crypt
gnupg
go
inotify-tools
jq
killall
lua
mariadb
mob
php
phpPackages.composer
pv
rustywind
simple-http-server
sshs
tldr
tree
tree-sitter
unzip
virtualenv
watchexec
wget
xclip
xcp
xdg-utils
xh
yarn
# Scripts.
create-zellij-session
deliver
run
t
]
++ pkgs.lib.optionals desktop [
# Scripts.
_timer
export-video-list
timer
]

View file

@ -0,0 +1,47 @@
{
inputs,
pkgs,
username,
self,
}:
{
home.username = "${username}";
home.homeDirectory = "/home/${username}";
# Nicely reload system units when changing configs.
systemd.user.startServices = "sd-switch";
# See https://github.com/nix-community/home-manager/issues/2064#issuecomment-2259307514.
# This is a workaround for the following errors that appeared when switching back to unstable:
# - 1: Failed to start unit flameshot.service
# - 2: org.freedesktop.systemd1.NoSuchUnit: Unit tray.target not found.
systemd.user.targets.tray = {
Unit = {
Description = "Home Manager System Tray";
Requires = [ "graphical-session-pre.target" ];
};
};
home.stateVersion = "22.05";
programs.home-manager.enable = true;
imports = [
(import ../../modules/home-manager/git.nix { inherit inputs pkgs; })
(import ../../modules/home-manager/neovim.nix { inherit inputs pkgs; })
../../modules/home-manager/bat.nix
../../modules/home-manager/bin.nix
../../modules/home-manager/direnv.nix
../../modules/home-manager/fzf.nix
../../modules/home-manager/htop.nix
../../modules/home-manager/lsd.nix
../../modules/home-manager/pet.nix
../../modules/home-manager/phpactor.nix
../../modules/home-manager/ripgrep.nix
../../modules/home-manager/starship.nix
../../modules/home-manager/syncthing.nix
../../modules/home-manager/tmux.nix
../../modules/home-manager/zellij.nix
../../modules/home-manager/zsh.nix
];
}

View file

@ -0,0 +1,13 @@
{
name = "_timer";
runtimeInputs = [ ];
text = ''
mins=$1
message=''${2:-Time out!}
sleep -- "$mins" * 60
notify-send -t 0 "''${message}" "Your timer of $mins min is over" -u normal
'';
}

View file

@ -0,0 +1,65 @@
{ pkgs }:
{
name = "create-zellij-session";
runtimeInputs = with pkgs; [
openssl
zellij
];
text = ''
function _execute_zellij_layout {
local session_name="$1"
local layout_file="$2"
DIGEST="$(openssl sha512 "$layout_file")"
# Prompt the first time we see a given layout file before running it.
if ! grep -q "$DIGEST" ~/..zellij.digests 2> /dev/null; then
cat "$layout_file"
read -r -n 1 -p "Trust (and run) this Zellij file? (t = trust, otherwise = skip) "
if [[ $REPLY =~ ^[Tt]$ ]]; then
echo "$DIGEST" >> ~/..zellij.digests
_attach_to_or_create_zellij_session --layout "$layout_file"
fi
else
_attach_to_or_create_zellij_session --layout "$layout_file"
fi
}
function _attach_to_or_create_zellij_session {
zellij attach "$session_name" 2>/dev/null || zellij --session "$session_name" "$@"
}
function main {
if [[ $# -eq 1 ]]; then
selected_path=$1
else
selected_path=$(find "$REPOS" "$REPOS/tfw" "$HOME/Documents" -maxdepth 1 -mindepth 1 -type d \
! -name "*-old" \
! -name "*.bak" \
! -name "*.old" \
! -name "_archive" \
| sort \
| fzf --reverse)
fi
session_name=$(basename "$selected_path")
cd "$selected_path"
if [[ -f ".ignored/dev.kdl" ]]; then
_execute_zellij_layout "$session_name" ".ignored/dev.kdl"
elif [[ -f "dev.kdl" ]]; then
_execute_zellij_layout "$session_name" "dev.kdl"
fi
_attach_to_or_create_zellij_session
}
main "$@"
'';
}

View file

@ -0,0 +1,25 @@
{ pkgs }:
{
name = "deliver";
runtimeInputs = with pkgs; [ docker ];
text = ''
set +o pipefail
# Based on https://github.com/jessarcher/dotfiles/blob/ef692c35d64db2c13674dfc850a23b6acf9e8f91/scripts/deliver.
docker_compose_service_name=$(docker compose ps --services 2>/dev/null | grep '^app\|php$' | head -n1)
if [[ "$docker_compose_service_name" != "" ]]; then
if [ -t 1 ]; then
"${pkgs.docker}/bin/docker" compose exec "$docker_compose_service_name" "$@"
else
# The command is not being run in a TTY
"${pkgs.docker}/bin/docker" compose exec -T "$docker_compose_service_name" "$@"
fi
else
"$@"
fi
'';
}

View file

@ -0,0 +1,33 @@
{ pkgs, username, ... }:
{
name = "export-video-list";
runtimeInputs = with pkgs; [
jq
tree
udisks
];
text = ''
device_name="/dev/sda2"
device_label="UNTITLED"
source_path="/run/media/${username}/$device_label"
# If the source path doesn't exist, try mounting the device.
if [[ ! -d "$source_path" ]]; then
${pkgs.udisks}/bin/udisksctl mount -b "$device_name"
fi
# Exit early if the source path still doesn't exist.
if [[ ! -d "$source_path" ]]; then
echo "Error: $source_path not found."
exit 1
fi
output_file="$HOME/Documents/videos.json"
${pkgs.tree}/bin/tree -J "$source_path/Videos" | ${pkgs.jq}/bin/jq . > "$output_file"
${pkgs.jq}/bin/jq . < "$output_file"
'';
}

View file

@ -0,0 +1,16 @@
{ pkgs }:
{
name = "run";
runtimeInputs = with pkgs; [ bashInteractive ];
text = ''
if [[ -e .ignored/run ]]; then
.ignored/run "$@"
exit $?
fi
./run "$@"
'';
}

View file

@ -0,0 +1,38 @@
{ pkgs }:
{
name = "t";
runtimeInputs = with pkgs; [
openssl
tmux
];
text = ''
# Based on similar scripts by ThePrimeagen and Jess Archer.
if [[ $# -eq 1 ]]; then
selected_path=$1
else
# Get the session name from fuzzy-finding list of directories and generating a
# tmux-safe version.
items=$(find "$REPOS" ~/Documents \
-maxdepth 1 -mindepth 1 -type d \
! -name "_archive" \
! -name "*-old" \
! -name "*.old"
)
selected_path=$(echo "''${items}" | sort | fzf --reverse)
fi
session_name=$(basename "$selected_path" | sed 's/\./_/g')
if tmux switch-client -t="$session_name" 2>/dev/null; then
exit 0
fi
( (tmux new-session -c "$selected_path" -d -s "$session_name" && tmux switch-client -t "$session_name") 2>/dev/null ) ||
tmux new-session -c "$selected_path" -A -s "$session_name"
'';
}

View file

@ -0,0 +1,20 @@
{
name = "timer";
runtimeInputs = [ ];
text = ''
if [[ "$1" == "" ]]; then
echo "Usage: ''${0##*/} <mins> [message]"
exit 1
fi
mins=$1
message=$2
nohup _timer "$mins" "$message" &> /dev/null &
echo "timer started for $mins min"
echo "timer started for $mins min, message: '$message'" | systemd-cat -t timer
'';
}