This commit is contained in:
Alexander Szczepanski
2021-12-02 08:43:20 +01:00
parent 527b387c2e
commit c9414f1fbd
14 changed files with 435 additions and 123 deletions

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"C_Cpp.intelliSenseEngineFallback": "Disabled"
}

View File

@ -6,6 +6,7 @@ in
{ {
services = { services = {
blueman.enable = true;
xserver = { xserver = {
enable = true; enable = true;
displayManager = { displayManager = {
@ -39,7 +40,41 @@ in
}; };
}; };
environment.systemPackages = with unstable.pkgs; [
lightlocker
pulseaudio-ctl
];
home-manager.users.alex = { pkgs, ... }: { home-manager.users.alex = { pkgs, ... }: {
home = {
packages = with unstable.pkgs; [
arandr
evince
gnome.eog
gnome.file-roller
gnome.gnome-calculator
keepassxc
libnotify
gnome.cheese
];
};
gtk = {
enable = true;
font = {
name = "Liberation Sans Regular";
size = 12;
};
gtk3 = {
extraConfig = { gtk-application-prefer-dark-theme = 1; };
};
iconTheme = {
package = pkgs.pantheon.elementary-icon-theme;
name = "elementary";
};
theme = { name = "Adwaita-dark"; };
};
services = { services = {
# picom = { # picom = {
# enable = true; # enable = true;
@ -50,44 +85,45 @@ in
dunst = { dunst = {
enable = true; enable = true;
package = unstable.dunst;
iconTheme = {
package = pkgs.pantheon.elementary-icon-theme;
name = "elementary";
};
settings = { settings = {
global = { global = {
font = "SF Pro Display Regular 12";
markup = "yes";
format = "%s %p\n%b";
sort = "yes";
indicate_hidden = "no";
alignment = "center"; alignment = "center";
bounce_freq = 0;
show_age_threshold = 60;
word_wrap = "yes";
ignore_newline = "no";
geometry = "300x0-5-5";
shrink = "yes";
transparency = 0;
idle_threshold = 120;
monitor = 0;
follow = "mouse"; follow = "mouse";
sticky_history = "yes"; font = "SF Pro Display Regular 12";
history_length = 20; format = "%s %p %b";
show_indicators = "no"; width = "(0,300)";
line_height = 0; # height = 300;
separator_height = 1; origin = "bottom-right";
stack_duplicates = "no"; notification_limit = 5;
padding = 8; offset = "4x4";
horizontal_padding = 8; horizontal_padding = 8;
separator_color = "frame";
startup_notification = true;
# dmenu = /usr/bin/dmenu -p dunst;
# browser = /usr/bin/firefox -new-tab;
icon_position = "left"; icon_position = "left";
icon_path = "/usr/share/icons/Arc"; idle_threshold = 120;
ignore_newline = "no";
indicate_hidden = "no";
line_height = 0;
markup = "yes";
max_icon_size = 64; max_icon_size = 64;
}; monitor = 0;
padding = 8;
frame = { separator_color = "frame";
width = 1; separator_height = 1;
color = "#A6A6A6"; show_age_threshold = 60;
show_indicators = "no";
shrink = "yes";
sort = "yes";
stack_duplicates = "no";
startup_notification = true;
sticky_history = "yes";
transparency = 0;
word_wrap = "yes";
frame_width = 2;
frame_color = "#A6A6A6";
}; };
urgency_low = { urgency_low = {
@ -150,10 +186,32 @@ in
}; };
}; };
nextcloud-client = { # nextcloud-client = {
enable = true; # enable = true;
startInBackground = true; # startInBackground = true;
}; # };
# polybar = {
# enable = true;
# script = "polybar bar &";
# settings = {
# "bar/top" = {
# monitor = "\${env:MONITOR:DisplayPort-1}";
# width = "100%";
# height = "3%";
# radius = 0;
# modules-center = "date";
# };
# "module/date" = {
# type = "internal/date";
# internal = 5;
# date = "%d.%m.%y";
# time = "%H:%M";
# label = "%time% %date%";
# };
# };
# };
redshift = { redshift = {
enable = true; enable = true;
@ -189,7 +247,7 @@ in
''; '';
settings = { settings = {
border_width = 4; border_width = 4;
window_gap = 5; window_gap = 4;
top_padding = 0; top_padding = 0;
left_padding = 0; left_padding = 0;
right_padding = 0; right_padding = 0;

View File

@ -72,7 +72,7 @@ in
nix-du nix-du
nix-tree nix-tree
nmap nmap
nodejs-16_x nodejs
parallel parallel
pciutils pciutils
ruby ruby

View File

@ -21,12 +21,9 @@ in
glxinfo glxinfo
gparted gparted
libsecret libsecret
lightlocker
networkmanager-openconnect networkmanager-openconnect
openconnect openconnect
ponymix
pulseaudio-ctl pulseaudio-ctl
python39Packages.pyyaml
]; ];
programs = { programs = {
@ -83,40 +80,47 @@ in
fontDir.enable = true; fontDir.enable = true;
fonts = with pkgs; [ fonts = with pkgs; [
# (nerdfonts.override { fonts = [ "Liberation" ]; })
nerdfonts
# corefonts # corefonts
font-awesome
google-fonts google-fonts
liberation_ttf liberation_ttf
meslo-lg
nerdfonts
noto-fonts noto-fonts
noto-fonts-cjk noto-fonts-cjk
noto-fonts-emoji noto-fonts-emoji
noto-fonts-extra
open-sans open-sans
stix-two stix-two
twemoji-color-font twemoji-color-font
]; ];
fontconfig = { # fontconfig = {
enable = true; # enable = true;
antialias = true; # antialias = true;
defaultFonts = { # defaultFonts = {
# monospace = [ "Fira Mono" ]; # # monospace = [ "Fira Mono" ];
serif = [ "Linux Libertine" ]; # serif = [ "Linux Libertine" ];
sansSerif = [ "Open Sans" ]; # sansSerif = [ "Open Sans" ];
emoji = [ "Twitter Color Emoji" ]; # emoji = [ "Twitter Color Emoji" ];
}; # };
}; # };
}; };
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
services = { services = {
blueman.enable = true; mullvad-vpn.enable = true;
gvfs.enable = true;
udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];
printing = { printing = {
enable = true; enable = true;
drivers = [ pkgs.brlaser ]; drivers = [ pkgs.brlaser ];
}; };
etesync-dav = {
enable = true;
apiUrl = "https://etesync.szczepan.ski/";
}; };
};
} }

23
configs/pantheon.nix Normal file
View File

@ -0,0 +1,23 @@
{ config, pkgs, lib, ... }:
{
programs.pantheon-tweaks.enable = true;
services = {
xserver = {
enable = true;
displayManager = {
lightdm = {
enable = true;
greeters.pantheon.enable = true;
};
};
desktopManager.pantheon.enable = true;
layout = "us";
# Enable touchpad support.
libinput.enable = true;
updateDbusEnvironment = true;
};
};
}

View File

@ -18,15 +18,14 @@ in
font-manager font-manager
freecad freecad
fslint fslint
gnome.cheese
homebank homebank
insomnia insomnia
kdenlive kdenlive
libreoffice libreoffice
lutris lutris
mangohud # mangohud
meld meld
obs-studio # obs-studio
pinta pinta
prusa-slicer prusa-slicer
rpi-imager rpi-imager

View File

@ -1,6 +1,16 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
let unstable = import <nixos-unstable> { config.allowUnfree = true; }; with builtins; let
unstable = import <nixos-unstable> { config.allowUnfree = true; };
rofiPin = import
(pkgs.fetchFromGitHub {
owner = "NixOS";
repo = "nixpkgs";
rev = "42ded9d56bf0f56bebfcd49b4e942e7ffba4d5fc";
sha256 = "KK/LIcEIU4mKYuGxXSqyBRA/fVplsRs3gnmtdUCqKxU=";
fetchSubmodules = true;
})
{ };
in in
{ {
imports = [ <home-manager/nixos> ]; imports = [ <home-manager/nixos> ];
@ -10,19 +20,15 @@ in
file = { file = {
".bin/rofi-default-sink.sh" = { ".bin/rofi-default-sink.sh" = {
executable = true; executable = true;
source = ./bin/rofi-default-sink.sh; source = ../home/bin/rofi-default-sink.sh;
}; };
}; };
packages = with unstable.pkgs; [ packages = with unstable.pkgs; [
arandr
baobab baobab
barrier barrier
evince
gnome.eog
gnome.file-roller
gnome.gnome-calculator
keepassxc keepassxc
libnotify ponymix #rofi-default
mullvad-vpn
]; ];
}; };
@ -40,31 +46,6 @@ in
}; };
}; };
gtk = {
enable = true;
font = {
name = "Liberation Sans Regular";
size = 12;
};
gtk3 = {
# bookmarks = [
# "file:///home/alex/Downloads"
# "file:///home/alex/Nextcloud"
# "file:///mnt/second"
# "smb://192.168.0.100/storage/"
# "file:///home/alex/Workspace"
# "file:///home/alex/3D%20Print"
# "file:///home/alex/Sync"
# ];
extraConfig = { gtk-application-prefer-dark-theme = 1; };
};
iconTheme = {
package = pkgs.pantheon.elementary-icon-theme;
name = "elementary";
};
theme = { name = "Adwaita-dark"; };
};
programs = { programs = {
vscode = { vscode = {
enable = true; enable = true;
@ -87,6 +68,7 @@ in
rofi = { rofi = {
enable = true; enable = true;
font = "Liberation Sans Regular 20"; font = "Liberation Sans Regular 20";
package = rofiPin.rofi;
extraConfig = { extraConfig = {
modi = "drun,window"; modi = "drun,window";
show-icons = true; show-icons = true;

View File

@ -26,7 +26,6 @@ in
home-manager.users.alex = { pkgs, ... }: { home-manager.users.alex = { pkgs, ... }: {
home = { home = {
enableNixpkgsReleaseCheck = false;
packages = with unstable.pkgs; [ packages = with unstable.pkgs; [
exa exa
broot broot
@ -44,10 +43,22 @@ in
pstree pstree
ranger ranger
sshfs sshfs
tree
unrar unrar
youtube-dl youtube-dl
]; ];
sessionPath = [
"$HOME/.npm-packages"
"$HOME/.bin"
];
file = {
".npmrc" = {
source = ../home/npmrc;
};
".bin/git-redate" = {
executable = true;
source = ../home/bin/git-redate;
};
};
}; };
programs = { programs = {

208
home/bin/git-redate Executable file
View File

@ -0,0 +1,208 @@
#!/usr/bin/env bash
is_git_repo() {
git rev-parse --show-toplevel > /dev/null 2>&1
result=$?
if test $result != 0; then
>&2 echo 'Not a git repo!'
exit $result
fi
}
is_git_repo
make_editor_choice() {
echo "Which editor do you want to use for this repo?\n";
echo "1. VI\n";
echo "2. NANO\n";
echo "3. Your own\n"
echo "You Choose: ";
read CHOOSE_EDITOR
}
get_editor_executable() {
echo "What is the path to your prefered test editor?\n";
read EDITOR_PATH
}
is_has_editor() {
SETTINGS_FILE="~/.redate-settings";
if [ -f "$SETTINGS_FILE" ]
then
OUR_EDITOR=$(cat ${SETTINGS_FILE});
elif [ ! -z "$EDITOR" ]
then
OUR_EDITOR="$EDITOR";
else
make_editor_choice;
if [ ${CHOOSE_EDITOR} == 3 ] || [ ${CHOOSE_EDITOR} == "3" ]; then
get_editor_executable
OUR_EDITOR=${EDITOR_PATH}
elif [ ${CHOOSE_EDITOR} == 1 ] || [ ${CHOOSE_EDITOR} == "1" ]; then
OUR_EDITOR="vi";
else
OUR_EDITOR="nano";
fi
echo ${OUR_EDITOR} > ${SETTINGS_FILE}
fi
}
is_has_editor
ALL=0
DEBUG=0
LIMITCHUNKS=20
while [[ $# -ge 1 ]]
do
key="$1"
case $key in
-c| --commits)
COMMITS="$2"
if [ -z "${COMMITS}" ]; then COMMITS="5"; fi;
shift
;;
-l| --limit)
LIMITCHUNKS="$2"
if [ -z "${LIMITCHUNKS}" ]; then LIMITCHUNKS="20"; fi;
shift
;;
-d| --debug)
DEBUG=1
shift
;;
-a| --all)
ALL=1
shift
;;
*)
# unknown option
;;
esac
shift
done
die () {
echo >&2 `basename $0`: $*
exit 1
}
tmpfile=$(mktemp gitblah-XXXX)
[ -f "$tmpfile" ] || die "could not get tmpfile=[$tmpfile]"
trap "rm -f $tmpfile" EXIT
datefmt=%cI
if [ "`git log -n1 --pretty=format:"$datefmt"`" == "$datefmt" ];
then
datefmt=%ci
fi
if [ "${ALL}" -eq 1 ];
then
git log --pretty=format:"$datefmt | %H | %s" > $tmpfile;
else
if [ -n "${COMMITS+set}" ];
then git log -n ${COMMITS} --pretty=format:"$datefmt | %H | %s" > $tmpfile;
else git log -n 5 --pretty=format:"$datefmt | %H | %s" > $tmpfile;
fi
fi
${VISUAL:-${EDITOR:-${OUR_EDITOR}}} $tmpfile
ITER=0
COLITER=0
declare -a COLLECTION
COUNTCOMMITS=$(awk 'END {print NR}' $tmpfile)
while read commit || [ -n "$commit" ]; do
IFS="|" read date hash message <<< "$commit"
shopt -s nocasematch
if [[ "$date" == 'now' ]]; then
date=$(date +%Y-%m-%dT%H:%M:%S%z);
fi
shopt -u nocasematch
if [ "$datefmt" == "%cI" ]
then
DATE_NO_SPACE="$(echo "${date}" | tr -d '[[:space:]]')"
else
DATE_NO_SPACE="$(echo "${date}")"
fi
COMMIT_ENV=$(cat <<-END
if [ \$GIT_COMMIT = $hash ];
then
export GIT_AUTHOR_DATE="$DATE_NO_SPACE"
export GIT_COMMITTER_DATE="$DATE_NO_SPACE";
fi;
END
)
((ITER++))
if [ "${DEBUG}" -eq 1 ] && [ $((ITER % LIMITCHUNKS)) == $((LIMITCHUNKS - 1)) ];
then
echo "Chunk $COLITER Finished"
fi
if [ $((ITER % LIMITCHUNKS)) == 0 ]
then
((COLITER++))
if [ "${DEBUG}" -eq 1 ];
then
echo "Chunk $COLITER Started"
fi
fi
COLLECTION[$COLITER]=${COLLECTION[COLITER]}"$COMMIT_ENV"
if [ "${DEBUG}" -eq 1 ]
then
echo "Commit $ITER/$COUNTCOMMITS Collected"
fi
done < $tmpfile
ITERATOR=0
for each in "${COLLECTION[@]}"
do
((ITERATOR++))
if [ "${ALL}" -eq 1 ];
then
if [ "${DEBUG}" -eq 1 ];
then
echo "Chunk $ITERATOR/"${#COLLECTION[@]}" Started"
git filter-branch -f --env-filter "$each" -- --all
echo "Chunk $ITERATOR/"${#COLLECTION[@]}" Finished"
else
git filter-branch -f --env-filter "$each" -- --all >/dev/null
fi
else
if [ "${DEBUG}" -eq 1 ];
then
echo "Chunk $ITERATOR/"${#COLLECTION[@]}" Started"
git filter-branch -f --env-filter "$each" HEAD~${COMMITS}..HEAD
echo "Chunk $ITERATOR/"${#COLLECTION[@]}" Finished"
else
git filter-branch -f --env-filter "$each" HEAD~${COMMITS}..HEAD >/dev/null
fi
fi
done
if [ $? = 0 ] ; then
echo "Git commit dates updated. Run 'git push -f BRANCH_NAME' to push your changes."
else
echo "Git redate failed. Please make sure you run this on a clean working directory."
fi

1
home/npmrc Normal file
View File

@ -0,0 +1 @@
prefix = ${HOME}/.npm-packages

View File

@ -17,6 +17,7 @@ in
../configs/user-gui.nix ../configs/user-gui.nix
../configs/user.nix ../configs/user.nix
../configs/bspwm.nix ../configs/bspwm.nix
#../configs/pantheon.nix
]; ];
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
@ -43,13 +44,12 @@ in
initrd.kernelModules = [ "amdgpu" ]; initrd.kernelModules = [ "amdgpu" ];
plymouth.enable = true; plymouth.enable = true;
extraModulePackages = with pkgs.linuxPackages_5_14; [ it87 ]; extraModulePackages = with pkgs.linuxPackages; [ it87 ];
kernelModules = [ "it87" "v4l2loopback" ]; kernelModules = [ "it87" "v4l2loopback" ];
kernelPackages = pkgs.linuxPackages_5_14;
}; };
networking = { networking = {
hostName = "desktop"; # Define your hostname. hostName = "desktop";
useDHCP = false; useDHCP = false;
wireguard.interfaces = { wireguard.interfaces = {
wg0 = { wg0 = {
@ -118,12 +118,13 @@ in
sound.enable = true; sound.enable = true;
services = { services = {
netdata.enable = true;
printing.enable = true; printing.enable = true;
xserver.videoDrivers = [ "amdgpu" ]; xserver.videoDrivers = [ "amdgpu" ];
xserver.deviceSection = '' # xserver.deviceSection = ''
Option "TearFree" "true" # Option "TearFree" "true"
''; # '';
hardware.xow.enable = true; # hardware.xow.enable = true;
borgbackup.jobs.home = rec { borgbackup.jobs.home = rec {
compression = "auto,zstd"; compression = "auto,zstd";
encryption = { encryption = {
@ -146,5 +147,5 @@ in
}; };
}; };
system.stateVersion = "21.05"; system.stateVersion = "21.11";
} }

View File

@ -26,30 +26,49 @@ in
../configs/user-gui.nix ../configs/user-gui.nix
../configs/user-gui-applications.nix ../configs/user-gui-applications.nix
../configs/bspwm.nix ../configs/bspwm.nix
# ../configs/pantheon.nix
<home-manager/nixos> <home-manager/nixos>
]; ];
# boot.initrd.luks.devices = {
# root = {
# preLVM = true;
# device = "/dev/disk/by-uuid/b59e9746-b9b4-4de1-94f6-84a387b9d72e";
# allowDiscards = true;
# };
# };
fileSystems."/".options = [ "noatime" "discard" ];
boot = { boot = {
loader = { loader = {
grub.enable = true; grub = {
grub.version = 2; enable = true;
grub.device = "nodev"; device = "nodev";
grub.efiSupport = true; version = 2;
efi.canTouchEfiVariables = true; efiSupport = true;
grub.gfxmodeEfi = "1024x768"; enableCryptodisk = true;
gfxmodeEfi = "1024x768";
};
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
}; };
kernelPackages = pkgs.linuxPackages_5_14; kernelPackages = pkgs.linuxPackages_5_14;
plymouth.enable = true; plymouth.enable = true;
initrd = {
luks.devices."root" = {
device = "/dev/disk/by-uuid/9e93feb7-8134-4b62-a05b-1aeade759880";
keyFile = "/keyfile0.bin";
allowDiscards = true;
};
secrets = {
"keyfile0.bin" = "/etc/secrets/initrd/keyfile0.bin";
"keyfile1.bin" = "/etc/secrets/initrd/keyfile1.bin";
};
};
};
# Data mount
fileSystems."/data" = {
device = "/dev/disk/by-uuid/33693f43-076d-41fc-a612-f49ab6870ccb"; # UUID for /dev/mapper/crypted-data
encrypted = {
enable = true;
label = "crypted-data";
blkDev = "/dev/disk/by-uuid/9bf1d00e-1edc-4de3-9d5e-71a6722ef193"; # UUID for /dev/sda1
keyFile = "/keyfile1.bin";
};
}; };
networking.hostName = "thinkpad"; # Define your hostname. networking.hostName = "thinkpad"; # Define your hostname.
@ -152,13 +171,14 @@ in
# ''; # '';
}; };
power-profiles-daemon.enable = false; power-profiles-daemon.enable = false;
tlp = { auto-cpufreq.enable = true;
enable = true; # tlp = {
settings = { # enable = true;
START_CHARGE_THRESH_BAT0 = 80; # settings = {
STOP_CHARGE_THRESH_BAT0 = 90; # START_CHARGE_THRESH_BAT0 = 80;
}; # STOP_CHARGE_THRESH_BAT0 = 90;
}; # };
# };
borgbackup.jobs.home = rec { borgbackup.jobs.home = rec {
compression = "auto,zstd"; compression = "auto,zstd";
encryption = { encryption = {
@ -197,5 +217,7 @@ in
networking.firewall.enable = false; networking.firewall.enable = false;
powerManagement.powertop.enable = true;
system.stateVersion = "21.05"; system.stateVersion = "21.05";
} }