Compare commits

..

1 commit

Author SHA1 Message Date
d4e12d46b3
Flake, flake-part+easy-host, remove unused inputs
IF YOU ARE NOT ME: I would not use this configuration. In the past I
would feel confident telling you to drop in your own host and be off to
the races, but right now users are in a state which required hard coding
some of my nominal preferences. Read on for more specifics

Completely refactors the flake.nix part of the repo. This removes my
strange legacy code for directory-based hosts+users in favor of using
easy-host and flake-parts.

As a result of this some specialArgs were lost, namely the list of users
and the username being passed. I think this is the right way to go in
the short term, but it has lead to some hardcoded values. Namely "pan"
is created as a user regardless of configuration

In tandem with this is the deprecation of some modules which had inputs
in flake which I wasn't using. I'm sure there is a better way to do
this, but I didn't like downloading and caching them every time when I
knew I wasn't using them.

I'm currently very unhappy with the users part of this change, but that
wasn't the goal of this branch. I will revisit in a larger commit.
2025-11-19 09:38:33 -08:00
21 changed files with 578 additions and 412 deletions

171
flake.lock generated
View file

@ -22,11 +22,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1769996383, "lastModified": 1762980239,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "rev": "52a2caecc898d0b46b2b905f058ccc5081f842da",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -35,24 +35,36 @@
"type": "github" "type": "github"
} }
}, },
"flake-parts_2": { "flake-utils": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "systems": "systems"
"nixvim",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1769996383, "lastModified": 1731533236,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "hercules-ci", "owner": "numtide",
"repo": "flake-parts", "repo": "flake-utils",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "hercules-ci", "owner": "numtide",
"repo": "flake-parts", "repo": "flake-utils",
"type": "github"
}
},
"flakey-profile": {
"locked": {
"lastModified": 1712898590,
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
"owner": "lf-",
"repo": "flakey-profile",
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
"type": "github"
},
"original": {
"owner": "lf-",
"repo": "flakey-profile",
"type": "github" "type": "github"
} }
}, },
@ -63,11 +75,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1770654520, "lastModified": 1763416652,
"narHash": "sha256-mg5WZMIPGsFu9MxSrUcuJUPMbfMsF77el5yb/7rc10k=", "narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "6c4fdbe1ad198fac36c320fd45c5957324a80b8e", "rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -76,6 +88,43 @@
"type": "github" "type": "github"
} }
}, },
"lix": {
"flake": false,
"locked": {
"lastModified": 1763570812,
"narHash": "sha256-A42G8ulTZ1MFCR0VsLF21CoKi0XKGUYwtVBHGm5mFgQ=",
"rev": "f3b2f3496bd6d346cba475d0ba152a9d3a83dec7",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/f3b2f3496bd6d346cba475d0ba152a9d3a83dec7.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/lix/archive/main.tar.gz"
}
},
"lix-module": {
"inputs": {
"flake-utils": "flake-utils",
"flakey-profile": "flakey-profile",
"lix": [
"lix"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1763435414,
"narHash": "sha256-i2467FddWfd19q5Qoj+1/BAeg6LZmM5m4mYGRSQn/as=",
"rev": "192c92b603731fbc1bade6c1b18c8d8a0086f703",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/192c92b603731fbc1bade6c1b18c8d8a0086f703.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"
}
},
"niri": { "niri": {
"inputs": { "inputs": {
"niri-stable": "niri-stable", "niri-stable": "niri-stable",
@ -88,11 +137,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable" "xwayland-satellite-unstable": "xwayland-satellite-unstable"
}, },
"locked": { "locked": {
"lastModified": 1770620836, "lastModified": 1763538184,
"narHash": "sha256-HPoMvo/EqIr6xDDRlk6DGZYdu1Hte7lGLZaGZ5017Uc=", "narHash": "sha256-6umNY06L6ZUjinthjVZIwyWyAjxOXSPhXfY0U1CVTWw=",
"owner": "sodiboo", "owner": "sodiboo",
"repo": "niri-flake", "repo": "niri-flake",
"rev": "ff1edce403a67cfac7bf1038d348f2ef457ac691", "rev": "85a16f400641eed912431efcec16f12e2100d46a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -121,11 +170,11 @@
"niri-unstable": { "niri-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1770394959, "lastModified": 1763531615,
"narHash": "sha256-if7bIsomdceIufOhkFwN74rFY/pLCWPynRxGyol2viQ=", "narHash": "sha256-cMi8tz+0+gWtlYqVnyMv7phOeQ0/4WmzZ/lxCyraUVw=",
"owner": "YaLTeR", "owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"rev": "ab47f5cec4c1c5758afeb91c0c98554ffd3433db", "rev": "c722634c269ae97a5ea185691bcd0b8c73a600e5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -136,11 +185,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1770537093, "lastModified": 1763464769,
"narHash": "sha256-XV30uo8tXuxdzuV8l3sojmlPRLd/8tpMsOp4lNzLGUo=", "narHash": "sha256-mU85VDFRIgKGq1EhT71bLjhvjJ5yuMEe0Ip1kwCbR80=",
"rev": "fef9403a3e4d31b0a23f0bacebbec52c248fbb51", "rev": "6f374686605df381de8541c072038472a5ea2e2d",
"type": "tarball", "type": "tarball",
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.05pre942631.fef9403a3e4d/nixexprs.tar.xz" "url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre898015.6f374686605d/nixexprs.tar.xz"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
@ -149,74 +198,32 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1770464364, "lastModified": 1763334038,
"narHash": "sha256-z5NJPSBwsLf/OfD8WTmh79tlSU8XgIbwmk6qB1/TFzY=", "narHash": "sha256-LBVOyaH6NFzQ3X/c6vfMZ9k4SV2ofhpxeL9YnhHNJQQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "23d72dabcb3b12469f57b37170fcbc1789bd7457", "rev": "4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-25.11", "ref": "nixos-25.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixvim": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1770630823,
"narHash": "sha256-5SEmOnJ61vmbap39vzWEsCX5UQ+3Ul8J4mXWKdqSn3w=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "6acc964664ac916c64fe4e394edd467af4d90790",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"easy-hosts": "easy-hosts", "easy-hosts": "easy-hosts",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"home-manager": "home-manager", "home-manager": "home-manager",
"lix": "lix",
"lix-module": "lix-module",
"niri": "niri", "niri": "niri",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixvim": "nixvim",
"silentSDDM": "silentSDDM",
"sops-nix": "sops-nix" "sops-nix": "sops-nix"
} }
}, },
"silentSDDM": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1769900466,
"narHash": "sha256-WeoJBj/PhqFCCJEIycTipqPbKm5BpQT2uzFTYcYZ30I=",
"owner": "uiriansan",
"repo": "SilentSDDM",
"rev": "a44caf771b4cb72f5c2514f7d488455b0fa860d2",
"type": "github"
},
"original": {
"owner": "uiriansan",
"repo": "SilentSDDM",
"type": "github"
}
},
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -224,11 +231,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1770683991, "lastModified": 1763509310,
"narHash": "sha256-xVfPvXDf9QN3Eh9dV+Lw6IkWG42KSuQ1u2260HKvpnc=", "narHash": "sha256-s2WzTAD3vJtPACBCZXezNUMTG/wC6SFsU9DxazB9wDI=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "8b89f44c2cc4581e402111d928869fe7ba9f7033", "rev": "3ee33c0ed7c5aa61b4e10484d2ebdbdc98afb03e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -272,11 +279,11 @@
"xwayland-satellite-unstable": { "xwayland-satellite-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1770583271, "lastModified": 1762747449,
"narHash": "sha256-Q75S8cEqJoZ92s1y4zArvk2U1ayAy2E4SaF7gbNXkYQ=", "narHash": "sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk=",
"owner": "Supreeeme", "owner": "Supreeeme",
"repo": "xwayland-satellite", "repo": "xwayland-satellite",
"rev": "86f5bd5d867ad6e120935dfe825f6b903ebbeddd", "rev": "6338574bc5c036487486acde264f38f39ea15fad",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -13,7 +13,7 @@
shared = { shared = {
modules = [ modules = [
# inputs.lix-module.nixosModules.default inputs.lix-module.nixosModules.default
./nixosModules ./nixosModules
]; ];
}; };
@ -25,10 +25,7 @@
inputs.home-manager.lib.homeManagerConfiguration { inputs.home-manager.lib.homeManagerConfiguration {
extraSpecialArgs = { inherit inputs; }; extraSpecialArgs = { inherit inputs; };
pkgs = inputs.nixpkgs.legacyPackages.${system}; pkgs = inputs.nixpkgs.legacyPackages.${system};
modules = [ modules = [ ./hmModules ] ++ extraModules;
./hmModules
inputs.nixvim.homeModules.nixvim
] ++ extraModules;
}; };
in { in {
"pan@juri" = userConfig "x86_64-linux" [ ./users/juri ]; "pan@juri" = userConfig "x86_64-linux" [ ./users/juri ];
@ -64,16 +61,16 @@
repo = "easy-hosts"; repo = "easy-hosts";
}; };
# lix = { lix = {
# url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz"; url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz";
# flake = false; flake = false;
# }; };
#
# lix-module = { lix-module = {
# url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"; url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz";
# inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
# inputs.lix.follows = "lix"; inputs.lix.follows = "lix";
# }; };
niri = { niri = {
type = "github"; type = "github";
@ -82,25 +79,11 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixvim = {
type = "github";
owner = "nix-community";
repo = "nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = { sops-nix = {
type = "github"; type = "github";
owner = "Mic92"; owner = "Mic92";
repo = "sops-nix"; repo = "sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
silentSDDM = {
type = "github";
owner = "uiriansan";
repo = "SilentSDDM";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
} }

View file

@ -1,52 +0,0 @@
{ config, pkgs, lib, ... }:
{
options.beets = {
enable = lib.mkEnableOption "Enables beets music";
plugins = {
the.enable = lib.mkOption { default = true; };
ftintitle.enable = lib.mkOption { default = true; };
lyrics.enable = lib.mkOption { default = true; };
fetchart = {
enable = lib.mkOption { default = true; };
embed = lib.mkOption { default = true; };
};
};
};
config = lib.mkIf config.beets.enable {
programs.beets.enable = true;
programs.beets.settings = {
directory = "${config.xdg.userDirs.music}";
library = "${config.xdg.userDirs.music}.db";
paths.default = with config.beets.plugins; let
# raw_artist = if ftintitle.enable
# then "$album_artist_no_feat"
# else "$albumartist";
raw_artist = "$albumartist";
artist = if the.enable
then "%the{${raw_artist}}/"
else raw_artist;
the_rest = "$album%aunique{}/$track $title";
in artist + the_rest;
embedart = with config.beets.plugins.fetchart;
lib.mkIf (enable && embed) {
maxwidth = 500;
};
plugins = with lib; with config.beets.plugins;
optional (the.enable) "the" ++
optional (ftintitle.enable) "ftintitle" ++
optional (lyrics.enable) "lyrics" ++
optional (fetchart.enable) "fetchart" ++
optional (fetchart.embed) "embedart" ++ [
"musicbrainz"
"info"
];
};
};
}

View file

@ -14,182 +14,156 @@
catppuccin.enable = lib.mkEnableOption "Enables catppuccin theme"; catppuccin.enable = lib.mkEnableOption "Enables catppuccin theme";
}; };
plugins = { plugins = {
comments.enable = lib.mkOption { default = true; }; comments.enable = lib.mkEnableOption "Enables nvim-comment";
fugitive.enable = lib.mkOption { default = true; }; fugitive.enable = lib.mkEnableOption "Enables git-fugitive";
lualine.enable = lib.mkOption { default = true; }; lualine.enable = lib.mkEnableOption "Enables lualine";
luasnip.enable = lib.mkOption { default = false; }; luasnip.enable = lib.mkEnableOption "Enables luasnip snippets";
nvimcmp.enable = lib.mkOption { default = true; }; nvimcmp.enable = lib.mkEnableOption "Enables nvim completion";
telescope = { telescope = {
enable = lib.mkOption { default = true; }; enable = lib.mkEnableOption "Enables telescope";
fzf.enable = lib.mkOption { default = true; }; fzf.enable = lib.mkEnableOption "Enables telescope-fzf";
}; };
treesitter.enable = lib.mkOption { default = true; }; treesitter.enable = lib.mkEnableOption "Enables treesitter";
wiki.enable = lib.mkOption { default = false; }; wiki.enable = lib.mkEnableOption "Enables a wiki";
}; };
}; };
imports = [
./plugin/lsp.nix
./plugin/nvimcmp.nix
./plugin/telescope.nix
./plugin/treesitter.nix
];
config = lib.mkIf config.neovim.enable { config = lib.mkIf config.neovim.enable {
home.sessionVariables = { home.sessionVariables = {
EDITOR = "nvim"; EDITOR = "nvim";
VISUAL = "nvim"; VISUAL = "nvim";
}; };
programs.nixvim = { programs.neovim = {
enable = true; enable = true;
viAlias = true; viAlias = true;
vimAlias = true; vimAlias = true;
vimdiffAlias = true;
globals = { extraLuaConfig = ''
mapleader = " "; ${builtins.readFile ./options.lua}
maplocalleader = " "; '';
rust_recommended_style = 0;
};
opts = { extraPackages = with pkgs; [
list = true; (lib.mkIf config.neovim.languages.c.enable libclang)
updatetime = 750; (lib.mkIf config.neovim.languages.go.enable gopls)
(lib.mkIf config.neovim.languages.nix.enable nil)
tabstop = 2; (lib.mkIf config.neovim.languages.rust.enable rust-analyzer)
softtabstop = 0;
shiftwidth = 2;
smarttab = true;
expandtab = true;
colorcolumn = "81";
showmatch = true;
number = true;
relativenumber = true;
swapfile = false;
backup = false;
undofile = true;
undodir = "${config.xdg.configHome}/nvim/undodir";
smartcase = true;
};
keymaps = with config.lib.nixvim; [
{
key = "<leader>d";
mode = "n";
action = mkRaw "vim.diagnostic.open_float";
}
# -- Easy Split Navigation
# -- nnoremap <C-J> <C-W><C-J>
# -- nnoremap <C-K> <C-W><C-K>
# -- nnoremap <C-L> <C-W><C-L>
# -- nnoremap <C-H> <C-W><C-H>
#
# -- Easy copy and pasting to external programs
# -- map <C-y> "+yy
# -- map <C-p> "+P
]; ];
};
programs.nixvim.colorschemes = with config.neovim.themes; { # Additional packages are added through imports
catppuccin = lib.mkIf catppuccin.enable { plugins = let
enable = true; lopts = lib.lists.optionals;
flavour = "mocha"; cfgp = config.neovim.plugins;
integrations.vimwiki = lib.mkIf wiki.enable true; cfgl = config.neovim.languages;
}; cfgt = config.neovim.themes;
};
programs.nixvim.plugins = with config.neovim.plugins; { comments = lopts cfgp.comments.enable (with pkgs.vimPlugins; [
comment.enable = comments.enable;
fugitive.enable = fugitive.enable;
lualine = lib.mkIf lualine.enable {
enable = true;
icons_enabled = true;
};
web-devicons.enable = lualine.enable;
luasnip.enable = luasnip.enable;
friendly-snippets.enable = luasnip.enable;
cmp = {
enable = nvimcmp.enable;
autoEnableSources = true;
settings = {
sources = [
{ name = "nvim_lsp"; }
{ name = "path"; }
{ name = "buffer"; }
] ++ lib.optional luasnip.enable { name = "cmp-luasnip"; };
mapping = with config.lib.nixvim; {
"<C-Space>" = mkRaw "cmp.mapping.abort()";
"<Tab>" = mkRaw
"cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
"<S-Tab>" = mkRaw
"cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})";
};
};
};
telescope = {
enable = telescope.enable;
keymaps = {
"<leader>ff" = "find_files";
"<leader>fg" = "git_files";
};
extensions = {
fzf = lib.mkIf telescope.fzf.enable {
enable = true;
fuzzy = true;
override_generic_sorter = true;
override_file_sorter = true;
case_mode = "smart_case";
};
};
};
treesitter = {
enable = treesitter.enable;
highlight.enable = true;
indent.enable = true;
folding.enable = false;
};
vimwiki = {
enable = wiki.enable;
list = [
{ {
path = "${config.xdg.userDirs.documents}/wiki"; plugin = comment-nvim;
links_space_char = "_"; type = "lua";
ext = ".md"; config = "require(\"Comment\").setup()";
syntax = "markdown";
} }
]; ]);
};
nvim-lspconfig.enable = true; fugitive = lopts cfgp.fugitive.enable (with pkgs.vimPlugins; [
nix.enable = config.neovim.languages.nix.enable; vim-fugitive
rustaceanvim.enable = config.neovim.languages.rust.enable; ]);
typsecript-tools.enable = config.neovim.languages.typescript.enable;
};
programs.nixvim.lsp = { luasnip-pkg = lopts cfgp.luasnip.enable (with pkgs.vimPlugins; [
enable = true; luasnip
servers = with config.neovim.languages; { friendly-snippets
clangd.enable = c.enable; (lib.mkIf cfgp.nvimcmp.enable cmp_luasnip)
gopls.enable = go.enable; ]);
nil_ls.enable = nix.enable;
rust_analyzer.enable = rust.enable; lualine = lopts cfgp.lualine.enable (with pkgs.vimPlugins; [
tsserver.enable = typescript.enable; {
}; plugin = lualine-nvim;
keymaps = [ type = "lua";
{ key = "gd"; lspBufAction = "definition"; } config = ''
{ key = "gD"; lspBufAction = "declaration"; } require("lualine").setup {
{ key = "gi"; lspBufAction = "implementation"; } options = {
{ key = "gt"; lspBufAction = "type_definition"; } icons_enabled = true,
{ key = "K"; lspBufAction = "hover"; } '' + lib.strings.optionalString cfgt.catppuccin.enable ''
] ++ lib.optional config.neovim.plugins.telescope.enable { theme = "catppuccin"
key = "gr"; '' + ''
action = config.lib.nixvim.mkRaw }
"require('telescope.builtin').lsp_references"; }
}; '';
}
nvim-web-devicons
]);
nix-pkg = lopts cfgl.nix.enable (with pkgs.vimPlugins; [
vim-nix
]);
rust-pkg = lopts cfgl.rust.enable (with pkgs.vimPlugins; [
{
plugin = rustaceanvim;
type = "lua";
config = ''
vim.g.rust_recommended_style = 0
'';
}
]);
go-pkg = lopts cfgl.go.enable (with pkgs.vimPlugins; [
go-nvim
]);
typescript-pkg = lopts cfgl.typescript.enable (with pkgs.vimPlugins; [
{
plugin = typescript-tools-nvim;
type = "lua";
config = ''
require("typescript-tools").setup {}
'';
}
]);
catppuccin-pkg = lopts cfgt.catppuccin.enable (with pkgs.vimPlugins; [
{
plugin = catppuccin-nvim;
type = "lua";
config = ''
vim.cmd.colorscheme "catppuccin-mocha"
require('catppuccin').setup({
integrations = {
'' + lib.strings.optionalString cfgp.wiki.enable ''
vimwiki = true
'' + ''
}
})
'';
}
]);
wiki = lopts cfgp.wiki.enable (with pkgs.vimPlugins; [
{
plugin = vimwiki;
type = "lua";
config = ''
vim.g.vimwiki_list = {
{
path = '${config.xdg.userDirs.documents}/wiki',
links_space_char = '_',
ext = '.md',
syntax = 'markdown',
}
}
'';
}
]);
in comments ++ fugitive ++ luasnip-pkg ++ lualine ++ nix-pkg ++ rust-pkg
++ go-pkg ++ wiki ++ catppuccin-pkg ++ typescript-pkg;
}; };
}; };
} }

