Merge branch 'master' of git.bitlab21.com:sam/nixos

This commit is contained in:
= 2024-06-15 01:32:01 +01:00
commit 7c994c2712
40 changed files with 649 additions and 99 deletions

View File

@ -45,11 +45,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1717770040, "lastModified": 1718242063,
"narHash": "sha256-eq9gP060TqWqRf2k4WO5FrG49rVq5Jy3Ptusg0CFdds=", "narHash": "sha256-n3AWItJ4a94GT0cray/eUV7tt3mulQ52L+lWJN9d1E8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "398acc470f7c2d68621db01900f053e6000129c4", "rev": "832a9f2c81ff3485404bd63952eadc17bf7ccef2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -219,11 +219,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1717525419, "lastModified": 1718243258,
"narHash": "sha256-5z2422pzWnPXHgq2ms8lcCfttM0dz+hg+x1pCcNkAws=", "narHash": "sha256-abBpj2VU8p6qlRzTU8o22q68MmOaZ4v8zZ4UlYl5YRU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "a7117efb3725e6197dd95424136f79147aa35e5b", "rev": "8d5e27b4807d25308dfe369d5a923d87e7dbfda3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -240,11 +240,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1717525419, "lastModified": 1718141734,
"narHash": "sha256-5z2422pzWnPXHgq2ms8lcCfttM0dz+hg+x1pCcNkAws=", "narHash": "sha256-cA+6l8ZCZ7MXGijVuY/1f55+wF/RT4PlTR9+g4bx86w=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "a7117efb3725e6197dd95424136f79147aa35e5b", "rev": "892f76bd0aa09a0f7f73eb41834b8a904b6d0fad",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -255,11 +255,11 @@
}, },
"impermanence": { "impermanence": {
"locked": { "locked": {
"lastModified": 1708968331, "lastModified": 1717932370,
"narHash": "sha256-VUXLaPusCBvwM3zhGbRIJVeYluh2uWuqtj4WirQ1L9Y=", "narHash": "sha256-7C5lCpiWiyPoIACOcu2mukn/1JRtz6HC/1aEMhUdcw0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "impermanence", "repo": "impermanence",
"rev": "a33ef102a02ce77d3e39c25197664b7a636f9c30", "rev": "27979f1c3a0d3b9617a3563e2839114ba7d48d3f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -295,11 +295,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1716993688, "lastModified": 1717976995,
"narHash": "sha256-vo5k2wQekfeoq/2aleQkBN41dQiQHNTniZeVONWiWLs=", "narHash": "sha256-u3HBinyIyUvL1+N816bODpJmSQdgn0Mbb8BprFw7kqo=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "c0d5b8c54d6828516c97f6be9f2d00c63a363df4", "rev": "315aa649ba307704db0b16c92f097a08a65ec955",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -375,11 +375,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1717265169, "lastModified": 1717880976,
"narHash": "sha256-IITcGd6xpNoyq9SZBigCkv4+qMHSqot0RDPR4xsZ2CA=", "narHash": "sha256-BRvSCsKtDUr83NEtbGfHLUOdDK0Cgbezj2PtcHnz+sQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3b1b4895b2c5f9f5544d02132896aeb9ceea77bc", "rev": "4913a7c3d8b8d00cb9476a6bd730ff57777f740c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -391,11 +391,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1717602782, "lastModified": 1718318537,
"narHash": "sha256-pL9jeus5QpX5R+9rsp3hhZ+uplVHscNJh8n8VpqscM0=", "narHash": "sha256-4Zu0RYRcAY/VWuu6awwq4opuiD//ahpc2aFHg2CWqFY=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e8057b67ebf307f01bdcc8fba94d94f75039d1f6", "rev": "e9ee548d90ff586a6471b4ae80ae9cfcbceb3420",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -407,11 +407,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1717839683, "lastModified": 1718376599,
"narHash": "sha256-kC0eyEsfpXbtQ2Ee5kgjmLFSVsLgnqpj10LjEi+fK+g=", "narHash": "sha256-cTFGqLYTrIxORc673fUUCecQVXiXHDj6Z8vFQ5K4SDg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3f3a01219b4a1b6ee63039a3aa63948fbf37c0dd", "rev": "3bac01780f87646b70326db70920902bc4d49fab",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -435,11 +435,11 @@
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1717861394, "lastModified": 1718376125,
"narHash": "sha256-U7E1Wg5PRKUYqfeL8H6KU/5VjFo8bkxbFzigN2grkQI=", "narHash": "sha256-NIJZxmY2CWsqJK/9BQCRSHfcCY9K6thjq/1XtJobxmU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "db32ebe205111af0b74d74684df64674ffcf3b36", "rev": "7a2a25af02be25987aa43cd681312f4b5ba12317",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -450,11 +450,11 @@
}, },
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1717872410, "lastModified": 1718398470,
"narHash": "sha256-kL4bugfx+R4ozR6t8MrGSdv3LVX7H9IkCxmvjaLAQ7o=", "narHash": "sha256-47JT0Za+js92ci0GhStCY21UiEB3MU4cBYoCVmpfudA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "3b134079df522044c0da57f1b7785646a7b76518", "rev": "c6325c8dee7dd1f58e1b4884672c670d6b541845",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -475,11 +475,11 @@
"treefmt-nix": "treefmt-nix_2" "treefmt-nix": "treefmt-nix_2"
}, },
"locked": { "locked": {
"lastModified": 1717774136, "lastModified": 1718285706,
"narHash": "sha256-comOhXDFUrbVba47gPenVBKy2foM3m3qOqpcP8umWDA=", "narHash": "sha256-DScsBM+kZvxOva7QegfdtleebMXh30XPxDQr/1IGKYo=",
"owner": "nix-community", "owner": "nix-community",
"repo": "poetry2nix", "repo": "poetry2nix",
"rev": "370da3b6fefc6c11367463b68d010f9950aaa80c", "rev": "a5be1bbbe0af0266147a88e0ec43b18c722f2bb9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -511,11 +511,11 @@
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1717455931, "lastModified": 1718137936,
"narHash": "sha256-8Q6mKSsto8gaGczXd4G0lvawdAYLa5Dlh3/g4hl5CaM=", "narHash": "sha256-psA+1Q5fPaK6yI3vzlLINNtb6EeXj111zQWnZYyJS9c=",
"owner": "mic92", "owner": "mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "d4555e80d80d2fa77f0a44201ca299f9602492a0", "rev": "c279dec105dd53df13a5e57525da97905cc0f0d6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -613,11 +613,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1717278143, "lastModified": 1718139168,
"narHash": "sha256-u10aDdYrpiGOLoxzY/mJ9llST9yO8Q7K/UlROoNxzDw=", "narHash": "sha256-1TZQcdETNdJMcfwwoshVeCjwWfrPtkSQ8y8wFX3it7k=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "3eb96ca1ae9edf792a8e0963cc92fddfa5a87706", "rev": "1cb529bffa880746a1d0ec4e0f5076876af931f1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -635,11 +635,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1717278143, "lastModified": 1717850719,
"narHash": "sha256-u10aDdYrpiGOLoxzY/mJ9llST9yO8Q7K/UlROoNxzDw=", "narHash": "sha256-npYqVg+Wk4oxnWrnVG7416fpfrlRhp/lQ6wQ4DHI8YE=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "3eb96ca1ae9edf792a8e0963cc92fddfa5a87706", "rev": "4fc1c45a5f50169f9f29f6a98a438fb910b834ed",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -1,4 +1,4 @@
{ pkgs, inputs, ... }: { pkgs, inputs, outputs, ... }:
{ {
imports = [ imports = [
inputs.nix-colors.homeManagerModules.default inputs.nix-colors.homeManagerModules.default
@ -7,6 +7,11 @@
./fonts.nix ./fonts.nix
]; ];
nixpkgs.overlays = [
inputs.nur.overlay
outputs.overlays.additions
];
# Global home packages without config go here (for all hosts and users) # Global home packages without config go here (for all hosts and users)
home.packages = builtins.attrValues { home.packages = builtins.attrValues {
inherit (pkgs) inherit (pkgs)
@ -20,6 +25,7 @@
btop btop
htop htop
postgresql postgresql
libqalculate
; ;
}; };
home.stateVersion = "23.11"; home.stateVersion = "23.11";

View File

@ -1,10 +1,14 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;
home.packages = [ home.packages = with pkgs; [
pkgs.noto-fonts noto-fonts
pkgs.nerdfonts # loads the complete collection. look into overide for FiraMono or potentially mononoki noto-fonts-cjk
pkgs.meslo-lgs-nf noto-fonts-emoji
hack-font
liberation_ttf
libertine
nerdfonts
]; ];
} }

View File

@ -0,0 +1,16 @@
{
home.file.".config/autostart/feh-wallpaper-changer.desktop" = {
recursive = true;
text = ''
[ Desktop Entry ]
Type=Application
Exec=feh-wallpaper-changer
X-GNOME-Autostart-enabled=true
NoDisplay=false
Hidden=false
Name[en_GB]=feh-wallpaper-changer
Comment[en_GB]=Periodically changes the wallpaper using feh
X-GNOME-Autostart-Delay=0
'';
};
}

View File

@ -1,6 +1,8 @@
{ {
imports = [ imports = [
../common ../common
../common/x11
./autostart.nix
# This doesn't seem to work in Cinnamon # This doesn't seem to work in Cinnamon
#./cinnamon-monitors.nix #./cinnamon-monitors.nix
]; ];

View File

@ -1,12 +1,9 @@
{ pkgs, inputs, ... }: { { pkgs, ... }: {
imports = [ imports = [
./firefox.nix ./firefox.nix
./alacritty.nix ./alacritty.nix
./zotero.nix ./zotero.nix
]; ./fontconfig.nix
nixpkgs.overlays = [
inputs.nur.overlay
]; ];
# Global packages for desktop environments # Global packages for desktop environments

View File

@ -0,0 +1,11 @@
{ ... }: {
fonts = {
fontconfig = {
defaultFonts = {
serif = [ "NotoSans Nerd Font" "Noto Color Emoji" ];
sansSerif = [ "Linux Biolinum O" "Noto Color Emoji" ];
monospace = [ "Hack Nerd Font" "Noto Color Emoji" ];
};
};
};
}

View File

@ -0,0 +1,14 @@
{ pkgs, ... }:
{
imports = [
./scripts/feh-wallpaper-changer.nix
];
home.packages = [
pkgs.flameshot
pkgs.st
pkgs.xclip
pkgs.feh
];
}

View File

@ -0,0 +1,27 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
(writeShellScriptBin "feh-wallpaper-changer" ''
wallpaper_dir="$HOME/.local/share/bg/"
if [ ! -d "$wallpaper_dir" ]; then
echo "No wallpapers in $wallpaper_dir, cloning from remote"
mkdir -p "$wallpaper_dir"
git clone https://git.bitlab21.com/sam/minimalistic-wallpaper-collection.git "$wallpaper_dir/minimalistic-wallpaper-collection"
[ $? != 0 ] && echo "cloning from gitea failed, exiting" && exit 1
fi
pics_exist=$(find "$wallpaper_dir" -type f -follow \( -iname \*.jpg -o -iname \*.png -o -iname \*.gif -o -iname \*.bmp \))
if [ -z "$pics_exist" ]; then
git clone https://git.bitlab21.com/sam/minimalistic-wallpaper-collection.git "$wallpaper_dir/minimalistic-wallpaper-collection"
[ $? != 0 ] && echo "cloning from gitea failed, exiting" && exit 1
fi
while true; do
find "$wallpaper_dir" -type f -follow \( -iname \*.jpg -o -iname \*.png -o -iname \*.gif -o -iname \*.bmp \) | shuf | while read -r file; do
${feh}/bin/feh --bg-fill "$file"
[ $? != 0 ] && echo "feh failed, exiting" && exit 1
sleep 600
done
done
'')
];
}

View File

@ -0,0 +1,30 @@
{ pkgs, ... }:
{
imports = [
../common
../common/x11
./xinitrc.nix
./sxhkdrc.nix
./picom.nix
./xresources.nix
# Status bar scripts
./scripts/sb-cpu-pct.nix
./scripts/sb-mem-pct.nix
./scripts/sb-volume.nix
./scripts/sb-network-status.nix
./scripts/sb-updates.nix
# Notification scripts
./scripts/dunstify-volume-notification.nix
];
home.packages = [
pkgs.dwmblocks
pkgs.dmenu
pkgs.dunst
pkgs.picom
pkgs.sxhkd
];
}

View File

@ -0,0 +1,17 @@
{
home.file.".config/picom/picom.conf" = {
recursive = true;
text = ''
vsync = true;
backend = "xrender";
shadow = true;
shadow-radius = 10;
shadow-offset-x = -5;
shadow-offset-y = -5;
fading = true;
fade-in-step = 0.2;
fade-out-step = 0.2;
fade-delta = 50;
'';
};
}

View File

@ -0,0 +1,30 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
(writeShellScriptBin "dunstify-volume-notification" ''
mute_test=$(${pamixer}/bin/pamixer --get-mute)
mic_mute_test=$(${pamixer}/bin/pamixer --default-source --get-mute)
mute=""
if [ "$mute_test" == true ];
then
mute="(Speakers Muted)"
fi
if [ "$mic_mute_test" == true ];
then
mute="(Mic Muted)"
fi
if [ "$mute_test" == true ] && [ "$mic_mute_test" == true ];
then
mute="(Speakers Muted & Mic Muted)"
fi
volume=$(${pamixer}/bin/pamixer --get-volume)
msgTag="volume-notify"
${dunst}/bin/dunstify -a "changeVolume" -u low -i audio-volume-high -h string:x-dunst-stack-tag:$msgTag "Volume" "''${volume} ''${mute}" -t 2000
'')
];
}

View File

@ -0,0 +1,8 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
(writeShellScriptBin "sb-cpu-pct" ''
echo $(top -bn 1 |grep "Cpu(s)" | awk '{print $2+$6 "%"}' | sed "s/\..//g")
'')
];
}

View File

@ -0,0 +1,9 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
(writeShellScriptBin "sb-mem-pct" ''
# Gets current ram percent utilisation
echo $(free | awk '/^Mem/ {print "100*" $3 " / " $2 }' | ${bc}/bin/bc | awk '{print $1"%"}')
'')
];
}

View File

@ -0,0 +1,52 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
(writeShellScriptBin "sb-network-status" ''
# Nerd Font Symbols
wifi_symbol=" "
lan_symbol="󰌗 "
disconnected_symbol="󰲜 "
vpn_symbol="󰖂 "
internet="󰞉 "
internet_disconnected="󰪎 "
# Get the network status
DEFAULT_INTERFACE=$(ip route | grep '^default' | awk '{print $5}' | uniq)
IP_ADDRESS=$(ip -o route get to 8.8.8.8 | sed -n 's/.*src \([0-9.]\+\).*/\1/p')
if [ -z "$DEFAULT_INTERFACE" ]; then
network_symbol="$disconnected_symbol"
else
# Check if it is a wireless interface (wlan*)
if [[ $DEFAULT_INTERFACE == wl* ]]; then
network_symbol="$wifi_symbol"
else
network_symbol="$lan_symbol"
fi
fi
# Check internet connectivity
if ! ping -c 1 8.8.8.8 &> /dev/null;
then
network_symbol="$network_symbol $internet_disconnected"
else
network_symbol="$network_symbol $internet"
fi
if ip addr show tun0 > /dev/null 2>&1; then
network_symbol="$network_symbol $vpn_symbol"
else
network_symbol="$network_symbol"
fi
if [ -z "$IP_ADDRESS" ];
then
printf "$network_symbol"
else
printf "$network_symbol|$IP_ADDRESS"
fi
'')
];
}

