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
default_border none
default_border pixel 2
gaps inner 10px
gaps inner 0
gaps outer 0
# Applications
exec_always /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1

87
flake.lock generated
View File

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

View File

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

View File

@@ -6,14 +6,6 @@
dirs = {
defaults = ../defaults;
};
# Derived from subprojects/cava.wrap
libcava.src = pkgs.fetchFromGitHub {
owner = "LukashonakV";
repo = "cava";
rev = "0.10.3";
hash = "sha256-ZDFbI69ECsUTjbhlw2kHRufZbQMu+FQSMmncCJ5pagg=";
};
in {
wayland.windowManager.sway = {
enable = pkgs.stdenv.isLinux;
@@ -25,12 +17,32 @@ in {
gtk = true;
};
};
xdg = {
configFile = {
"sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
"waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
"waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
};
};
xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
xdg.configFile."waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
xdg.configFile."waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
programs.wofi = {
services.mako = {
enable = pkgs.stdenv.isLinux;
settings = {
text-color = "#cad3f5";
border-color = "#c6d0f5";
background-color = "#24273a";
width = 420;
height = 110;
padding = 10;
border-size = 2;
font = "Monaspace Krypton 9";
anchor = "top-right";
default-timeout = 5000;
max-icon-size = 32;
};
};
programs = {
wofi = {
enable = pkgs.stdenv.isLinux;
settings = {
width = 600;
@@ -125,42 +137,11 @@ in {
}
'';
};
programs.swaylock.enable = pkgs.stdenv.isLinux;
swaylock.enable = pkgs.stdenv.isLinux;
services.mako = {
enable = pkgs.stdenv.isLinux;
settings = {
text-color="#cad3f5";
border-color="#c6d0f5";
background-color="#24273a";
width=420;
height=110;
padding=10;
border-size=2;
font="Monaspace Krypton 9";
anchor="top-right";
default-timeout=5000;
max-icon-size=32;
};
};
programs.waybar = {
waybar = {
enable = pkgs.stdenv.isLinux;
systemd.enable = true;
package = pkgs.waybar.overrideAttrs (old: {
version = "0.11.0";
src = pkgs.fetchFromGitHub {
owner = "Alexays";
repo = "Waybar";
rev = "d56dd6ee7fdf8c5ba4e90790af62b7f7829d3a47";
sha256 = "sha256-3lc0voMU5RS+mEtxKuRayq/uJO09X7byq6Rm5NZohq8=";
fetchSubmodules = true;
};
buildInputs = old.buildInputs ++ [ pkgs.fftw pkgs.libcava ];
# mesonFlags = (old.mesonFlags or []) ++ [ "-Dcava=disabled" ];
});
};
}

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;
})
../../apps/gaming.nix
../../apps/appimage.nix
../../graphics
../../pwrMgmt
../../networking/core.nix
../../sound/pipewire.nix
../../sound/shairport.nix
../../sound/focusrite.nix
../../virtualization/podman.nix
../../virtualization/hardware.nix
];
@@ -34,9 +36,13 @@ in {
nix.settings.experimental-features = ["nix-command" "flakes"];
# Custom kernel/boot stuff
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot = {
kernelPackages = pkgs.linuxPackages_latest;
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
};
# Enable Bluetooth if present
hardware.bluetooth.enable = true;
@@ -63,21 +69,6 @@ in {
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
security.polkit.enable = true;
@@ -145,14 +136,39 @@ in {
networkManager.enable = true;
};
programs = {
# Enable GnuPG
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# Enable SUID wrappers (some programs need them)
mtr.enable = true;
# Enable dconf
programs.dconf.enable = true;
dconf.enable = true;
};
# Add username to groups "wheel" and "video" - more may be added here later
users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"];
services = {
# Enable OpenSSH
openssh.enable = true;
# Enable keyring
gnome.gnome-keyring.enable = true;
# Flatpak packages (see ../../apps/flatpak.nix)
services.flatpak.packages = flatpakPackages;
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 = {

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 []
);
}
]);
}