View file

@ -0,0 +1,60 @@
-- Globals
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
vim.opt.list = true
vim.bo.filetype = "on"
vim.opt.updatetime = 300
-- Indentations
vim.opt.tabstop = 2
vim.opt.softtabstop = 0
vim.opt.shiftwidth = 2
vim.opt.smarttab = true
vim.opt.expandtab = true
-- Style
vim.opt.colorcolumn = "80"
vim.opt.showmatch = true
vim.opt.number = true
vim.opt.relativenumber = true
-- Easy Split Navigation
-- nnoremap <C-J> <C-W><C-J>
-- nnoremap <C-K> <C-W><C-K>
-- nnoremap <C-L> <C-W><C-L>
-- nnoremap <C-H> <C-W><C-H>
-- Searching
vim.opt.smartcase = true
-- Backups
vim.opt.swapfile = false
vim.opt.backup = false
vim.opt.undofile = true
vim.opt.undodir = '/home/pan/.config/nvim/undodir'
-- Error viewing
vim.keymap.set('n', '<Leader>d', function() vim.diagnostic.open_float() end)
-- Easy copy and pasting to external programs
-- map <C-y> "+yy
-- map <C-p> "+P
-- autocmd BufRead,BufNewFile *.md call WritingMode()
-- autocmd BufRead,BufNewFile *.tex call WritingMode()
-- autocmd BufRead,BufNewFile *.svx call WritingMode()
-- autocmd BufRead,BufNewFile *.py call PythonMode()
-- function! WritingMode()
-- setlocal textwidth=80
-- setlocal wrap linebreak nolist
-- setlocal whichwrap+=<,>,h,l
-- nnoremap j gj
-- nnoremap k gk
-- setlocal spell spelllang=en_us
-- endfunction
-- function! PythonMode()
-- setlocal foldmethod=indent
-- setlocal foldlevel=99
-- endfunction

