1
0
mirror of https://github.com/ellmau/nixos.git synced 2025-12-19 09:29:36 +01:00

Clean directory

This commit is contained in:
Stefan Ellmauthaler 2022-06-10 17:20:46 +02:00
parent 008021d094
commit 49cc4dfbe9
Signed by: ellmau
GPG Key ID: C804A9C1B7AF8256
50 changed files with 2 additions and 7623 deletions

View File

@ -1,4 +0,0 @@
{ config, pkgs, lib, ...}:
{
imports = [ ./graphical.nix ];
}

View File

@ -1,64 +0,0 @@
{ config, pkgs, lib, ... }:
let
isgraphical = config.variables.graphical;
cursorsize = if config.variables.hostName == "nucturne" then 14 else 16;
xserverDPI = if config.variables.hostName == "stel-xps" then 180 else null;
in
{
networking.networkmanager.enable = isgraphical;
services = {
xserver = {
enable = isgraphical;
# dpi = xserverDPI;
displayManager.lightdm = {
enable = isgraphical;
greeters.gtk.cursorTheme.size = cursorsize;
};
# displayManager.sessionCommands = ''
# ${pkgs.xorg.xrdb}/bin/xrdb -merge <<EOF
# Xcursor.size: 14
# EOF
# '';
windowManager.i3 = {
enable = isgraphical;
extraPackages = with pkgs; [
rofi # launcher
polybarFull # bar
i3lock # lock screen
xss-lock
autorandr
];
extraSessionCommands = ''
${pkgs.autorandr}/bin/autorandr -c
'';
};
layout = "us";
xkbOptions = "eurosign:e";
};
gnome.gnome-keyring.enable = true;
printing.enable = true;
};
sound.enable = isgraphical;
hardware = {
pulseaudio.enable = isgraphical;
bluetooth.enable = isgraphical;
};
services.blueman.enable = isgraphical;
environment.systemPackages = if isgraphical then with pkgs; [
firefox
#alacritty
thunderbird
okular
texlive.combined.scheme-full
usbutils
keepassxc
gnome.libsecret
arandr
] else [ ];
}

View File

@ -1,10 +0,0 @@
{ config, pkgs, lib, ...}:
{
config = lib.mkIf config.variables.server {
services.sshd.enable = true;
imports = [
../services
../secrets
];
};
}

View File

@ -1,4 +0,0 @@
final: prev:
{
tray-calendar = final.callPackage ./pkgs/tray-calendar {};
}

View File

@ -1,29 +0,0 @@
{ stdenv
, python3
, gtk3
, gobject-introspection
, wrapGAppsHook
, lib
}:
stdenv.mkDerivation rec {
pname = "tray-calendar";
version = "0.9";
src = ./traycalendar.py;
buildInputs = [
(python3.withPackages (pyPkgs: with pyPkgs; [
pygobject3
]))
gtk3
gobject-introspection
];
nativeBuildInputs = [ wrapGAppsHook ];
dontUnpack = true;
installPhase = "install -m755 -D $src $out/bin/traycalendar";
meta = {
license = lib.licenses.gpl3Only;
homepage = "https://github.com/vifon/TrayCalendar";
};
}

View File

@ -1,215 +0,0 @@
#!/usr/bin/env python3
########################################################################
# Copyright (C) 2015-2018 Wojciech Siewierski #
# #
# This program is free software; you can redistribute it and/or #
# modify it under the terms of the GNU General Public License #
# as published by the Free Software Foundation; either version 3 #
# of the License, or (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
########################################################################
import functools
import glob
import os.path
import re
from collections import defaultdict
from os import getenv
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
DEFAULT_ORG_DIRECTORY = os.path.join(getenv('HOME'), "org")
ORG_GLOB = '*.org'
ORG_ARCHIVE_SUFFIX = '_archive.org'
def org_agenda_files(directory):
org_abs = functools.partial(os.path.join, directory)
agenda_files_path = org_abs('.agenda-files')
try:
with open(agenda_files_path) as agenda_files:
yield from (org_abs(f.rstrip('\n')) for f in agenda_files)
except FileNotFoundError:
for filename in glob.iglob(os.path.join(directory, ORG_GLOB)):
if not filename.endswith(ORG_ARCHIVE_SUFFIX):
yield filename
def scan_org_for_events(org_directories):
"""Search the org files for the calendar events.
Scans the passed directories for the .org files and saves the events
found there into a multilevel dict of lists: events[year][month][day]
The returned dict uses defaultdict so *do not* rely on the
KeyError exception etc.! Check if the element exists with
.get(key) before accessing it!
"""
def year_dict():
return defaultdict(month_dict)
def month_dict():
return defaultdict(day_dict)
def day_dict():
return defaultdict(event_list)
def event_list():
return list()
events = year_dict()
for org_directory in org_directories:
for filename in org_agenda_files(org_directory):
with open(filename, "r") as filehandle:
last_heading = None
for line in filehandle:
heading_match = re.search(r'^\*+\s+(.*)', line)
if heading_match:
last_heading = heading_match.group(1)
# strip the tags
last_heading = re.sub(r'\s*\S*$', last_heading, '')
match = re.search(r'<(\d{4})-(\d{2})-(\d{2}).*?>', line)
if match:
year, month, day = [ int(field) for field in match.group(1,2,3) ]
month -= 1 # months are indexed from 0 in Gtk.Calendar
events[year][month][day].append(last_heading)
return events
class CalendarWindow(object):
def __init__(self, org_directories):
self.window = Gtk.Window()
self.window.set_wmclass("traycalendar", "TrayCalendar")
self.window.set_resizable(False)
self.window.set_decorated(False)
self.window.set_gravity(Gdk.Gravity.STATIC)
window_width = 300
# Set the window geometry.
geometry = Gdk.Geometry()
geometry.min_width = window_width
geometry.max_width = window_width
geometry.base_width = window_width
self.window.set_geometry_hints(
None, geometry,
Gdk.WindowHints.MIN_SIZE |
Gdk.WindowHints.MAX_SIZE |
Gdk.WindowHints.BASE_SIZE)
# Create the listview for the calendar events.
list_model = Gtk.ListStore(str)
list_view = Gtk.TreeView(list_model)
list_column = Gtk.TreeViewColumn("Events", Gtk.CellRendererText(), text=0)
list_column.set_fixed_width(window_width)
list_view.append_column(list_column)
# Create the calendar widget.
calendar = Gtk.Calendar()
self.calendar_events = scan_org_for_events(org_directories)
calendar.connect('month-changed', self.mark_calendar_events)
calendar.connect('day-selected', self.display_event_list, list_model)
self.mark_calendar_events(calendar)
self.display_event_list(calendar, list_model)
close_button = Gtk.Button("Close")
close_button.connect('clicked', lambda event: self.window.destroy())
vbox = Gtk.VBox()
vbox.add(close_button)
vbox.add(calendar)
vbox.add(list_view)
self.window.add(vbox)
rootwin = self.window.get_screen().get_root_window()
# get_pointer is deprecated but using Gdk.Device.get_position
# is not viable here: we have no access to the pointing device.
screen, x, y, mask = rootwin.get_pointer()
x -= window_width
# Show the window right beside the cursor.
self.window.move(x,y)
self.window.show_all()
def mark_calendar_events(self, calendar):
"""Update the days with calendar events list for the selected month."""
year, month, day = calendar.get_date()
calendar.freeze_notify()
calendar.clear_marks()
for day in self.calendar_events[year][month]:
calendar.mark_day(day)
calendar.thaw_notify()
def display_event_list(self, calendar, event_list):
"""Update the calendar event list for the selected day."""
year, month, day = calendar.get_date()
event_list.clear()
# get(day) used instead of [day] because we use defaultdict
# and it would create a new element.
events = self.calendar_events[year][month].get(day)
if events:
for event in events:
event_list.append([event])
def tray_mode(org_directories):
def on_left_click(event):
window = CalendarWindow(org_directories)
def on_right_click(button, time, data):
Gtk.main_quit()
statusicon = Gtk.StatusIcon()
statusicon.set_from_icon_name('x-office-calendar')
statusicon.connect('activate', on_left_click)
statusicon.connect('popup-menu', on_right_click)
Gtk.main()
def window_mode(org_directories):
window = CalendarWindow(org_directories)
window.window.connect('destroy', Gtk.main_quit)
Gtk.main()
def main(argv=None):
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
"--no-tray",
help="Show the calendar windows immediately and quit after it's closed.",
action='store_true',
)
parser.add_argument(
"--org-directory", "-d",
help="Directories to search for *.org; default: ~/org/.",
action='append',
dest='org_directories',
)
args = parser.parse_args()
if not args.org_directories:
args.org_directories = [DEFAULT_ORG_DIRECTORY]
if args.no_tray:
window_mode(args.org_directories)
else:
tray_mode(args.org_directories)
if __name__ == "__main__":
from sys import argv
# workaround for a pygobject bug
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
main(argv)

View File

@ -1,12 +0,0 @@
{ config, pkgs, ...}:
{
variables = {
hostName = "ellmauthaler";
server = true;
};
networking = {
domain = "net";
};
}

View File

@ -1,38 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/da267a3c-34e3-4218-933f-10738ee61eb6";
fsType = "ext4";
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/9ebd7aff-629b-449b-83d8-6381a04eb708";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/DE6D-C383";
fsType = "vfat";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/0069f1fa-dd8e-4c0a-8f01-a576af29909e"; }
];
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
# high-resolution display
hardware.video.hidpi.enable = lib.mkDefault true;
}

View File

@ -1,58 +0,0 @@
{ config, pkgs, ...}:
{
variables= {
hostName = "nucturne";
graphical = true;
git.signDefault = true;
};
boot.extraModulePackages = [
config.boot.kernelPackages.v4l2loopback
];
boot.kernelModules = [
"v4l2loopback"
];
#networking.hostName = "nucturne"; # define the hostname
# users = {
# users.hpprinter = {
# description = "HP printer access to share";
# shell = pkgs.shadow;
# createHome = false;
# hashedPassword = "$6$qiIL8hOSK1FE7I6H$nAMW86l8O7/oJroOoaqG4WexGRQOOWBV8ooXy3/P7KE8ihQn9x0ScV2/BmvIxeMknGNPQhjD/mjmYn9VcNjAl1";
# isSystemUser = true;
# group = "hpprinter";
# };
# groups.hpprinter = {};
# };
# services.samba = {
# enable = true;
# securityType = "user";
# extraConfig = ''
# workgroup = WORKGROUP
# server string = nucturne
# netbios name = nucturne
# security = user
# #use sendfile = yes
# #max protocol = smb2
# hosts allow = 192.168.178.222 localhost
# hosts deny = 0.0.0.0/0
# guest account = nobody
# map to guest = bad user
# '';
# shares = {
# scans = {
# path = "/home/ellmau/scratch/scans";
# browseable = "yes";
# "read only" = "no";
# "guest ok" = "no";
# "create mask" = "0644";
# "directory mask" = "0755";
# "force user" = "ellmau";
# "force group" = "users";
# };
# };
# };
}

View File

@ -1,38 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/da267a3c-34e3-4218-933f-10738ee61eb6";
fsType = "ext4";
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/9ebd7aff-629b-449b-83d8-6381a04eb708";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/DE6D-C383";
fsType = "vfat";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/0069f1fa-dd8e-4c0a-8f01-a576af29909e"; }
];
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
# high-resolution display
hardware.video.hidpi.enable = lib.mkDefault true;
}

View File

@ -1,30 +0,0 @@
{ config, pkgs, ...}:
{
imports = [ ./printer.nix ];
variables = {
hostName = "stel-xps";
graphical = true;
git = {
key = "0x4998BEEE";
gpgsm = true;
signDefault = true;
};
};
#networking.hostName = "stel-xps"; # define the hostname
environment.systemPackages = with pkgs; [
brightnessctl
];
boot.extraModulePackages = [
config.boot.kernelPackages.v4l2loopback
];
boot.kernelModules = [
"v4l2loopback"
];
services.autorandr.enable = true;
services.xserver.desktopManager.wallpaper.mode = "fill";
}

View File

@ -1,35 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/6b7f9f80-af34-4317-b017-f883a2316674";
fsType = "ext4";
};
boot.initrd.luks.devices."crypted".device = "/dev/disk/by-uuid/9c84f143-023d-4fcb-a49c-ca78ce69e0e0";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/4824-2CFD";
fsType = "vfat";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/93381a25-6704-408e-b091-cfda6cddbda0"; }
];
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
# high-resolution display
hardware.video.hidpi.enable = lib.mkDefault true;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,87 +0,0 @@
{ config, pkgs, ...}:
let
ppd-local = pkgs.stdenv.mkDerivation rec {
pname = "local-ppds";
version = "2021-07-04";
src = ./ppds;
phases = [ "unpackPhase" "installPhase" ];
installPhase = ''
mkdir -p $out/share/cups/model/
cp -R Ricoh $out/share/cups/model
'';
};
in
{
services.printing.drivers = with pkgs; [
foomatic-filters
gutenprint
hplip
] ++ [
ppd-local
];
hardware.printers.ensurePrinters = [
{
name = "hpm605";
location = "APB/3014";
description = "HP Laserjet Enterprise M605DN";
deviceUri = "hp:/net/HP_LaserJet_M605?hostname=hpm605.tcs.inf.tu-dresden.de";
model = "HP/hp-laserjet_m604_m605_m606-ps.ppd.gz";
ppdOptions = {
Collate = "True";
HPOption_Duplexer = "True";
HPOption_Tray4 = "HP500SheetInputTray";
HPOption_Tray3 = "HP500SheetInputTray";
MediaType = "Recycled";
Duplex = "DuplexNoTumble";
};
}
{
name = "A4";
location = "APB/3014";
description = "HP Laserjet 9040";
deviceUri = "socket://a4.tcs.inf.tu-dresden.de";
model = "HP/hp-laserjet_9040-ps.ppd.gz";
ppdOptions = {
PageSize = "A4";
HPOption_Tray1 = "True";
HPOption_Duplexer = "True";
InstalledMemory = "128-255MB";
MediaType = "Plain";
Duplex = "DuplexNoTumble";
Collate = "True";
};
}
{
name = "ricoh";
location = "APB/3014";
description = "Ricoh SP 4510DN";
deviceUri = "socket://ricoh.tcs.inf.tu-dresden.de";
model = "Ricoh/ricoh-sp-4510dn.ppd";
ppdOptions = {
OptionTray = "2Cassette";
PageSize = "A4";
InputSlot = "3Tray";
Duplex = "none";
RIPaperPolicy = "NearestSizeAdjust";
pdftops-render-default = "pdftocairo";
};
}
{
name = "ricohcolor";
location = "APB/3014";
description = "Ricoh Alficio MP C307";
deviceUri = "socket://color.tcs.inf.tu-dresden.de";
model = "Ricoh/ricoh-mp-c307.ppd";
ppdOptions = {
media = "A4";
OptionTray = "1Cassette";
RIPostScript = "Adobe";
};
}
];
}

View File

@ -34,8 +34,8 @@
# enable server services
server = {
enable = true;
nextcloud.enable = true;
enable = false;
nextcloud.enable = false;
};

View File

@ -12,9 +12,5 @@ with lib; {
secrets.example_key.format = "yaml";
};
sops.secrets = {
storemin.sopsFile = ../secrets/server.yaml;
cloudstore_user.sopsFile = ../secrets/server.yaml;
};
};
}

View File

@ -1,25 +0,0 @@
{ config, pkgs, lib, ... }:
{
#imports = [ <home-manager/nixos> ];
imports = [
./ellmau
];
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
};
users = {
mutableUsers = false;
users = {
ellmau = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "audio"];
description = "Stefan Ellmauthaler";
shell = pkgs.zsh;
home = "/home/ellmau";
hashedPassword = "$6$JZPnaZYG$KL2c3e1it3j2avioovE1WveN/mpmq/tPsSAvHY1XRhtqKaE7TaSQkqRy69farkIR0Xs0.yTjltvKvv28kZtLO1";
};
};
};
}

View File

@ -1,14 +0,0 @@
{ config, pkgs, lib, ... }:
{
config = lib.mkIf config.variables.graphical {
home-manager.users.ellmau.programs.alacritty = {
enable = true;
settings = {
window = {
decorations = "full";
};
alt_send_esc = true;
};
};
};
}

View File

@ -1,122 +0,0 @@
{ config, pkgs, lib, ...}:
{
home-manager.users.ellmau = {
programs.autorandr = {
enable = config.variables.graphical;
profiles = {
"home" = {
fingerprint = {
DP-1 = "00ffffffffffff0009d1507945540000221e0104b54627783f5995af4f42af260f5054a56b80d1c0b300a9c08180810081c0010101014dd000a0f0703e8030203500ba892100001a000000ff004e384c30323634373031390a20000000fd00283c87873c010a202020202020000000fc0042656e5120455733323730550a01bc02033af1515d5e5f6061101f222120051404131203012309070783010000e200c06d030c0020003878200060010203e305e001e6060501544c2ca36600a0f0701f8030203500ba892100001a565e00a0a0a029502f203500ba892100001abf650050a0402e6008200808ba892100001c000000000000000000000000000000bf";
eDP-1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006";
};
config = {
eDP-1.enable = false;
DP-1 = {
enable = true;
crtc = 1;
primary = true;
position = "0x0";
mode = "3840x2160";
dpi = 96;
};
};
};
"mobile" = {
fingerprint.eDP-1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006";
config = {
eDP-1 = {
enable = true;
primary = true;
mode = "3840x2160";
dpi = 192;
};
};
};
"work" = {
fingerprint = {
eDP-1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006";
DP-2 = "00ffffffffffff0010acb5414c4133452c1e0104b53c22783eee95a3544c99260f5054a54b00e1c0d100d1c0b300a94081808100714f4dd000a0f0703e803020350055502100001a000000ff0031444e593132330a2020202020000000fd00184b1e8c36010a202020202020000000fc0044454c4c205532373230510a2001af020319f14c101f2005140413121103020123097f0783010000a36600a0f0703e803020350055502100001a565e00a0a0a029503020350055502100001a114400a0800025503020360055502100001a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d9";
};
config = {
eDP-1 = {
enable = true;
crtc = 0;
position = "3840x0";
mode = "3840x2160";
#dpi = 288;
dpi = 96;
};
DP-2 = {
enable = true;
primary = true;
mode = "3840x2160";
#dpi = 144;
dpi = 96;
position = "0x0";
};
};
};
"home-nuc" = {
fingerprint = {
DP-2 = "00ffffffffffff0009d1507945540000221e0104b54627783f5995af4f42af260f5054a56b80d1c0b300a9c08180810081c0010101014dd000a0f0703e8030203500ba892100001a000000ff004e384c30323634373031390a20000000fd00283c87873c010a202020202020000000fc0042656e5120455733323730550a01bc02033af1515d5e5f6061101f222120051404131203012309070783010000e200c06d030c0020003878200060010203e305e001e6060501544c2ca36600a0f0701f8030203500ba892100001a565e00a0a0a029502f203500ba892100001abf650050a0402e6008200808ba892100001c000000000000000000000000000000bf";
};
config = {
DP-2 = {
enable = true;
crtc = 1;
primary = true;
position = "0x0";
mode = "3840x2160";
dpi = 96;
};
};
};
"e3027" = {
fingerprint = {
e-DP1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006";
DP-1 = "00ffffffffffff004ca306a7010101011715010380a05a780ade50a3544c99260f5054a10800814081c0950081809040b300a9400101283c80a070b023403020360040846300001a9e20009051201f304880360040846300001c000000fd0017550f5c11000a202020202020000000fc004550534f4e20504a0a202020200116020328f651901f202205140413030212110706161501230907078301000066030c00100080e200fd023a801871382d40582c450040846300001e011d801871382d40582c450040846300001e662156aa51001e30468f330040846300001e302a40c8608464301850130040846300001e00000000000000000000000000000089";
};
config = {
eDP-1 = {
enable = true;
crtc = 0;
position = "0x0";
mode = "3840x2160";
};
DP-1 = {
enable = true;
crtc = 1;
position = "3840x0";
mode = "1920x1200";
};
};
};
"e3027-clone" = {
fingerprint = {
e-DP1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006";
DP-1 = "00ffffffffffff004ca306a7010101011715010380a05a780ade50a3544c99260f5054a10800814081c0950081809040b300a9400101283c80a070b023403020360040846300001a9e20009051201f304880360040846300001c000000fd0017550f5c11000a202020202020000000fc004550534f4e20504a0a202020200116020328f651901f202205140413030212110706161501230907078301000066030c00100080e200fd023a801871382d40582c450040846300001e011d801871382d40582c450040846300001e662156aa51001e30468f330040846300001e302a40c8608464301850130040846300001e00000000000000000000000000000089";
};
config = {
eDP-1 = {
enable = true;
crtc = 0;
position = "0x0";
mode = "1920x1200";
};
DP-1 = {
enable = true;
crtc = 1;
position = "0x0";
mode = "1920x1200";
};
};
};
};
hooks.postswitch = {
"polybar" = "systemctl --user restart polybar.service";
};
};
};
}

