Compare commits

...

3 commits

15 changed files with 579 additions and 558 deletions

View file

@ -1,17 +1,12 @@
{ config, lib, pkgs, pkgs-unstable, ... }: { config, lib, pkgs, pkgs-unstable, ... }: {
let imports = [
conda_init = shell: '' ./../programs/shells.nix
eval "$(${pkgs.micromamba}/bin/micromamba shell hook --shell ${shell})" ./../programs/bat.nix
./../programs/direnv.nix
''; ./../programs/git.nix
nd_bash_function = '' ./../programs/lsd.nix
function nd() { ./../programs/starship.nix
mkdir -p "$1" && cd "$1" ];
}
'';
starship-config = import ./../programs/starship.nix;
in {
home = { home = {
stateVersion = "23.11"; stateVersion = "23.11";
file = { }; file = { };
@ -80,116 +75,12 @@ in {
}; };
}; };
programs = { programs = {
home-manager = { enable = true; }; home-manager.enable = true;
bash = {
enable = true; gh.enable = true;
initExtra = conda_init "bash" + nd_bash_function + '' gpg.enable = true;
export PS1="[\[\e[32m\]\u\[\e[m\]@\[\e[33m\]\h\[\e[m\] \[\e[34m\]\W\[\e[m\]] \\$ " pandoc.enable = true;
''; yt-dlp.enable = true;
};
bat = {
enable = true;
config = { pager = "less -SRF"; };
};
direnv = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
gh = { enable = true; };
git = {
enable = true;
userName = "Thomas A. Christensen II";
userEmail = "25492070+MillironX@users.noreply.github.com";
extraConfig = {
core = { editor = "nvim"; };
credential = { helper = "store"; };
color = { ui = "auto"; };
init = { defaultBranch = "master"; };
column = { ui = "auto"; };
branch = { sort = "-committerdate"; };
tag = { sort = "version:refname"; };
diff = {
algorithm = "histogram";
colorMoved = "plain";
mnemonicPrefix = true;
renames = true;
};
push = {
default = "simple";
autoSetupRemote = true;
followTages = true;
};
fetch = {
prune = true;
pruneTags = true;
all = true;
};
help = { autocorrect = "prompt"; };
commit = { verbose = true; };
rerere = {
enabled = true;
autoupdate = true;
};
rebase = {
autoSquash = true;
autoStash = true;
updateRefs = true;
};
merge = { conflictstyle = "zdiff3"; };
pull = { rebase = true; };
};
};
gpg = { enable = true; };
lsd = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
neovim = {
enable = true;
package = pkgs.neovim-unwrapped;
defaultEditor = true;
coc.enable = true;
plugins = with pkgs.vimPlugins; [
mason-nvim
mason-lspconfig-nvim
nvim-lspconfig
nvim-dap
nvim-dap-ui
null-ls-nvim
nvim-lint
formatter-nvim
lspsaga-nvim
vim-slime
];
extraLuaConfig = ''
require("mason").setup()
'';
};
pandoc = { enable = true; };
starship = starship-config { inherit lib; };
yt-dlp = { enable = true; };
zsh = {
enable = true;
autosuggestion.enable = true;
enableCompletion = true;
completionInit =
"autoload -U compinit && compinit; autoload -U bashcompinit && bashcompinit";
antidote = {
enable = true;
plugins = [
"getantidote/use-omz"
"ohmyzsh/ohmyzsh path:lib"
"ohmyzsh/ohmyzsh path:plugins/git"
"ohmyzsh/ohmyzsh path:plugins/extract"
"zsh-users/zsh-syntax-highlighting"
"zsh-users/zsh-autosuggestions"
"zsh-users/zsh-completions"
];
};
initContent = conda_init "zsh" + nd_bash_function;
};
}; };
xdg = { xdg = {
dataFile = { "julia/config/startup.jl".source = ./../dotfiles/startup.jl; }; dataFile = { "julia/config/startup.jl".source = ./../dotfiles/startup.jl; };

View file

@ -1,8 +1,11 @@
{ config, lib, pkgs, pkgs-unstable, firefox-addons, buildFirefoxXpiAddon, ... }: { pkgs, ... }: {
let
firefox-config = import ./../programs/firefox.nix; imports = [
zed-config = import ./../programs/zed.nix; ./../programs/firefox.nix
in { ./../programs/zed.nix
./../services/gpg-agent.nix
];
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
act act
@ -29,25 +32,5 @@ in {
]; ];
shellAliases = { code = "codium"; }; shellAliases = { code = "codium"; };
}; };
programs = { services = { syncthing.enable = true; };
firefox = firefox-config {
inherit firefox-addons;
inherit buildFirefoxXpiAddon;
inherit lib;
inherit pkgs;
};
zed-editor = zed-config;
};
services = {
gpg-agent = {
enable = true;
enableBashIntegration = true;
enableSshSupport = true;
enableZshIntegration = true;
defaultCacheTtl = 604800;
maxCacheTtl = 604800;
verbose = true;
};
syncthing = { enable = true; };
};
} }

View file

@ -1,14 +1,14 @@
{ config, lib, pkgs, pkgs-unstable, ... }: { config, pkgs, ... }:
let let
home-manager-repo = "${config.xdg.configHome}/home-manager"; home-manager-repo = "${config.xdg.configHome}/home-manager";
mkOutOfStoreSymlink = config.lib.file.mkOutOfStoreSymlink; mkOutOfStoreSymlink = config.lib.file.mkOutOfStoreSymlink;
plasma-config = import ./../programs/plasma.nix;
in { in {
imports = [ ./../programs/plasma.nix ];
home = { home = {
packages = with pkgs; [ kwalletcli ]; packages = with pkgs; [ kwalletcli ];
sessionVariables = { ZED_WINDOW_DECORATIONS = "server"; }; sessionVariables = { ZED_WINDOW_DECORATIONS = "server"; };
}; };
programs = { plasma = plasma-config { inherit config; }; };
services = { services = {
gpg-agent = { gpg-agent = {
# Use kwallet cli, but put it in extraConfig, otherwise gpg-agent will # Use kwallet cli, but put it in extraConfig, otherwise gpg-agent will

6
programs/bat.nix Normal file
View file

@ -0,0 +1,6 @@
{ ... }: {
programs.bat = {
enable = true;
config = { pager = "less -SRF"; };
};
}

7
programs/direnv.nix Normal file
View file

@ -0,0 +1,7 @@
{ ... }: {
programs.direnv = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
}

View file

@ -1,258 +1,260 @@
{ firefox-addons, buildFirefoxXpiAddon, lib, pkgs }: { { firefox-addons, buildFirefoxXpiAddon, lib, ... }: {
enable = true; programs.firefox = {
package = enable = true;
null; # Use native package manager/Homebrew b/c there are fewer breakages package =
nativeMessagingHosts = [ ]; null; # Use native package manager/Homebrew b/c there are fewer breakages
profileVersion = null; nativeMessagingHosts = [ ];
profiles = { profileVersion = null;
"millironx-default" = { profiles = {
id = 0; "millironx-default" = {
containers = { id = 0;
"Personal" = { containers = {
id = 1; "Personal" = {
color = "blue"; id = 1;
icon = "fingerprint"; color = "blue";
}; icon = "fingerprint";
"Administrator" = {
id = 2;
color = "yellow";
icon = "briefcase";
};
"Kansas State CVM" = {
id = 3;
color = "purple";
icon = "pet";
};
"Kansas State" = {
id = 4;
color = "pink";
icon = "fruit";
};
};
containersForce = true;
extensions.packages = with firefox-addons; [
bitwarden
containerise
floccus
libredirect
old-reddit-redirect
plasma-integration
pwas-for-firefox
ublock-origin
user-agent-string-switcher
web-archives
zotero-connector
(buildFirefoxXpiAddon rec {
pname = "always_in_container";
version = "1.0.7";
addonId = "{a1e9543e-5f73-4763-b376-04e53fd12cbd}";
url =
"https://addons.mozilla.org/firefox/downloads/file/4032840/${pname}-${version}.xpi";
sha256 = "sha256-bLxjL2P6Sd06q98MSHYRTNigtcjGwn/C2r4ANWCqKrw=";
meta = with lib; {
homepage = "https://github.com/tiansh/always-in-container";
description =
"Chose a container every time you try to open a page out of a container";
license = licenses.mpl20;
platforms = platforms.all;
}; };
}) "Administrator" = {
(buildFirefoxXpiAddon rec { id = 2;
pname = "open_with"; color = "yellow";
version = "7.2.6"; icon = "briefcase";
addonId = "openwith@darktrojan.net";
url =
"https://addons.mozilla.org/firefox/downloads/file/3831723/${pname}-${version}.xpi";
sha256 = "sha256-f9eGhLxg4UyVn4o5e4DRkraLWzj11SGto/GOwsJa9kg=";
meta = with lib; {
homepage = "https://darktrojan.github.io/openwith/";
description =
"Quickly test out your web pages in Chrome, Edge, Safari, or Opera. Open With opens the current page in your other browsers with just two clicks.";
license = licenses.mpl20;
platforms = platforms.all;
}; };
}) "Kansas State CVM" = {
]; id = 3;
search = { color = "purple";
default = "Milliron X Search"; icon = "pet";
privateDefault = "Milliron X Search";
force = true;
engines = {
"Milliron X Search" = {
urls = [
{
rels = [ "results" ];
type = "text/html";
method = "GET";
template =
"https://search.millironx.com/search?q={searchTerms}";
}
{
rels = [ "suggestions" ];
type = "application/x-suggestions+json";
method = "GET";
template =
"https://search.millironx.com/autocompleter?q={searchTerms}";
}
];
icon =
"https://search.millironx.com/static/themes/simple/img/favicon.png";
updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@mxs" ];
}; };
"Perplexity" = { "Kansas State" = {
urls = id = 4;
[{ template = "https://www.perplexity.ai/?q={searchTerms}"; }]; color = "pink";
icon = "https://www.perplexity.ai/favicon.ico"; icon = "fruit";
updateInterval = 7 * 24 * 60 * 60 * 1000;
definedAliases = [ "@pxt" ];
}; };
}; };
}; containersForce = true;
settings = { extensions.packages = with firefox-addons; [
"app.normandy.first_run" = false; bitwarden
"app.shield.optoutstudies.enabled" = false; containerise
"browser.contentblocking.category" = "strict"; floccus
"browser.formfill.enable" = false; libredirect
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = old-reddit-redirect
false; plasma-integration
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = pwas-for-firefox
false; ublock-origin
"browser.newtabpage.activity-stream.feeds.section.topstories" = false; user-agent-string-switcher
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false; web-archives
"browser.newtabpage.activity-stream.showWeather" = false; zotero-connector
"browser.newtabpage.pinned" = [ (buildFirefoxXpiAddon rec {
{ pname = "always_in_container";
url = "https://millironx.com"; version = "1.0.7";
label = "Home"; addonId = "{a1e9543e-5f73-4763-b376-04e53fd12cbd}";
baseDomain = "millironx.com";
}
{
url = "https://nextcloud.millironx.com";
label = "Nextcloud";
baseDomain = "nextcloud.millironx.com";
}
{
url = "https://code.millironx.com";
label = "Code";
baseDomain = "code.millironx.com";
}
{
url = "https://video.millironx.com";
label = "Videos";
baseDomain = "video.millironx.com";
}
{
url = "https://photos.millironx.com";
label = "Photos";
baseDomain = "photos.millironx.com";
}
{
url = "https://vault.millironx.com";
label = "Vault";
baseDomain = "vault.millironx.com";
}
{
url = "https://www.perplexity.ai/";
label = "perplexity";
}
{
url = url =
"https://www.vet.k-state.edu/academics/student-faculty-handbook/"; "https://addons.mozilla.org/firefox/downloads/file/4032840/${pname}-${version}.xpi";
} sha256 = "sha256-bLxjL2P6Sd06q98MSHYRTNigtcjGwn/C2r4ANWCqKrw=";
meta = with lib; {
homepage = "https://github.com/tiansh/always-in-container";
description =
"Chose a container every time you try to open a page out of a container";
license = licenses.mpl20;
platforms = platforms.all;
};
})
(buildFirefoxXpiAddon rec {
pname = "open_with";
version = "7.2.6";
addonId = "openwith@darktrojan.net";
url =
"https://addons.mozilla.org/firefox/downloads/file/3831723/${pname}-${version}.xpi";
sha256 = "sha256-f9eGhLxg4UyVn4o5e4DRkraLWzj11SGto/GOwsJa9kg=";
meta = with lib; {
homepage = "https://darktrojan.github.io/openwith/";
description =
"Quickly test out your web pages in Chrome, Edge, Safari, or Opera. Open With opens the current page in your other browsers with just two clicks.";
license = licenses.mpl20;
platforms = platforms.all;
};
})
]; ];
"browser.shopping.experience2023.active" = false; search = {
"browser.startup.homepage_override.mstone" = "ignore"; default = "Milliron X Search";
"browser.tabs.closeWindowWithLastTab" = false; privateDefault = "Milliron X Search";
"browser.tabs.inTitlebar" = 0; force = true;
"browser.theme.content-theme" = 0; engines = {
"browser.theme.toolbar-theme" = 0; "Milliron X Search" = {
"browser.toolbars.bookmarks.visibility" = "never"; urls = [
"browser.uiCustomization.state" = { {
placements = { rels = [ "results" ];
"widget-overflow-fixed-list" = [ ]; type = "text/html";
"unified-extensions-area" = [ method = "GET";
template =
"https://search.millironx.com/search?q={searchTerms}";
}
{
rels = [ "suggestions" ];
type = "application/x-suggestions+json";
method = "GET";
template =
"https://search.millironx.com/autocompleter?q={searchTerms}";
}
];
icon =
"https://search.millironx.com/static/themes/simple/img/favicon.png";
updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@mxs" ];
};
"Perplexity" = {
urls =
[{ template = "https://www.perplexity.ai/?q={searchTerms}"; }];
icon = "https://www.perplexity.ai/favicon.ico";
updateInterval = 7 * 24 * 60 * 60 * 1000;
definedAliases = [ "@pxt" ];
};
};
};
settings = {
"app.normandy.first_run" = false;
"app.shield.optoutstudies.enabled" = false;
"browser.contentblocking.category" = "strict";
"browser.formfill.enable" = false;
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" =
false;
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" =
false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.showWeather" = false;
"browser.newtabpage.pinned" = [
{
url = "https://millironx.com";
label = "Home";
baseDomain = "millironx.com";
}
{
url = "https://nextcloud.millironx.com";
label = "Nextcloud";
baseDomain = "nextcloud.millironx.com";
}
{
url = "https://code.millironx.com";
label = "Code";
baseDomain = "code.millironx.com";
}
{
url = "https://video.millironx.com";
label = "Videos";
baseDomain = "video.millironx.com";
}
{
url = "https://photos.millironx.com";
label = "Photos";
baseDomain = "photos.millironx.com";
}
{
url = "https://vault.millironx.com";
label = "Vault";
baseDomain = "vault.millironx.com";
}
{
url = "https://www.perplexity.ai/";
label = "perplexity";
}
{
url =
"https://www.vet.k-state.edu/academics/student-faculty-handbook/";
}
];
"browser.shopping.experience2023.active" = false;
"browser.startup.homepage_override.mstone" = "ignore";
"browser.tabs.closeWindowWithLastTab" = false;
"browser.tabs.inTitlebar" = 0;
"browser.theme.content-theme" = 0;
"browser.theme.toolbar-theme" = 0;
"browser.toolbars.bookmarks.visibility" = "never";
"browser.uiCustomization.state" = {
placements = {
"widget-overflow-fixed-list" = [ ];
"unified-extensions-area" = [
"floccus_handmadeideas_org-browser-action"
"7esoorv3_alefvanoon_anonaddy_me-browser-action"
"plasma-browser-integration_kde_org-browser-action"
"firefoxpwa_filips_si-browser-action"
"_d07ccf11-c0cd-4938-a265-2a4d6ad01189_-browser-action" # Web Archives
"openwith_darktrojan_net-browser-action"
"zotero_chnm_gmu_edu-browser-action"
];
"nav-bar" = [
"back-button"
"forward-button"
"customizableui-special-spring1"
"vertical-spacer"
"urlbar-container"
"stop-reload-button"
"customizableui-special-spring2"
"downloads-button"
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action" # Bitwarden
"ublock0_raymondhill_net-browser-action"
"unified-extensions-button"
"_testpilot-containers-browser-action"
];
"TabsToolbar" = [
"firefox-view-button"
"tabbrowser-tabs"
"new-tab-button"
"alltabs-button"
];
"vertical-tabs" = [ ];
"PersonalToolbar" = [ "import-button" "personal-bookmarks" ];
};
seen = [
"save-to-pocket-button"
"developer-button"
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action"
"_testpilot-containers-browser-action"
"floccus_handmadeideas_org-browser-action" "floccus_handmadeideas_org-browser-action"
"7esoorv3_alefvanoon_anonaddy_me-browser-action" "7esoorv3_alefvanoon_anonaddy_me-browser-action"
"plasma-browser-integration_kde_org-browser-action" "plasma-browser-integration_kde_org-browser-action"
"firefoxpwa_filips_si-browser-action" "firefoxpwa_filips_si-browser-action"
"_d07ccf11-c0cd-4938-a265-2a4d6ad01189_-browser-action" # Web Archives
"openwith_darktrojan_net-browser-action"
"zotero_chnm_gmu_edu-browser-action"
];
"nav-bar" = [
"back-button"
"forward-button"
"customizableui-special-spring1"
"vertical-spacer"
"urlbar-container"
"stop-reload-button"
"customizableui-special-spring2"
"downloads-button"
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action" # Bitwarden
"ublock0_raymondhill_net-browser-action" "ublock0_raymondhill_net-browser-action"
"unified-extensions-button" "_d07ccf11-c0cd-4938-a265-2a4d6ad01189_-browser-action"
"_testpilot-containers-browser-action" "zotero_chnm_gmu_edu-browser-action"
"openwith_darktrojan_net-browser-action"
]; ];
"TabsToolbar" = [ dirtyAreaCache = [
"firefox-view-button" "nav-bar"
"tabbrowser-tabs" "vertical-tabs"
"new-tab-button" "PersonalToolbar"
"alltabs-button" "unified-extensions-area"
]; ];
"vertical-tabs" = [ ]; currentVersion = 21;
"PersonalToolbar" = [ "import-button" "personal-bookmarks" ]; newElementCount = 3;
}; };
seen = [ "browser.urlbar.suggest.showSearchSuggestionsFirst" = false;
"save-to-pocket-button" "browser.urlbar.suggest.quicksuggest.nonsponsored" = false;
"developer-button" "browser.urlbar.suggest.quicksuggest.sponsored" = false;
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action" "browser.urlbar.suggest.quicksuggest.trending" = false;
"_testpilot-containers-browser-action" "browser.warnOnQuitShortcut" = false;
"floccus_handmadeideas_org-browser-action" "datareporting.healthreport.uploadEnabled" = false;
"7esoorv3_alefvanoon_anonaddy_me-browser-action" "datareporting.usage.uploadEnabled" = false;
"plasma-browser-integration_kde_org-browser-action" "extensions.formautofill.addresses.enabled" = false;
"firefoxpwa_filips_si-browser-action" "extensions.formautofill.creditCards.enabled" = false;
"ublock0_raymondhill_net-browser-action" "extensions.autoDisableScopes" = 0;
"_d07ccf11-c0cd-4938-a265-2a4d6ad01189_-browser-action" "network.trr.mode" = 3; # DNS over HTTPS always
"zotero_chnm_gmu_edu-browser-action" "network.trr.uri" = "https://family.dns.mullvad.net/dns-query";
"openwith_darktrojan_net-browser-action" "network.trr.custom_uri" = "https://family.dns.mullvad.net/dns-query";
]; "privacy.bounceTrackingProtection.mode" = 1;
dirtyAreaCache = [ "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads" = false;
"nav-bar" "privacy.clearOnShutdown_v2.cache" = true;
"vertical-tabs" "privacy.clearOnShutdown_v2.cookiesAndStorage" = true;
"PersonalToolbar" "privacy.clearOnShutdown_v2.formdata" = true;
"unified-extensions-area" "privacy.clearOnShutdown_v2.historyFormDataAndDownloads" = false;
]; "privacy.history.custom" = true;
currentVersion = 21; "privacy.query_stripping.enabled" = true;
newElementCount = 3; "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3" = true;
"privacy.sanitize.sanitizeOnShutdown" = true;
"privacy.trackingprotection.emailtracking.enabled" = true;
"privacy.trackingprotection.enabled" = true;
"privacy.trackingprotection.socialtracking.enabled" = true;
"widget.use-xdg-desktop-portal.file-picker" = 1;
}; };
"browser.urlbar.suggest.showSearchSuggestionsFirst" = false;
"browser.urlbar.suggest.quicksuggest.nonsponsored" = false;
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
"browser.urlbar.suggest.quicksuggest.trending" = false;
"browser.warnOnQuitShortcut" = false;
"datareporting.healthreport.uploadEnabled" = false;
"datareporting.usage.uploadEnabled" = false;
"extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false;
"extensions.autoDisableScopes" = 0;
"network.trr.mode" = 3; # DNS over HTTPS always
"network.trr.uri" = "https://family.dns.mullvad.net/dns-query";
"network.trr.custom_uri" = "https://family.dns.mullvad.net/dns-query";
"privacy.bounceTrackingProtection.mode" = 1;
"privacy.clearOnShutdown_v2.browsingHistoryAndDownloads" = false;
"privacy.clearOnShutdown_v2.cache" = true;
"privacy.clearOnShutdown_v2.cookiesAndStorage" = true;
"privacy.clearOnShutdown_v2.formdata" = true;
"privacy.clearOnShutdown_v2.historyFormDataAndDownloads" = false;
"privacy.history.custom" = true;
"privacy.query_stripping.enabled" = true;
"privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3" = true;
"privacy.sanitize.sanitizeOnShutdown" = true;
"privacy.trackingprotection.emailtracking.enabled" = true;
"privacy.trackingprotection.enabled" = true;
"privacy.trackingprotection.socialtracking.enabled" = true;
"widget.use-xdg-desktop-portal.file-picker" = 1;
}; };
}; };
}; };

45
programs/git.nix Normal file
View file

@ -0,0 +1,45 @@
{ ... }: {
programs.git = {
enable = true;
userName = "Thomas A. Christensen II";
userEmail = "25492070+MillironX@users.noreply.github.com";
extraConfig = {
core = { editor = "nvim"; };
credential = { helper = "store"; };
color = { ui = "auto"; };
init = { defaultBranch = "master"; };
column = { ui = "auto"; };
branch = { sort = "-committerdate"; };
tag = { sort = "version:refname"; };
diff = {
algorithm = "histogram";
colorMoved = "plain";
mnemonicPrefix = true;
renames = true;
};
push = {
default = "simple";
autoSetupRemote = true;
followTages = true;
};
fetch = {
prune = true;
pruneTags = true;
all = true;
};
help = { autocorrect = "prompt"; };
commit = { verbose = true; };
rerere = {
enabled = true;
autoupdate = true;
};
rebase = {
autoSquash = true;
autoStash = true;
updateRefs = true;
};
merge = { conflictstyle = "zdiff3"; };
pull = { rebase = true; };
};
};
}

7
programs/lsd.nix Normal file
View file

@ -0,0 +1,7 @@
{ ... }: {
programs.lsd = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
}

23
programs/neovim.nix Normal file
View file

@ -0,0 +1,23 @@
{ pkgs, ... }: {
programs.neovim = {
enable = true;
package = pkgs.neovim-unwrapped;
defaultEditor = true;
coc.enable = true;
plugins = with pkgs.vimPlugins; [
mason-nvim
mason-lspconfig-nvim
nvim-lspconfig
nvim-dap
nvim-dap-ui
null-ls-nvim
nvim-lint
formatter-nvim
lspsaga-nvim
vim-slime
];
extraLuaConfig = ''
require("mason").setup()
'';
};
}

View file

@ -1,11 +1,13 @@
{ config }: { { config, ... }: {
enable = true; programs.plasma = {
workspace = { enable = true;
wallpaperFillMode = "preserveAspectCrop"; workspace = {
wallpaperSlideShow = { wallpaperFillMode = "preserveAspectCrop";
interval = 86400; wallpaperSlideShow = {
path = interval = 86400;
"${config.home.homeDirectory}/Nextcloud/Pictures/Desktop backgrounds/"; path =
"${config.home.homeDirectory}/Nextcloud/Pictures/Desktop backgrounds/";
};
}; };
}; };
} }

42
programs/shells.nix Normal file
View file

@ -0,0 +1,42 @@
{ pkgs, ... }:
let
conda_init = shell: ''
eval "$(${pkgs.micromamba}/bin/micromamba shell hook --shell ${shell})"
'';
nd_bash_function = ''
function nd() {
mkdir -p "$1" && cd "$1"
}
'';
in {
programs = {
bash = {
enable = true;
initExtra = conda_init "bash" + nd_bash_function + ''
export PS1="[\[\e[32m\]\u\[\e[m\]@\[\e[33m\]\h\[\e[m\] \[\e[34m\]\W\[\e[m\]] \\$ "
'';
};
zsh = {
enable = true;
autosuggestion.enable = true;
enableCompletion = true;
completionInit =
"autoload -U compinit && compinit; autoload -U bashcompinit && bashcompinit";
antidote = {
enable = true;
plugins = [
"getantidote/use-omz"
"ohmyzsh/ohmyzsh path:lib"
"ohmyzsh/ohmyzsh path:plugins/git"
"ohmyzsh/ohmyzsh path:plugins/extract"
"zsh-users/zsh-syntax-highlighting"
"zsh-users/zsh-autosuggestions"
"zsh-users/zsh-completions"
];
};
initContent = conda_init "zsh" + nd_bash_function;
};
};
}

View file

@ -1,88 +1,89 @@
{ lib }: { lib, ... }:
let language-format-string = "[$symbol($version )]($style)"; let language-format-string = "[$symbol($version )]($style)";
in { in {
programs.starship = {
enable = true; enable = true;
enableBashIntegration = true; enableBashIntegration = true;
enableZshIntegration = true; enableZshIntegration = true;
settings = { settings = {
add_newline = false; add_newline = false;
format = lib.concatStrings [ format = lib.concatStrings [
"$os" "$os"
" " " "
"($container )" "($container )"
"($direnv)" "($direnv)"
"\\[" "\\["
"([$username](bold yellow)@[$hostname](bold red) )" "([$username](bold yellow)@[$hostname](bold red) )"
"[$directory](cyan)" "[$directory](cyan)"
"($git_branch$git_commit$git_state$git_metrics$git_status)" "($git_branch$git_commit$git_state$git_metrics$git_status)"
"\\] " "\\] "
"($conda$nix_shell)" "($conda$nix_shell)"
"($julia$nodejs$python$quarto$rlang$ruby)" "($julia$nodejs$python$quarto$rlang$ruby)"
"($shell)" "($shell)"
"$character" "$character"
]; ];
right_format = lib.concatStrings [ "$cmd_duration" "$battery" ]; right_format = lib.concatStrings [ "$cmd_duration" "$battery" ];
character = { character = {
success_symbol = "[\\$](bold green)"; success_symbol = "[\\$](bold green)";
error_symbol = "[\\$](bold red)"; error_symbol = "[\\$](bold red)";
};
conda = { format = "[$symbol$environment]($style) "; };
direnv = {
disabled = false;
allowed_msg = "";
not_allowed_msg = "";
denied_msg = "";
loaded_msg = "";
unloaded_msg = "";
symbol = " ";
};
git_metrics = { disabled = false; };
git_status = {
# Remove trailing space from format string
format = "([\\[$all_status$ahead_behind\\]]($style))";
};
hostname = { format = "[$hostname]($style)"; };
julia = { format = language-format-string; };
nix_shell = {
symbol = "";
impure_msg = "/󰓑";
pure_msg = "/󱕦";
format = "[$symbol$state( ($name))]($style) ";
};
nodejs = { format = language-format-string; };
os = {
disabled = false;
symbols = {
AlmaLinux = "";
Alpine = "";
CentOS = "";
Debian = "";
Fedora = "";
Macos = "";
NixOS = "";
}; };
conda = { format = "[$symbol$environment]($style) "; };
direnv = {
disabled = false;
allowed_msg = "";
not_allowed_msg = "";
denied_msg = "";
loaded_msg = "";
unloaded_msg = "";
symbol = " ";
};
git_metrics = { disabled = false; };
git_status = {
# Remove trailing space from format string
format = "([\\[$all_status$ahead_behind\\]]($style))";
};
hostname = { format = "[$hostname]($style)"; };
julia = { format = language-format-string; };
nix_shell = {
symbol = "";
impure_msg = "/󰓑";
pure_msg = "/󱕦";
format = "[$symbol$state( ($name))]($style) ";
};
nodejs = { format = language-format-string; };
os = {
disabled = false;
symbols = {
AlmaLinux = "";
Alpine = "";
CentOS = "";
Debian = "";
Fedora = "";
Macos = "";
NixOS = "";
};
};
python = {
format =
"[\${symbol}\${pyenv_prefix}(\${version} )(($virtualenv) )]($style)";
symbol = "";
};
quarto = { format = language-format-string; };
rlang = {
format = language-format-string;
symbol = "";
};
ruby = {
format = language-format-string;
symbol = "";
};
shell = {
# Show which shell if not using zsh (the default)
disabled = false;
zsh_indicator = "";
style = "yellow bold";
};
username = { format = "[$user]($style)"; };
}; };
python = {
format =
"[\${symbol}\${pyenv_prefix}(\${version} )(($virtualenv) )]($style)";
symbol = "";
};
quarto = { format = language-format-string; };
rlang = {
format = language-format-string;
symbol = "";
};
ruby = {
format = language-format-string;
symbol = "";
};
shell = {
# Show which shell if not using zsh (the default)
disabled = false;
zsh_indicator = "";
style = "yellow bold";
};
username = { format = "[$user]($style)"; };
}; };
} }

View file

@ -1,81 +1,83 @@
{ { ... }: {
enable = true; programs.zed-editor = {
extensions = [ enable = true;
"basher" extensions = [
"clojure" "basher"
"cspell" "clojure"
"dockerfile" "cspell"
"earthfile" "dockerfile"
"git-firefly" "earthfile"
"html" "git-firefly"
"julia" "html"
"latex" "julia"
"macos-classic" "latex"
"nix" "macos-classic"
"r" "nix"
"toml" "r"
"xml" "toml"
]; "xml"
userSettings = { ];
agent = { userSettings = {
default_model = { agent = {
provider = "copilot_chat"; default_model = {
model = "gpt-4o"; provider = "copilot_chat";
}; model = "gpt-4.1";
};
auto_install_extensions = {
basher = true;
clojure = true;
cspell = true;
dockerfile = true;
earthfile = true;
git-firefly = true;
html = true;
julia = true;
latex = true;
macos-classic = true;
nix = true;
r = true;
toml = true;
xml = true;
};
buffer_font_family = "FiraCode Nerd Font";
buffer_font_size = 11;
features = { edit_prediction_provider = "zed"; };
languages = {
Julia = {
formatter = {
external = {
command = "julia";
arguments = [
"-e"
"using JuliaFormatter; print(format_text(String(read(stdin))));"
];
};
}; };
}; };
LaTeX = { auto_install_extensions = {
formatter = { basher = true;
external = { clojure = true;
command = "tex-fmt"; cspell = true;
arguments = [ "--stdin" ]; dockerfile = true;
earthfile = true;
git-firefly = true;
html = true;
julia = true;
latex = true;
macos-classic = true;
nix = true;
r = true;
toml = true;
xml = true;
};
buffer_font_family = "FiraCode Nerd Font";
buffer_font_size = 11;
features = { edit_prediction_provider = "zed"; };
languages = {
Julia = {
formatter = {
external = {
command = "julia";
arguments = [
"-e"
"using JuliaFormatter; print(format_text(String(read(stdin))));"
];
};
}; };
}; };
LaTeX = {
formatter = {
external = {
command = "tex-fmt";
arguments = [ "--stdin" ];
};
};
};
Nix = { formatter = { external = { command = "nixfmt"; }; }; };
}; };
Nix = { formatter = { external = { command = "nixfmt"; }; }; }; preview_tabs = { enabled = false; };
ssh_connections = [{
host = "anderson";
projects = [{ paths = [ "/var/docker" ]; }];
}];
show_edit_predictions = false;
terminal = {
font_family = "MesloLGS NF";
font_size = 10;
};
theme = "macOS Classic Dark2";
ui_font_size = 16;
wrap_guides = [ 80 92 120 ];
}; };
preview_tabs = { enabled = false; };
ssh_connections = [{
host = "anderson";
projects = [{ paths = [ "/var/docker" ]; }];
}];
show_edit_predictions = false;
terminal = {
font_family = "MesloLGS NF";
font_size = 10;
};
theme = "macOS Classic Dark2";
ui_font_size = 16;
wrap_guides = [ 80 92 120 ];
}; };
} }

11
services/gpg-agent.nix Normal file
View file

@ -0,0 +1,11 @@
{ ... }: {
services.gpg-agent = {
enable = true;
enableBashIntegration = true;
enableSshSupport = true;
enableZshIntegration = true;
defaultCacheTtl = 604800;
maxCacheTtl = 604800;
verbose = true;
};
}

View file

@ -1,4 +1,4 @@
{ config, pkgs, ... }: { config, ... }:
{ {
age.secrets = { age.secrets = {
@ -9,8 +9,7 @@
}; };
}; };
virtualisation = { virtualisation = {
quadlet = let inherit (config.virtualisation.quadlet) networks pods; quadlet = {
in {
containers = { containers = {
pihole = { pihole = {
containerConfig = { containerConfig = {