View file

@ -0,0 +1,53 @@
{ config, pkgs, lib, ... }:
{
config = lib.mkIf config.neovim.enable {
programs.neovim.plugins = let
cfgp = config.neovim.plugins;
cfgl = config.neovim.languages;
configText = ''
local on_attach = function(_, bufnr)
local bufmap = function(keys, func)
vim.keymap.set('n', keys, func, { buffer = bufnr })
end
bufmap('<leader>r', vim.lsp.buf.rename)
bufmap('<leader>a', vim.lsp.buf.code_action)
bufmap('gd', vim.lsp.buf.definition)
bufmap('gD', vim.lsp.buf.declaration)
bufmap('gI', vim.lsp.buf.implementation)
bufmap('<leader>D', vim.lsp.buf.type_definition)
'' + lib.strings.optionalString cfgp.telescope.enable ''
bufmap('gr', require('telescope.builtin').lsp_references)
bufmap('<leader>s', require('telescope.builtin').lsp_document_symbols)
bufmap('<leader>S', require('telescope.builtin').lsp_dynamic_workspace_symbols)
'' + ''
bufmap('K', vim.lsp.buf.hover)
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
vim.lsp.buf.format()
end, {})
end
local capabilities = vim.lsp.protocol.make_client_capabilities()
'' + lib.strings.optionalString cfgl.c.enable ''
require('lspconfig').clangd.setup {}
'' + lib.strings.optionalString cfgl.go.enable ''
require('lspconfig').gopls.setup {}
'' + lib.strings.optionalString cfgl.nix.enable ''
require('lspconfig').nil_ls.setup {}
'';
in with pkgs.vimPlugins; [
{
plugin = nvim-lspconfig;
type = "lua";
config = configText;
}
];
};
}

View file

@ -0,0 +1,72 @@
{ config, pkgs, lib, ... }:
let
cfgp = config.neovim.plugins;
in {
config = lib.mkIf (config.neovim.enable && cfgp.nvimcmp.enable) {
programs.neovim.plugins = let
configText = ''
local cmp = require('cmp')
'' + lib.strings.optionalString cfgp.luasnip.enable ''
local luasnip = require('luasnip')
require('luasnip.loaders.from_vscode').lazy_load()
luasnip.config.setup {}
'' + ''
cmp.setup {
mapping = cmp.mapping.preset.insert {
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete {},
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
'' + lib.strings.optionalString cfgp.luasnip.enable ''
elseif luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
'' + ''
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
'' + lib.strings.optionalString cfgp.luasnip.enable ''
elseif luasnip.locally_jumpable(-1) then
luasnip.jump(-1)
'' + ''
else
fallback()
end
end, { 'i', 's' }),
},
'' + lib.strings.optionalString cfgp.luasnip.enable ''
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
sources = {
{ name = 'luasnip' },
},
'' + ''
}
'';
in with pkgs.vimPlugins; [
{
plugin = nvim-cmp;
type = "lua";
config = configText;
}
];
};
}

View file

@ -0,0 +1,43 @@
{ config, pkgs, lib, ... }:
let
cfgp = config.neovim.plugins;
in {
config = lib.mkIf (config.neovim.enable && cfgp.telescope.enable) {
programs.neovim.plugins = let
configText = ''
require('telescope').setup({
extensions = {
'' + lib.strings.optionalString cfgp.telescope.fzf.enable ''
fzf = {
fuzzy = true, -- false will only do exact matching
override_generic_sorter = true, -- override the generic sorter
override_file_sorter = true, -- override the file sorter
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
-- the default case_mode is "smart_case"
}
'' + ''
}
})
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
vim.keymap.set('n', '<leader>fg', builtin.git_files, {})
'' + lib.strings.optionalString cfgp.telescope.fzf.enable ''
require('telescope').load_extension('fzf')
'';
in with pkgs.vimPlugins; [
{
plugin = telescope-nvim;
type = "lua";
config = configText;
}
(lib.mkIf cfgp.nvimcmp.enable telescope-fzf-native-nvim)
];
home.packages = with pkgs; [
(lib.mkIf cfgp.telescope.fzf.enable fzf)
];
};
}

View file

@ -0,0 +1,38 @@
{ config, pkgs, lib, ... }:
let
cfgp = config.neovim.plugins;
cfgl = config.neovim.languages;
in {
config = lib.mkIf (config.neovim.enable && cfgp.treesitter.enable) {
programs.neovim.plugins = let
configText = ''
require('nvim-treesitter.configs').setup {
ensure_installed = {},
auto_install = false,
highlight = { enable = true },
indent = { enable = true },
}
'';
# I've tried many things, and can't get treesitter plugins changing
# dynamically. For not just have them always loaded regardless of config
treeplugs = p: [
p.tree-sitter-c
p.tree-sitter-go
p.tree-sitter-nix
p.tree-sitter-rust
p.tree-sitter-typescript
];
in with pkgs.vimPlugins; [
{
plugin = (nvim-treesitter.withPlugins treeplugs);
type = "lua";
config = configText;
}
];
};
}

View file

@ -6,10 +6,7 @@
}; };
config = lib.mkIf config.ssh.enable { config = lib.mkIf config.ssh.enable {
programs.ssh = { programs.ssh.enable = true;
enable = true;
enableDefaultConfig = false;
};
home.packages = with pkgs; [ home.packages = with pkgs; [
sshfs # SSH File system sshfs # SSH File system
]; ];

View file

@ -27,8 +27,7 @@
tuigreet.enable = true; tuigreet.enable = true;
niri.enable = true; niri.enable = true;
tailscale.enable = true;
postgres.enable = true; postgres.enable = true;
shell.enabledShells = [ "fish" ]; shell.enabledShells = [ "fish" ];

View file

@ -1,4 +1,4 @@
[Kabal] ["TheKabal2.4"]
["DropboxGuest3.0"] ["DropboxGuest3.0"]

View file

@ -1,5 +1,9 @@
wireless: ENC[AES256_GCM,data:VU8tpeCgEFSUC490q1hGgBrdFFscL2QybywlpiFG3suofj2Q2VVXKLK4EpF2ebpf/nBf/ggHv/uoSFxuQYYvIsMIo1bYOKvM5QNMi9HO2KmfFbmQYYzmt5CNNh9tno9wmiekeDOnKjQDGK5CoGLD4+y+VW1IVrN9XL+xRxAszgYM4qdSim7CJ1hgU89OgzVL9poVsmqxbiuWY88+ZErIspSHO0QwGOJ5Pc4OixEK2N3EtcYDhV5fBvlFv7t4b8P6BJZIn2NVXCVaW4UcEsefcxHqohd5AuYXJH7wt9aPwJRJehxd9GhVJeQ6QtPXuqZaEspd+dSvlYrvdO8pFTrIklrty30CJg3WberWmI111T8ZNFlNBghSu6nXzO9YkKfDuAYUEPVERL9jG9xF8tGb1JxhOmg33Kg6fg==,iv:07Reckni7LSfDL3qVUv4v80IOVQSbFpz49UsyiIDGWk=,tag:iMgCspLUWNCjjYT0pkMwDw==,type:str] wireless: ENC[AES256_GCM,data:pQv+gdAW8W9nSEJkbXWex47iuuqgJMEELldFsmgk2Y08MDZ1ytXqlphTK/jbewD3tpz4v29fSuWamv1uZpxM2+c2zCuMVTdrhAf0i/Sjqd9CWP8NQvTDI3v8ps9REFzR7n7hywnkfOkDNwRkmavSfCxK5k9SQLNC7De6P811/Fundb9r6oeIH2OEDBkZEHw8gYndjy6cLDUE2SY/cmxRsKWhATsCLcWKOpQa86zlT9dr9nMtYVF1AN5T4JR/7QKqJ8UT4mvhAA0OEfKv0Cf3euH24vtBrv5YxwDT6tQpOABOyOy9mWLc+bXDID/HX4akeU1O6+eBSpNeRgpAcMfD6b/eqKAvDvnixHubu9GemVspmeoA/91i5B70u3kjm0EKup7KLXCp5RutLnLRczDPdfbCB7bEipeRyF8P+UCuhQ==,iv:WN7mGyHpaMDdLRpFGyDUQ2D9a0t/rucfyKroJYqaHPs=,tag:7KTzBEt30nqCJclDgiWuKg==,type:str]
sops: sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: age:
- recipient: age1ey3wr2wnkgny3dfgvnyrf0cptwzr7s5x464p2y9ya58lpay8lfrsds3y68 - recipient: age1ey3wr2wnkgny3dfgvnyrf0cptwzr7s5x464p2y9ya58lpay8lfrsds3y68
enc: | enc: |
@ -19,7 +23,8 @@ sops:
Ky83VFhiVE9wK01UMDlSbnIrd2d2SHcKp6mF8PaR0ItrvLHpEgMe6fwuboyrrs9y Ky83VFhiVE9wK01UMDlSbnIrd2d2SHcKp6mF8PaR0ItrvLHpEgMe6fwuboyrrs9y
7Ct6qZ1SN/4f/xJpDP2qiaQ4KTZzY1BlC3isT3CWeajOQhL/y5JCOw== 7Ct6qZ1SN/4f/xJpDP2qiaQ4KTZzY1BlC3isT3CWeajOQhL/y5JCOw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-08-27T05:30:04Z" lastmodified: "2024-11-07T21:12:36Z"
mac: ENC[AES256_GCM,data:hoSykxuHPAofdbXNJCyozeQYYhg3yXLOVx+K9PsSctUMrIc9ii76SDGY2h+6gFNy1rGkPxmYHueqHEJHvvoxLHcwkwoN8AddOVrnXNoIpOvwcn0GfpPIPf5rCvxSxvcsZwPW+affMMVRyRR8aJ3llj7ojuuuyTnm+HL9H9vY1PQ=,iv:pUXl49AqRerTlGoOzoWt0NrEo8rqPmBF7yiB4ZufC3M=,tag:1mP3jsP2O6yKlJVmaA7EMQ==,type:str] mac: ENC[AES256_GCM,data:z0ePEvsEKvcMca2x2qjTsSBwk+qI3jd8h2uAnSsGtJL5UI1OdBL8oVIGKty0pGaCvtrF01UN1ncKBGe5y12Vij2yuyv7LK4ANArxQ4+O583NdYHYeD+T75yGu4SAYjcoM23RD1h+W0SLQpCen2J3WYmJaOjtqMBv/gaFYl/DV7I=,iv:VJjZTd1g4oJCDLEp8+jH15Y2svTNtQUE1vc3WQoJJZU=,tag:4U7uh6U5PwHJ2r6/WFUbnw==,type:str]
pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.10.2 version: 3.9.1

View file

@ -4,10 +4,7 @@
imports = [ imports = [
./hardware.nix ./hardware.nix
]; ];
nvidia = { nvidia.enable = true;
enable = true;
stable = true;
};
pipewire.enable = true; pipewire.enable = true;
polkit.enable = true; polkit.enable = true;
tablet.enable = true; tablet.enable = true;
@ -18,7 +15,7 @@
sshd.enable = true; sshd.enable = true;
tailscale.enable = true; tailscale.enable = true;
sddm.enable = true; tuigreet.enable = true;
niri.enable = true; niri.enable = true;
steam.enable = true; steam.enable = true;

View file

@ -1,4 +1,4 @@
{ config, pkgs, lib, inputs, ... }: { config, pkgs, lib, ... }:
{ {
options.system = { options.system = {
@ -9,7 +9,7 @@
"Enable if you are running a non-EFI system"; "Enable if you are running a non-EFI system";
users.bigWheels = lib.mkOption { default = []; }; users.bigWheels = lib.mkOption { default = []; };
}; };
config = lib.mkMerge [ config = lib.mkMerge [
(lib.mkIf config.system.isNonEFI { (lib.mkIf config.system.isNonEFI {
boot.loader.grub.enable = false; boot.loader.grub.enable = false;
@ -29,44 +29,33 @@
# Packages & Default Packages # Packages & Default Packages
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
nix = {
registry.nixpkgs.flake = inputs.nixpkgs;
gc = { automatic = true; options = "--delete-older-than 5d"; };
channel.enable = false;
settings = {
auto-optimise-store = true;
keep-going = true;
use-xdg-base-directories = true;
experimental-features = [
"flakes"
"nix-command"
];
};
};
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
git git
neovim neovim
xdg-user-dirs xdg-user-dirs
] ++ config.system.extraPkgs; ] ++ config.system.extraPkgs;
users = { # XDG Compliance
users = builtins.listToAttrs (map ( nix.settings.use-xdg-base-directories = true;
user: {
name = user; # users = {
value = { # users = builtins.listToAttrs (map (
name = user; # user: {
isNormalUser = true; # name = user;
extraGroups = [ "network" ]; # value = {
}; # name = user;
} # isNormalUser = true;
) [ "pan" ]); # extraGroups = [ "network" ];
groups = { # };
wheel = { # }
members = config.system.users.bigWheels; # ) usernameList);
}; # groups = {
network = { }; # wheel = {
}; # members = config.system.users.bigWheels;
}; # };
# network = { };
# };
# };
fonts = { fonts = {
enableDefaultPackages = true; enableDefaultPackages = true;

View file

@ -20,7 +20,7 @@
''; '';
package = pkgs.caddy.withPlugins { package = pkgs.caddy.withPlugins {
plugins = [ "github.com/caddy-dns/porkbun@v0.3.1" ]; plugins = [ "github.com/caddy-dns/porkbun@v0.3.1" ];
hash = "sha256-NlZY/EEY9TbqrMAkSHK2aGm5AjFTvpvBXV1GW1PnXCc="; hash = "sha256-j/GODingW5BhfjQRajinivX/9zpiLGgyxvAjX0+amRU=";
}; };
virtualHosts = config.caddy.vhosts; virtualHosts = config.caddy.vhosts;
email = config.caddy.adminEmail; email = config.caddy.adminEmail;

View file

@ -2,22 +2,22 @@
{ {
options.nvidia = { options.nvidia = {
enable = lib.mkEnableOption "Enables nvidia with proprietary drivers"; enable = lib.mkEnableOption
"Enables nvidia with proprietary drivers";
open = lib.mkEnableOption "Use open nvidia option for newer cards"; open = lib.mkEnableOption "Use open nvidia option for newer cards";
stable = lib.mkEnableOption "Use stable instead of beta";
}; };
config = lib.mkIf config.nvidia.enable { config = lib.mkIf config.nvidia.enable {
hardware.graphics.enable = true; hardware.graphics = {
enable = true;
};
services.xserver.videoDrivers = ["nvidia"]; services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = { hardware.nvidia = {
open = if config.nvidia.open then true else false; open = if config.nvidia.open then true else false;
modesetting.enable = true; modesetting.enable = true;
package = if config.nvidia.stable package = config.boot.kernelPackages.nvidiaPackages.beta;
then config.boot.kernelPackages.nvidiaPackages.stable
else config.boot.kernelPackages.nvidiaPackages.beta;
}; };
boot.kernelParams = [ "nvidia_drm.fbdev=1" ]; boot.kernelParams = [ "nvidia_drm.fbdev=1" ];

View file

@ -1,27 +0,0 @@
{ config, pkgs, lib, inputs', ... }:
{
options.sddm = {
enable = lib.mkEnableOption "enables sddm";
};
config = lib.mkIf config.sddm.enable (let
sddm-theme = inputs'.silentSDDM.packages.default.override {
theme = "catppuccin-macchiato";
};
in {
qt.enable = true;
environment.systemPackages = [ sddm-theme sddm-theme.test ];
services.displayManager.sddm = {
wayland.enable = true;
package = pkgs.kdePackages.sddm;
enable = true;
theme = sddm-theme.pname;
extraPackages = sddm-theme.propagatedBuildInputs;
settings.General = {
GreeterEnvironment = "QML2_IMPORT_PATH=${sddm-theme}/share/sddm/themes/${sddm-theme.pname}/components/,QT_IM_MODULE=qtvirtualkeyboard";
InputMethod = "qtvirtualkeyboard";
};
};
});
}

10
users/badtz@juri/user.nix Normal file
View file

@ -0,0 +1,10 @@
{ config, pkgs, ... }:
{
fish.enable = true;
git = {
enable = true;
username = "Badtz";
email = "may@badtz.dev";
};
}

View file

@ -1,4 +1,4 @@
{ config, ... }: { config, pkgs, ... }:
{ {
# "DP-2" = [ # "DP-2" = [
@ -28,8 +28,9 @@
mouse.accel = -0.53; mouse.accel = -0.53;
outputs = { outputs = {
"DP-1" = { "DP-1" = {
position = { x = 2560; y = 0; }; position = { x = 2560; y = -100; };
mode = { width = 2560; height = 1440; refresh = 144.000; }; mode = { width = 2560; height = 1440; refresh = 144.000; };
transform.rotation = 270;
}; };
"DP-2" = { "DP-2" = {
position = { x = 0; y = 0; }; position = { x = 0; y = 0; };
@ -66,18 +67,28 @@
mpv.enable = true; mpv.enable = true;
zathura.enable = true; zathura.enable = true;
feh.enable = true; feh.enable = true;
beets.enable = true;
neovim = { neovim.enable = true;
enable = true; neovim.languages = {
languages = { c.enable = true;
c.enable = true; nix.enable = true;
nix.enable = true; rust.enable = true;
rust.enable = true; typescript.enable = true;
typescript.enable = true;
};
themes.catppuccin.enable = true;
}; };
neovim.plugins = {
comments.enable = true;
fugitive.enable = true;
lualine.enable = true;
luasnip.enable = true;
nvimcmp.enable = true;
telescope = {
enable = true;
fzf.enable = true;
};
treesitter.enable = true;
wiki.enable = true;
};
neovim.themes.catppuccin.enable = true;
lf.enable = true; lf.enable = true;
lf.hiddenfiles = [ lf.hiddenfiles = [
@ -93,7 +104,14 @@
gimp.enable = true; gimp.enable = true;
beeper.enable = true;
discord.enable = true; discord.enable = true;
lutris.enable = true; lutris.enable = true;
extraPkgs = with pkgs; [
# Applications
logseq
claude-code
];
} }