This commit is contained in:
2024-10-30 21:55:48 +01:00
parent 19a1d70af1
commit 93e963cd65
47 changed files with 1007 additions and 1016 deletions

View 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" ];
};
};
};
}

View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
dconf = {
enable = true;
settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
};
}

View 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; };
};
};
}

View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
fonts.fontconfig.enable = true;
home.packages = [
(pkgs.nerdfonts.override { fonts = [ "Hack" "FiraCode" "Meslo" "FiraCode" "DroidSansMono" ]; })
];
}

View 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";
};
}

View 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";
};
};
}

View 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
};
}

View 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
];
}

View 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;
};
};
};
}

View File

@ -0,0 +1,9 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
virt-manager
virt-viewer
qemu
OVMF
];
}

View 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";
# }
# ];
};
};
}