View File

@ -1 +0,0 @@
{"aliases":{},"editor":"","git_protocol":"ssh", "prompt":"enabled"}

View File

@ -1,88 +0,0 @@
subject= /C=DE/ST=Sachsen/L=Dresden/O=Technische Universitaet Dresden/CN=TU Dresden CA
-----BEGIN CERTIFICATE-----
MIIFljCCBH6gAwIBAgIMHG40JD862CwbzJE1MA0GCSqGSIb3DQEBCwUAMIGVMQsw
CQYDVQQGEwJERTFFMEMGA1UEChM8VmVyZWluIHp1ciBGb2VyZGVydW5nIGVpbmVz
IERldXRzY2hlbiBGb3JzY2h1bmdzbmV0emVzIGUuIFYuMRAwDgYDVQQLEwdERk4t
UEtJMS0wKwYDVQQDEyRERk4tVmVyZWluIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
IDIwHhcNMTYxMjEyMTQzOTE2WhcNMzEwMjIyMjM1OTU5WjBzMQswCQYDVQQGEwJE
RTEQMA4GA1UECAwHU2FjaHNlbjEQMA4GA1UEBwwHRHJlc2RlbjEoMCYGA1UECgwf
VGVjaG5pc2NoZSBVbml2ZXJzaXRhZXQgRHJlc2RlbjEWMBQGA1UEAwwNVFUgRHJl
c2RlbiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOfggnONmNft
CebaQElj0mMf9D8ao/ez9Q3cwm04d18KaUbADLajcEvLE8YBzJmzQKJdfLdxKiJE
x/4klxIXeXH+jksh7plW4L2U74zIf3O0d1RmYsKoppYZOP1CVfJ1T76y9uBrpA9e
0bL/oi3uTLHuxyDCe3vXIgK3QgVeVupJP+TtuP2YbbSBLP9iN4vDE5RqAWnrDYJF
Mv3EWgNIcNQQU6w23ytb4W8Vfwlm/nM8tBdDOVt9S06Bq17sKBa4YIJ+V/y6xV7w
m/P/cPo0pPFsxrycOjJTxlx8Lk343+6Hov0tI+4h6uX8iB95RLOfDOJMMZS1Yr9q
3NyiZE1+cZkCAwEAAaOCAgUwggIBMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYDVR0P
AQH/BAQDAgEGMCkGA1UdIAQiMCAwDQYLKwYBBAGBrSGCLB4wDwYNKwYBBAGBrSGC
LAEBBDAdBgNVHQ4EFgQUUv6+tyTCGwodRlKORCQq9EhAPQEwHwYDVR0jBBgwFoAU
k+PYMiba1fFKpZFK4OpL4qIMz+EwgY8GA1UdHwSBhzCBhDBAoD6gPIY6aHR0cDov
L2NkcDEucGNhLmRmbi5kZS9nbG9iYWwtcm9vdC1nMi1jYS9wdWIvY3JsL2NhY3Js
LmNybDBAoD6gPIY6aHR0cDovL2NkcDIucGNhLmRmbi5kZS9nbG9iYWwtcm9vdC1n
Mi1jYS9wdWIvY3JsL2NhY3JsLmNybDCB3QYIKwYBBQUHAQEEgdAwgc0wMwYIKwYB
BQUHMAGGJ2h0dHA6Ly9vY3NwLnBjYS5kZm4uZGUvT0NTUC1TZXJ2ZXIvT0NTUDBK
BggrBgEFBQcwAoY+aHR0cDovL2NkcDEucGNhLmRmbi5kZS9nbG9iYWwtcm9vdC1n
Mi1jYS9wdWIvY2FjZXJ0L2NhY2VydC5jcnQwSgYIKwYBBQUHMAKGPmh0dHA6Ly9j
ZHAyLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3QtZzItY2EvcHViL2NhY2VydC9jYWNl
cnQuY3J0MA0GCSqGSIb3DQEBCwUAA4IBAQBM2ET8sDhpf8GfzHc9oCwzGzt/X+/o
kHK1T0cv5W44y7ftG6LmovMU49SPTfluGToRsMOeYFzDTpwYiqLjg3TXGs08Vuvo
JQOPuSvW8ZACrvZJfSdns6XDMNTzUxRXEtchvrYRkE7bsvt0t3yOlSH8YvkWsBa4
vbAu9NdKkt0cDkoZobC5N4hI5Q0NfNM5Ac7HXr1h7dbLwC6arHPuw3B7j/jIGL5K
MP9bsh6d78nkxPSu4XcXH18EUPSJHgqPcSyVHspLqLKq0zkDXuGMOIT4ayX0baMh
/dkhanXmXp1XlOvq5Krnr+tV93z4vv8kqVDhslj3YIDeuW0PNRPJyxWF
-----END CERTIFICATE-----
subject= /C=DE/O=Verein zur Foerderung eines Deutschen Forschungsnetzes e. V./OU=DFN-PKI/CN=DFN-Verein Certification Authority 2
-----BEGIN CERTIFICATE-----
MIIFEjCCA/qgAwIBAgIJAOML1fivJdmBMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD
VQQGEwJERTErMCkGA1UECgwiVC1TeXN0ZW1zIEVudGVycHJpc2UgU2VydmljZXMg
R21iSDEfMB0GA1UECwwWVC1TeXN0ZW1zIFRydXN0IENlbnRlcjElMCMGA1UEAwwc
VC1UZWxlU2VjIEdsb2JhbFJvb3QgQ2xhc3MgMjAeFw0xNjAyMjIxMzM4MjJaFw0z
MTAyMjIyMzU5NTlaMIGVMQswCQYDVQQGEwJERTFFMEMGA1UEChM8VmVyZWluIHp1
ciBGb2VyZGVydW5nIGVpbmVzIERldXRzY2hlbiBGb3JzY2h1bmdzbmV0emVzIGUu
IFYuMRAwDgYDVQQLEwdERk4tUEtJMS0wKwYDVQQDEyRERk4tVmVyZWluIENlcnRp
ZmljYXRpb24gQXV0aG9yaXR5IDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQDLYNf/ZqFBzdL6h5eKc6uZTepnOVqhYIBHFU6MlbLlz87TV0uNzvhWbBVV
dgfqRv3IA0VjPnDUq1SAsSOcvjcoqQn/BV0YD8SYmTezIPZmeBeHwp0OzEoy5xad
rg6NKXkHACBU3BVfSpbXeLY008F0tZ3pv8B3Teq9WQfgWi9sPKUA3DW9ZQ2PfzJt
8lpqS2IB7qw4NFlFNkkF2njKam1bwIFrEczSPKiL+HEayjvigN0WtGd6izbqTpEp
PbNRXK2oDL6dNOPRDReDdcQ5HrCUCxLx1WmOJfS4PSu/wI7DHjulv1UQqyquF5de
M87I8/QJB+MChjFGawHFEAwRx1npAgMBAAGjggF0MIIBcDAOBgNVHQ8BAf8EBAMC
AQYwHQYDVR0OBBYEFJPj2DIm2tXxSqWRSuDqS+KiDM/hMB8GA1UdIwQYMBaAFL9Z
IDYAeaCgImuM1fJh0rgsy4JKMBIGA1UdEwEB/wQIMAYBAf8CAQIwMwYDVR0gBCww
KjAPBg0rBgEEAYGtIYIsAQEEMA0GCysGAQQBga0hgiweMAgGBmeBDAECAjBMBgNV
HR8ERTBDMEGgP6A9hjtodHRwOi8vcGtpMDMzNi50ZWxlc2VjLmRlL3JsL1RlbGVT
ZWNfR2xvYmFsUm9vdF9DbGFzc18yLmNybDCBhgYIKwYBBQUHAQEEejB4MCwGCCsG
AQUFBzABhiBodHRwOi8vb2NzcDAzMzYudGVsZXNlYy5kZS9vY3NwcjBIBggrBgEF
BQcwAoY8aHR0cDovL3BraTAzMzYudGVsZXNlYy5kZS9jcnQvVGVsZVNlY19HbG9i
YWxSb290X0NsYXNzXzIuY2VyMA0GCSqGSIb3DQEBCwUAA4IBAQCHC/8+AptlyFYt
1juamItxT9q6Kaoh+UYu9bKkD64ROHk4sw50unZdnugYgpZi20wz6N35at8yvSxM
R2BVf+d0a7Qsg9h5a7a3TVALZge17bOXrerufzDmmf0i4nJNPoRb7vnPmep/11I5
LqyYAER+aTu/de7QCzsazeX3DyJsR4T2pUeg/dAaNH2t0j13s+70103/w+jlkk9Z
PpBHEEqwhVjAb3/4ru0IQp4e1N8ULk2PvJ6Uw+ft9hj4PEnnJqinNtgs3iLNi4LY
2XjiVRKjO4dEthEL1QxSr2mMDwbf0KJTi1eYe8/9ByT0/L3D/UqSApcb8re2z2WK
GqK1chk5
-----END CERTIFICATE-----
subject= /C=DE/O=T-Systems Enterprise Services GmbH/OU=T-Systems Trust Center/CN=T-TeleSec GlobalRoot Class 2
-----BEGIN CERTIFICATE-----
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx
KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd
BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl
YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1
OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy
aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50
ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd
AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC
FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi
1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq
jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ
wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj
QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/
WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy
NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC
uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw
IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6
g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP
BSeOE6Fuwg==
-----END CERTIFICATE-----

