Compare commits
No commits in common. "main" and "push-pqvqptxrrmyk" have entirely different histories.
main
...
push-pqvqp
172 changed files with 90274 additions and 8385 deletions
2
.envrc
2
.envrc
|
@ -1 +1 @@
|
||||||
use flake --log-format multiline-with-logs
|
use flake
|
||||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,5 +1,2 @@
|
||||||
result
|
result
|
||||||
.direnv/
|
.direnv/
|
||||||
programs/*/target
|
|
||||||
target
|
|
||||||
*openapi.json
|
|
||||||
|
|
2048
Cargo.lock
generated
2048
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -1,5 +0,0 @@
|
||||||
[workspace]
|
|
||||||
resolver = "2"
|
|
||||||
members = [ "programs/bar-pinger", "programs/bar-ws-monitor", "programs/flip-bool",
|
|
||||||
"programs/jrnl"
|
|
||||||
, "programs/traveldings"]
|
|
|
@ -1,47 +0,0 @@
|
||||||
#!/usr/bin/env nu
|
|
||||||
|
|
||||||
def main [] {}
|
|
||||||
|
|
||||||
def "main find" [
|
|
||||||
file: string
|
|
||||||
] {
|
|
||||||
open $file --raw
|
|
||||||
| lines
|
|
||||||
| enumerate
|
|
||||||
| update item {|it| $it.item | parse '{current}#:{name}:-{template}-:#' }
|
|
||||||
| filter {|it| $it.item | is-not-empty}
|
|
||||||
| flatten -a
|
|
||||||
| rename -c { index: line }
|
|
||||||
}
|
|
||||||
|
|
||||||
# TODO: support mroe then single template
|
|
||||||
def "main edit" [
|
|
||||||
file: path
|
|
||||||
name: string
|
|
||||||
to: string
|
|
||||||
--preview
|
|
||||||
] {
|
|
||||||
let template = main find $file
|
|
||||||
| where name == $name
|
|
||||||
| first;
|
|
||||||
let new = $template.template
|
|
||||||
| str replace $"%($name)%" $to
|
|
||||||
| append $" #:($template.name):-($template.template)-:#"
|
|
||||||
| str join;
|
|
||||||
let rest = open $file --raw
|
|
||||||
| lines
|
|
||||||
| enumerate
|
|
||||||
| where index != $template.line
|
|
||||||
| append { index: $template.line, item: $new}
|
|
||||||
| sort-by index
|
|
||||||
| reject index
|
|
||||||
| get item
|
|
||||||
| append ""
|
|
||||||
| str join "\n";
|
|
||||||
|
|
||||||
if $preview {
|
|
||||||
print $rest
|
|
||||||
} else {
|
|
||||||
$rest | save -f $file
|
|
||||||
}
|
|
||||||
}
|
|
143
common.nix
143
common.nix
|
@ -2,31 +2,43 @@
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
niri,
|
|
||||||
lix-module,
|
|
||||||
rs-programs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
with builtins;
|
with builtins; {
|
||||||
{
|
nix = {
|
||||||
imports = [ lix-module.nixosModules.default ];
|
package = pkgs.nixVersions.stable;
|
||||||
|
extraOptions = ''
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
keep-outputs = true
|
||||||
|
keep-derivations = true
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
permittedInsecurePackages = [
|
||||||
|
"nodejs-16.20.0"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
nixfmt-rfc-style
|
# pynitrokey
|
||||||
overskride
|
# nitrokey-app2
|
||||||
transmission_4-gtk
|
|
||||||
|
veracrypt
|
||||||
|
|
||||||
htmlq
|
htmlq
|
||||||
|
|
||||||
ausweisapp
|
|
||||||
prusa-slicer
|
|
||||||
wget
|
wget
|
||||||
git
|
git
|
||||||
hyfetch
|
neofetch
|
||||||
pciutils
|
pciutils
|
||||||
zip
|
zip
|
||||||
unzip
|
unzip
|
||||||
|
@ -34,55 +46,73 @@ with builtins;
|
||||||
iw
|
iw
|
||||||
btop
|
btop
|
||||||
nodejs
|
nodejs
|
||||||
|
jdk8
|
||||||
cmatrix
|
jdk11
|
||||||
|
jdk
|
||||||
|
libsecret
|
||||||
|
gh
|
||||||
|
nix-prefetch-scripts
|
||||||
|
fzf
|
||||||
|
glab
|
||||||
|
ripgrep
|
||||||
sl
|
sl
|
||||||
lolcat
|
lolcat
|
||||||
cool-retro-term
|
|
||||||
|
|
||||||
jetbrains.idea-ultimate
|
|
||||||
jdk
|
|
||||||
|
|
||||||
libsecret
|
|
||||||
fzf
|
|
||||||
ripgrep
|
|
||||||
appimage-run
|
appimage-run
|
||||||
git-crypt
|
git-crypt
|
||||||
file
|
file
|
||||||
whois
|
whois
|
||||||
p7zip
|
p7zip
|
||||||
file
|
file
|
||||||
|
nmap
|
||||||
|
cmatrix
|
||||||
tree
|
tree
|
||||||
socat
|
socat
|
||||||
smartmontools
|
smartmontools
|
||||||
mprocs
|
mprocs
|
||||||
dig
|
dig
|
||||||
aria2
|
aria2
|
||||||
cyme
|
usbutils
|
||||||
numbat
|
numbat
|
||||||
devd
|
|
||||||
|
|
||||||
libjxl
|
|
||||||
|
|
||||||
s10e-jrnl
|
|
||||||
|
|
||||||
ungoogled-chromium
|
|
||||||
scc
|
|
||||||
speedtest-rs
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.graphics.enable = true;
|
networking = {
|
||||||
|
networkmanager = {
|
||||||
services = {
|
|
||||||
systemd-lock-handler.enable = true;
|
|
||||||
openssh = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
settings.PasswordAuthentication = false;
|
|
||||||
settings.KbdInteractiveAuthentication = false;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
openssh = {
|
||||||
|
enable = true;
|
||||||
|
# settings.PasswordAuthentication = false;
|
||||||
|
# settings.KbdInteractiveAuthentication = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
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 = {
|
||||||
|
@ -94,32 +124,41 @@ with builtins;
|
||||||
mtr.enable = true;
|
mtr.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.gpgSmartcards.enable = true;
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
|
home-manager.users.jade = {
|
||||||
|
nixosConfig,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.sessionVariables.TZ = nixosConfig.time.timeZone;
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.config.packageOverrides = pkgs: {
|
||||||
|
sudo = pkgs.sudo.override {withInsults = true;};
|
||||||
|
};
|
||||||
|
security.sudo.extraConfig = "Defaults insults";
|
||||||
|
|
||||||
boot.kernel.sysctl."vm.max_map_count" = 2147483642;
|
boot.kernel.sysctl."vm.max_map_count" = 2147483642;
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
|
opengl.enable = true;
|
||||||
uinput.enable = true;
|
uinput.enable = true;
|
||||||
bluetooth.enable = true;
|
bluetooth.enable = true;
|
||||||
|
# keyboard.uhk.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.avahi = {
|
||||||
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
users.users.jade = {
|
users.users.jade = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = [
|
extraGroups = ["wheel" "input" "uinput" "libvirtd" "adbusers" "dialout" "plugdev" "wireshark"];
|
||||||
"wheel"
|
|
||||||
"input"
|
|
||||||
"uinput"
|
|
||||||
"libvirtd"
|
|
||||||
"adbusers"
|
|
||||||
"dialout"
|
|
||||||
"plugdev"
|
|
||||||
"wireshark"
|
|
||||||
];
|
|
||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOaE8TFsIazpn4OnHvHcRpOFr9FfvMaWOiEjmHsmnAoE cardno:000F_70CD7D05"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOaE8TFsIazpn4OnHvHcRpOFr9FfvMaWOiEjmHsmnAoE cardno:000F_70CD7D05"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg7hhAKxIAbokHHcIj9HBgbkgoKGCG2R+gx7HZKL+iz cardno:000F_93C6A612"
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -127,4 +166,6 @@ with builtins;
|
||||||
enable = true;
|
enable = true;
|
||||||
algorithm = "zstd";
|
algorithm = "zstd";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
users.defaultUserShell = pkgs.nushellFull;
|
||||||
}
|
}
|
||||||
|
|
1146
flake.lock
generated
1146
flake.lock
generated
File diff suppressed because it is too large
Load diff
233
flake.nix
233
flake.nix
|
@ -3,151 +3,118 @@
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-unstable";
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||||
nixpkgs-stable.url = "nixpkgs/nixos-24.11";
|
nixpkgs-stable.url = "nixpkgs/nixos-23.11";
|
||||||
nixpkgs-unstable-small.url = "nixpkgs/nixos-unstable-small";
|
|
||||||
niri.url = "github:sodiboo/niri-flake";
|
|
||||||
stylix.url = "github:danth/stylix";
|
|
||||||
typst-within.url = "github:schrottkatze/typst";
|
|
||||||
crane.url = "github:ipetkov/crane";
|
|
||||||
nixcord.url = "github:kaylorben/nixcord";
|
|
||||||
lix-module = {
|
|
||||||
url = "git+https://git.lix.systems/lix-project/nixos-module";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
fenix = {
|
nixos-hardware.url = "github:networkException/nixos-hardware/apple-t2-init";
|
||||||
url = "github:nix-community/fenix";
|
mac-brcm-fw = {
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
url = "path:/home/jade/nix-configs/mac-brcm-fw";
|
||||||
|
flake = false;
|
||||||
};
|
};
|
||||||
|
#mms.url = "github:mkaito/nixos-modded-minecraft-servers";
|
||||||
|
easymacros.url = "git+https://gitlab.com/obsidianical/easymacros.git";
|
||||||
|
meowsite.url = "git+https://gitlab.com/obsidianical/meowsite.git";
|
||||||
|
wordsofgod.url = "git+https://gitlab.com/obsidianical/wordsofgod.git";
|
||||||
|
karton.url = "git+https://gitlab.com/obsidianical/microbin.git";
|
||||||
|
arion.url = "github:hercules-ci/arion";
|
||||||
|
gumseite.url = "git+https://gitlab.com/schrottkatze/gum-schulsachen.git";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs = {
|
||||||
{
|
self,
|
||||||
self,
|
nixpkgs,
|
||||||
nixpkgs,
|
nixpkgs-stable,
|
||||||
nixpkgs-stable,
|
home-manager,
|
||||||
nixpkgs-unstable-small,
|
nixos-hardware,
|
||||||
lix-module,
|
mac-brcm-fw,
|
||||||
typst-within,
|
...
|
||||||
home-manager,
|
} @ inputs: let
|
||||||
nixos-hardware,
|
pkgs = nixpkgs.legacyPackages."x86_64-linux";
|
||||||
niri,
|
in {
|
||||||
stylix,
|
devShells."x86_64-linux".default = pkgs.mkShell {
|
||||||
fenix,
|
buildInputs = [
|
||||||
crane,
|
(pkgs.haskellPackages.ghcWithPackages
|
||||||
...
|
(pkgs:
|
||||||
}@inputs:
|
with pkgs; [
|
||||||
let
|
xmonad
|
||||||
system = "x86_64-linux";
|
xmonad-contrib
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
xmobar
|
||||||
pkgs-stable = nixpkgs-stable.legacyPackages.${system};
|
statgrab
|
||||||
pkgs-unstable-small = nixpkgs-unstable-small.legacyPackages.${system};
|
]))
|
||||||
rs-toolchain =
|
pkgs.haskell-language-server
|
||||||
with fenix.packages.${system};
|
];
|
||||||
combine [
|
};
|
||||||
complete.toolchain
|
nixosConfigurations = {
|
||||||
];
|
monosodium-glutamate-g = nixpkgs.lib.nixosSystem {
|
||||||
crane-lib = (crane.mkLib nixpkgs.legacyPackages.${system}).overrideToolchain rs-toolchain;
|
specialArgs = {
|
||||||
rs-programs = final: prev: {
|
inherit inputs;
|
||||||
s10e-jrnl = crane-lib.buildPackage {
|
|
||||||
pname = "s10e-bs";
|
|
||||||
version = "0.0.1";
|
|
||||||
src = crane-lib.cleanCargoSource (crane-lib.path ./.);
|
|
||||||
};
|
};
|
||||||
};
|
system = "x86_64-linux";
|
||||||
in
|
modules = [
|
||||||
{
|
./hosts/monosodium-glutamate-g/configuration.nix
|
||||||
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style;
|
home-manager.nixosModules.home-manager
|
||||||
devShells."x86_64-linux".default = pkgs.mkShell {
|
{
|
||||||
buildInputs = [
|
home-manager.useGlobalPkgs = true;
|
||||||
rs-toolchain
|
home-manager.useUserPackages = true;
|
||||||
pkgs.pkg-config
|
home-manager.users.jade = {
|
||||||
pkgs.glsl_analyzer
|
nixosConfig,
|
||||||
pkgs.openssl
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.sessionVariables.TZ = nixosConfig.time.timeZone;
|
||||||
|
home.stateVersion = "${nixosConfig.system.stateVersion}";
|
||||||
|
};
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
nixosConfigurations = {
|
catbook-j = nixpkgs.lib.nixosSystem {
|
||||||
monosodium-glutamate-g = nixpkgs.lib.nixosSystem {
|
specialArgs = {
|
||||||
specialArgs = {
|
inherit inputs;
|
||||||
inherit
|
|
||||||
inputs
|
|
||||||
pkgs-unstable-small
|
|
||||||
pkgs-stable
|
|
||||||
rs-programs
|
|
||||||
lix-module
|
|
||||||
niri
|
|
||||||
;
|
|
||||||
};
|
|
||||||
system = "x86_64-linux";
|
|
||||||
modules = [
|
|
||||||
inputs.niri.nixosModules.niri
|
|
||||||
stylix.nixosModules.stylix
|
|
||||||
./hosts/monosodium-glutamate-g/configuration.nix
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
home-manager.extraSpecialArgs = {
|
|
||||||
inherit pkgs-unstable-small pkgs-stable typst-within;
|
|
||||||
};
|
|
||||||
home-manager.sharedModules = [
|
|
||||||
inputs.nixcord.homeManagerModules.nixcord
|
|
||||||
];
|
|
||||||
home-manager.users.jade =
|
|
||||||
{
|
|
||||||
nixosConfig,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
home.sessionVariables.TZ = nixosConfig.time.timeZone;
|
|
||||||
home.stateVersion = "${nixosConfig.system.stateVersion}";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
denkbrett = nixpkgs.lib.nixosSystem {
|
system = "x86_64-linux";
|
||||||
specialArgs = {
|
modules = [
|
||||||
inherit
|
./hosts/catbook-j/configuration.nix
|
||||||
inputs
|
home-manager.nixosModules.home-manager
|
||||||
pkgs-unstable-small
|
{
|
||||||
pkgs-stable
|
home-manager.useGlobalPkgs = true;
|
||||||
rs-programs
|
home-manager.useUserPackages = true;
|
||||||
lix-module
|
home-manager.users.jade = {
|
||||||
niri
|
nixosConfig,
|
||||||
;
|
pkgs,
|
||||||
};
|
...
|
||||||
system = "x86_64-linux";
|
}: {
|
||||||
modules = [
|
home.sessionVariables.TZ = nixosConfig.time.timeZone;
|
||||||
inputs.niri.nixosModules.niri
|
home.stateVersion = "22.11";
|
||||||
stylix.nixosModules.stylix
|
};
|
||||||
./hosts/denkbrett/configuration.nix
|
}
|
||||||
home-manager.nixosModules.home-manager
|
];
|
||||||
{
|
};
|
||||||
home-manager.useGlobalPkgs = true;
|
potatobook-g = nixpkgs.lib.nixosSystem {
|
||||||
home-manager.useUserPackages = true;
|
specialArgs = {
|
||||||
home-manager.extraSpecialArgs = {
|
inherit inputs;
|
||||||
inherit pkgs-unstable-small pkgs-stable typst-within;
|
|
||||||
};
|
|
||||||
home-manager.sharedModules = [
|
|
||||||
inputs.nixcord.homeManagerModules.nixcord
|
|
||||||
];
|
|
||||||
home-manager.users.jade =
|
|
||||||
{
|
|
||||||
nixosConfig,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
home.sessionVariables.TZ = nixosConfig.time.timeZone;
|
|
||||||
home.stateVersion = "22.11";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
"${mac-brcm-fw}"
|
||||||
|
./hosts/potatobook-g/configuration.nix
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.users.jade = {
|
||||||
|
nixosConfig,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.sessionVariables.TZ = nixosConfig.time.timeZone;
|
||||||
|
home.stateVersion = "${nixosConfig.system.stateVersion}";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
nixos-hardware.nixosModules.apple-t2
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
47
haskell/xmobar/xmobar.hs
Normal file
47
haskell/xmobar/xmobar.hs
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
import Xmobar
|
||||||
|
import System.Statgrab
|
||||||
|
|
||||||
|
-- TODOS:
|
||||||
|
-- - custom cpu module
|
||||||
|
-- - custom mem module
|
||||||
|
-- - custom network/ping module with avg of n pings and blah
|
||||||
|
-- - custom graph rendering based on braille characters
|
||||||
|
-- - custom "ramp" thingies
|
||||||
|
-- - newsticker?
|
||||||
|
-- - mail/message monitoring
|
||||||
|
-- - if possible, different bars per workspace
|
||||||
|
|
||||||
|
data CustomCpu = CustomCpu
|
||||||
|
deriving (Read, Show)
|
||||||
|
|
||||||
|
instance Exec CustomCpu where
|
||||||
|
alias CustomCpu = "cpu"
|
||||||
|
run CustomCpu = do
|
||||||
|
-- return (show :: IO String (snapshot :: Stats CPUPercent))
|
||||||
|
return "meow"
|
||||||
|
|
||||||
|
fc code content = "<fc=" ++ code ++ ">" ++ content ++ "</fc>"
|
||||||
|
|
||||||
|
sep = fc "#7c6f64"
|
||||||
|
icon = fc "#d65d0e"
|
||||||
|
|
||||||
|
config :: Config
|
||||||
|
config =
|
||||||
|
defaultConfig
|
||||||
|
{ font = "FiraCode Nerd Font",
|
||||||
|
allDesktops = True,
|
||||||
|
alpha = 255,
|
||||||
|
bgColor = "#282828",
|
||||||
|
fgColor = "#ebdbb2",
|
||||||
|
commands =
|
||||||
|
[ Run $ Xmobar.Memory ["t", "Mem: <usedratio>%"] 10,
|
||||||
|
Run $ CustomCpu,
|
||||||
|
Run $ Date (icon "\983277" ++ " %Y" ++ sep "-" ++ "%m" ++ sep "-" ++ "%d " ++ icon "\988236" ++ " %H" ++ sep ":" ++ "%M" ++ sep ":" ++ "%S ") "date" 10
|
||||||
|
],
|
||||||
|
template = "%memory% }{ %cpu% }{ %date%",
|
||||||
|
alignSep = "}{",
|
||||||
|
position = TopH 24
|
||||||
|
}
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = xmobar config -- or: configFromArgs config >>= xmobar
|
172
haskell/xmonad/xmonad.hs
Normal file
172
haskell/xmonad/xmonad.hs
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
import Control.Monad (when)
|
||||||
|
import Data.Map qualified as M
|
||||||
|
import Data.Monoid
|
||||||
|
import Data.Ratio
|
||||||
|
import Graphics.X11.ExtraTypes.XF86
|
||||||
|
import System.Exit
|
||||||
|
import XMonad
|
||||||
|
import XMonad.Actions.KeyRemap
|
||||||
|
import XMonad.Hooks.EwmhDesktops
|
||||||
|
import XMonad.Hooks.ManageDocks
|
||||||
|
import XMonad.Hooks.StatusBar
|
||||||
|
import XMonad.Hooks.StatusBar.PP
|
||||||
|
import XMonad.Layout.Circle
|
||||||
|
import XMonad.Layout.DraggingVisualizer
|
||||||
|
import XMonad.Layout.Grid
|
||||||
|
import XMonad.Layout.IfMax
|
||||||
|
import XMonad.Layout.Magnifier
|
||||||
|
import XMonad.Layout.Spacing
|
||||||
|
import XMonad.Layout.Tabbed
|
||||||
|
import XMonad.Layout.ThreeColumns
|
||||||
|
import XMonad.Layout.VoidBorders
|
||||||
|
import XMonad.Layout.WindowSwitcherDecoration
|
||||||
|
import XMonad.Prompt
|
||||||
|
import XMonad.Prompt.Layout
|
||||||
|
import XMonad.StackSet qualified as W
|
||||||
|
import XMonad.Actions.NoBorders
|
||||||
|
import XMonad.Util.EZConfig
|
||||||
|
import XMonad.Hooks.ServerMode
|
||||||
|
|
||||||
|
myKeys conf@(XConfig {XMonad.modMask = modm}) =
|
||||||
|
M.fromList $
|
||||||
|
[ ((modm, xK_Return), spawn $ XMonad.terminal conf),
|
||||||
|
((modm .|. shiftMask, xK_q), kill),
|
||||||
|
-- -- Rotate through the available layout algorithms
|
||||||
|
((modm, xK_space), sendMessage NextLayout),
|
||||||
|
-- rofiing
|
||||||
|
((modm, xK_d), spawn "rofi -show drun"),
|
||||||
|
((modm .|. shiftMask, xK_e), spawn "rofi -show desktopctl -modes desktopctl:desktopctl -show-icons"),
|
||||||
|
((modm, xK_m), spawn "menu-qalc -- -theme gruvbox-dark"),
|
||||||
|
((modm, xK_i), spawn "rofimoji --selector-args '-theme gruvbox-dark' -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy"),
|
||||||
|
-- screenshotting
|
||||||
|
-- TODO: Fix/rewrite window-screenshot
|
||||||
|
((modm, xK_w), spawn "window-screenshot.nu"),
|
||||||
|
((modm, xK_s), spawn "flameshot gui -c -p $HOME/Pictures/screenshots"),
|
||||||
|
((modm, xK_a), spawn "flameshot screen -c -p $HOME/Pictures/screenshots"),
|
||||||
|
((modm, xK_t), spawn "ocr-screenshot.sh"),
|
||||||
|
((modm .|. shiftMask, xK_t), spawn "DEVICE=\"bcm5974\"; if [ $(xinput list-props \"$DEVICE\" | awk '/^\\tDevice Enabled \\([0-9]+\\):\\t[01]/ {print $NF}') = \"1\" ]; then xinput disable \"$DEVICE\"; else xinput enable \"$DEVICE\"; fi"),
|
||||||
|
-- Push window back into tiling
|
||||||
|
((modm .|. shiftMask, xK_space), withFocused $ windows . W.sink),
|
||||||
|
-- Resize viewed windows to the correct size
|
||||||
|
((modm, xK_n), refresh),
|
||||||
|
-- Move focus to the next window
|
||||||
|
((modm, xK_Tab), layoutPrompt def),
|
||||||
|
-- Move focus
|
||||||
|
((modm, xK_j), windows W.focusDown),
|
||||||
|
((modm, xK_k), windows W.focusUp),
|
||||||
|
-- Swap the focused window with the next window
|
||||||
|
((modm .|. shiftMask, xK_j), windows W.swapDown),
|
||||||
|
((modm .|. shiftMask, xK_k), windows W.swapUp),
|
||||||
|
-- Shrink the master area
|
||||||
|
((modm, xK_h), sendMessage Shrink),
|
||||||
|
((modm, xK_l), sendMessage Expand),
|
||||||
|
-- Increment the number of windows in the master area
|
||||||
|
((modm, xK_comma), sendMessage (IncMasterN 1)),
|
||||||
|
((modm, xK_period), sendMessage (IncMasterN (-1))),
|
||||||
|
((modm, xK_b), sendMessage ToggleStruts >> withFocused toggleBorder),
|
||||||
|
-- volume keys
|
||||||
|
-- TODO: other media keys
|
||||||
|
((0, xF86XK_AudioRaiseVolume), spawn "amixer -D pulse sset Master 10%+"),
|
||||||
|
((0, xF86XK_AudioLowerVolume), spawn "amixer -D pulse sset Master 10%-"),
|
||||||
|
((0, xF86XK_AudioMute), spawn "amixer -D pulse sset Master toggle")
|
||||||
|
]
|
||||||
|
++ [ ((m .|. modm, k), windows $ f i)
|
||||||
|
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9],
|
||||||
|
(f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]
|
||||||
|
]
|
||||||
|
|
||||||
|
-- TODO: figure out multi screen stuff, including xinerama
|
||||||
|
|
||||||
|
-- Mouse bindings: default actions bound to mouse events
|
||||||
|
myMouseBindings (XConfig {XMonad.modMask = modm}) =
|
||||||
|
M.fromList
|
||||||
|
-- mod-button1, Set the window to floating mode and move by dragging
|
||||||
|
[ ( (modm, button1),
|
||||||
|
\w -> do
|
||||||
|
focus w
|
||||||
|
mouseMoveWindow w
|
||||||
|
windows W.shiftMaster
|
||||||
|
),
|
||||||
|
-- mod-button2, Raise the window to the top of the stack
|
||||||
|
( (modm, button3),
|
||||||
|
\w -> do
|
||||||
|
focus w
|
||||||
|
mouseResizeWindow w
|
||||||
|
windows W.shiftMaster
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
tabCfg =
|
||||||
|
def
|
||||||
|
{ activeColor = "#282828",
|
||||||
|
inactiveColor = "#1d2021",
|
||||||
|
urgentColor = "#9d0006",
|
||||||
|
activeBorderColor = "#504945",
|
||||||
|
inactiveBorderColor = "#3c3836",
|
||||||
|
urgentBorderColor = "#cc241d",
|
||||||
|
activeTextColor = "#ebdbb2",
|
||||||
|
inactiveTextColor = "#bdae93",
|
||||||
|
urgentTextColor = "#ebdbb2"
|
||||||
|
}
|
||||||
|
|
||||||
|
myLayout = setupSpacing $ avoidStruts $ autoChoose ||| tabbed shrinkText tabCfg
|
||||||
|
where
|
||||||
|
-- default tiling algorithm partitions the screen into two panes
|
||||||
|
autoChoose = IfMax 2 tiled $ IfMax 3 tiled_mag $ IfMax 4 grid_mag threeCol
|
||||||
|
setupSpacing = spacingRaw True (Border 0 0 0 0) True (Border 7 7 7 7) True
|
||||||
|
grid_mag = magnifiercz 1.4 Grid
|
||||||
|
tiled = Tall nmaster delta ratio
|
||||||
|
tiled_mag = magnifiercz' 1.4 tiled
|
||||||
|
threeCol = magnifiercz' 1.6 $ ThreeColMid nmaster delta ratio
|
||||||
|
-- The default number of windows in the master pane
|
||||||
|
nmaster = 1
|
||||||
|
-- Default proportion of screen occupied by master pane
|
||||||
|
ratio = 1 / 2
|
||||||
|
-- Percent of screen to increment by when resizing panes
|
||||||
|
delta = 3 / 100
|
||||||
|
|
||||||
|
myManageHook =
|
||||||
|
composeAll
|
||||||
|
[ className =? "MPlayer" --> doFloat,
|
||||||
|
className =? "Gimp" --> doFloat,
|
||||||
|
className =? "firefox" --> doShift "browser",
|
||||||
|
className =? "Evolution" --> doShift "comms",
|
||||||
|
className =? "Signal" --> doShift "comms",
|
||||||
|
className =? "SchildiChat" --> doShift "comms",
|
||||||
|
resource =? "desktop_window" --> doIgnore,
|
||||||
|
resource =? "kdesktop" --> doIgnore
|
||||||
|
]
|
||||||
|
|
||||||
|
myStartupHook = do
|
||||||
|
spawn "pgrep oneko || oneko -tofocus -tora -position +-1+5 -fg palevioletred3 -bg pink -name 'Rose the desktop kitty'"
|
||||||
|
spawn "pgrep volumeicon || volumeicon"
|
||||||
|
spawn "pgrep nm-applet || nm-applet"
|
||||||
|
spawn "pgrep mullvad-gui || mullvad-vpn"
|
||||||
|
spawn "feh --bg-fill ~/Pictures/wallpaper.jpg"
|
||||||
|
|
||||||
|
xmeowbar = statusBarProp "~/.config/xmobar/xmobar" $ pure xmobarPP
|
||||||
|
polybar = statusBarProp "polybar" $ pure xmobarPP
|
||||||
|
barSpawner 0 = pure $ xmeowbar <> polybar
|
||||||
|
barSpawner _ = mempty
|
||||||
|
|
||||||
|
main :: IO()
|
||||||
|
main = xmonad $ docks $ dynamicSBs barSpawner $ ewmh defaults
|
||||||
|
|
||||||
|
defaults =
|
||||||
|
def
|
||||||
|
{ -- simple stuff
|
||||||
|
terminal = "kitty",
|
||||||
|
focusFollowsMouse = False,
|
||||||
|
clickJustFocuses = False,
|
||||||
|
borderWidth = 2,
|
||||||
|
modMask = mod4Mask,
|
||||||
|
workspaces = ["comms", "browser"] ++ map show [3 .. 9],
|
||||||
|
normalBorderColor = "#3c3836",
|
||||||
|
focusedBorderColor = "#504945",
|
||||||
|
keys = myKeys,
|
||||||
|
mouseBindings = myMouseBindings,
|
||||||
|
layoutHook =myLayout,
|
||||||
|
manageHook = myManageHook,
|
||||||
|
startupHook = myStartupHook,
|
||||||
|
handleEventHook = serverModeEventHook
|
||||||
|
}
|
160
hosts/catbook-j/configuration.nix
Normal file
160
hosts/catbook-j/configuration.nix
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
|
"electron-25.9.0"
|
||||||
|
];
|
||||||
|
imports = [
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
../../common.nix
|
||||||
|
../../modules
|
||||||
|
];
|
||||||
|
jade = {
|
||||||
|
flatpak.enable = true;
|
||||||
|
desktop = {
|
||||||
|
compositing.enable = true;
|
||||||
|
syncthing.enable = true;
|
||||||
|
kdeconnect.enable = true;
|
||||||
|
cloud.enable = true;
|
||||||
|
social.enable = true;
|
||||||
|
mail.enable = true;
|
||||||
|
gaming.enable = true;
|
||||||
|
evremap.enable = true;
|
||||||
|
};
|
||||||
|
terminal.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.trackpoint = {
|
||||||
|
enable = true;
|
||||||
|
# device = "MELF0410:00 1FD2:7007";
|
||||||
|
device = "DELL081C:00 044E:121F Mouse";
|
||||||
|
sensitivity = 255;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.usb-modeswitch.enable = true;
|
||||||
|
systemd.services."ModemManager".enable = true;
|
||||||
|
systemd.services."ModemManager".wants = ["NetworkManager.service"];
|
||||||
|
systemd.services."ModemManager".wantedBy = ["multi-user.target"];
|
||||||
|
|
||||||
|
environment.variables = {
|
||||||
|
VDPAU_DRIVER = lib.mkIf config.hardware.opengl.enable (lib.mkDefault "va_gl");
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
intel-ocl
|
||||||
|
intel-media-driver
|
||||||
|
intel-vaapi-driver
|
||||||
|
intel-compute-runtime
|
||||||
|
libvdpau-va-gl
|
||||||
|
mesa.drivers
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.wireshark.enable = true;
|
||||||
|
|
||||||
|
boot.resumeDevice = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
|
||||||
|
boot.kernelParams = ["resume_offset=7380652"];
|
||||||
|
|
||||||
|
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
||||||
|
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
services.blueman.enable = true;
|
||||||
|
|
||||||
|
services.xserver.libinput.touchpad.tapping = false;
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.plantuml
|
||||||
|
pkgs.mqttui
|
||||||
|
pkgs.mobile-broadband-provider-info
|
||||||
|
pkgs.modem-manager-gui
|
||||||
|
pkgs.wireshark
|
||||||
|
];
|
||||||
|
|
||||||
|
# Bootloader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# Setup keyfile
|
||||||
|
boot.initrd.secrets = {
|
||||||
|
"/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.kernelPatches = [
|
||||||
|
# {
|
||||||
|
# name = "fomx";
|
||||||
|
# patch = ../../other/0001-fomx.patch;
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
|
||||||
|
services.xserver.displayManager.autoLogin = {
|
||||||
|
enable = true;
|
||||||
|
user = "jade";
|
||||||
|
};
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
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 = {
|
||||||
|
LC_ADDRESS = "de_DE.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "de_DE.UTF-8";
|
||||||
|
LC_MEASUREMENT = "de_DE.UTF-8";
|
||||||
|
LC_MONETARY = "de_DE.UTF-8";
|
||||||
|
LC_NAME = "de_DE.UTF-8";
|
||||||
|
LC_NUMERIC = "de_DE.UTF-8";
|
||||||
|
LC_PAPER = "de_DE.UTF-8";
|
||||||
|
LC_TELEPHONE = "de_DE.UTF-8";
|
||||||
|
LC_TIME = "de_DE.UTF-8";
|
||||||
|
};
|
||||||
|
|
||||||
|
# This value determines the NixOS release from which the default
|
||||||
|
# settings for stateful data, like file locations and database versions
|
||||||
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
# this value at the release version of the first install of this system.
|
||||||
|
# Before changing this value read the documentation for this option
|
||||||
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
|
system.stateVersion = "23.05"; # Did you read the comment?
|
||||||
|
}
|
|
@ -7,53 +7,35 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"];
|
||||||
"xhci_pci"
|
boot.initrd.kernelModules = ["i915"];
|
||||||
"nvme"
|
boot.kernelModules = ["kvm-intel"];
|
||||||
"usb_storage"
|
boot.extraModulePackages = [];
|
||||||
"sd_mod"
|
|
||||||
"rtsx_pci_sdmmc"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ "i915" ];
|
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
|
device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [
|
options = ["subvol=@" "compress=zstd:3" "noatime"];
|
||||||
"subvol=@"
|
|
||||||
"compress=zstd:3"
|
|
||||||
"noatime"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home" = {
|
fileSystems."/home" = {
|
||||||
device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
|
device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [
|
options = ["subvol=@home" "compress=zstd:3"];
|
||||||
"subvol=@home"
|
|
||||||
"compress=zstd:3"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/swap" = {
|
fileSystems."/swap" = {
|
||||||
device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
|
device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [
|
options = ["subvol=@/@swap" "noatime"];
|
||||||
"subvol=@/@swap"
|
|
||||||
"noatime"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-9cd75cce-6829-4db8-8c5c-a9fb9ec3e122".device =
|
boot.initrd.luks.devices."luks-9cd75cce-6829-4db8-8c5c-a9fb9ec3e122".device = "/dev/disk/by-uuid/9cd75cce-6829-4db8-8c5c-a9fb9ec3e122";
|
||||||
"/dev/disk/by-uuid/9cd75cce-6829-4db8-8c5c-a9fb9ec3e122";
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-uuid/C6CA-5DE8";
|
device = "/dev/disk/by-uuid/C6CA-5DE8";
|
|
@ -1,77 +0,0 @@
|
||||||
# Edit this configuration file to define what should be installed on
|
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
nixpkgs.config.permittedInsecurePackages = [
|
|
||||||
"electron-25.9.0"
|
|
||||||
"electron-27.3.11"
|
|
||||||
];
|
|
||||||
imports = [
|
|
||||||
# Include the results of the hardware scan.
|
|
||||||
./hardware-configuration.nix
|
|
||||||
../../common.nix
|
|
||||||
../../modules
|
|
||||||
./modules
|
|
||||||
];
|
|
||||||
jade = {
|
|
||||||
hwKey.pamAuth.enable = true;
|
|
||||||
desktop = {
|
|
||||||
dm.autoLogin = {
|
|
||||||
enable = true;
|
|
||||||
delay = 5;
|
|
||||||
};
|
|
||||||
syncthing.enable = true;
|
|
||||||
kdeconnect.enable = true;
|
|
||||||
social.enable = true;
|
|
||||||
gaming.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
security.pam.services.swaylock = { };
|
|
||||||
|
|
||||||
hardware.usb-modeswitch.enable = true;
|
|
||||||
systemd.services."ModemManager".enable = true;
|
|
||||||
systemd.services."ModemManager".wants = [ "NetworkManager.service" ];
|
|
||||||
systemd.services."ModemManager".wantedBy = [ "multi-user.target" ];
|
|
||||||
|
|
||||||
programs.wireshark.enable = true;
|
|
||||||
|
|
||||||
boot.resumeDevice = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
|
|
||||||
boot.kernelParams = [ "resume_offset=7380652" ];
|
|
||||||
|
|
||||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
|
||||||
|
|
||||||
services.blueman.enable = true;
|
|
||||||
|
|
||||||
environment.systemPackages = [
|
|
||||||
pkgs.plantuml
|
|
||||||
pkgs.mqttui
|
|
||||||
pkgs.mobile-broadband-provider-info
|
|
||||||
pkgs.modem-manager-gui
|
|
||||||
pkgs.wireshark
|
|
||||||
];
|
|
||||||
|
|
||||||
# Bootloader.
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
# Setup keyfile
|
|
||||||
boot.initrd.secrets = {
|
|
||||||
"/crypto_keyfile.bin" = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_zen;
|
|
||||||
|
|
||||||
# networking
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
networking.hostName = "denkbrett";
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
|
||||||
# settings for stateful data, like file locations and database versions
|
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
|
||||||
# this value at the release version of the first install of this system.
|
|
||||||
# Before changing this value read the documentation for this option
|
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
|
||||||
system.stateVersion = "23.05"; # Did you read the comment?
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./input.nix
|
|
||||||
./graphics.nix
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
environment.variables = {
|
|
||||||
VDPAU_DRIVER = lib.mkIf config.hardware.graphics.enable (lib.mkDefault "va_gl");
|
|
||||||
};
|
|
||||||
hardware.graphics = {
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
intel-ocl
|
|
||||||
intel-media-driver
|
|
||||||
intel-vaapi-driver
|
|
||||||
intel-compute-runtime
|
|
||||||
libvdpau-va-gl
|
|
||||||
mesa.drivers
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
# key remapping
|
|
||||||
jade.input.remapping =
|
|
||||||
let
|
|
||||||
default = {
|
|
||||||
swapKeys = [
|
|
||||||
[
|
|
||||||
"KEY_Y"
|
|
||||||
"KEY_Z"
|
|
||||||
]
|
|
||||||
[
|
|
||||||
"KEY_LEFTALT"
|
|
||||||
"KEY_LEFTMETA"
|
|
||||||
]
|
|
||||||
];
|
|
||||||
dual_role = [
|
|
||||||
{
|
|
||||||
input = "KEY_CAPSLOCK";
|
|
||||||
hold = [ "KEY_LEFTCTRL" ];
|
|
||||||
tap = [ "KEY_ESC" ];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
devices."AT Translated Set 2 keyboard" = default;
|
|
||||||
devices."Razer Razer Huntsman" = default;
|
|
||||||
devices."Razer Razer DeathAdder V2" = default;
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.trackpoint = {
|
|
||||||
enable = true;
|
|
||||||
device = "TPPS/2 IBM TrackPoint";
|
|
||||||
sensitivity = 256;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,31 +1,44 @@
|
||||||
# Edit this configuration file to define what should be installed on
|
# Edit this configuration file to define what should be installed on
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
pkgs-stable,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../../common.nix
|
../../common.nix
|
||||||
../../modules
|
../../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 = {
|
||||||
hwKey.pamAuth.enable = true;
|
flatpak.enable = true;
|
||||||
desktop = {
|
desktop = {
|
||||||
media = {
|
compositing.enable = true;
|
||||||
obs = true;
|
|
||||||
videoEditing = true;
|
|
||||||
};
|
|
||||||
syncthing.enable = true;
|
syncthing.enable = true;
|
||||||
kdeconnect.enable = true;
|
kdeconnect.enable = true;
|
||||||
|
cloud.enable = true;
|
||||||
social.enable = true;
|
social.enable = true;
|
||||||
gaming.enable = true;
|
gaming.enable = true;
|
||||||
|
mail.enable = true;
|
||||||
|
evremap.enable = false;
|
||||||
};
|
};
|
||||||
|
terminal.enable = true;
|
||||||
};
|
};
|
||||||
boot = {
|
boot = {
|
||||||
loader = {
|
loader = {
|
||||||
|
@ -33,14 +46,30 @@
|
||||||
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"];
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.hostName = "monosodium-glutamate-g";
|
networking.hostName = "monosodium-glutamate-g";
|
||||||
services = {
|
services = {
|
||||||
|
# monitor control
|
||||||
|
ddccontrol.enable = true;
|
||||||
|
xserver = {
|
||||||
|
layout = "us";
|
||||||
|
xkbVariant = "altgr-intl";
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
openssh.settings.PermitRootLogin = "without-password";
|
openssh.settings.PermitRootLogin = "without-password";
|
||||||
|
|
||||||
blueman.enable = true;
|
blueman.enable = true;
|
||||||
|
@ -48,19 +77,36 @@
|
||||||
gnome.gnome-keyring.enable = true;
|
gnome.gnome-keyring.enable = true;
|
||||||
};
|
};
|
||||||
hardware = {
|
hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
keyboard.uhk.enable = true;
|
keyboard.uhk.enable = true;
|
||||||
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.
|
||||||
|
libGL
|
||||||
|
libreoffice-fresh
|
||||||
|
wireshark
|
||||||
|
awesomebump
|
||||||
|
|
||||||
zenstates
|
zenstates
|
||||||
zenmonitor
|
zenmonitor
|
||||||
|
nvtop-amd
|
||||||
|
radeontop
|
||||||
|
rgp
|
||||||
tea
|
tea
|
||||||
blender-hip
|
blender-hip
|
||||||
jdk8
|
|
||||||
jdk11
|
|
||||||
];
|
];
|
||||||
programs = {
|
programs = {
|
||||||
wireshark.enable = true;
|
wireshark.enable = true;
|
||||||
|
@ -80,7 +126,23 @@
|
||||||
# networking.firewall.allowedTCPPorts = [ 4713 ];
|
# networking.firewall.allowedTCPPorts = [ 4713 ];
|
||||||
systemd.services."NetworkManager-wait-online".enable = false;
|
systemd.services."NetworkManager-wait-online".enable = false;
|
||||||
|
|
||||||
swapDevices = [ { device = "/swap/swapfile"; } ];
|
systemd.services = {
|
||||||
|
create-swapfile = {
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
wantedBy = ["swap-swapfile.swap"];
|
||||||
|
script = ''
|
||||||
|
swapfile="/swap/swapfile"
|
||||||
|
if [[ -f "$swapfile" ]]; then
|
||||||
|
echo "Swap file $swapfile already exists, taking no action"
|
||||||
|
else
|
||||||
|
echo "Setting up swap file $swapfile"
|
||||||
|
${pkgs.coreutils}/bin/truncate -s 0 "$swapfile"
|
||||||
|
${pkgs.e2fsprogs}/bin/chattr +C "$swapfile"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
system.stateVersion = "24.05"; # Did you read the comment?
|
# release channel
|
||||||
|
system.stateVersion = "22.05"; # Did you read the comment?
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,49 +7,39 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
|
||||||
"nvme"
|
boot.initrd.kernelModules = [];
|
||||||
"xhci_pci"
|
boot.kernelModules = ["kvm-amd"];
|
||||||
"ahci"
|
boot.extraModulePackages = [];
|
||||||
"uas"
|
|
||||||
"usbhid"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-uuid/efb8f256-5b14-4b52-a2d9-ae4b91ecb711";
|
device = "/dev/disk/by-uuid/72ffbc9d-a319-42d7-8d26-13c921a679db";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=@" ];
|
options = ["subvol=@root" "compress=zstd:3"];
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-919f9b8b-2804-447a-97e0-f7f515d0be56".device =
|
fileSystems."/home" = {
|
||||||
"/dev/disk/by-uuid/919f9b8b-2804-447a-97e0-f7f515d0be56";
|
device = "/dev/disk/by-uuid/72ffbc9d-a319-42d7-8d26-13c921a679db";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@home" "compress=zstd:3"];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-uuid/3FAD-A6B4";
|
device = "/dev/disk/by-uuid/D63E-18C9";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [
|
|
||||||
"fmask=0077"
|
|
||||||
"dmask=0077"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/swap" = {
|
swapDevices = [
|
||||||
device = "/dev/disk/by-uuid/efb8f256-5b14-4b52-a2d9-ae4b91ecb711";
|
{
|
||||||
fsType = "btrfs";
|
device = "/swap/swapfile";
|
||||||
options = [ "subvol=swap" ];
|
size = (1024 * 64) + (1024 * 8); # 72G
|
||||||
};
|
}
|
||||||
|
];
|
||||||
swapDevices = [ ];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
@ -57,9 +47,7 @@
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.wg0-mullvad.useDHCP = lib.mkDefault true;
|
# networking.interfaces.wlp9s0.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.wlp6s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./graphics.nix
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
environment.systemPackages = [
|
|
||||||
pkgs.nvtopPackages.amd
|
|
||||||
pkgs.radeontop
|
|
||||||
pkgs.rgp
|
|
||||||
];
|
|
||||||
}
|
|
191
hosts/potatobook-g/configuration.nix
Normal file
191
hosts/potatobook-g/configuration.nix
Normal file
|
@ -0,0 +1,191 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
nix.settings = {
|
||||||
|
trusted-substituters = [
|
||||||
|
"https://t2linux.cachix.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"t2linux.cachix.org-1:P733c5Gt1qTcxsm+Bae0renWnT8OLs0u9+yfaK2Bejw="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
../../common.nix
|
||||||
|
../../modules
|
||||||
|
#inputs.mms.module
|
||||||
|
];
|
||||||
|
|
||||||
|
#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.kernelPatches = [
|
||||||
|
#{
|
||||||
|
#name = "fomx";
|
||||||
|
#patch = ../other/0001-fomx.patch;
|
||||||
|
#}
|
||||||
|
#];
|
||||||
|
|
||||||
|
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
||||||
|
|
||||||
|
jade = {
|
||||||
|
flatpak.enable = true;
|
||||||
|
desktop = {
|
||||||
|
compositing.enable = true;
|
||||||
|
syncthing.enable = true;
|
||||||
|
kdeconnect.enable = true;
|
||||||
|
cloud.enable = true;
|
||||||
|
social.enable = true;
|
||||||
|
mail.enable = true;
|
||||||
|
gaming.enable = true;
|
||||||
|
evremap.enable = true;
|
||||||
|
};
|
||||||
|
terminal.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems = {
|
||||||
|
"/".options = ["compress=zstd:3"];
|
||||||
|
"/home".options = ["compress=zstd:3"];
|
||||||
|
"/nix".options = ["compress=zstd:3" "noatime"];
|
||||||
|
#"/swap".options = [ "noatime" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
services.xserver.libinput.touchpad.disableWhileTyping = true;
|
||||||
|
services.xserver.libinput.touchpad.tapping = false;
|
||||||
|
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
networking.hostName = "potatobook-g";
|
||||||
|
|
||||||
|
services.xserver = {
|
||||||
|
resolutions = [
|
||||||
|
{
|
||||||
|
x = 1920;
|
||||||
|
y = 1200;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
# dpi = 180;
|
||||||
|
layout = "us";
|
||||||
|
xkbVariant = "altgr-intl";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.autorandr = {
|
||||||
|
enable = true;
|
||||||
|
profiles = {
|
||||||
|
"default" = {
|
||||||
|
config = {
|
||||||
|
"eDP-1" = {
|
||||||
|
enable = true;
|
||||||
|
mode = "1920x1200";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# hardware.keyboard.uhk.enable = true;
|
||||||
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
android-tools
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.pathsToLink = [
|
||||||
|
"/share/nix-direnv"
|
||||||
|
];
|
||||||
|
|
||||||
|
services.blueman.enable = true;
|
||||||
|
|
||||||
|
programs.adb.enable = true;
|
||||||
|
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
programs.seahorse.enable = true;
|
||||||
|
security.pam.services.jade.enableGnomeKeyring = true;
|
||||||
|
security.pam.services.jade.u2fAuth = true;
|
||||||
|
|
||||||
|
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 =
|
||||||
|
# let
|
||||||
|
# nixpkgs = builtins.getFlake "nixpkgs/nixos-unstable";
|
||||||
|
# sys = nixpkgs.lib.nixosSystem {
|
||||||
|
# system = "x86_64-linux";
|
||||||
|
# modules = [
|
||||||
|
# ({config, pkgs, lib, modulesPath, ...}: {
|
||||||
|
# imports = [
|
||||||
|
# (modulesPath + "/installer/netboot/netboot-base.nix")
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# services.getty.autologinUser = lib.mkForce "root";
|
||||||
|
# console.keyMap = "de";
|
||||||
|
|
||||||
|
# system.stateVersion = config.system.nixos.release;
|
||||||
|
# environment.systemPackages = with pkgs; [
|
||||||
|
# helix nil git neofetch
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# programs = {
|
||||||
|
# zsh = {
|
||||||
|
# enable = true;
|
||||||
|
# enableCompletion = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# })
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# build = sys.config.system.build;
|
||||||
|
# in {
|
||||||
|
# enable = true;
|
||||||
|
# openFirewall = true;
|
||||||
|
# kernel = "${build.kernel}/bzImage";
|
||||||
|
# initrd = "${build.netbootRamdisk}/initrd";
|
||||||
|
# cmdLine = "init=${build.toplevel}/init loglevel=4";
|
||||||
|
# };
|
||||||
|
|
||||||
|
systemd.services = {
|
||||||
|
create-swapfile = {
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
wantedBy = ["swap-swapfile.swap"];
|
||||||
|
script = ''
|
||||||
|
swapfile="/swap/swapfile"
|
||||||
|
if [[ -f "$swapfile" ]]; then
|
||||||
|
echo "Swap file $swapfile already exists, taking no action"
|
||||||
|
else
|
||||||
|
echo "Setting up swap file $swapfile"
|
||||||
|
${pkgs.coreutils}/bin/truncate -s 0 "$swapfile"
|
||||||
|
${pkgs.e2fsprogs}/bin/chattr +C "$swapfile"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.logind.extraConfig = ''
|
||||||
|
RuntimeDirectorySize=12G
|
||||||
|
'';
|
||||||
|
|
||||||
|
# i rly should put that important big comment back here
|
||||||
|
system.stateVersion = "22.11"; # Did you read the comment?
|
||||||
|
}
|
62
hosts/potatobook-g/hardware-configuration.nix
Normal file
62
hosts/potatobook-g/hardware-configuration.nix
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# 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" "uas" "sd_mod"];
|
||||||
|
boot.initrd.kernelModules = [];
|
||||||
|
boot.kernelModules = ["kvm-intel"];
|
||||||
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/f6d243ec-6be9-4551-8cbb-aefb7b691a62";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=root"];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" = {
|
||||||
|
device = "/dev/disk/by-uuid/f6d243ec-6be9-4551-8cbb-aefb7b691a62";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=home"];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/nix" = {
|
||||||
|
device = "/dev/disk/by-uuid/f6d243ec-6be9-4551-8cbb-aefb7b691a62";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=nix"];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/5F66-17ED";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{
|
||||||
|
device = "/swap/swapfile";
|
||||||
|
size = 1024 * 12; # 12GB
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp2s0f1u1.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlan0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
# high-resolution display
|
||||||
|
}
|
11
hosts/potatobook-g/iso.nix
Normal file
11
hosts/potatobook-g/iso.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
<nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix>
|
||||||
|
<nixpkgs/nixos/modules/installer/cd-dvd/channel.nix>
|
||||||
|
./configuration.nix
|
||||||
|
];
|
||||||
|
}
|
21
justfile
21
justfile
|
@ -1,22 +1,13 @@
|
||||||
upgrade: update build
|
upgrade: update build
|
||||||
|
|
||||||
test:
|
test:
|
||||||
sudo nixos-rebuild test --flake . --log-format multiline
|
sudo nixos-rebuild test --flake . --impure
|
||||||
|
|
||||||
build:
|
build:
|
||||||
sudo nixos-rebuild switch --flake . --fast --log-format multiline
|
sudo nixos-rebuild switch --flake . --impure --fast
|
||||||
|
|
||||||
tbuild:
|
update:
|
||||||
sudo nixos-rebuild switch --flake . --fast --log-format multiline-with-logs --show-trace
|
nix flake update --commit-lock-file
|
||||||
|
|
||||||
update: update-typst-configs
|
build-mac:
|
||||||
nix flake update --commit-lock-file --log-format multiline
|
sudo nixos-rebuild switch --flake . --impure --override-input mac-brcm-fw path:/home/jade/mac-brcm-fw --fast
|
||||||
|
|
||||||
update-typst-configs:
|
|
||||||
#!/usr/bin/env nu
|
|
||||||
let file = './modules/media/typst.nix';
|
|
||||||
let $rev = http get https://forge.katzen.cafe/schrottkatze/typst-configs/commits/branch/main | query web -mq '.commit-list tr:first-of-type a.ui.sha.label' -a href | path basename | first;
|
|
||||||
./build-utils/templ-edit.nu edit $file REV $rev;
|
|
||||||
let $hash = nix-prefetch-url https://forge.katzen.cafe/schrottkatze/typst-configs/archive/main.tar.gz --unpack;
|
|
||||||
let $sri = nix hash to-sri --type sha256 $hash;
|
|
||||||
./build-utils/templ-edit.nu edit $file SHA $sri;
|
|
||||||
|
|
3
mac-brcm-fw/default.nix
Normal file
3
mac-brcm-fw/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{...}: {}
|
||||||
|
# dummy
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./shell
|
./shell
|
||||||
./desktop
|
./desktop
|
||||||
./desktop-legacy
|
./terminal.nix
|
||||||
./hardware
|
./flatpak.nix
|
||||||
./net
|
./firewall.nix
|
||||||
./input
|
./git.nix
|
||||||
./media
|
./kmscon.nix
|
||||||
./nix.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./gaming.nix
|
|
||||||
./syncthing.nix
|
|
||||||
./kdeconnect.nix
|
|
||||||
./social.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.seahorse.enable = true;
|
|
||||||
security.pam.services.jade.enableGnomeKeyring = true;
|
|
||||||
|
|
||||||
virtualisation.libvirtd.enable = true;
|
|
||||||
|
|
||||||
programs.xss-lock = {
|
|
||||||
enable = true;
|
|
||||||
lockerCommand = "${pkgs.i3lock}/bin/i3lock -c 1d2021";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.illum.enable = true;
|
|
||||||
services.smartd = {
|
|
||||||
enable = true;
|
|
||||||
notifications.test = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.jade =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.ssh = {
|
|
||||||
controlMaster = "yes";
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
just
|
|
||||||
bacon
|
|
||||||
|
|
||||||
magic-wormhole-rs
|
|
||||||
|
|
||||||
# filemanager
|
|
||||||
xfce.thunar
|
|
||||||
xfce.tumbler
|
|
||||||
xfce.thunar-archive-plugin
|
|
||||||
file-roller
|
|
||||||
|
|
||||||
# from environment.systemPackages cleanup
|
|
||||||
virt-manager
|
|
||||||
ddccontrol-db
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.jade.desktop.gaming;
|
|
||||||
in
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.jade.desktop.gaming = {
|
|
||||||
enable = mkEnableOption "Enable gaming stuff";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.steam.enable = true;
|
|
||||||
home-manager.users.jade =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
lutris
|
|
||||||
prismlauncher
|
|
||||||
wineWowPackages.stable
|
|
||||||
dxvk_2
|
|
||||||
vkd3d-proton
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.jade.desktop.kdeconnect;
|
|
||||||
in
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.jade.desktop.kdeconnect = {
|
|
||||||
enable = mkEnableOption "Enable KDE connect";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.kdeconnect.enable = true;
|
|
||||||
home-manager.users.jade =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
services.kdeconnect = {
|
|
||||||
enable = true;
|
|
||||||
indicator = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,49 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.jade.desktop.social;
|
|
||||||
in
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.jade.desktop.social = {
|
|
||||||
enable = mkEnableOption "Enable social apps";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home-manager.users.jade =
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
pkgs-stable,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
programs.nixcord = {
|
|
||||||
enable = true;
|
|
||||||
vesktop = {
|
|
||||||
enable = true;
|
|
||||||
# autoScroll.enable = true;
|
|
||||||
};
|
|
||||||
config = {
|
|
||||||
frameless = true;
|
|
||||||
disableMinSize = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
signal-desktop
|
|
||||||
mumble
|
|
||||||
element-desktop
|
|
||||||
pkgs.evolution-data-server-gtk4
|
|
||||||
iamb
|
|
||||||
];
|
|
||||||
};
|
|
||||||
programs.evolution = {
|
|
||||||
enable = true;
|
|
||||||
plugins = [ pkgs.evolution-ews ];
|
|
||||||
};
|
|
||||||
services.gnome.evolution-data-server.enable = true;
|
|
||||||
services.gnome.evolution-data-server.plugins = [ ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.jade.desktop.syncthing;
|
|
||||||
in
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.jade.desktop.syncthing = {
|
|
||||||
enable = mkEnableOption "Enable syncing via syncthing";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
services.syncthing = rec {
|
|
||||||
enable = true;
|
|
||||||
user = "jade";
|
|
||||||
dataDir = "/home/${user}/Documents";
|
|
||||||
configDir = "/home/${user}/Documents/.config/syncthing";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,19 +1,39 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
programs = {
|
config,
|
||||||
noisetorch.enable = true;
|
lib,
|
||||||
};
|
pkgs,
|
||||||
services = {
|
...
|
||||||
pipewire = {
|
}: {
|
||||||
enable = true;
|
config = {
|
||||||
alsa.enable = true;
|
programs = {
|
||||||
pulse.enable = true;
|
noisetorch.enable = true;
|
||||||
jack.enable = true;
|
};
|
||||||
|
services = {
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
jack.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hardware.pulseaudio.enable = pkgs.lib.mkForce false;
|
||||||
|
sound.mediaKeys.enable = true;
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
pavucontrol
|
||||||
|
pulseaudioFull
|
||||||
|
easyeffects
|
||||||
|
cava
|
||||||
|
volumeicon
|
||||||
|
playerctl
|
||||||
|
helvum
|
||||||
|
];
|
||||||
|
xsession.windowManager.i3.config.startup = [
|
||||||
|
{
|
||||||
|
command = "pkill volumeicon; volumeicon";
|
||||||
|
always = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
playerctl
|
|
||||||
pulsemixer
|
|
||||||
helvum
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
22
modules/desktop/cloud.nix
Normal file
22
modules/desktop/cloud.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.desktop.cloud;
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.desktop.cloud = {
|
||||||
|
enable = mkEnableOption "Enable cloud things";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
fluent-reader
|
||||||
|
bitwarden
|
||||||
|
rofi-rbw
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
42
modules/desktop/compositing.nix
Normal file
42
modules/desktop/compositing.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.desktop.compositing;
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.desktop.compositing = {
|
||||||
|
enable = mkEnableOption "Enable compositing with picom";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.picom = {
|
||||||
|
enable = true;
|
||||||
|
backend = "glx";
|
||||||
|
|
||||||
|
shadow = true;
|
||||||
|
shadowOffsets = [(-40) (-30)];
|
||||||
|
shadowOpacity = 0.2;
|
||||||
|
shadowExclude = [
|
||||||
|
"class_g ?= 'Notify-osd'"
|
||||||
|
"_GTK_FRAME_EXTENTS@:c"
|
||||||
|
"!(class_g = 'Rofi' || class_g = 'Dunst')"
|
||||||
|
];
|
||||||
|
|
||||||
|
vSync = true;
|
||||||
|
settings = {
|
||||||
|
"shadow-radius" = 40;
|
||||||
|
# fading rofi
|
||||||
|
"fading" = true;
|
||||||
|
"fade-in-step" = 0.25;
|
||||||
|
"fade-out-step" = 0.2;
|
||||||
|
"fade-delta" = 20;
|
||||||
|
"fade-exclude" = ["class_g != 'Rofi'"];
|
||||||
|
# use damage information
|
||||||
|
"use-damage" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# }}}
|
||||||
|
};
|
||||||
|
}
|
35
modules/desktop/creative.nix
Normal file
35
modules/desktop/creative.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
(nerdfonts.override {fonts = ["FiraCode"];})
|
||||||
|
montserrat
|
||||||
|
noto-fonts
|
||||||
|
atkinson-hyperlegible
|
||||||
|
arkpandora_ttf
|
||||||
|
liberation_ttf
|
||||||
|
caladea
|
||||||
|
carlito
|
||||||
|
garamond-libre
|
||||||
|
ocr-a
|
||||||
|
amiri
|
||||||
|
];
|
||||||
|
fonts.fontDir.enable = true;
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
audacity
|
||||||
|
krita
|
||||||
|
gimp-with-plugins
|
||||||
|
inkscape-with-extensions
|
||||||
|
obs-studio
|
||||||
|
kdenlive
|
||||||
|
fspy
|
||||||
|
scribus
|
||||||
|
|
||||||
|
fontforge-gtk
|
||||||
|
|
||||||
|
libreoffice
|
||||||
|
typst
|
||||||
|
|
||||||
|
rawtherapee
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,21 +1,191 @@
|
||||||
{ ... }:
|
|
||||||
{
|
{
|
||||||
imports = [
|
config,
|
||||||
./audio.nix
|
lib,
|
||||||
./home
|
pkgs,
|
||||||
./dm.nix
|
...
|
||||||
./tlp.nix
|
}: let
|
||||||
./locale.nix
|
# window-screenshot = pkgs.writeTextFile "window-screenshot.nu" (builtins.readFile ../../other/scripts/desktop/window-screenshot.nu);
|
||||||
./printing.nix
|
window-screenshot = pkgs.writeShellScriptBin "window-screenshot.sh" (builtins.readFile ../../other/scripts/desktop/window-screenshot.sh);
|
||||||
./themeing.nix
|
# desktop-ctl = pkgs.writeShellScriptBin "desktop-ctl.sh" (builtins.readFile ../scripts/desktop/desktop-ctl.sh);
|
||||||
];
|
desktop-ctl = import ../../other/scripts/desktop/desktopctl.nix {inherit pkgs;};
|
||||||
services.flatpak.enable = true;
|
# TODO: fix ocr screenshot script
|
||||||
security.polkit.enable = true;
|
ocr-screenshot = pkgs.writeShellScriptBin "ocr-screenshot.sh" (builtins.readFile ../../other/scripts/desktop/ocr-screenshot.sh);
|
||||||
services.illum.enable = true;
|
# rofi calculator copied from https://github.com/barbuk/menu-qalc
|
||||||
services.upower.enable = true;
|
menu-qalc = pkgs.writeShellScriptBin "menu-qalc" (builtins.readFile ../../other/scripts/desktop/menu-qalc.sh);
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
imports = [
|
||||||
|
./audio.nix
|
||||||
|
./gaming.nix
|
||||||
|
./creative.nix # TODO: more fine grained choices, not every setup needs fspy or rawtherapee
|
||||||
|
./dunst.nix
|
||||||
|
./compositing.nix
|
||||||
|
./ios-compat.nix
|
||||||
|
./syncthing.nix
|
||||||
|
./kdeconnect.nix
|
||||||
|
./themeing.nix
|
||||||
|
./cloud.nix
|
||||||
|
./networking.nix
|
||||||
|
./polybar.nix
|
||||||
|
./social.nix
|
||||||
|
./mail.nix
|
||||||
|
./specific-hardware
|
||||||
|
./evremap.nix
|
||||||
|
./xmonad.nix
|
||||||
|
./firefox.nix
|
||||||
|
];
|
||||||
|
|
||||||
programs.ausweisapp = {
|
i18n.inputMethod = {
|
||||||
enable = true;
|
enabled = "fcitx5";
|
||||||
openFirewall = true;
|
fcitx5.addons = with pkgs; [
|
||||||
};
|
fcitx5-mozc
|
||||||
}
|
fcitx5-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.seahorse.enable = true;
|
||||||
|
security.pam.services.jade.enableGnomeKeyring = true;
|
||||||
|
|
||||||
|
virtualisation.libvirtd.enable = true;
|
||||||
|
|
||||||
|
services = {
|
||||||
|
printing.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 = {
|
||||||
|
enable = true;
|
||||||
|
lockerCommand = "${pkgs.i3lock}/bin/i3lock -c 1d2021";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.illum.enable = true;
|
||||||
|
services.avahi.enable = true;
|
||||||
|
|
||||||
|
services.smartd = {
|
||||||
|
enable = true;
|
||||||
|
notifications.x11.enable = true;
|
||||||
|
notifications.test = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
programs.ssh = {
|
||||||
|
controlMaster = "yes";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.bat = {
|
||||||
|
# TODO: more config
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
programs.rofi = {
|
||||||
|
enable = true;
|
||||||
|
theme = ../../other/rofi-themes/applauncher.rasi;
|
||||||
|
};
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
just
|
||||||
|
bacon
|
||||||
|
|
||||||
|
magic-wormhole-rs
|
||||||
|
|
||||||
|
yt-dlp
|
||||||
|
|
||||||
|
i3lock
|
||||||
|
rofimoji
|
||||||
|
feh
|
||||||
|
xorg.xinput
|
||||||
|
arandr
|
||||||
|
flameshot
|
||||||
|
tesseract5
|
||||||
|
imagemagick
|
||||||
|
xclip
|
||||||
|
xmacro
|
||||||
|
xorg.xev
|
||||||
|
|
||||||
|
syncplay
|
||||||
|
|
||||||
|
# filemanager
|
||||||
|
xfce.thunar
|
||||||
|
xfce.tumbler
|
||||||
|
xfce.thunar-archive-plugin
|
||||||
|
gnome.file-roller
|
||||||
|
# media/file viewers
|
||||||
|
vlc
|
||||||
|
mpv
|
||||||
|
evince
|
||||||
|
nomacs
|
||||||
|
|
||||||
|
# from environment.systemPackages cleanup
|
||||||
|
font-manager
|
||||||
|
xdotool
|
||||||
|
xorg.xwininfo
|
||||||
|
gparted
|
||||||
|
# uhk-agent
|
||||||
|
cool-retro-term
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
|
virt-manager
|
||||||
|
ddccontrol-db
|
||||||
|
firebird-emu
|
||||||
|
gitg
|
||||||
|
gpick
|
||||||
|
qdirstat
|
||||||
|
ffmpeg_5
|
||||||
|
|
||||||
|
# external
|
||||||
|
libnotify
|
||||||
|
i3lock
|
||||||
|
rofi
|
||||||
|
rofimoji
|
||||||
|
feh
|
||||||
|
xorg.xinput
|
||||||
|
arandr
|
||||||
|
flameshot
|
||||||
|
tesseract5
|
||||||
|
imagemagick
|
||||||
|
xclip
|
||||||
|
kitty
|
||||||
|
xmacro
|
||||||
|
brightnessctl
|
||||||
|
drawing
|
||||||
|
libqalculate
|
||||||
|
|
||||||
|
# custom scripts
|
||||||
|
window-screenshot
|
||||||
|
desktop-ctl
|
||||||
|
ocr-screenshot
|
||||||
|
menu-qalc
|
||||||
|
|
||||||
|
# meow
|
||||||
|
oneko
|
||||||
|
|
||||||
|
plover.dev
|
||||||
|
];
|
||||||
|
xsession = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.jade.desktop.dm;
|
|
||||||
in
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.jade.desktop.dm.autoLogin = {
|
|
||||||
enable = mkEnableOption "Enable Autologin";
|
|
||||||
delay = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config.services = {
|
|
||||||
displayManager = {
|
|
||||||
autoLogin = {
|
|
||||||
enable = cfg.autoLogin.enable;
|
|
||||||
user = "jade";
|
|
||||||
};
|
|
||||||
defaultSession = "niri";
|
|
||||||
};
|
|
||||||
xserver.displayManager.gdm = {
|
|
||||||
enable = true;
|
|
||||||
banner = "Meow :3";
|
|
||||||
autoLogin = {
|
|
||||||
delay = cfg.autoLogin.delay;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
19
modules/desktop/dunst.nix
Normal file
19
modules/desktop/dunst.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{...}: {
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
services.dunst = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
dmenu = "${pkgs.rofi}/bin/rofi -theme gruvbox-dark -dmenu -p dunst";
|
||||||
|
browser = "${pkgs.librewolf}/bin/librewolf";
|
||||||
|
mouse_left_click = "context";
|
||||||
|
mouse_middle_click = "close_current";
|
||||||
|
background = "#282828";
|
||||||
|
foreground = "#ebdbb2";
|
||||||
|
frame_color = "#504945";
|
||||||
|
frame_width = 2;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
330
modules/desktop/firefox.nix
Normal file
330
modules/desktop/firefox.nix
Normal file
|
@ -0,0 +1,330 @@
|
||||||
|
{...}: {
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
home.file = {
|
||||||
|
".tridactylrc" = {
|
||||||
|
text = ''
|
||||||
|
set editorcmd kitty hx %f +%l
|
||||||
|
set newtab about:blank
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.firefox.override {
|
||||||
|
nativeMessagingHosts = [
|
||||||
|
pkgs.tridactyl-native
|
||||||
|
];
|
||||||
|
};
|
||||||
|
policies = {
|
||||||
|
DefaultDownloadDirectory = "\${home}/Downloads";
|
||||||
|
Extensions.Install = builtins.map (name: "https://addons.mozilla.org/firefox/downloads/latest/${name}") [
|
||||||
|
"ublock-origin"
|
||||||
|
"tridactyl-vim"
|
||||||
|
"privacy-badger17"
|
||||||
|
"gruvbox-dark-theme"
|
||||||
|
"torproject-snowflake"
|
||||||
|
"bitwarden-password-manager"
|
||||||
|
"terms-of-service-didnt-read"
|
||||||
|
"shinigami-eyes"
|
||||||
|
"darkreader"
|
||||||
|
"sponsorblock"
|
||||||
|
"youtube-mrbeastify"
|
||||||
|
"return-youtube-dislikes"
|
||||||
|
"multi-account-containers"
|
||||||
|
];
|
||||||
|
Extensions.Uninstall = [
|
||||||
|
"google@search.mozilla.org"
|
||||||
|
"bing@search.mozilla.org"
|
||||||
|
"amazondotcom@search.mozilla.org"
|
||||||
|
"ebay@search.mozilla.org"
|
||||||
|
"twitter@search.mozilla.org"
|
||||||
|
];
|
||||||
|
"DisableFirefoxStudies" = true;
|
||||||
|
"DisableTelemetry" = true;
|
||||||
|
"DisableFeedbackCommands" = true;
|
||||||
|
"DisablePocket" = true;
|
||||||
|
};
|
||||||
|
profiles.jade = {
|
||||||
|
search = {
|
||||||
|
force = true;
|
||||||
|
default = "DuckDuckGo";
|
||||||
|
engines = {
|
||||||
|
"Nix Packages" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://search.nixos.org/packages";
|
||||||
|
params = [
|
||||||
|
{
|
||||||
|
name = "query";
|
||||||
|
value = "{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||||
|
definedAliases = ["pkgs"];
|
||||||
|
};
|
||||||
|
"Nix Options" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://search.nixos.org/options";
|
||||||
|
params = [
|
||||||
|
{
|
||||||
|
name = "query";
|
||||||
|
value = "{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||||
|
definedAliases = ["opts"];
|
||||||
|
};
|
||||||
|
"Home manager Options" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://mipmip.github.io/home-manager-option-search/";
|
||||||
|
params = [
|
||||||
|
{
|
||||||
|
name = "query";
|
||||||
|
value = "{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||||
|
definedAliases = ["hm"];
|
||||||
|
};
|
||||||
|
"NixOS Wiki" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://nixos.wiki/index.php?title=Special:Search&search={searchTerms}&namespace=0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||||
|
definedAliases = ["nxwk"];
|
||||||
|
};
|
||||||
|
"Noogle" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://noogle.dev/q?term={searchTerms}";
|
||||||
|
params = [
|
||||||
|
{
|
||||||
|
name = "q";
|
||||||
|
value = "{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"lib.rs" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://lib.rs/search";
|
||||||
|
params = [
|
||||||
|
{
|
||||||
|
name = "q";
|
||||||
|
value = "{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
icon = "https://lib.rs/favicon.png";
|
||||||
|
definedAliases = ["libs"];
|
||||||
|
};
|
||||||
|
"rust docs" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://docs.rs/releases/search";
|
||||||
|
params = [
|
||||||
|
{
|
||||||
|
name = "query";
|
||||||
|
value = "{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
icon = "https://docs.rs/-/static/favicon.ico";
|
||||||
|
definedAliases = ["docs"];
|
||||||
|
};
|
||||||
|
"rust std docs" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://docs.rust-lang.org/std/index.html";
|
||||||
|
params = [
|
||||||
|
{
|
||||||
|
name = "search";
|
||||||
|
value = "{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
icon = "https://doc.rust-lang.org/favicon.ico";
|
||||||
|
definedAliases = ["std"];
|
||||||
|
};
|
||||||
|
"Bing".metaData.hidden = true;
|
||||||
|
"Google".metaData.hidden = true;
|
||||||
|
"Amazon.de".metaData.hidden = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
"devtools.editor.keymap" = "vim";
|
||||||
|
"devtools.toolbox.host" = "right";
|
||||||
|
"devtools.theme" = "dark";
|
||||||
|
"webgl.disabled" = false;
|
||||||
|
"image.jxl.enabled" = true;
|
||||||
|
"browser.urlbar.decodeURLsOnCopy" = true;
|
||||||
|
"browser.urlbar.unitConversion.enabled" = true;
|
||||||
|
"browser.urlbar.suggest.calculator" = true;
|
||||||
|
"browser.compactmode.show" = true;
|
||||||
|
"browser.uidensity" = 1;
|
||||||
|
"screenshots.browser.component.enabled" = true;
|
||||||
|
"browser.aboutConfig.showWarning" = false;
|
||||||
|
"browser.aboutwelcome.showModal" = false;
|
||||||
|
"browser.aboutwelcome.enabled" = false;
|
||||||
|
"browser.preferences.moreFromMozilla" = false;
|
||||||
|
"browser.menu.showViewImageInfo" = true;
|
||||||
|
|
||||||
|
"identity.fxaccounts.enabled" = true;
|
||||||
|
"browser.tabs.firefox-view" = true;
|
||||||
|
"browser.tabs.firefox-view-next" = true;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||||
|
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts" = false;
|
||||||
|
"privacy.trackingprotection.emailtracking.enabled" = true;
|
||||||
|
"privacy.trackingprotection.enabled" = true;
|
||||||
|
"privacy.trackingprotection.socialtracking.enabled" = true;
|
||||||
|
|
||||||
|
"geo.provider.network.logging.enabled" = true;
|
||||||
|
"extensions.getAddons.showPane" = false;
|
||||||
|
"extensions.htmlaboutaddons.recommendations.enabled" = false;
|
||||||
|
"browser.discovery.enabled" = false;
|
||||||
|
"browser.shopping.experience2023.enabled" = false;
|
||||||
|
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||||
|
"datareporting.healthreport.uploadEnabled" = false;
|
||||||
|
"toolkit.telemetry.unified" = false;
|
||||||
|
"toolkit.telemetry.enabled" = false;
|
||||||
|
"toolkit.telemetry.server" = "data:,";
|
||||||
|
"toolkit.telemetry.archive.enabled" = false;
|
||||||
|
"toolkit.telemetry.newProfilePing.enabled" = false;
|
||||||
|
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
||||||
|
"toolkit.telemetry.updatePing.enabled" = false;
|
||||||
|
"toolkit.telemetry.bhrPing.enabled" = false;
|
||||||
|
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
||||||
|
"toolkit.telemetry.coverage.opt-out" = true;
|
||||||
|
"toolkit.coverage.opt-out" = true;
|
||||||
|
"toolkit.coverage.endpoint.base" = "";
|
||||||
|
"browser.ping-centre.telemetry" = false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
|
||||||
|
"browser.newtabpage.activity-stream.telemetry" = false;
|
||||||
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
|
"app.normandy.enabled" = false;
|
||||||
|
"app.normandy.api_url" = "";
|
||||||
|
|
||||||
|
"browser.safebrowsing.malware.enabled" = false;
|
||||||
|
"browser.safebrowsing.phishing.enabled" = false;
|
||||||
|
"browser.safebrowsing.downloads.enabled" = false;
|
||||||
|
"browser.safebrowsing.downloads.remote.enabled" = false;
|
||||||
|
"browser.safebrowsing.downloads.remote.url" = "";
|
||||||
|
"browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false;
|
||||||
|
"browser.safebrowsing.downloads.remote.block_uncommon" = false;
|
||||||
|
"browser.safebrowsing.allowOverride" = false;
|
||||||
|
|
||||||
|
"network.prefetch-next" = false;
|
||||||
|
"network.dns.disablePrefetch" = true;
|
||||||
|
"network.dns.disablePrefetchFromHTTPS" = true;
|
||||||
|
"network.predictor.enabled" = false;
|
||||||
|
"network.predictor.enable-prefetch" = false;
|
||||||
|
"network.http.speculative-parallel-limit" = 0;
|
||||||
|
"browser.places.speculativeConnect.enabled" = false;
|
||||||
|
"browser.send_pings" = false;
|
||||||
|
|
||||||
|
"browser.urlbar.pocket.featureGate" = false;
|
||||||
|
"browser.urlbar.weather.featureGate" = false;
|
||||||
|
"browser.urlbar.speculativeConnect.enabled" = false;
|
||||||
|
"browser.urlbar.suggest.quicksuggest.nonsponsored" = false;
|
||||||
|
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
|
||||||
|
"browser.search.suggest.enabled" = false;
|
||||||
|
"browser.urlbar.suggest.searches" = false;
|
||||||
|
"browser.urlbar.trending.featureGate" = false;
|
||||||
|
|
||||||
|
"security.ssl.require_safe_negotiation" = true;
|
||||||
|
"security.remote_settings.crlite_filters.enabled" = true;
|
||||||
|
"security.pki.crlite_mode" = 2;
|
||||||
|
|
||||||
|
"dom.security.https_only_mode" = true;
|
||||||
|
"dom.security.https_only_mode_pbm" = true;
|
||||||
|
"security.ssl.treat_unsafe_negotiation_as_broken" = true;
|
||||||
|
"browser.xul.error_pages.expert_bad_cert" = true;
|
||||||
|
"network.http.referer.XOriginTrimmingPolicy" = 2;
|
||||||
|
|
||||||
|
"privacy.userContext.enabled" = true;
|
||||||
|
"privacy.userContext.ui.enabled" = true;
|
||||||
|
"privacy.userContext.newTabContainerOnLeftClick.enabled" = true;
|
||||||
|
|
||||||
|
"dom.disable_window_move_resize" = true;
|
||||||
|
|
||||||
|
"browser.uitour.enabled" = false;
|
||||||
|
|
||||||
|
"browser.uitour.url" = "";
|
||||||
|
"permissions.manager.defaultsUrl" = "";
|
||||||
|
"webchannel.allowObject.urlWhitelist" = "";
|
||||||
|
|
||||||
|
"network.IDN_show_punycode" = true;
|
||||||
|
"pdfjs.disabled" = false;
|
||||||
|
"pdfjs.enableScripting" = false;
|
||||||
|
"browser.tabs.searchclipboardfor.middleclick" = false;
|
||||||
|
"browser.download.useDownloadDir" = false;
|
||||||
|
"browser.download.alwaysOpenPanel" = false;
|
||||||
|
|
||||||
|
"browser.download.manager.addToRecentDocs" = false;
|
||||||
|
|
||||||
|
"browser.download.always_ask_before_handling_new_types" = true;
|
||||||
|
"privacy.resistFingerprinting" = true;
|
||||||
|
"privacy.resistFingerprinting.pbmode" = true;
|
||||||
|
"privacy.window.maxInnerWidth" = 1600;
|
||||||
|
"privacy.window.maxInnerHeight" = 900;
|
||||||
|
"privacy.resistFingerprinting.block_mozAddonManager" = true;
|
||||||
|
"privacy.resistFingerprinting.letterboxing" = true;
|
||||||
|
"privacy.resistFingerprinting.letterboxing.dimensions" = "";
|
||||||
|
"widget.non-native-theme.enabled" = true;
|
||||||
|
"browser.link.open_newwindow" = 3;
|
||||||
|
"browser.link.open_newwindow.restriction" = 0;
|
||||||
|
"signon.rememberSignons" = false;
|
||||||
|
"dom.popup_allowed_events" = "click dblclick mousedown pointerdown";
|
||||||
|
"browser.pagethumbnails.capturing_disabled" = true;
|
||||||
|
|
||||||
|
"geo.enabled" = false;
|
||||||
|
"full-screen-api.enabled" = false;
|
||||||
|
"permissions.default.geo" = 0;
|
||||||
|
"permissions.default.camera" = 0;
|
||||||
|
"permissions.default.microphone" = 0;
|
||||||
|
"permissions.default.desktop-notification" = 0;
|
||||||
|
"permissions.default.xr" = 0;
|
||||||
|
|
||||||
|
"browser.newtabpage.pinned" = [
|
||||||
|
{
|
||||||
|
title = "Katzencafé";
|
||||||
|
url = "https://ck.katzen.cafe";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
title = "Katzenschmiede";
|
||||||
|
url = "https://forge.katzen.cafe";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
title = "CatPad";
|
||||||
|
url = "https://pad.katzen.cafe";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
title = "Katzenwolke";
|
||||||
|
url = "https://wolke.katzen.cafe";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
title = "Penpot";
|
||||||
|
url = "https://design.katzen.cafe";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
22
modules/desktop/gaming.nix
Normal file
22
modules/desktop/gaming.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.desktop.gaming;
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.desktop.gaming = {
|
||||||
|
enable = mkEnableOption "Enable gaming stuff";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.steam.enable = true;
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
lutris
|
||||||
|
prismlauncher
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,361 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.file = {
|
|
||||||
".tridactylrc" = {
|
|
||||||
text = ''
|
|
||||||
set editorcmd kitty hx %f +%l
|
|
||||||
set newtab about:blank
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.firefox = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.firefox.override {
|
|
||||||
nativeMessagingHosts = [
|
|
||||||
pkgs.tridactyl-native
|
|
||||||
];
|
|
||||||
};
|
|
||||||
policies = {
|
|
||||||
DefaultDownloadDirectory = "\${home}/Downloads";
|
|
||||||
Extensions.Install =
|
|
||||||
builtins.map (name: "https://addons.mozilla.org/firefox/downloads/latest/${name}")
|
|
||||||
[
|
|
||||||
"ublock-origin"
|
|
||||||
"tridactyl-vim"
|
|
||||||
"privacy-badger17"
|
|
||||||
"gruvbox-dark-theme"
|
|
||||||
"torproject-snowflake"
|
|
||||||
"bitwarden-password-manager"
|
|
||||||
"terms-of-service-didnt-read"
|
|
||||||
"shinigami-eyes"
|
|
||||||
"darkreader"
|
|
||||||
"sponsorblock"
|
|
||||||
"youtube-mrbeastify"
|
|
||||||
"return-youtube-dislikes"
|
|
||||||
"multi-account-containers"
|
|
||||||
"tabby-cat-friend"
|
|
||||||
"indie-wiki-buddy"
|
|
||||||
];
|
|
||||||
Extensions.Uninstall = [
|
|
||||||
"google@search.mozilla.org"
|
|
||||||
"bing@search.mozilla.org"
|
|
||||||
"amazondotcom@search.mozilla.org"
|
|
||||||
"ebay@search.mozilla.org"
|
|
||||||
"twitter@search.mozilla.org"
|
|
||||||
];
|
|
||||||
"DisableFirefoxStudies" = true;
|
|
||||||
"DisableTelemetry" = true;
|
|
||||||
"DisableFeedbackCommands" = true;
|
|
||||||
"DisablePocket" = true;
|
|
||||||
};
|
|
||||||
profiles.jade = {
|
|
||||||
search = {
|
|
||||||
force = true;
|
|
||||||
default = "DuckDuckGo";
|
|
||||||
engines = {
|
|
||||||
"Nix Packages" = {
|
|
||||||
urls = [
|
|
||||||
{
|
|
||||||
template = "https://search.nixos.org/packages";
|
|
||||||
params = [
|
|
||||||
{
|
|
||||||
name = "query";
|
|
||||||
value = "{searchTerms}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
|
||||||
definedAliases = [ "pkgs" ];
|
|
||||||
};
|
|
||||||
"Nix Options" = {
|
|
||||||
urls = [
|
|
||||||
{
|
|
||||||
template = "https://search.nixos.org/options";
|
|
||||||
params = [
|
|
||||||
{
|
|
||||||
name = "query";
|
|
||||||
value = "{searchTerms}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
|
||||||
definedAliases = [ "opts" ];
|
|
||||||
};
|
|
||||||
"Home manager Options" = {
|
|
||||||
urls = [
|
|
||||||
{
|
|
||||||
template = "https://home-manager-options.extranix.com/";
|
|
||||||
params = [
|
|
||||||
{
|
|
||||||
name = "query";
|
|
||||||
value = "{searchTerms}";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "release";
|
|
||||||
value = "master";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
|
||||||
definedAliases = [ "hm" ];
|
|
||||||
};
|
|
||||||
"NixOS Wiki" = {
|
|
||||||
urls = [
|
|
||||||
{
|
|
||||||
template = "https://nixos.wiki/index.php";
|
|
||||||
params = [
|
|
||||||
{
|
|
||||||
name = "search";
|
|
||||||
value = "{searchTerms}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
|
||||||
definedAliases = [ "nxwk" ];
|
|
||||||
};
|
|
||||||
"Noogle" = {
|
|
||||||
urls = [
|
|
||||||
{
|
|
||||||
template = "https://noogle.dev/q";
|
|
||||||
params = [
|
|
||||||
{
|
|
||||||
name = "term";
|
|
||||||
value = "{searchTerms}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
definedAliases = [ "ngl" ];
|
|
||||||
};
|
|
||||||
"lib.rs" = {
|
|
||||||
urls = [
|
|
||||||
{
|
|
||||||
template = "https://lib.rs/search";
|
|
||||||
params = [
|
|
||||||
{
|
|
||||||
name = "q";
|
|
||||||
value = "{searchTerms}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
icon = "https://lib.rs/favicon.png";
|
|
||||||
definedAliases = [ "libs" ];
|
|
||||||
};
|
|
||||||
"rust docs" = {
|
|
||||||
urls = [
|
|
||||||
{
|
|
||||||
template = "https://docs.rs/releases/search";
|
|
||||||
params = [
|
|
||||||
{
|
|
||||||
name = "query";
|
|
||||||
value = "{searchTerms}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
icon = "https://docs.rs/-/static/favicon.ico";
|
|
||||||
definedAliases = [ "docs" ];
|
|
||||||
};
|
|
||||||
"rust docs direct open" = {
|
|
||||||
urls = [
|
|
||||||
{
|
|
||||||
template = "https://docs.rs/{searchTerms}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
definedAliases = [
|
|
||||||
"doc"
|
|
||||||
"docd"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"rust std docs" = {
|
|
||||||
urls = [
|
|
||||||
{
|
|
||||||
template = "https://docs.rust-lang.org/std/index.html";
|
|
||||||
params = [
|
|
||||||
{
|
|
||||||
name = "search";
|
|
||||||
value = "{searchTerms}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
icon = "https://doc.rust-lang.org/favicon.ico";
|
|
||||||
definedAliases = [ "std" ];
|
|
||||||
};
|
|
||||||
"MDN" = {
|
|
||||||
urls = [
|
|
||||||
{
|
|
||||||
template = "https://developer.mozilla.org/search";
|
|
||||||
params = [
|
|
||||||
{
|
|
||||||
name = "q";
|
|
||||||
value = "{searchTerms}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"Bing".metaData.hidden = true;
|
|
||||||
"Google".metaData.hidden = true;
|
|
||||||
"Amazon.de".metaData.hidden = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
"devtools.editor.keymap" = "vim";
|
|
||||||
"devtools.toolbox.host" = "right";
|
|
||||||
"devtools.theme" = "dark";
|
|
||||||
"webgl.disabled" = false;
|
|
||||||
"browser.urlbar.decodeURLsOnCopy" = true;
|
|
||||||
"browser.urlbar.unitConversion.enabled" = true;
|
|
||||||
"browser.urlbar.suggest.calculator" = true;
|
|
||||||
"browser.compactmode.show" = true;
|
|
||||||
"browser.uidensity" = 1;
|
|
||||||
"screenshots.browser.component.enabled" = true;
|
|
||||||
"browser.aboutConfig.showWarning" = false;
|
|
||||||
"browser.aboutwelcome.showModal" = false;
|
|
||||||
"browser.aboutwelcome.enabled" = false;
|
|
||||||
"browser.preferences.moreFromMozilla" = false;
|
|
||||||
"browser.menu.showViewImageInfo" = true;
|
|
||||||
"browser.shopping.experience2023.active" = false;
|
|
||||||
"browser.shopping.experience2023.survey.enabled" = false;
|
|
||||||
|
|
||||||
"identity.fxaccounts.enabled" = true;
|
|
||||||
"browser.tabs.firefox-view" = true;
|
|
||||||
"browser.tabs.firefox-view-next" = true;
|
|
||||||
"browser.newtabpage.activity-stream.showSponsored" = false;
|
|
||||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
|
||||||
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts" = false;
|
|
||||||
"privacy.trackingprotection.emailtracking.enabled" = true;
|
|
||||||
"privacy.trackingprotection.enabled" = true;
|
|
||||||
"privacy.trackingprotection.socialtracking.enabled" = true;
|
|
||||||
|
|
||||||
"browser.ml.chat.enabled" = false;
|
|
||||||
"browser.ml.chat.hideLocalhost" = false;
|
|
||||||
"browser.ml.chat.prompt.prefix" = "";
|
|
||||||
"browser.ml.chat.prompts.0" = "";
|
|
||||||
"browser.ml.chat.prompts.1" = "";
|
|
||||||
"browser.ml.chat.prompts.2" = "";
|
|
||||||
"browser.ml.chat.prompts.3" = "";
|
|
||||||
"browser.ml.chat.provider" = "";
|
|
||||||
"browser.ml.chat.shortcuts" = false;
|
|
||||||
"browser.ml.chat.shortcuts.custom" = false;
|
|
||||||
"browser.ml.chat.shortcuts.longPress" = "";
|
|
||||||
"browser.ml.chat.sidebar" = false;
|
|
||||||
|
|
||||||
"geo.provider.network.logging.enabled" = true;
|
|
||||||
"extensions.getAddons.showPane" = false;
|
|
||||||
"extensions.htmlaboutaddons.recommendations.enabled" = false;
|
|
||||||
"browser.discovery.enabled" = false;
|
|
||||||
"browser.shopping.experience2023.enabled" = false;
|
|
||||||
"datareporting.policy.dataSubmissionEnabled" = false;
|
|
||||||
"datareporting.healthreport.uploadEnabled" = false;
|
|
||||||
"toolkit.telemetry.unified" = false;
|
|
||||||
"toolkit.telemetry.enabled" = false;
|
|
||||||
"toolkit.telemetry.server" = "data:,";
|
|
||||||
"toolkit.telemetry.archive.enabled" = false;
|
|
||||||
"toolkit.telemetry.newProfilePing.enabled" = false;
|
|
||||||
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
|
||||||
"toolkit.telemetry.updatePing.enabled" = false;
|
|
||||||
"toolkit.telemetry.bhrPing.enabled" = false;
|
|
||||||
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
|
||||||
"toolkit.telemetry.coverage.opt-out" = true;
|
|
||||||
"toolkit.coverage.opt-out" = true;
|
|
||||||
"toolkit.coverage.endpoint.base" = "";
|
|
||||||
"browser.ping-centre.telemetry" = false;
|
|
||||||
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
|
|
||||||
"browser.newtabpage.activity-stream.telemetry" = false;
|
|
||||||
"app.shield.optoutstudies.enabled" = false;
|
|
||||||
"app.normandy.enabled" = false;
|
|
||||||
"app.normandy.api_url" = "";
|
|
||||||
"dom.private-attribution.submission.enabled" = false;
|
|
||||||
"browser.newtabpage.activity-stream.feeds.showWeather" = false;
|
|
||||||
"browser.newtabpage.activity-stream.feeds.weatherfeed" = false;
|
|
||||||
|
|
||||||
"browser.safebrowsing.malware.enabled" = false;
|
|
||||||
"browser.safebrowsing.phishing.enabled" = false;
|
|
||||||
"browser.safebrowsing.downloads.enabled" = false;
|
|
||||||
"browser.safebrowsing.downloads.remote.enabled" = false;
|
|
||||||
"browser.safebrowsing.downloads.remote.url" = "";
|
|
||||||
"browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false;
|
|
||||||
"browser.safebrowsing.downloads.remote.block_uncommon" = false;
|
|
||||||
"browser.safebrowsing.allowOverride" = false;
|
|
||||||
|
|
||||||
"network.prefetch-next" = false;
|
|
||||||
"network.dns.disablePrefetch" = true;
|
|
||||||
"network.dns.disablePrefetchFromHTTPS" = true;
|
|
||||||
"network.predictor.enabled" = false;
|
|
||||||
"network.predictor.enable-prefetch" = false;
|
|
||||||
"network.http.speculative-parallel-limit" = 0;
|
|
||||||
"browser.places.speculativeConnect.enabled" = false;
|
|
||||||
"browser.send_pings" = false;
|
|
||||||
|
|
||||||
"browser.urlbar.pocket.featureGate" = false;
|
|
||||||
"browser.urlbar.weather.featureGate" = false;
|
|
||||||
"browser.urlbar.speculativeConnect.enabled" = false;
|
|
||||||
"browser.urlbar.suggest.quicksuggest.nonsponsored" = false;
|
|
||||||
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
|
|
||||||
"browser.search.suggest.enabled" = false;
|
|
||||||
"browser.urlbar.suggest.searches" = false;
|
|
||||||
"browser.urlbar.trending.featureGate" = false;
|
|
||||||
|
|
||||||
"security.ssl.require_safe_negotiation" = true;
|
|
||||||
"security.remote_settings.crlite_filters.enabled" = true;
|
|
||||||
"security.pki.crlite_mode" = 2;
|
|
||||||
|
|
||||||
"dom.security.https_only_mode" = true;
|
|
||||||
"dom.security.https_only_mode_pbm" = true;
|
|
||||||
"security.ssl.treat_unsafe_negotiation_as_broken" = true;
|
|
||||||
"browser.xul.error_pages.expert_bad_cert" = true;
|
|
||||||
"network.http.referer.XOriginTrimmingPolicy" = 2;
|
|
||||||
|
|
||||||
"privacy.userContext.enabled" = true;
|
|
||||||
"privacy.userContext.ui.enabled" = true;
|
|
||||||
"privacy.userContext.newTabContainerOnLeftClick.enabled" = true;
|
|
||||||
|
|
||||||
"dom.disable_window_move_resize" = true;
|
|
||||||
|
|
||||||
"browser.uitour.enabled" = false;
|
|
||||||
|
|
||||||
"browser.uitour.url" = "";
|
|
||||||
"permissions.manager.defaultsUrl" = "";
|
|
||||||
"webchannel.allowObject.urlWhitelist" = "";
|
|
||||||
|
|
||||||
"network.IDN_show_punycode" = true;
|
|
||||||
"pdfjs.disabled" = false;
|
|
||||||
"pdfjs.enableScripting" = false;
|
|
||||||
"browser.tabs.searchclipboardfor.middleclick" = false;
|
|
||||||
"browser.download.useDownloadDir" = false;
|
|
||||||
"browser.download.alwaysOpenPanel" = false;
|
|
||||||
|
|
||||||
"browser.download.manager.addToRecentDocs" = false;
|
|
||||||
|
|
||||||
"browser.download.always_ask_before_handling_new_types" = true;
|
|
||||||
"privacy.resistFingerprinting" = true;
|
|
||||||
"privacy.resistFingerprinting.pbmode" = true;
|
|
||||||
"privacy.window.maxInnerWidth" = 1600;
|
|
||||||
"privacy.window.maxInnerHeight" = 900;
|
|
||||||
"privacy.resistFingerprinting.block_mozAddonManager" = true;
|
|
||||||
"privacy.resistFingerprinting.letterboxing" = false;
|
|
||||||
"widget.non-native-theme.enabled" = true;
|
|
||||||
"browser.link.open_newwindow" = 3;
|
|
||||||
"browser.link.open_newwindow.restriction" = 0;
|
|
||||||
"signon.rememberSignons" = false;
|
|
||||||
"dom.popup_allowed_events" = "click dblclick mousedown pointerdown";
|
|
||||||
"browser.pagethumbnails.capturing_disabled" = true;
|
|
||||||
|
|
||||||
"geo.enabled" = false;
|
|
||||||
"full-screen-api.enabled" = false;
|
|
||||||
"permissions.default.geo" = 0;
|
|
||||||
"permissions.default.camera" = 0;
|
|
||||||
"permissions.default.microphone" = 0;
|
|
||||||
"permissions.default.desktop-notification" = 0;
|
|
||||||
"permissions.default.xr" = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
programs.niri.enable = true;
|
|
||||||
home-manager.users.jade =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./notifications.nix
|
|
||||||
./terminal.nix
|
|
||||||
./layaway.nix
|
|
||||||
./swayidle.nix
|
|
||||||
./browser.nix
|
|
||||||
./eww
|
|
||||||
./niri
|
|
||||||
];
|
|
||||||
|
|
||||||
# temporary(tm)
|
|
||||||
programs.wofi.enable = true;
|
|
||||||
programs.swaylock.enable = true;
|
|
||||||
services.network-manager-applet.enable = true;
|
|
||||||
xsession.enable = true;
|
|
||||||
|
|
||||||
home.packages = [
|
|
||||||
pkgs.fluent-reader
|
|
||||||
];
|
|
||||||
|
|
||||||
services.gpg-agent = {
|
|
||||||
enable = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
enableSshSupport = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,77 +0,0 @@
|
||||||
(include "bottomBar/workspaces.yuck")
|
|
||||||
(include "bottomBar/traveldings.yuck")
|
|
||||||
|
|
||||||
(defwindow bottomBar
|
|
||||||
:monitor 0
|
|
||||||
:stacking "fg"
|
|
||||||
:wm-ignore true
|
|
||||||
:exclusive true
|
|
||||||
:geometry (geometry
|
|
||||||
:width "100%"
|
|
||||||
:height "33px"
|
|
||||||
:anchor "bottom center")
|
|
||||||
(bottomBar))
|
|
||||||
|
|
||||||
(defwidget bottomBar []
|
|
||||||
(overlay
|
|
||||||
:class "bottomBar"
|
|
||||||
(transform
|
|
||||||
:translate-y "1.5px"
|
|
||||||
(centerbox
|
|
||||||
(box
|
|
||||||
:halign "start"
|
|
||||||
(workspaceWidget)
|
|
||||||
)
|
|
||||||
(box
|
|
||||||
:halign "center"
|
|
||||||
(traveldings)
|
|
||||||
)
|
|
||||||
(box
|
|
||||||
:halign "end"
|
|
||||||
; (label :text "${iceData.speed}km/h")
|
|
||||||
(mullvadThing)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(box
|
|
||||||
:class "lesbianFlag"
|
|
||||||
:height 1
|
|
||||||
( flagEl :flipped true :color "#D52D00")
|
|
||||||
( flagEl :flipped true :color "#EF7627")
|
|
||||||
( flagEl :flipped true :color "#FF9A56")
|
|
||||||
( flagEl :flipped true :color "#FFFFFF")
|
|
||||||
( flagEl :flipped true :color "#D162A4")
|
|
||||||
( flagEl :flipped true :color "#B55690")
|
|
||||||
( flagEl :flipped true :color "#A30262")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(deflisten mullvad
|
|
||||||
:initial "{\"state\":\"init\"}"
|
|
||||||
`mullvad status -j listen`
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget mullvadThing []
|
|
||||||
(box
|
|
||||||
:class "container"
|
|
||||||
(button
|
|
||||||
:height 16
|
|
||||||
:width 16
|
|
||||||
:class "mullvad-state-${mullvad.state}"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget iceTacho []
|
|
||||||
(box
|
|
||||||
:class "iceTacho"
|
|
||||||
:tooltip "Tz${iceTachoData.tzn} (BR ${iceTachoData.br})"
|
|
||||||
(label :text "${iceTachoData.speed} km/h")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(deflisten iceTachoData
|
|
||||||
:initial "null"
|
|
||||||
{ "~/.config/eww/scripts/iceTacho.nu" }
|
|
||||||
)
|
|
|
@ -1,37 +0,0 @@
|
||||||
(defwidget traveldings []
|
|
||||||
(revealer
|
|
||||||
:class "traveldings"
|
|
||||||
:transition "crossfade"
|
|
||||||
:reveal { traveldings_data != "null" }
|
|
||||||
(traveldingsBarWidget)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget traveldingsBarWidget []
|
|
||||||
(overlay
|
|
||||||
(box
|
|
||||||
:width 640
|
|
||||||
(label
|
|
||||||
:halign "start"
|
|
||||||
:text "${traveldings_data.line} -> ${strlength(traveldings_data.arrival_station) > 24 ? "${substring(traveldings_data.arrival_station, 0, 24)}…" : traveldings_data.arrival_station}${traveldings_data.arrival_platform_data_available ? " (Gl. ${traveldings_data.arrival_platform_real})" : ""}"
|
|
||||||
)
|
|
||||||
(label
|
|
||||||
:halign "end"
|
|
||||||
:text { traveldings_data.time_left >= 3600 ? formattime(traveldings_data.time_left, "noch %-Hh %-Mmin", "Etc/UTC") : formattime(traveldings_data.time_left, "noch %-Mmin", "Etc/UTC") }
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(box
|
|
||||||
(progress
|
|
||||||
:class { traveldings_data.live ? "traveldings_live" : "traveldings_disconnected" }
|
|
||||||
:value {traveldings_data.progress * 100}
|
|
||||||
:orientation "horizontal"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
(deflisten traveldings_data
|
|
||||||
:initial "null"
|
|
||||||
"traveldings current"
|
|
||||||
)
|
|
|
@ -1,18 +0,0 @@
|
||||||
(defwidget workspaceWidget []
|
|
||||||
(box
|
|
||||||
:class "workspaces"
|
|
||||||
(for workspace in workspaces
|
|
||||||
(button
|
|
||||||
:style "border-bottom: 4px solid ${workspace.color}${workspace.active ? "; background-color: #3c3836" : ""}"
|
|
||||||
:class "${workspace.focused ? "focused" : ""}"
|
|
||||||
:onclick "swaymsg workspace ${workspace.name}"
|
|
||||||
(label :text "${workspace.idx}")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(deflisten workspaces
|
|
||||||
:initial "[]"
|
|
||||||
"bar-ws-monitor"
|
|
||||||
)
|
|
|
@ -1,58 +0,0 @@
|
||||||
label {
|
|
||||||
font: 14pt "Departure Mono Nerd Font";
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
border-radius: 0px;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.background {
|
|
||||||
background-color: #1d2021;
|
|
||||||
}
|
|
||||||
|
|
||||||
.workspaces button {
|
|
||||||
border: 0px;
|
|
||||||
padding: 0 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.workspaces button.focused {
|
|
||||||
background-color: #504935;
|
|
||||||
}
|
|
||||||
|
|
||||||
.traveldings progressbar trough {
|
|
||||||
border: none;
|
|
||||||
background-color: #3c3836;
|
|
||||||
border-bottom-right-radius: 0;
|
|
||||||
border-bottom-left-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.traveldings progressbar.traveldings_live progress {
|
|
||||||
background-color: #79740e;
|
|
||||||
border-bottom-left-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.traveldings progressbar.traveldings_disconnected progress {
|
|
||||||
background-color: #cc241d;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.traveldingsWindow {
|
|
||||||
border-radius: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mullvad-state-connected {
|
|
||||||
background-color: #98971a
|
|
||||||
}
|
|
||||||
|
|
||||||
.mullvad-state-connecting {
|
|
||||||
background-color: #d79921
|
|
||||||
}
|
|
||||||
|
|
||||||
.mullvad-state-disconnected {
|
|
||||||
background-color: #cc241d
|
|
||||||
}
|
|
||||||
|
|
||||||
.mullvad-state-init {
|
|
||||||
background-color: #458588
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
(include "topBar/topBar.yuck")
|
|
||||||
(include "bottomBar/bottomBar.yuck")
|
|
|
@ -1,78 +0,0 @@
|
||||||
#!/usr/bin/env nu
|
|
||||||
|
|
||||||
const ICONS = [
|
|
||||||
[ normal charging];
|
|
||||||
[ ]
|
|
||||||
[ ]
|
|
||||||
[ ]
|
|
||||||
[ ]
|
|
||||||
[ ]
|
|
||||||
[ ]
|
|
||||||
[ ]
|
|
||||||
[ ]
|
|
||||||
[ ]
|
|
||||||
[ ]
|
|
||||||
[ ]
|
|
||||||
];
|
|
||||||
|
|
||||||
const DELAY = 2sec;
|
|
||||||
|
|
||||||
def "main auto" [] {
|
|
||||||
loop {
|
|
||||||
let paths = ls "/sys/class/power_supply"
|
|
||||||
| each {|it| $it.name | path basename}
|
|
||||||
| filter {|it| $it starts-with "BAT"};
|
|
||||||
|
|
||||||
if ($paths | is-not-empty) {
|
|
||||||
let result = $paths
|
|
||||||
| each {|it| get_and_format $it}
|
|
||||||
| str join " | "
|
|
||||||
| prepend "| "
|
|
||||||
| str join;
|
|
||||||
|
|
||||||
print $result
|
|
||||||
} else {
|
|
||||||
print ""
|
|
||||||
}
|
|
||||||
sleep $DELAY;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def main [ path: string ] {
|
|
||||||
loop {
|
|
||||||
print (get_and_format $path)
|
|
||||||
sleep $DELAY;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def get_and_format [ path: string ] {
|
|
||||||
let fract = get_bat_charge_fraction $path;
|
|
||||||
let is_charging = get_bat_charging_status $path;
|
|
||||||
let percent = ($fract * 100) | math round;
|
|
||||||
|
|
||||||
return $"<span foreground=\"#d65d0e\">(get_bat_icon $fract $is_charging)</span> ($percent)<span foreground=\"#7c6f64\">%</span>";
|
|
||||||
}
|
|
||||||
|
|
||||||
def get_bat_charge_fraction [
|
|
||||||
path: string
|
|
||||||
] {
|
|
||||||
let energy_full = open $"/sys/class/power_supply/($path)/energy_full" | into float;
|
|
||||||
let energy_now = open $"/sys/class/power_supply/($path)/energy_now" | into float;
|
|
||||||
|
|
||||||
$energy_now / $energy_full
|
|
||||||
}
|
|
||||||
|
|
||||||
def get_bat_charging_status [
|
|
||||||
path: string
|
|
||||||
] {
|
|
||||||
let status = open $"/sys/class/power_supply/($path)/status";
|
|
||||||
|
|
||||||
$status like Charging
|
|
||||||
}
|
|
||||||
|
|
||||||
def get_bat_icon [
|
|
||||||
frac: float
|
|
||||||
is_charging = false
|
|
||||||
] {
|
|
||||||
$ICONS | get (($frac * 10) | math round) | get (if ($is_charging) { "charging" } else { "normal" })
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
#!/usr/bin/env nu
|
|
||||||
|
|
||||||
const TABLE = {
|
|
||||||
401: 280
|
|
||||||
402: 280
|
|
||||||
403: 330
|
|
||||||
406: 330
|
|
||||||
407: 320
|
|
||||||
408: 320
|
|
||||||
411: 230
|
|
||||||
415: 230
|
|
||||||
412: 265
|
|
||||||
605: 200
|
|
||||||
};
|
|
||||||
|
|
||||||
def main [ ] {
|
|
||||||
loop {
|
|
||||||
if ((iw dev wlp4s0 link | lines | filter {|it| $it =~ "WIFIonICE" } | length) == 1) {
|
|
||||||
let iceData = http get https://iceportal.de/api1/rs/status;
|
|
||||||
let tzn = $iceData.tzn;
|
|
||||||
let br = $iceData.series;
|
|
||||||
let speed = $iceData.speed;
|
|
||||||
let speedfrac = $speed / ($TABLE | get $br);
|
|
||||||
|
|
||||||
print ({
|
|
||||||
tzn: $tzn,
|
|
||||||
br: $br,
|
|
||||||
speed: $speed,
|
|
||||||
frac: $speedfrac
|
|
||||||
} | to json -r);
|
|
||||||
|
|
||||||
sleep 2sec;
|
|
||||||
} else {
|
|
||||||
print "null";
|
|
||||||
sleep 5sec;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
(deflisten bat
|
|
||||||
:initial "<span foreground=\"#cc241d\">BAT0 ERR</span>"
|
|
||||||
{ "~/.config/eww/scripts/bat.nu auto"}
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget cpu []
|
|
||||||
(box
|
|
||||||
:class "cpuIndicator"
|
|
||||||
(label
|
|
||||||
:markup "<span foreground=\"#d65d0e\"></span> ${strlength(round(EWW_CPU.avg, 0)) == 1 ? " ${round(EWW_CPU.avg, 0)}" : round(EWW_CPU.avg, 0)}<span foreground=\"#7c6f64\">%</span>"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget mem []
|
|
||||||
(box
|
|
||||||
:class "memIndicator"
|
|
||||||
(label
|
|
||||||
:markup "<span foreground=\"#d65d0e\"> </span> ${round(EWW_RAM.used_mem_perc, 0)}<span foreground=\"#7c6f64\">%</span>"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
(defwidget time []
|
|
||||||
(label
|
|
||||||
:markup {
|
|
||||||
formattime(
|
|
||||||
EWW_TIME,
|
|
||||||
"<span foreground=\"#d65d0e\"></span> %Y<span foreground=\"#7c6f64\">-</span>%m<span foreground=\"#7c6f64\">-</span>%d <span foreground=\"#d65d0e\"></span> %H<span foreground=\"#7c6f64\">:</span>%M<span foreground=\"#7c6f64\">:</span>%S "
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
|
|
@ -1,55 +0,0 @@
|
||||||
(include "topBar/time.yuck")
|
|
||||||
(include "topBar/sysinfo.yuck")
|
|
||||||
(include "util.yuck")
|
|
||||||
|
|
||||||
(defwindow topBar
|
|
||||||
:monitor 0
|
|
||||||
:stacking "fg"
|
|
||||||
:wm-ignore true
|
|
||||||
:exclusive true
|
|
||||||
:geometry (geometry
|
|
||||||
:width "100%"
|
|
||||||
:height "33px"
|
|
||||||
:anchor "top center")
|
|
||||||
(topBar))
|
|
||||||
|
|
||||||
(defwidget topBar []
|
|
||||||
(overlay
|
|
||||||
:class "topBar"
|
|
||||||
(transform
|
|
||||||
:translate-y "-1.5px"
|
|
||||||
(centerbox
|
|
||||||
(box
|
|
||||||
:halign "start"
|
|
||||||
:spacing 12
|
|
||||||
:space-evenly false
|
|
||||||
(label :text " ")
|
|
||||||
(cpu)
|
|
||||||
(sep)
|
|
||||||
(mem)
|
|
||||||
(label :markup bat)
|
|
||||||
)
|
|
||||||
(box
|
|
||||||
:halign "center"
|
|
||||||
(systray
|
|
||||||
:icon-size 18
|
|
||||||
:spacing 3
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(box
|
|
||||||
:halign "end"
|
|
||||||
(time)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(box
|
|
||||||
:class "transFlag"
|
|
||||||
:height 1
|
|
||||||
( flagEl :flipped false :color "#5BCEFA")
|
|
||||||
( flagEl :flipped false :color "#F5A9B8")
|
|
||||||
( flagEl :flipped false :color "#FFFFFF")
|
|
||||||
( flagEl :flipped false :color "#F5A9B8")
|
|
||||||
( flagEl :flipped false :color "#5BCEFA")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
|
@ -1,11 +0,0 @@
|
||||||
(defwidget flagEl [color ?flipped]
|
|
||||||
(box
|
|
||||||
:style "border-${flipped ? "top" : "bottom"}: 3px solid ${color}"
|
|
||||||
:halign "fill"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget sep []
|
|
||||||
(label :text "|")
|
|
||||||
)
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
programs.eww = {
|
|
||||||
enable = true;
|
|
||||||
configDir = ./configDir;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
# stolen: https://github.com/MultisampledNight/core/blob/678f176cb24f5dc4b5dc629cfd3e643487be01bb/system/packages/layaway/default.nix#L7-L25
|
|
||||||
layaway = pkgs.rustPlatform.buildRustPackage rec {
|
|
||||||
pname = "layaway";
|
|
||||||
version = "0.2.0";
|
|
||||||
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "MultisampledNight";
|
|
||||||
repo = pname;
|
|
||||||
rev = "v${version}";
|
|
||||||
hash = "sha256-SzAuVFEy56svasO3+1p6ysBRrIQd0UZX++/P4ZuwWm0=";
|
|
||||||
};
|
|
||||||
|
|
||||||
useFetchCargoVendor = true;
|
|
||||||
cargoHash = "sha256-QVxlkE+sq4U048LnshI/tq6HInKiSgjQLAdR+27/wEI=";
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Layout creation for Sway via a relative and human-readable DSL.";
|
|
||||||
homepage = "https://github.com/MultisampledNight/layaway";
|
|
||||||
maintainers = [ maintainers.multisn8 ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.packages = [ layaway ];
|
|
||||||
}
|
|
|
@ -1,151 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.niri.settings.binds = {
|
|
||||||
# spawn terminal
|
|
||||||
"Mod+Return".action.spawn = "kitty";
|
|
||||||
"Mod+Return".repeat = false;
|
|
||||||
"Mod+D".action.spawn = [
|
|
||||||
"wofi"
|
|
||||||
"-S"
|
|
||||||
"drun"
|
|
||||||
"--allow-images"
|
|
||||||
];
|
|
||||||
"Mod+D".repeat = false;
|
|
||||||
"Mod+I".action.spawn = [
|
|
||||||
"${pkgs.rofimoji}/bin/rofimoji"
|
|
||||||
"--selector"
|
|
||||||
"wofi"
|
|
||||||
"-f"
|
|
||||||
"alchemical_symbols"
|
|
||||||
"anatolian_hieroglyphs"
|
|
||||||
"emojis"
|
|
||||||
"braille_patterns"
|
|
||||||
"box_drawing"
|
|
||||||
"chess_symbols"
|
|
||||||
"emoticons"
|
|
||||||
"geometric_shapes"
|
|
||||||
"gothic"
|
|
||||||
"greek_extended"
|
|
||||||
"math"
|
|
||||||
"mathematical_alphanumeric_symbols"
|
|
||||||
"mathematical_operators"
|
|
||||||
"miscellaneous_symbols"
|
|
||||||
"miscellaneous_mathematical_symbols-a"
|
|
||||||
"miscellaneous_mathematical_symbols-b"
|
|
||||||
"miscellaneous_symbols_and_arrows"
|
|
||||||
"miscellaneous_symbols_and_pictographs"
|
|
||||||
"miscellaneous_technical"
|
|
||||||
"modi"
|
|
||||||
"modifier_tone_letters"
|
|
||||||
"musical_symbols"
|
|
||||||
"nerd_font"
|
|
||||||
"number_forms"
|
|
||||||
"shorthand_format_controls"
|
|
||||||
"specials"
|
|
||||||
"variation_selectors"
|
|
||||||
"vertical_forms"
|
|
||||||
"-a"
|
|
||||||
"copy"
|
|
||||||
];
|
|
||||||
|
|
||||||
"Mod+Shift+E".action.quit = [ ];
|
|
||||||
"Mod+Shift+Q".action.close-window = [ ];
|
|
||||||
"Mod+Shift+P".action.power-off-monitors = [ ];
|
|
||||||
|
|
||||||
"Mod+Shift+Ctrl+Slash".action.toggle-keyboard-shortcuts-inhibit = [ ];
|
|
||||||
"Mod+Shift+Ctrl+Slash".allow-inhibiting = false;
|
|
||||||
|
|
||||||
"Mod+Shift+Slash".action.show-hotkey-overlay = [ ];
|
|
||||||
|
|
||||||
# window/columns controls
|
|
||||||
"Mod+H".action.focus-column-left = [ ];
|
|
||||||
"Mod+J".action.focus-window-down = [ ];
|
|
||||||
"Mod+K".action.focus-window-up = [ ];
|
|
||||||
"Mod+L".action.focus-column-right = [ ];
|
|
||||||
"Mod+Ctrl+H".action.move-column-left = [ ];
|
|
||||||
"Mod+Ctrl+J".action.move-window-down = [ ];
|
|
||||||
"Mod+Ctrl+K".action.move-window-up = [ ];
|
|
||||||
"Mod+Ctrl+L".action.move-column-right = [ ];
|
|
||||||
"Mod+R".action.switch-preset-column-width = [ ];
|
|
||||||
|
|
||||||
"Mod+V".action.toggle-window-floating = [ ];
|
|
||||||
"Mod+Shift+V".action.switch-focus-between-floating-and-tiling = [ ];
|
|
||||||
|
|
||||||
# monitor controls
|
|
||||||
"Mod+Shift+H".action.focus-monitor-left = [ ];
|
|
||||||
"Mod+Shift+J".action.focus-monitor-down = [ ];
|
|
||||||
"Mod+Shift+K".action.focus-monitor-up = [ ];
|
|
||||||
"Mod+Shift+L".action.focus-monitor-right = [ ];
|
|
||||||
"Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = [ ];
|
|
||||||
"Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = [ ];
|
|
||||||
"Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = [ ];
|
|
||||||
"Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = [ ];
|
|
||||||
|
|
||||||
# workspace controls
|
|
||||||
"Mod+P".action.focus-workspace-up = [ ];
|
|
||||||
"Mod+N".action.focus-workspace-down = [ ];
|
|
||||||
"Mod+Ctrl+P".action.move-column-to-workspace-up = [ ];
|
|
||||||
"Mod+Ctrl+N".action.move-column-to-workspace-down = [ ];
|
|
||||||
"Mod+1".action.focus-workspace = 1;
|
|
||||||
"Mod+2".action.focus-workspace = 2;
|
|
||||||
"Mod+3".action.focus-workspace = 3;
|
|
||||||
"Mod+4".action.focus-workspace = 4;
|
|
||||||
"Mod+5".action.focus-workspace = 5;
|
|
||||||
"Mod+6".action.focus-workspace = 6;
|
|
||||||
"Mod+7".action.focus-workspace = 7;
|
|
||||||
"Mod+8".action.focus-workspace = 8;
|
|
||||||
"Mod+9".action.focus-workspace = 9;
|
|
||||||
"Mod+Ctrl+1".action.move-column-to-workspace = 1;
|
|
||||||
"Mod+Ctrl+2".action.move-column-to-workspace = 2;
|
|
||||||
"Mod+Ctrl+3".action.move-column-to-workspace = 3;
|
|
||||||
"Mod+Ctrl+4".action.move-column-to-workspace = 4;
|
|
||||||
"Mod+Ctrl+5".action.move-column-to-workspace = 5;
|
|
||||||
"Mod+Ctrl+6".action.move-column-to-workspace = 6;
|
|
||||||
"Mod+Ctrl+7".action.move-column-to-workspace = 7;
|
|
||||||
"Mod+Ctrl+8".action.move-column-to-workspace = 8;
|
|
||||||
"Mod+Ctrl+9".action.move-column-to-workspace = 9;
|
|
||||||
|
|
||||||
# column editing stuffs
|
|
||||||
"Mod+BracketLeft".action.consume-or-expel-window-left = [ ];
|
|
||||||
"Mod+BracketRight".action.consume-or-expel-window-right = [ ];
|
|
||||||
"Mod+F".action.maximize-column = [ ];
|
|
||||||
"Mod+Shift+F".action.expand-column-to-available-width = [ ];
|
|
||||||
"Mod+Ctrl+F".action.fullscreen-window = [ ];
|
|
||||||
"Mod+C".action.center-column = [ ];
|
|
||||||
"Mod+Minus".action.set-column-width = "-5%";
|
|
||||||
"Mod+Equal".action.set-column-width = "+5%";
|
|
||||||
"Mod+Shift+Minus".action.set-window-height = "-10%";
|
|
||||||
"Mod+Shift+Equal".action.set-window-height = "+10%";
|
|
||||||
"Mod+W".action.toggle-column-tabbed-display = [ ];
|
|
||||||
|
|
||||||
# media keys
|
|
||||||
"XF86AudioRaiseVolume".action.spawn = [
|
|
||||||
"wpctl"
|
|
||||||
"set-volume"
|
|
||||||
"@DEFAULT_AUDIO_SINK@"
|
|
||||||
"0.1+"
|
|
||||||
];
|
|
||||||
"XF86AudioLowerVolume".action.spawn = [
|
|
||||||
"wpctl"
|
|
||||||
"set-volume"
|
|
||||||
"@DEFAULT_AUDIO_SINK@"
|
|
||||||
"0.1-"
|
|
||||||
];
|
|
||||||
"XF86AudioMute".action.spawn = [
|
|
||||||
"wpctl"
|
|
||||||
"set-mute"
|
|
||||||
"@DEFAULT_AUDIO_SINK@"
|
|
||||||
"toggle"
|
|
||||||
];
|
|
||||||
"XF86AudioMicMute".action.spawn = [
|
|
||||||
"wpctl"
|
|
||||||
"set-mute"
|
|
||||||
"@DEFAULT_AUDIO_SOURCE@"
|
|
||||||
"toggle"
|
|
||||||
];
|
|
||||||
"XF86AudioRaiseVolume".allow-when-locked = true;
|
|
||||||
"XF86AudioLowerVolume".allow-when-locked = true;
|
|
||||||
"XF86AudioMute".allow-when-locked = true;
|
|
||||||
"XF86AudioMicMute".allow-when-locked = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./xwayland-sat.nix
|
|
||||||
./screenshot.nix
|
|
||||||
./input.nix
|
|
||||||
./binds.nix
|
|
||||||
./style.nix
|
|
||||||
./privacy.nix
|
|
||||||
./quirks.nix
|
|
||||||
];
|
|
||||||
programs.niri.settings = {
|
|
||||||
outputs."eDP-1" = {
|
|
||||||
scale = 1.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
spawn-at-startup = [
|
|
||||||
{
|
|
||||||
command = [
|
|
||||||
"eww"
|
|
||||||
"open-many"
|
|
||||||
"topBar"
|
|
||||||
"bottomBar"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = [
|
|
||||||
"${pkgs.swaybg}/bin/swaybg"
|
|
||||||
"-i"
|
|
||||||
"${./wallpaper.jpg}"
|
|
||||||
"-m"
|
|
||||||
"fill"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
programs.niri.settings.input = {
|
|
||||||
keyboard = {
|
|
||||||
xkb = {
|
|
||||||
layout = "us";
|
|
||||||
variant = "altgr-intl";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
touchpad = {
|
|
||||||
tap = false;
|
|
||||||
natural-scroll = true;
|
|
||||||
dwt = true;
|
|
||||||
dwtp = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
programs.niri.settings = {
|
|
||||||
layer-rules = [
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{ namespace = "notifications"; }
|
|
||||||
];
|
|
||||||
block-out-from = "screen-capture";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
window-rules = [
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{ app-id = "^signal|Element|org\.gnome\.Evolution$"; }
|
|
||||||
{ title = "^.*(Discord|Beispiel Screenshare block Bug|Bitwarden|Träwelling).*$"; }
|
|
||||||
];
|
|
||||||
excludes = [
|
|
||||||
{
|
|
||||||
title = "^.*((Schrottkatze|Statistics|Leaderboard) - Träwelling|chaos.social|Nekoverse|catgirl.cloud).*$";
|
|
||||||
}
|
|
||||||
{ is-floating = true; }
|
|
||||||
];
|
|
||||||
block-out-from = "screen-capture";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,68 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [ pkgs.gamescope ];
|
|
||||||
programs.niri.settings = {
|
|
||||||
window-rules = [
|
|
||||||
{
|
|
||||||
# handle steam grabbing focus 1000 times on startup
|
|
||||||
matches = [
|
|
||||||
{
|
|
||||||
app-id = "steam";
|
|
||||||
title = "Steam";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
open-focused = false;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
# position steam notifs correctly: https://github.com/YaLTeR/niri/wiki/Application-Issues
|
|
||||||
matches = [
|
|
||||||
{
|
|
||||||
app-id = "steam";
|
|
||||||
title = "^notificationtoasts_[\\d]+_desktop$";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
default-floating-position = {
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
relative-to = "bottom-right";
|
|
||||||
};
|
|
||||||
shadow.enable = false;
|
|
||||||
border.enable = false;
|
|
||||||
baba-is-float = false;
|
|
||||||
open-focused = false;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{
|
|
||||||
title = "Guild Wars 2";
|
|
||||||
app-id = "steam_app_1284210";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
border.enable = false;
|
|
||||||
shadow.enable = false;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{
|
|
||||||
app-id = "vesktop";
|
|
||||||
title = "vesktop";
|
|
||||||
is-floating = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
geometry-corner-radius =
|
|
||||||
let
|
|
||||||
val = 5.;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
bottom-left = val;
|
|
||||||
bottom-right = val;
|
|
||||||
top-left = val;
|
|
||||||
top-right = val;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# fix electron apps not doing wayland
|
|
||||||
environment.ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.niri.settings = {
|
|
||||||
screenshot-path = "~/Pictures/screenshots/%Y-%m-%dT%H:%M:%S.png";
|
|
||||||
binds = {
|
|
||||||
"Print".action.screenshot = [ ];
|
|
||||||
"Ctrl+Print".action.screenshot-screen = [ ];
|
|
||||||
"Shift+Print".action.screenshot-window = [ ];
|
|
||||||
"Mod+S".action.screenshot = [ ];
|
|
||||||
"Mod+Ctrl+S".action.screenshot-screen = [ ];
|
|
||||||
"Mod+Shift+S".action.screenshot-window = [ ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
float random(vec2 st) {
|
|
||||||
return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123);
|
|
||||||
}
|
|
||||||
|
|
||||||
float grid(vec2 c) {
|
|
||||||
if (mod((c.s * 512.) + random(c * niri_clamped_progress), 8.) >= 7.|| mod((c.t * 512.) + random(c * niri_clamped_progress), 8.) >= 7.) return 0.;
|
|
||||||
else return 1.;
|
|
||||||
}
|
|
||||||
|
|
||||||
vec3 grid_colored(vec2 coords, vec3 col1, vec3 col2) {
|
|
||||||
return mix(col1, col2, grid(coords));
|
|
||||||
}
|
|
||||||
|
|
||||||
vec4 gen_px_squares(vec2 coords, vec4 color) {
|
|
||||||
vec2 coords_ = coords.xy;
|
|
||||||
coords = ceil(coords * 32.) / 32.;
|
|
||||||
float p = niri_clamped_progress;
|
|
||||||
|
|
||||||
float mix_alpha =
|
|
||||||
1. - clamp((p - length(coords)) * 3.0, 0.0, 1.0);
|
|
||||||
// vec4 blue = vec4(0.3568, 0.8078, 0.9803, color.a);
|
|
||||||
vec3 blue = vec3(0.552, 0.631, 1.);
|
|
||||||
vec3 dblue = vec3(0.419, 0.482, 0.839);
|
|
||||||
|
|
||||||
if (color.a != 0. && p * p >= dot(coords, coords))
|
|
||||||
return mix(color, vec4(grid_colored(coords_, dblue, blue), color.a), mix_alpha * 0.5);
|
|
||||||
else return vec4(0.);
|
|
||||||
}
|
|
||||||
|
|
||||||
vec4 open_color(vec3 coords_geo, vec3 size_geo) {
|
|
||||||
vec3 coords_tex = niri_geo_to_tex * coords_geo;
|
|
||||||
vec4 color = texture2D(niri_tex, coords_tex.st);
|
|
||||||
|
|
||||||
vec2 coords = (coords_geo.xy - vec2(0.5, 0.5)) * size_geo.xy * 2.0;
|
|
||||||
coords = coords / length(size_geo.xy);
|
|
||||||
|
|
||||||
return gen_px_squares(coords, color);
|
|
||||||
// return vec4(vec3(grid(coords)),1.);
|
|
||||||
}
|
|
|
@ -1,86 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
programs.niri.settings = {
|
|
||||||
prefer-no-csd = true;
|
|
||||||
|
|
||||||
cursor = {
|
|
||||||
theme = "phinger-cursors-dark";
|
|
||||||
size = 16;
|
|
||||||
hide-when-typing = true;
|
|
||||||
hide-after-inactive-ms = 10000;
|
|
||||||
};
|
|
||||||
|
|
||||||
animations.window-open.easing = {
|
|
||||||
curve = "linear";
|
|
||||||
duration-ms = 350;
|
|
||||||
};
|
|
||||||
animations.shaders.window-open = builtins.readFile ./shaders/glitch-open.frag;
|
|
||||||
|
|
||||||
layout = {
|
|
||||||
gaps = 15;
|
|
||||||
focus-ring.enable = false;
|
|
||||||
border = {
|
|
||||||
enable = true;
|
|
||||||
width = 3;
|
|
||||||
inactive.gradient = {
|
|
||||||
from = "#f69ecf";
|
|
||||||
to = "#ff9a56";
|
|
||||||
in' = "oklch shorter hue";
|
|
||||||
relative-to = "window";
|
|
||||||
angle = 135;
|
|
||||||
};
|
|
||||||
active.gradient = {
|
|
||||||
from = "#f69ecf";
|
|
||||||
to = "#5bcefa";
|
|
||||||
in' = "oklch shorter hue";
|
|
||||||
relative-to = "window";
|
|
||||||
angle = 135;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
center-focused-column = "never";
|
|
||||||
empty-workspace-above-first = false;
|
|
||||||
tab-indicator = {
|
|
||||||
hide-when-single-tab = true;
|
|
||||||
active.color = "#5bcefa";
|
|
||||||
inactive.color = "#3c3836";
|
|
||||||
gap = 2;
|
|
||||||
width = 5;
|
|
||||||
corner-radius = 3;
|
|
||||||
position = "left";
|
|
||||||
gaps-between-tabs = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
window-rules = [
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{
|
|
||||||
is-floating = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
baba-is-float = true;
|
|
||||||
shadow = {
|
|
||||||
offset.y = 0;
|
|
||||||
offset.x = 0;
|
|
||||||
softness = 40;
|
|
||||||
color = "#bab9e5af";
|
|
||||||
inactive-color = "#fa9d99af";
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
geometry-corner-radius =
|
|
||||||
let
|
|
||||||
val = 1.;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
bottom-left = val;
|
|
||||||
bottom-right = val;
|
|
||||||
top-left = val;
|
|
||||||
top-right = val;
|
|
||||||
};
|
|
||||||
clip-to-geometry = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.niri.settings = {
|
|
||||||
spawn-at-startup = [
|
|
||||||
{ command = [ "${pkgs.xwayland-satellite}/bin/xwayland-satellite" ]; }
|
|
||||||
];
|
|
||||||
environment.DISPLAY = ":0";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
pkgs.libnotify
|
|
||||||
];
|
|
||||||
services.dunst = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
global = {
|
|
||||||
dmenu = "${pkgs.rofi}/bin/rofi -theme gruvbox-dark -dmenu -p dunst";
|
|
||||||
browser = "${pkgs.firefox}/bin/firefox";
|
|
||||||
mouse_left_click = "context";
|
|
||||||
mouse_middle_click = "close_current";
|
|
||||||
background = "#282828";
|
|
||||||
foreground = "#ebdbb2";
|
|
||||||
frame_color = "#504945";
|
|
||||||
frame_width = 2;
|
|
||||||
font = "Atkinson Hyperlegible";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
# unsure whether i still need swayidle, will keep it in and might remove after further testing
|
|
||||||
|
|
||||||
services.swayidle = {
|
|
||||||
enable = true;
|
|
||||||
events = [
|
|
||||||
{
|
|
||||||
event = "before-sleep";
|
|
||||||
command = "${pkgs.swaylock}/bin/swaylock -fF -c 442244";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
event = "lock";
|
|
||||||
command = "swaylock -c 441144";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
font.size = 12;
|
|
||||||
font.name = "Departure Mono Nerd Font";
|
|
||||||
shellIntegration.enableFishIntegration = false;
|
|
||||||
keybindings = {
|
|
||||||
"ctrl+shift+n" = "new_os_window_with_cwd";
|
|
||||||
};
|
|
||||||
settings = rec {
|
|
||||||
adjust_column_width = "95%";
|
|
||||||
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 = color15;
|
|
||||||
background = "#1d2021";
|
|
||||||
confirm_os_window_close = 0;
|
|
||||||
hide_window_decorations = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.sessionVariables = {
|
|
||||||
TERMINAL = "kitty";
|
|
||||||
};
|
|
||||||
}
|
|
29
modules/desktop/ios-compat.nix
Normal file
29
modules/desktop/ios-compat.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.desktop.ios-compat;
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.desktop.ios-compat = {
|
||||||
|
enable = mkEnableOption "Enable the ios compatability programs";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services = {
|
||||||
|
usbmuxd.enable = true;
|
||||||
|
gvfs.enable = true;
|
||||||
|
};
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
libimobiledevice
|
||||||
|
libimobiledevice-glue
|
||||||
|
ifuse
|
||||||
|
usbmuxd
|
||||||
|
libusbmuxd
|
||||||
|
gvfs
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
22
modules/desktop/kdeconnect.nix
Normal file
22
modules/desktop/kdeconnect.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.desktop.kdeconnect;
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.desktop.kdeconnect = {
|
||||||
|
enable = mkEnableOption "Enable KDE connect";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.kdeconnect.enable = true;
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
services.kdeconnect = {
|
||||||
|
enable = true;
|
||||||
|
indicator = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,15 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
time.timeZone = "Europe/Berlin";
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "de_DE.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
|
||||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
|
||||||
LC_MONETARY = "de_DE.UTF-8";
|
|
||||||
LC_NAME = "de_DE.UTF-8";
|
|
||||||
LC_NUMERIC = "de_DE.UTF-8";
|
|
||||||
LC_PAPER = "de_DE.UTF-8";
|
|
||||||
LC_TELEPHONE = "de_DE.UTF-8";
|
|
||||||
LC_TIME = "de_DE.UTF-8";
|
|
||||||
};
|
|
||||||
}
|
|
77
modules/desktop/mail.nix
Normal file
77
modules/desktop/mail.nix
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.desktop.mail;
|
||||||
|
imap = {
|
||||||
|
host = "imap.migadu.com";
|
||||||
|
port = 993;
|
||||||
|
};
|
||||||
|
smtp = {
|
||||||
|
host = "smtp.migadu.com";
|
||||||
|
port = 465;
|
||||||
|
tls.enable = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.desktop.mail = {
|
||||||
|
enable = mkEnableOption "Enable thunderbird mail stuff";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
accounts.email.accounts = {
|
||||||
|
"Jade" = rec {
|
||||||
|
inherit imap smtp;
|
||||||
|
address = "jade@schrottkatze.de";
|
||||||
|
userName = address;
|
||||||
|
realName = "Jade";
|
||||||
|
thunderbird.enable = true;
|
||||||
|
primary = true;
|
||||||
|
};
|
||||||
|
"Logins" = rec {
|
||||||
|
inherit imap smtp;
|
||||||
|
address = "logins@schrottkatze.de";
|
||||||
|
userName = address;
|
||||||
|
realName = "Logins";
|
||||||
|
thunderbird.enable = true;
|
||||||
|
};
|
||||||
|
"Contact" = rec {
|
||||||
|
inherit imap smtp;
|
||||||
|
address = "contact@schrottkatze.de";
|
||||||
|
userName = address;
|
||||||
|
realName = "Jade";
|
||||||
|
thunderbird.enable = true;
|
||||||
|
};
|
||||||
|
"Schule" = rec {
|
||||||
|
inherit imap smtp;
|
||||||
|
address = "schule@schrottkatze.de";
|
||||||
|
userName = address;
|
||||||
|
realName = "Jade";
|
||||||
|
thunderbird.enable = true;
|
||||||
|
};
|
||||||
|
"Admin" = rec {
|
||||||
|
inherit imap smtp;
|
||||||
|
address = "admin@schrottkatze.de";
|
||||||
|
userName = address;
|
||||||
|
realName = "admin";
|
||||||
|
thunderbird.enable = true;
|
||||||
|
};
|
||||||
|
"CatchAll" = rec {
|
||||||
|
inherit imap smtp;
|
||||||
|
address = "catchall@schrottkatze.de";
|
||||||
|
userName = address;
|
||||||
|
realName = "Catch all";
|
||||||
|
thunderbird.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
profiles.jade = {
|
||||||
|
isDefault = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
69
modules/desktop/networking.nix
Normal file
69
modules/desktop/networking.nix
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
addNuShebang = path:
|
||||||
|
builtins.concatStringsSep "\n\n" [
|
||||||
|
"#!${pkgs.nushellFull}/bin/nu"
|
||||||
|
(builtins.readFile path)
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
config = {
|
||||||
|
networking = {
|
||||||
|
networkmanager = {
|
||||||
|
wifi.backend = "wpa_supplicant";
|
||||||
|
dispatcherScripts = [
|
||||||
|
{
|
||||||
|
type = "basic";
|
||||||
|
source = pkgs.writeText "dispatcher" (addNuShebang ../../other/scripts/dispatcher.nu);
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
hosts = {
|
||||||
|
"127.0.0.1" = [
|
||||||
|
"www.tiktok.com"
|
||||||
|
"www.twitter.com"
|
||||||
|
"www.instagram.com"
|
||||||
|
"www.facebook.com"
|
||||||
|
"www.snapchat.com"
|
||||||
|
|
||||||
|
"tiktok.com"
|
||||||
|
"twitter.com"
|
||||||
|
"instagram.com"
|
||||||
|
"facebook.com"
|
||||||
|
"snapchat.com"
|
||||||
|
|
||||||
|
"google-analytics.com"
|
||||||
|
"stats.g.doubleclick.net"
|
||||||
|
"googleadservices.com"
|
||||||
|
"googletagmanager.com"
|
||||||
|
"googletagservices.com"
|
||||||
|
"googlesyndication.com"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
environment.etc = with builtins; (
|
||||||
|
listToAttrs (
|
||||||
|
map (v: {
|
||||||
|
name = "networkhooks/${v}";
|
||||||
|
value = {
|
||||||
|
text = addNuShebang ../../other/scripts/networkhooks/${v};
|
||||||
|
mode = "0755";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
(attrNames (readDir ../../other/scripts/networkhooks))
|
||||||
|
)
|
||||||
|
);
|
||||||
|
systemd.services."NetworkManager-wait-online".enable = false;
|
||||||
|
services.mullvad-vpn.enable = true;
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
networkmanagerapplet
|
||||||
|
mullvad-vpn
|
||||||
|
speedtest-cli
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
150
modules/desktop/polybar.nix
Normal file
150
modules/desktop/polybar.nix
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
config = {
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
services.polybar = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.polybarFull;
|
||||||
|
|
||||||
|
script = "";
|
||||||
|
settings = {
|
||||||
|
colors = {
|
||||||
|
background = "#282828";
|
||||||
|
background-alt = "#3c3836";
|
||||||
|
foreground = "#ebdbb2";
|
||||||
|
primary = "#d65d0e";
|
||||||
|
secondary = "#fe8019";
|
||||||
|
alert = "#cc241d";
|
||||||
|
disabled = "#504945";
|
||||||
|
};
|
||||||
|
"bar/status" = {
|
||||||
|
# Style
|
||||||
|
bottom = true;
|
||||||
|
width = "100%";
|
||||||
|
height = "24px";
|
||||||
|
radius = 0;
|
||||||
|
tray-position = "center";
|
||||||
|
background = "\${colors.background}";
|
||||||
|
foreground = "\${colors.foreground}";
|
||||||
|
line-size = "4px";
|
||||||
|
border-color = "#00000000";
|
||||||
|
padding-left = 0;
|
||||||
|
padding-right = 1;
|
||||||
|
module-margin = 1;
|
||||||
|
separator = "|";
|
||||||
|
separator-foreground = "\${colors.disabled}";
|
||||||
|
font-0 = "FiraCode Nerd Font";
|
||||||
|
modules-left = "xworkspaces xwindow";
|
||||||
|
modules-right = "memory cpu wlan bat0 bat1";
|
||||||
|
cursor-click = "pointer";
|
||||||
|
cursor-scroll = "ns-resize";
|
||||||
|
enable-ipc = true;
|
||||||
|
wm-restack = "generic";
|
||||||
|
override-redirect = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/xworkspaces" = {
|
||||||
|
type = "internal/xworkspaces";
|
||||||
|
label-active = "";
|
||||||
|
label-active-padding = 1;
|
||||||
|
label-occupied = "";
|
||||||
|
label-occupied-padding = 1;
|
||||||
|
label-urgent = "";
|
||||||
|
label-urgent-foreground = "\${colors.alert}";
|
||||||
|
label-urgent-padding = 1;
|
||||||
|
label-empty = "";
|
||||||
|
label-empty-foreground = "\${colors.disabled}";
|
||||||
|
label-empty-padding = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/xwindow" = {
|
||||||
|
type = "internal/xwindow";
|
||||||
|
label = "%title:0:60:...%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/memory" = {
|
||||||
|
type = "internal/memory";
|
||||||
|
interval = 2;
|
||||||
|
format-prefix = " ";
|
||||||
|
format-prefix-foreground = "\${colors.primary}";
|
||||||
|
label = "%percentage_used:2%%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/cpu" = {
|
||||||
|
type = "internal/cpu";
|
||||||
|
interval = "2";
|
||||||
|
format-prefix = " ";
|
||||||
|
format-prefix-foreground = "\${colors.primary}";
|
||||||
|
label = "%percentage:2%%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"network-base" = {
|
||||||
|
type = "internal/network";
|
||||||
|
interval = 5;
|
||||||
|
format-connected = "<ramp-signal> <label-connected>";
|
||||||
|
format-disconnected = "<label-disconnected>";
|
||||||
|
label-disconnected = "";
|
||||||
|
label-disconnected-foreground = "#d65d0e";
|
||||||
|
ramp.signal = [
|
||||||
|
"%{F#cc241d}"
|
||||||
|
"%{F#d79921}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/wlan" = {
|
||||||
|
"inherit" = "network-base";
|
||||||
|
interface-type = "wireless";
|
||||||
|
label-connected = "%{F#F0C674}%{F-} %local_ip%";
|
||||||
|
};
|
||||||
|
"battery-base" = {
|
||||||
|
type = "internal/battery";
|
||||||
|
poll-interval = 1;
|
||||||
|
time-format = "%H%{F#7c6f64}:%{F#d5c4a1}%M";
|
||||||
|
label-charging = "%{F#98971a} %{F#ebdbb2}%percentage%%%{F#d5c4a1} %time%";
|
||||||
|
format-charging = "<ramp-capacity> <label-charging>";
|
||||||
|
label-discharging = "%{F#ebdbb2}%percentage%%%{F#bdae93} %time%";
|
||||||
|
format-discharging = "<ramp-capacity> <label-discharging>";
|
||||||
|
label-full = "%{F#98971a}%{F#ebdbb2} %percentage%%";
|
||||||
|
format-full = "<label-full>";
|
||||||
|
label-low = "%{F#cc241d}%{F#ebdbb2} %percentage%%";
|
||||||
|
format-low = "<label-low>";
|
||||||
|
ramp.capacity = [
|
||||||
|
"%{F#cc241d}"
|
||||||
|
"%{F#d79921}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"module/bat0" = {
|
||||||
|
"inherit" = "battery-base";
|
||||||
|
battery = "BAT0";
|
||||||
|
adapter = "ADP1";
|
||||||
|
};
|
||||||
|
"module/bat1" = {
|
||||||
|
"inherit" = "battery-base";
|
||||||
|
battery = "BAT1";
|
||||||
|
adapter = "ADP1";
|
||||||
|
};
|
||||||
|
|
||||||
|
"settings" = {
|
||||||
|
screenchange-reload = true;
|
||||||
|
pseudo-transparency = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,20 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
services.printing = {
|
|
||||||
enable = true;
|
|
||||||
drivers = with pkgs; [
|
|
||||||
gutenprint
|
|
||||||
gutenprintBin
|
|
||||||
hplip
|
|
||||||
brlaser
|
|
||||||
brgenml1lpr
|
|
||||||
brgenml1cupswrapper
|
|
||||||
ptouch-driver
|
|
||||||
epsonscan2
|
|
||||||
epson-escpr
|
|
||||||
epson-escpr2
|
|
||||||
epson_201207w
|
|
||||||
epson-alc1100
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
23
modules/desktop/social.nix
Normal file
23
modules/desktop/social.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.desktop.social;
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.desktop.social = {
|
||||||
|
enable = mkEnableOption "Enable social apps";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
evolutionWithPlugins
|
||||||
|
signal-desktop
|
||||||
|
mumble
|
||||||
|
element-desktop
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -3,11 +3,9 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./spacenav.nix
|
./spacenav.nix
|
||||||
./wacom.nix
|
./wacom.nix
|
||||||
./hardware_key.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
|
@ -1,11 +1,10 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
spacenavd
|
spacenavd
|
||||||
libspnav
|
libspnav
|
||||||
];
|
];
|
||||||
systemd.services.spacenavd = {
|
systemd.services.spacenavd = {
|
||||||
wantedBy = [ "graphical.target" ];
|
wantedBy = ["graphical.target"];
|
||||||
script = "${pkgs.spacenavd}/bin/spacenavd -d";
|
script = "${pkgs.spacenavd}/bin/spacenavd -d";
|
||||||
};
|
};
|
||||||
}
|
}
|
10
modules/desktop/specific-hardware/wacom.nix
Normal file
10
modules/desktop/specific-hardware/wacom.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{...}: {
|
||||||
|
services.xserver.wacom.enable = true;
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
home.packages = [
|
||||||
|
# TODO: figure out if the previous enabled option depends on these anyway
|
||||||
|
pkgs.libwacom
|
||||||
|
pkgs.wacomtablet
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
21
modules/desktop/syncthing.nix
Normal file
21
modules/desktop/syncthing.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.desktop.syncthing;
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.desktop.syncthing = {
|
||||||
|
enable = mkEnableOption "Enable syncing via syncthing";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.syncthing = rec {
|
||||||
|
enable = true;
|
||||||
|
user = "jade";
|
||||||
|
dataDir = "/home/${user}/Documents";
|
||||||
|
configDir = "/home/${user}/Documents/.config/syncthing";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,46 +1,19 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
stylix = {
|
config,
|
||||||
enable = true;
|
lib,
|
||||||
polarity = "dark";
|
pkgs,
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
|
...
|
||||||
fonts = {
|
}: {
|
||||||
serif = {
|
config = {
|
||||||
package = pkgs.libertine;
|
fonts.packages = with pkgs; [
|
||||||
name = "Linux Libertine O";
|
atkinson-hyperlegible
|
||||||
};
|
];
|
||||||
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
sansSerif = {
|
home.packages = with pkgs; [
|
||||||
package = pkgs.atkinson-hyperlegible;
|
gtk-engine-murrine
|
||||||
name = "Atkinson Hyperlegible";
|
gruvbox-dark-gtk
|
||||||
};
|
gruvbox-dark-icons-gtk
|
||||||
|
];
|
||||||
monospace = {
|
|
||||||
package = pkgs.nerd-fonts.departure-mono;
|
|
||||||
name = "Departure Mono Nerd Font";
|
|
||||||
};
|
|
||||||
|
|
||||||
emoji = {
|
|
||||||
package = pkgs.noto-fonts-emoji;
|
|
||||||
name = "Noto Color Emoji";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home-manager.users.jade =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
stylix.targets = {
|
|
||||||
firefox = {
|
|
||||||
profileNames = [ "jade" ];
|
|
||||||
};
|
|
||||||
helix.enable = false;
|
|
||||||
btop.enable = false;
|
|
||||||
nushell.enable = false;
|
|
||||||
starship.enable = false;
|
|
||||||
kitty.enable = false;
|
|
||||||
dunst.enable = false;
|
|
||||||
wofi.enable = false;
|
|
||||||
};
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
cursorTheme = {
|
cursorTheme = {
|
||||||
|
@ -48,10 +21,24 @@
|
||||||
name = "phinger-cursors";
|
name = "phinger-cursors";
|
||||||
size = 30;
|
size = 30;
|
||||||
};
|
};
|
||||||
|
font = {
|
||||||
|
package = pkgs.atkinson-hyperlegible;
|
||||||
|
name = "Atkinson Hyperlegible";
|
||||||
|
size = 11.5;
|
||||||
|
};
|
||||||
iconTheme = {
|
iconTheme = {
|
||||||
package = pkgs.gruvbox-dark-icons-gtk;
|
package = pkgs.gruvbox-dark-icons-gtk;
|
||||||
name = "gruvbox-dark-icons";
|
name = "gruvbox-dark-icons";
|
||||||
};
|
};
|
||||||
|
theme = {
|
||||||
|
package = pkgs.gruvbox-dark-gtk;
|
||||||
|
name = "gruvbox-dark";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
platformTheme = "gtk";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
services.tlp = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
START_CHARGE_THRESH_BAT0 = "70";
|
|
||||||
STOP_CHARGE_TRESH_BAT0 = "85";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
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;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -3,8 +3,7 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
config = {
|
config = {
|
||||||
networking = {
|
networking = {
|
||||||
firewall = {
|
firewall = {
|
||||||
|
@ -17,6 +16,9 @@
|
||||||
80
|
80
|
||||||
443
|
443
|
||||||
|
|
||||||
|
# syncthing web ui
|
||||||
|
8384
|
||||||
|
|
||||||
# syncthing
|
# syncthing
|
||||||
22000
|
22000
|
||||||
|
|
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
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
80
modules/git.nix
Normal file
80
modules/git.nix
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home-manager.users.jade = {
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "Schrottkatze";
|
||||||
|
userEmail = "git@schrottkatze.de";
|
||||||
|
aliases = {
|
||||||
|
a = "add";
|
||||||
|
c = "commit";
|
||||||
|
ca = "commit --all";
|
||||||
|
p = "push";
|
||||||
|
pl = "pull";
|
||||||
|
s = "status";
|
||||||
|
};
|
||||||
|
signing = {
|
||||||
|
key = "${pkgs.writeText "red_nk3.pub" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOaE8TFsIazpn4OnHvHcRpOFr9FfvMaWOiEjmHsmnAoE cardno:000F_70CD7D05"}";
|
||||||
|
signByDefault = true;
|
||||||
|
};
|
||||||
|
extraConfig = {
|
||||||
|
gpg = {
|
||||||
|
format = "ssh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.jujutsu = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
user = {
|
||||||
|
name = config.programs.git.userName;
|
||||||
|
email = config.programs.git.userEmail;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.gitui = {
|
||||||
|
enable = true;
|
||||||
|
keyConfig = ''
|
||||||
|
(
|
||||||
|
open_help: Some(( code: F(1), modifiers: ( bits: 0,),)),
|
||||||
|
|
||||||
|
move_left: Some(( code: Char('h'), modifiers: ( bits: 0,),)),
|
||||||
|
move_right: Some(( code: Char('l'), modifiers: ( bits: 0,),)),
|
||||||
|
move_up: Some(( code: Char('k'), modifiers: ( bits: 0,),)),
|
||||||
|
move_down: Some(( code: Char('j'), modifiers: ( bits: 0,),)),
|
||||||
|
|
||||||
|
popup_up: Some(( code: Char('p'), modifiers: ( bits: 2,),)),
|
||||||
|
popup_down: Some(( code: Char('n'), modifiers: ( bits: 2,),)),
|
||||||
|
page_up: Some(( code: Char('b'), modifiers: ( bits: 2,),)),
|
||||||
|
page_down: Some(( code: Char('f'), modifiers: ( bits: 2,),)),
|
||||||
|
home: Some(( code: Char('g'), modifiers: ( bits: 0,),)),
|
||||||
|
end: Some(( code: Char('G'), modifiers: ( bits: 1,),)),
|
||||||
|
shift_up: Some(( code: Char('K'), modifiers: ( bits: 1,),)),
|
||||||
|
shift_down: Some(( code: Char('J'), modifiers: ( bits: 1,),)),
|
||||||
|
|
||||||
|
edit_file: Some(( code: Char('I'), modifiers: ( bits: 1,),)),
|
||||||
|
|
||||||
|
status_reset_item: Some(( code: Char('U'), modifiers: ( bits: 1,),)),
|
||||||
|
|
||||||
|
diff_reset_lines: Some(( code: Char('u'), modifiers: ( bits: 0,),)),
|
||||||
|
diff_stage_lines: Some(( code: Char('s'), modifiers: ( bits: 0,),)),
|
||||||
|
|
||||||
|
stashing_save: Some(( code: Char('w'), modifiers: ( bits: 0,),)),
|
||||||
|
stashing_toggle_index: Some(( code: Char('m'), modifiers: ( bits: 0,),)),
|
||||||
|
|
||||||
|
stash_open: Some(( code: Char('l'), modifiers: ( bits: 0,),)),
|
||||||
|
|
||||||
|
abort_merge: Some(( code: Char('M'), modifiers: ( bits: 1,),)),
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,37 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.jade.hwKey;
|
|
||||||
in
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.jade.hwKey = {
|
|
||||||
pamAuth.enable = mkEnableOption "Enable PAM authentication with hardware keys";
|
|
||||||
};
|
|
||||||
config = {
|
|
||||||
# nitrokey
|
|
||||||
services.udev.packages = [ pkgs.nitrokey-udev-rules ];
|
|
||||||
|
|
||||||
# smartcard daemon
|
|
||||||
services.pcscd.enable = true;
|
|
||||||
|
|
||||||
# authenticate using hw key
|
|
||||||
security.pam = {
|
|
||||||
services.jade.u2fAuth = cfg.pamAuth.enable;
|
|
||||||
u2f = {
|
|
||||||
enable = true;
|
|
||||||
control = "sufficient";
|
|
||||||
settings = {
|
|
||||||
cue = true;
|
|
||||||
authFile = "/home/jade/.ssh/u2f_keys";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.i3lock.u2fSupport = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
services.xserver.wacom.enable = true;
|
|
||||||
home-manager.users.jade =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
# TODO: figure out if the previous enabled option depends on these anyway
|
|
||||||
pkgs.libwacom
|
|
||||||
pkgs.wacomtablet
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./evremap.nix
|
|
||||||
];
|
|
||||||
services = {
|
|
||||||
libinput = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
xserver = {
|
|
||||||
xkb = {
|
|
||||||
layout = "us";
|
|
||||||
variant = "altgr-intl";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,133 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
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=";
|
|
||||||
};
|
|
||||||
useFetchCargoVendor = true;
|
|
||||||
cargoHash = "sha256-O1rJ48m8Q7kZABw/UNpmUT7FFBWQedo6CuV+NX9kDt8=";
|
|
||||||
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
|
|
||||||
{
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
serviceConfig.ExecStart = "-${evremap}/bin/evremap remap ${cfgFile}";
|
|
||||||
unitConfig = {
|
|
||||||
Restart = "on-failure";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}) (length devs)
|
|
||||||
);
|
|
||||||
environment.systemPackages = [ evremap ];
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
73
modules/kmscon.nix
Normal file
73
modules/kmscon.nix
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# generate shell command options for kmscon fom an attrset
|
||||||
|
generateOptions = with builtins; (
|
||||||
|
opts:
|
||||||
|
toString (
|
||||||
|
attrValues (
|
||||||
|
mapAttrs (name: value: "--${name} ${toString value}") opts
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
# generate a hexadecimal number lookup table to get integers from them
|
||||||
|
hexLookupTable = with lib; (listToAttrs (genList (i: {
|
||||||
|
name = let
|
||||||
|
r = toHexString i;
|
||||||
|
in (
|
||||||
|
# pad with 0 in front if only 1 digit
|
||||||
|
if (stringLength r) == 1
|
||||||
|
then "0${r}"
|
||||||
|
else r
|
||||||
|
);
|
||||||
|
value = toString i;
|
||||||
|
})
|
||||||
|
256));
|
||||||
|
# "parse" hex color strings and convert them to kmscon options
|
||||||
|
hexToOpt = with lib; (color:
|
||||||
|
concatStringsSep "," [
|
||||||
|
(getAttr (substring 1 2 (toUpper color)) hexLookupTable)
|
||||||
|
(getAttr (substring 3 2 (toUpper color)) hexLookupTable)
|
||||||
|
(getAttr (substring 5 2 (toUpper color)) hexLookupTable)
|
||||||
|
]);
|
||||||
|
in {
|
||||||
|
services.kmscon = {
|
||||||
|
enable = true;
|
||||||
|
fonts = [
|
||||||
|
{
|
||||||
|
name = "FiraCode Nerd Font";
|
||||||
|
package = pkgs.nerdfonts.override {fonts = ["FiraCode"];};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
extraConfig = "font-size=14";
|
||||||
|
# extraOptions = "--term xterm-256color";
|
||||||
|
extraOptions = generateOptions {
|
||||||
|
xkb-layout = config.services.xserver.xkb.layout;
|
||||||
|
xkb-variant = config.services.xserver.xkb.variant;
|
||||||
|
|
||||||
|
palette = "custom";
|
||||||
|
palette-foreground = hexToOpt "#ebdbb2";
|
||||||
|
palette-background = hexToOpt "#282828";
|
||||||
|
palette-black = hexToOpt "#282828";
|
||||||
|
palette-red = hexToOpt "#cc241d";
|
||||||
|
palette-green = hexToOpt "#98971a";
|
||||||
|
palette-yellow = hexToOpt "#d79921";
|
||||||
|
palette-blue = hexToOpt "#458588";
|
||||||
|
palette-magenta = hexToOpt "#b16286";
|
||||||
|
palette-cyan = hexToOpt "#689d6a";
|
||||||
|
palette-light-grey = hexToOpt "#a89984";
|
||||||
|
palette-dark-grey = hexToOpt "#928374";
|
||||||
|
palette-light-red = hexToOpt "#fb4934";
|
||||||
|
palette-light-green = hexToOpt "#b8bb26";
|
||||||
|
palette-light-yellow = hexToOpt "#fabd2f";
|
||||||
|
palette-light-blue = hexToOpt "#83a598";
|
||||||
|
palette-light-magenta = hexToOpt "#d3869b";
|
||||||
|
palette-light-cyan = hexToOpt "#8ec07c";
|
||||||
|
palette-white = hexToOpt "#ebdbb2";
|
||||||
|
};
|
||||||
|
hwRender = true;
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,60 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
pkgs-stable,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.jade.desktop.media;
|
|
||||||
in
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./obs.nix
|
|
||||||
./fonts.nix
|
|
||||||
];
|
|
||||||
options.jade.desktop.media.videoEditing = mkEnableOption "Enable Video editing software";
|
|
||||||
config = {
|
|
||||||
home-manager.users.jade =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [ ./typst.nix ];
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# creative software basics
|
|
||||||
pastel
|
|
||||||
krita
|
|
||||||
gimp
|
|
||||||
drawing
|
|
||||||
inkscape-with-extensions
|
|
||||||
pixelorama
|
|
||||||
rawtherapee
|
|
||||||
scribus
|
|
||||||
audacity
|
|
||||||
|
|
||||||
openscad-unstable
|
|
||||||
openscad-lsp
|
|
||||||
|
|
||||||
imagemagick
|
|
||||||
ffmpeg_7-full
|
|
||||||
|
|
||||||
libreoffice
|
|
||||||
|
|
||||||
# viewers
|
|
||||||
pkgs-stable.font-manager
|
|
||||||
yt-dlp
|
|
||||||
|
|
||||||
syncplay
|
|
||||||
|
|
||||||
vlc
|
|
||||||
mpv
|
|
||||||
evince
|
|
||||||
nomacs
|
|
||||||
jellyfin-media-player
|
|
||||||
|
|
||||||
(mkIf cfg.videoEditing kdePackages.kdenlive)
|
|
||||||
(mkIf cfg.videoEditing glaxnimate)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,51 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
nixpkgs.config.packageOverrides = pkgs: {
|
|
||||||
google-fonts = pkgs.google-fonts.overrideAttrs (oldAttrs: {
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "google";
|
|
||||||
repo = "fonts";
|
|
||||||
rev = "8a0041ea7b92e339a7ce13e4e1dadcc85cb8f5df";
|
|
||||||
sha256 = "sha256-9TzeihEKIEDRtDuv+NmLWjTpoGnBR+RP/jIBfB1O06U=";
|
|
||||||
};
|
|
||||||
installPhase = oldAttrs.installPhase + "mv $out/share/fonts/truetype $out/share/fonts/ttf";
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
packages = with pkgs; [
|
|
||||||
nerd-fonts.fira-code
|
|
||||||
nerd-fonts.departure-mono
|
|
||||||
google-fonts
|
|
||||||
montserrat
|
|
||||||
noto-fonts
|
|
||||||
atkinson-hyperlegible
|
|
||||||
arkpandora_ttf
|
|
||||||
liberation_ttf
|
|
||||||
caladea
|
|
||||||
carlito
|
|
||||||
garamond-libre
|
|
||||||
ocr-a
|
|
||||||
amiri
|
|
||||||
libertine
|
|
||||||
inter
|
|
||||||
b612
|
|
||||||
departure-mono
|
|
||||||
];
|
|
||||||
fontDir.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.jade =
|
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
fonts.fontconfig = {
|
|
||||||
enable = true;
|
|
||||||
defaultFonts = {
|
|
||||||
emoji = [ ];
|
|
||||||
monospace = [ ];
|
|
||||||
sansSerif = [ "Atkinson Hyperlegible" ];
|
|
||||||
serif = [ ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.jade.desktop.media.obs;
|
|
||||||
in
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.jade.desktop.media.obs = mkEnableOption "Enable OBS";
|
|
||||||
|
|
||||||
config = mkIf cfg {
|
|
||||||
programs.obs-studio.enableVirtualCamera = true;
|
|
||||||
# OBS stuffs
|
|
||||||
environment.systemPackages = [
|
|
||||||
(pkgs.wrapOBS {
|
|
||||||
plugins = with pkgs.obs-studio-plugins; [
|
|
||||||
wlrobs
|
|
||||||
obs-backgroundremoval
|
|
||||||
obs-pipewire-audio-capture
|
|
||||||
waveform
|
|
||||||
obs-3d-effect
|
|
||||||
];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
extraModulePackages = with config.boot.kernelPackages; [
|
|
||||||
v4l2loopback
|
|
||||||
];
|
|
||||||
extraModprobeConfig = ''
|
|
||||||
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
typst-within,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
packages = {
|
|
||||||
typst-configs = pkgs.fetchFromGitea {
|
|
||||||
domain = "forge.katzen.cafe";
|
|
||||||
owner = "schrottkatze";
|
|
||||||
repo = "typst-configs";
|
|
||||||
rev = "9a5bd5256ace2a56de51b89793f191b4eecce1dc"; # :REV:- rev = "%REV%";-:#
|
|
||||||
sha256 = "sha256-E+5fJULNxM0XcbimuENqIJC24ZwPRMSHnG97ncBtEGw="; # :SHA:- sha256 = "%SHA%";-:#
|
|
||||||
};
|
|
||||||
flow = pkgs.fetchFromGitHub {
|
|
||||||
owner = "MultisampledNight";
|
|
||||||
repo = "flow";
|
|
||||||
rev = "f5c653c706d80145165ec684b217b803a0246e8c";
|
|
||||||
sha256 = "sha256-tXfogxo1DGmsrwjOhF2h+60825P6NVcgQGN6Q1tspZA=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
mkTypstPath = name: ".local/share/typst/packages/local/${name}/0.1.0";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.file = {
|
|
||||||
typst-configs = {
|
|
||||||
target = mkTypstPath "typst-configs";
|
|
||||||
source = packages.typst-configs;
|
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
flow = {
|
|
||||||
target = mkTypstPath "flow";
|
|
||||||
source = packages.flow;
|
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# home.packages = [typst-within.packages."x86_64-linux".default];
|
|
||||||
home.packages = [
|
|
||||||
pkgs.typst
|
|
||||||
|
|
||||||
# `typed` dependencies
|
|
||||||
pkgs.mupdf
|
|
||||||
pkgs.inotify-tools
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./firewall.nix
|
|
||||||
./hosts.nix
|
|
||||||
./eduroam.nix
|
|
||||||
./dispatchers
|
|
||||||
];
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
networking.networkmanager.wifi.backend = "wpa_supplicant";
|
|
||||||
|
|
||||||
systemd.services."NetworkManager-wait-online".enable = false;
|
|
||||||
services.mullvad-vpn.enable = true;
|
|
||||||
home-manager.users.jade =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
networkmanagerapplet
|
|
||||||
mullvad-vpn
|
|
||||||
macchanger
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
let
|
|
||||||
addNuShebang =
|
|
||||||
path:
|
|
||||||
builtins.concatStringsSep "\n\n" [
|
|
||||||
"#!${pkgs.nushell}/bin/nu"
|
|
||||||
(builtins.readFile path)
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
networking.networkmanager.dispatcherScripts = [
|
|
||||||
{
|
|
||||||
type = "basic";
|
|
||||||
source = pkgs.writeText "dispatcher" (addNuShebang ./dispatcher.nu);
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.etc =
|
|
||||||
with builtins;
|
|
||||||
(listToAttrs (
|
|
||||||
map (v: {
|
|
||||||
name = "networkhooks/${v}";
|
|
||||||
value = {
|
|
||||||
text = addNuShebang ./hooks/${v};
|
|
||||||
mode = "0755";
|
|
||||||
};
|
|
||||||
}) (attrNames (readDir ./hooks))
|
|
||||||
));
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
# Thanks @ kloenk (@kloenk@catcatnya.com) for making this for me at MRMCD 2024 :33
|
|
||||||
{ pkgs-stable, ... }:
|
|
||||||
let
|
|
||||||
caDir = "/var/lib/easyroam";
|
|
||||||
uuid = "821ad781-76a3-447f-a2e8-c7f18a1df3bc";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
systemd.services.easyroam = {
|
|
||||||
requires = [ "NetworkManager.service" ];
|
|
||||||
after = [ "NetworkManager.service" ];
|
|
||||||
requiredBy = [ "network-online.target" ];
|
|
||||||
path = with pkgs-stable; [
|
|
||||||
networkmanager
|
|
||||||
openssl
|
|
||||||
gnused
|
|
||||||
];
|
|
||||||
script = ''
|
|
||||||
set -x
|
|
||||||
openssl pkcs12 -password pass: -in ${caDir}/my_easyroam_cert.p12 -legacy -nokeys | openssl x509 > ${caDir}/easyroam_client_cert.pem
|
|
||||||
cn=$(openssl x509 -noout -subject -in ${caDir}/easyroam_client_cert.pem -legacy | sed 's/.*CN = \(.*\), C.*/\1/')
|
|
||||||
openssl pkcs12 -legacy -password pass: -in ${caDir}/my_easyroam_cert.p12 -nodes -nocerts | openssl rsa -aes256 -passin pass: -passout pass:meow -out ${caDir}/easyroam_client_key.pem
|
|
||||||
openssl pkcs12 -password pass: -in ${caDir}/my_easyroam_cert.p12 -legacy -cacerts -nokeys > ${caDir}/easyroam_root_ca.pem
|
|
||||||
|
|
||||||
nmcli connection modify --temporary uuid ${uuid} 802-1x.identity "$cn"
|
|
||||||
'';
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.networkmanager.ensureProfiles.profiles.eduroam = {
|
|
||||||
"802-1x" = {
|
|
||||||
ca-cert = "${caDir}/easyroam_root_ca.pem";
|
|
||||||
client-cert = "${caDir}/easyroam_client_cert.pem";
|
|
||||||
domain-suffix-match = "easyroam.eduroam.de";
|
|
||||||
eap = "tls;";
|
|
||||||
identity = "meow";
|
|
||||||
private-key = "${caDir}/easyroam_client_key.pem";
|
|
||||||
private-key-password = "meow";
|
|
||||||
};
|
|
||||||
connection = {
|
|
||||||
id = "eduroam";
|
|
||||||
type = "wifi";
|
|
||||||
inherit uuid;
|
|
||||||
};
|
|
||||||
ipv4 = {
|
|
||||||
method = "auto";
|
|
||||||
};
|
|
||||||
ipv6 = {
|
|
||||||
addr-gen-mode = "default";
|
|
||||||
method = "auto";
|
|
||||||
};
|
|
||||||
proxy = { };
|
|
||||||
wifi = {
|
|
||||||
mode = "infrastructure";
|
|
||||||
ssid = "eduroam";
|
|
||||||
};
|
|
||||||
wifi-security = {
|
|
||||||
key-mgmt = "wpa-eap";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
networking.hosts = {
|
|
||||||
"127.0.0.1" = [
|
|
||||||
"www.tiktok.com"
|
|
||||||
"www.twitter.com"
|
|
||||||
"www.instagram.com"
|
|
||||||
"www.facebook.com"
|
|
||||||
"www.snapchat.com"
|
|
||||||
|
|
||||||
"tiktok.com"
|
|
||||||
"twitter.com"
|
|
||||||
"instagram.com"
|
|
||||||
"facebook.com"
|
|
||||||
"snapchat.com"
|
|
||||||
|
|
||||||
"youtube.com"
|
|
||||||
"www.youtube.com"
|
|
||||||
|
|
||||||
"google-analytics.com"
|
|
||||||
"stats.g.doubleclick.net"
|
|
||||||
"googleadservices.com"
|
|
||||||
"googletagmanager.com"
|
|
||||||
"googletagservices.com"
|
|
||||||
"googlesyndication.com"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
rs-programs,
|
|
||||||
niri,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
nix = {
|
|
||||||
extraOptions = ''
|
|
||||||
experimental-features = nix-command flakes
|
|
||||||
keep-outputs = true
|
|
||||||
keep-derivations = true
|
|
||||||
'';
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
options = "--delete-older-than 60d";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
permittedInsecurePackages = [
|
|
||||||
"electron-27.3.11"
|
|
||||||
"nodejs-16.20.0"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
overlays = [
|
|
||||||
rs-programs
|
|
||||||
niri.overlays.niri
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue