Compare commits

...

5 commits

4 changed files with 177 additions and 13 deletions

55
flake.lock generated
View file

@ -1,5 +1,23 @@
{ {
"nodes": { "nodes": {
"claude-desktop-nix": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1790636166,
"narHash": "sha256-hTOSqaTx/8PIWRxQ/lPE0+hIIXvebSZW1BuR8eTg6cw=",
"owner": "tomsch",
"repo": "claude-desktop-nix",
"rev": "e4642c646667424962b05ee2b9da7e29a2c33a1c",
"type": "github"
},
"original": {
"owner": "tomsch",
"repo": "claude-desktop-nix",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -7,11 +25,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1788642154, "lastModified": 1790996401,
"narHash": "sha256-sPpQFVaFTDqO/4vvCAhuAhqTgqN/ygu+9eJcs5eB0js=", "narHash": "sha256-f+kOxEmOUnQazVAmGg0i8hzwgd1kX/geY+k/Dpheye8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "fd0956c99c41ae3c13a73a638f1f7e963aebc4ab", "rev": "db7d5e2332710f5abb088f6b5de927d7f9511b35",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -28,11 +46,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1788680125, "lastModified": 1790499302,
"narHash": "sha256-amGSoDobwmp4CFvCn841ws2iuitus+HUJdD/gKgsrJA=", "narHash": "sha256-Gbf/U9ptJhQh0qnDnJ/+a8MAcq1HXunbArUTHR2wNYk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-index-database", "repo": "nix-index-database",
"rev": "116ad1c2adb642405ef8916f6a94c8626f971344", "rev": "161d7c91accd93034bb3c295224d9d895a778573",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -43,11 +61,27 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1788690626, "lastModified": 1784120854,
"narHash": "sha256-+v4I4LawmRD/mVxO7QIAerRrCkElp3YImzWkkUnvOTg=", "narHash": "sha256-KesHgItiZPgGX740axSiQLcIQ8D24MDqNpkKYWIek8k=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c25784012c9982bca5b3e0de87e90bbdac8927d3", "rev": "753cc8a3a87467296ddd1fa93f0cc3e81120ee46",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1790920529,
"narHash": "sha256-nQyFkMR78WP6PiXKkDW2SjqzLf/spQqjRuxRGSbcV8k=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "774debe7a0d1b496e35677ad955a1011c6ff74f3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -59,9 +93,10 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"claude-desktop-nix": "claude-desktop-nix",
"home-manager": "home-manager", "home-manager": "home-manager",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs_2"
} }
} }
}, },

View file

@ -13,6 +13,8 @@
url = "github:nix-community/nix-index-database"; url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
claude-desktop-nix.url = "github:tomsch/claude-desktop-nix";
}; };
outputs = outputs =
@ -21,6 +23,7 @@
nixpkgs, nixpkgs,
home-manager, home-manager,
nix-index-database, nix-index-database,
claude-desktop-nix,
... ...
}@inputs: }@inputs:
{ {
@ -31,6 +34,11 @@
hosts/fw/configuration.nix hosts/fw/configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
nix-index-database.nixosModules.default nix-index-database.nixosModules.default
({ pkgs, ...}: {
environment.systemPackages = [
claude-desktop-nix.packages.${pkgs.stdenv.hostPlatform.system}.default
];
})
]; ];
}; };
}; };

View file