View File

@ -0,0 +1,14 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
(writeShellScriptBin "sb-updates" ''
# Gets number of flake inputs that are ready for update
# Checks every 60 minutes
inputs=$(cd /etc/nixos &&
nix flake update --output-lock-file <(cat flake.nix) 2> /tmp/update &&
cat /tmp/update | grep -c Update)
printf " $inputs"
'')
];
}

View File

@ -0,0 +1,37 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
(writeShellScriptBin "sb-volume" ''
# Prints the current volume or 婢 if muted.
get_mic_status=$(${pamixer}/bin/pamixer --default-source --get-mute)
vol="$(${pamixer}/bin/pamixer --get-volume)"
if [ $get_mic_status == false ]; then
mic_status=""
else
mic_status=""
fi
if [ "$vol" -gt "90" ]; then
icon=""
elif [ "$vol" -gt "50" ]; then
icon="󰕾"
elif [ "$vol" -gt "30" ]; then
icon=""
elif [ "$vol" -gt "0" ]; then
icon="󰕿"
else
icon="󰝟"
fi
if [ $(${pamixer}/bin/pamixer --get-mute) = true ]; then
icon="󰸈"
vol="0"
fi
print_string="$mic_status $icon $vol%"
printf '%s' "''${print_string}"
'')
];
}

View File

@ -0,0 +1,48 @@
{
home.file.".config/sxhkd/sxhkdrc" = {
recursive = true;
text = ''
XF86AudioRaiseVolume
pamixer --set-limit 150 --allow-boost -i 5 && dunstify-volume-notification && pkill -RTMIN+10 dwmblocks && exit 1
XF86AudioLowerVolume
pamixer --set-limit 150 --allow-boost -d 5 && dunstify-volume-notification && pkill -RTMIN+10 dwmblocks && exit 1
XF86AudioMute
pamixer --toggle-mute && dunstify-volume-notification && pkill -RTMIN+10 dwmblocks && exit 1
XF86AudioMicMute
pamixer --default-source --toggle-mute && dunstify-volume-notification && pkill -RTMIN+10 dwmblocks && exit 1
XF86MonBrightnessUp
light -A 5 && dunstify-brightness-notification
XF86MonBrightnessDown
light -U 5 && dunstify-brightness-notification
XF86Messenger
dunstify-battery-notification
control + Home
bookmark-add
control + Insert
bookmark-insert
control + F12
nsxiv-clipboard-copy /tmp/clipboard/images/
Print
flameshot gui
control + F11
dmenu-clipper
control + F8
dmenu-dict
control + F7
emoji-picker
'';
};
}

View File

@ -0,0 +1,32 @@
{
# TODO configure x11 to look in .config/x11
#home.file."${config.xdg.configHome}/x11/xinitrc" = {
home.file.".xinitrc" = {
recursive = true;
text = ''
picom -b --config ~/.config/picom/picom.conf
xrdb ~/.Xresources
autostart="dwmblocks feh-wallpaper-changer"
for program in $autostart; do
pidof -sx "$program" || "$program" &
done >/dev/null 2>&1
if test -z "$DBUS_SESSION_BUS_ADDRESS"; then
eval $(dbus-launch --exit-with-session --sh-syntax)
fi
systemctl --user import-environment DISPLAY XAUTHORITY
if command -v dbus-update-activation-environment >/dev/null 2>&1; then
dbus-update-activation-environment DISPLAY XAUTHORITY
fi
export XSESSION_PID="$$"
exec dwm
'';
};
}

View File

@ -0,0 +1,14 @@
{
home.file.".Xresources" = {
recursive = true;
text = ''
!st terminal
st.alpha: 0.8
*.font: monospace:pixelsize=21:antialias=true:autohint=true;
*.font2: NotoColorEmoji:pixelsize=19:antialias=true:autohint=true;
! dwm
dwm.borderpx: 3
'';
};
}

View File

@ -1,12 +1,11 @@
{ lib { lib
, config , config
, pkgs
, ... , ...
}: { }: {
imports = [ imports = [
../common ../common
../wayland ../common/wayland
./pyprland.nix ./pyprland.nix
]; ];
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {

View File

@ -1,4 +1,4 @@
{ pkgs, lib, config, ... }: { pkgs, ... }:
{ {
programs.git = { programs.git = {
enable = true; enable = true;

View File

@ -11,27 +11,10 @@
./common/optional/git.nix ./common/optional/git.nix
./common/optional/sops.nix ./common/optional/sops.nix
./common/optional/syncthing.nix ./common/optional/syncthing.nix
./common/optional/desktop/hyprland ./common/optional/desktop/dwm
]; ];
colorScheme = inputs.nix-colors.colorSchemes.kanagawa; colorScheme = inputs.nix-colors.colorSchemes.kanagawa;
monitors = [
{
name = "DP-1";
width = 2560;
height = 1440;
refreshRate = 144;
x = 0;
primary = true;
}
{
name = "DP-2";
width = 2560;
height = 1440;
refreshRate = 75;
x = 2560;
}
];
} }

View File

@ -1,4 +1,4 @@
{ pkgs, outputs, ... }: { pkgs, outputs, config, ... }:
{ {
home.username = "sam"; home.username = "sam";

View File

@ -0,0 +1,26 @@
{ pkgs, ... }:
{
services = {
libinput.enable = true;
xserver = {
autoRepeatDelay = 250;
autoRepeatInterval = 30;
enable = true;
xkb.layout = "gb";
displayManager.startx.enable = true;
autorun = false;
windowManager.dwm = {
enable = true;
package = pkgs.dwm.overrideAttrs {
src = pkgs.fetchFromGitea {
domain = "git.bitlab21.com";
owner = "sam";
repo = "dwm";
rev = "52638a7cc6c886f6e85e850dea826e24bd963203";
sha256 = "sha256-azIBPGY26g/gLwEPAQTCdBWl0Z/8q7msNNn9/mw0yHw=";
};
};
};
};
};
}

View File

@ -1,18 +1,18 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
sound.enable = true; sound.enable = true;
hardware.pulseaudio.enable = true; #hardware.pulseaudio.enable = true;
security.rtkit.enable = true; security.rtkit.enable = true;
hardware.pulseaudio.package = pkgs.pulseaudioFull; #hardware.pulseaudio.package = pkgs.pulseaudioFull;
# services.pipewire = { services.pipewire = {
# enable = true; enable = true;
# alsa.enable = true; alsa.enable = true;
# alsa.support32Bit = true; alsa.support32Bit = true;
# pulse.enable = true; pulse.enable = true;
# wireplumber.enable = true; wireplumber.enable = true;
# jack.enable = true; jack.enable = true;
#
# }; };
environment.systemPackages = [ environment.systemPackages = [
pkgs.pamixer pkgs.pamixer

View File

@ -35,13 +35,15 @@ in
mode = "0644"; mode = "0644";
owner = "${username}"; owner = "${username}";
}; };
"passwords/postgres" = { }; "software/postgres/btc_models/password" = { };
"software/postgres/btc_models/ip" = { };
"software/postgres/btc_models/username" = { };
"software/zotero/username" = { }; "software/zotero/username" = { };
"software/zotero/password" = { }; "software/zotero/password" = { };
"software/zotero/guid" = { }; "software/zotero/guid" = { };
}; };
# Setup postgres connections for db_ui # Setup software specific templates for user
# Should be part of home-manager - waiting for templates functionality # Should be part of home-manager - waiting for templates functionality
# See here https://github.com/Mic92/sops-nix/issues/423 and here https://github.com/Mic92/sops-nix/issues/498 # See here https://github.com/Mic92/sops-nix/issues/423 and here https://github.com/Mic92/sops-nix/issues/498
# TODO migrate db_ui connection to home-manager when issue 423 and 498 are resolved in github:Mic92/sops-nix # TODO migrate db_ui connection to home-manager when issue 423 and 498 are resolved in github:Mic92/sops-nix
@ -52,14 +54,48 @@ in
content = '' content = ''
[ [
{ {
"url": "postgresql://postgres:${config.sops.placeholder."passwords/postgres"}@10.0.10.100/btc_models", "url": "postgresql://${config.sops.placeholder."software/postgres/btc_models/username"}:${config.sops.placeholder."software/postgres/btc_models/password"}@${config.sops.placeholder."software/postgres/btc_models/ip"}/btc_models",
"name": "btc_models" "name": "btc_models"
},
{
"url": "postgresql://${config.sops.placeholder."software/postgres/btc_models/username"}:${config.sops.placeholder."software/postgres/btc_models/password"}@${config.sops.placeholder."software/postgres/btc_models/ip"}/dev_btc_models",
"name": "dev_btc_models"
} }
] ]
''; '';
}; };
# The containing folders are created as root and if this is the first entry when writing keys, sops.templates."dbt_profiles.yml" = {
path = "/home/${username}/.config/dbt/profiles.yml";
owner = "${username}";
mode = "0600";
content = ''
bitcoin:
target: dev
outputs:
dev:
dbname: dev_btc_models
host: ${config.sops.placeholder."software/postgres/btc_models/ip"}
pass: '${config.sops.placeholder."software/postgres/btc_models/password"}'
port: 5432
schema: models
threads: 6
type: postgres
user: ${config.sops.placeholder."software/postgres/btc_models/username"}
prod:
dbname: btc_models
host: ${config.sops.placeholder."software/postgres/btc_models/ip"}
pass: '${config.sops.placeholder."software/postgres/btc_models/password"}'
port: 5432
schema: models
threads: 6
type: postgres
user: ${config.sops.placeholder."software/postgres/btc_models/username"}
'';
};
# The containing folders are created as root and if this is the first entry when writing files,
# the ownership is busted and home-manager can't target because it can't write to these dirs... # the ownership is busted and home-manager can't target because it can't write to these dirs...
# FIXME: We might not need this depending on how https://github.com/Mic92/sops-nix/issues/381 is fixed # FIXME: We might not need this depending on how https://github.com/Mic92/sops-nix/issues/381 is fixed
system.activationScripts.sopsSetOwnwership = system.activationScripts.sopsSetOwnwership =

