wip
This commit is contained in:
79
config/home-manager/auto-start.nix
Normal file
79
config/home-manager/auto-start.nix
Normal file
@ -0,0 +1,79 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
systemd.user.services = {
|
||||
onepassword-autostart = {
|
||||
Unit = {
|
||||
Description = "Start 1Password on login";
|
||||
After = [ "graphical-session-pre.target" ];
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${pkgs._1password-gui}/bin/1password";
|
||||
Restart = "no";
|
||||
};
|
||||
Install = {
|
||||
WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
};
|
||||
|
||||
trayscale-autostart = {
|
||||
Unit = {
|
||||
Description = "Start Trayscale on login";
|
||||
After = [ "graphical-session-pre.target" ];
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${pkgs.trayscale}/bin/trayscale";
|
||||
Restart = "no";
|
||||
};
|
||||
Install = {
|
||||
WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
};
|
||||
|
||||
vesktop-autostart = {
|
||||
Unit = {
|
||||
Description = "Start Vesktop on login";
|
||||
After = [ "graphical-session-pre.target" ];
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${pkgs.vesktop}/bin/vesktop";
|
||||
Restart = "no";
|
||||
};
|
||||
Install = {
|
||||
WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
};
|
||||
|
||||
telegram-autostart = {
|
||||
Unit = {
|
||||
Description = "Start Telegram Desktop on login";
|
||||
After = [ "graphical-session-pre.target" ];
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${pkgs.telegram-desktop}/bin/telegram-desktop";
|
||||
Restart = "no";
|
||||
};
|
||||
Install = {
|
||||
WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
};
|
||||
|
||||
spotify-autostart = {
|
||||
Unit = {
|
||||
Description = "Start Spotify on login";
|
||||
After = [ "graphical-session-pre.target" ];
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${pkgs.spotify}/bin/spotify";
|
||||
Restart = "no";
|
||||
};
|
||||
Install = {
|
||||
WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
7
config/home-manager/dconf.nix
Normal file
7
config/home-manager/dconf.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
dconf = {
|
||||
enable = true;
|
||||
settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
|
||||
};
|
||||
}
|
28
config/home-manager/flake.nix
Normal file
28
config/home-manager/flake.nix
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
description = "Home Manager configuration";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
firefox-addons = {
|
||||
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { nixpkgs, home-manager, firefox-addons, ... }@inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in {
|
||||
homeConfigurations."yourusername" = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
|
||||
modules = [ ./home.nix ];
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
};
|
||||
};
|
||||
}
|
7
config/home-manager/fonts.nix
Normal file
7
config/home-manager/fonts.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
fonts.fontconfig.enable = true;
|
||||
home.packages = [
|
||||
(pkgs.nerdfonts.override { fonts = [ "Hack" "FiraCode" "Meslo" "FiraCode" "DroidSansMono" ]; })
|
||||
];
|
||||
}
|
30
config/home-manager/home.nix
Normal file
30
config/home-manager/home.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{ config, pkgs, ... }: {
|
||||
imports = [
|
||||
./vscode.nix
|
||||
./fonts.nix
|
||||
./kitty.nix
|
||||
./dconf.nix
|
||||
./keyboard-shortcuts.nix
|
||||
./virtualization.nix
|
||||
./packages.nix
|
||||
./auto-start.nix
|
||||
];
|
||||
|
||||
nixpkgs = {
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
allowUnfreePredicate = (_: true);
|
||||
};
|
||||
};
|
||||
|
||||
home.username = "menno";
|
||||
home.homeDirectory = "/home/menno";
|
||||
home.stateVersion = "24.05";
|
||||
home.file = { };
|
||||
|
||||
home.sessionVariables = {
|
||||
GOROOT = "${pkgs.go}/share/go";
|
||||
GOPATH = "${config.home.homeDirectory}/go";
|
||||
PATH = "${config.home.homeDirectory}/go/bin:$PATH";
|
||||
};
|
||||
}
|
34
config/home-manager/keyboard-shortcuts.nix
Normal file
34
config/home-manager/keyboard-shortcuts.nix
Normal file
@ -0,0 +1,34 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
dconf.settings = {
|
||||
"org/gnome/settings-daemon/plugins/media-keys" = {
|
||||
custom-keybindings = [
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal/"
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/1password-quick-access/"
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/screenshot/"
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/missioncenter/"
|
||||
];
|
||||
};
|
||||
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = {
|
||||
binding = "<Primary><Alt>t";
|
||||
command = "kitty";
|
||||
name = "open-terminal";
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/1password-quick-access" = {
|
||||
binding = "<Ctrl><Alt>space";
|
||||
command = "1password --quick-access";
|
||||
name = "1password-quick-access";
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/screenshot" = {
|
||||
binding = "<Shift><Alt>4";
|
||||
command = "flameshot gui";
|
||||
name = "screenshot";
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/missioncenter" = {
|
||||
binding = "<Ctrl><Shift>Escape";
|
||||
command = "missioncenter";
|
||||
name = "missioncenter";
|
||||
};
|
||||
};
|
||||
}
|
22
config/home-manager/kitty.nix
Normal file
22
config/home-manager/kitty.nix
Normal file
@ -0,0 +1,22 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
font = {
|
||||
name = "Hack Nerd Font";
|
||||
size = 14;
|
||||
};
|
||||
|
||||
settings = {
|
||||
dynamic_background_opacity = true;
|
||||
background_opacity = "0.85";
|
||||
background_blur = 32;
|
||||
};
|
||||
|
||||
|
||||
shellIntegration.enableFishIntegration = true;
|
||||
theme = "Catppuccin-Macchiato";
|
||||
#Also available: Catppuccin-Frappe Catppuccin-Latte Catppuccin-Macchiato Catppuccin-Mocha
|
||||
# See all available kitty themes at: https://github.com/kovidgoyal/kitty-themes/blob/46d9dfe230f315a6a0c62f4687f6b3da20fd05e4/themes.json
|
||||
};
|
||||
}
|
116
config/home-manager/packages.nix
Normal file
116
config/home-manager/packages.nix
Normal file
@ -0,0 +1,116 @@
|
||||
{ pkgs, ... }: {
|
||||
imports = [
|
||||
./packages/firefox.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# General packages
|
||||
git
|
||||
gnupg
|
||||
gh
|
||||
nixfmt-rfc-style
|
||||
wget
|
||||
|
||||
# Package management
|
||||
flatpak
|
||||
pipx
|
||||
|
||||
# Development SDKs/Toolkits
|
||||
gcc
|
||||
pkg-config
|
||||
gnumake
|
||||
stdenv.cc
|
||||
go
|
||||
rustc
|
||||
cargo
|
||||
cargo-edit
|
||||
cargo-watch
|
||||
cargo-audit
|
||||
cargo-expand
|
||||
cargo-tarpaulin
|
||||
pyenv
|
||||
act # GitHub Actions CLI
|
||||
|
||||
# File and directory operations
|
||||
eza # Modern ls
|
||||
bat # Modern cat
|
||||
zoxide # Smarter cd command
|
||||
broot # Interactive directory navigator
|
||||
du-dust # Modern du
|
||||
duf # Modern df
|
||||
zip
|
||||
unzip
|
||||
|
||||
# Search and text processing
|
||||
ripgrep # Modern grep
|
||||
sd # Modern sed
|
||||
choose # Modern cut
|
||||
jq # JSON processor
|
||||
yq # YAML processor
|
||||
xsv # CSV processor
|
||||
|
||||
# System monitoring and process management
|
||||
procs # Modern ps
|
||||
bottom # Modern top/htop
|
||||
hyperfine # Benchmarking tool
|
||||
bandwhich # Network utilization tool
|
||||
doggo # Modern dig
|
||||
gping # Ping with graph
|
||||
|
||||
# Development utilities
|
||||
delta # Better git diff
|
||||
difftastic # Structural diff tool
|
||||
mcfly # Better shell history
|
||||
fzf # Fuzzy finder
|
||||
tokei # Code statistics
|
||||
tealdeer # Modern tldr client
|
||||
lazygit # Terminal UI for git
|
||||
|
||||
# Shell and terminal
|
||||
starship # Cross-shell prompt
|
||||
zellij # Modern terminal multiplexer
|
||||
nushell # Modern shell
|
||||
|
||||
# File viewers and processors
|
||||
hexyl # Modern hexdump
|
||||
chafa # Terminal image viewer
|
||||
glow # Markdown renderer
|
||||
|
||||
# Editors
|
||||
neovim
|
||||
nano
|
||||
micro
|
||||
|
||||
# Lolz
|
||||
fortune
|
||||
cowsay
|
||||
cmatrix
|
||||
figlet
|
||||
|
||||
# GUI Applications
|
||||
## Utilities
|
||||
mission-center
|
||||
flameshot
|
||||
gnome.gnome-tweaks
|
||||
pinta
|
||||
bottles
|
||||
trayscale
|
||||
|
||||
## Chat Apps
|
||||
telegram-desktop
|
||||
betterdiscordctl
|
||||
vesktop
|
||||
whatsapp-for-linux
|
||||
signal-desktop
|
||||
|
||||
## Multimedia
|
||||
spotify
|
||||
plex-media-player
|
||||
|
||||
## Astronomy
|
||||
stellarium
|
||||
|
||||
## Games
|
||||
openra
|
||||
];
|
||||
}
|
132
config/home-manager/packages/firefox.nix
Normal file
132
config/home-manager/packages/firefox.nix
Normal file
@ -0,0 +1,132 @@
|
||||
{ config, pkgs, inputs, ... }:
|
||||
{
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
|
||||
profiles.default = {
|
||||
id = 0;
|
||||
name = "default";
|
||||
isDefault = true;
|
||||
|
||||
settings = {
|
||||
"browser.startup.homepage" = "about:home";
|
||||
|
||||
# Disable irritating first-run stuff
|
||||
"browser.disableResetPrompt" = true;
|
||||
"browser.download.panel.shown" = true;
|
||||
"browser.feeds.showFirstRunUI" = false;
|
||||
"browser.messaging-system.whatsNewPanel.enabled" = false;
|
||||
"browser.rights.3.shown" = true;
|
||||
"browser.shell.checkDefaultBrowser" = false;
|
||||
"browser.shell.defaultBrowserCheckCount" = 1;
|
||||
"browser.startup.homepage_override.mstone" = "ignore";
|
||||
"browser.uitour.enabled" = false;
|
||||
"startup.homepage_override_url" = "";
|
||||
"trailhead.firstrun.didSeeAboutWelcome" = true;
|
||||
"browser.bookmarks.restore_default_bookmarks" = false;
|
||||
"browser.bookmarks.addedImportButton" = true;
|
||||
|
||||
# Don't ask for download dir
|
||||
"browser.download.useDownloadDir" = false;
|
||||
|
||||
# Disable crappy home activity stream page
|
||||
"browser.newtabpage.activity-stream.feeds.topsites" = false;
|
||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts" = false;
|
||||
|
||||
# Disable some telemetry
|
||||
"app.shield.optoutstudies.enabled" = false;
|
||||
"browser.discovery.enabled" = false;
|
||||
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
|
||||
"browser.newtabpage.activity-stream.telemetry" = false;
|
||||
"browser.ping-centre.telemetry" = false;
|
||||
"datareporting.healthreport.service.enabled" = false;
|
||||
"datareporting.healthreport.uploadEnabled" = false;
|
||||
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||
"datareporting.sessions.current.clean" = true;
|
||||
"devtools.onboarding.telemetry.logged" = false;
|
||||
"toolkit.telemetry.archive.enabled" = false;
|
||||
"toolkit.telemetry.bhrPing.enabled" = false;
|
||||
"toolkit.telemetry.enabled" = false;
|
||||
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
||||
"toolkit.telemetry.hybridContent.enabled" = false;
|
||||
"toolkit.telemetry.newProfilePing.enabled" = false;
|
||||
"toolkit.telemetry.prompted" = 2;
|
||||
"toolkit.telemetry.rejected" = true;
|
||||
"toolkit.telemetry.reportingpolicy.firstRun" = false;
|
||||
"toolkit.telemetry.server" = "";
|
||||
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
||||
"toolkit.telemetry.unified" = false;
|
||||
"toolkit.telemetry.unifiedIsOptIn" = false;
|
||||
"toolkit.telemetry.updatePing.enabled" = false;
|
||||
|
||||
"sidebar.revamp" = true;
|
||||
"sidebar.verticalTabs" = true;
|
||||
|
||||
# Disable "save password" prompt
|
||||
"signon.rememberSignons" = false;
|
||||
# Harden
|
||||
"privacy.trackingprotection.enabled" = true;
|
||||
"dom.security.https_only_mode" = true;
|
||||
# Layout
|
||||
"browser.uiCustomization.state" = builtins.toJSON {
|
||||
currentVersion = 20;
|
||||
newElementCount = 5;
|
||||
dirtyAreaCache = ["nav-bar" "PersonalToolbar" "toolbar-menubar" "TabsToolbar" "widget-overflow-fixed-list"];
|
||||
placements = {
|
||||
PersonalToolbar = ["personal-bookmarks"];
|
||||
TabsToolbar = ["tabbrowser-tabs" "alltabs-button"];
|
||||
nav-bar = ["back-button" "forward-button" "stop-reload-button" "urlbar-container" "downloads-button" "ublock0_raymondhill_net-browser-action" "_testpilot-containers-browser-action" "reset-pbm-toolbar-button" "unified-extensions-button"];
|
||||
toolbar-menubar = ["menubar-items"];
|
||||
unified-extensions-area = [];
|
||||
widget-overflow-fixed-list = [];
|
||||
};
|
||||
seen = ["save-to-pocket-button" "developer-button" "ublock0_raymondhill_net-browser-action" "_testpilot-containers-browser-action"];
|
||||
};
|
||||
};
|
||||
|
||||
extensions = with pkgs.inputs.firefox-addons; [
|
||||
ublock-origin
|
||||
browserpass
|
||||
];
|
||||
|
||||
search = {
|
||||
force = true;
|
||||
default = "DuckDuckGo";
|
||||
privateDefault = "DuckDuckGo";
|
||||
|
||||
engines = {
|
||||
"DuckDuckGo".metaData.hidden = false;
|
||||
"Google".metaData.hidden = true;
|
||||
"Amazon.com".metaData.hidden = true;
|
||||
"Bing".metaData.hidden = true;
|
||||
"eBay".metaData.hidden = true;
|
||||
"Qwant".metaData.hidden = true;
|
||||
|
||||
# Add custom golink search engine
|
||||
"golink" = {
|
||||
urls = [ { template = "http://go/%s"; } ];
|
||||
iconUpdateURL = "";
|
||||
updateInterval = 24 * 60 * 60 * 1000;
|
||||
definedAliases = [ "go" ];
|
||||
};
|
||||
};
|
||||
|
||||
# Order of search engines in the search bar
|
||||
order = [
|
||||
"DuckDuckGo"
|
||||
"golink"
|
||||
];
|
||||
};
|
||||
|
||||
# Optional: Additional Firefox preferences you might want
|
||||
settings = {
|
||||
"browser.startup.page" = 3; # Restore previous session
|
||||
"browser.download.dir" = "${config.home.homeDirectory}/Downloads";
|
||||
"browser.download.folderList" = 2;
|
||||
"browser.toolbars.bookmarks.visibility" = "never";
|
||||
"privacy.donottrackheader.enabled" = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
9
config/home-manager/virtualization.nix
Normal file
9
config/home-manager/virtualization.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
virt-manager
|
||||
virt-viewer
|
||||
qemu
|
||||
OVMF
|
||||
];
|
||||
}
|
53
config/home-manager/vscode.nix
Normal file
53
config/home-manager/vscode.nix
Normal file
@ -0,0 +1,53 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
vscode = {
|
||||
enable = true;
|
||||
mutableExtensionsDir = true;
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
ms-azuretools.vscode-docker
|
||||
ms-vscode-remote.remote-containers
|
||||
ms-vscode-remote.remote-ssh
|
||||
ms-vscode-remote.remote-ssh-edit
|
||||
ms-vscode.makefile-tools
|
||||
ms-vsliveshare.vsliveshare
|
||||
bbenoist.nix
|
||||
aaron-bond.better-comments
|
||||
alexisvt.flutter-snippets
|
||||
bmewburn.vscode-intelephense-client
|
||||
christian-kohler.path-intellisense
|
||||
dart-code.dart-code
|
||||
dart-code.flutter
|
||||
esbenp.prettier-vscode
|
||||
foxundermoon.shell-format
|
||||
github.vscode-github-actions
|
||||
github.vscode-pull-request-github
|
||||
usernamehw.errorlens
|
||||
vincaslt.highlight-matching-tag
|
||||
vscode-icons-team.vscode-icons
|
||||
golang.go
|
||||
davidanson.vscode-markdownlint
|
||||
bbenoist.nix
|
||||
brettm12345.nixfmt-vscode
|
||||
yzhang.markdown-all-in-one
|
||||
xdebug.php-debug
|
||||
github.copilot
|
||||
github.copilot-chat
|
||||
];
|
||||
# ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||
# {
|
||||
# name = "warpnet.salt-lint";
|
||||
# publisher = "warpnet";
|
||||
# version = "latest";
|
||||
# }
|
||||
# {
|
||||
# name = "mguellsegarra.highlight-on-copy";
|
||||
# publisher = "mguellsegarra";
|
||||
# version = "latest";
|
||||
# }
|
||||
# ];
|
||||
};
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user