Merge remote-tracking branch 'origin/nixos' into nixos-work
This commit is contained in:
commit
ef6b7e9f86
19 changed files with 508 additions and 202 deletions
|
|
@ -16,7 +16,7 @@ in
|
|||
yubikey = {
|
||||
enable = mkDefault true;
|
||||
luksSupport = {
|
||||
enable = mkDefault true;
|
||||
enable = mkDefault false;
|
||||
devices = mkDefault [ "enc" ];
|
||||
};
|
||||
};
|
||||
|
|
|
|||
95
modules/profiles/impermanence.nix
Normal file
95
modules/profiles/impermanence.nix
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.my.profiles.impermanence;
|
||||
in
|
||||
{
|
||||
options.my.profiles.impermanence.enable = mkEnableOption "impermanence";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
age.secrets = {
|
||||
root-password.file = ../../secrets/root-password.age;
|
||||
moritz-password.file = ../../secrets/moritz-password.age;
|
||||
};
|
||||
users.users = {
|
||||
root.hashedPasswordFile = config.age.secrets.root-password.path;
|
||||
moritz.hashedPasswordFile = config.age.secrets.moritz-password.path;
|
||||
};
|
||||
users.mutableUsers = false;
|
||||
environment.persistence."/persist" = {
|
||||
hideMounts = true;
|
||||
directories = [
|
||||
"/etc/NetworkManager/system-connections"
|
||||
"/var/db/dhcpcd/"
|
||||
"/var/lib/NetworkManager/"
|
||||
"/var/lib/bluetooth"
|
||||
"/var/lib/nixos"
|
||||
"/var/lib/systemd/coredump"
|
||||
"/var/log"
|
||||
];
|
||||
files = [
|
||||
"/etc/machine-id"
|
||||
"/etc/nix/id_rsa"
|
||||
"/etc/ssh/ssh_host_ed25519_key"
|
||||
"/etc/ssh/ssh_host_ed25519_key.pub"
|
||||
"/etc/ssh/ssh_host_rsa_key"
|
||||
"/etc/ssh/ssh_host_rsa_key.pub"
|
||||
];
|
||||
users.moritz = {
|
||||
directories = [
|
||||
".SynologyDrive/data"
|
||||
".SynologyDrive/log"
|
||||
".cache/keepassxc"
|
||||
".cache/nvim/luac"
|
||||
".config/Nextcloud"
|
||||
".config/keepassxc"
|
||||
".local/share/direnv"
|
||||
".local/share/nvim"
|
||||
".local/share/zoxide"
|
||||
".local/share/JetBrains"
|
||||
".config/JetBrains"
|
||||
".local/state/nvim"
|
||||
".config/kdeconnect"
|
||||
".cat_installer" # eduroam
|
||||
".mozilla"
|
||||
"Documents"
|
||||
"Downloads"
|
||||
"Music"
|
||||
"Pictures"
|
||||
"Videos"
|
||||
{ directory = ".gnupg"; mode = "0700"; }
|
||||
{ directory = ".local/share/keyrings"; mode = "0700"; }
|
||||
{ directory = ".ssh"; mode = "0700"; }
|
||||
];
|
||||
files = [
|
||||
".local/share/fish/fish_history"
|
||||
".local/share/nix/trusted-settings.json"
|
||||
".parallel/will-cite"
|
||||
];
|
||||
};
|
||||
users.root = {
|
||||
home = "/root";
|
||||
directories = [
|
||||
{ directory = ".gnupg"; mode = "0700"; }
|
||||
{ directory = ".ssh"; mode = "0700"; }
|
||||
];
|
||||
files = [
|
||||
".local/share/nix/trusted-settings.json"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
(
|
||||
pkgs.writeShellApplication {
|
||||
name = "zfs-diff";
|
||||
runtimeInputs = with pkgs; [ zfs coreutils parallel tree ];
|
||||
text = ''
|
||||
zfs diff -F zroot/encrypted/root@blank | awk '$2 == "F" && system("test -e /persist/"$3) != 0 { print $3 }' 2>/dev/null | tree --fromfile . "$@"
|
||||
'';
|
||||
}
|
||||
)
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -30,8 +30,8 @@ in
|
|||
"browser.search.suggest.enabled" = true;
|
||||
"browser.urlbar.suggest.searches" = true;
|
||||
|
||||
# startup page
|
||||
"browser.startup.page" = 0;
|
||||
# Restore previous session on startup
|
||||
"browser.startup.page" = 3;
|
||||
|
||||
# drm
|
||||
"media.eme.enabled" = true;
|
||||
|
|
@ -41,30 +41,6 @@ in
|
|||
|
||||
# disable letterboxing
|
||||
"privacy.resistFingerprinting.letterboxing" = false;
|
||||
|
||||
## OTHER
|
||||
# Dont show warning when accessing about:config
|
||||
"browser.aboutConfig.showWarning" = false;
|
||||
|
||||
# Hide bookmarks
|
||||
"browser.toolbars.bookmarks.visibility" = "never";
|
||||
|
||||
# Smooth scrolling
|
||||
"general.smoothScroll.lines.durationMaxMS" = 125;
|
||||
"general.smoothScroll.lines.durationMinMS" = 125;
|
||||
"general.smoothScroll.mouseWheel.durationMaxMS" = 200;
|
||||
"general.smoothScroll.mouseWheel.durationMinMS" = 100;
|
||||
"general.smoothScroll.msdPhysics.enabled" = true;
|
||||
"general.smoothScroll.other.durationMaxMS" = 125;
|
||||
"general.smoothScroll.other.durationMinMS" = 125;
|
||||
"general.smoothScroll.pages.durationMaxMS" = 125;
|
||||
"general.smoothScroll.pages.durationMinMS" = 125;
|
||||
"mousewheel.min_line_scroll_amount" = 40;
|
||||
"mousewheel.system_scroll_override_on_root_content.enabled" = true;
|
||||
"mousewheel.system_scroll_override_on_root_content.horizontal.factor" = 175;
|
||||
"mousewheel.system_scroll_override_on_root_content.vertical.factor" = 175;
|
||||
"toolkit.scrollbox.horizontalScrollDistance" = 6;
|
||||
"toolkit.scrollbox.verticalScrollDistance" = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -29,11 +29,21 @@ in
|
|||
);
|
||||
};
|
||||
};
|
||||
setSearchEngines = mkEnableOption "firefox search engines" // {
|
||||
default = true;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home-manager.users.moritz.programs.firefox = {
|
||||
enable = true;
|
||||
policies = mkIf cfg.setSearchEngines {
|
||||
SearchEngines = {
|
||||
Default = "Kagi";
|
||||
Remove = [ "Google" "Amazon.de" "Bing" ];
|
||||
};
|
||||
};
|
||||
package = if cfg.setSearchEngines then pkgs.firefox-esr else pkgs.firefox;
|
||||
profiles."default" = {
|
||||
extraConfig = mkIf cfg.arkenfox.enable ''
|
||||
// Arkenfox user.js
|
||||
|
|
@ -50,10 +60,106 @@ in
|
|||
keepassxc-browser
|
||||
languagetool
|
||||
multi-account-containers
|
||||
sponsorblock
|
||||
temporary-containers
|
||||
ublock-origin
|
||||
wikiwand-wikipedia-modernized
|
||||
vimium
|
||||
];
|
||||
settings = {
|
||||
# Disable Pocket
|
||||
"extensions.pocket.enabled" = false;
|
||||
|
||||
# Disable Activity Stream
|
||||
# https://wiki.mozilla.org/Firefox/Activity_Stream
|
||||
"browser.newtabpage.activity-stream.enabled" = false;
|
||||
"browser.newtabpage.activity-stream.telemetry" = false;
|
||||
"browser.newtabpage.activity-stream.feeds.discoverystreamfeed" = false;
|
||||
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
|
||||
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned" = "";
|
||||
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.searchEngines" = "";
|
||||
"browser.newtabpage.pinned" = "[]";
|
||||
|
||||
# Disable new tab tile ads & preload
|
||||
# http://www.thewindowsclub.com/disable-remove-ad-tiles-from-firefox
|
||||
# http://forums.mozillazine.org/viewtopic.php?p=13876331#p13876331
|
||||
# https://wiki.mozilla.org/Tiles/Technical_Documentation#Ping
|
||||
# https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-source
|
||||
# https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-ping
|
||||
"browser.newtabpage.enhanced" = false;
|
||||
"browser.newtabpage.introShown" = true;
|
||||
"browser.newtab.preload" = false;
|
||||
"browser.newtabpage.directory.ping" = "";
|
||||
"browser.newtabpage.directory.source" = "data:text/plain,{}";
|
||||
|
||||
# Disable some not so useful functionality.
|
||||
"browser.disableResetPrompt" = true; # "Looks like you haven't started Firefox in a while."
|
||||
"browser.onboarding.enabled" = false; # "New to Firefox? Let's get started!" tour
|
||||
"browser.aboutConfig.showWarning" = false; # Warning when opening about:config
|
||||
"extensions.shield-recipe-client.enabled" = false;
|
||||
|
||||
# do not offer to save passwords = nor allow the user to enable the feature
|
||||
"signon.rememberSignons" = false;
|
||||
"signon.rememberSignons.visibilityToggle" = false;
|
||||
|
||||
# send do not track header
|
||||
"privacy.donottrackheader.enabled" = true;
|
||||
|
||||
# Hide bookmarks
|
||||
"browser.toolbars.bookmarks.visibility" = "never";
|
||||
|
||||
# Smooth scrolling
|
||||
"general.smoothScroll.lines.durationMaxMS" = 125;
|
||||
"general.smoothScroll.lines.durationMinMS" = 125;
|
||||
"general.smoothScroll.mouseWheel.durationMaxMS" = 200;
|
||||
"general.smoothScroll.mouseWheel.durationMinMS" = 100;
|
||||
"general.smoothScroll.msdPhysics.enabled" = true;
|
||||
"general.smoothScroll.other.durationMaxMS" = 125;
|
||||
"general.smoothScroll.other.durationMinMS" = 125;
|
||||
"general.smoothScroll.pages.durationMaxMS" = 125;
|
||||
"general.smoothScroll.pages.durationMinMS" = 125;
|
||||
"mousewheel.min_line_scroll_amount" = 40;
|
||||
"mousewheel.system_scroll_override_on_root_content.enabled" = true;
|
||||
"mousewheel.system_scroll_override_on_root_content.horizontal.factor" = 175;
|
||||
"mousewheel.system_scroll_override_on_root_content.vertical.factor" = 175;
|
||||
"toolkit.scrollbox.horizontalScrollDistance" = 6;
|
||||
"toolkit.scrollbox.verticalScrollDistance" = 2;
|
||||
|
||||
# Do not check if Firefox is the default browser
|
||||
"browser.shell.checkDefaultBrowser" = false;
|
||||
|
||||
# Reduce search engine noise in the urlbar's completion window. The
|
||||
# shortcuts and suggestions will still work, but Firefox won't clutter
|
||||
# its UI with reminders that they exist.
|
||||
"browser.urlbar.suggest.searches" = false;
|
||||
"browser.urlbar.shortcuts.bookmarks" = false;
|
||||
"browser.urlbar.shortcuts.history" = false;
|
||||
"browser.urlbar.shortcuts.tabs" = false;
|
||||
"browser.urlbar.showSearchSuggestionsFirst" = false;
|
||||
"browser.urlbar.speculativeConnect.enabled" = false;
|
||||
|
||||
# https://bugzilla.mozilla.org/1642623
|
||||
"browser.urlbar.dnsResolveSingleWordsAfterSearch" = 0;
|
||||
# https://blog.mozilla.org/data/2021/09/15/data-and-firefox-suggest/
|
||||
"browser.urlbar.suggest.quicksuggest.nonsponsored" = false;
|
||||
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
|
||||
|
||||
# Show whole URL in address bar
|
||||
"browser.urlbar.trimURLs" = false;
|
||||
|
||||
# auto enable addons
|
||||
"extensions.autoDisableScopes" = 0;
|
||||
|
||||
# Disable Form autofill
|
||||
# https://wiki.mozilla.org/Firefox/Features/Form_Autofill
|
||||
"browser.formfill.enable" = false;
|
||||
"extensions.formautofill.addresses.enabled" = false;
|
||||
"extensions.formautofill.available" = "off";
|
||||
"extensions.formautofill.creditCards.available" = false;
|
||||
"extensions.formautofill.creditCards.enabled" = false;
|
||||
"extensions.formautofill.heuristics.enabled" = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ in
|
|||
}
|
||||
|
||||
misc {
|
||||
vrr = 1
|
||||
vrr = 0
|
||||
mouse_move_enables_dpms = true
|
||||
key_press_enables_dpms = true
|
||||
force_default_wallpaper = 0
|
||||
|
|
|
|||
|
|
@ -60,14 +60,12 @@ in
|
|||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
enableNvidiaPatches = cfg.nvidiaSupport;
|
||||
};
|
||||
|
||||
home-manager.users.moritz = {
|
||||
# enable home-manager module
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
enableNvidiaPatches = cfg.nvidiaSupport;
|
||||
extraConfig = import ./_config.nix args;
|
||||
systemd.extraCommands = [
|
||||
"systemctl --user stop hyprland-session.target"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, ... }:
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
with builtins;
|
||||
{
|
||||
|
|
@ -55,7 +55,6 @@ with builtins;
|
|||
];
|
||||
opts = { };
|
||||
dependencies = [
|
||||
{ plugin = which-key-nvim; }
|
||||
{ plugin = nvim-web-devicons; }
|
||||
];
|
||||
}
|
||||
|
|
@ -333,5 +332,25 @@ with builtins;
|
|||
};
|
||||
cmd = [ "Neogen" ];
|
||||
}
|
||||
{
|
||||
plugin = gen-nvim;
|
||||
init = /* lua */ ''
|
||||
require("gen").setup({
|
||||
model = "zephyr:7b-beta", -- The default model to use.
|
||||
display_mode = "float", -- The display mode. Can be "float" or "split".
|
||||
show_prompt = false, -- Shows the Prompt submitted to Ollama.
|
||||
show_model = false, -- Displays which model you are using at the beginning of your chat session.
|
||||
no_auto_close = false, -- Never closes the window automatically.
|
||||
init = function(options) end,
|
||||
-- Function to initialize Ollama
|
||||
command = "${lib.getExe pkgs.curl} --silent --no-buffer -X POST http://localhost:11434/api/generate -d $body",
|
||||
-- The command for the Ollama service. You can use placeholders $prompt, $model and $body (shellescaped).
|
||||
-- This can also be a lua function returning a command string, with options as the input parameter.
|
||||
-- The executed command must return a JSON object with { response, context }
|
||||
-- (context property is optional).
|
||||
debug = false -- Prints errors and the command which is run.
|
||||
})
|
||||
'';
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
require("mini.align").setup()
|
||||
require("mini.move").setup()
|
||||
require("mini.starter").setup()
|
||||
|
||||
require("mini.statusline").setup({
|
||||
content = {
|
||||
|
|
@ -46,15 +45,3 @@ for _, mode_hl in ipairs(MiniStatuslineModes) do
|
|||
hl_table.bg = fg
|
||||
vim.api.nvim_set_hl(0, mode_hl .. "Inverse", hl_table)
|
||||
end
|
||||
|
||||
local animate = require("mini.animate")
|
||||
local animation = {
|
||||
timing = animate.gen_timing.quadratic({ duration = 100, unit = "total" }),
|
||||
}
|
||||
animate.setup({
|
||||
cursor = animation,
|
||||
scroll = { enable = false },
|
||||
resize = animation,
|
||||
open = animation,
|
||||
close = animation,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,7 +1 @@
|
|||
require("nvim-treesitter.configs").setup({
|
||||
sync_install = false,
|
||||
auto_install = false,
|
||||
highlight = {
|
||||
enable = true,
|
||||
},
|
||||
})
|
||||
require("nvim-treesitter.configs").setup()
|
||||
|
|
|
|||
|
|
@ -6,21 +6,58 @@ with builtins;
|
|||
{
|
||||
plugin = nvim-treesitter;
|
||||
event = [ "BufReadPost" "BufNewFile" ];
|
||||
opts = {
|
||||
sync_install = false;
|
||||
auto_install = false;
|
||||
highlight = {
|
||||
enable = true;
|
||||
};
|
||||
textobjects =
|
||||
{
|
||||
select =
|
||||
{
|
||||
enable = true;
|
||||
|
||||
# Automatically jump forward to textobj, similar to targets.vim
|
||||
lookahead = false;
|
||||
|
||||
keymaps = {
|
||||
# You can use the capture groups defined in textobjects.scm
|
||||
"af" = {
|
||||
query = "@function.outer";
|
||||
desc = "Select outer part of a function region";
|
||||
};
|
||||
"if" = {
|
||||
query = "@function.inner";
|
||||
desc = "Select inner part of a function region";
|
||||
};
|
||||
"ac" = {
|
||||
query = "@class.outer";
|
||||
desc = "Select outer part of a class region";
|
||||
};
|
||||
"ic" = {
|
||||
query = "@class.inner";
|
||||
desc = "Select inner part of a class region";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
conf =
|
||||
let
|
||||
parserDir = pkgs.symlinkJoin {
|
||||
name = "tresitter-grammars-all";
|
||||
paths = lib.attrValues (lib.filterAttrs (_: builtins.isAttrs) nvim-treesitter-parsers);
|
||||
};
|
||||
parserDir = pkgs.symlinkJoin
|
||||
{
|
||||
name = "tresitter-grammars-all";
|
||||
paths = lib.attrValues (lib.filterAttrs (_: builtins.isAttrs) nvim-treesitter-parsers);
|
||||
};
|
||||
in
|
||||
readFile ./lua/nvim-treesitter.lua + ''
|
||||
''
|
||||
vim.opt.runtimepath:append("${parserDir}")
|
||||
|
||||
require'nvim-treesitter.configs'.setup {
|
||||
parser_install_dir = "${parserDir}",
|
||||
}
|
||||
local final_opts = vim.tbl_deep_extend("keep", opts, { parser_install_dir = "${parserDir}" })
|
||||
require('nvim-treesitter.configs').setup(final_opts)
|
||||
'';
|
||||
dependencies = [
|
||||
{ plugin = nvim-treesitter-textobjects; }
|
||||
{ plugin = nvim-ts-context-commentstring; opts = { }; }
|
||||
];
|
||||
}
|
||||
|
|
|
|||
27
modules/services/ollama.nix
Normal file
27
modules/services/ollama.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.my.services.ollama;
|
||||
in
|
||||
{
|
||||
options.my.services.ollama = {
|
||||
enable = mkEnableOption "ollama";
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.ollama;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.user.services.ollama = {
|
||||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
Restart = "on-failure";
|
||||
RestartSec = "1s";
|
||||
ExecStart = "${getExe cfg.package} serve";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue