Compare commits

...

7 Commits

15 changed files with 99 additions and 32 deletions

View File

@@ -46,11 +46,14 @@
mySystem = { mySystem = {
boot = { boot = {
plymouth.enable = true;
kernel = {
cpuVendor = "amd";
v4l2loopback.enable = true;
extraModprobeConfig = '' extraModprobeConfig = ''
options snd_usb_audio vid=0x1235 pid=0x8212 device_setup=1 options snd_usb_audio vid=0x1235 pid=0x8212 device_setup=1
''; '';
plymouth.enable = true; };
kernel.cpuVendor = "amd";
systemd-boot = true; systemd-boot = true;
}; };
desktop = { desktop = {
@@ -103,13 +106,13 @@
programs.steam.enable = true; programs.steam.enable = true;
services = { services = {
fwupd.enable = true; fwupd.enable = true;
languagetool.enable = true;
printing.enable = true; printing.enable = true;
ssh.enable = true; ssh.enable = true;
sunshine = { sunshine = {
enable = true; enable = true;
autostart = true; autostart = true;
}; };
languagetool.enable = true;
}; };
users = { users = {
root.disablePassword = true; root.disablePassword = true;

23
packages/handy.nix Normal file
View File

@@ -0,0 +1,23 @@
{
appimageTools,
fetchurl,
lib,
}: let
name = "Handy";
pname = lib.strings.toLower name;
version = "0.7.6";
src = fetchurl {
url = "https://github.com/cjpais/${name}/releases/download/v${version}/${name}_${version}_amd64.AppImage";
hash = "sha256-UZNt3lfKo6dBRWK1YD03HmcZsx/Zu2J3eD5VdTw+poU=";
};
appimageContent = appimageTools.extractType2 {inherit pname version src;};
in
appimageTools.wrapType2 {
inherit pname version src;
extraPkgs = pkgs: [pkgs.wtype];
extraInstallCommands = ''
install -m 444 -D ${appimageContent}/${name}.desktop $out/share/applications/${name}.desktop
install -m 444 -D ${appimageContent}/${name}.png $out/share/icons/hicolor/256x256/apps/${name}.png
install -m 444 -D ${appimageContent}/${pname}.png $out/share/icons/hicolor/256x256/apps/${pname}.png
'';
}

View File

@@ -8,13 +8,6 @@ with lib; let
cfg = config.mySystem.boot; cfg = config.mySystem.boot;
in { in {
options.mySystem.boot = { options.mySystem.boot = {
extraModprobeConfig = mkOption {
type = types.lines;
default = "";
example = ''
options snd_usb_audio vid=0x1235 pid=0x8212 device_setup=1
'';
};
kernel = { kernel = {
package = mkOption { package = mkOption {
type = types.raw; type = types.raw;
@@ -29,12 +22,15 @@ in {
type = types.enum ["intel" "amd"]; type = types.enum ["intel" "amd"];
default = "amd"; default = "amd";
}; };
v4l2loopback = mkOption { v4l2loopback.enable = mkEnableOption "Enables v4l2loopback kernel module";
description = "Enables v4l2loopback";
type = types.bool;
default = true;
};
hardened = mkEnableOption "Enables hardened Linux kernel"; hardened = mkEnableOption "Enables hardened Linux kernel";
extraModprobeConfig = mkOption {
type = types.lines;
default = "";
example = ''
options snd_usb_audio vid=0x1235 pid=0x8212 device_setup=1
'';
};
}; };
systemd-boot = mkOption { systemd-boot = mkOption {
type = types.bool; type = types.bool;
@@ -64,6 +60,9 @@ in {
then "amdgpu" then "amdgpu"
else "i915" else "i915"
); );
extraModulePackages =
strings.concatLines (strings.optionalString cfg.kernel.v4l2loopback.enable "options v4l2loopback exclusive_caps=1 devices=1 video_nr=0 card_label=" "OBS Studio" "")
cfg.kernel.extraModprobeConfig;
loader = { loader = {
systemd-boot.enable = cfg.systemd-boot; systemd-boot.enable = cfg.systemd-boot;
efi.canTouchEfiVariables = cfg.systemd-boot; efi.canTouchEfiVariables = cfg.systemd-boot;
@@ -80,7 +79,6 @@ in {
kernelModules = kernelModules =
cfg.kernel.modules cfg.kernel.modules
++ ["kvm-${cfg.kernel.cpuVendor}"] ++ ["kvm-${cfg.kernel.cpuVendor}"]
++ lists.optional cfg.kernel.v4l2loopback "v4l2loopback"
++ lists.optional cfg.kernel.hardened "tcp_bbr"; ++ lists.optional cfg.kernel.hardened "tcp_bbr";
kernel.sysctl = mkIf cfg.kernel.hardened { kernel.sysctl = mkIf cfg.kernel.hardened {
"kernel.sysrq" = 0; # Disable magic SysRq key "kernel.sysrq" = 0; # Disable magic SysRq key

View File

@@ -1,10 +1,20 @@
{pkgs, ...}: { {
pkgs,
config,
...
}: let
inherit (config.home) gpuType;
in {
programs.btop = { programs.btop = {
enable = true; enable = true;
package = pkgs.btop.override { package =
rocmSupport = true; if gpuType != null
cudaSupport = true; then
}; pkgs.btop.override {
rocmSupport = gpuType == "amd";
cudaSupport = gpuType == "nvidia";
}
else pkgs.btop;
settings = { settings = {
color_theme = "${pkgs.btop}/share/btop/themes/nord.theme"; color_theme = "${pkgs.btop}/share/btop/themes/nord.theme";
cpu_bottom = false; cpu_bottom = false;

View File

@@ -1,3 +1,3 @@
{pkgs, ...}: {pkgs, ...}:
pkgs.writeShellScriptBin "mp42webm" '' pkgs.writeShellScriptBin "mp42webm" ''
${pkgs.ffmpeg}/bin/ffmpeg -i "$1" -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis "$1".webm'' ${pkgs.ffmpeg}/bin/ffmpeg -i "$1" -c:v libvpx -crf 10 -b:v 1M -c:a -hwaccel=auto libvorbis "$1".webm''

View File

@@ -17,7 +17,14 @@ in {
./shell ./shell
]; ];
options.home.fullDesktop = mkEnableOption "Enable most modules"; options.home = {
fullDesktop = mkEnableOption "Enable most modules";
gpuType = mkOption {
type = types.nullOr (types.enum ["nvidia" "amd" "intel"]);
default = null;
example = "amd";
};
};
config.home = { config.home = {
cli.fullDesktop = mkDefault cfg.fullDesktop; cli.fullDesktop = mkDefault cfg.fullDesktop;
desktop.fullDesktop = mkDefault cfg.fullDesktop; desktop.fullDesktop = mkDefault cfg.fullDesktop;

View File

@@ -52,6 +52,7 @@ in {
wallpapers = true; wallpapers = true;
}; };
}; };
osd.enableMicrophone = true;
bar = { bar = {
status = { status = {
showAudio = true; showAudio = true;
@@ -59,7 +60,9 @@ in {
}; };
tray.compact = true; tray.compact = true;
}; };
services.gpuType = "amd"; services = mkIf (config.home.gpuType != null) {
inherit (config.home) gpuType;
};
session.commands = { session.commands = {
logout = ["uwsm" "stop"]; logout = ["uwsm" "stop"];
shutdown = ["systemctl" "poweroff"]; shutdown = ["systemctl" "poweroff"];

View File

@@ -172,6 +172,8 @@ in {
bind = SUPER_SHIFT, minus, movetoworkspace, 8 bind = SUPER_SHIFT, minus, movetoworkspace, 8
bind = SUPER_SHIFT, slash, movetoworkspace, 9 bind = SUPER_SHIFT, slash, movetoworkspace, 9
bind = SUPER_SHIFT, asterisk, movetoworkspace, 10 bind = SUPER_SHIFT, asterisk, movetoworkspace, 10
env = XCURSOR_SIZE,12
''; '';
}; };
}; };

View File

@@ -8,15 +8,15 @@ with lib; let
cfg = config.home.dev.ai; cfg = config.home.dev.ai;
in { in {
imports = [ imports = [
./ollama.nix
./claude.nix ./claude.nix
./ollama.nix
]; ];
options.home.dev.ai.enable = mkEnableOption "Enables AI features"; options.home.dev.ai.enable = mkEnableOption "Enables AI features";
config.home = mkIf cfg.enable { config.home = mkIf cfg.enable {
dev.ai = { dev.ai = {
ollama.enable = mkDefault cfg.enable;
claude.enable = mkDefault cfg.enable; claude.enable = mkDefault cfg.enable;
ollama.enable = mkDefault cfg.enable;
}; };
packages = [pkgs.lmstudio]; packages = [pkgs.lmstudio];
}; };

View File

@@ -15,7 +15,7 @@ in {
force-seekable = true; # force streams to be seekable force-seekable = true; # force streams to be seekable
slang = "jpn,jp,eng,en,fra,fr"; slang = "jpn,jp,eng,en,fra,fr";
alang = "eng,en,fra,fr"; alang = "eng,en,fra,fr";
gpu-api = "vulkan"; gpu-api = "auto";
osc = true; osc = true;
profile = "gpu-hq"; profile = "gpu-hq";
# geometry = "50%x50%"; # geometry = "50%x50%";

View File

@@ -63,7 +63,13 @@
LSP_USE_PLISTS = "true"; LSP_USE_PLISTS = "true";
OPENAI_API_URL = "http://localhost:1234/"; OPENAI_API_URL = "http://localhost:1234/";
}; };
desktop.caelestia.enable = true; desktop = {
caelestia.enable = true;
spotify = {
enable = true;
spicetify.enable = false;
};
};
dev = { dev = {
ai.claude.enable = true; ai.claude.enable = true;
editors.emacs.package = emacsPackage; editors.emacs.package = emacsPackage;

View File

@@ -5,4 +5,5 @@
desktop.hyprland.host = "gampo"; desktop.hyprland.host = "gampo";
phundrak.sshKey.content = builtins.readFile ../keys/id_gampo.pub; phundrak.sshKey.content = builtins.readFile ../keys/id_gampo.pub;
}; };
programs.caelestia.settings.bar.persistent = false;
} }

View File

@@ -1,6 +1,7 @@
{config, ...}: { {config, ...}: {
imports = [../home.nix]; imports = [../home.nix];
home = { home = {
gpuType = "amd";
cli.nh.flake = "${config.home.homeDirectory}/.dotfiles"; cli.nh.flake = "${config.home.homeDirectory}/.dotfiles";
dev.ai = { dev.ai = {
enable = true; enable = true;
@@ -9,4 +10,8 @@
desktop.hyprland.host = "marpa"; desktop.hyprland.host = "marpa";
phundrak.sshKey.content = builtins.readFile ../keys/id_marpa.pub; phundrak.sshKey.content = builtins.readFile ../keys/id_marpa.pub;
}; };
programs.caelestia.settings.bar = {
showBattery = false;
showWifi = false;
};
} }

View File

@@ -6,6 +6,9 @@
}: }:
with lib; let with lib; let
inherit (pkgs.stdenv.hostPlatform) system; inherit (pkgs.stdenv.hostPlatform) system;
handy = pkgs.callPackage ../../packages/handy.nix {};
pumo-system-info = inputs.pumo-system-info.packages.${system}.default;
zen = inputs.zen-browser.packages.${system}.default;
in { in {
programs.bun.enable = true; programs.bun.enable = true;
home.packages = with pkgs; [ home.packages = with pkgs; [
@@ -40,14 +43,15 @@ in {
# Misc # Misc
bitwarden-desktop bitwarden-desktop
gplates gplates
handy
libnotify libnotify
nextcloud-client nextcloud-client
onlyoffice-desktopeditors onlyoffice-desktopeditors
pumo-system-info
scrcpy scrcpy
syncthing syncthing
watchmate watchmate
inputs.zen-browser.packages.${system}.default zen
inputs.pumo-system-info.packages.${system}.default
# Games # Games
atlauncher atlauncher

View File

@@ -57,6 +57,11 @@
desc = "Gimp"; desc = "Gimp";
cmd = "${pkgs.gimp}/bin/gimp"; cmd = "${pkgs.gimp}/bin/gimp";
} }
{
key = "h";
desc = "Handy";
cmd = "pkill -USR2 -n handy";
}
{ {
key = "n"; key = "n";
desc = "Nemo"; desc = "Nemo";