forked from aylac.top/nixcfg
this repo has no description

Compare changes

Choose any two refs to compare.

Changed files
+266 -129
homes
modules
home
desktop
programs
helix
zed-editor
snippets
editor
nixos
desktop
profiles
workstation
+1 -3
homes/ayla/default.nix
···
};
myHome = {
-
desktop = {
-
gnome.enable = true;
-
};
+
desktop.gnome.enable = true;
programs = {
lutris.enable = true;
+51
modules/home/desktop/cosmic/default.nix
···
+
{
+
lib,
+
config,
+
pkgs,
+
...
+
}: {
+
options.myHome.desktop.cosmic = {
+
enable = lib.mkEnableOption "COSMIC desktop environment";
+
};
+
+
config = lib.mkIf config.myHome.desktop.cosmic.enable {
+
dconf = {
+
enable = true;
+
+
settings = {
+
"org/gnome/desktop/wm/preferences".button-layout = "appmenu:close";
+
};
+
};
+
+
myHome.profiles.defaultApps = {
+
audioPlayer = {
+
package = lib.mkDefault config.programs.mpv.finalPackage;
+
icon = lib.mkDefault "mpv";
+
};
+
editor = {
+
package = lib.mkDefault pkgs.cosmic-edit;
+
icon = lib.mkDefault "com.system76.CosmicEdit";
+
};
+
fileManager = {
+
package = lib.mkDefault pkgs.cosmic-files;
+
icon = lib.mkDefault "com.system76.CosmicFiles";
+
};
+
imageViewer = {
+
package = lib.mkDefault pkgs.loupe;
+
icon = lib.mkDefault "org.gnome.Loupe";
+
};
+
pdfViewer = {
+
package = lib.mkDefault pkgs.papers;
+
icon = lib.mkDefault "org.gnome.Papers";
+
};
+
terminal = {
+
package = lib.mkDefault pkgs.cosmic-term;
+
icon = lib.mkDefault "com.system76.CosmicTerm";
+
};
+
videoPlayer = {
+
package = lib.mkDefault config.programs.mpv.finalPackage;
+
icon = lib.mkDefault "mpv";
+
};
+
};
+
};
+
}
+1
modules/home/desktop/default.nix
···
imports = [
./gnome
./plasma
+
./cosmic
];
options.myHome.desktop.enable = lib.mkOption {
+2
modules/home/desktop/gnome/default.nix
···
switch-to-workspace-up = [];
toggle-fullscreen = ["<Super>w"];
};
+
+
"org/gnome/desktop/wm/preferences".button-layout = "appmenu:close";
};
};
+42 -1
modules/home/desktop/plasma/default.nix
···
{
lib,
config,
+
pkgs,
...
}: {
options.myHome.desktop.plasma = {
enable = lib.mkEnableOption "KDE Plasma desktop environment";
};
-
config = lib.mkIf config.myHome.desktop.plasma.enable {};
+
config = lib.mkIf config.myHome.desktop.plasma.enable {
+
dconf = {
+
enable = true;
+
+
settings = {
+
"org/gnome/desktop/wm/preferences".button-layout = "appmenu:minimize,maximize,close";
+
};
+
};
+
+
myHome.profiles.defaultApps = {
+
audioPlayer = {
+
package = lib.mkDefault config.programs.mpv.finalPackage;
+
icon = lib.mkDefault "mpv";
+
};
+
editor = {
+
package = lib.mkDefault pkgs.kdePackages.kate;
+
icon = lib.mkDefault "org.kde.kate";
+
};
+
fileManager = {
+
package = lib.mkDefault pkgs.kdePackages.dolphin;
+
exec = lib.mkDefault (lib.getExe config.myHome.profiles.defaultApps.fileManager.package);
+
icon = lib.mkDefault "org.kde.dolphin";
+
};
+
imageViewer = {
+
package = lib.mkDefault pkgs.kdePackages.gwenview;
+
icon = lib.mkDefault "org.kde.gwenview";
+
};
+
pdfViewer = {
+
package = lib.mkDefault pkgs.kdePackages.okular;
+
icon = lib.mkDefault "org.kde.okular";
+
};
+
terminal = {
+
package = lib.mkDefault pkgs.kdePackages.konsole;
+
icon = lib.mkDefault "org.kde.konsole";
+
};
+
videoPlayer = {
+
package = lib.mkDefault config.programs.mpv.finalPackage;
+
icon = lib.mkDefault "mpv";
+
};
+
};
+
};
}
+42 -56
modules/home/programs/helix/default.nix
···
editorCfg = config.mySnippets.editor;
mkHelixServer = name: srv:
-
lib.filterAttrs (_: v: v != null) (
-
{
-
name = name;
-
command = srv.command;
-
}
-
// (
-
if (srv.args or []) != []
-
then {args = srv.args;}
-
else {}
-
)
-
// (
-
if (lib.isAttrs (srv.config or {}) && (builtins.length (builtins.attrNames srv.config)) > 0)
-
then {config = srv.config;}
-
else {}
-
)
-
);
+
lib.filterAttrs (_: v: v != null) {
+
inherit name;
+
command =
+
if srv.helix-command != null
+
then srv.helix-command
+
else srv.command;
+
args = srv.args or null;
+
config = srv.config or null;
+
};
mkHelixLanguage = name: lang: let
-
fmtName = lang.helix-formatter or lang.formatter or null;
+
# this shit is so ugly
+
fmtName = lib.findFirst (x: x != null) null [
+
(lang.helix-formatter or null)
+
(lang.formatter or null)
+
];
+
fmt =
-
if fmtName == null
-
then null
-
else editorCfg.formatters.${fmtName};
+
if fmtName != null
+
then editorCfg.formatters.${fmtName}
+
else null;
-
usesLspFormatter = fmt != null && fmt.type == "lsp";
+
usesLspFormatter = fmt == null || fmt.type == "lsp";
formatter =
if fmt != null && fmt.type == "external"
-
then {
-
command = fmt.command;
-
args = fmt.args or [];
-
}
+
then
+
lib.filterAttrs (_: v: v != null) {
+
command = fmt.command;
+
args = fmt.args;
+
}
else null;
-
languageServers =
-
if usesLspFormatter
-
then
-
map (
-
srvName:
-
if srvName == fmt.lspName
-
then {
-
name = srvName;
-
except-features = ["format"];
-
}
-
else {name = srvName;}
-
)
-
lang.language-servers
-
else map (srvName: {name = srvName;}) lang.language-servers;
+
fullLspList = lang.language-servers ++ lang.helix-only-language-servers;
+
+
languageServers = map (srvName:
+
lib.filterAttrs (_: v: v != null) {
+
name = srvName;
+
except-features =
+
if (usesLspFormatter && fmtName != null && srvName != fmtName)
+
then ["format"]
+
else null;
+
})
+
fullLspList;
in
-
lib.filterAttrs (_: v: v != null) (
-
{
-
name = lang.name;
-
auto-format = lang.auto-format;
-
language-servers = languageServers;
-
}
-
// (
-
if lang.file-types != []
-
then {file-types = lang.file-types;}
-
else {}
-
)
-
// (
-
if formatter != null
-
then {inherit formatter;}
-
else {}
-
)
-
);
+
lib.filterAttrs (_: v: v != null) {
+
name = lang.name;
+
auto-format = lang.auto-format;
+
language-servers = languageServers;
+
file-types = lang.file-types;
+
inherit formatter;
+
};
in {
options.myHome.programs.helix.enable = lib.mkEnableOption "helix";
+49 -34
modules/home/programs/zed-editor/default.nix
···
mkZedFormatter = fmtName:
if fmtName == null
-
then null
+
then "language_server"
else let
f = editorCfg.formatters.${fmtName};
in
···
};
}
else if f.type == "lsp"
-
then {
-
language_server = {name = f.lspName;};
-
}
+
then {language_server = {name = fmtName;};}
else null;
mkZedLanguage = name: lang:
lib.filterAttrs (_: v: v != null) {
formatter = mkZedFormatter lang.formatter;
-
language_servers = lang.language-servers;
+
language_servers = lang.language-servers ++ lang.zed-only-language-servers;
code_actions_on_format = lang.code-actions-on-format;
};
-
mkZedLsp = name: srv: let
-
args = srv.args or [];
-
cfg = srv.config or {};
-
hasArgs = args != [];
-
hasSettings = lib.isAttrs cfg && (builtins.length (builtins.attrNames cfg) > 0);
-
isHelixOnly = srv.helix-only or false;
-
in
-
if isHelixOnly
-
then null
-
else
-
lib.filterAttrs (_: v: v != null) (
-
{
-
binary = lib.filterAttrs (_: v: v != null) (
-
{path = srv.command;}
-
// (
-
if hasArgs
-
then {arguments = args;}
-
else {}
-
)
-
);
-
}
-
// (
-
if hasSettings
-
then {settings = cfg;}
-
else {}
-
)
-
);
+
mkZedLsp = name: srv:
+
lib.filterAttrs (_: v: v != null) {
+
binary = lib.filterAttrs (_: v: v != null) {
+
path = srv.command;
+
arguments = srv.args or null;
+
};
+
settings = srv.config or null;
+
};
in {
options.myHome.programs.zed-editor.enable = lib.mkEnableOption "zed editor";
···
"scss"
"toml"
"biome"
-
"superhtml"
+
#"superhtml"
"marksman"
"makefile"
"zig"
···
editorCfg.languages
)
);
-
lsp = lib.filterAttrs (_: v: v != null) (lib.mapAttrs mkZedLsp editorCfg.languageServers);
+
lsp = lib.mapAttrs mkZedLsp editorCfg.languageServers;
};
userTasks = [
{
···
allow_concurrent_runs = false;
shell = {
program = "fish";
+
};
+
}
+
];
+
userKeymaps = [
+
{
+
context = "(vim_mode == helix_normal || vim_mode == helix_select) && !menu";
+
bindings = {
+
n = "vim::WrappingLeft";
+
e = "vim::Down";
+
i = "vim::Up";
+
o = "vim::WrappingRight";
+
};
+
}
+
{
+
context = "vim_mode == helix_normal && !menu";
+
bindings = {
+
j = "vim::NextWordEnd";
+
J = ["vim::NextWordEnd" {ignore_punctuation = true;}];
+
k = "vim::MoveToNextMatch";
+
K = "vim::MoveToPreviousMatch";
+
l = "vim::HelixInsert";
+
L = "vim::InsertFirstNonWhitespace";
+
h = "vim::InsertLineBelow";
+
H = "vim::InsertLineAbove";
+
};
+
}
+
{
+
context = "Workspace";
+
bindings = {
+
ctrl-g = [
+
"task::Spawn"
+
{
+
task_name = "jjui";
+
reveal_target = "center";
+
}
+
];
};
}
];
+49 -30
modules/home/snippets/editor/default.nix
···
# Helper function to create language server definitions
mkLspServer = name: {
command,
-
args ? [],
-
config ? {},
-
helix-only ? false,
+
helix-command ? null,
+
args ? null,
+
config ? null,
}: {
-
inherit name command args config helix-only;
+
inherit name command helix-command args config;
};
# Helper function to create formatter definitions
mkFormatter = name: {
type,
command ? null,
-
args ? [],
+
args ? null,
lspName ? null,
-
config ? {},
+
config ? null,
}: {
inherit name type command args lspName config;
};
···
mkLanguage = name: {
full-name ? name,
auto-format ? true,
-
file-types ? [],
+
file-types ? null,
language-servers ? [],
+
zed-only-language-servers ? [],
+
helix-only-language-servers ? [],
formatter ? null,
helix-formatter ? null,
-
code-actions-on-format ? {},
+
code-actions-on-format ? null,
}: {
-
inherit name full-name auto-format file-types language-servers formatter helix-formatter code-actions-on-format;
+
inherit name full-name auto-format file-types language-servers zed-only-language-servers helix-only-language-servers formatter helix-formatter code-actions-on-format;
};
in {
options.mySnippets.editor = lib.mkOption {
···
};
tailwindcss-language-server = mkLspServer "tailwindcss-language-server" {
-
command = let
+
command = pkgs.writeScript "tailwindcss-language-server-bun" ''
+
#!${lib.getExe pkgs.bash} -e
+
exec ${lib.getExe pkgs.bun} ${lib.getExe pkgs.tailwindcss-language-server}
+
'';
+
helix-command = let
fd = lib.getExe pkgs.fd;
xargs = "${pkgs.uutils-findutils}/bin/xargs";
grep = lib.getExe pkgs.gnugrep;
-
echo = "${pkgs.uutils-coreutils-noprefix}/bin/echo";
bun = lib.getExe pkgs.bun;
twls = lib.getExe pkgs.tailwindcss-language-server;
in
-
pkgs.writeScript "tailwindcss-language-server-bun" ''
-
#!${lib.getExe pkgs.bash} -e
+
pkgs.writeScript "tailwindcss-language-server-bun-helix" ''
+
#!${lib.getExe pkgs.bash} -euo
if ! ${fd} -H -I -E "node_modules" "package\\.json$" . | \
${xargs} ${grep} -q '"tailwindcss"'; then
-
${echo} "No tailwindcss found in project; skipping tailwindcss-language-server." >&2
-
exec tail -f /dev/null
+
+
exit 0
fi
exec ${bun} ${twls}
'';
args = [];
config = {provideFormatter = false;};
-
helix-only = true;
};
vscode-html-language-server = mkLspServer "vscode-html-language-server" {
···
args = ["${pkgs.vscode-json-languageserver}/lib/node_modules/vscode-json-languageserver/bin/vscode-json-languageserver" "--stdio"];
};
-
typescript-language-server = mkLspServer "typescript-language-server" {
+
vtsls = mkLspServer "vtsls" {
command = lib.getExe pkgs.bun;
-
args = ["${pkgs.nodePackages.typescript-language-server}/lib/node_modules/typescript-language-server/lib/cli.mjs" "--stdio"];
+
args = ["${pkgs.vtsls}/bin/vtsls" "--stdio"];
};
svelte-language-server = mkLspServer "svelte-language-server" {
···
formatters = {
biome = mkFormatter "biome" {
type = "lsp";
-
lspName = "biome";
};
biomeHtml = mkFormatter "biomeHtml" {
···
languages = {
html = mkLanguage "html" {
full-name = "HTML";
-
language-servers = ["vscode-html-language-server" "superhtml" "biome"];
+
language-servers = ["vscode-html-language-server" "biome"];
+
zed-only-language-servers = ["!eslint" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
helix-formatter = "biomeHtml";
code-actions-on-format = {
···
css = mkLanguage "css" {
full-name = "CSS";
language-servers = ["css-language-server" "biome"];
+
zed-only-language-servers = ["..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
javascript = mkLanguage "javascript" {
full-name = "JavaScript";
-
language-servers = ["typescript-language-server" "biome"];
+
language-servers = ["vtsls" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
typescript = mkLanguage "typescript" {
full-name = "TypeScript";
-
language-servers = ["typescript-language-server" "biome"];
+
language-servers = ["vtsls" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
jsx = mkLanguage "jsx" {
full-name = "JSX";
-
language-servers = ["typescript-language-server" "biome"];
+
language-servers = ["vtsls" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
tsx = mkLanguage "tsx" {
full-name = "TSX";
-
language-servers = ["typescript-language-server" "biome"];
+
language-servers = ["vtsls" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
svelte = mkLanguage "svelte" {
full-name = "Svelte";
-
language-servers = ["svelte-language-server" "typescript-language-server" "biome"];
+
language-servers = ["svelte-language-server" "vtsls" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
vue = mkLanguage "vue" {
full-name = "Vue.js";
language-servers = ["vue-language-server" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
};
bash = mkLanguage "bash" {
-
full-name = "Bash";
+
full-name = "Shell Script";
file-types = ["sh" "bash" "dash" "ksh" "mksh"];
language-servers = ["bash-language-server"];
formatter = "shfmt";
···
formatter = "gdscript-formatter";
};
-
ruby = mkLanguage "ruby" {
-
full-name = "Ruby";
-
language-servers = ["solargraph" "rubocop" "!ruby-lsp"];
-
};
+
#ruby = mkLanguage "ruby" {
+
# full-name = "Ruby";
+
# language-servers = ["solargraph" "rubocop"];
+
#};
};
};
}
+24
modules/nixos/desktop/cosmic/default.nix
···
+
{
+
config,
+
lib,
+
pkgs,
+
...
+
}: {
+
options.myNixOS.desktop.cosmic.enable = lib.mkEnableOption "COSMIC desktop environment";
+
+
config = lib.mkIf config.myNixOS.desktop.cosmic.enable {
+
home-manager.sharedModules = [
+
{
+
config.myHome.desktop.cosmic.enable = true;
+
}
+
];
+
+
environment.cosmic.excludePackages = with pkgs; [
+
cosmic-store
+
];
+
+
services.desktopManager.cosmic.enable = true;
+
system.nixos.tags = ["cosmic"];
+
myNixOS.desktop.enable = true;
+
};
+
}
+1
modules/nixos/desktop/default.nix
···
imports = [
./gnome
./plasma
+
./cosmic
];
options.myNixOS.desktop.enable = lib.mkOption {
+2 -3
modules/nixos/desktop/gnome/default.nix
···
];
};
-
myNixOS = {
-
desktop.enable = true;
-
};
+
myNixOS.desktop.enable = true;
+
system.nixos.tags = ["gnome"];
#qt = {
# enable = true;
+2
modules/nixos/desktop/plasma/default.nix
···
];
services.desktopManager.plasma6.enable = true;
+
system.nixos.tags = ["plasma"];
+
myNixOS.desktop.enable = true;
};
}
-2
modules/nixos/profiles/workstation/default.nix
···
enableSystemSlice = true;
enableUserSlices = true;
};
-
# i hate these guys
-
coredump.enable = false;
};
zramSwap = {