new: packages: bonvim, nixvim configuration of neovim remove: config: hyprland -> declarative remove: config: nvim nixosModules: structure with categories new: configurations: concept of preconfigured modules catarina: disable papermc server catarina: hydra server flake: hydraJobs outputs
This commit is contained in:
parent
26088b3368
commit
008b4ad3a4
4
.editorconfig
Normal file
4
.editorconfig
Normal file
@ -0,0 +1,4 @@
|
||||
indent_style = "space"
|
||||
indent_size = 4
|
||||
end_of_line = "cr"
|
||||
charset = "utf-8"
|
@ -1,14 +1,16 @@
|
||||
{ self, nixpkgs, ... }:
|
||||
let
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
...
|
||||
}: let
|
||||
forAllSystems = nixpkgs.lib.genAttrs ["x86_64-linux"];
|
||||
nixpkgsFor = forAllSystems (system: import nixpkgs {inherit system;});
|
||||
|
||||
in forAllSystems(system: let
|
||||
in
|
||||
forAllSystems (system: let
|
||||
pkgs = nixpkgsFor.${system};
|
||||
|
||||
bonfire = self;
|
||||
bonfire-lib = self.lib;
|
||||
bonfire-pkgs = self.packages.${system};
|
||||
in {
|
||||
|
||||
})
|
||||
|
@ -1,31 +0,0 @@
|
||||
[user]
|
||||
name = L-Nafaryus
|
||||
email = l.nafaryus@gmail.com
|
||||
signingKey = 86F1EA98B48FFB19
|
||||
[commit]
|
||||
gpgsign = true
|
||||
[tag]
|
||||
gpgsign = true
|
||||
[init]
|
||||
defaultBranch = master
|
||||
[diff]
|
||||
submodule = log
|
||||
[color]
|
||||
diff = auto
|
||||
status = auto
|
||||
branch = auto
|
||||
[core]
|
||||
quotePath = false
|
||||
commitGraph = true
|
||||
whitespace = trailing-space
|
||||
[receive]
|
||||
advertisePushOptions = true
|
||||
[gc]
|
||||
writeCommitGraph = true
|
||||
[alias]
|
||||
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
|
||||
[filter "lfs"]
|
||||
required = true
|
||||
clean = git-lfs clean -- %f
|
||||
smudge = git-lfs smudge -- %f
|
||||
process = git-lfs filter-process
|
@ -1,281 +0,0 @@
|
||||
|
||||
# #######################################################################################
|
||||
# AUTOGENERATED HYPR CONFIG.
|
||||
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,
|
||||
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
|
||||
# #######################################################################################
|
||||
|
||||
autogenerated = 0 # remove this line to remove the warning
|
||||
|
||||
# This is an example Hyprland config file.
|
||||
# Refer to the wiki for more information.
|
||||
# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/
|
||||
|
||||
# Please note not all available settings / options are set here.
|
||||
# For a full list, see the wiki
|
||||
|
||||
# You can split this configuration into multiple files
|
||||
# Create your files separately and then link them to this file like this:
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor = desc:AOC Q27B3MA 17ZPAHA006135, 2560x1440@75, 0x0, auto
|
||||
monitor = desc:AOC Q27G2G3R3B 137P4HA000540, 2560x1440@165, 2560x0, auto
|
||||
monitor = Unknown-1, disable
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = alacritty
|
||||
$fileManager = dolphin
|
||||
$menu = rofi -show drun
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
# exec-once = $terminal
|
||||
# exec-once = nm-applet &
|
||||
# exec-once = waybar & hyprpaper & firefox
|
||||
exec-once = eww daemon
|
||||
exec-once = eww open topbar
|
||||
exec-once = nm-applet --indicator &
|
||||
exec-once = blueman-applet &
|
||||
exec-once = wl-gammarelay-rs run &
|
||||
exec-once = systemctl --user start hypridle
|
||||
exec-once = wl-paste --type text --watch cliphist store #Stores only text data
|
||||
exec-once = wl-paste --type image --watch cliphist store #Stores only image data
|
||||
exec-once = swww-daemon & swww img ~/Pictures/wallpapers/emily-in-the-cyberpunk-city.3840x2160.png & swww img ~/Pictures/wallpapers/emily-in-the-cyberpunk-city.3840x2160a.gif
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,16
|
||||
env = HYPRCURSOR_SIZE,16
|
||||
env = WLR_DRM_NO_ATOMIC,1
|
||||
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_out = 5
|
||||
|
||||
border_size = 2
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = true
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = true
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 5
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 0.95
|
||||
|
||||
drop_shadow = true
|
||||
shadow_range = 4
|
||||
shadow_render_power = 3
|
||||
col.shadow = rgba(1a1a1aee)
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = true
|
||||
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||
|
||||
animation = windows, 1, 7, myBezier
|
||||
animation = windowsOut, 1, 7, default, popin 80%
|
||||
animation = border, 1, 10, default
|
||||
animation = borderangle, 1, 8, default
|
||||
animation = fade, 1, 7, default
|
||||
animation = workspaces, 1, 6, default
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_is_master = true
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||
}
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us,ru
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad {
|
||||
natural_scroll = false
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures {
|
||||
workspace_swipe = false
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
device {
|
||||
name = epic-mouse-v1
|
||||
sensitivity = -0.5
|
||||
}
|
||||
|
||||
|
||||
####################
|
||||
### KEYBINDINGSS ###
|
||||
####################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = SUPER, Q, exec, $terminal
|
||||
bind = SUPER, C, killactive,
|
||||
bind = SUPER, M, exit,
|
||||
bind = SUPER, E, exec, $fileManager
|
||||
bind = SUPER, V, togglefloating,
|
||||
bind = SUPER, F, fullscreen,
|
||||
bind = SUPER, R, exec, $menu
|
||||
bind = SUPER, P, pseudo, # dwindle
|
||||
bind = SUPER, J, togglesplit, # dwindle
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = SUPER, left, movefocus, l
|
||||
bind = SUPER, right, movefocus, r
|
||||
bind = SUPER, up, movefocus, u
|
||||
bind = SUPER, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = SUPER, 1, workspace, 1
|
||||
bind = SUPER, 2, workspace, 2
|
||||
bind = SUPER, 3, workspace, 3
|
||||
bind = SUPER, 4, workspace, 4
|
||||
bind = SUPER, 5, workspace, 5
|
||||
bind = SUPER, 6, workspace, 6
|
||||
bind = SUPER, 7, workspace, 7
|
||||
bind = SUPER, 8, workspace, 8
|
||||
bind = SUPER, 9, workspace, 9
|
||||
bind = SUPER, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = SUPER SHIFT, 1, movetoworkspace, 1
|
||||
bind = SUPER SHIFT, 2, movetoworkspace, 2
|
||||
bind = SUPER SHIFT, 3, movetoworkspace, 3
|
||||
bind = SUPER SHIFT, 4, movetoworkspace, 4
|
||||
bind = SUPER SHIFT, 5, movetoworkspace, 5
|
||||
bind = SUPER SHIFT, 6, movetoworkspace, 6
|
||||
bind = SUPER SHIFT, 7, movetoworkspace, 7
|
||||
bind = SUPER SHIFT, 8, movetoworkspace, 8
|
||||
bind = SUPER SHIFT, 9, movetoworkspace, 9
|
||||
bind = SUPER SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = SUPER, S, togglespecialworkspace, magic
|
||||
bind = SUPER SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = SUPER, mouse_down, workspace, e+1
|
||||
bind = SUPER, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = SUPER, mouse:272, movewindow
|
||||
bindm = SUPER, mouse:273, resizewindow
|
||||
|
||||
bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86MonBrightnessDown, exec, busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateTemperature n -500
|
||||
bindl = , XF86MonBrightnessUp, exec, busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateTemperature n +500
|
||||
bindl = SUPER, XF86MonBrightnessDown, exec, busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay Brightness d -0.1
|
||||
bindl = SUPER, XF86MonBrightnessUp, exec, busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay Brightness d +0.1
|
||||
|
||||
bind = SUPER, SPACE, exec, hyprctl switchxkblayout keychron-keychron-k3-pro next
|
||||
bind = , PRINT, exec, hyprshot -m region
|
||||
bind = SUPER, H, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy
|
||||
#bind = CTRL, V, exec, wl-paste
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule v1
|
||||
# windowrule = float, ^(kitty)$
|
||||
|
||||
# Example windowrule v2
|
||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
|
||||
windowrulev2 = float, class:^(steam_app.*)$
|
||||
windowrulev2 = immediate, class:^(steam_app.*)$
|
||||
windowrulev2 = float, class:^(steam_proton.*)$
|
@ -1,15 +0,0 @@
|
||||
{
|
||||
"neodev": {
|
||||
"library": {
|
||||
"enabled": true,
|
||||
"plugins": true
|
||||
}
|
||||
},
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
" Enable Mouse
|
||||
set mouse=a
|
||||
|
||||
" Set Editor Font
|
||||
if exists(':GuiFont')
|
||||
" Use GuiFont! to ignore font errors
|
||||
GuiFont MesloLGS Nerd Font Mono:h10
|
||||
endif
|
||||
|
||||
" Disable GUI Tabline
|
||||
if exists(':GuiTabline')
|
||||
GuiTabline 0
|
||||
endif
|
||||
|
||||
" Disable GUI Popupmenu
|
||||
if exists(':GuiPopupmenu')
|
||||
GuiPopupmenu 0
|
||||
endif
|
||||
|
||||
" Enable GUI ScrollBar
|
||||
if exists(':GuiScrollBar')
|
||||
GuiScrollBar 0
|
||||
endif
|
||||
|
||||
" Right Click Context Menu (Copy-Cut-Paste)
|
||||
nnoremap <silent><RightMouse> :call GuiShowContextMenu()<CR>
|
||||
inoremap <silent><RightMouse> <Esc>:call GuiShowContextMenu()<CR>
|
||||
xnoremap <silent><RightMouse> :call GuiShowContextMenu()<CR>gv
|
||||
snoremap <silent><RightMouse> <C-G>:call GuiShowContextMenu()<CR>gv
|
@ -1,7 +0,0 @@
|
||||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||
require("config.lazy")
|
||||
|
||||
vim.o.tabstop = 4 -- A TAB character looks like 4 spaces
|
||||
vim.o.expandtab = true -- Pressing the TAB key will insert spaces instead of a TAB character
|
||||
vim.o.softtabstop = 4 -- Number of spaces inserted instead of a TAB character
|
||||
vim.o.shiftwidth = 4 -- Number of spaces inserted when indenting
|
@ -1,3 +0,0 @@
|
||||
-- Autocmds are automatically loaded on the VeryLazy event
|
||||
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||
-- Add any additional autocmds here
|
@ -1,15 +0,0 @@
|
||||
-- Keymaps are automatically loaded on the VeryLazy event
|
||||
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||
-- Add any additional keymaps here
|
||||
|
||||
-- Move to window
|
||||
vim.keymap.set("n", "<C-Left>", "<C-w>h", { desc = "Go to left window", remap = true })
|
||||
vim.keymap.set("n", "<C-Down>", "<C-w>j", { desc = "Go to lower window", remap = true })
|
||||
vim.keymap.set("n", "<C-Up>", "<C-w>k", { desc = "Go to upper window", remap = true })
|
||||
vim.keymap.set("n", "<C-Right>", "<C-w>l", { desc = "Go to right window", remap = true })
|
||||
|
||||
-- Resize window using <ctrl> arrow keys
|
||||
vim.keymap.set("n", "<C-k>", "<cmd>resize +2<cr>", { desc = "Increase window height" })
|
||||
vim.keymap.set("n", "<C-l>", "<cmd>resize -2<cr>", { desc = "Decrease window height" })
|
||||
vim.keymap.set("n", "<C-h>", "<cmd>vertical resize -2<cr>", { desc = "Decrease window width" })
|
||||
vim.keymap.set("n", "<C-j>", "<cmd>vertical resize +2<cr>", { desc = "Increase window width" })
|
@ -1,46 +0,0 @@
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
-- bootstrap lazy.nvim
|
||||
-- stylua: ignore
|
||||
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
|
||||
end
|
||||
vim.opt.rtp:prepend(vim.env.LAZY or lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
-- add LazyVim and import its plugins
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||
-- import any extras modules here
|
||||
-- { import = "lazyvim.plugins.extras.lang.typescript" },
|
||||
-- { import = "lazyvim.plugins.extras.lang.json" },
|
||||
-- { import = "lazyvim.plugins.extras.ui.mini-animate" },
|
||||
-- import/override with your plugins
|
||||
{ import = "plugins" },
|
||||
},
|
||||
defaults = {
|
||||
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
||||
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
||||
lazy = false,
|
||||
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
||||
-- have outdated releases, which may break your Neovim install.
|
||||
version = false, -- always use the latest git commit
|
||||
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
||||
},
|
||||
install = { colorscheme = { "tokyonight", "habamax" } },
|
||||
checker = { enabled = true }, -- automatically check for plugin updates
|
||||
performance = {
|
||||
rtp = {
|
||||
-- disable some rtp plugins
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
-- "matchit",
|
||||
-- "matchparen",
|
||||
-- "netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
@ -1,3 +0,0 @@
|
||||
-- Options are automatically loaded before lazy.nvim startup
|
||||
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
||||
-- Add any additional options here
|
@ -1,70 +0,0 @@
|
||||
return {
|
||||
|
||||
{
|
||||
"ellisonleao/gruvbox.nvim",
|
||||
},
|
||||
|
||||
{
|
||||
"folke/tokyonight.nvim",
|
||||
style = "moon",
|
||||
priority = 1000,
|
||||
},
|
||||
|
||||
{ "skywind3000/asyncrun.vim" },
|
||||
|
||||
-- Configure LazyVim to load gruvbox
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "tokyonight",
|
||||
},
|
||||
},
|
||||
|
||||
{ "equalsraf/neovim-gui-shim" },
|
||||
|
||||
{
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
opts = {
|
||||
filesystem = {
|
||||
filtered_items = {
|
||||
hide_dotfiles = false,
|
||||
hide_gitignored = false,
|
||||
},
|
||||
use_libuv_file_watcher = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"folke/trouble.nvim",
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
},
|
||||
|
||||
{
|
||||
"nvim-orgmode/orgmode",
|
||||
dependencies = {
|
||||
{ "nvim-treesitter/nvim-treesitter", lazy = true },
|
||||
},
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("orgmode").setup_ts_grammar()
|
||||
|
||||
require("nvim-treesitter.configs").setup({
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = { "org" },
|
||||
},
|
||||
ensure_installed = { "org" },
|
||||
})
|
||||
|
||||
require("orgmode").setup()
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
config = function()
|
||||
require("mason").setup({ PATH = "append" })
|
||||
end
|
||||
}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
indent_type = "Spaces"
|
||||
indent_width = 4
|
||||
column_width = 120
|
||||
|
629
configurations/bonvim.nix
Normal file
629
configurations/bonvim.nix
Normal file
@ -0,0 +1,629 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
rustc ? pkgs.rustc,
|
||||
cargo ? pkgs.cargo,
|
||||
rust-analyzer ? pkgs.rust-analyzer,
|
||||
...
|
||||
}: {
|
||||
# General
|
||||
globals.mapleader = " ";
|
||||
|
||||
opts = {
|
||||
# Show line numbers
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
# Tab need 4 spaces please
|
||||
expandtab = true;
|
||||
tabstop = 4;
|
||||
softtabstop = 4;
|
||||
shiftwidth = 4;
|
||||
showtabline = 4;
|
||||
# Hide * markup
|
||||
conceallevel = 2;
|
||||
# Confirm on save
|
||||
confirm = true;
|
||||
|
||||
cursorline = true;
|
||||
# Invisible characters I see you
|
||||
list = true;
|
||||
|
||||
ignorecase = true;
|
||||
|
||||
grepprg = "${lib.getExe pkgs.ripgrep} --vimgrep";
|
||||
|
||||
termguicolors = true;
|
||||
# Splits
|
||||
splitbelow = true;
|
||||
splitright = true;
|
||||
splitkeep = "screen";
|
||||
# U, u, undo
|
||||
undofile = true;
|
||||
undolevels = 10000;
|
||||
updatetime = 200;
|
||||
# Command line completion mode
|
||||
wildmode = "longest:full,full";
|
||||
|
||||
smoothscroll = true;
|
||||
|
||||
autowrite = true;
|
||||
};
|
||||
|
||||
globals = {
|
||||
bigfile_size = 1024 * 1024 * 1.5;
|
||||
};
|
||||
|
||||
editorconfig.enable = true;
|
||||
|
||||
# Clipboard
|
||||
clipboard = {
|
||||
register = "unnamedplus";
|
||||
providers.wl-copy.enable = true;
|
||||
};
|
||||
|
||||
# Copy/paste
|
||||
plugins.yanky = {
|
||||
enable = true;
|
||||
systemClipboard.syncWithRing = true;
|
||||
};
|
||||
|
||||
extraPlugins = with pkgs.vimPlugins; [nvim-web-devicons];
|
||||
|
||||
# Theme
|
||||
colorschemes.catppuccin = {
|
||||
enable = true;
|
||||
settings = {
|
||||
flavour = "macchiato";
|
||||
no_bold = false;
|
||||
no_italic = false;
|
||||
no_underline = false;
|
||||
integrations = {
|
||||
cmp = true;
|
||||
notify = true;
|
||||
gitsigns = true;
|
||||
neotree = true;
|
||||
which_key = true;
|
||||
illuminate = {
|
||||
enabled = true;
|
||||
};
|
||||
treesitter = true;
|
||||
telescope.enabled = true;
|
||||
indent_blankline.enabled = true;
|
||||
mini.enabled = true;
|
||||
native_lsp = {
|
||||
enabled = true;
|
||||
inlay_hints = {
|
||||
background = true;
|
||||
};
|
||||
underlines = {
|
||||
errors = ["underline"];
|
||||
hints = ["underline"];
|
||||
information = ["underline"];
|
||||
warnings = ["underline"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# File tree
|
||||
plugins.neo-tree = {
|
||||
enable = true;
|
||||
filesystem = {
|
||||
useLibuvFileWatcher = true;
|
||||
filteredItems = {
|
||||
hideDotfiles = false;
|
||||
hideGitignored = false;
|
||||
};
|
||||
};
|
||||
defaultComponentConfigs = {
|
||||
indent = {
|
||||
withExpanders = true;
|
||||
expanderCollapsed = "";
|
||||
expanderExpanded = "";
|
||||
expanderHighlight = "NeoTreeExpander";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# UI
|
||||
plugins.noice = {
|
||||
enable = true;
|
||||
lsp.override = {
|
||||
"cmp.entry.get_documentation" = true;
|
||||
"vim.lsp.util.convert_input_to_markdown_lines" = true;
|
||||
"vim.lsp.util.stylize_markdown" = true;
|
||||
};
|
||||
presets = {
|
||||
long_message_to_split = true;
|
||||
};
|
||||
};
|
||||
|
||||
plugins.dressing = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# Status line
|
||||
plugins.bufferline = {
|
||||
enable = true;
|
||||
diagnostics = "nvim_lsp";
|
||||
mode = "buffers";
|
||||
|
||||
offsets = [
|
||||
{
|
||||
filetype = "neo-tree";
|
||||
text = "Neo-tree";
|
||||
highlight = "Directory";
|
||||
text_align = "left";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
plugins.lualine = {
|
||||
enable = true;
|
||||
globalstatus = true;
|
||||
extensions = ["neo-tree"];
|
||||
sections = {
|
||||
lualine_a = [
|
||||
{
|
||||
name = "mode";
|
||||
separator.right = "";
|
||||
}
|
||||
];
|
||||
lualine_b = [
|
||||
{
|
||||
name = "branch";
|
||||
icon = "";
|
||||
separator.right = "";
|
||||
}
|
||||
];
|
||||
lualine_c = [
|
||||
{
|
||||
name = "diagnostics";
|
||||
separator.right = ">";
|
||||
extraConfig = {
|
||||
sources = ["nvim_lsp"];
|
||||
symbols = {
|
||||
error = " ";
|
||||
warn = " ";
|
||||
info = " ";
|
||||
hint = " ";
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "filetype";
|
||||
extraConfig = {
|
||||
icon_only = true;
|
||||
separator = "";
|
||||
padding = {
|
||||
left = 1;
|
||||
right = 0;
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "filename";
|
||||
extraConfig = {
|
||||
path = 1;
|
||||
};
|
||||
}
|
||||
];
|
||||
lualine_x = [
|
||||
{
|
||||
name = "diff";
|
||||
extraConfig = {
|
||||
symbols = {
|
||||
added = " ";
|
||||
modified = " ";
|
||||
removed = " ";
|
||||
};
|
||||
source.__raw = ''
|
||||
function()
|
||||
local gitsings = vim.b.gitsigns_status_dict
|
||||
if gitsigns then
|
||||
return {
|
||||
added = gitigns.added,
|
||||
modified = gitigns.changed,
|
||||
removed = gitigns.removed
|
||||
}
|
||||
end
|
||||
end
|
||||
'';
|
||||
};
|
||||
}
|
||||
];
|
||||
lualine_y = [
|
||||
{
|
||||
separator.left = "";
|
||||
name = "progress";
|
||||
padding = {
|
||||
left = 1;
|
||||
right = 0;
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "location";
|
||||
padding = {
|
||||
left = 0;
|
||||
right = 1;
|
||||
};
|
||||
}
|
||||
];
|
||||
lualine_z = [
|
||||
{
|
||||
separator.left = "";
|
||||
fmt = ''
|
||||
function(text)
|
||||
return " " .. os.date("%R")
|
||||
end
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
plugins.notify.enable = true;
|
||||
|
||||
plugins.project-nvim = {
|
||||
enable = true;
|
||||
enableTelescope = true;
|
||||
showHidden = true;
|
||||
};
|
||||
|
||||
# Syntax highlight
|
||||
plugins.treesitter = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
plugins.treesitter-textobjects.enable = true;
|
||||
|
||||
# Double trouble of your code
|
||||
plugins.trouble = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# Multifile search/replace
|
||||
plugins.spectre = {
|
||||
enable = true;
|
||||
findPackage = pkgs.ripgrep;
|
||||
replacePackage = pkgs.gnused;
|
||||
};
|
||||
|
||||
plugins.which-key = {
|
||||
enable = true;
|
||||
icons.group = "+";
|
||||
registrations = {
|
||||
"<leader>g" = "+ Git";
|
||||
"<leader>c" = "+ Code";
|
||||
"<leader>s" = "+ Search";
|
||||
"<leader>w" = "+ Window";
|
||||
"<leader>q" = "+ Quit";
|
||||
};
|
||||
};
|
||||
|
||||
# LSP
|
||||
plugins = {
|
||||
lsp-lines.enable = true;
|
||||
lsp-format.enable = true;
|
||||
lsp = {
|
||||
enable = true;
|
||||
inlayHints = true;
|
||||
keymaps = {
|
||||
# vim.diagnostic.<action>
|
||||
diagnostic = {
|
||||
"<leader>cd" = {
|
||||
action = "open_float";
|
||||
desc = "Line diagnostics";
|
||||
};
|
||||
};
|
||||
# vim.lsp.buf.<action>
|
||||
lspBuf = {
|
||||
"K" = "hover";
|
||||
"gK" = "signature_help";
|
||||
"gr" = "references";
|
||||
"gd" = "definition";
|
||||
"gi" = "implementation";
|
||||
"gt" = "type_definition";
|
||||
"cr" = "rename";
|
||||
"cf" = "format";
|
||||
};
|
||||
extra = [
|
||||
{
|
||||
key = "<leader>cf";
|
||||
action.__raw = "vim.lsp.buf.format";
|
||||
options.desc = "Format";
|
||||
}
|
||||
];
|
||||
};
|
||||
servers = {
|
||||
clangd = {
|
||||
enable = true;
|
||||
cmd = [
|
||||
"${config.plugins.lsp.servers.clangd.package}/bin/clangd"
|
||||
"--background-index"
|
||||
"--clang-tidy"
|
||||
"--header-insertion=iwyu"
|
||||
"--completion-style=detailed"
|
||||
"--function-arg-placeholders"
|
||||
"--fallback-style=llvm"
|
||||
];
|
||||
};
|
||||
cmake.enable = true;
|
||||
nil-ls.enable = true;
|
||||
# pylyzer.enable = true; # not working with virtual environments currently :(
|
||||
pylsp = {
|
||||
enable = true;
|
||||
settings.plugins = {
|
||||
pyflakes.enabled = true;
|
||||
black.enabled = true;
|
||||
};
|
||||
};
|
||||
rust-analyzer = {
|
||||
enable = true;
|
||||
package = rust-analyzer;
|
||||
cargoPackage = cargo;
|
||||
rustcPackage = rustc;
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
};
|
||||
volar.enable = true;
|
||||
tailwindcss.enable = true;
|
||||
marksman.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# VCS
|
||||
plugins.gitsigns = {
|
||||
enable = true;
|
||||
settings = {
|
||||
signs = {
|
||||
add = {
|
||||
text = "▎";
|
||||
};
|
||||
change = {
|
||||
text = "▎";
|
||||
};
|
||||
delete = {
|
||||
text = "";
|
||||
};
|
||||
untracked = {
|
||||
text = "▎";
|
||||
};
|
||||
topdelete = {
|
||||
text = "";
|
||||
};
|
||||
changedelete = {
|
||||
text = "▎";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
plugins.lazygit.enable = true;
|
||||
|
||||
# Formatting
|
||||
plugins.none-ls = {
|
||||
enable = true;
|
||||
# nix
|
||||
sources.formatting.alejandra.enable = true;
|
||||
};
|
||||
|
||||
# Search, search, search
|
||||
plugins.telescope = {
|
||||
enable = true;
|
||||
extensions.fzf-native.enable = true;
|
||||
keymaps = {
|
||||
"<leader>sgf" = {
|
||||
action = "git_files";
|
||||
options = {
|
||||
desc = "Files";
|
||||
};
|
||||
};
|
||||
"<leader>sgc" = {
|
||||
action = "git_commits";
|
||||
options = {
|
||||
desc = "Commits";
|
||||
};
|
||||
};
|
||||
"<leader>sgs" = {
|
||||
action = "git_status";
|
||||
options = {
|
||||
desc = "Status";
|
||||
};
|
||||
};
|
||||
"<leader>sk" = {
|
||||
action = "keymaps";
|
||||
options = {
|
||||
desc = "Key Maps";
|
||||
};
|
||||
};
|
||||
"<leader>sf" = {
|
||||
action = "live_grep";
|
||||
options = {
|
||||
desc = "Grep Root Directory";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
plugins.todo-comments.enable = true;
|
||||
|
||||
# Terminal
|
||||
plugins.toggleterm = {
|
||||
enable = true;
|
||||
settings = {
|
||||
direction = "float";
|
||||
open_mapping = "[[<c-/>]]";
|
||||
};
|
||||
};
|
||||
|
||||
# Completion
|
||||
plugins = {
|
||||
cmp = {
|
||||
enable = true;
|
||||
settings = {
|
||||
sources = [
|
||||
{
|
||||
name = "nvim_lsp";
|
||||
}
|
||||
{
|
||||
name = "path";
|
||||
}
|
||||
{
|
||||
name = "buffer";
|
||||
}
|
||||
];
|
||||
experimental = {
|
||||
ghost_text = {
|
||||
hl_group = "CmpGhostText";
|
||||
};
|
||||
};
|
||||
mapping = {
|
||||
"<c-space>" = "cmp.mapping.complete()";
|
||||
"<cr>" = "cmp.mapping.confirm({ select = true; })";
|
||||
};
|
||||
};
|
||||
};
|
||||
cmp-nvim-lsp.enable = true;
|
||||
cmp-path.enable = true;
|
||||
cmp-buffer.enable = true;
|
||||
};
|
||||
|
||||
# Keymaps
|
||||
keymaps = [
|
||||
# General
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>qq";
|
||||
action = "<cmd>qa<cr>";
|
||||
options = {desc = "Quit All";};
|
||||
}
|
||||
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>ww";
|
||||
action = "<C-W>p";
|
||||
options = {desc = "Other Window";};
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>wd";
|
||||
action = "<C-W>c";
|
||||
options = {desc = "Delete Window";};
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>ws";
|
||||
action = "<C-W>s";
|
||||
options = {desc = "Split Below";};
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>wv";
|
||||
action = "<C-W>v";
|
||||
options = {desc = "Split Right";};
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<C-Left>";
|
||||
action = "<C-W>h";
|
||||
options = {desc = "Go To Left Window";};
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<C-Down>";
|
||||
action = "<C-W>j";
|
||||
options = {desc = "Go To Lower Window";};
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<C-Up>";
|
||||
action = "<C-W>k";
|
||||
options = {desc = "Go To Upper Window";};
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<C-Right>";
|
||||
action = "<C-W>l";
|
||||
options = {desc = "Go To Right Window";};
|
||||
}
|
||||
|
||||
{
|
||||
mode = "v";
|
||||
key = ">";
|
||||
action = ">gv";
|
||||
options = {desc = "Indent right selected text";};
|
||||
}
|
||||
{
|
||||
mode = "v";
|
||||
key = "<";
|
||||
action = "<gv";
|
||||
options = {desc = "Indent left selected text";};
|
||||
}
|
||||
|
||||
# Clipboard
|
||||
{
|
||||
mode = ["n" "x"];
|
||||
key = "y";
|
||||
action = "<Plug>(YankyYank)";
|
||||
options = {desc = "Yank Text";};
|
||||
}
|
||||
{
|
||||
mode = ["n" "x"];
|
||||
key = "p";
|
||||
action = "<Plug>(YankyPutAfter)";
|
||||
options = {desc = "Put Yanked Text After Cursor";};
|
||||
}
|
||||
{
|
||||
mode = ["n" "x"];
|
||||
key = "P";
|
||||
action = "<Plug>(YankyPutBefore)";
|
||||
options = {desc = "Put Yanked Text Before Cursor";};
|
||||
}
|
||||
{
|
||||
mode = ["n" "x"];
|
||||
key = "gp";
|
||||
action = "<Plug>(YankyGPutAfter)";
|
||||
options = {desc = "Put Yanked Text After Selection";};
|
||||
}
|
||||
{
|
||||
mode = ["n" "x"];
|
||||
key = "gP";
|
||||
action = "<Plug>(YankyGPutBefore)";
|
||||
options = {desc = "Put Yanked Text Befor Selection";};
|
||||
}
|
||||
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>cl";
|
||||
action.__raw = ''require("lsp_lines").toggle'';
|
||||
options = {desc = "Toggle LSP lines";};
|
||||
}
|
||||
|
||||
# Terminal
|
||||
{
|
||||
mode = "t";
|
||||
key = "<esc><esc>";
|
||||
action = "<c-\\><c-n>";
|
||||
options = {desc = "Enter Normal Mode";};
|
||||
}
|
||||
# Etc
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>e";
|
||||
action = "<cmd>Neotree toggle<cr>";
|
||||
options = {desc = "Open/Close Neotree";};
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>gg";
|
||||
action = "<cmd>LazyGit<cr>";
|
||||
options = {
|
||||
desc = "LazyGit (root dir)";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
7
configurations/default.nix
Normal file
7
configurations/default.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
bonvim = ./bonvim.nix;
|
||||
}
|
@ -1,13 +1,9 @@
|
||||
{ crane-lib, pkgs, ... }:
|
||||
crane-lib.devShell {
|
||||
{pkgs, ...}:
|
||||
pkgs.mkShellNoCC {
|
||||
packages = with pkgs; [
|
||||
sops
|
||||
mkpasswd
|
||||
nil
|
||||
jq
|
||||
cachix
|
||||
nodejs
|
||||
python3
|
||||
marksman
|
||||
];
|
||||
}
|
||||
|
@ -1,12 +1,15 @@
|
||||
# self.devShells.${system}
|
||||
#
|
||||
{ self, nixpkgs, ... }:
|
||||
let
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
...
|
||||
}: let
|
||||
forAllSystems = nixpkgs.lib.genAttrs ["x86_64-linux"];
|
||||
nixpkgsFor = forAllSystems (system: import nixpkgs {inherit system;});
|
||||
|
||||
in forAllSystems(system:
|
||||
let environment = {
|
||||
in
|
||||
forAllSystems (system: let
|
||||
environment = rec {
|
||||
pkgs = nixpkgsFor.${system};
|
||||
|
||||
bonfire = self;
|
||||
@ -14,9 +17,9 @@ in forAllSystems(system:
|
||||
bonfire-pkgs = self.packages.${system};
|
||||
|
||||
crane = self.inputs.crane;
|
||||
crane-lib = self.inputs.crane.lib.${system};
|
||||
}; in {
|
||||
|
||||
crane-lib = self.inputs.crane.mkLib pkgs;
|
||||
};
|
||||
in {
|
||||
default = import ./bonfire.nix environment;
|
||||
|
||||
netgen = import ./netgen.nix environment;
|
||||
|
@ -1,4 +1,8 @@
|
||||
{ pkgs, bonfire-pkgs, ... }:
|
||||
{
|
||||
pkgs,
|
||||
bonfire-pkgs,
|
||||
...
|
||||
}:
|
||||
pkgs.mkShellNoCC {
|
||||
packages = [
|
||||
bonfire-pkgs.netgen
|
||||
|
@ -1,4 +1,8 @@
|
||||
{ pkgs, bonfire-pkgs, ... }:
|
||||
{
|
||||
pkgs,
|
||||
bonfire-pkgs,
|
||||
...
|
||||
}:
|
||||
pkgs.mkShellNoCC {
|
||||
packages = [
|
||||
bonfire-pkgs.openfoam
|
||||
|
@ -1,4 +1,8 @@
|
||||
{ pkgs, crane-lib, ... }:
|
||||
{
|
||||
pkgs,
|
||||
crane-lib,
|
||||
...
|
||||
}:
|
||||
crane-lib.devShell rec {
|
||||
packages = with pkgs; [
|
||||
lld
|
||||
|
@ -1,4 +1,8 @@
|
||||
{ pkgs, crane-lib, ... }:
|
||||
{
|
||||
pkgs,
|
||||
crane-lib,
|
||||
...
|
||||
}:
|
||||
crane-lib.devShell {
|
||||
packages = [
|
||||
pkgs.cargo-watch
|
||||
|
364
flake.lock
generated
364
flake.lock
generated
@ -52,7 +52,7 @@
|
||||
"inputs": {
|
||||
"crane": "crane_2",
|
||||
"fenix": "fenix_2",
|
||||
"home-manager": "home-manager_2",
|
||||
"home-manager": "home-manager_3",
|
||||
"nixgl": "nixgl",
|
||||
"nixos-mailserver": "nixos-mailserver_2",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
@ -78,7 +78,7 @@
|
||||
"crane": "crane_3",
|
||||
"devenv": "devenv",
|
||||
"fenix": "fenix_3",
|
||||
"home-manager": "home-manager_3",
|
||||
"home-manager": "home-manager_4",
|
||||
"nixgl": "nixgl_2",
|
||||
"nixos-mailserver": "nixos-mailserver_3",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
@ -142,11 +142,11 @@
|
||||
},
|
||||
"catppuccin": {
|
||||
"locked": {
|
||||
"lastModified": 1718339789,
|
||||
"narHash": "sha256-Q3fgY7huFE+uaw7BNsAl1x+FvjDAi3EDWPnlALJt5pM=",
|
||||
"lastModified": 1719758387,
|
||||
"narHash": "sha256-bMaI1jJNzIZar4TP/hhoPQROqqcbD6zT6O+sqIJdp8c=",
|
||||
"owner": "catppuccin",
|
||||
"repo": "nix",
|
||||
"rev": "73e06d5bd7ed34bdd0168030893ef8364fdc1d4a",
|
||||
"rev": "9eb0610d48dd0e1fecf772bbdacf9050d7b82d7c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -162,11 +162,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718474113,
|
||||
"narHash": "sha256-UKrfy/46YF2TRnxTtKCYzqf2f5ZPRRWwKCCJb7O5X8U=",
|
||||
"lastModified": 1719685792,
|
||||
"narHash": "sha256-WIoVERD4AN6CmfGSRPy3mfPx2dDbRHgzP2V8z6aNbaY=",
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"rev": "0095fd8ea00ae0a9e6014f39c375e40c2fbd3386",
|
||||
"rev": "aa5dcd0518a422dfd545d565f0d5a25971fea52a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -224,7 +224,7 @@
|
||||
"devenv": {
|
||||
"inputs": {
|
||||
"cachix": "cachix",
|
||||
"flake-compat": "flake-compat_4",
|
||||
"flake-compat": "flake-compat_6",
|
||||
"nix": "nix_2",
|
||||
"nixpkgs": [
|
||||
"oscuro",
|
||||
@ -288,6 +288,28 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"devshell": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1717408969,
|
||||
"narHash": "sha256-Q0OEFqe35fZbbRPPRdrjTUUChKVhhWXz3T9ZSKmaoVY=",
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"rev": "1ebbe68d57457c8cae98145410b164b5477761f4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@ -296,11 +318,11 @@
|
||||
"rust-analyzer-src": []
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1717827974,
|
||||
"narHash": "sha256-ixopuTeTouxqTxfMuzs6IaRttbT8JqRW5C9Q/57WxQw=",
|
||||
"lastModified": 1719815435,
|
||||
"narHash": "sha256-K2xFp142onP35jcx7li10xUxNVEVRWjAdY8DSuR7Naw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"rev": "ab655c627777ab5f9964652fe23bbb1dfbd687a8",
|
||||
"rev": "ebfe2c639111d7e82972a12711206afaeeda2450",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -382,6 +404,20 @@
|
||||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"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-compat_3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
@ -397,22 +433,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_4": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@ -430,6 +450,22 @@
|
||||
}
|
||||
},
|
||||
"flake-compat_5": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_6": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
@ -445,7 +481,62 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_7": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719745305,
|
||||
"narHash": "sha256-xwgjVUpqSviudEkpQnioeez1Uo2wzrsMaJKJClh+Bls=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "c3c5ecc05edc7dafba779c6c1a61cd08ac6583e9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701680307,
|
||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
@ -460,9 +551,9 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"flake-utils_3": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1689068808,
|
||||
@ -478,9 +569,9 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"flake-utils_4": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
@ -496,7 +587,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_4": {
|
||||
"flake-utils_5": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
@ -511,7 +602,56 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"git-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_3",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719259945,
|
||||
"narHash": "sha256-F1h+XIsGKT9TkGO3omxDLEb/9jOOsI6NnzsXFsZhry4=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"git-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"oscuro",
|
||||
@ -544,11 +684,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718526747,
|
||||
"narHash": "sha256-sKrD/utGvmtQALvuDj4j0CT3AJXP1idOAq2p+27TpeE=",
|
||||
"lastModified": 1719827439,
|
||||
"narHash": "sha256-tneHOIv1lEavZ0vQ+rgz67LPNCgOZVByYki3OkSshFU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "0a7ffb28e5df5844d0e8039c9833d7075cdee792",
|
||||
"rev": "59ce796b2563e19821361abbe2067c3bb4143a7d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -558,6 +698,27 @@
|
||||
}
|
||||
},
|
||||
"home-manager_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719677234,
|
||||
"narHash": "sha256-qO9WZsj/0E6zcK4Ht1y/iJ8XfwbBzq7xdqhBh44OP/M=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "36317d4d38887f7629876b0e43c8d9593c5cc48d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager_3": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"oscuro",
|
||||
@ -579,7 +740,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager_3": {
|
||||
"home-manager_4": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"oscuro",
|
||||
@ -605,7 +766,7 @@
|
||||
},
|
||||
"nix": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_3",
|
||||
"flake-compat": "flake-compat_5",
|
||||
"nixpkgs": [
|
||||
"oscuro",
|
||||
"bonfire",
|
||||
@ -633,6 +794,27 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719128254,
|
||||
"narHash": "sha256-I7jMpq0CAOZA/i70+HDQO/ulLttyQu/K70cSESiMX7A=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "50581970f37f06a4719001735828519925ef8310",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-github-actions": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@ -698,7 +880,7 @@
|
||||
},
|
||||
"nixgl": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": [
|
||||
"oscuro",
|
||||
"bonfire",
|
||||
@ -721,7 +903,7 @@
|
||||
},
|
||||
"nixgl_2": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_4",
|
||||
"flake-utils": "flake-utils_5",
|
||||
"nixpkgs": [
|
||||
"oscuro",
|
||||
"bonfire",
|
||||
@ -754,11 +936,11 @@
|
||||
"nixpkgs-24_05": "nixpkgs-24_05"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718398369,
|
||||
"narHash": "sha256-ccOHDuTaUhD1DW6DGNXoDJNOwYx55rVNKECyqRzKRtE=",
|
||||
"lastModified": 1718697807,
|
||||
"narHash": "sha256-Enla61WFisytTYbWygPynEbu8vozjeGc6Obkj2GRj7o=",
|
||||
"owner": "simple-nixos-mailserver",
|
||||
"repo": "nixos-mailserver",
|
||||
"rev": "54cbacb6eb9938bf1eaab7a7840fb527050c2af1",
|
||||
"rev": "290a995de5c3d3f08468fa548f0d55ab2efc7b6b",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
@ -770,7 +952,7 @@
|
||||
"nixos-mailserver_2": {
|
||||
"inputs": {
|
||||
"blobs": "blobs_2",
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-compat": "flake-compat_4",
|
||||
"nixpkgs": [
|
||||
"oscuro",
|
||||
"bonfire",
|
||||
@ -795,7 +977,7 @@
|
||||
"nixos-mailserver_3": {
|
||||
"inputs": {
|
||||
"blobs": "blobs_3",
|
||||
"flake-compat": "flake-compat_5",
|
||||
"flake-compat": "flake-compat_7",
|
||||
"nixpkgs": [
|
||||
"oscuro",
|
||||
"bonfire",
|
||||
@ -821,11 +1003,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1718530797,
|
||||
"narHash": "sha256-pup6cYwtgvzDpvpSCFh1TEUjw2zkNpk8iolbKnyFmmU=",
|
||||
"lastModified": 1719690277,
|
||||
"narHash": "sha256-0xSej1g7eP2kaUF+JQp8jdyNmpmCJKRpO12mKl/36Kc=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b60ebf54c15553b393d144357375ea956f89e9a9",
|
||||
"rev": "2741b4b489b55df32afac57bc4bfd220e8bf617e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -932,11 +1114,11 @@
|
||||
},
|
||||
"nixpkgs-stable_4": {
|
||||
"locked": {
|
||||
"lastModified": 1718478900,
|
||||
"narHash": "sha256-v43N1gZLcGkhg3PdcrKUNIZ1L0FBzB2JqhIYEyKAHEs=",
|
||||
"lastModified": 1719663039,
|
||||
"narHash": "sha256-tXlrgAQygNIy49LDVFuPXlWD2zTQV9/F8pfoqwwPJyo=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c884223af91820615a6146af1ae1fea25c107005",
|
||||
"rev": "4a1e673523344f6ccc84b37f4413ad74ea19a119",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -1010,6 +1192,33 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"devshell": "devshell",
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-parts": "flake-parts",
|
||||
"git-hooks": "git-hooks",
|
||||
"home-manager": "home-manager_2",
|
||||
"nix-darwin": "nix-darwin",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719835160,
|
||||
"narHash": "sha256-AyZJM2la6+CAdKKSC3y80sbneW8dH/2lb+OxKzi2cAw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "7cc1685eafdcf04cf1058949647ea2c7560f2d65",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"obs-image-reaction": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
@ -1071,7 +1280,7 @@
|
||||
},
|
||||
"poetry2nix": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nix-github-actions": "nix-github-actions",
|
||||
"nixpkgs": [
|
||||
"oscuro",
|
||||
@ -1108,8 +1317,8 @@
|
||||
"devenv",
|
||||
"flake-compat"
|
||||
],
|
||||
"flake-utils": "flake-utils_3",
|
||||
"gitignore": "gitignore",
|
||||
"flake-utils": "flake-utils_4",
|
||||
"gitignore": "gitignore_2",
|
||||
"nixpkgs": [
|
||||
"oscuro",
|
||||
"bonfire",
|
||||
@ -1142,6 +1351,7 @@
|
||||
"home-manager": "home-manager",
|
||||
"nixos-mailserver": "nixos-mailserver",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixvim": "nixvim",
|
||||
"obs-image-reaction": "obs-image-reaction",
|
||||
"oscuro": "oscuro",
|
||||
"sops-nix": "sops-nix_3"
|
||||
@ -1203,11 +1413,11 @@
|
||||
"nixpkgs-stable": "nixpkgs-stable_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718506969,
|
||||
"narHash": "sha256-Pm9I/BMQHbsucdWf6y9G3xBZh3TMlThGo4KBbeoeczg=",
|
||||
"lastModified": 1719716556,
|
||||
"narHash": "sha256-KA9gy2Wkv76s4A8eLnOcdKVTygewbw3xsB8+awNMyqs=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "797ce4c1f45a85df6dd3d9abdc53f2691bea9251",
|
||||
"rev": "b5974d4331fb6c893e808977a2e1a6d34b3162d6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -1276,9 +1486,45 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_5": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719749022,
|
||||
"narHash": "sha256-ddPKHcqaKCIFSFc/cvxS14goUhCOAwsM1PbMr0ZtHMg=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "8df5ff62195d4e67e2264df0b7f5e8c9995fd0bd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709126324,
|
||||
@ -1296,7 +1542,7 @@
|
||||
},
|
||||
"utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_4"
|
||||
"systems": "systems_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709126324,
|
||||
|
46
flake.nix
46
flake.nix
@ -38,10 +38,24 @@
|
||||
obs-image-reaction = {
|
||||
url = "github:L-Nafaryus/obs-image-reaction";
|
||||
};
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, home-manager, nixos-mailserver, sops-nix, crane, fenix, catppuccin, oscuro, ... } @ inputs:
|
||||
let
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
home-manager,
|
||||
nixos-mailserver,
|
||||
sops-nix,
|
||||
crane,
|
||||
fenix,
|
||||
catppuccin,
|
||||
oscuro,
|
||||
...
|
||||
} @ inputs: let
|
||||
lib = import ./lib {inherit (nixpkgs) lib;};
|
||||
in {
|
||||
inherit lib;
|
||||
@ -54,7 +68,11 @@
|
||||
./nixosConfigurations/astora
|
||||
self.nixosModules.bonfire
|
||||
self.nixosModules.spoofdpi
|
||||
(import ./nixosModules { lib = nixpkgs.lib; self = self; }).configModule
|
||||
(import ./nixosModules {
|
||||
lib = nixpkgs.lib;
|
||||
self = self;
|
||||
})
|
||||
.configModule
|
||||
];
|
||||
specialArgs = {inherit self inputs;};
|
||||
};
|
||||
@ -70,13 +88,23 @@
|
||||
self.nixosModules.spoofdpi
|
||||
self.nixosModules.papermc
|
||||
self.nixosModules.qbittorrent-nox
|
||||
(import ./nixosModules { lib = nixpkgs.lib; self = self; }).configModule
|
||||
(import ./nixosModules {
|
||||
lib = nixpkgs.lib;
|
||||
self = self;
|
||||
})
|
||||
.configModule
|
||||
];
|
||||
specialArgs = {inherit self;};
|
||||
};
|
||||
};
|
||||
|
||||
nixosModules = lib.importNamedModules (import ./nixosModules { lib = nixpkgs.lib; self = self; }).modules;
|
||||
nixosModules =
|
||||
lib.importNamedModules
|
||||
(import ./nixosModules {
|
||||
lib = nixpkgs.lib;
|
||||
self = self;
|
||||
})
|
||||
.modules;
|
||||
|
||||
templates = {
|
||||
rust = {
|
||||
@ -85,10 +113,16 @@
|
||||
};
|
||||
};
|
||||
|
||||
packages = import ./packages { inherit self nixpkgs; };
|
||||
packages = import ./packages {inherit self inputs;};
|
||||
|
||||
apps = import ./apps {inherit self nixpkgs;};
|
||||
|
||||
devShells = import ./devShells {inherit self nixpkgs;};
|
||||
|
||||
configurations = import ./configurations {inherit self inputs;};
|
||||
|
||||
hydraJobs = {
|
||||
inherit (self) packages;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -1,17 +1,17 @@
|
||||
{ lib, ... }:
|
||||
rec {
|
||||
{lib, ...}: rec {
|
||||
maintainers = import ./maintainers.nix;
|
||||
|
||||
moduleName = path: if builtins.baseNameOf (toString path) == "default.nix" then
|
||||
builtins.baseNameOf (lib.removeSuffix "/default.nix" (toString path))
|
||||
else
|
||||
builtins.baseNameOf (lib.removeSuffix ".nix" (toString path));
|
||||
moduleName = path:
|
||||
if builtins.baseNameOf (toString path) == "default.nix"
|
||||
then builtins.baseNameOf (lib.removeSuffix "/default.nix" (toString path))
|
||||
else builtins.baseNameOf (lib.removeSuffix ".nix" (toString path));
|
||||
|
||||
moduleNames = pathList: map (path: moduleName path) pathList;
|
||||
|
||||
importModules = pathList: map (path: import path) pathList;
|
||||
|
||||
importNamedModules = pathList: lib.listToAttrs (
|
||||
importNamedModules = pathList:
|
||||
lib.listToAttrs (
|
||||
lib.zipListsWith (name: value: {inherit name value;}) (moduleNames pathList) (importModules pathList)
|
||||
);
|
||||
}
|
||||
|
@ -1,5 +1,9 @@
|
||||
{ pkgs, lib, config, ... }:
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
system.stateVersion = "23.11";
|
||||
|
||||
imports = [./hardware.nix ./users.nix];
|
||||
|
@ -1,5 +1,8 @@
|
||||
{ config, lib, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
# Boot
|
||||
boot = {
|
||||
loader.systemd-boot.enable = true;
|
||||
@ -67,12 +70,42 @@
|
||||
sudo.extraConfig = ''Defaults timestamp_timeout=30'';
|
||||
rtkit.enable = true;
|
||||
pam.loginLimits = [
|
||||
{ domain = "@audio"; item = "memlock"; type = "-"; value = "unlimited"; }
|
||||
{ domain = "@audio"; item = "rtprio"; type = "-"; value = "99"; }
|
||||
{ domain = "@audio"; item = "nofile"; type = "soft"; value = "99999"; }
|
||||
{ domain = "@audio"; item = "nofile"; type = "hard"; value = "99999"; }
|
||||
{ domain = "*"; item = "nofile"; type = "-"; value = "524288"; }
|
||||
{ domain = "*"; item = "memlock"; type = "-"; value = "524288"; }
|
||||
{
|
||||
domain = "@audio";
|
||||
item = "memlock";
|
||||
type = "-";
|
||||
value = "unlimited";
|
||||
}
|
||||
{
|
||||
domain = "@audio";
|
||||
item = "rtprio";
|
||||
type = "-";
|
||||
value = "99";
|
||||
}
|
||||
{
|
||||
domain = "@audio";
|
||||
item = "nofile";
|
||||
type = "soft";
|
||||
value = "99999";
|
||||
}
|
||||
{
|
||||
domain = "@audio";
|
||||
item = "nofile";
|
||||
type = "hard";
|
||||
value = "99999";
|
||||
}
|
||||
{
|
||||
domain = "*";
|
||||
item = "nofile";
|
||||
type = "-";
|
||||
value = "524288";
|
||||
}
|
||||
{
|
||||
domain = "*";
|
||||
item = "memlock";
|
||||
type = "-";
|
||||
value = "524288";
|
||||
}
|
||||
];
|
||||
polkit.enable = true;
|
||||
};
|
||||
@ -138,8 +171,8 @@
|
||||
nvidia.nvidiaSettings = true;
|
||||
nvidia.modesetting.enable = true;
|
||||
|
||||
opengl.enable = true;
|
||||
opengl.driSupport32Bit = true;
|
||||
graphics.enable = true;
|
||||
graphics.enable32Bit = true;
|
||||
|
||||
bluetooth.enable = true;
|
||||
|
||||
@ -173,10 +206,12 @@
|
||||
internalInterfaces = ["ve-+"];
|
||||
};
|
||||
|
||||
interfaces.wlo1.ipv4.addresses = [ {
|
||||
interfaces.wlo1.ipv4.addresses = [
|
||||
{
|
||||
address = "192.168.156.101";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
}
|
||||
];
|
||||
|
||||
defaultGateway = "192.168.156.1";
|
||||
nameservers = ["192.168.156.1" "8.8.8.8"];
|
||||
|
@ -1,5 +1,11 @@
|
||||
{ config, pkgs, lib, self, inputs, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
# Users
|
||||
users.users.l-nafaryus = {
|
||||
isNormalUser = true;
|
||||
@ -15,8 +21,7 @@
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.backupFileExtension = "hmbackup";
|
||||
|
||||
home-manager.users.l-nafaryus = { pkgs, ... }:
|
||||
let
|
||||
home-manager.users.l-nafaryus = {pkgs, ...}: let
|
||||
hmConfig = config.home-manager.users.l-nafaryus;
|
||||
in {
|
||||
home.stateVersion = "23.11";
|
||||
@ -37,7 +42,7 @@
|
||||
|
||||
xclip
|
||||
|
||||
(firefox.override { extraNativeMessagingHosts = [ passff-host ]; })
|
||||
(firefox.override {nativeMessagingHosts = [passff-host];})
|
||||
thunderbird
|
||||
|
||||
discord
|
||||
@ -78,10 +83,8 @@
|
||||
xtuner
|
||||
aether-lv2
|
||||
|
||||
|
||||
|
||||
qbittorrent
|
||||
transmission-qt
|
||||
transmission_3-qt
|
||||
telegram-desktop
|
||||
|
||||
onlyoffice-bin
|
||||
@ -116,6 +119,7 @@
|
||||
wl-clipboard
|
||||
cliphist
|
||||
tree
|
||||
self.packages.${pkgs.system}.bonvim
|
||||
];
|
||||
|
||||
xdg.portal = {
|
||||
@ -129,6 +133,7 @@
|
||||
];
|
||||
};
|
||||
|
||||
# Theme
|
||||
catppuccin = {
|
||||
# global, for all enabled programs
|
||||
enable = true;
|
||||
@ -145,17 +150,61 @@
|
||||
};
|
||||
|
||||
programs = {
|
||||
# General
|
||||
fish = {
|
||||
enable = true;
|
||||
interactiveShellInit = ''
|
||||
set fish_greeting
|
||||
'';
|
||||
plugins = with pkgs.fishPlugins; map (p: { name = p.pname; src = p.src; }) [
|
||||
plugins = with pkgs.fishPlugins;
|
||||
map (p: {
|
||||
name = p.pname;
|
||||
src = p.src;
|
||||
}) [
|
||||
fzf-fish
|
||||
tide # tide configure --auto --style=Lean --prompt_colors='True color' --show_time='12-hour format' --lean_prompt_height='Two lines' --prompt_connection=Disconnected --prompt_spacing=Compact --icons='Many icons' --transient=No
|
||||
tide
|
||||
grc
|
||||
hydro
|
||||
];
|
||||
functions = {
|
||||
fish-theme-configure = ''
|
||||
tide configure \
|
||||
--auto \
|
||||
--style=Lean \
|
||||
--prompt_colors='True color' \
|
||||
--show_time='12-hour format' \
|
||||
--lean_prompt_height='Two lines' \
|
||||
--prompt_connection=Disconnected \
|
||||
--prompt_spacing=Compact \
|
||||
--icons='Many icons' \
|
||||
--transient=No
|
||||
'';
|
||||
};
|
||||
};
|
||||
git = {
|
||||
enable = true;
|
||||
lfs.enable = true;
|
||||
userName = "L-Nafaryus";
|
||||
userEmail = "l.nafaryus@gmail.com";
|
||||
signing = {
|
||||
key = "86F1EA98B48FFB19";
|
||||
signByDefault = true;
|
||||
};
|
||||
extraConfig = {
|
||||
# ignore trends
|
||||
init.defaultBranch = "master";
|
||||
core = {
|
||||
quotePath = false;
|
||||
commitGraph = true;
|
||||
whitespace = "trailing-space";
|
||||
};
|
||||
receive.advertisePushOptions = true;
|
||||
gc.writeCommitGraph = true;
|
||||
diff.submodule = "log";
|
||||
};
|
||||
aliases = {
|
||||
plog = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
|
||||
};
|
||||
};
|
||||
bat.enable = true;
|
||||
btop = {
|
||||
@ -175,6 +224,8 @@
|
||||
mutableTrust = true;
|
||||
};
|
||||
|
||||
# Graphical
|
||||
|
||||
alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
@ -192,7 +243,9 @@
|
||||
show-icons = true;
|
||||
disable-history = false;
|
||||
};
|
||||
theme = let inherit (hmConfig.lib.formats.rasi) mkLiteral; in {
|
||||
theme = let
|
||||
inherit (hmConfig.lib.formats.rasi) mkLiteral;
|
||||
in {
|
||||
"*" = {
|
||||
border-col = mkLiteral "#a6da95";
|
||||
};
|
||||
@ -215,6 +268,7 @@
|
||||
};
|
||||
|
||||
services = {
|
||||
# General
|
||||
gpg-agent = {
|
||||
enable = true;
|
||||
defaultCacheTtl = 3600;
|
||||
@ -225,6 +279,7 @@
|
||||
enableBashIntegration = true;
|
||||
};
|
||||
|
||||
# Graphical
|
||||
hypridle = {
|
||||
enable = true;
|
||||
settings = {
|
||||
@ -243,13 +298,218 @@
|
||||
};
|
||||
};
|
||||
|
||||
# ---
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
settings = {
|
||||
# Devices (use `hyprctl devices`)
|
||||
"$monitor1" = "AOC Q27G2G3R3B 137P4HA000540";
|
||||
"$monitor2" = "AOC Q27B3MA 17ZPAHA006135";
|
||||
"$keyboard" = "keychron-keychron-k3-pro";
|
||||
"$mouse" = "logitech-g102-lightsync-gaming-mouse";
|
||||
|
||||
# Main programs
|
||||
"$terminal" = "${lib.getExe hmConfig.programs.alacritty.package}";
|
||||
"$menu" = "${lib.getExe hmConfig.programs.rofi.package} -show drun";
|
||||
"$fileManager" = "$terminal -e ${lib.getExe pkgs.nnn}";
|
||||
|
||||
monitor = [
|
||||
"desc:$monitor2, 2560x1440@75, 0x0, auto"
|
||||
"desc:$monitor1, 2560x1440@165, 2560x0, auto"
|
||||
"Unknown-1, disable"
|
||||
];
|
||||
|
||||
exec-once = [
|
||||
"eww daemon"
|
||||
"nm-applet --indicator &"
|
||||
"blueman-applet &"
|
||||
"wl-gammarelay-rs run &"
|
||||
"systemctl --user start hypridle"
|
||||
"wl-paste --type text --watch cliphist store" #Stores only text data
|
||||
"wl-paste --type image --watch cliphist store" #Stores only image data
|
||||
"swww-daemon & swww img ~/Pictures/wallpapers/emily-in-the-cyberpunk-city.3840x2160.png & swww img ~/Pictures/wallpapers/emily-in-the-cyberpunk-city.3840x2160a.gif"
|
||||
];
|
||||
|
||||
env = [
|
||||
"XCURSOR_SIZE,16"
|
||||
"HYPRCURSOR_SIZE,16"
|
||||
"WLR_DRM_NO_ATOMIC,1"
|
||||
];
|
||||
|
||||
general = {
|
||||
gaps_in = 2;
|
||||
gaps_out = 2;
|
||||
|
||||
border_size = 2;
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
||||
"col.inactive_border" = "rgba(595959aa)";
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = true;
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = true;
|
||||
|
||||
layout = "dwindle";
|
||||
};
|
||||
decoration = {
|
||||
rounding = 5;
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0;
|
||||
inactive_opacity = 0.95;
|
||||
|
||||
drop_shadow = true;
|
||||
shadow_range = 4;
|
||||
shadow_render_power = 3;
|
||||
"col.shadow" = "rgba(1a1a1aee)";
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 3;
|
||||
passes = 1;
|
||||
|
||||
vibrancy = 0.1696;
|
||||
};
|
||||
};
|
||||
animations = {
|
||||
enabled = true;
|
||||
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||
|
||||
animation = [
|
||||
"windows, 1, 7, myBezier"
|
||||
"windowsOut, 1, 7, default, popin 80%"
|
||||
"border, 1, 10, default"
|
||||
"borderangle, 1, 8, default"
|
||||
"fade, 1, 7, default"
|
||||
"workspaces, 1, 6, default"
|
||||
];
|
||||
};
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle = {
|
||||
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true; # You probably want this
|
||||
};
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master = {
|
||||
new_status = "master";
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc = {
|
||||
force_default_wallpaper = -1; # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false; # Enable the random hyprland logo / anime girl background. :)
|
||||
};
|
||||
input = {
|
||||
kb_layout = "us,ru";
|
||||
|
||||
follow_mouse = 1;
|
||||
|
||||
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = false;
|
||||
};
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures = {
|
||||
workspace_swipe = false;
|
||||
};
|
||||
|
||||
windowrulev2 = [
|
||||
"suppressevent maximize, class:.*" # You'll probably like this.
|
||||
"float, class:^(steam_app.*)$"
|
||||
"immediate, class:^(steam_app.*)$"
|
||||
"float, class:^(steam_proton.*)$"
|
||||
];
|
||||
bind = [
|
||||
"SUPER, Q, exec, $terminal"
|
||||
"SUPER, N, exec, $fileManager"
|
||||
"SUPER, R, exec, $menu"
|
||||
"SUPER, P, exec, eww open --toggle basemenu"
|
||||
|
||||
"SUPER, C, killactive,"
|
||||
"SUPER, M, exit,"
|
||||
"SUPER, V, togglefloating,"
|
||||
"SUPER, F, fullscreen,"
|
||||
"SUPER, J, togglesplit," # dwindle
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
"SUPER, left, movefocus, l"
|
||||
"SUPER, right, movefocus, r"
|
||||
"SUPER, up, movefocus, u"
|
||||
"SUPER, down, movefocus, d"
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
"SUPER, 1, workspace, 1"
|
||||
"SUPER, 2, workspace, 2"
|
||||
"SUPER, 3, workspace, 3"
|
||||
"SUPER, 4, workspace, 4"
|
||||
"SUPER, 5, workspace, 5"
|
||||
"SUPER, 6, workspace, 6"
|
||||
"SUPER, 7, workspace, 7"
|
||||
"SUPER, 8, workspace, 8"
|
||||
"SUPER, 9, workspace, 9"
|
||||
"SUPER, 0, workspace, 10"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"SUPER SHIFT, 1, movetoworkspace, 1"
|
||||
"SUPER SHIFT, 2, movetoworkspace, 2"
|
||||
"SUPER SHIFT, 3, movetoworkspace, 3"
|
||||
"SUPER SHIFT, 4, movetoworkspace, 4"
|
||||
"SUPER SHIFT, 5, movetoworkspace, 5"
|
||||
"SUPER SHIFT, 6, movetoworkspace, 6"
|
||||
"SUPER SHIFT, 7, movetoworkspace, 7"
|
||||
"SUPER SHIFT, 8, movetoworkspace, 8"
|
||||
"SUPER SHIFT, 9, movetoworkspace, 9"
|
||||
"SUPER SHIFT, 0, movetoworkspace, 10"
|
||||
|
||||
# special workspace (scratchpad)
|
||||
"SUPER, S, togglespecialworkspace, magic"
|
||||
"SUPER SHIFT, S, movetoworkspace, special:magic"
|
||||
|
||||
"SUPER, SPACE, exec, hyprctl switchxkblayout keychron-keychron-k3-pro next"
|
||||
", PRINT, exec, hyprshot -m region"
|
||||
"SUPER, H, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy"
|
||||
];
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = [
|
||||
"SUPER, mouse:272, movewindow"
|
||||
"SUPER, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
bindel = [
|
||||
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
|
||||
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||
];
|
||||
bindl = [
|
||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
", XF86AudioPrev, exec, playerctl previous"
|
||||
", XF86AudioPlay, exec, playerctl play-pause"
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86MonBrightnessDown, exec, busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateTemperature n -500"
|
||||
", XF86MonBrightnessUp, exec, busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateTemperature n +500"
|
||||
"SUPER, XF86MonBrightnessDown, exec, busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay Brightness d -0.1"
|
||||
"SUPER, XF86MonBrightnessUp, exec, busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay Brightness d +0.1"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# XDG
|
||||
xdg = {
|
||||
enable = true;
|
||||
mime.enable = true;
|
||||
userDirs.enable = true;
|
||||
};
|
||||
|
||||
# dconf
|
||||
dconf.settings = {
|
||||
"org/virt-manager/virt-manager/connections" = {
|
||||
autoconnect = ["qemu:///system"];
|
||||
@ -260,34 +520,16 @@
|
||||
home.sessionVariables = {
|
||||
HYPRSHOT_DIR = "${hmConfig.xdg.userDirs.pictures}/screenshots";
|
||||
};
|
||||
|
||||
home.file = {
|
||||
#"gnupg/gpg-agent.conf".text = ''
|
||||
# default-cache-ttl 3600
|
||||
# pinentry-program ${pkgs.pinentry.gtk2}/bin/pinentry
|
||||
#'';
|
||||
|
||||
".config/git/config".source = "${config.bonfire.configDir}/git/config";
|
||||
|
||||
".config/nvim" = {
|
||||
source = "${config.bonfire.configDir}/nvim";
|
||||
recursive = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
#programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# pinentryPackage = pkgs.pinentry-gnome3;
|
||||
#};
|
||||
|
||||
environment.variables = let
|
||||
makePluginPath = name: (lib.makeSearchPath name [
|
||||
makePluginPath = name:
|
||||
(lib.makeSearchPath name [
|
||||
"/etc/profiles/per-user/$USER/lib"
|
||||
"/run/current-system/sw/lib"
|
||||
"$HOME/.nix-profile/lib"
|
||||
]) + ":$HOME/.${name}";
|
||||
])
|
||||
+ ":$HOME/.${name}";
|
||||
in {
|
||||
LADSPA_PATH = makePluginPath "ladspa";
|
||||
LV2_PATH = makePluginPath "lv2";
|
||||
@ -304,8 +546,6 @@
|
||||
|
||||
programs.virt-manager.enable = true;
|
||||
|
||||
|
||||
|
||||
# Services
|
||||
services.spoofdpi.enable = true;
|
||||
}
|
||||
|
@ -1,12 +1,18 @@
|
||||
{ config, pkgs, lib, self, ... }:
|
||||
let bonfire-pkgs = self.packages.${pkgs.system};
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
self,
|
||||
...
|
||||
}: let
|
||||
bonfire-pkgs = self.packages.${pkgs.system};
|
||||
in {
|
||||
system.stateVersion = "23.11";
|
||||
|
||||
imports = [
|
||||
./hardware.nix
|
||||
./users.nix
|
||||
./services/papermc.nix
|
||||
# ./services/papermc.nix # disabled
|
||||
./services/gitea.nix
|
||||
];
|
||||
|
||||
@ -15,12 +21,19 @@ in {
|
||||
settings = {
|
||||
experimental-features = ["nix-command" "flakes"];
|
||||
trusted-users = ["l-nafaryus"];
|
||||
allowed-users = [ "l-nafaryus" ];
|
||||
allowed-users = ["l-nafaryus" "hydra"];
|
||||
substituters = ["https://nix-community.cachix.org"];
|
||||
trusted-public-keys = [
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
];
|
||||
auto-optimise-store = true;
|
||||
allowed-uris = [
|
||||
"github:"
|
||||
"git+https://github.com/"
|
||||
"git+ssh://github.com/"
|
||||
"git+https://vcs.elnafo.ru/"
|
||||
"git+ssh://vcs.elnafo.ru/"
|
||||
];
|
||||
};
|
||||
gc = {
|
||||
automatic = lib.mkDefault true;
|
||||
@ -34,10 +47,6 @@ in {
|
||||
hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
config.allowUnfree = true;
|
||||
config.cudaSupport = false;
|
||||
|
||||
config.packageOverrides = super: {
|
||||
lego = bonfire-pkgs.lego;
|
||||
};
|
||||
};
|
||||
|
||||
# Services
|
||||
@ -122,6 +131,12 @@ in {
|
||||
useACMEHost = "elnafo.ru";
|
||||
locations."/".root = "${bonfire-pkgs.bonfire-docs}";
|
||||
};
|
||||
|
||||
"hydra.elnafo.ru" = {
|
||||
forceSSL = true;
|
||||
useACMEHost = "elnafo.ru";
|
||||
locations."/".proxyPass = "http://127.0.0.1:3000";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@ -196,6 +211,17 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
services.hydra = {
|
||||
enable = true;
|
||||
listenHost = "127.0.0.1";
|
||||
port = 3000;
|
||||
hydraURL = "http://127.0.0.1:3000";
|
||||
smtpHost = "elnafo.ru";
|
||||
useSubstitutes = true;
|
||||
notificationSender = "hydra@elnafo.ru";
|
||||
buildMachinesFiles = [];
|
||||
};
|
||||
|
||||
# Packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
wget
|
||||
|
@ -1,5 +1,8 @@
|
||||
{ config, lib, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
# Boot
|
||||
boot = {
|
||||
loader.systemd-boot.enable = true;
|
||||
@ -139,10 +142,12 @@
|
||||
|
||||
interfaces.enp9s0 = {
|
||||
useDHCP = false;
|
||||
ipv4.addresses = [ {
|
||||
ipv4.addresses = [
|
||||
{
|
||||
address = "192.168.156.102";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
defaultGateway = "192.168.156.1";
|
||||
|
@ -1,5 +1,4 @@
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
authentication = ''
|
||||
@ -103,5 +102,4 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (pkgs) stdenv fetchurl;
|
||||
|
||||
playerlist = [
|
||||
@ -176,9 +180,17 @@ let
|
||||
};
|
||||
|
||||
plugins = [
|
||||
passky grimAnticheat viaVersion directionHUD miniMOTD skinsRestorer squaremap stargate chunky xclaim
|
||||
passky
|
||||
grimAnticheat
|
||||
viaVersion
|
||||
directionHUD
|
||||
miniMOTD
|
||||
skinsRestorer
|
||||
squaremap
|
||||
stargate
|
||||
chunky
|
||||
xclaim
|
||||
];
|
||||
|
||||
in {
|
||||
services.papermc = {
|
||||
enable = true;
|
||||
@ -202,9 +214,12 @@ in {
|
||||
rconPasswordFile = config.sops.secrets."papermc/rcon".path;
|
||||
whitelist = whitelist;
|
||||
ops = operators;
|
||||
extraPreStart = ''
|
||||
extraPreStart =
|
||||
''
|
||||
mkdir -p ${builtins.concatStringsSep " " (map (v: "plugins/${v.pname}") plugins)}
|
||||
'' + builtins.concatStringsSep "\n" (map (v: "ln -sf ${v.outPath}/bin/${v.pname}.jar plugins/") plugins) + ''
|
||||
''
|
||||
+ builtins.concatStringsSep "\n" (map (v: "ln -sf ${v.outPath}/bin/${v.pname}.jar plugins/") plugins)
|
||||
+ ''
|
||||
|
||||
ln -sf ${config.bonfire.configDir}/goodomens/plugins/MiniMOTD/main.conf plugins/MiniMOTD/
|
||||
mkdir -p plugins/MiniMOTD/icons
|
||||
|
@ -1,5 +1,9 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
# Users
|
||||
users.users.root.hashedPasswordFile = config.sops.secrets."users/root".path;
|
||||
|
||||
|
@ -1,5 +1,9 @@
|
||||
{ lib, check ? true, self, ... }:
|
||||
rec {
|
||||
{
|
||||
lib,
|
||||
check ? true,
|
||||
self,
|
||||
...
|
||||
}: rec {
|
||||
modules = [
|
||||
./misc/bonfire/default.nix
|
||||
./services/papermc.nix
|
||||
@ -7,8 +11,11 @@ rec {
|
||||
./services/spoofdpi.nix
|
||||
];
|
||||
|
||||
configModule = { config, pkgs, ... }: {
|
||||
|
||||
configModule = {
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
config = {
|
||||
# Module type checking
|
||||
_module.check = check;
|
||||
|
@ -1,6 +1,10 @@
|
||||
{ config, lib, ... }:
|
||||
with lib;
|
||||
let cfg = config.bonfire;
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.bonfire;
|
||||
in {
|
||||
options = {
|
||||
bonfire = {
|
||||
@ -31,15 +35,17 @@ in {
|
||||
};
|
||||
|
||||
config = {
|
||||
assertions = mkIf cfg.withSecrets [{
|
||||
assertion = (builtins.pathExists ./secrets/default.nix);
|
||||
assertions = mkIf cfg.withSecrets [
|
||||
{
|
||||
assertion = builtins.pathExists ./secrets/default.nix;
|
||||
message = "Missed git submodule 'bonfire-secrets'";
|
||||
}];
|
||||
}
|
||||
];
|
||||
|
||||
environment.sessionVariables = {
|
||||
BONFIRE_HOME = cfg.home;
|
||||
};
|
||||
|
||||
bonfire.secrets = mkIf cfg.withSecrets (import ./secrets { inherit config; });
|
||||
bonfire.secrets = mkIf cfg.withSecrets (import ./secrets {inherit config lib;});
|
||||
};
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
{ config }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
}: {
|
||||
catarina = {
|
||||
sops = {
|
||||
defaultSopsFile = ./catarina.yaml;
|
||||
@ -10,18 +12,30 @@
|
||||
"users/root" = {neededForUsers = true;};
|
||||
"users/l-nafaryus" = {neededForUsers = true;};
|
||||
|
||||
"database/git" = { owner = "git"; group = "gitea"; };
|
||||
"database/git" = {
|
||||
owner = "git";
|
||||
group = "gitea";
|
||||
};
|
||||
|
||||
"mail/l-nafaryus" = {};
|
||||
"mail/git" = {};
|
||||
"mail/kirill" = {};
|
||||
|
||||
"gitea/mail" = { owner = "git"; group = "gitea"; };
|
||||
"gitea/mail" = {
|
||||
owner = "git";
|
||||
group = "gitea";
|
||||
};
|
||||
"gitea-runner/master-token" = {};
|
||||
|
||||
"papermc/rcon" = { owner = "papermc"; group = "papermc"; };
|
||||
"papermc/rcon" = lib.mkIf config.services.papermc.enable {
|
||||
owner = "papermc";
|
||||
group = "papermc";
|
||||
};
|
||||
|
||||
discordToken = { owner = "oscuro"; group = "oscuro"; };
|
||||
discordToken = {
|
||||
owner = "oscuro";
|
||||
group = "oscuro";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1,6 +1,10 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
let
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.services.papermc;
|
||||
|
||||
eulaFile = builtins.toFile "eula.txt" ''
|
||||
@ -8,22 +12,32 @@ let
|
||||
eula=true
|
||||
'';
|
||||
|
||||
whitelistFile = pkgs.writeText "whitelist.json"
|
||||
whitelistFile =
|
||||
pkgs.writeText "whitelist.json"
|
||||
(builtins.toJSON cfg.whitelist);
|
||||
|
||||
opsFile = pkgs.writeText "ops.json"
|
||||
opsFile =
|
||||
pkgs.writeText "ops.json"
|
||||
(builtins.toJSON cfg.ops);
|
||||
|
||||
cfgToString = v: if builtins.isBool v then boolToString v else toString v;
|
||||
cfgToString = v:
|
||||
if builtins.isBool v
|
||||
then boolToString v
|
||||
else toString v;
|
||||
|
||||
serverPropertiesFile = let
|
||||
serverProperties' = if (cfg.rconPasswordFile == null) then cfg.serverProperties else
|
||||
(removeAttrs cfg.serverProperties [ "rcon.password" ]);
|
||||
in pkgs.writeText "server.properties" (''
|
||||
serverProperties' =
|
||||
if (cfg.rconPasswordFile == null)
|
||||
then cfg.serverProperties
|
||||
else (removeAttrs cfg.serverProperties ["rcon.password"]);
|
||||
in
|
||||
pkgs.writeText "server.properties" (''
|
||||
# server.properties managed by NixOS configuration
|
||||
'' + concatStringsSep "\n" (mapAttrsToList
|
||||
(n: v: "${n}=${cfgToString v}") serverProperties') +
|
||||
lib.optionalString (cfg.rconPasswordFile != null) "\nrcon.password=#rconpass#");
|
||||
''
|
||||
+ concatStringsSep "\n" (mapAttrsToList
|
||||
(n: v: "${n}=${cfgToString v}")
|
||||
serverProperties')
|
||||
+ lib.optionalString (cfg.rconPasswordFile != null) "\nrcon.password=#rconpass#");
|
||||
|
||||
stopScript = pkgs.writeShellScript "minecraft-server-stop" ''
|
||||
echo stop > ${config.systemd.sockets.papermc.socketConfig.ListenFIFO}
|
||||
@ -39,14 +53,15 @@ let
|
||||
|
||||
serverPort = cfg.serverProperties.server-port or defaultServerPort;
|
||||
|
||||
rconPort = if cfg.serverProperties.enable-rcon or false
|
||||
rconPort =
|
||||
if cfg.serverProperties.enable-rcon or false
|
||||
then cfg.serverProperties."rcon.port" or 25575
|
||||
else null;
|
||||
|
||||
queryPort = if cfg.serverProperties.enable-query or false
|
||||
queryPort =
|
||||
if cfg.serverProperties.enable-query or false
|
||||
then cfg.serverProperties."query.port" or 25565
|
||||
else null;
|
||||
|
||||
in {
|
||||
options.services.papermc = {
|
||||
enable = mkEnableOption "PaperMC service";
|
||||
@ -127,7 +142,8 @@ in {
|
||||
type = types.separatedString " ";
|
||||
default = "-Xmx2048M -Xms2048M";
|
||||
# Example options from https://minecraft.gamepedia.com/Tutorials/Server_startup_script
|
||||
example = "-Xms4092M -Xmx4092M -XX:+UseG1GC -XX:+CMSIncrementalPacing "
|
||||
example =
|
||||
"-Xms4092M -Xmx4092M -XX:+UseG1GC -XX:+CMSIncrementalPacing "
|
||||
+ "-XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=2 "
|
||||
+ "-XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10";
|
||||
description = "JVM options for the Minecraft server.";
|
||||
@ -204,7 +220,8 @@ in {
|
||||
|
||||
preStart = let
|
||||
replaceSecretBin = "${pkgs.replace-secret}/bin/replace-secret";
|
||||
in ''
|
||||
in
|
||||
''
|
||||
ln -sf ${eulaFile} eula.txt
|
||||
|
||||
cp -b --suffix=.stateful ${whitelistFile} whitelist.json
|
||||
@ -216,19 +233,23 @@ in {
|
||||
${lib.optionalString (cfg.rconPasswordFile != null) ''
|
||||
${replaceSecretBin} '#rconpass#' '${cfg.rconPasswordFile}' server.properties
|
||||
''}
|
||||
'' + cfg.extraPreStart;
|
||||
''
|
||||
+ cfg.extraPreStart;
|
||||
};
|
||||
|
||||
networking.firewall = mkIf cfg.openFirewall ({
|
||||
networking.firewall = mkIf cfg.openFirewall {
|
||||
allowedUDPPorts = [serverPort];
|
||||
allowedTCPPorts = [ serverPort ]
|
||||
allowedTCPPorts =
|
||||
[serverPort]
|
||||
++ optional (queryPort != null) queryPort
|
||||
++ optional (rconPort != null) rconPort;
|
||||
});
|
||||
};
|
||||
|
||||
assertions = [
|
||||
{ assertion = cfg.eula;
|
||||
message = "You must agree to Mojangs EULA to run minecraft-server."
|
||||
{
|
||||
assertion = cfg.eula;
|
||||
message =
|
||||
"You must agree to Mojangs EULA to run minecraft-server."
|
||||
+ " Read https://account.mojang.com/documents/minecraft_eula and"
|
||||
+ " set `services.minecraft-server.eula` to `true` if you agree.";
|
||||
}
|
||||
|
@ -1,6 +1,10 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
let
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.services.qbittorrent-nox;
|
||||
in {
|
||||
options.services.qbittorrent-nox = {
|
||||
@ -113,7 +117,6 @@ in {
|
||||
RemoveIPC = true;
|
||||
PrivateMounts = true;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -1,6 +1,10 @@
|
||||
{ config, lib, bonpkgs, ... }:
|
||||
with lib;
|
||||
let
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
bonpkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.services.spoofdpi;
|
||||
in {
|
||||
options.services.spoofdpi = {
|
||||
|
@ -3,8 +3,7 @@
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
}: let
|
||||
version = bonfire.shortRev or bonfire.dirtyShortRev or "unknown";
|
||||
projectPath = ../../.;
|
||||
modulesPath = ../../nixosModules;
|
||||
@ -21,17 +20,27 @@ let
|
||||
];
|
||||
|
||||
formatDeclaration = declaration:
|
||||
if lib.hasPrefix (toString modulesPath) (toString declaration) then
|
||||
let subpath = lib.removePrefix (toString projectPath + "/") (toString declaration);
|
||||
in map ({ hostname, url }: {
|
||||
if lib.hasPrefix (toString modulesPath) (toString declaration)
|
||||
then let
|
||||
subpath = lib.removePrefix (toString projectPath + "/") (toString declaration);
|
||||
in
|
||||
map ({
|
||||
hostname,
|
||||
url,
|
||||
}: {
|
||||
url = "${url}/${subpath}";
|
||||
name = "<${hostname}:bonfire/${subpath}>";
|
||||
}) links
|
||||
})
|
||||
links
|
||||
else
|
||||
# skip external declarations
|
||||
lib.singleton declaration;
|
||||
|
||||
nixosModules = (import modulesPath { inherit lib; self = bonfire; check = false; });
|
||||
nixosModules = import modulesPath {
|
||||
inherit lib;
|
||||
self = bonfire;
|
||||
check = false;
|
||||
};
|
||||
|
||||
evaluatedModules = lib.evalModules {
|
||||
modules = nixosModules.modules ++ [nixosModules.configModule];
|
||||
@ -43,10 +52,12 @@ let
|
||||
"system"
|
||||
];
|
||||
|
||||
transformOptions = option: option // {
|
||||
transformOptions = option:
|
||||
option
|
||||
// {
|
||||
declarations = lib.unique (
|
||||
lib.flatten (map (declaration: formatDeclaration declaration) option.declarations) ++
|
||||
option.declarations
|
||||
lib.flatten (map (declaration: formatDeclaration declaration) option.declarations)
|
||||
++ option.declarations
|
||||
);
|
||||
};
|
||||
documentType = "none";
|
||||
@ -57,20 +68,30 @@ let
|
||||
derivations = lib.flatten (
|
||||
map (packages: (
|
||||
map (name: packages.${name}) (builtins.attrNames packages)
|
||||
)) (map (system: bonfire.packages.${system}) systems));
|
||||
|
||||
renderMaintainers = maintainers: lib.concatStringsSep ", " (
|
||||
let
|
||||
maintainer = mt: if mt?github then "[${mt.name}](https://github.com/${mt.github})" else mt.name;
|
||||
email = mt: if mt?email then "<[${mt.email}](mailto:${mt.email})>" else "";
|
||||
in map (mt: maintainer mt + email mt) maintainers
|
||||
)) (map (system: bonfire.packages.${system}) systems)
|
||||
);
|
||||
|
||||
renderPlatforms = platforms: if platforms != lib.platforms.none then
|
||||
if platforms == lib.platforms.all then
|
||||
"all"
|
||||
else
|
||||
lib.concatStringsSep ", " (map (platform: "__${platform}__") platforms)
|
||||
renderMaintainers = maintainers:
|
||||
lib.concatStringsSep ", " (
|
||||
let
|
||||
maintainer = mt:
|
||||
if mt ? github
|
||||
then "[${mt.name}](https://github.com/${mt.github})"
|
||||
else mt.name;
|
||||
email = mt:
|
||||
if mt ? email
|
||||
then "<[${mt.email}](mailto:${mt.email})>"
|
||||
else "";
|
||||
in
|
||||
map (mt: maintainer mt + email mt) maintainers
|
||||
);
|
||||
|
||||
renderPlatforms = platforms:
|
||||
if platforms != lib.platforms.none
|
||||
then
|
||||
if platforms == lib.platforms.all
|
||||
then "all"
|
||||
else lib.concatStringsSep ", " (map (platform: "__${platform}__") platforms)
|
||||
else "";
|
||||
|
||||
renderPackage = drv: ''
|
||||
@ -104,17 +125,26 @@ let
|
||||
|
||||
${lib.optionalString (drv.fromImage != null) "From: __${drv.fromImage.imageName}__"}
|
||||
|
||||
${lib.optionalString (drv.meta?license) "License: ${if lib.isList drv.meta.license then (map (license: "[${drv.meta.license.fullName}](${drv.meta.license.url})") drv.meta.license) else "[${drv.meta.license.fullName}](${drv.meta.license.url})"}"}
|
||||
${lib.optionalString (drv.meta ? license) "License: ${
|
||||
if lib.isList drv.meta.license
|
||||
then (map (license: "[${drv.meta.license.fullName}](${drv.meta.license.url})") drv.meta.license)
|
||||
else "[${drv.meta.license.fullName}](${drv.meta.license.url})"
|
||||
}"}
|
||||
|
||||
${lib.optionalString (drv.meta ? maintainers) "Maintainers: ${renderMaintainers drv.meta.maintainers}"}
|
||||
|
||||
${lib.optionalString (drv.meta ? platforms) "Platforms: ${renderPlatforms drv.meta.platforms}"}
|
||||
'';
|
||||
|
||||
packagesDoc = pkgs.writeText "packages.md"
|
||||
packagesDoc =
|
||||
pkgs.writeText "packages.md"
|
||||
(lib.concatStringsSep "\n" (map (drv:
|
||||
if drv?imageTag then renderImage drv else renderPackage drv) derivations));
|
||||
|
||||
if drv ? imageTag
|
||||
then renderImage drv
|
||||
else if drv ? pname
|
||||
then renderPackage drv
|
||||
else "")
|
||||
derivations));
|
||||
in
|
||||
pkgs.stdenvNoCC.mkDerivation {
|
||||
pname = "bonfire-docs";
|
||||
@ -164,4 +194,3 @@ pkgs.stdenvNoCC.mkDerivation {
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
||||
|
||||
|
16
packages/bonvim/default.nix
Normal file
16
packages/bonvim/default.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
pkgs,
|
||||
nixvim-pkgs,
|
||||
bonconfigs,
|
||||
fenix-pkgs,
|
||||
...
|
||||
}:
|
||||
nixvim-pkgs.makeNixvimWithModule {
|
||||
pkgs = pkgs;
|
||||
module = import bonconfigs.bonvim;
|
||||
extraSpecialArgs = {
|
||||
rustc = fenix-pkgs.complete.rustc;
|
||||
cargo = fenix-pkgs.complete.cargo;
|
||||
rust-analyzer = fenix-pkgs.complete.rust-analyzer;
|
||||
};
|
||||
}
|
@ -6,8 +6,8 @@
|
||||
version ? "v0.44.0",
|
||||
hash ? "sha256-3u2GWgDQpa4sU/66vS6S+JwCEL/fvy8MTsATRs7RGVs=",
|
||||
...
|
||||
}:
|
||||
let pkg = {
|
||||
}: let
|
||||
pkg = {
|
||||
pname = "cargo-shuttle";
|
||||
inherit version;
|
||||
|
||||
@ -37,7 +37,9 @@ let pkg = {
|
||||
maintainers = with bonfire.lib.maintainers; [L-Nafaryus];
|
||||
};
|
||||
};
|
||||
in let cargoArtifacts = crane-lib.buildDepsOnly pkg;
|
||||
in crane-lib.buildPackage (
|
||||
in let
|
||||
cargoArtifacts = crane-lib.buildDepsOnly pkg;
|
||||
in
|
||||
crane-lib.buildPackage (
|
||||
pkg // {inherit cargoArtifacts;}
|
||||
)
|
||||
|
@ -1,8 +1,11 @@
|
||||
{
|
||||
bonfire,
|
||||
stdenv, lib, pkgs,
|
||||
stdenv,
|
||||
lib,
|
||||
pkgs,
|
||||
version ? "1.10.0",
|
||||
sha256 ? "sha256-36GAGfvHZyNZe/Z7o3VrCCwApkZpJ+r2E8+1Hy32G5Q=", ...
|
||||
sha256 ? "sha256-36GAGfvHZyNZe/Z7o3VrCCwApkZpJ+r2E8+1Hy32G5Q=",
|
||||
...
|
||||
}:
|
||||
pkgs.python3.pkgs.buildPythonPackage {
|
||||
pname = "dearpygui";
|
||||
|
@ -1,24 +1,29 @@
|
||||
# self.packages.${system}
|
||||
#
|
||||
{ self, nixpkgs, ... }:
|
||||
let
|
||||
forAllSystems = nixpkgs.lib.genAttrs [ "x86_64-linux" ];
|
||||
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
|
||||
|
||||
in forAllSystems(system:
|
||||
let
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
forAllSystems = inputs.nixpkgs.lib.genAttrs ["x86_64-linux"];
|
||||
nixpkgsFor = forAllSystems (system: import inputs.nixpkgs {inherit system;});
|
||||
in
|
||||
forAllSystems (system: let
|
||||
pkgs = nixpkgsFor.${system};
|
||||
|
||||
bonfire = self;
|
||||
bonlib = self.lib;
|
||||
bonpkgs = self.packages.${system};
|
||||
bonconfigs = self.configurations;
|
||||
|
||||
crane = self.inputs.crane;
|
||||
crane-lib = self.inputs.crane.mkLib pkgs;
|
||||
|
||||
fenix = self.inputs.fenix;
|
||||
in {
|
||||
fenix-pkgs = self.inputs.fenix.packages.${system};
|
||||
|
||||
nixvim-pkgs = self.inputs.nixvim.legacyPackages.${system};
|
||||
in {
|
||||
bonfire-docs = pkgs.callPackage ./bonfire-docs {inherit bonfire;};
|
||||
|
||||
netgen = pkgs.callPackage ./netgen {inherit bonfire;};
|
||||
@ -38,5 +43,6 @@ in forAllSystems(system:
|
||||
nix-minimal = pkgs.callPackage ./nix-minimal {inherit bonpkgs bonlib;};
|
||||
|
||||
nix-runner = pkgs.callPackage ./nix-runner {inherit bonpkgs bonlib;};
|
||||
|
||||
bonvim = import ./bonvim {inherit nixvim-pkgs pkgs bonconfigs fenix-pkgs;};
|
||||
})
|
||||
# map (ps: (map (p: { name = p; systems = [ ps.${p}.system ]; type = if ps.${p}?imageTag then "image" else "package"; }) (builtins.attrNames ps))) (map (s: bf.packages.${s}) (builtins.attrNames bf.packages))
|
||||
|
@ -1,10 +1,13 @@
|
||||
{
|
||||
bonfire,
|
||||
lib,
|
||||
fetchFromGitHub, buildGoModule, nixosTests,
|
||||
fetchFromGitHub,
|
||||
buildGoModule,
|
||||
nixosTests,
|
||||
version ? "c847ac4a4c55d6a5a457f6ef494cf45a47299e01",
|
||||
hash ? "sha256-g9OxhM+iNUrAZgM1we8qPsismPy5a0eN654tSYuM/No=",
|
||||
vendorHash ? "sha256-wG0x86lptEY3x+7kVN7v1XZniliMOxaJ6Y95YS6ivJY=", ...
|
||||
vendorHash ? "sha256-wG0x86lptEY3x+7kVN7v1XZniliMOxaJ6Y95YS6ivJY=",
|
||||
...
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = "lego";
|
||||
|
@ -1,10 +1,13 @@
|
||||
{
|
||||
bonfire,
|
||||
stdenv, lib, pkgs,
|
||||
stdenv,
|
||||
lib,
|
||||
pkgs,
|
||||
version ? "6.2.2402",
|
||||
sha256 ? "sha256-o3cj5k2VtYiGcs9Z9FyfwtOpDlZZlcO3kRgBSer6KAw=", ...
|
||||
}:
|
||||
let pkg = stdenv.mkDerivation {
|
||||
sha256 ? "sha256-o3cj5k2VtYiGcs9Z9FyfwtOpDlZZlcO3kRgBSer6KAw=",
|
||||
...
|
||||
}: let
|
||||
pkg = stdenv.mkDerivation {
|
||||
pname = "netgen";
|
||||
inherit version;
|
||||
|
||||
@ -35,7 +38,8 @@ let pkg = stdenv.mkDerivation {
|
||||
cmake
|
||||
ninja
|
||||
git
|
||||
(python3.withPackages (ps: with ps; [
|
||||
(python3.withPackages (ps:
|
||||
with ps; [
|
||||
pybind11
|
||||
mpi4py
|
||||
]))
|
||||
@ -69,4 +73,5 @@ let pkg = stdenv.mkDerivation {
|
||||
broken = pkgs.stdenv.isDarwin;
|
||||
};
|
||||
};
|
||||
in pkg
|
||||
in
|
||||
pkg
|
||||
|
@ -4,24 +4,32 @@
|
||||
bonlib,
|
||||
extraPaths ? [],
|
||||
...
|
||||
}:
|
||||
let
|
||||
}: let
|
||||
nixPath = pkgs.writeText "nixpkgsError" '' _: throw '''
|
||||
This container doesn't include nixpkgs.
|
||||
Hint: override the NIX_PATH environment variable with eg:
|
||||
"NIX_PATH=nixpkgs=channel:nixos-unstable"
|
||||
''' '';
|
||||
|
||||
builderIds = let forEach = n: if n == 1 then [n] else [n] ++ forEach (n - 1); in forEach 32;
|
||||
builderIds = let
|
||||
forEach = n:
|
||||
if n == 1
|
||||
then [n]
|
||||
else [n] ++ forEach (n - 1);
|
||||
in
|
||||
forEach 32;
|
||||
|
||||
withFakeNss = with pkgs; [
|
||||
(writeTextDir "etc/passwd" (
|
||||
builtins.concatStringsSep "\n" (
|
||||
map (n: "nixbld${toString n}:x:${toString (30000 + n)}:30000:Nix build user ${toString n}:/var/empty:/bin/false") builderIds)
|
||||
+ "\n" + ''
|
||||
map (n: "nixbld${toString n}:x:${toString (30000 + n)}:30000:Nix build user ${toString n}:/var/empty:/bin/false") builderIds
|
||||
)
|
||||
+ "\n"
|
||||
+ ''
|
||||
root:x:0:0:System administrator:/root:${bashInteractive}/bin/bash
|
||||
nobody:x:65534:65534:Unprivileged account (don't use!):/var/empty:${shadow}/bin/nologin
|
||||
''))
|
||||
''
|
||||
))
|
||||
|
||||
(writeTextDir "etc/group" ''
|
||||
root:x:0:
|
||||
@ -71,15 +79,16 @@ let
|
||||
trusted-users = root
|
||||
'')
|
||||
];
|
||||
|
||||
in pkgs.dockerTools.buildImageWithNixDb {
|
||||
in
|
||||
pkgs.dockerTools.buildImageWithNixDb {
|
||||
name = "nix-minimal";
|
||||
tag = "latest";
|
||||
|
||||
copyToRoot = pkgs.buildEnv {
|
||||
name = "image-root";
|
||||
pathsToLink = ["/bin" "/etc"];
|
||||
paths = with pkgs; [
|
||||
paths = with pkgs;
|
||||
[
|
||||
dockerTools.usrBinEnv
|
||||
|
||||
coreutils
|
||||
@ -96,10 +105,14 @@ in pkgs.dockerTools.buildImageWithNixDb {
|
||||
pythonSupport = false;
|
||||
withpcre2 = false;
|
||||
withManual = false;
|
||||
}).overrideAttrs (_: { doInstallCheck = false; }))
|
||||
})
|
||||
.overrideAttrs (_: {doInstallCheck = false;}))
|
||||
|
||||
iana-etc
|
||||
] ++ withFakeNss ++ withNixConf ++ extraPaths;
|
||||
]
|
||||
++ withFakeNss
|
||||
++ withNixConf
|
||||
++ extraPaths;
|
||||
};
|
||||
|
||||
runAsRoot = with pkgs; ''
|
||||
@ -120,7 +133,8 @@ in pkgs.dockerTools.buildImageWithNixDb {
|
||||
"NIX_PATH=nixpkgs=${nixPath}"
|
||||
];
|
||||
};
|
||||
} // {
|
||||
}
|
||||
// {
|
||||
meta = with lib; {
|
||||
homepage = "https://vcs.elnafo.ru/L-Nafaryus/bonfire";
|
||||
description = "Minimal image with a Nix package manager";
|
||||
|
@ -14,16 +14,21 @@ pkgs.dockerTools.buildImage {
|
||||
copyToRoot = pkgs.buildEnv {
|
||||
name = "image-root";
|
||||
pathsToLink = ["/bin"];
|
||||
paths = with pkgs; [
|
||||
paths = with pkgs;
|
||||
[
|
||||
nodejs
|
||||
jq
|
||||
cachix
|
||||
] ++ extraPaths;
|
||||
]
|
||||
++ extraPaths;
|
||||
};
|
||||
|
||||
config.Cmd = ["/bin/bash"];
|
||||
} // {
|
||||
meta = bonpkgs.nix-minimal.meta // {
|
||||
}
|
||||
// {
|
||||
meta =
|
||||
bonpkgs.nix-minimal.meta
|
||||
// {
|
||||
description = "Image for action runners with a Nix package manager";
|
||||
longDescription = ''
|
||||
Docker image for action runners with Nix package manager (https://nixos.org/).
|
||||
|
@ -1,16 +1,18 @@
|
||||
{
|
||||
bonfire,
|
||||
stdenv, lib, pkgs,
|
||||
stdenv,
|
||||
lib,
|
||||
pkgs,
|
||||
version ? "11.20240116",
|
||||
sha256 ? "sha256-bNWlza3cL/lUrwrVEmPECvKbFkwR2rTMaccsn8amGFQ=", ...
|
||||
}:
|
||||
let
|
||||
sha256 ? "sha256-bNWlza3cL/lUrwrVEmPECvKbFkwR2rTMaccsn8amGFQ=",
|
||||
...
|
||||
}: let
|
||||
version' = lib.strings.splitString "." version;
|
||||
major = lib.elemAt version' 0;
|
||||
revision = lib.elemAt version' 1;
|
||||
realname = "OpenFOAM";
|
||||
in
|
||||
let pkg = stdenv.mkDerivation {
|
||||
in let
|
||||
pkg = stdenv.mkDerivation {
|
||||
pname = "openfoam";
|
||||
inherit version major;
|
||||
|
||||
@ -81,4 +83,5 @@ let pkg = stdenv.mkDerivation {
|
||||
broken = pkgs.stdenv.isDarwin;
|
||||
};
|
||||
};
|
||||
in pkg
|
||||
in
|
||||
pkg
|
||||
|
@ -1,9 +1,11 @@
|
||||
{
|
||||
bonfire,
|
||||
lib, pkgs,
|
||||
lib,
|
||||
pkgs,
|
||||
version ? "0.8",
|
||||
hash ? "sha256-kPCdOZl4m7KBb970TjJokXorKfnCvuV5Uq7lFQIh1z8=",
|
||||
vendorHash ? "sha256-ib9xRklkLfrDCuLf7zDkJE8lJiNiUMPZ01MDxvqho6o=", ...
|
||||
vendorHash ? "sha256-ib9xRklkLfrDCuLf7zDkJE8lJiNiUMPZ01MDxvqho6o=",
|
||||
...
|
||||
}:
|
||||
pkgs.buildGoModule {
|
||||
pname = "spoofdpi";
|
||||
|
@ -1,11 +1,18 @@
|
||||
{
|
||||
bonfire,
|
||||
lib, stdenv,
|
||||
fetchFromGitHub, wrapQtAppsHook,
|
||||
extra-cmake-modules, cmake,
|
||||
file, jdk17,
|
||||
copyDesktopItems, makeDesktopItem,
|
||||
xorg, libpulseaudio, libGL
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
wrapQtAppsHook,
|
||||
extra-cmake-modules,
|
||||
cmake,
|
||||
file,
|
||||
jdk17,
|
||||
copyDesktopItems,
|
||||
makeDesktopItem,
|
||||
xorg,
|
||||
libpulseaudio,
|
||||
libGL,
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
version = "faf3c966c43465d6f6c245ed78556222240398ee";
|
||||
@ -43,7 +50,8 @@ stdenv.mkDerivation rec {
|
||||
|
||||
# TODO: fix broken data directory location
|
||||
postInstall = let
|
||||
libpath = with xorg; lib.makeLibraryPath [
|
||||
libpath = with xorg;
|
||||
lib.makeLibraryPath [
|
||||
libX11
|
||||
libXext
|
||||
libXcursor
|
||||
|
@ -3,11 +3,18 @@
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
crane = { url = "github:ipetkov/crane"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
crane = {
|
||||
url = "github:ipetkov/crane";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = inputs @ { self, nixpkgs, crane, ... }:
|
||||
let
|
||||
outputs = inputs @ {
|
||||
self,
|
||||
nixpkgs,
|
||||
crane,
|
||||
...
|
||||
}: let
|
||||
forAllSystems = nixpkgs.lib.genAttrs ["x86_64-linux"];
|
||||
nixpkgsFor = forAllSystems (system: import nixpkgs {inherit system;});
|
||||
in {
|
||||
@ -15,7 +22,8 @@
|
||||
my-crate = let
|
||||
pkgs = nixpkgsFor.${system};
|
||||
craneLib = crane.lib.${system};
|
||||
in craneLib.buildPackage {
|
||||
in
|
||||
craneLib.buildPackage {
|
||||
src = craneLib.cleanCargoSource (craneLib.path ./.);
|
||||
strictDeps = true;
|
||||
|
||||
@ -28,7 +36,10 @@
|
||||
checks = forAllSystems (system: {
|
||||
inherit (self.packages.${system}.my-crate);
|
||||
|
||||
my-crate-fmt = let craneLib = crane.lib.${system}; in craneLib.cargoFmt {
|
||||
my-crate-fmt = let
|
||||
craneLib = crane.lib.${system};
|
||||
in
|
||||
craneLib.cargoFmt {
|
||||
src = craneLib.cleanCargoSource (craneLib.path ./.);
|
||||
};
|
||||
});
|
||||
@ -48,5 +59,4 @@
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user