mirror of
https://forge.katzen.cafe/schrottkatze/nix-configs.git
synced 2025-11-17 17:19:41 +01:00
Compare commits
No commits in common. "2a5e635c0dd9ac5ab0ee2e48fb7f1c113ca2a289" and "01d070eb400498971bbb5d70adb8f24b59c26e0a" have entirely different histories.
2a5e635c0d
...
01d070eb40
35 changed files with 336 additions and 340 deletions
29
common.nix
29
common.nix
|
|
@ -29,6 +29,9 @@ with builtins; {
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
|
# pynitrokey
|
||||||
|
# nitrokey-app2
|
||||||
|
|
||||||
veracrypt
|
veracrypt
|
||||||
|
|
||||||
htmlq
|
htmlq
|
||||||
|
|
@ -87,6 +90,29 @@ with builtins; {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
console.colors = [
|
||||||
|
"282828"
|
||||||
|
"cc241d"
|
||||||
|
"98971a"
|
||||||
|
"d79921"
|
||||||
|
"458588"
|
||||||
|
"b16286"
|
||||||
|
"689d6a"
|
||||||
|
"a89984"
|
||||||
|
"928374"
|
||||||
|
"fb4934"
|
||||||
|
"b8bb26"
|
||||||
|
"fabd2f"
|
||||||
|
"83a598"
|
||||||
|
"d3869b"
|
||||||
|
"8ec07c"
|
||||||
|
"ebdbb2"
|
||||||
|
];
|
||||||
|
|
||||||
|
# nitrokey
|
||||||
|
services.udev.packages = [pkgs.nitrokey-udev-rules];
|
||||||
|
services.pcscd.enable = true;
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
ssh.startAgent = false;
|
ssh.startAgent = false;
|
||||||
gnupg.agent = {
|
gnupg.agent = {
|
||||||
|
|
@ -131,6 +157,9 @@ with builtins; {
|
||||||
users.users.jade = {
|
users.users.jade = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = ["wheel" "input" "uinput" "libvirtd" "adbusers" "dialout" "plugdev" "wireshark"];
|
extraGroups = ["wheel" "input" "uinput" "libvirtd" "adbusers" "dialout" "plugdev" "wireshark"];
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOaE8TFsIazpn4OnHvHcRpOFr9FfvMaWOiEjmHsmnAoE cardno:000F_70CD7D05"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
zramSwap = {
|
zramSwap = {
|
||||||
|
|
|
||||||
|
|
@ -17,30 +17,18 @@
|
||||||
../../modules
|
../../modules
|
||||||
];
|
];
|
||||||
jade = {
|
jade = {
|
||||||
|
flatpak.enable = true;
|
||||||
desktop = {
|
desktop = {
|
||||||
|
compositing.enable = true;
|
||||||
syncthing.enable = true;
|
syncthing.enable = true;
|
||||||
kdeconnect.enable = true;
|
kdeconnect.enable = true;
|
||||||
cloud.enable = true;
|
cloud.enable = true;
|
||||||
social.enable = true;
|
social.enable = true;
|
||||||
mail.enable = true;
|
mail.enable = true;
|
||||||
gaming.enable = true;
|
gaming.enable = true;
|
||||||
|
evremap.enable = true;
|
||||||
};
|
};
|
||||||
input.remapping = {
|
terminal.enable = true;
|
||||||
enable = true;
|
|
||||||
devices."AT Translated Set 2 keyboard" = {
|
|
||||||
swapKeys = [
|
|
||||||
["KEY_Y" "KEY_Z"]
|
|
||||||
["KEY_LEFTALT" "KEY_LEFTMETA"]
|
|
||||||
];
|
|
||||||
dual_role = [
|
|
||||||
{
|
|
||||||
input = "KEY_CAPSLOCK";
|
|
||||||
hold = ["KEY_LEFTCTRL"];
|
|
||||||
tap = ["KEY_ESC"];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.trackpoint = {
|
hardware.trackpoint = {
|
||||||
|
|
@ -100,15 +88,55 @@
|
||||||
"/crypto_keyfile.bin" = null;
|
"/crypto_keyfile.bin" = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# nixpkgs = {
|
||||||
|
# overlays = [
|
||||||
|
# (self: super: {
|
||||||
|
# linux_zen_xeniafied = pkgs.linuxPackagesFor (pkgs.linuxKernel.kernels.linux_zen.override {
|
||||||
|
# structuredExtraConfig = with lib.kernel; {
|
||||||
|
# "FB" = yes;
|
||||||
|
# "FRAMEBUFFER_CONSOLE" = yes;
|
||||||
|
# "VGA_CONSOLE" = yes;
|
||||||
|
# "VIDEO_SELECT" = yes;
|
||||||
|
# LOGO = lib.mkForce yes;
|
||||||
|
# LOGO_LINUX_CLUT224 = yes;
|
||||||
|
# };
|
||||||
|
# ignoreConfigErrors = true;
|
||||||
|
# });
|
||||||
|
# })
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_zen;
|
boot.kernelPackages = pkgs.linuxPackages_zen;
|
||||||
|
# boot.kernelPatches = [
|
||||||
|
# {
|
||||||
|
# name = "fomx";
|
||||||
|
# patch = ../../other/0001-fomx.patch;
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
|
||||||
services.xserver.displayManager.autoLogin = {
|
services.xserver.displayManager.autoLogin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
user = "jade";
|
user = "jade";
|
||||||
};
|
};
|
||||||
|
|
||||||
# networking
|
networking.hostName = "catbook-j"; # Define your hostname.
|
||||||
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||||
|
|
||||||
|
# Configure network proxy if necessary
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
# Enable networking
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
networking.hostName = "catbook-j";
|
|
||||||
|
security.pam.services.jade.u2fAuth = true;
|
||||||
|
programs.i3lock.u2fSupport = true;
|
||||||
|
security.pam.u2f = {
|
||||||
|
enable = true;
|
||||||
|
cue = true;
|
||||||
|
control = "sufficient";
|
||||||
|
authFile = "/home/jade/.ssh/u2f_keys";
|
||||||
|
};
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
i18n.extraLocaleSettings = {
|
||||||
LC_ADDRESS = "de_DE.UTF-8";
|
LC_ADDRESS = "de_DE.UTF-8";
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,24 @@
|
||||||
../../modules
|
../../modules
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# nixpkgs = {
|
||||||
|
# overlays = [
|
||||||
|
# (self: super: {
|
||||||
|
# linux_zen_xeniafied = pkgs.linuxPackagesFor (pkgs.linuxKernel.kernels.linux_zen.override {
|
||||||
|
# structuredExtraConfig = with lib.kernel; {
|
||||||
|
# "FB" = yes;
|
||||||
|
# "FRAMEBUFFER_CONSOLE" = yes;
|
||||||
|
# "VGA_CONSOLE" = yes;
|
||||||
|
# "VIDEO_SELECT" = yes;
|
||||||
|
# LOGO = lib.mkForce yes;
|
||||||
|
# LOGO_LINUX_CLUT224 = yes;
|
||||||
|
# };
|
||||||
|
# ignoreConfigErrors = true;
|
||||||
|
# });
|
||||||
|
# })
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
jade = {
|
jade = {
|
||||||
flatpak.enable = true;
|
flatpak.enable = true;
|
||||||
desktop = {
|
desktop = {
|
||||||
|
|
@ -28,8 +46,16 @@
|
||||||
systemd-boot.enable = true;
|
systemd-boot.enable = true;
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
};
|
};
|
||||||
|
# latest linux kernel
|
||||||
|
#boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
#boot.kernelPackages = pkgs.linux_zen_xeniafied;
|
||||||
kernelPackages = pkgs.linuxPackages_zen;
|
kernelPackages = pkgs.linuxPackages_zen;
|
||||||
|
# boot.kernelPatches = [
|
||||||
|
# {
|
||||||
|
# name = "fomx";
|
||||||
|
# patch = ../other/0001-fomx.patch;
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
|
||||||
binfmt.emulatedSystems = ["aarch64-linux"];
|
binfmt.emulatedSystems = ["aarch64-linux"];
|
||||||
};
|
};
|
||||||
|
|
@ -56,6 +82,16 @@
|
||||||
enableRedistributableFirmware = true;
|
enableRedistributableFirmware = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
security.pam.services.jade.u2fAuth = true;
|
||||||
|
programs.i3lock.u2fSupport = true;
|
||||||
|
|
||||||
|
security.pam.u2f = {
|
||||||
|
enable = true;
|
||||||
|
cue = true;
|
||||||
|
control = "sufficient";
|
||||||
|
authFile = "/home/jade/.ssh/u2f_keys";
|
||||||
|
};
|
||||||
|
|
||||||
# missing: menu-qalc picom-jonaburg
|
# missing: menu-qalc picom-jonaburg
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# TODO: clean up.
|
# TODO: clean up.
|
||||||
|
|
|
||||||
|
|
@ -116,8 +116,17 @@
|
||||||
services.gnome.gnome-keyring.enable = true;
|
services.gnome.gnome-keyring.enable = true;
|
||||||
programs.seahorse.enable = true;
|
programs.seahorse.enable = true;
|
||||||
security.pam.services.jade.enableGnomeKeyring = true;
|
security.pam.services.jade.enableGnomeKeyring = true;
|
||||||
|
security.pam.services.jade.u2fAuth = true;
|
||||||
|
|
||||||
systemd.services."NetworkManager-wait-online".enable = false;
|
systemd.services."NetworkManager-wait-online".enable = false;
|
||||||
|
programs.i3lock.u2fSupport = true;
|
||||||
|
|
||||||
|
security.pam.u2f = {
|
||||||
|
enable = true;
|
||||||
|
cue = true;
|
||||||
|
control = "sufficient";
|
||||||
|
authFile = "/home/jade/.ssh/u2f_keys";
|
||||||
|
};
|
||||||
|
|
||||||
# services.pixiecore =
|
# services.pixiecore =
|
||||||
# let
|
# let
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,11 @@
|
||||||
imports = [
|
imports = [
|
||||||
./shell
|
./shell
|
||||||
./desktop
|
./desktop
|
||||||
./hardware
|
./terminal.nix
|
||||||
|
./flatpak.nix
|
||||||
./firewall.nix
|
./firewall.nix
|
||||||
./desktop-environment
|
./git.nix
|
||||||
./input
|
./kmscon.nix
|
||||||
|
./mprocs.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./audio.nix
|
|
||||||
./compositing.nix
|
|
||||||
./dunst.nix
|
|
||||||
./panels
|
|
||||||
./xmonad
|
|
||||||
./terminal.nix
|
|
||||||
./flatpak.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
# TODO
|
|
||||||
config.common.default = "*";
|
|
||||||
extraPortals = [
|
|
||||||
pkgs.xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./xmobar
|
|
||||||
./polybar.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home-manager.users.jade = {
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
xmobarGhc = pkgs.haskellPackages.ghcWithPackages (pkgs:
|
|
||||||
with pkgs; [
|
|
||||||
xmobar
|
|
||||||
statgrab
|
|
||||||
]);
|
|
||||||
in {
|
|
||||||
home = {
|
|
||||||
packages = [xmobarGhc];
|
|
||||||
file."xmobar.hs" = rec {
|
|
||||||
source = ./xmobar.hs;
|
|
||||||
target = ".config/xmobar/xmobar.hs";
|
|
||||||
onChange = ''
|
|
||||||
${xmobarGhc}/bin/ghc -threaded ${target}
|
|
||||||
${pkgs.busybox}/bin/pkill xmobar
|
|
||||||
${pkgs.haskellPackages.xmonad}/bin/xmonad --restart
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.xmobar = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
{...}: {
|
|
||||||
environment.sessionVariables = {
|
|
||||||
TERMINAL = "kitty";
|
|
||||||
};
|
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
font = {
|
|
||||||
name = "FiraCode Nerd Font";
|
|
||||||
size = 11;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
#adjust_column_width = "70%";
|
|
||||||
color0 = "#282828";
|
|
||||||
color8 = "#928374";
|
|
||||||
color1 = "#cc241d";
|
|
||||||
color9 = "#fb4934";
|
|
||||||
color2 = "#98971a";
|
|
||||||
color10 = "#b8bb26";
|
|
||||||
color3 = "#d79921";
|
|
||||||
color11 = "#fabd2f";
|
|
||||||
color4 = "#458588";
|
|
||||||
color12 = "#83a598";
|
|
||||||
color5 = "#b16286";
|
|
||||||
color13 = "#d3869b";
|
|
||||||
color6 = "#689d6a";
|
|
||||||
color14 = "#8ec07c";
|
|
||||||
color7 = "#a89984";
|
|
||||||
color15 = "#ebdbb2";
|
|
||||||
foreground = "#ebdbb2";
|
|
||||||
background = "#282828";
|
|
||||||
confirm_os_window_close = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home-manager.users.jade = {
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = [pkgs.xmonadctl];
|
|
||||||
xsession.windowManager.xmonad = {
|
|
||||||
enable = true;
|
|
||||||
enableContribAndExtras = true;
|
|
||||||
config = ./xmonad.hs;
|
|
||||||
};
|
|
||||||
home.file.wallpaper = {
|
|
||||||
target = "Pictures/wallpaper.jpg";
|
|
||||||
source = ../../../other/wallpaper.jpg;
|
|
||||||
onChange = ''
|
|
||||||
feh --bg-fill ~/Pictures/wallpaper.jpg;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -15,19 +15,25 @@
|
||||||
in
|
in
|
||||||
with lib; {
|
with lib; {
|
||||||
imports = [
|
imports = [
|
||||||
|
./audio.nix
|
||||||
./gaming.nix
|
./gaming.nix
|
||||||
./creative.nix # TODO: more fine grained choices, not every setup needs fspy or rawtherapee
|
./creative.nix # TODO: more fine grained choices, not every setup needs fspy or rawtherapee
|
||||||
|
./dunst.nix
|
||||||
|
./compositing.nix
|
||||||
./ios-compat.nix
|
./ios-compat.nix
|
||||||
./syncthing.nix
|
./syncthing.nix
|
||||||
./kdeconnect.nix
|
./kdeconnect.nix
|
||||||
./themeing.nix
|
./themeing.nix
|
||||||
./cloud.nix
|
./cloud.nix
|
||||||
./networking.nix
|
./networking.nix
|
||||||
|
./polybar.nix
|
||||||
./social.nix
|
./social.nix
|
||||||
./mail.nix
|
./mail.nix
|
||||||
|
./specific-hardware
|
||||||
|
./evremap.nix
|
||||||
|
./xmonad.nix
|
||||||
./fonts.nix
|
./fonts.nix
|
||||||
./firefox.nix
|
./firefox.nix
|
||||||
./x.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
i18n.inputMethod = {
|
i18n.inputMethod = {
|
||||||
|
|
@ -46,6 +52,32 @@ in
|
||||||
services = {
|
services = {
|
||||||
printing.enable = true;
|
printing.enable = true;
|
||||||
gnome.gnome-keyring.enable = true;
|
gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
xkb = {
|
||||||
|
layout = "us";
|
||||||
|
variant = "altgr-intl";
|
||||||
|
};
|
||||||
|
|
||||||
|
libinput = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
desktopManager = {
|
||||||
|
xterm.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
displayManager = {
|
||||||
|
defaultSession = "none+xmonad";
|
||||||
|
gdm.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
windowManager.xmonad = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.xss-lock = {
|
programs.xss-lock = {
|
||||||
|
|
|
||||||
39
modules/desktop/evremap.nix
Normal file
39
modules/desktop/evremap.nix
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.desktop.evremap;
|
||||||
|
evremap = pkgs.rustPlatform.buildRustPackage {
|
||||||
|
pname = "evremap";
|
||||||
|
version = "0.1.0";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "wez";
|
||||||
|
repo = "evremap";
|
||||||
|
rev = "4480c4eda223b98899b0fbd926bc34f7bd0e1a18";
|
||||||
|
sha256 = "sha256-BxSrphgW1n465FX6bKVkq6O0XE2JqanfSYlsGwWUWkQ=";
|
||||||
|
};
|
||||||
|
cargoHash = "";
|
||||||
|
cargoLock.lockFile = ../../other/evremap.Cargo.lock;
|
||||||
|
postPatch = ''
|
||||||
|
cp ${../../other/evremap.Cargo.lock} Cargo.lock
|
||||||
|
'';
|
||||||
|
nativeBuildInputs = [pkgs.pkg-config];
|
||||||
|
buildInputs = [pkgs.libevdev];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.desktop.evremap = {
|
||||||
|
enable = mkEnableOption "Enable evremap";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
systemd.services.evremap = {
|
||||||
|
script = "${evremap}/bin/evremap remap ${../../other/remaps-${config.networking.hostName}.toml}";
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
unitConfig = {
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,5 @@
|
||||||
imports = [
|
imports = [
|
||||||
./spacenav.nix
|
./spacenav.nix
|
||||||
./wacom.nix
|
./wacom.nix
|
||||||
./hardware_key.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
{...}: {
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
desktopManager = {
|
|
||||||
xterm.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
displayManager = {
|
|
||||||
defaultSession = "none+xmonad";
|
|
||||||
gdm.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
windowManager.xmonad = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
43
modules/desktop/xmonad.nix
Normal file
43
modules/desktop/xmonad.nix
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home-manager.users.jade = {
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
xmobarGhc = pkgs.haskellPackages.ghcWithPackages (pkgs:
|
||||||
|
with pkgs; [
|
||||||
|
xmobar
|
||||||
|
statgrab
|
||||||
|
]);
|
||||||
|
in {
|
||||||
|
home.packages = [xmobarGhc pkgs.xmonadctl];
|
||||||
|
programs.xmobar = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
home.file."xmobar.hs" = rec {
|
||||||
|
source = ../../haskell/xmobar/xmobar.hs;
|
||||||
|
target = ".config/xmobar/xmobar.hs";
|
||||||
|
onChange = ''
|
||||||
|
${xmobarGhc}/bin/ghc -threaded ${target}
|
||||||
|
${pkgs.busybox}/bin/pkill xmobar
|
||||||
|
${pkgs.haskellPackages.xmonad}/bin/xmonad --restart
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
xsession.windowManager.xmonad = {
|
||||||
|
enable = true;
|
||||||
|
enableContribAndExtras = true;
|
||||||
|
config = ../../haskell/xmonad/xmonad.hs;
|
||||||
|
};
|
||||||
|
home.file.wallpaper = {
|
||||||
|
target = "Pictures/wallpaper.jpg";
|
||||||
|
source = ../../other/wallpaper.jpg;
|
||||||
|
onChange = ''
|
||||||
|
feh --bg-fill ~/Pictures/wallpaper.jpg;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
24
modules/flatpak.nix
Normal file
24
modules/flatpak.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.flatpak;
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.flatpak = {
|
||||||
|
enable = mkEnableOption "Enable flatpak";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
# TODO
|
||||||
|
config.common.default = "*";
|
||||||
|
extraPortals = [
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
# nitrokey
|
|
||||||
services.udev.packages = [pkgs.nitrokey-udev-rules];
|
|
||||||
|
|
||||||
# smartcard daemon
|
|
||||||
services.pcscd.enable = true;
|
|
||||||
|
|
||||||
# authenticate using hw key
|
|
||||||
security.pam = {
|
|
||||||
services.jade.u2fAuth = true;
|
|
||||||
u2f = {
|
|
||||||
enable = true;
|
|
||||||
cue = true;
|
|
||||||
control = "sufficient";
|
|
||||||
authFile = "/home/jade/.ssh/u2f_keys";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.i3lock.u2fSupport = true;
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./evremap.nix
|
|
||||||
];
|
|
||||||
services.xserver = {
|
|
||||||
xkb = {
|
|
||||||
layout = "us";
|
|
||||||
variant = "altgr-intl";
|
|
||||||
};
|
|
||||||
|
|
||||||
libinput = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,110 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
utils,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cfg = config.jade.input.remapping;
|
|
||||||
evremap = pkgs.rustPlatform.buildRustPackage {
|
|
||||||
pname = "evremap";
|
|
||||||
version = "0.1.0";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "wez";
|
|
||||||
repo = "evremap";
|
|
||||||
rev = "4480c4eda223b98899b0fbd926bc34f7bd0e1a18";
|
|
||||||
sha256 = "sha256-BxSrphgW1n465FX6bKVkq6O0XE2JqanfSYlsGwWUWkQ=";
|
|
||||||
};
|
|
||||||
cargoHash = "";
|
|
||||||
cargoLock.lockFile = ../../other/evremap.Cargo.lock;
|
|
||||||
postPatch = ''
|
|
||||||
cp ${../../other/evremap.Cargo.lock} Cargo.lock
|
|
||||||
'';
|
|
||||||
nativeBuildInputs = [pkgs.pkg-config];
|
|
||||||
buildInputs = [pkgs.libevdev];
|
|
||||||
};
|
|
||||||
toml = pkgs.formats.toml {};
|
|
||||||
in
|
|
||||||
with lib; {
|
|
||||||
options.jade.input.remapping = {
|
|
||||||
enable = mkEnableOption "Enable evremap";
|
|
||||||
devices = mkOption {
|
|
||||||
type = types.attrsOf (types.submodule ({name, ...}: {
|
|
||||||
options = {
|
|
||||||
device_name = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
description = "The device name";
|
|
||||||
default = name;
|
|
||||||
};
|
|
||||||
remap = mkOption {
|
|
||||||
type = types.listOf (types.submodule ({...}: {
|
|
||||||
options.input = mkOption {type = types.listOf types.str;};
|
|
||||||
options.output = mkOption {type = types.listOf types.str;};
|
|
||||||
}));
|
|
||||||
default = [];
|
|
||||||
};
|
|
||||||
swapKeys = mkOption {
|
|
||||||
description = "Lists with two keys to be swapped on the keyboard layout.";
|
|
||||||
type = types.listOf (
|
|
||||||
# verify that each key swapping list contains two elements
|
|
||||||
types.addCheck (types.listOf types.str) (v: builtins.length v == 2)
|
|
||||||
);
|
|
||||||
default = [];
|
|
||||||
};
|
|
||||||
dual_role = mkOption {
|
|
||||||
type = types.listOf (types.submodule ({...}: {
|
|
||||||
options.input = mkOption {type = types.str;};
|
|
||||||
options.hold = mkOption {type = types.listOf types.str;};
|
|
||||||
options.tap = mkOption {type = types.listOf types.str;};
|
|
||||||
}));
|
|
||||||
default = [];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable (
|
|
||||||
with builtins; let
|
|
||||||
devs = map ({
|
|
||||||
device_name,
|
|
||||||
remap,
|
|
||||||
swapKeys,
|
|
||||||
dual_role,
|
|
||||||
}: {
|
|
||||||
inherit device_name dual_role;
|
|
||||||
|
|
||||||
# expand swapKeys to normal remaps
|
|
||||||
remap = concatLists [
|
|
||||||
remap
|
|
||||||
(lib.lists.flatten (map (keys: [
|
|
||||||
{
|
|
||||||
input = [(head keys)];
|
|
||||||
output = [(lib.lists.last keys)];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
input = [(lib.lists.last keys)];
|
|
||||||
output = [(head keys)];
|
|
||||||
}
|
|
||||||
])
|
|
||||||
swapKeys))
|
|
||||||
];
|
|
||||||
}) (attrValues cfg.devices);
|
|
||||||
in {
|
|
||||||
# generate numbered systemd services for each device to be remapped
|
|
||||||
# https://github.com/wez/evremap/issues/17
|
|
||||||
systemd.services = listToAttrs (genList (i: {
|
|
||||||
name = "evremap${toString i}";
|
|
||||||
value = let
|
|
||||||
cfgFile = toml.generate "remaps-${toString i}.toml" (elemAt devs i);
|
|
||||||
in {
|
|
||||||
script = "${evremap}/bin/evremap remap ${cfgFile}";
|
|
||||||
wantedBy = ["multi-user.target"];
|
|
||||||
unitConfig = {
|
|
||||||
Restart = "on-failure";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}) (length devs));
|
|
||||||
environment.systemPackages = [evremap];
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -34,26 +34,6 @@
|
||||||
(getAttr (substring 5 2 (toUpper color)) hexLookupTable)
|
(getAttr (substring 5 2 (toUpper color)) hexLookupTable)
|
||||||
]);
|
]);
|
||||||
in {
|
in {
|
||||||
# TODO: global colorscheme vars for everything
|
|
||||||
console.colors = [
|
|
||||||
"282828"
|
|
||||||
"cc241d"
|
|
||||||
"98971a"
|
|
||||||
"d79921"
|
|
||||||
"458588"
|
|
||||||
"b16286"
|
|
||||||
"689d6a"
|
|
||||||
"a89984"
|
|
||||||
"928374"
|
|
||||||
"fb4934"
|
|
||||||
"b8bb26"
|
|
||||||
"fabd2f"
|
|
||||||
"83a598"
|
|
||||||
"d3869b"
|
|
||||||
"8ec07c"
|
|
||||||
"ebdbb2"
|
|
||||||
];
|
|
||||||
|
|
||||||
services.kmscon = {
|
services.kmscon = {
|
||||||
enable = true;
|
enable = true;
|
||||||
fonts = [
|
fonts = [
|
||||||
|
|
@ -6,9 +6,6 @@
|
||||||
./zellij.nix
|
./zellij.nix
|
||||||
./carapace.nix
|
./carapace.nix
|
||||||
./direnv.nix
|
./direnv.nix
|
||||||
./tty.nix
|
|
||||||
./git.nix
|
|
||||||
./mprocs.nix
|
|
||||||
];
|
];
|
||||||
programs.mosh.enable = true;
|
programs.mosh.enable = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
49
modules/terminal.nix
Normal file
49
modules/terminal.nix
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.terminal;
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.terminal = {
|
||||||
|
enable = mkEnableOption "Enable Kitty";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.sessionVariables = rec {
|
||||||
|
TERMINAL = "kitty";
|
||||||
|
};
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
font = {
|
||||||
|
name = "FiraCode Nerd Font";
|
||||||
|
size = 11;
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
#adjust_column_width = "70%";
|
||||||
|
color0 = "#282828";
|
||||||
|
color8 = "#928374";
|
||||||
|
color1 = "#cc241d";
|
||||||
|
color9 = "#fb4934";
|
||||||
|
color2 = "#98971a";
|
||||||
|
color10 = "#b8bb26";
|
||||||
|
color3 = "#d79921";
|
||||||
|
color11 = "#fabd2f";
|
||||||
|
color4 = "#458588";
|
||||||
|
color12 = "#83a598";
|
||||||
|
color5 = "#b16286";
|
||||||
|
color13 = "#d3869b";
|
||||||
|
color6 = "#689d6a";
|
||||||
|
color14 = "#8ec07c";
|
||||||
|
color7 = "#a89984";
|
||||||
|
color15 = "#ebdbb2";
|
||||||
|
foreground = "#ebdbb2";
|
||||||
|
background = "#282828";
|
||||||
|
confirm_os_window_close = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -831,6 +831,3 @@ alias cr = cargo run;
|
||||||
alias cl = cargo clippy;
|
alias cl = cargo clippy;
|
||||||
alias cb = cargo build;
|
alias cb = cargo build;
|
||||||
alias cch = cargo check;
|
alias cch = cargo check;
|
||||||
|
|
||||||
alias togglecaps = xdotool key Caps_Lock;
|
|
||||||
alias TOGGLECAPS = togglecaps;
|
|
||||||
|
|
|
||||||
22
other/remaps-catbook-j.toml
Normal file
22
other/remaps-catbook-j.toml
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
device_name = "AT Translated Set 2 keyboard"
|
||||||
|
|
||||||
|
[[remap]]
|
||||||
|
input = [ "KEY_Y" ]
|
||||||
|
output = [ "KEY_Z" ]
|
||||||
|
|
||||||
|
[[remap]]
|
||||||
|
input = [ "KEY_Z" ]
|
||||||
|
output = [ "KEY_Y" ]
|
||||||
|
|
||||||
|
[[remap]]
|
||||||
|
input = [ "KEY_LEFTALT" ]
|
||||||
|
output = [ "KEY_LEFTMETA" ]
|
||||||
|
|
||||||
|
[[remap]]
|
||||||
|
input = [ "KEY_LEFTMETA" ]
|
||||||
|
output = [ "KEY_LEFTALT" ]
|
||||||
|
|
||||||
|
[[dual_role]]
|
||||||
|
input = "KEY_CAPSLOCK"
|
||||||
|
hold = ["KEY_LEFTCTRL"]
|
||||||
|
tap = ["KEY_ESC"]
|
||||||
Loading…
Add table
Add a link
Reference in a new issue