View File

@ -1,30 +0,0 @@
# This is the list of trusted keys. Comment lines, like this one, as
# well as empty lines are ignored. Lines have a length limit but this
# is not a serious limitation as the format of the entries is fixed and
# checked by gpg-agent. A non-comment line starts with optional white
# space, followed by the SHA-1 fingerprint in hex, followed by a flag
# which may be one of 'P', 'S' or '*' and optionally followed by a list of
# other flags. The fingerprint may be prefixed with a '!' to mark the
# key as not trusted. You should give the gpg-agent a HUP or run the
# command "gpgconf --reload gpg-agent" after changing this file.
# Include the default trust list
include-default
# CN=Deutsche Telekom Root CA 2
# OU=T-TeleSec Trust Center
# O=Deutsche Telekom AG
# C=DE
85:A4:08:C0:9C:19:3E:5D:51:58:7D:CD:D6:13:30:FD:8C:DE:37:BF S relax
# CN=T-TeleSec GlobalRoot Class 2
# OU=T-Systems Trust Center
# O=T-Systems Enterprise Services GmbH
# C=DE
EA:B2:26:12:DB:87:4F:A1:8A:9D:82:FE:C1:4B:25:39:61:A8:CF:44 S relax
# CN=T-TeleSec GlobalRoot Class 2
# OU=T-Systems Trust Center
# O=T-Systems Enterprise Services GmbH
# C=DE
59:0D:2D:7D:88:4F:40:2E:61:7E:A5:62:32:17:65:CF:17:D8:94:E9 S relax

View File

@ -1,253 +0,0 @@
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# initialise kwallet via pam
#exec --no-startup-id /usr/lib/pam_kwallet_init
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
#font pango:monospace 11
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
set $i3lockwall i3lock --nofork -i ~/.background-image -f -e -t
exec --no-startup-id xss-lock --transfer-sleep-lock -- $i3lockwall
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
# ssh agent
#exec .config/plasma-workspace/env/ssh-agent-startup.sh
# keepass
#exec .config/old-autostart-scripts/keepassxc.sh
# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# hide edge borders in a smart way
#hide_edge_borders smart
# Mod Ctrl d for display resetting
#bindsym $mod+Ctrl+d exec --no-startup-id $HOME/.config/i3/set_xrandr.zsh
# start a terminal
#export TERMINAL=/usr/bin/alacritty
#bindsym $mod+Return exec i3-sensible-terminal
bindsym $mod+Return exec /etc/profiles/per-user/ellmau/bin/alacritty
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
#bindsym $mod+d exec --no-startup-id dmenu_run
# A more modern dmenu replacement is rofi:
bindcode $mod+40 exec "rofi -modi drun,run -show drun"
# There also is i3-dmenu-desktop which only displays applications shipping a
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
bindsym Mod1+Tab exec "rofi -show window"
# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+semicolon focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+semicolon move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+Ctrl+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1: gen"
set $ws2 "2: web"
set $ws3 "3: misc"
set $ws4 "4: comms"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9: secondary"
set $ws10 "10: secondary"
workspace 1 output primary
workspace 2 output primary
workspace 3 output primary
workspace 4 output primary
#workspace 9 output eDP-1
#workspace 10 output eDP-1
# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape or $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
#bar {
# status_command i3status-rs ~/.config/i3status-rust/config.toml
# position top
#}
#exec_always --no-startup-id polybar
exec_always --no-startup-id systemctl --user restart polybar.service
# shutdown / restart / suspend...
set $mode_system System (l) lock, (CTRL+e) logout, (CTRL+r) reboot, (CTRL+s) shutdown
mode "$mode_system" {
bindsym l exec --no-startup-id $i3lockwall, mode "default"
bindsym Ctrl+e exec --no-startup-id i3-msg exit, mode "default"
#bindsym s exec --no-startup-id $i3lockwall && systemctl suspend, mode "default"
#bindsym h exec --no-startup-id $i3lockwall && systemctl hibernate, mode "default"
bindsym Ctrl+r exec --no-startup-id systemctl reboot, mode "default"
bindsym Ctrl+s exec --no-startup-id systemctl poweroff -i, mode "default"
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+BackSpace mode "$mode_system"
# keyboard layout toggle
bindsym $mod+space exec --no-startup-id .config/i3/keyboard_layout_toggle.sh
# autostart keepassxc
exec --no-startup-id .config/i3/keepassxc.sh
# autostart other stuff
#exec --no-startup-id i3-msg 'workspace 4: comms; exec signal-desktop'
#exec --no-startup-id i3-msg 'workspace 4: comms; exec element-desktop'
# application specific stuff
for_window[class="KeePassXC"] floating enable
#assign [class="KeePassXC"] $ws5
#for_window[class="Thunderbird"] move workspace $ws4
#for_window[class="Element"] move workspace $ws4
# autostart normal programs
#exec --not-startup-id i3-msg 'workspace 4:comms; exec element-desktop'
#exec --not-startup-id i3-msg 'workspace 4:comms; exec thunderbird'
#exec --no-startup-id element-desktop
#exec --no-startup-id thunderbird

View File

@ -1,7 +0,0 @@
#!/usr/bin/env nix-shell
#! nix-shell -i zsh -p zsh
i3-msg 'workspace 4: comms; append_layout /home/ellmau/.config/i3/workspace4.json'
i3-msg 'exec thunderbird'
i3-msg 'exec signal-desktop'
i3-msg 'exec element-desktop'

View File

@ -1,5 +0,0 @@
#!/usr/bin/env nix-shell
#! nix-shell -i zsh -p zsh
sleep 5
secret-tool lookup keepass unlock | keepassxc --pw-stdin ~/.keepasswd/passwd-store.kdbx

View File

@ -1,7 +0,0 @@
#!/bin/sh
if [[ `setxkbmap -query | awk '$1 == "layout:"{print($2)}'` = "us" ]]; then
setxkbmap -layout de
else
setxkbmap -layout us
fi

View File

@ -1,72 +0,0 @@
{
"border": "normal",
"current_border_width": 2,
"floating": "auto_off",
"geometry": {
"height": 2116,
"width": 3836,
"x": 0,
"y": 0
},
"marks": [],
"name": "Inbox - Mozilla Thunderbird",
"percent": 0.5,
"swallows": [
{
"class": "^Thunderbird$"
}
],
"type": "con"
}
{
"border": "normal",
"floating": "auto_off",
"layout": "splitv",
"marks": [],
"percent": 0.5,
"type": "con",
"nodes": [
{
"border": "normal",
"current_border_width": 2,
"floating": "auto_off",
"geometry": {
"height": 2116,
"width": 1916,
"x": 1920,
"y": 42
},
"marks": [],
"name": "Element | TheoLog 2021",
"percent": 0.5,
"swallows": [
{
"class": "^Element$"
}
],
"type": "con"
},
{
"border": "normal",
"current_border_width": 2,
"floating": "auto_off",
"geometry": {
"height": 2116,
"width": 1276,
"x": 2562,
"y": 42
},
"marks": [],
"name": "Signal",
"percent": 0.5,
"swallows": [
{
"class": "^Signal$"
}
],
"type": "con"
}
]
}

View File

@ -1,116 +0,0 @@
{ config, pkgs, lib, flakes, ...}:
let
withAliases = hostname: aliases: cfg:
lib.recursiveUpdate
{
host = "${hostname} ${aliases}";
hostname = "${hostname}";
extraOptions.hostKeyAlias = "${hostname}";
}
cfg;
in
{
imports = [
./alacritty.nix
./autorandr.nix
./dunst.nix
./git.nix
./gpg.nix
./i3.nix
./nextcloud.nix
./polybar.nix
./zsh.nix
./go.nix
];
home-manager.users.ellmau = {
home.packages = [
pkgs.htop
pkgs.pavucontrol
pkgs.ripgrep
pkgs.jabref
pkgs.libreoffice-fresh
pkgs.nixfmt
pkgs.nixpkgs-fmt
pkgs.nix-prefetch-github
pkgs.neofetch
pkgs.jitsi-meet-electron
pkgs.skypeforlinux
pkgs.teams
pkgs.unstable.zoom-us
pkgs.element-desktop
pkgs.signal-desktop
];
services = {
udiskie = {
enable = true;
automount = true;
notify = true;
tray = "auto";
};
blueman-applet.enable = config.variables.graphical;
network-manager-applet.enable = config.variables.graphical ;
gnome-keyring = {
enable = true;
components = [ "pkcs11" "secrets" "ssh" ];
};
};
xdg = {
enable = true;
};
programs.direnv = {
enable = true;
enableZshIntegration = true;
};
xsession = {
numlock.enable = true;
profileExtra = ''
if [ $(hostname) = 'stel-xps' ]; then
brightnessctl s 50%
fi
'';
};
home.file.".background-image".source = ../../common/wallpaper/nix-wallpaper-nineish-dark-gray.png;
programs.home-manager = {
enable = true;
};
programs.ssh = {
enable = true;
forwardAgent = true;
serverAliveInterval = 5;
hashKnownHosts = true;
controlMaster = "auto";
controlPersist = "60s";
# matchBlocks = {
# "iccl-share.inf.tu-dresden.de" =
# withAliases "iccl-share.inf.tu-dresden.de" "iccl-share" {
# proxyJump = "tcs.inf.tu-dresden.de";
# };
# "iccl.inf.tu-dresden.de" = withAliases "iccl.inf.tu-dresden.de" "" {
# proxyJump = "tcs.inf.tu-dresden.de";
# };
# "wille.inf.tu-dresden.de" =
# withAliases "wille.inf.tu-dresden.de" "wille wi" {
# proxyJump = "tcs.inf.tu-dresden.de";
# };
# "tcs.inf.tu-dresden.de" =
# withAliases "tcs.inf.tu-dresden.de" "tcs" { };
# };
};
};
}

View File

@ -1,40 +0,0 @@
{ config, pkgs, ...}:
{
home-manager.users.ellmau = {
services.dunst = {
enable = config.variables.graphical;
iconTheme = {
package = pkgs.numix-icon-theme;
name = "Numix";
size = "26";
};
settings = {
global = {
geometry = "800x5-30+50";
transparency = 10;
frame_color = "#839496";
font = "Hasklug Nerd Font 10";
timeout = 5;
follow = "mouse";
markup = "full";
icon_position = "left";
history_length = 32;
dmenu = "${pkgs.rofi}/bin/rofi -dmenu";
word_wrap = true;
};
urgency_critical = {
foreground = "#fdf6e3";
background = "#dc322f";
};
urgency_normal = {
foreground = "#fdf6e3";
background = "#859900";
};
urgency_low = {
foreground = "#fdf6e3";
background = "#2aa198";
};
};
};
};
}

View File

@ -1,41 +0,0 @@
{ config, pkgs, lib, ...}:
{
home-manager.users.ellmau = {
programs= {
git = {
enable = true;
package = pkgs.gitAndTools.gitFull;
userName = "Stefan Ellmauthaler";
userEmail = "stefan.ellmauthaler@tu-dresden.de";
extraConfig = {
core = { editor = "emacsclient"; };
gpg = lib.mkIf config.variables.git.gpgsm {
format = "x509";
program = "${pkgs.gnupg}/bin/gpgsm";
};
#gpg = {
# format = "x509";
# program = "gpgsm";
#};
user = {
signingKey = config.variables.git.key;
signByDefault = config.variables.git.signDefault;
};
init = { defaultBranch = "main";};
branch = { autosetuprebase = "always";};
safe.directory = [ "/etc/nixos" ];
};
lfs.enable = true;
};
gh = {
enable = true;
settings = {
aliases = {};
git_protocol = "ssh";
prompt = "enabled";
};
};
};
};
}

View File

@ -1,4 +0,0 @@
{config, pkgs, lib, ...}:
{
home-manager.users.ellmau.programs.go.enable = true;
}

View File

@ -1,18 +0,0 @@
{ config, pkgs, lib, ...}:
{
home-manager.users.ellmau = {
home.file = {
".gnupg/gpgsm.conf".text = ''
keyserver ldap.pca.dfn.de::::o=DFN-Verein,c=DE
disable-crl-checks
'';
".gnupg/dirmngr_ldapservers.conf".text = "ldap.pca.dfn.de:389:::o=DFN-Verein,c=de,o=DFN-Verein,c=de";
".gnupg/trustlist.txt".source = ./conf/gpgsm/trustlist.txt;
".gnupg/chain.txt".source = ./conf/gpgsm/chain.txt;
};
programs.gpg.enable = true;
};
}

View File

@ -1,13 +0,0 @@
{ config, pkgs, lib, ...}:
{
config = lib.mkIf config.variables.graphical {
home-manager.users.ellmau = {
xdg = {
configFile."i3" = {
source = conf/i3;
recursive = true;
};
};
};
};
}

View File

@ -1,9 +0,0 @@
{ pkgs, ... }:
{
home-manager.users.ellmau = {
services.nextcloud-client = {
enable = true;
startInBackground = true;
};
};
}

View File

@ -1,357 +0,0 @@
{ config, pkgs, ...}:
{
home-manager.users.ellmau = {
services.polybar = {
enable = config.variables.graphical;
package = pkgs.polybarFull;
settings =
let
# solarized theme colours ~ https://en.wikipedia.org/wiki/Solarized
#content tones
Base01 = "#586e75";
Base00 = "#657b83";
Base0 = "#839496";
Base1 = "#93a1a1";
# background tones
Base2 = "#eee8d5";
Base3 = "#fdf6e3";
# accent tones
Yellow = "#b58900";
Orange = "#cb4b16";
Red = "#dc322f";
Magenta = "#d33682";
Violet = "#6c71c4";
Blue = "#268bd2";
Cyan = "#2aa198";
Green = "#859900";
foreground_col = Base3;
background_col = Base01;
# old bg/fg stuff
#foreground_col = "#eee8d5";
#background_col = "#6c71c4";
foreground_altcol = "#66deff";
primary_col = "#ffb52a";
secondary_col = "#e60053";
alert_col = "#dc322f";
dpi = ''
''${env:DPI:0}
'';
#polyheight = 60;
fonts = [
"Hasklig:style=Regular"
"all-the-icons:style=Regular"
"Webdings:style=Regular"
"Noto Emoji:scale=10"
"Unifont:style=Regular"
"Material Icons:size=12;0"
"Weather Icons:size=12;0"
"Hasklug Nerd Font,Hasklig Medium:style=Medium,Regular"
];
in
{
"bar/main" = {
font = fonts;
modules = {
left = "i3 xwindow";
center = "";
right = " xbacklight xkeyboard eth wlan battery date powermenu dunst volume ";
};
background = background_col;
foreground = foreground_col;
monitor = ''
''${env:MONITOR:}
'';
width = "100%";
#height = polyheight;
padding = 0;
padding-right = 2;
radius = 14;
module-margin = 1;
line-size = 2;
dpi-x = dpi;
dpi-y = dpi;
tray = {
position = "right";
padding = 2;
background = Base2;
};
};
"bar/aux" = {
font = fonts;
modules = {
left = "i3";
center = "";
right = " xbacklight xkeyboard eth wlan battery date powermenu volume ";
};
background = background_col;
foreground = foreground_col;
monitor = ''
''${env:MONITOR:}
'';
width = "100%";
#height = polyheight;
radius = 14;
module-margin = 1;
line-size = 2;
dpi-x = dpi;
dpi-y = dpi;
};
"module/volume" = {
type = "internal/pulseaudio";
format.volume = "<ramp-volume> <label-volume>";
label.muted.text = "🔇";
label.muted.foreground = "#666";
ramp.volume = ["🔈" "🔉" "🔊"];
click.right = "${pkgs.pavucontrol}/bin/pavucontrol &";
# format-volume-underline = Base2;
# format-muted-underline = Base2;
};
"module/i3" = {
type = "internal/i3";
format = "<label-state> <label-mode>";
index-sort = "true";
wrapping-scroll = "false";
#; Only show workspaces on the same output as the bar
pin-workspaces = "true";
label-mode-padding = "2";
label-mode-foreground = "#000";
label-mode-background = primary_col;
#; focused = Active workspace on focused monitor
label-focused = "%name%";
#;label-focused-background = ${colors.background-alt}
#;label-focused-background = #9f78e1
label-focused-background = foreground_col;
label-focused-underline= foreground_col;
label-focused-foreground = background_col;
label-focused-padding = "2";
#; unfocused = Inactive workspace on any monitor
label-unfocused = "%name%";
label-unfocused-padding = "2";
label-unfocused-underline = foreground_col;
#; visible = Active workspace on unfocused monitor
label-visible = "%name%";
label-visible-background = Violet;
label-visible-underline = Yellow;
label-visible-padding = 2;
#; urgent = Workspace with urgency hint set
label-urgent = "%name%";
label-urgent-background = alert_col;
label-urgent-foreground = primary_col;
label-urgent-padding = "2";
#; Separator in between workspaces
#; label-separator = |
};
"module/xkeyboard" = {
type = "internal/xkeyboard";
blacklist-0 = "num lock";
interval = "5";
format-prefix = ''""'';
format-prefix-foreground = foreground_altcol;
format-prefix-underline = secondary_col;
label-layout = "%layout%";
label-layout-underline = secondary_col;
label-indicator-padding = "2";
label-indicator-margin = "1";
label-indicator-background = secondary_col;
label-indicator-underline = secondary_col;
};
"module/wlan" = {
type = "internal/network";
interface = "wlp0s20f3";
interval = "3.0";
format-connected = " <ramp-signal> <label-connected>";
format-connected-underline = "#9f78e1";
label-connected = "%essid%";
ramp-signal-0 = ''"0.0"'';
ramp-signal-1 = ''"0.5"'';
ramp-signal-2 = ''"1.0"'';
ramp-signal-3 = ''"1.0"'';
ramp-signal-4 = ''"1.0"'';
format-disconnected = "";
# ;format-disconnected = <label-disconnected>
#;format-disconnected-underline = ${self.format-connected-underline}
#;label-disconnected = %ifname% disconnected
#;label-disconnected-foreground = ${colors.foreground-alt}
ramp-signal-foreground = foreground_altcol;
};
"module/eth" = {
type = "internal/network";
interface = "eno1";
interval = "3.0";
format-connected-underline = "#55aa55";
format-connected = " <label-connected>";
format-connected-prefix-foreground = foreground_altcol;
label-connected = "%local_ip%";
format-disconnected = "";
format-disconnected-background = "#5479b7";
#;format-disconnected = <label-disconnected>
#;format-disconnected-underline = ${self.format-connected-underline}
#;label-disconnected = %ifname% disconnected
#;label-disconnected-foreground = ${colors.foreground-alt}
};
"module/date" = {
type = "internal/date";
interval = "5";
date = ''" %Y-%m-%d"'';
date-alt = ''" %Y-%m-%d"'';
time = "%H:%M";
time-alt = "%H:%M:%S";
#format-prefix = "";
#format-prefix-foreground = foreground_altcol;
format-underline = "#0a6cf5";
label = "%{A1:${pkgs.tray-calendar}/bin/traycalendar --no-tray:}%{A} %date% %time%";
};
"module/battery" = {
type = "internal/battery";
battery = "BAT0";
adapter = "ADP1";
full-at = "98";
format-charging-background= "#689d6a";
format-charging-prefix = ''" "'';
format-charging = "<label-charging>";
format-discharging-prefix = ''" "'';
format-discharging = "<label-discharging>";
format-discharging-background= "#689d6a";
format-full-prefix = ''" "'';
format-charging-underline = "#ffaa55";
format-full-prefix-foreground = foreground_altcol;
format-full-underline = "#ffaa55";
ormat-full-padding = "1";
format-charging-padding = "1";
format-discharging-padding = "1";
};
"module/temperature" = {
type = "internal/temperature";
thermal-zone = "0";
warn-temperature = "60";
format = "<ramp> <label>";
format-underline = "#f50a4d";
format-warn = "<ramp> <label-warn>";
format-warn-underline = "#f50a4d";
label = " %temperature-c%";
label-warn = "%temperature-c%";
label-warn-foreground = secondary_col;
ramp-0 = "l";
ramp-1 = "m";
ramp-2 = "h";
ramp-foreground = foreground_altcol;
};
"module/powermenu" = {
type = "custom/menu";
expand-right = "true";
format-spacing = "1";
label-open = ''""'';
label-open-foreground = secondary_col;
label-close = " cancel";
label-close-foreground = secondary_col;
label-separator = "|";
label-separator-foreground = foreground_altcol;
menu-0-0 = "reboot";
menu-0-0-exec = "menu-open-1";
menu-0-1 = "power off";
menu-0-1-exec = "menu-open-2";
menu-1-0 = "cancel";
menu-1-0-exec = "menu-open-0";
menu-1-1 = "reboot";
menu-1-1-exec = "sudo reboot";
menu-2-0 = "power off";
menu-2-0-exec = "sudo poweroff";
menu-2-1 = "cancel";
menu-2-1-exec = "menu-open-0";
};
"module/xbacklight" = {
type = "internal/xbacklight";
format = "<label> <bar>";
label = "BL";
bar-width = "10";
bar-indicator = "|";
bar-indicator-foreground = "#fff";
bar-indicator-font = "2";
bar-fill = "";
bar-fill-font = "2";
bar-fill-foreground = "#9f78e1";
bar-empty = "";
bar-empty-font = "2";
bar-empty-foreground = foreground_altcol;
};
"module/dunst" = {
type = "custom/script";
exec = "PATH=${pkgs.dbus}/bin/:$PATH ${pkgs.dunst}/bin/dunstctl is-paused | ${pkgs.gnugrep}/bin/grep -q true && echo || echo ";
interval = 10;
click-left = "PATH=${pkgs.dbus}/bin/:$PATH ${pkgs.dunst}/bin/dunstctl set-paused toggle";
};
"module/xwindow" = {
type = "internal/xwindow";
format = "<label>";
format-background = Cyan;
format-foreground = foreground_col;
format-padding = 2;
label-maxlen = 50;
label = "%title%";
};
};
script = ''
for m in $(polybar --list-monitors | ${pkgs.gnugrep}/bin/grep '(primary)' | ${pkgs.coreutils}/bin/cut -d":" -f1); do
MONITOR=$m polybar --reload main &
done;
for m in $(polybar --list-monitors | ${pkgs.gnugrep}/bin/grep -v '(primary)' | ${pkgs.coreutils}/bin/cut -d":" -f1); do
MONITOR=$m polybar --reload aux &
done;
'';
};
};
}

View File

@ -1,82 +0,0 @@
{ pkgs, ... }:
{
home-manager.users.ellmau = {
programs = {
zsh = {
enable = true;
defaultKeymap = "emacs";
oh-my-zsh.enable = false;
# remove extra stuff on the right side of the prompt
initExtra = ''
unset RPS1
# Color man pages
export LESS_TERMCAP_mb=$'\E[01;32m'
export LESS_TERMCAP_md=$'\E[01;32m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;47;34m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;36m'
export LESS=-R
'';
shellAliases = {
cp = "cp -i";
ls = "exa --icons --git";
ll = "exa --long --icons --binary --group";
llg = "exa --long --icons --grid --binary --group";
lal = "ll --all";
lla = "ll --all";
emacsc = "emacsclient -n";
};
plugins = [
{
name = "zsh-nix-shell";
file = "nix-shell.plugin.zsh";
src = pkgs.fetchFromGitHub {
owner = "chisui";
repo = "zsh-nix-shell";
rev = "v0.4.0";
sha256 = "037wz9fqmx0ngcwl9az55fgkipb745rymznxnssr3rx9irb6apzg";
};
}
];
};
starship = {
enable = true;
enableZshIntegration = true;
settings = {
add_newline = false;
format = "$all";
username.show_always = false;
git_commit.tag_disabled = false;
hostname.ssh_only = false;
directory.truncate_to_repo = true;
};
};
zoxide = {
enable = true;
enableZshIntegration = true;
};
bat = {
enable = true;
config = { theme = "ansi"; };
};
exa = {
enable = true;
enableAliases = false;
};
tmux = {
enable = true;
clock24 = true;
keyMode = "emacs";
shell = "${pkgs.zsh}/bin/zsh";
};
};
};
}

View File

@ -1,15 +0,0 @@
{ config, pkgs, ... }:
let
aspellConf = ''
data-dir /run/current-system/sw/lib/aspell
dict-dir /run/current-system/sw/lib/aspell
master en_GB-ise
extra-dicts en-computers.rws
add-extra-dicts en_GB-science.rws
'';
in
{
environment.systemPackages = [ pkgs.aspell ]
++ (with pkgs.aspellDicts; [ de en sv en-computers en-science ]);
}

View File

@ -1,9 +0,0 @@
{ config, pkgs, lib, ... }:
{
imports = [
./aspell.nix
./emacs
./obs-studio.nix
./python.nix
];
}

View File

@ -1,586 +0,0 @@
(require 'package)
;;(setq package-enable-at-startup nil)
;;(package-initialize)
;; (load-theme 'spacemacs-dark t)
;; (load-theme 'wombat t)
(use-package solarized-theme
:init
(load-theme 'solarized-selenized-light t)
)
;; (use-package vscode-dark-plus-theme
;; :config
;; (load-theme 'vscode-dark-plus t))
(use-package diminish
:config
(diminish 'auto-fill-function)
(diminish 'abbrev-mode))
;; Tab-width
(setq tab-width 2)
;; prolog
;(setq auto-mode-alist (append '(("\\.pl$" . prolog-mode)) auto-mode-alist))
;(setq auto-mode-alist (append '(("\\.lp$" . prolog-mode)) auto-mode-alist))
;(setq auto-mode-alist (append '(("\\.rls$" . prolog-mode)) auto-mode-alist))
;; spellchecking
(setq ispell-dictionary "british")
(add-hook 'LaTeX-mode-hook '(lambda () (flyspell-mode 1)))
;; ido
;(ido-mode 1)
;(setq ido-enable-flex-matching t); flexible matching
;(define-key (cdr ido-minor-mode-map-entry) [remap write-file] nil) ;do not suggest name when save as
;; make ido show suggestions one per line and not in one line
;; (make-local-variable 'ido-decorations)
;; (setf (nth 2 ido-decorations) "\n")
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;; helm ;;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; helm
(use-package helm
:after (helm-flx helm-descbinds helm-projectile)
:bind-keymap (("C-c h" . helm-command-prefix))
:bind (("M-x" . helm-M-x)
("M-y" . helm-show-kill-ring)
("C-x b" . helm-mini)
("C-x C-f" . helm-find-files)
("C-h SPC" . helm-all-mark-rings)
;; :map helm-command-prefix
;; ("g" . helm-google-suggest)
:map helm-map
("<tab>" . helm-execute-persistent-action)
("C-i" . helm-execute-persistent-action)
("C-z" . helm-select-action)
:map minibuffer-local-map
("C-c C-l" . helm-minibuffer-history))
:diminish helm-mode
:custom
(helm-adaptive-mode t nil (helm-adaptive))
(helm-buffers-fuzzy-matching t)
(helm-ff-file-name-history-use-recentf t)
(helm-ff-search-library-in-sexp t)
(helm-ff-skip-boring-files t)
(helm-locate-fuzzy-match t)
(helm-mode t)
(helm-move-to-line-cycle-in-source t)
(helm-net-prefer-curl t)
(helm-recentf-fuzzy-match t)
(helm-scroll-amount 8)
(helm-split-window-in-side-p t)
(helm-boring-file-regexp-list
'("\\.hi$" "\\.o$" "~$" "\\.bin$" "\\.lbin$" "\\.so$" "\\.a$" "\\.ln$" "\\.blg$" "\\.bbl$" "\\.elc$" "\\.lof$" "\\.glo$" "\\.idx$" "\\.lot$" "\\.svn$" "\\.hg$" "\\.git$" "\\.bzr$" "CVS$" "_darcs$" "_MTN$" "\\.fmt$" "\\.tfm$" "\\.class$" "\\.fas$" "\\.lib$" "\\.mem$" "\\.x86f$" "\\.sparcf$" "\\.dfsl$" "\\.pfsl$" "\\.d64fsl$" "\\.p64fsl$" "\\.lx64fsl$" "\\.lx32fsl$" "\\.dx64fsl$" "\\.dx32fsl$" "\\.fx64fsl$" "\\.fx32fsl$" "\\.sx64fsl$" "\\.sx32fsl$" "\\.wx64fsl$" "\\.wx32fsl$" "\\.fasl$" "\\.ufsl$" "\\.fsl$" "\\.dxl$" "\\.lo$" "\\.la$" "\\.gmo$" "\\.mo$" "\\.toc$" "\\.aux$" "\\.cp$" "\\.fn$" "\\.ky$" "\\.pg$" "\\.tp$" "\\.vr$" "\\.cps$" "\\.fns$" "\\.kys$" "\\.pgs$" "\\.tps$" "\\.vrs$" "\\.pyc$" "\\.pyo$" "\\.synctex\\.gz$"))
:custom-face
(helm-selection ((t (:inherit region :foreground "#2aa198"))))
(helm-source-header ((t (:foreground "#eee8d5" :background "#073642"))))
:config
(add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages)
(helm-flx-mode t)
(helm-descbinds-mode t))
(use-package helm-rg
:defer t
:bind (:map projectile-mode-map
("<remap> <projectile-rg>" . helm-projectile-rg))
:after (helm projectile))
(use-package helm-config
:ensure helm)
(use-package helm-flx)
(use-package helm-bbdb)
(use-package helm-descbinds)
(use-package helm-projectile)
(use-package helm-company)
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;; org-mode ;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (bind-key "C-c l" 'org-toggle-link-display) ;shows org links in plain text
;; (require 'org-roam)
;; ;;(require 'org-roam-protocol)
;; ;;(require 'ox-md)
;; (setq org-roam-directory "~/org-notes")
;; (setq org-roam-dailies-directory "~/org-notes/daily")
;; ;(add-hook 'after-init-hook 'org-roam-mode) ;init org-roam at startup
;; (bind-key [f8] 'org-roam-jump-to-index) ;jump to org roam index
;; (bind-key "C-c n f" 'org-roam-node-file) ; find a note
;; (bind-key "C-c n c" 'org-roam-capture) ; create a note
;; (bind-key "C-c n i" 'org-roam-node-insert) ;insert a link
;; (bind-key "C-c n l" 'org-roam-node-insert) ;insert a link
;; (bind-key "C-c n b" 'org-roam-buffer-toggle) ;shows backlink window
;; (bind-key "C-c n t" 'org-roam-tag-add) ;adds an org roam tag
;; (bind-key "C-c n d" 'org-roam-dailies-capture-date) ;adds notes to daily event cards
;; ;;(setq org-roam-completion-system 'ivy)
;; (setq org-roam-capture-templates
;; '(("d" "default" plain (function org-roam--capture-get-point)
;; "%?"
;; :file-name "%<%Y%m%d%H%M%S>-${slug}"
;; :head "#+title: ${title}\n#+roam_tags: %^{org-roam-tags}\n"
;; :unnarrowed t)))
;; (setq org-roam-server-host "127.0.0.1"
;; org-roam-server-port 8080
;; org-roam-server-authenticate nil
;; org-roam-server-export-inline-images t
;; org-roam-server-serve-files nil
;; org-roam-server-served-file-extensions '("pdf" "mp4" "ogv")
;; org-roam-server-network-poll t
;; org-roam-server-network-arrows nil
;; org-roam-server-network-label-truncate t
;; org-roam-server-network-label-truncate-length 60
;; org-roam-server-network-label-wrap-length 20)
(use-package org-bullets
:defer t
:commands org-bullets-mode
:hook (org-mode . org-bullets-mode))
(use-package org-roam
:custom
(org-roam-directory (file-truename "~/org-notes"))
:bind
(("C-c n l" . org-roam-buffer-toggle)
("C-c n f" . org-roam-node-find)
("C-c n g" . org-roam-graph)
("C-c n i" . org-roam-node-insert)
("C-c n c" . org-roam-capture)
("C-c n j" . org-roam-dailies-capture-today)
("C-c n d" . org-roam-dailies-capture-date))
:init
(setq org-roam-v2-ack t)
(require 'org-roam-protocol)
:config
(org-roam-db-autosync-mode))
(use-package org-roam-ui
:after org-roam
:custom
(org-roam-ui-sync-theme t)
(org-roam-ui-follow)
(org-roam-ui-update-on-save t)
(org-roam-ui-open-on-start t))
(define-key org-roam-mode-map [mouse-1] #'org-roam-visit-thing)
;; tally-list
(defun coffee-tally-add (n)
(interactive "nN: ")
(org-entry-put
nil "COFFEETALLY"
(format "%s" (+ n (string-to-number
(or (org-entry-get nil "COFFEETALLY") "0"))))))
(cl-defmethod org-roam-node-directories ((node org-roam-node))
(if-let ((dirs (file-name-directory (file-relative-name (org-roam-node-file node) org-roam-directory))))
(format "(%s)" (car (f-split dirs)))
""))
(cl-defmethod org-roam-node-backlinkscount ((node org-roam-node))
(let* ((count (caar (org-roam-db-query
[:select (funcall count source)
:from links
:where (= dest $s1)
:and (= type "id")]
(org-roam-node-id node)))))
(format "[%d]" count)))
(setq org-roam-node-display-template "${directories:10} ${tags:10} ${title:100} ${backlinkscount:6}")
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;; MAGIT ;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package magit
:defer t
:commands (magit-blame magit-log magit-status)
:bind (("<f5>" . magit-blame)
("<f6>" . magit-log)
("<f7>" . magit-status))
:custom
;(magit-commit-signoff t)
(magit-define-global-key-bindings t)
(magit-revert-buffers 'silent t)
(magit-use-overlays nil))
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(auth-source-save-behavior nil)
'(inhibit-startup-screen t)
'(show-paren-mode t)
'(show-paren-style 'mixed)
'(blink-matching-paren 'infoline)
'(org-agenda-files '("~/org-notes/daily/" "~/org-notes/"))
'(org-angeda-files '("~/org-notes/daily/" "~/org-notes/"))
'(size-indication-mode)
'(line-number-mode t)
'(epg-gpg-program (executable-find "gpg2"))
'(epg-gpgsm-program (executable-find "gpgsm"))
'(user-full-name "Stefan Ellmauthaler")
'(user-mail-address "stefan.ellmauthaler@tu-dresden.de")
'(global-hl-line-mode t)
'(global-linum-mode nil))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;; LaTeX ;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;(add-hook 'LateX-mode-hook 'turn-on-reftex)
;; auctex
;(load "auctex.el" nil t t)
;(load "preview-latex.el" nil t t)
;(setq TeX-toggle-debug-warnings t)
;(setq TeX-toggle-debug-bad-boxes t)
;(setq TeX-PDF-mode t)
;; reftex
;(setq reftex-plug-into-AUCTeX t)
(use-package auctex
:demand t
:no-require t
:preface (defun mm/disable-auto-fill-for-papers ()
(if (string-match "ellmau/repo/" (buffer-file-name))
(progn (turn-off-auto-fill)
(setq-local yas--original-auto-fill-function nil))))
:hook
((LaTeX-mode . flyspell-mode)
(LaTeX-mode . latex-math-mode)
(LaTeX-mode . tex-pdf-mode)
(LaTeX-mode . reftex-mode)
(LaTeX-mode . mm/disable-auto-fill-for-papers))
:custom
(LaTeX-babel-hyphen "")
(LaTeX-beamer-item-overlay-flag t)
(LaTeX-default-style "scrartcl")
(LaTeX-indent-environment-list
'(("verbatim" current-indentation)
("verbatim*" current-indentation)
("array")
("displaymath")
("eqnarray")
("eqnarray*")
("equation")
("equation*")
("picture")
("tabbing")
("table")
("table*")
("tabular")
("tabular*")
("lstlisting" ignore)))
(LaTeX-math-list
'((123 "subsetneq" "" nil)
(125 "supsetneq" "" nil)
(48 "varnothing" "" nil)
(61 "coloneqq" "" nil)))
(TeX-PDF-mode t)
(TeX-auto-save t)
(TeX-auto-untabify t)
(TeX-byte-compile t)
(TeX-debug-bad-boxes t)
(TeX-debug-warnings t)
(TeX-electric-escape nil)
(TeX-electric-sub-and-superscript t)
(TeX-master 'dwim)
(TeX-newline-function 'reindent-then-newline-and-indent)
(TeX-parse-self t)
(TeX-source-correlate-method 'synctex)
(TeX-source-correlate-mode t)
(TeX-source-correlate-start-server t))
;; ##### Don't forget to configure
;; ##### Okular to use emacs in
;; ##### "Configuration/Configure Okular/Editor"
;; ##### => Editor => Emacsclient. (you should see
;; ##### emacsclient -a emacs --no-wait +%l %f
;; ##### in the field "Command".
;; ##### Always ask for the master file
;; ##### when creating a new TeX file.
;(setq-default TeX-master nil)
;; ##### Enable synctex correlation. From Okular just press
;; ##### Shift + Left click to go to the good line.
(setq TeX-source-correlate-mode t
TeX-source-correlate-start-server t)
;; ### Set Okular as the default PDF viewer.
(eval-after-load "tex"
'(setcar (cdr (assoc 'output-pdf TeX-view-program-selection)) "Okular"))
(use-package company-reftex
:defer t
:init
(with-eval-after-load 'company
(add-to-list 'company-backends '(company-reftex-labels company-reftex-citations))))
(use-package company-auctex
:defer t
:init
(with-eval-after-load 'company
(company-auctex-init)))
(use-package company-bibtex
:defines company-backends
:defer t
:init
(with-eval-after-load 'company
(add-to-list 'company-backends '(company-bibtex))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;; projectile ;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package projectile
:init
(projectile-mode t)
:bind-keymap (("C-c p" . projectile-command-map))
:preface
(defun se/projectile-project-root (orig-fn &rest args)
"Disable projectile-modelining on remote hosts because it's unusably slow."
(unless (file-remote-p default-directory)
(apply orig-fn args)))
:config
(advice-add 'projectile-project-root :around #'se/projectile-project-root)
:custom
(projectile-enable-caching t)
(projectile-file-exists-remote-cache-expire (* 10 60))
(projectile-switch-project-action 'projectile-find-file)
(projectile-find-dir-includes-top-level t)
(projectile-completion-system 'default)
(projectile-globally-ignored-file-suffixes
'(".synctex.gz" ".bcf" ".blg" ".run.xml" ".thm" ".toc" ".out" ".idx" ".ilg" ".ind" ".tdo" ".bbl" ".aux" ".log"))
(projectile-mode-line '(:eval (format " [%s]" (projectile-project-name))))
(projectile-project-root-files-bottom-up
'(".projectile" ".hg" "_darcs" ".fslckout" "_FOSSIL_" ".bzr" ".git")))
(use-package projectile-ripgrep
:bind (:map projectile-command-map
("s s" . 'projectile-ripgrep))
:after projectile)
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;; direnv ;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package direnv
:config
(direnv-mode t))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;; Rust ;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; rustic
;(push 'rustic-clippy flycheck-checkers)
;; company mode
;;(add-hook 'rustic-mode-hook 'company-mode)
;;(add-hook 'rustic-mode-hook 'flymake-mode)
(use-package rustic
:after lsp-mode
:config
;; (add-to-list 'flycheck-checkers 'rustic-clippy)
(lsp-diagnostics-flycheck-enable)
(push 'rustic-clippy flycheck-checkers)
;; (flycheck-add-next-checker 'lsp 'rustic-clippy)
:custom
(rustic-format-trigger 'on-save)
(rustic-rustfmt-bin "rustfmt")
(rustic-flycheck-clippy-params "--message-format=json")
(lsp-rust-analyzer-server-display-inlay-hints t)
(lsp-rust-analyzer-cargo-watch-command "clippy")
(lsp-rust-analyzer-display-parameter-hints t)
(lsp-rust-analyzer-dispaly-chaining-hints t)
(lsp-rust-analyzer-proc-macro-enable t)
:hook
(rustic-mode . company-mode)
(rustic . lsp-rust-analyzer-inlay-hints-mode)
;;(rustic-mode . flymake-mode)
)
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;; beacon ;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package beacon
:diminish beacon-mode
:defer t
:init
(beacon-mode t)
:custom
(beacon-blink-delay 0.1)
(beacon-blink-duration 0.2)
(beacon-blink-when-focused t)
(beacon-blink-when-point-moves-horizontally 10)
(beacon-blink-when-point-moves-vertically 5)
(beacon-color "#2aa198")
(beacon-size 16))
(use-package highlight-indentation
:diminish highlight-indentation-mode
:commands highlight-indentation-mode
:defer t
:hook ((text-mode prog-mode) . highlight-indentation-mode)
:init
(progn
(defun set-hl-indent-color ()
(set-face-background 'highlight-indentation-face "#e3e3d3")
(set-face-background 'highlight-indentation-current-column-face "#c3b3b3"))
))
(use-package multiple-cursors
:bind (("C-S-c C-S-c" . mc/edit-lines)
("C->" . mc/mark-next-like-this)
("C-<" . mc/mark-previous-like-this)
("C-c C-<" . mc/mark/all-like-this)))
;; yas
(use-package yasnippet
:defer t
:diminish yas-minor-mode
:config
(yas-global-mode t))
;; dap
(use-package dap-mode
:after lsp-mode
:custom
(dap-mode t)
(dap-ui-mode t)
(require 'dap-cpptools))
;; flycheck
(use-package flycheck
:demand t
:custom
(flycheck-highlighting-mode 'sexps)
(flycheck-mode-line-prefix ""))
;; flyspell
(use-package flyspell
:defer t
:hook (prog-mode . flyspell-prog-mode)
:custom
(flyspell-mode-line-string nil))
;; pasp
(use-package pasp-mode
:mode
("\\.asp\\'" . pasp-mode)
("\\.lp\\'" . pasp-mode)
("\\.rls\\'" . pasp-mode))
;; sparql
(use-package sparql-mode)
;; json
(use-package json-mode
:defer t
:mode "\\.json\\'"
:hook (json-mode-hook . yas-minor-mode))
;; lsp
(use-package lsp-mode
:demand t
:after flycheck
:commands lsp
:preface
:hook (((
; ada-mode
clojure-mode
cmake-mode
c++-mode
css-mode
dockerfile-mode
js2-mode
f90-mode
html-mode
haskell-mode
java-mode
json-mode
lua-mode
markdown-mode
nix-mode
;; ocaml-mode
;; pascal-mode
;; perl-mode
;; php-mode
prolog-mode
python-mode
;; ess-mode
;; ruby-mode
rust-mode
sql-mode
rustic
typescript-mode
vue-mode
;; xml-mode
yaml-mode
web-mode
) . lsp)
(lsp-mode . flycheck-mode)
(sh-mode . (lambda ()
(unless (apply #'derived-mode-p '(direnv-envrc-mode))
(lsp-mode t)))))
:diminish eldoc-mode
:custom
;(lsp-keymap-prefix "C-c")
(lsp-eldoc-render-all nil)
(lsp-file-watch-threshold 5000)
(lsp-ui-doc-enable nil)
(lsp-ui-doc-border "#586e75")
(lsp-ui-doc-header t)
(lsp-ui-doc-include-signature t)
(lsp-rust-analyzer-server-display-inlay-hints t)
(lsp-rust-analyzer-inlay-hints-mode t)
(lsp-rust-analyzer-cargo-watch-command "clippy")
(lsp-keymap-prefix "C-l"))
;:custom-face
;(lsp-ui-sideline-code-action ((t (:foreground "#b58900"))))
;(lsp-ui-sideline-current-symbol ((t (:foreground "#d33682" :box (:line-width -1 :color "#d33682") :weight ultra-bold :height 0.99)))))
(use-package lsp-diagnostics
:after lsp-mode
:commands lsp-diagnostics-flycheck-enable)
(use-package lsp-ui)
;; misc
(use-package academic-phrases
:defer t
:commands
(academic-phrases
academic-phrases-by-section))
(use-package ligature
:config
(ligature-set-ligatures 'prog-mode
'("&&" "***" "*>" "\\\\" "||" "|>" "::"
; don't like eq-ligatures "==" "==="
"==>" "=>" "=<<" "!!" ">>"
">>=" ">>>" ">>-" ">-" "->" "-<" "-<<"
"<*" "<*>" "<|" "<|>" "<$>" "<>" "<-"
; disable ++ until > emacs-27.2, since C++-mode causes a crash otherwise
; "<<" "<<<" "<+>" ".." "..." "++" "+++"
"<<" "<<<" "<+>" ".." "..." "+++"
"/=" ":::" ">=>" "->>" "<=>" "<=<" "<->"))
(global-ligature-mode t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(default ((t (:slant normal :weight normal :height 144 :width normal :foundry "unknown" :family "Hasklug Nerd Font"))))
)

View File

@ -1,109 +0,0 @@
{ config, lib, pkgs, ... }:
let
defaultEl = ./default.el;
environment.systemPackages = [ pkgs.gdb ]; # use gdb for dap-mode
defaultConfig = pkgs.runCommand "default.el" { } ''
mkdir -p $out/share/emacs/site-lisp
cp ${defaultEl} $out/share/emacs/site-lisp/default.el
'';
emacsPackage = (pkgs.emacsPackagesGen pkgs.emacs).emacsWithPackages
(epkgs:
let
lpkgs = import ./packages.nix {
inherit config lib pkgs epkgs;
};
in
#[ (defaultConfig lpkgs) ] ++ (with pkgs; [
# aspell
# emacs-all-the-icons-fonts
# gnupg
# nixpkgs-fmt
#])
[(defaultConfig)] ++
[(with epkgs.elpaPackages; [
auctex
org
flymake
])]
++ (with epkgs.melpaStablePackages; [ ]) ++ (with epkgs.melpaPackages; [
ac-helm
academic-phrases
add-hooks
alert
all-the-icons
all-the-icons-dired
beacon
bln-mode
cargo-mode
company
company-auctex
company-bibtex
company-flx
company-quickhelp
company-reftex
cov
dap-mode
diminish
direnv
dockerfile-mode
docker-compose-mode
flycheck
free-keys
highlight-indentation
helm
helm-bbdb
helm-company
helm-flx
helm-descbinds
helm-lsp
helm-projectile
helm-rg
json-mode
less-css-mode
lsp-mode
lsp-ui
magit
moe-theme
multiple-cursors
nix-mode
nixpkgs-fmt
org-bullets
org-roam
#org-roam-server
pasp-mode
pdf-tools
projectile
projectile-ripgrep
rustic
spacemacs-theme
solarized-theme
sparql-mode
sudo-edit
use-package
#vscode-dark-plus-theme
yaml-mode
yasnippet
#zenburn-theme
] ++ (with lpkgs; [
org-roam-ui
ligatures
])));
in
{
services.emacs = {
enable = true;
defaultEditor = true;
package = emacsPackage;
};
#nixpkgs.overlays = [ (self: super: { emacsOrig = super.emacs; }) (import (builtins.fetchTarball {
# url = https://github.com/nix-community/emacs-overlay/archive/master.tar.gz;
#})) ];
#nixpkgs.overlays = [
# (import (builtins.fetchTarball {
# url = https://github.com/nix-community/emacs-overlay/archive/master.tar.gz;
# }))
#];
}

View File

@ -1,30 +0,0 @@
{ config, lib, pkgs, epkgs, ...}:
let
in
with epkgs; rec{
org-roam-ui = trivialBuild{
pname = "org-roam-ui";
version = "2021-10-06";
src = pkgs.fetchFromGitHub {
owner = "org-roam";
repo = "org-roam-ui";
rev = "bae6487afd5e6eec9f04b38b235bbac24042ca62";
sha256 = "14dbdvxf1l0dwbhc0ap3wr3ffafy4cxmwc9b7gm0gzzmcxvszisc";
};
packageRequires = [ f websocket org-roam simple-httpd ];
postInstall = ''
cp -r out $out/share/emacs/site-lisp
'';
};
ligatures = trivialBuild {
pname = "ligatures";
version = "unstable-2021-08-27";
src = pkgs.fetchFromGitHub {
owner = "mickeynp";
repo = "ligature.el";
rev = "d3426509cc5436a12484d91e48abd7b62429b7ef";
sha256 = "baFDkfQLM2MYW2QhMpPnOMSfsLlcp9fO5xfyioZzOqg=";
};
};
}

View File

@ -1,6 +0,0 @@
{ config, pkgs, lib, ...}:
{
environment.systemPackages = if config.variables.graphical then with pkgs; [
obs-studio
] else [ ] ;
}

View File

@ -1,13 +0,0 @@
{ config, lib, pkgs, ... }:
with pkgs;
let
my-python-packages = python-packages: with python-packages; [
pandas
requests
# other python packages you want
];
python-with-my-packages = python3.withPackages my-python-packages;
in
{
environment.systemPackages = [ python-with-my-packages ];
}

View File

@ -1,9 +0,0 @@
{ config, pkgs, lib, ...}:
{
imports = [
./nginx.nix
./smailserver.nix
./mariadb.nix
./nextcloud.nix
];
}

View File

@ -1,7 +0,0 @@
{ config, pkgs, lib, ...}:
{
services.mysql = {
enable = true;
package = pkgs.mariadb;
};
}

View File

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

View File

@ -1,9 +0,0 @@
{ config, pkgs, lib, ...}:
{
services.nginx.enable = true;
services.nginx.virtualHosts."localhost" = {
addSSL = false;
enableACME = false;
root = "/var/www/localhost";
};
}

View File

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