katana and stylix

This commit is contained in:
sadan 2024-11-22 00:08:00 -05:00
parent 59ee516926
commit 9e2feb16a9
No known key found for this signature in database
11 changed files with 278 additions and 143 deletions

View file

@ -2,23 +2,27 @@
# your system. Help is available in the configuration.nix(5) man page, on # your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). # https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, pkgs, inputs, ... }:
{ {
imports = config,
[ pkgs,
# Include the results of the hardware scan. inputs,
./hardware-configuration.nix ...
../../common/systemModules/boot.nix }:
../../common/systemModules/audio.nix {
../../common/systemModules/kde.nix imports = [
../../common/systemModules/tailscale.nix # Include the results of the hardware scan.
../../common/systemModules/gaming.nix ./hardware-configuration.nix
../../common/systemModules/crypt.nix ../../common/systemModules/boot.nix
../../common/systemModules/printing.nix ../../common/systemModules/audio.nix
../../common/systemModules/stylix.nix ../../common/systemModules/kde.nix
# USERS ../../common/systemModules/tailscale.nix
../../common/users/meyer ../../common/systemModules/gaming.nix
]; ../../common/systemModules/crypt.nix
../../common/systemModules/printing.nix
../../common/systemModules/stylix.nix
# USERS
../../common/users/meyer
];
boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
nix.settings.extra-platforms = config.boot.binfmt.emulatedSystems; nix.settings.extra-platforms = config.boot.binfmt.emulatedSystems;
hardware.i2c.enable = true; hardware.i2c.enable = true;
@ -31,18 +35,18 @@
time.timeZone = "America/New_York"; time.timeZone = "America/New_York";
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [
"nix-command"
"flakes"
];
services = { services = {
teamviewer.enable = true; teamviewer.enable = true;
usbmuxd.enable = true; usbmuxd.enable = true;
}; };
programs.zsh.enable = true; programs.zsh.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
clinfo clinfo
fuse fuse

View file

@ -55,6 +55,58 @@ in
nodejs_22 nodejs_22
]; ];
gui = with pkgs; [ gui = with pkgs; [
screenkey
pinned.vscode
# (
# (pinned.vscode.override {
# isInsiders = true;
# }).overrideAttrs
# (
# _: old:
# let
# sourceExecutableName = "code-insiders";
# executableName = "code-insiders";
# in
# {
# installPhase = ''
# runHook preInstall
# mkdir -p "$out/lib/vscode" "$out/bin"
# cp -r ./* "$out/lib/vscode"
#
# mv "$out/lib/vscode/bin/code" "$out/lib/vscode/bin/${sourceExecutableName}" # ME
#
# ln -s "$out/lib/vscode/bin/${sourceExecutableName}" "$out/bin/${executableName}"
#
# mkdir -p "$out/share/applications"
# ln -s "$desktopItem/share/applications/${executableName}.desktop" "$out/share/applications/${executableName}.desktop"
# ln -s "$urlHandlerDesktopItem/share/applications/${executableName}-url-handler.desktop" "$out/share/applications/${executableName}-url-handler.desktop"
#
# # These are named vscode.png, vscode-insiders.png, etc to match the name in upstream *.deb packages.
# mkdir -p "$out/share/pixmaps"
# cp "$out/lib/vscode/resources/app/resources/linux/code.png" "$out/share/pixmaps/vs${executableName}.png"
#
# # Override the previously determined VSCODE_PATH with the one we know to be correct
# sed -i "/ELECTRON=/iVSCODE_PATH='$out/lib/vscode'" "$out/bin/${executableName}"
# grep -q "VSCODE_PATH='$out/lib/vscode'" "$out/bin/${executableName}" # check if sed succeeded
#
# # Remove native encryption code, as it derives the key from the executable path which does not work for us.
# # The credentials should be stored in a secure keychain already, so the benefit of this is questionable
# # in the first place.
# rm -rf $out/lib/vscode/resources/app/node_modules/vscode-encrypt
# # HOOK
# runHook postInstall
# '';
#
# postFixup = ''
# patchelf \
# --add-needed ${pkgs.libglvnd}/lib/libGLESv2.so.2 \
# --add-needed ${pkgs.libglvnd}/lib/libGL.so.1 \
# --add-needed ${pkgs.libglvnd}/lib/libEGL.so.1 \
# $out/lib/vscode/code
# '';
# }
# )
# )
cpkg.frog cpkg.frog
legcord legcord
obsidian obsidian
@ -63,7 +115,7 @@ in
jadx jadx
android-studio android-studio
wireshark wireshark
pinned.vscode # pinned.vscode
pinned.etcher pinned.etcher
insomnia insomnia
teamviewer teamviewer
@ -73,7 +125,6 @@ in
libsForQt5.kcolorchooser libsForQt5.kcolorchooser
python312Packages.openai-whisper python312Packages.openai-whisper
firefox-devedition firefox-devedition
cinny-desktop
element-desktop element-desktop
protonvpn-gui protonvpn-gui
xclicker xclicker
@ -109,7 +160,6 @@ in
vlc vlc
jellyfin-web jellyfin-web
obs-studio obs-studio
tokyo-night-gtk
ksshaskpass ksshaskpass
libsForQt5.kinit libsForQt5.kinit
]; ];
@ -138,7 +188,7 @@ in
jdks = [ jdks = [
jdk8 jdk8
jdk17 jdk17
jdk22 jdk23
]; ];
}) })
protontricks protontricks