@ -37,12 +37,14 @@ with lib;
services.blueman.enable = true; services.blueman.enable = true;
hardware.enableAllFirmware = true; hardware.enableAllFirmware = true;
hardware.uinput.enable = true;
# boot.kernelPackages = pkgs.linuxPackages_latest; # boot.kernelPackages = pkgs.linuxPackages_latest;
boot = { boot = {
extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
extraModprobeConfig = '' extraModprobeConfig = ''
options v4l2loopback devices=1 video_nr=10 card_label="custom_cam" exclusive_caps=1 options v4l2loopback devices=2 video_nr=10,20 card_label="custom_cam","android_cam" exclusive_caps=1,1
''; '';
kernelModules = [ kernelModules = [
@ -75,7 +77,8 @@ with lib;
networking.extraHosts = '' networking.extraHosts = ''
# 204.168.170.249 talk.timo.social # 204.168.170.249 talk.timo.social
# 204.168.170.249 turn.talk.timo.social # 204.168.170.249 turn.talk.timo.social
# 127.0.0.1 m.youtube.com www.youtube.com youtube.com # 127.0.0.1 yt.be m.youtube.com youtube.com
# 127.0.0.1 www.youtube.com
''; '';
# Configure network proxy if necessary # Configure network proxy if necessary
@ -161,6 +164,7 @@ with lib;
"libvirtd" "libvirtd"
"docker" "docker"
"video" "video"
"ydotool"
]; ];
packages = with pkgs; [ ]; packages = with pkgs; [ ];
}; };
@ -180,6 +184,92 @@ with lib;
programs.fuse.userAllowOther = true; programs.fuse.userAllowOther = true;
services.pcscd.enable = true; services.pcscd.enable = true;
systemd.services.keyd.environment = {
YDOTOOL_SOCKET = "/run/ydotoold/socket";
};
services.keyd =
let
mouseMove = pkgs.writeShellScript "mouse-move" ''
${pkgs.ydotool}/bin/ydotool mousemove -- "$1" "$2"
'';
mouseScroll = pkgs.writeShellScript "mouse-scroll" ''
${pkgs.ydotool}/bin/ydotool mousemove -w -- "$1" "$2"
'';
mouseClick = pkgs.writeShellScript "mouse-click" ''
${pkgs.ydotool}/bin/ydotool click "$1"
'';
in
{
enable = true;
keyboards.default = {
ids = [ "*" ];
extraConfig = ''
[main]
leftcontrol = layer(lctrl)
leftalt = layer(lalt)
leftshift = layer(lshift)
leftmeta = layer(lsuper)
altgr = layer(rightalt)
[lctrl:C]
[lalt:A]
[lshift:S]
[lsuper:M]
[altgr:G]
[lalt+lctrl]
h = left
j = down
k = up
l = right
[altgr]
h = command(${mouseScroll} -1 0)
j = command(${mouseScroll} 0 -1)
k = command(${mouseScroll} 0 1)
l = command(${mouseScroll} 1 0)
[lctrl+lsuper]
h = C-left
j = C-down
k = C-up
l = C-right
[lalt+lctrl+lsuper]
h = command(${mouseMove} -200 0)
j = command(${mouseMove} 0 200)
k = command(${mouseMove} 0 -200)
l = command(${mouseMove} 200 0)
enter = rightmouse
[lctrl+lshift+lsuper]
h = C-S-left
j = C-S-down
k = C-S-up
l = C-S-right
[lalt+lctrl+lshift]
h = S-left
j = S-down
k = S-up
l = S-right
[lalt+lctrl+lshift+lsuper]
h = command(${mouseMove} -20 0)
j = command(${mouseMove} 0 20)
k = command(${mouseMove} 0 -20)
l = command(${mouseMove} 20 0)
enter = leftmouse
'';
};
};
services.netbird.enable = true; services.netbird.enable = true;
#services.netbird.clients.wt0 = { #services.netbird.clients.wt0 = {
# login = { # login = {
@ -346,13 +436,42 @@ with lib;
ntfsprogs-plus ntfsprogs-plus
sshfs sshfs
yash yash
ksh
dash dash
glow glow
tt tt
obs-studio
ydotool
tree
fastfetch
yq
jless
ijq
lynx
virtualenv
openssh
scli
signal-cli
neomutt
patchelf
yt-dlp
]; ];
programs.ydotool.enable = true;
documentation.dev.enable = true; documentation.dev.enable = true;
services.openssh = {
enable = true;
openFirewall = true;
settings = {
PasswordAuthentication = true;
KbdInteractiveAuthentication = false;
PermitRootLogin = "no";
AllowUsers = [ "tsi" ];
MaxAuthTries = 30;
};
};
services.power-profiles-daemon.enable = true; services.power-profiles-daemon.enable = true;
environment.localBinInPath = true; environment.localBinInPath = true;

View file

@ -4,7 +4,9 @@
programs.bash = { programs.bash = {
enable = true; enable = true;
initExtra = '' initExtra = ''
xset r rate 200 60 [ "''${BASH_COMPLETION_VERSINFO-}" ] || unset -v BASH_COMPLETION_VERSINFO
[ "$DISPLAY" ] && xset r rate 200 60
##################### user specific aliases and functions ###################### ##################### user specific aliases and functions ######################
if [ -d ~/.bashrc.d ]; then if [ -d ~/.bashrc.d ]; then