initial commit

This commit is contained in:
Daniella 2024-09-07 01:18:31 +02:00
commit 2d2d6010a8
8 changed files with 354 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
hardware-configuration.nix

13
bright.script.nix Normal file
View file

@ -0,0 +1,13 @@
with import <nixpkgs> {};
pkgs.writeShellScriptBin "bright" ''
#!/bin/sh
f="/sys/class/backlight/*/brightness"
if [ "$1" = up ] ; then
echo $(($(cat $f) + 50)) | sudo tee $f
fi
if [ "$1" = down ] ; then
echo $(($(cat $f) - 50)) | sudo tee $f
fi
''

182
configuration.nix Normal file
View file

@ -0,0 +1,182 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
./home.nix
];
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
helix
wget
alacritty
links2
fish
killall
bat
dconf
twemoji-color-font
fira-code
htop
rustup
clang
nodejs
git
pavucontrol
zip unzip
modemmanager
modem-manager-gui
fastfetch
asciinema
zulu8
ffmpeg
imagemagick
(import ./sl.script.nix)
(import ./startsync.script.nix)
(import ./bright.script.nix)
(import ./nix-cmd.script.nix)
(import ./sshpc.script.nix)
];
programs.fish.enable = true;
# Use the GRUB 2 boot loader.
boot.loader.grub.enable = true;
# boot.loader.grub.efiSupport = true;
# boot.loader.grub.efiInstallAsRemovable = true;
# boot.loader.efi.efiSysMountPoint = "/boot/efi";
# Define on which hard drive you want to install Grub.
# hardware # boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only
# hardware config # networking.hostName = "TudbuT-NixX250"; # Define your hostname.
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
hardware.bluetooth.enable = true;
services.blueman.enable = true;
#services.modemmanager.enable = true;
systemd.services.modem-manager.enable = true;
systemd.services.earlyoom.enable = true;
# Set your time zone.
time.timeZone = "Europe/Berlin";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
#console = {
# font = "Lat2-Terminus16";
# keyMap = "de";
# useXkbConfig = true; # use xkb.options in tty.
#;
systemd.services.set_battery_threshold = {
enable = true;
script = ''
echo 90 | tee /sys/class/power_supply/BAT*/charge_control_end_threshold > /dev/null
'';
wantedBy = ["multi-user.target"];
serviceConfig = {
user = "root";
Type = "oneshot";
};
};
services.fprintd.enable = true;
# Enable the X11 windowing system.
services.xserver.enable = true;
services.xserver.windowManager.i3.enable = true;
services.xserver.windowManager.i3.extraPackages = with pkgs; [
dmenu
i3status
i3lock
libnotify
xss-lock
maim
xclip
clipit
];
services.logind.lidSwitch = "ignore";
# Configure keymap in X11
services.xserver.xkb.layout = "de";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
hardware.pulseaudio.enable = true;
# OR
# services.pipewire = {
# enable = true;
# pulse.enable = true;
# };
# Enable touchpad support (enabled default in most desktopManager).
# services.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.tudbut = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ]; # Enable sudo for the user.
};
users.defaultUserShell = pkgs.fish;
security.sudo.wheelNeedsPassword = false;
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "24.05"; # Did you read the comment?
}

95
home.nix Normal file
View file

@ -0,0 +1,95 @@
{ lib, config, pkgs, ... }:
let
home-manager = builtins.fetchTarball "https://github.com/nix-community/home-manager/archive/master.tar.gz";
in
{
imports = [
(import "${home-manager}/nixos")
];
users.users.tudbut.packages = with pkgs; [
nheko
firefox
thunderbird
tree
keepassxc
sshfs
arc-theme
signal-desktop
gimp
graphviz
mkchromecast
yt-dlp
giac-with-xcas
sqlite-interactive
mpv
acpi
nix-init
(import /home/tudbut/gitshit/spl {})
(import /home/tudbut/gitshit/revpfw3 {})
];
nixpkgs.config.permittedInsecurePackages = [
"olm-3.2.16"
"python3.12-youtube-dl-2021.12.17"
];
home-manager.backupFileExtension = ".hm-old";
home-manager.users.tudbut = {
programs.home-manager.enable = true;
/* The home.stateVersion option does not have a default and must be set */
home.stateVersion = "24.05";
programs.fish.enable = true;
programs.fish.shellInit = ''
export PATH="$PATH:$HOME/.cargo/bin"
export SPL_PATH="$HOME/gitshit/spl"
export ISBPL_PATH="$HOME/gitshit/isbpl"
'';
programs.alacritty.enable = true;
/* Here goes the rest of your home-manager config, e.g. home.packages = [ pkgs.foo ]; */
xsession.enable = true;
xsession.initExtra = "clipit &";
xsession.windowManager.i3 = {
enable = true;
package = pkgs.i3-gaps;
config = {
keybindings = lib.mkOptionDefault {
"XF86AudioMute" = "exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle";
"XF86AudioMicMute" = "exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle";
"XF86AudioRaiseVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%";
"XF86AudioLowerVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%";
"XF86MonBrightnessUp" = "exec --no-startup-id bright up";
"XF86MonBrightnessDown" = "exec --no-startup-id bright down";
"Print" = "exec --no-startup-id maim -s screenshot.png && xclip -selection clipboard -target image/png screenshot.png";
"Mod4+q" = "exec sl";
};
terminal = "alacritty";
modifier = "Mod4";
fonts.names = ["Fira Code" "DejaVu Sans Mono"];
fonts.size = 12.0;
bars = [{
statusCommand = "${pkgs.i3status}/bin/i3status";
fonts = {
names = [ "Fira Code" "DejaVu Sans Mono" ];
size = 12.0;
};
}];
defaultWorkspace = "1";
gaps = {
inner = 12;
};
};
};
programs.i3status.enable = true;
programs.i3status.modules."battery all".settings.format = "%status %percentage %remaining %emptytime %consumption";
programs.i3status.modules."battery all".settings.last_full_capacity = true;
services.dunst.enable = true;
gtk.enable = true;
gtk.theme = {
name = "Arc-Dark";
package = pkgs.arc-theme;
};
};
}

12
nix-cmd.script.nix Normal file
View file

@ -0,0 +1,12 @@
with import <nixpkgs> {};
pkgs.writeShellScriptBin "nix-cmd" ''
#!/bin/sh
pkg="''${@:1:1}"
rest="''${@:2}"
if [ "$rest" = "" ] ; then
rest="$pkg"
fi
exec nix-shell -p $pkg --run "$(echo "$rest" | sed -E "s/^_ /$pkg /")"
''

26
sl.script.nix Normal file
View file

@ -0,0 +1,26 @@
with import <nixpkgs> {};
pkgs.writeShellScriptBin "sl" ''
#!/bin/sh
killall xss-lock i3lock
sleep 0.1
xss-lock --transfer-sleep-lock -- i3lock --nofork &
PID=$!
lastdate="$(date +%s)"
ok=0
sudo systemctl suspend
while kill -0 $PID ; do
if [ "$(($(date +%s) - $lastdate))" > 5 ] && [ "$ok" = 0 ] ; then
sudo systemctl restart fprintd
ok=1
sleep 2
fi
fprintd-verify && kill $PID
sleep 2
done
''

11
sshpc.script.nix Normal file
View file

@ -0,0 +1,11 @@
with import <nixpkgs> {};
pkgs.writeShellScriptBin "sshpc" ''
#!/bin/sh
ssh -p 23 root@tudbut.de etherwake 00:19:99:d2:9e:27
sleep 10
ssh -tp 23 root@tudbut.de ssh -t tudbut@192.168.178.144
ssh -p 23 root@tudbut.de ssh tudbut@192.168.178.144 sudo systemctl suspend
''

14
startsync.script.nix Normal file
View file

@ -0,0 +1,14 @@
with import <nixpkgs> {};
pkgs.writeShellScriptBin "startsync" ''
#!/bin/sh
killall sshfs sftp
sleep 0.5
killall -9 sshfs sftp
sudo umount -l sync
sleep 0.5
sshfs -p 23 root@tudbut.de:sync ~/sync
while ! ls ~/sync/Passwords.kdbx ; do sleep 0.2 ; done
exec keepassxc
''