View file

@ -0,0 +1,13 @@
(defsrc
caps
)
(defvar
tap-time 150
hold-time 200
)
(defalias
caps (tap-hold 150 150 esc lctrl)
)
(deflayer base
@caps
)

View file

@ -0,0 +1,54 @@
{ NAME }:
{ pkgs, ... }:
{
# services = {
# kanata = {
# enable = true;
# keyboards = {
# razer = {
# # devices = [
# # "/dev/input/by-id/usb-Razer_Razer_BlackWidow_V4-event-kbd"
# # ];
# extraDefCfg = "process-unmapped-keys yes";
# config = ''
# (defsrc
# caps
# )
# (defvar
# tap-time 150
# hold-time 200
# )
# (defalias
# caps (tap-hold 100 100 esc lctrl)
# )
# (deflayer base
# @caps
# )
#
# '';
# };
# };
# };
# };
users = {
users = {
"${NAME}" = {
extraGroups = [
"uinput"
];
};
};
};
systemd.services.kanata-meyer = {
enable = true;
description = "services-kanata sucks ass";
serviceConfig = {
ExecStart = ''
${pkgs.kanata}/bin/kanata \
--cfg ${./config.kbd}
'';
User=NAME;
};
wantedBy = [ "multi-user.target" ];
};
}

View file

@ -27,7 +27,7 @@
fonts = { fonts = {
emoji = { emoji = {
package = pkgs.twemoji-color-font; package = pkgs.twemoji-color-font;
name = "Twemoji Color Emoji"; name = "Twitter Color Emoji";
}; };
sansSerif = { sansSerif = {
package = pkgs.nerdfonts; package = pkgs.nerdfonts;

View file

@ -1,9 +1,11 @@
{ config, lib, ... }: { { config, lib, ... }:
{
nixpkgs.overlays = [ nixpkgs.overlays = [
(pkgs: _: { (pkgs: _: {
ja-netfilter = pkgs.callPackage ./ja-netfilter { inherit lib; }; ja-netfilter = pkgs.callPackage ./ja-netfilter { inherit lib; };
}) })
(final: pkgs: (
final: pkgs:
let let
inherit (pkgs) jetbrains; inherit (pkgs) jetbrains;
globalPlugins = [ globalPlugins = [
@ -12,7 +14,12 @@
]; ];
ja-netfilter = pkgs.ja-netfilter.override { ja-netfilter = pkgs.ja-netfilter.override {
programName = "jetbrains"; programName = "jetbrains";
enabledPlugins = [ "dns" "url" "hideme" "power" ]; enabledPlugins = [
"dns"
"url"
"hideme"
"power"
];
pluginConfigs = { pluginConfigs = {
dns = '' dns = ''
[DNS] [DNS]
@ -43,21 +50,30 @@
}; };
}; };
srcOverrideFn = name: { version srcOverrideFn =
, url name:
, sha256 {
, plugins ? [ ] version,
, url,
}: sha256,
plugins ? [ ],
}:
let let
versionChangedPkg = jetbrains.${name}.overrideAttrs versionChangedPkg = jetbrains.${name}.overrideAttrs (
(_: old: rec { _: old: rec {
inherit version; inherit version;
src = pkgs.fetchurl { src = pkgs.fetchurl {
inherit url sha256; inherit url sha256;
}; };
buildInputs = old.buildInputs ++ (with pkgs; [ xorg.libX11 libGL fontconfig ]); buildInputs =
}); old.buildInputs
++ (with pkgs; [
xorg.libX11
libGL
fontconfig
]);
}
);
in in
versionChangedPkg; versionChangedPkg;
srcPatched = builtins.mapAttrs srcOverrideFn overrides; srcPatched = builtins.mapAttrs srcOverrideFn overrides;
@ -67,7 +83,8 @@
--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED --add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
-javaagent:${javaAgentJar}=jetbrains -javaagent:${javaAgentJar}=jetbrains
''; '';
forkingWrapper = package: wrapperName: forkingWrapper =
package: wrapperName:
let let
exe = lib.getExe package; exe = lib.getExe package;
wrapperExe = pkgs.writeShellScriptBin wrapperName '' wrapperExe = pkgs.writeShellScriptBin wrapperName ''
@ -76,21 +93,22 @@
in in
pkgs.symlinkJoin { pkgs.symlinkJoin {
name = package.name; name = package.name;
paths = [ package wrapperExe ]; paths = [
package
wrapperExe
];
postBuild = '' postBuild = ''
ln -s ${exe} $out/bin/${wrapperName}-unwrapped ln -s ${exe} $out/bin/${wrapperName}-unwrapped
''; '';
}; };
wrapJetBrains = package: name: wrapJetBrains = package: name: forkingWrapper (package.override { inherit vmopts; }) name;
forkingWrapper (package.override { inherit vmopts; }) name; netOverrideFn = name: _: wrapJetBrains srcPatched.${name} name;
netOverrideFn = name: _:
wrapJetBrains srcPatched.${name} name;
netPatched = builtins.mapAttrs netOverrideFn overrides; netPatched = builtins.mapAttrs netOverrideFn overrides;
in in
{ {
jbeap = netPatched; jbeap = netPatched;
}) }
)
]; ];
} }

View file

@ -0,0 +1,9 @@
{ pkgs, ... }:
{
imports = [
./overlays.nix
];
home.packages = with pkgs; [
vscode-insider
];
}

View file

@ -0,0 +1,62 @@
{ nixpkgs, pkgs, ... }:
{
nixpkgs.overlays = [
(final: prev: {
vscode-insider = (
(prev.vscode.override {
isInsiders = true;
}).overrideAttrs
(
_: old:
let
sourceExecutableName = "code-insiders";
executableName = "code-insiders";
in
{
pname = "code-insiders";
installPhase = ''
runHook preInstall
mkdir -p "$out/lib/vscode" "$out/bin"
cp -r ./* "$out/lib/vscode"
mv "$out/lib/vscode/bin/code" "$out/lib/vscode/bin/${sourceExecutableName}" # ME
mv "$out/lib/vscode/code" "$out/lib/vscode/${sourceExecutableName}" # ME
ln -s "$out/lib/vscode/bin/${sourceExecutableName}" "$out/bin/${executableName}"
mkdir -p "$out/share/applications"
ln -s "$desktopItem/share/applications/${executableName}.desktop" "$out/share/applications/${executableName}.desktop"
ln -s "$urlHandlerDesktopItem/share/applications/${executableName}-url-handler.desktop" "$out/share/applications/${executableName}-url-handler.desktop"
# These are named vscode.png, vscode-insiders.png, etc to match the name in upstream *.deb packages.
mkdir -p "$out/share/pixmaps"
cp "$out/lib/vscode/resources/app/resources/linux/code.png" "$out/share/pixmaps/vs${executableName}.png"
# Override the previously determined VSCODE_PATH with the one we know to be correct
sed -i "/ELECTRON=/iVSCODE_PATH='$out/lib/vscode'" "$out/bin/${executableName}"
grep -q "VSCODE_PATH='$out/lib/vscode'" "$out/bin/${executableName}" # check if sed succeeded
# Remove native encryption code, as it derives the key from the executable path which does not work for us.
# The credentials should be stored in a secure keychain already, so the benefit of this is questionable
# in the first place.
rm -rf $out/lib/vscode/resources/app/node_modules/vscode-encrypt
# HOOK
runHook postInstall
'';
postFixup = ''
patchelf \
--add-needed ${pkgs.libglvnd}/lib/libGLESv2.so.2 \
--add-needed ${pkgs.libglvnd}/lib/libGL.so.1 \
--add-needed ${pkgs.libglvnd}/lib/libEGL.so.1 \
$out/lib/vscode/${sourceExecutableName}
'';
meta = old.meta // {
mainProgram = "code-insiders";
};
}
)
);
})
];
}

View file

@ -10,6 +10,7 @@ in
(import ../../systemModules/razer.nix { inherit NAME; }) (import ../../systemModules/razer.nix { inherit NAME; })
(import ../../systemModules/nixHelper.nix { inherit NAME; }) (import ../../systemModules/nixHelper.nix { inherit NAME; })
(import ../../programs/wireshark.nix { inherit NAME; }) (import ../../programs/wireshark.nix { inherit NAME; })
(import ../../programs/kanata.nix { inherit NAME; })
]; ];
users = { users = {
users = { users = {

View file

@ -30,6 +30,7 @@ in
../homeModules/java.nix ../homeModules/java.nix
../homeModules/jetbrains ../homeModules/jetbrains
../homeModules/notion.nix ../homeModules/notion.nix
# ../homeModules/vscode
./sops.nix ./sops.nix
./git.nix ./git.nix
]; ];

117
flake.lock generated
View file

@ -177,11 +177,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1730016908, "lastModified": 1731968878,
"narHash": "sha256-bFCxJco7d8IgmjfNExNz9knP8wvwbXU4s/d53KOK6U0=", "narHash": "sha256-+hTCwETOE9N8voTAaF+IzdUZz28Ws3LDpH90FWADrEE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e83414058edd339148dc142a8437edb9450574c8", "rev": "a42fa14b53ceab66274a21da480c9f8e06204173",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -211,65 +211,6 @@
"type": "github" "type": "github"
} }
}, },
"nekocord": {
"inputs": {
"nekocord-installer": "nekocord-installer",
"nekocord-latest": "nekocord-latest",
"nekocord-latest-dev": "nekocord-latest-dev",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1731460153,
"narHash": "sha256-IE/knV89tR9Kv6CBKwJOEDoVNtrk+rOTpvOatoPsB2I=",
"owner": "PoolloverNathan",
"repo": "nekocord",
"rev": "891ff720064a251d537dd89ce943aae669926cc0",
"type": "github"
},
"original": {
"owner": "PoolloverNathan",
"repo": "nekocord",
"type": "github"
}
},
"nekocord-installer": {
"flake": false,
"locked": {
"narHash": "sha256-/89LCtysKgmDN8jGR2lARC7eArnxrENAdiMCSuPZVo0=",
"type": "file",
"url": "https://nekocord.dev/uploads/nekocord-installer/main/latest.json"
},
"original": {
"type": "file",
"url": "https://nekocord.dev/uploads/nekocord-installer/main/latest.json"
}
},
"nekocord-latest": {
"flake": false,
"locked": {
"narHash": "sha256-DQw1QXxrsrbuNQZl0LyTRIZZbfrNjiZIEEIZWVhLgQg=",
"type": "file",
"url": "https://nekocord.dev/uploads/nekocord/main/latest.json"
},
"original": {
"type": "file",
"url": "https://nekocord.dev/uploads/nekocord/main/latest.json"
}
},
"nekocord-latest-dev": {
"flake": false,
"locked": {
"narHash": "sha256-Ns+1t7XjrS+TbXWjGEtSTwkqykbjSQ/t0weJh/qhdGI=",
"type": "file",
"url": "https://nekocord.dev/uploads/nekocord/dev/latest.json"
},
"original": {
"type": "file",
"url": "https://nekocord.dev/uploads/nekocord/dev/latest.json"
}
},
"nix-index-database": { "nix-index-database": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -277,11 +218,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1729999765, "lastModified": 1731814505,
"narHash": "sha256-LYsavZXitFjjyETZoij8usXjTa7fa9AIF3Sk3MJSX+Y=", "narHash": "sha256-l9ryrx1Twh08a+gxrMGM9O/aZKEimZfa6sZVyPCImgI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-index-database", "repo": "nix-index-database",
"rev": "0e3a8778c2ee218eff8de6aacf3d2fa6c33b2d4f", "rev": "bdba246946fb079b87b4cada4df9b1cdf1c06132",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -297,11 +238,11 @@
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1729717678, "lastModified": 1731682434,
"narHash": "sha256-XEfYT1D+4KT9c0mMwsmZdWS2JgKsboAZbnuJvrjBQKg=", "narHash": "sha256-HnZFPB7akVIy0KuPq/tEkiB+Brt1qi0DUIDzR8z25qI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixos-wsl", "repo": "nixos-wsl",
"rev": "5a965cb108fb1f30b29a26dbc29b473f49e80b41", "rev": "a6b9cf0b7805e2c50829020a73e7bde683fd36dd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -311,22 +252,6 @@
} }
}, },
"nixpkgs": { "nixpkgs": {
"locked": {
"lastModified": 1729181673,
"narHash": "sha256-LDiPhQ3l+fBjRATNtnuDZsBS7hqoBtPkKBkhpoBHv3I=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4eb33fe664af7b41a4c446f87d20c9a0a6321fa3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1729973466, "lastModified": 1729973466,
"narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=", "narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=",
@ -337,18 +262,18 @@
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "release-24.05", "ref": "nixos-24.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1729880355, "lastModified": 1731676054,
"narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=", "narHash": "sha256-OZiZ3m8SCMfh3B6bfGC/Bm4x3qc1m2SVEAlkV6iY7Yg=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "18536bf04cd71abd345f9579158841376fdd0c5a", "rev": "5e4fbfb6b3de1aa2872b76d49fafc942626e2add",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -376,11 +301,11 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1729951556, "lastModified": 1731763621,
"narHash": "sha256-bpb6r3GjzhNW8l+mWtRtLNg5PhJIae041sPyqcFNGb4=", "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "4e0eec54db79d4d0909f45a88037210ff8eaffee", "rev": "c69a9bffbecde46b4b939465422ddc59493d3e4d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -393,7 +318,6 @@
"root": { "root": {
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"nekocord": "nekocord",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nixos-wsl": "nixos-wsl", "nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
@ -422,15 +346,14 @@
}, },
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_4"
"nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1729999681, "lastModified": 1731954233,
"narHash": "sha256-qm0uCtM9bg97LeJTKQ8dqV/FvqRN+ompyW4GIJruLuw=", "narHash": "sha256-vvXx1m2Rsw7MkbKJdpcICzz4YPgZPApGKQGhNZfkhOI=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "1666d16426abe79af5c47b7c0efa82fd31bf4c56", "rev": "e39947d0ee8e341fa7108bd02a33cdfa24a1360e",
"type": "github" "type": "github"
}, },
"original": { "original": {