8 Commits

9 changed files with 299 additions and 254 deletions

View File

@@ -1,20 +0,0 @@
{
"neodev": {
"library": {
"enabled": true,
"plugins": true
}
},
"neoconf": {
"plugins": {
"lua_ls": {
"enabled": true
}
}
},
"lspconfig": {
"lua_ls": {
"Lua.format.enable": false
}
}
}

View File

@@ -1,7 +0,0 @@
column_width = 120
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferDouble"
call_parentheses = "None"
collapse_simple_statement = "Always"

View File

@@ -215,7 +215,8 @@ font pango:FiraCode: 14px
### Window formatting ### Window formatting
default_border none default_border none
default_border pixel 2 default_border pixel 2
gaps inner 10px gaps inner 0
gaps outer 0
# Applications # Applications
exec_always /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec_always /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1

87
flake.lock generated
View File

@@ -7,11 +7,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749744770, "lastModified": 1757432263,
"narHash": "sha256-MEM9XXHgBF/Cyv1RES1t6gqAX7/tvayBC1r/KPyK1ls=", "narHash": "sha256-qHn+/0+IOz5cG68BZUwL9BV3EO/e9eNKCjH3+N7wMdI=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "536f951efb1ccda9b968e3c9dee39fbeb6d3fdeb", "rev": "1fef4404de4d1596aa5ab2bd68078370e1b9dcdb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -61,11 +61,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1753121425, "lastModified": 1756770412,
"narHash": "sha256-TVcTNvOeWWk1DXljFxVRp+E0tzG1LhrVjOGGoMHuXio=", "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "644e0fc48951a860279da645ba77fe4a6e814c5e", "rev": "4524271976b625a4a605beefd893f270620fd751",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -101,11 +101,11 @@
"zon2nix": "zon2nix" "zon2nix": "zon2nix"
}, },
"locked": { "locked": {
"lastModified": 1751123364, "lastModified": 1757737252,
"narHash": "sha256-Nb3pxs1onnbdhhnoNc+IfHzrW9dM+UbEdjK0AguR2J4=", "narHash": "sha256-i0GfdFWNlIgFuVjCnf6/nSTqnNU4PSXb+6NBxGJkspE=",
"owner": "ghostty-org", "owner": "ghostty-org",
"repo": "ghostty", "repo": "ghostty",
"rev": "f6d1c274b9c0e095dc0a1b411dec7410ad779bf5", "rev": "0c63946bdb68080cd5cac0f97622b8509b6776a5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -121,11 +121,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1750792728, "lastModified": 1756679287,
"narHash": "sha256-Lh3dopA8DdY+ZoaAJPrtkZOZaFEJGSYjOdAYYgOPgE4=", "narHash": "sha256-Xd1vOeY9ccDf5VtVK12yM0FS6qqvfUop8UQlxEB+gTQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "366f00797b1efb70f2882d3da485e3c10fd3d557", "rev": "07fc025fe10487dd80f2ec694f1cd790e752d0e8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -137,11 +137,11 @@
}, },
"mnw": { "mnw": {
"locked": { "locked": {
"lastModified": 1748710831, "lastModified": 1756659871,
"narHash": "sha256-eZu2yH3Y2eA9DD3naKWy/sTxYS5rPK2hO7vj8tvUCSU=", "narHash": "sha256-v6Rh4aQ6RKjM2N02kK9Usn0Ix7+OY66vNpeklc1MnGE=",
"owner": "Gerg-L", "owner": "Gerg-L",
"repo": "mnw", "repo": "mnw",
"rev": "cff958a4e050f8d917a6ff3a5624bc4681c6187d", "rev": "ed6cc3e48557ba18266e598a5ebb6602499ada16",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -181,11 +181,24 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1750969886, "lastModified": 1755972213,
"narHash": "sha256-zW/OFnotiz/ndPFdebpo3X0CrbVNf22n4DjN2vxlb58=", "narHash": "sha256-VYK7aDAv8H1enXn1ECRHmGbeY6RqLnNwUJkOwloIsko=",
"rev": "73e96df7cff5783f45e21342a75a1540c4eddce4",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable-small/nixos-25.11pre850642.73e96df7cff5/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable-small/nixexprs.tar.xz"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1757545623,
"narHash": "sha256-mCxPABZ6jRjUQx3bPP4vjA68ETbPLNz9V2pk9tO7pRQ=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a676066377a2fe7457369dd37c31fd2263b662f4", "rev": "8cd5ce828d5d1d16feff37340171a98fc3bf6526",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -195,13 +208,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_3": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1753432016, "lastModified": 1756696532,
"narHash": "sha256-cnL5WWn/xkZoyH/03NNUS7QgW5vI7D1i74g48qplCvg=", "narHash": "sha256-6FWagzm0b7I/IGigOv9pr6LL7NQ86mextfE8g8Q6HBg=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "6027c30c8e9810896b92429f0092f624f7b1aace", "rev": "58dcbf1ec551914c3756c267b8b9c8c86baa1b2f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -216,15 +229,15 @@
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"mnw": "mnw", "mnw": "mnw",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_4",
"systems": "systems_2" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1754552918, "lastModified": 1757773905,
"narHash": "sha256-vbT+nGdMLNAeYZ1S5WBBLJTVWosGne2VRt46rqPfB2A=", "narHash": "sha256-lM1K3cJsPQyiSGI3rE/F7u02fA/JYBsinMN49IQCY1s=",
"owner": "notashelf", "owner": "notashelf",
"repo": "nvf", "repo": "nvf",
"rev": "d61de135ce174f4e04b4e509de02e1afe040a834", "rev": "7e74ee604a7c18dda21e6a809720ad37ab5bae43",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -239,7 +252,7 @@
"ghostty": "ghostty", "ghostty": "ghostty",
"home-manager": "home-manager", "home-manager": "home-manager",
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_3",
"nvf": "nvf" "nvf": "nvf"
} }
}, },
@@ -276,7 +289,8 @@
"zig": { "zig": {
"inputs": { "inputs": {
"flake-compat": [ "flake-compat": [
"ghostty" "ghostty",
"flake-compat"
], ],
"flake-utils": [ "flake-utils": [
"ghostty", "ghostty",
@@ -303,27 +317,20 @@
}, },
"zon2nix": { "zon2nix": {
"inputs": { "inputs": {
"flake-utils": [ "nixpkgs": "nixpkgs_2"
"ghostty",
"flake-utils"
],
"nixpkgs": [
"ghostty",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1742104771, "lastModified": 1757167408,
"narHash": "sha256-LhidlyEA9MP8jGe1rEnyjGFCzLLgCdDpYeWggibayr0=", "narHash": "sha256-4XyJ6fmKd9wgJ7vHUQuULYy5ps2gUgkkDk/PrJb2OPY=",
"owner": "jcollie", "owner": "jcollie",
"repo": "zon2nix", "repo": "zon2nix",
"rev": "56c159be489cc6c0e73c3930bd908ddc6fe89613", "rev": "dc78177e2ad28d5a407c9e783ee781bd559d7dd5",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "jcollie", "owner": "jcollie",
"ref": "56c159be489cc6c0e73c3930bd908ddc6fe89613",
"repo": "zon2nix", "repo": "zon2nix",
"rev": "dc78177e2ad28d5a407c9e783ee781bd559d7dd5",
"type": "github" "type": "github"
} }
} }

View File

@@ -18,18 +18,23 @@
viAlias = true; viAlias = true;
vimAlias = true; vimAlias = true;
# useSystemClipboard = true; options = {
tabstop = 4;
# setting some nvim settings that are not in nvf shiftwidth = 4;
luaConfigPost = '' expandtab = true;
vim.opt.tabstop = 2 autoindent = true;
vim.opt.shiftwidth = 2 smartindent = true;
vim.opt.expandtab = true smarttab = true;
vim.opt.autoindent = true scrolloff = 12;
vim.opt.smartindent = true sidescrolloff = 8;
vim.opt.smarttab = true wrap = false;
vim.opt.scrolloff = 20; linebreak = false;
''; number = true;
relativenumber = true;
cursorline = true;
signcolumn = "yes";
tabline = "2";
};
# clipboard configuration # clipboard configuration
clipboard = { clipboard = {
@@ -65,11 +70,13 @@
# disable spellcheck # disable spellcheck
spellcheck.enable = false; spellcheck.enable = false;
# enable diagnostics # enable diagnostics (inline)
diagnostics = { diagnostics = {
enable = true; enable = true;
config = { config = {
underline = true; underline = true;
signs = true;
update_in_insert = false;
virtual_lines = true; virtual_lines = true;
}; };
}; };
@@ -118,6 +125,10 @@
enable = true; enable = true;
package = pkgs.prettierd; package = pkgs.prettierd;
}; };
lsp = {
enable = true;
server = "ts_ls";
};
}; };
lua.enable = false; lua.enable = false;
python.enable = true; python.enable = true;
@@ -132,7 +143,7 @@
enable = true; enable = true;
lsp = { lsp = {
enable = true; enable = true;
server = "csharp_ls"; server = "omnisharp";
}; };
treesitter.enable = true; treesitter.enable = true;
}; };
@@ -191,16 +202,21 @@
# tabline configuration # tabline configuration
tabline = { tabline = {
nvimBufferline.enable = true; nvimBufferline = {
nvimBufferline.mappings = { enable = true;
closeCurrent = "<leader>x"; setupOpts.options = {
cycleNext = "<tab>"; numbers = "none";
cyclePrevious = "<S-tab>"; };
moveNext = null; mappings = {
movePrevious = null; closeCurrent = "<leader>x";
sortByDirectory = null; cycleNext = "<tab>";
sortByExtension = null; cyclePrevious = "<S-tab>";
sortById = null; moveNext = null;
movePrevious = null;
sortByDirectory = null;
sortByExtension = null;
sortById = null;
};
}; };
}; };

View File

@@ -6,14 +6,6 @@
dirs = { dirs = {
defaults = ../defaults; defaults = ../defaults;
}; };
# Derived from subprojects/cava.wrap
libcava.src = pkgs.fetchFromGitHub {
owner = "LukashonakV";
repo = "cava";
rev = "0.10.3";
hash = "sha256-ZDFbI69ECsUTjbhlw2kHRufZbQMu+FQSMmncCJ5pagg=";
};
in { in {
wayland.windowManager.sway = { wayland.windowManager.sway = {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
@@ -25,142 +17,131 @@ in {
gtk = true; gtk = true;
}; };
}; };
xdg = {
xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config); configFile = {
xdg.configFile."waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config); "sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
xdg.configFile."waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css); "waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
"waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
programs.wofi = {
enable = pkgs.stdenv.isLinux;
settings = {
width=600;
height=350;
location="center";
show="drun";
prompt="Search...";
filter_rate=100;
allow_markup=true;
no_actions=true;
halign="fill";
orientation="vertical";
content_halign="fill";
insensitive=true;
allow_images=true;
image_size=40;
gtk_dark=true;
}; };
style = ''
@define-color selected-text #8caaee;
@define-color text #c6d0f5;
@define-color base #24273a;
* {
font-family: 'Monaspace Krypton 9', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}
'';
}; };
programs.swaylock.enable = pkgs.stdenv.isLinux;
services.mako = { services.mako = {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
settings = { settings = {
text-color="#cad3f5"; text-color = "#cad3f5";
border-color="#c6d0f5"; border-color = "#c6d0f5";
background-color="#24273a"; background-color = "#24273a";
width=420; width = 420;
height=110; height = 110;
padding=10; padding = 10;
border-size=2; border-size = 2;
font="Monaspace Krypton 9"; font = "Monaspace Krypton 9";
anchor="top-right"; anchor = "top-right";
default-timeout=5000; default-timeout = 5000;
max-icon-size=32; max-icon-size = 32;
}; };
}; };
programs = {
programs.waybar = { wofi = {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
systemd.enable = true; settings = {
width = 600;
package = pkgs.waybar.overrideAttrs (old: { height = 350;
version = "0.11.0"; location = "center";
show = "drun";
src = pkgs.fetchFromGitHub { prompt = "Search...";
owner = "Alexays"; filter_rate = 100;
repo = "Waybar"; allow_markup = true;
rev = "d56dd6ee7fdf8c5ba4e90790af62b7f7829d3a47"; no_actions = true;
sha256 = "sha256-3lc0voMU5RS+mEtxKuRayq/uJO09X7byq6Rm5NZohq8="; halign = "fill";
fetchSubmodules = true; orientation = "vertical";
content_halign = "fill";
insensitive = true;
allow_images = true;
image_size = 40;
gtk_dark = true;
}; };
style = ''
@define-color selected-text #8caaee;
@define-color text #c6d0f5;
@define-color base #24273a;
buildInputs = old.buildInputs ++ [ pkgs.fftw pkgs.libcava ]; * {
# mesonFlags = (old.mesonFlags or []) ++ [ "-Dcava=disabled" ]; font-family: 'Monaspace Krypton 9', monospace;
}); font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}
'';
};
swaylock.enable = pkgs.stdenv.isLinux;
waybar = {
enable = pkgs.stdenv.isLinux;
systemd.enable = true;
};
}; };
} }