View File

@ -28,9 +28,8 @@ in
# Import optional options # Import optional options
../common/optional/persistence.nix ../common/optional/persistence.nix
../common/optional/pipewire.nix ../common/optional/pipewire.nix
../common/optional/hyprland.nix
../common/optional/displayManager/sddm.nix
../common/optional/openssh.nix ../common/optional/openssh.nix
../common/optional/dwm.nix
]; ];

View File

@ -6,8 +6,8 @@ default:
# fetches from remote and updates flake.lock with latest revisions of nix-secrets for next time a rebuild occurs # fetches from remote and updates flake.lock with latest revisions of nix-secrets for next time a rebuild occurs
update-flake-secrets: update-flake-secrets:
(cd ../nix-secrets && git fetch && git rebase) || true
nix flake lock --update-input nix-secrets nix flake lock --update-input nix-secrets
pkill -RTMIN+11 dwmblocks
# full system rebuild from flake (stages changes and automatically detects host) # full system rebuild from flake (stages changes and automatically detects host)
rebuild-system: rebuild-system:
@ -17,6 +17,7 @@ rebuild-system:
# updates all flake inputs for system # updates all flake inputs for system
update-flake: update-flake:
nix flake update nix flake update
pkill -RTMIN+11 dwmblocks
# edit sops file # edit sops file
edit-sops: edit-sops:

View File

@ -1,5 +1,6 @@
# Custom packages, that can be defined similarly to ones from nixpkgs
# You can build them using 'nix build .#example'
pkgs: { pkgs: {
sddm-theme = pkgs.callPackage ./sddm-theme { }; sddm-theme = pkgs.callPackage ./sddm-theme { };
st = pkgs.callPackage ./st { };
dwmblocks = pkgs.callPackage ./dwmblocks { };
dmenu = pkgs.callPackage ./dmenu { };
} }

39
pkgs/dmenu/default.nix Normal file
View File

@ -0,0 +1,39 @@
{ pkgs ? import <nixpkgs> { }
, fetchFromGitea ? pkgs.fetchFromGitea
, pkg-config ? pkgs.pkg-config
, libX11 ? pkgs.xorg.libX11
, libXft ? pkgs.xorg.libXft
, libXinerama ? pkgs.xorg.libXinerama
}:
pkgs.stdenv.mkDerivation {
pname = "dmenu";
name = "dmenu";
src = fetchFromGitea {
domain = "git.bitlab21.com";
owner = "sam";
repo = "dmenu";
rev = "deb38655db2ddb340258381f3a0a59e2d19207f1";
sha256 = "sha256-Wm5mIw4r3lPZDXlyO26Jr993Rq7dxMwBxeWnJ4UzQ1s=";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
libX11
libXft
libXinerama
];
buildPhase = ''
make
'';
installPhase = ''
mkdir -p $out/bin
mv dmenu dmenu_run dmenu_path stest $out/bin
'';
}

View File

@ -0,0 +1,37 @@
{ pkgs ? import <nixpkgs> { }
, fetchFromGitea ? pkgs.fetchFromGitea
, pkg-config ? pkgs.pkg-config
, libX11 ? pkgs.xorg.libX11
, libXft ? pkgs.xorg.libXft
}:
pkgs.stdenv.mkDerivation {
pname = "dwmblocks";
name = "dwmblocks";
src = fetchFromGitea {
domain = "git.bitlab21.com";
owner = "sam";
repo = "dwmblocks";
rev = "c4e7a9b1eb98123e239ba76bc551934721fd18ca";
sha256 = "sha256-F1x8jOT+c2pPCF9qKq5boIWzegMBTCxwzKMVtmtMWGM=";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
libX11
libXft
];
buildPhase = ''
make
'';
installPhase = ''
mkdir -p $out/bin
mv dwmblocks $out/bin
'';
}

24
pkgs/sqlfmt/default.nix Normal file
View File

@ -0,0 +1,24 @@
{ pkgs ? import <nixpkgs> { }
, ...
}:
let
name = "hello_poetry2nix";
rev = "4431812218e1963fd34f4d9d22dcd688a4c33fb4";
hash = "sha256-iHqzA/HJ+vb7O5vpGpA1eR3BcoGDPE2QOqQQpOp0zFQ=";
src = pkgs.fetchFromGitHub {
inherit rev hash;
owner = "wilsonehusin";
repo = "hello-poetry2nix";
};
in
pkgs.poetry2nix.mkPoetryApplication {
inherit name src;
pname = name;
version = rev;
projectDir = src;
}

37
pkgs/st/default.nix Normal file
View File

@ -0,0 +1,37 @@
{ pkgs ? import <nixpkgs> { }
, fetchFromGitea ? pkgs.fetchFromGitea
, pkg-config ? pkgs.pkg-config
, libX11 ? pkgs.xorg.libX11
, libXft ? pkgs.xorg.libXft
}:
pkgs.stdenv.mkDerivation {
pname = "st";
name = "st";
src = fetchFromGitea {
domain = "git.bitlab21.com";
owner = "sam";
repo = "st";
rev = "31e0ba8cb2086fb12741afc5fc3dfd938ca1f59b";
sha256 = "sha256-dbkXFbNr/lJveMeR7qXo7jGgF5+79S9vqKsLM7XM250=";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
libX11
libXft
];
buildPhase = ''
make
'';
installPhase = ''
mkdir -p $out/bin
mv st $out/bin
'';
}