mirror of
https://forge.katzen.cafe/schrottkatze/nix-configs.git
synced 2024-11-05 15:16:23 +01:00
Compare commits
7 commits
01d070eb40
...
2a5e635c0d
Author | SHA1 | Date | |
---|---|---|---|
2a5e635c0d | |||
7bacabf0d3 | |||
9a7768ff5b | |||
ede1765ee8 | |||
7829fcd0ce | |||
193b006557 | |||
991cc8fc88 |
29
common.nix
29
common.nix
|
@ -29,9 +29,6 @@ with builtins; {
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
# pynitrokey
|
|
||||||
# nitrokey-app2
|
|
||||||
|
|
||||||
veracrypt
|
veracrypt
|
||||||
|
|
||||||
htmlq
|
htmlq
|
||||||
|
@ -90,29 +87,6 @@ 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 = {
|
||||||
|
@ -157,9 +131,6 @@ 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,18 +17,30 @@
|
||||||
../../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;
|
|
||||||
};
|
};
|
||||||
terminal.enable = true;
|
input.remapping = {
|
||||||
|
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 = {
|
||||||
|
@ -88,55 +100,15 @@
|
||||||
"/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.hostName = "catbook-j"; # Define your hostname.
|
# networking
|
||||||
# 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,24 +8,6 @@
|
||||||
../../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 = {
|
||||||
|
@ -46,16 +28,8 @@
|
||||||
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"];
|
||||||
};
|
};
|
||||||
|
@ -82,16 +56,6 @@
|
||||||
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,17 +116,8 @@
|
||||||
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,11 +2,9 @@
|
||||||
imports = [
|
imports = [
|
||||||
./shell
|
./shell
|
||||||
./desktop
|
./desktop
|
||||||
./terminal.nix
|
./hardware
|
||||||
./flatpak.nix
|
|
||||||
./firewall.nix
|
./firewall.nix
|
||||||
./git.nix
|
./desktop-environment
|
||||||
./kmscon.nix
|
./input
|
||||||
./mprocs.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
11
modules/desktop-environment/default.nix
Normal file
11
modules/desktop-environment/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./audio.nix
|
||||||
|
./compositing.nix
|
||||||
|
./dunst.nix
|
||||||
|
./panels
|
||||||
|
./xmonad
|
||||||
|
./terminal.nix
|
||||||
|
./flatpak.nix
|
||||||
|
];
|
||||||
|
}
|
16
modules/desktop-environment/flatpak.nix
Normal file
16
modules/desktop-environment/flatpak.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
# TODO
|
||||||
|
config.common.default = "*";
|
||||||
|
extraPortals = [
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
6
modules/desktop-environment/panels/default.nix
Normal file
6
modules/desktop-environment/panels/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./xmobar
|
||||||
|
./polybar.nix
|
||||||
|
];
|
||||||
|
}
|
33
modules/desktop-environment/panels/xmobar/default.nix
Normal file
33
modules/desktop-environment/panels/xmobar/default.nix
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
36
modules/desktop-environment/terminal.nix
Normal file
36
modules/desktop-environment/terminal.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{...}: {
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
25
modules/desktop-environment/xmonad/default.nix
Normal file
25
modules/desktop-environment/xmonad/default.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
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,25 +15,19 @@
|
||||||
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 = {
|
||||||
|
@ -52,32 +46,6 @@ 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 = {
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
{
|
|
||||||
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";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
18
modules/desktop/x.nix
Normal file
18
modules/desktop/x.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{...}: {
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
desktopManager = {
|
||||||
|
xterm.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
displayManager = {
|
||||||
|
defaultSession = "none+xmonad";
|
||||||
|
gdm.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
windowManager.xmonad = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,43 +0,0 @@
|
||||||
{
|
|
||||||
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;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
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
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -7,5 +7,6 @@
|
||||||
imports = [
|
imports = [
|
||||||
./spacenav.nix
|
./spacenav.nix
|
||||||
./wacom.nix
|
./wacom.nix
|
||||||
|
./hardware_key.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
20
modules/hardware/hardware_key.nix
Normal file
20
modules/hardware/hardware_key.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{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;
|
||||||
|
}
|
15
modules/input/default.nix
Normal file
15
modules/input/default.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./evremap.nix
|
||||||
|
];
|
||||||
|
services.xserver = {
|
||||||
|
xkb = {
|
||||||
|
layout = "us";
|
||||||
|
variant = "altgr-intl";
|
||||||
|
};
|
||||||
|
|
||||||
|
libinput = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
110
modules/input/evremap.nix
Normal file
110
modules/input/evremap.nix
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
{
|
||||||
|
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];
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
|
@ -6,6 +6,9 @@
|
||||||
./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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,26 @@
|
||||||
(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 = [
|
|
@ -1,49 +0,0 @@
|
||||||
{
|
|
||||||
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,3 +831,6 @@ 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;
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
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…
Reference in a new issue