19
modules/apps/appimage.nix Normal file
View File

@@ -0,0 +1,19 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.appimage;
in {
options.appimage = {
enable = mkEnableOption "AppImage support";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
appimageupdate
appimage-run
];
};
}

View File

@@ -21,11 +21,13 @@ in {
inherit lib pkgs flatpakPackages; inherit lib pkgs flatpakPackages;
}) })
../../apps/gaming.nix ../../apps/gaming.nix
../../apps/appimage.nix
../../graphics ../../graphics
../../pwrMgmt ../../pwrMgmt
../../networking/core.nix ../../networking/core.nix
../../sound/pipewire.nix ../../sound/pipewire.nix
../../sound/shairport.nix ../../sound/shairport.nix
../../sound/focusrite.nix
../../virtualization/podman.nix ../../virtualization/podman.nix
../../virtualization/hardware.nix ../../virtualization/hardware.nix
]; ];
@@ -34,9 +36,13 @@ in {
nix.settings.experimental-features = ["nix-command" "flakes"]; nix.settings.experimental-features = ["nix-command" "flakes"];
# Custom kernel/boot stuff # Custom kernel/boot stuff
boot.kernelPackages = pkgs.linuxPackages_latest; boot = {
boot.loader.systemd-boot.enable = true; kernelPackages = pkgs.linuxPackages_latest;
boot.loader.efi.canTouchEfiVariables = true; loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
};
# Enable Bluetooth if present # Enable Bluetooth if present
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
@@ -63,21 +69,6 @@ in {
wl-clip-persist wl-clip-persist
]; ];
# Enable OpenSSH
services.openssh.enable = true;
# Enable keyring
services.gnome.gnome-keyring.enable = true;
# Enable GnuPG
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# Enable SUID wrappers (some programs need them)
programs.mtr.enable = true;
# Enable Polkit # Enable Polkit
security.polkit.enable = true; security.polkit.enable = true;
@@ -145,14 +136,39 @@ in {
networkManager.enable = true; networkManager.enable = true;
}; };
# Enable dconf programs = {
programs.dconf.enable = true; # Enable GnuPG
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# Enable SUID wrappers (some programs need them)
mtr.enable = true;
# Enable dconf
dconf.enable = true;
};
# Add username to groups "wheel" and "video" - more may be added here later # Add username to groups "wheel" and "video" - more may be added here later
users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"]; users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"];
# Flatpak packages (see ../../apps/flatpak.nix) services = {
services.flatpak.packages = flatpakPackages; # Enable OpenSSH
openssh.enable = true;
# Enable keyring
gnome.gnome-keyring.enable = true;
# Flatpak packages (see ../../apps/flatpak.nix)
flatpak.packages = flatpakPackages;
};
# Focusrite Scarlett audio interface support (see ../../sound/focusrite.nix)
sound.hardware.focusrite.enable = true;
# AppImage support
appimage.enable = true;
# XDG stuff # XDG stuff
xdg = { xdg = {
@@ -160,12 +176,12 @@ in {
enable = true; enable = true;
config = { config = {
sway = { sway = {
default = [ "wlr" "gtk" ]; default = ["wlr" "gtk"];
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ]; "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
}; };
common = { common = {
default = [ "gtk" ]; default = ["gtk"];
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ]; "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
}; };
}; };
extraPortals = with pkgs; [ extraPortals = with pkgs; [

View File

@@ -0,0 +1,32 @@
# Must be paired with the pipewire Nix module, this does nothing but install packages
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.sound.hardware.focusrite;
in {
options.sound.hardware.focusrite = {
enable = mkEnableOption "Focusrite audio interface support";
guiSupport = mkOption {
type = types.bool;
default = false;
description = "Enable GUI support for Focusrite Scarlett audio interface (installs alsa-scarlett-gui)";
};
};
config = mkIf cfg.enable (mkMerge [
{
environment.systemPackages = with pkgs;
[
scarlett2
]
++ (
if cfg.guiSupport
then [pkgs.alsa-scarlett-gui]
else []
);
}
]);
}