This commit is contained in:
lachrymaLF 2025-04-15 08:15:08 -04:00
commit 73b95242ee
8 changed files with 1197 additions and 0 deletions

186
configuration.nix Normal file
View file

@ -0,0 +1,186 @@
{ config, lib, pkgs, ... }:
{
imports =
[
./hardware-configuration.nix
];
nix.settings.experimental-features = [ "nix-command" "flakes" ];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Kernel
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.kernelParams = [ "kvm.enable_virt_at_load=0" ];
boot.kernelModules = [ "iptable_nat" ];
# System
networking.hostName = "lachrymal-abg"; # Define your hostname.
time.timeZone = "America/Toronto";
i18n.defaultLocale = "ja_JP.UTF-8";
nixpkgs.config.allowUnfree = true;
xdg.portal.enable = true;
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
settings.General.DisplayServer = "wayland";
};
# services.xserver.desktopManager.lxqt.enable = true;
# environment.lxqt.excludePackages = with pkgs; [ lxqt.qterminal ];
services.desktopManager.plasma6.enable = true;
environment.plasma6.excludePackages = with pkgs.kdePackages; [
elisa
kate
khelpcenter
gwenview
kate
konsole
];
# Fonts
fonts = {
packages = with pkgs; [
noto-fonts
noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-emoji
liberation_ttf
victor-mono
lmodern
lmmath
wqy_zenhei
];
fontDir.enable = true;
fontconfig = {
enable = true;
};
};
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound.
services.pulseaudio.enable = false;
services.pipewire = {
enable = true;
audio.enable = true;
pulse.enable = true;
alsa.enable = true;
alsa.support32Bit = true;
};
# Steam
programs.steam = {
enable = true;
extraCompatPackages = with pkgs; [
proton-ge-bin
];
};
users.users.lach = {
isNormalUser = true;
extraGroups = [ "wheel" "docker" ]; # Enable sudo for the user.
};
environment.systemPackages = with pkgs; [
vesktop
wget
pciutils
gpustat
mg
micro-full
ventoy-full
git-credential-oauth
hugo
gnumake
bun
python314
nodejs
ruff
uv
gcc
pkg-config
rustc
cargo
rust-analyzer
kdePackages.oxygen
];
nixpkgs.overlays = [
(import ./im-overlays.nix)
];
programs.git = {
enable = true;
package = pkgs.gitFull;
config.credential.helper = [ "libsecret" "oauth" ];
};
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
# pinentryPackage = lib.mkForce pkgs.pinentry-qt;
};
services.openssh.enable = true;
# Samba
services.samba = {
package = pkgs.samba4Full;
enable = true;
openFirewall = true;
settings = {
global = {
"security" = "user";
"guest account" = "nobody";
"map to guest" = "bad user";
"server smb encrypt" = "required";
"server min protocol" = "SMB3_00";
};
DL = {
path = "/run/media/lach/A0762DC8762DA050/Downloads";
browseable = "yes";
"read only" = "no";
"guest ok" = "no";
"create mask" = "0644";
"directory mask" = "0755";
"force user" = "lach";
};
Anime = {
path = "/run/media/lach/A0762DC8762DA050/Archive/Anime";
browseable = "yes";
"read only" = "no";
"guest ok" = "no";
"create mask" = "0644";
"directory mask" = "0755";
"force user" = "lach";
};
};
};
services.avahi = {
publish.enable = true;
publish.userServices = true;
enable = true;
openFirewall = true;
};
networking.firewall.enable = true;
networking.firewall.allowPing = true;
networking.firewall.allowedTCPPorts = [ 8888 ];
# virtualisation.docker = {
# enable = true;
# storageDriver = "btrfs";
# };
system.stateVersion = "24.05";
}

155
flake.lock generated Normal file
View file

@ -0,0 +1,155 @@
{
"nodes": {
"flake-compat": {
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"revCount": 57,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1744223888,
"narHash": "sha256-reYpe0J1J+wH34JFs7KKp0G5nP7+XSQ5z0ZLFJcfJr8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "79461936709b12e17adb9c91dd02d1c66d577f09",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1744098102,
"narHash": "sha256-tzCdyIJj9AjysC3OuKA+tMD/kDEDAF9mICPDU7ix0JA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c8cd81426f45942bb2906d5ed2fe21d2f19d95b7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"spicetify-nix": "spicetify-nix",
"winapps": "winapps"
}
},
"spicetify-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1744079955,
"narHash": "sha256-qIdHmNcq3qNCQA1cQTEfCZq7tqtgjhJqKKMFfZPTZPc=",
"owner": "Gerg-L",
"repo": "spicetify-nix",
"rev": "c0876c796c44a0a3ead0d36b5c100dbf47ea1dbd",
"type": "github"
},
"original": {
"owner": "Gerg-L",
"repo": "spicetify-nix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"winapps": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1743849404,
"narHash": "sha256-Yr6L33A9l6DW4IGBXKpPCUcA69XATxrYanwOBupSdPs=",
"owner": "winapps-org",
"repo": "winapps",
"rev": "f6d56fdf50f3b801d03f8dca2cca2246485cb793",
"type": "github"
},
"original": {
"owner": "winapps-org",
"repo": "winapps",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

60
flake.nix Normal file
View file

@ -0,0 +1,60 @@
{
description = "lachrymal@NixOS";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
spicetify-nix = {
url = "github:Gerg-L/spicetify-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
winapps = {
url = "github:winapps-org/winapps";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{
nixpkgs,
home-manager,
spicetify-nix,
winapps,
...
}:
{
nixosConfigurations.lachrymal-abg = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = { inherit inputs system; };
modules = [
./configuration.nix
home-manager.nixosModules.home-manager
{
home-manager = {
useUserPackages = true;
users.lach = import ./home/lach.nix;
extraSpecialArgs = {
inherit inputs;
inherit spicetify-nix;
};
};
}
(
{ pkgs, system, ... }:
{
nix.settings = {
substituters = [ "https://winapps.cachix.org" ];
trusted-public-keys = [ "winapps.cachix.org-1:HI82jWrXZsQRar/PChgIx1unmuEsiQMQq+zt05CD36g=" ];
};
environment.systemPackages = [
winapps.packages."${system}".winapps
winapps.packages."${system}".winapps-launcher
];
}
)
];
};
};
}

View file

@ -0,0 +1,55 @@
# 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" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/973e5c4e-7090-478d-af3c-ca0c68b6d7fb";
fsType = "btrfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/0542-9B6E";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/f22da6db-b016-436e-916f-b4d1a8aa3583";
fsType = "btrfs";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/3f11e789-560c-41ee-836e-0a435fcf73f1"; }
];
networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware.graphics.enable = true;
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.beta;
};
hardware.opentabletdriver.enable = true;
services.ratbagd.enable = true;
}

570
home/code.nix Normal file
View file

@ -0,0 +1,570 @@
{
"[typst]" = {
"editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
};
"[typst-code]" = {
"editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
};
"chat.commandCenter.enabled" = false;
"svelte.enable-ts-plugin" = true;
# "tinymist.exportPdf" = "onType";
"telemetry.enableTelemetry" = false;
"telemetry.telemetryLevel"= "off";
"editor.fontFamily"= "'Victor Mono', Consolas, 'Courier New', monospace";
"editor.fontSize"= 14;
"editor.fontLigatures"= true;
"window.titleBarStyle" = "custom";
"workbench.colorCustomizations"= {
"tab.activeBackground"= "#444444";
"tab.activeBorder"= "#ffffff";
"tab.activeBorderTop"="#ffffff";
"tab.border"= "#ffffff";
"titleBar.border"= "#ffffff";
"titleBar.activeBackground"= "#000000";
"activityBar.border"= "#ffffff";
"activityBar.background"= "#000000";
"editor.background"= "#000000";
"statusBar.border"= "#ffffff";
"statusBar.background"= "#333333";
"statusBarItem.remoteBackground"= "#000000";
"statusBar.noFolderBackground"= "#000000";
"sideBar.background"= "#000000";
"sideBar.border"= "#ffffff";
"menu.background"= "#000000";
"menu.border"= "#ffffff";
"editorGroupHeader.border"= "#ffffff";
"editorGroupHeader.tabsBackground"= "#000000";
"editorGroupHeader.tabsBorder"= "#ffffff";
"tab.inactiveBackground"= "#000000";
"notifications.background"= "#000000";
"notifications.border"= "#ffffff";
"notificationCenter.border"= "#ffffff";
"notificationToast.border"= "#ffffff";
};
"terminal.integrated.fontSize"= 14;
"security.workspace.trust.untrustedFiles"= "open";
"editor.tokenColorCustomizations"= {
"textMateRules"= [
{
"name"= "Comment";
"scope"= [
"comment"
"punctuation.definition.comment"
];
"settings"= {
"foreground"= "#A7ADBA";
};
}
{
"name"= "String";
"scope"= "string";
"settings"= {
"foreground"= "#99c794";
};
}
{
"name"= "Punctuation";
"scope"= "punctuation.definition";
"settings"= {
"foreground"= "#5fb3b3";
};
}
{
"name"= "Number";
"scope"= "constant.numeric";
"settings"= {
"foreground"= "#f9ae58";
};
}
{
"name"= "Built-in constant";
"scope"= "constant.language";
"settings"= {
"fontStyle"= "italic";
"foreground"= "#ec5f67";
};
}
{
"name"= "User-defined constant";
"scope"= [
"constant.character"
"constant.other"
];
"settings"= {
"foreground"= "#c594c5";
};
}
{
"name"= "Member Variable";
"scope"= "variable.member";
"settings"= {
"foreground"= "#ec5f67";
};
}
{
"name"= "Keyword";
"scope"= [
"keyword - keyword.operator"
"keyword.operator.word"
"keyword.control"
];
"settings"= {
"foreground"= "#c594c5";
# "fontStyle"= "italic"
};
}
{
"name"= "Embedded Line Template Line JS";
"scope"= "string.template.js meta.template.expression.js meta.embedded.line.js";
"settings"= {
"foreground"= "#d8dee9";
};
}
{
"name"= "Operators";
"scope"= "keyword.operator";
"settings"= {
"foreground"= "#f97b58";
};
}
{
"scope"= [
"keyword.operator.new"
"keyword.operator.expression"
"keyword.operator.cast"
"keyword.operator.sizeof"
"keyword.operator.logical.python"
];
"settings"= {
"fontStyle"= "italic";
};
}
{
"name"= "Punctuation";
"scope"= [
"punctuation.separator"
"punctuation.terminator"
];
"settings"= {
"foreground"= "#A7ADBA";
};
}
{
"name"= "Punctuation";
"scope"= "punctuation.section";
"settings"= {
"foreground"= "#ffffff";
};
}
{
"name"= "String interpolation";
"scope"= [
"punctuation.definition.template-expression.begin"
"punctuation.definition.template-expression.end"
"punctuation.section.embedded"
];
"settings"= {
# "fontStyle"= "italic"
};
}
{
"name"= "Accessor";
"scope"= "punctuation.accessor";
"settings"= {
"foreground"= "#A7ADBA";
};
}
{
"name"= "Annotation Punctuation";
"scope"= "punctuation.definition.annotation";
"settings"= {
"foreground"= "#5fb3b3";
};
}
{
"name"= "JavaScript Dollar";
"scope"= [
"variable.other.dollar.only.js"
"variable.other.object.dollar.only.js"
"variable.type.dollar.only.js"
"support.class.dollar.only.js"
];
"settings"= {
"foreground"= "#5fb3b3";
};
}
{
"name"= "this.self";
"scope"= "variable.language";
"settings"= {
"fontStyle"= "italic";
"foreground"= "#ff5874";
};
}
{
"name"= "Storage";
"scope"= "storage";
"settings"= {
"foreground"= "#ec5f67";
};
}
{
"name"= "Storage type";
"scope"= "storage.type";
"settings"= {
"foreground"= "#c594c5";
# "fontStyle"= "italic";
};
}
{
"name"= "Storage type";
"scope"= "storage.type.function.arrow";
"settings"= {
"fontStyle"= "";
};
}
{
"scope"= "storage.modifier";
"settings"= {
"fontStyle"= "italic";
};
}
{
"name"= "Entity name";
"scope"= "entity.name.function";
"settings"= {
"foreground"= "#5fb3b3";
};
}
{
"name"= "Object Property JS";
"scope"= "meta.object-literal.key.js";
"settings"= {
"foreground"= "#6699cc";
};
}
{
"name"= "Entity name";
"scope"= "entity.name - (entity.name.section | entity.name.tag | entity.name.label)";
"settings"= {
"foreground"= "#f9ae58";
};
}
{
"name"= "Inherited class";
"scope"= "entity.other.inherited-class";
"settings"= {
"fontStyle"= "italic underline";
"foreground"= "#5fb3b3";
};
}
{
"name"= "Function argument";
"scope"= "variable.parameter";
"settings"= {
"fontStyle"= "";
"foreground"= "#f9ae58";
};
}
{
"name"= "Language variable";
"scope"= "variable.language";
"settings"= {
"foreground"= "#ec5f67";
"fontStyle"= "italic";
};
}
{
"name"= "Tag name";
"scope"= "entity.name.tag";
"settings"= {
"fontStyle"= "";
"foreground"= "#ec5f67";
};
}
{
"name"= "Tag attribute";
"scope"= "entity.other.attribute-name";
"settings"= {
"foreground"= "#c594c5";
"fontStyle"= "italic";
};
}
{
"name"= "Tag attribute";
"scope"= "entity.other.attribute-name.id.css";
"settings"= {
"fontStyle"= "";
};
}
{
"name"= "Tag attribute";
"scope"= "entity.other.attribute-name.class.css";
"settings"= {
"fontStyle"= "";
};
}
{
"name"= "Function call";
"scope"= [
"variable.function"
"variable.annotation"
];
"settings"= {
"fontStyle"= "";
"foreground"= "#6699cc";
};
}
{
"name"= "Library function";
"scope"= [
"support.function"
"support.macro"
];
"settings"= {
"foreground"= "#6699cc";
};
}
{
"name"= "Library constant";
"scope"= "support.constant";
"settings"= {
"foreground"= "#c594c5";
"fontStyle"= "italic";
};
}
{
"name"= "Library class/type";
"scope"= [
"support.class"
];
"settings"= {
"foreground"= "#6699cc";
# "fontStyle"= "italic"
};
}
{
"name"= "Invalid";
"scope"= "invalid";
"settings"= {
"foreground"= "#f8f8f8";
};
}
{
"name"= "Invalid deprecated";
"scope"= "invalid.deprecated";
"settings"= {
"foreground"= "#f8f8f8";
};
}
{
"name"= "YAML Key";
"scope"= "entity.name.tag.yaml";
"settings"= {
"foreground"= "#5fb3b3";
};
}
{
"name"= "YAML String";
"scope"= "source.yaml string.unquoted";
"settings"= {
"foreground"= "#D8DEE9";
};
}
{
"name"= "markup headings";
"scope"= "markup.heading";
"settings"= {
"fontStyle"= "bold";
};
}
{
"name"= "markup headings";
"scope"= "markup.heading punctuation.definition.heading";
"settings"= {
"foreground"= "#f97b58";
};
}
{
"name"= "markup h1";
"scope"= "markup.heading.1 punctuation.definition.heading";
"settings"= {
"foreground"= "#ec5f67";
};
}
{
"name"= "markup links";
"scope"= [
"string.other.link"
"markup.underline.link"
];
"settings"= {
"foreground"= "#6699cc";
};
}
{
"scope"= "markup.underline";
"settings"= {
"fontStyle"= "underline";
};
}
{
"name"= "markup bold";
"scope"= "markup.bold";
"settings"= {
"fontStyle"= "bold";
};
}
{
"name"= "markup italic";
"scope"= "markup.italic";
"settings"= {
"fontStyle"= "italic";
};
}
{
"name"= "markup bold/italic";
"scope"= "markup.italic markup.bold | markup.bold markup.italic";
"settings"= {
"fontStyle"= "bold italic";
};
}
{
"name"= "markup hr";
"scope"= "punctuation.definition.thematic-break";
"settings"= {
"foreground"= "#f9ae58";
};
}
{
"name"= "markup numbered list bullet";
"scope"= "markup.list.numbered.bullet";
"settings"= {
"foreground"= "#99c794";
};
}
{
"name"= "markup blockquote";
"scope"= [
"markup.quote punctuation.definition.blockquote"
"markup.list punctuation.definition.list_item"
];
"settings"= {
"foreground"= "#f9ae58";
};
}
{
"name"= "markup punctuation";
"scope"= "(text punctuation.definition.italic | text punctuation.definition.bold)";
"settings"= {
"foreground"= "#c594c5";
};
}
{
"name"= "@Decorator";
"scope"= [
"meta.decorator punctuation.decorator"
];
"settings"= {
"fontStyle"= "italic";
};
}
{
"scope"= [
"punctuation.definition.comment"
"comment"
];
"settings"= {
"foreground"= "#8f97a8";
"fontStyle"= "italic";
};
}
{
"name"= "diff.header";
"scope"= [
"meta.diff"
"meta.diff.header"
];
"settings"= {
"foreground"= "#c594c5";
};
}
{
"name"= "diff.deleted";
"scope"= "markup.deleted";
"settings"= {
"foreground"= "#ec5f67";
};
}
{
"name"= "diff.inserted";
"scope"= "markup.inserted";
"settings"= {
"foreground"= "#99c794";
};
}
{
"name"= "diff.changed";
"scope"= "markup.changed";
"settings"= {
"foreground"= "#f9ae58";
};
}
{
"name"= "CSS Properties";
"scope"= "support.type.property-name";
"settings"= {
"foreground"= "#D8DEE9";
};
}
{
"scope"= "constant.numeric.line-number.match";
"settings"= {
"foreground"= "#ec5f67";
};
}
{
"scope"= "message.error";
"settings"= {
"foreground"= "#ec5f67";
};
}
{
"scope"= "token.info-token";
"settings"= {
"foreground"= "#6796e6";
};
}
{
"scope"= "token.warn-token";
"settings"= {
"foreground"= "#cd9731";
};
}
{
"scope"= "token.error-token";
"settings"= {
"foreground"= "#f44747";
};
}
{
"scope"= "token.debug-token";
"settings"= {
"foreground"= "#b267e6";
};
}
{
"scope"= "emphasis";
"settings"= {
"fontStyle"= "italic";
};
}
{
"scope"= "strong";
"settings"= {
"fontStyle"= "bold";
};
}
];
};
}

132
home/lach.nix Normal file
View file

@ -0,0 +1,132 @@
{ config, pkgs, lib, spicetify-nix, ... }:
{
imports = [
./spicetify
];
home.username = "lach";
home.homeDirectory = "/home/lach";
nixpkgs.config.allowUnfree = true;
nixpkgs.overlays = [
(import ../im-overlays.nix)
];
home.packages = with pkgs; [
xmousepasteblock
imagemagick
fastfetch
ffmpeg-full
fsearch
gimp
inkscape-with-extensions
# jdk
krita
mpv
nomacs
vlc
obs-studio
onedrive
onedrivegui
p7zip
pandoc
piper
# prismlauncher
qq
smplayer
typst
ungoogled-chromium
yt-dlp
# davinci-resolve
reaper
texlive.combined.scheme-medium
osu-lazer-bin
# hydrapaper
# gnome-tweaks
# mission-center
# resources
qbittorrent
];
programs.firefox = {
enable = true;
};
programs.fish = {
enable = true;
};
programs.emacs = {
enable = true;
package = pkgs.emacs30-pgtk;
};
programs.zed-editor = {
enable = true;
};
programs.vscode = {
enable = true;
package = pkgs.vscode.fhs;
enableUpdateCheck = false;
mutableExtensionsDir = false;
extensions = with pkgs.vscode-extensions; [
bbenoist.nix
myriad-dreamin.tinymist
ms-vscode.cpptools
ms-vscode.cpptools-extension-pack
ms-python.python
ms-vscode-remote.remote-ssh
ms-vscode-remote.remote-ssh-edit
james-yu.latex-workshop
# ms-vscode.cmake-tools
github.vscode-github-actions
charliermarsh.ruff
ziglang.vscode-zig
svelte.svelte-vscode
ms-python.debugpy
# vue.volar
bradlc.vscode-tailwindcss
rust-lang.rust-analyzer
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "vs-code-extension";
publisher = "inlang";
version = "1.48.3";
sha256 = "sha256-4/Jday2YcP5yVq5OE4xZXY5Go8/oyTPhJphS423pEUA=";
}
];
userSettings = import ./code.nix;
};
programs.ghostty = {
enable = true;
enableFishIntegration = true;
settings = {
font-family = "Victor Mono";
background-opacity = .9;
background-blur = true;
theme = "Adwaita Dark";
};
};
i18n.inputMethod = {
enabled = "fcitx5";
fcitx5.addons = with pkgs; [
kdePackages.fcitx5-configtool
fcitx5-mozc
fcitx5-gtk
kdePackages.fcitx5-qt
fcitx5-lua
fcitx5-rime
];
};
home.stateVersion = "25.05";
programs.home-manager.enable = true;
}

View file

@ -0,0 +1,29 @@
{ pkgs, config, lib, spicetify-nix, ... }:
let
spicePkgs = spicetify-nix.legacyPackages.${pkgs.system};
in
{
imports = [ spicetify-nix.homeManagerModules.default ];
programs.spicetify = {
enable = true;
enabledExtensions = with spicePkgs.extensions; [
playlistIcons
history
betterGenres
adblock
savePlaylists
volumePercentage
copyToClipboard
songStats
hidePodcasts
fullAppDisplay
groupSession
fullAlbumDate
];
enabledCustomApps = with spicePkgs.apps; [
historyInSidebar
];
};
}

10
im-overlays.nix Normal file
View file

@ -0,0 +1,10 @@
final: prev: {
vesktop = prev.vesktop.overrideAttrs (oldAttrs: {
postFixup = builtins.replaceStrings [ "app.asar" ] [ "app.asar --set GTK_IM_MODULE fcitx" ] oldAttrs.postFixup; # this sucks
});
qq = prev.qq.overrideAttrs (oldAttrs: {
postInstall = (oldAttrs.postInstall or "") + ''
wrapProgram $out/bin/qq --set GTK_IM_MODULE fcitx
'';
});
}