2020-06-17 19:01:57 +02:00
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
|
|
|
|
let
|
|
|
|
cfg = config.profiles.base;
|
2022-06-05 15:49:19 +02:00
|
|
|
in
|
|
|
|
{
|
2020-06-17 19:01:57 +02:00
|
|
|
options.machine = {
|
|
|
|
name = lib.mkOption {
|
2022-05-02 14:49:06 +02:00
|
|
|
type = lib.types.str;
|
2020-06-17 19:01:57 +02:00
|
|
|
};
|
2023-01-16 11:09:00 +01:00
|
|
|
cores = lib.mkOption {
|
|
|
|
type = lib.types.ints.positive;
|
|
|
|
default = 1;
|
|
|
|
};
|
2023-01-16 06:58:47 +01:00
|
|
|
systemd = lib.mkOption {
|
|
|
|
type = lib.types.bool;
|
|
|
|
default = true;
|
|
|
|
};
|
2022-06-05 15:49:19 +02:00
|
|
|
eth = lib.mkOption { };
|
|
|
|
wlan = lib.mkOption { };
|
2022-05-02 14:49:06 +02:00
|
|
|
secondary-fs = lib.mkOption {
|
2022-05-02 23:45:57 +02:00
|
|
|
type = lib.types.nullOr lib.types.nonEmptyStr;
|
|
|
|
default = null;
|
|
|
|
example = "''${env:HOME}";
|
2022-05-02 14:49:06 +02:00
|
|
|
};
|
2020-06-17 19:01:57 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
options.profiles.base = {
|
|
|
|
enable = lib.mkEnableOption "The base profile, should be always enabled";
|
2022-06-03 12:22:24 +02:00
|
|
|
plus = lib.mkEnableOption "Useful things you arguably don't NEED";
|
2020-06-17 19:01:57 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
config = lib.mkIf cfg.enable {
|
2022-06-07 14:50:22 +02:00
|
|
|
home.language = {
|
2022-06-28 15:44:45 +02:00
|
|
|
base = "nb_NO.utf8";
|
|
|
|
messages = "en_US.utf8";
|
2022-06-07 14:50:22 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2020-06-17 19:01:57 +02:00
|
|
|
home.packages = with pkgs; [
|
2022-12-01 16:27:16 +01:00
|
|
|
unstable.nix-output-monitor
|
2022-04-02 03:04:37 +02:00
|
|
|
nix-top
|
|
|
|
nix-index
|
2022-06-06 03:41:04 +02:00
|
|
|
nix-tree
|
2022-04-02 03:04:37 +02:00
|
|
|
unstable.comma
|
|
|
|
|
2023-04-27 23:26:48 +02:00
|
|
|
openvpn
|
|
|
|
|
2020-06-17 19:01:57 +02:00
|
|
|
ldns
|
2022-04-02 04:33:24 +02:00
|
|
|
mtr
|
2023-04-27 23:26:20 +02:00
|
|
|
nmap
|
|
|
|
inetutils
|
|
|
|
httpie
|
2020-06-17 19:01:57 +02:00
|
|
|
|
2020-07-11 04:08:58 +02:00
|
|
|
lsof
|
|
|
|
|
2020-06-17 19:01:57 +02:00
|
|
|
htop
|
2023-04-27 23:26:20 +02:00
|
|
|
progress
|
2020-06-17 19:01:57 +02:00
|
|
|
|
|
|
|
file
|
2024-04-18 12:01:54 +02:00
|
|
|
bintools
|
|
|
|
|
|
|
|
gh
|
2020-06-17 19:01:57 +02:00
|
|
|
tmux
|
2022-06-05 15:49:19 +02:00
|
|
|
|
2023-01-19 00:38:49 +01:00
|
|
|
timewarrior
|
|
|
|
|
2020-07-11 04:08:58 +02:00
|
|
|
unzip
|
|
|
|
p7zip
|
2022-04-02 03:04:37 +02:00
|
|
|
|
2024-04-18 12:01:54 +02:00
|
|
|
yt-dlp
|
|
|
|
|
2020-07-11 04:08:58 +02:00
|
|
|
parallel
|
|
|
|
sshfs
|
|
|
|
jq
|
2020-06-17 19:01:57 +02:00
|
|
|
|
2020-07-11 04:08:58 +02:00
|
|
|
ncdu
|
2020-06-17 19:01:57 +02:00
|
|
|
|
2020-07-11 04:08:58 +02:00
|
|
|
bat
|
2023-11-30 04:32:11 +01:00
|
|
|
eza
|
2020-07-11 04:08:58 +02:00
|
|
|
ripgrep
|
2024-05-26 00:49:00 +02:00
|
|
|
|
|
|
|
gregctl
|
2022-06-03 12:22:24 +02:00
|
|
|
] ++ lib.optionals cfg.plus [
|
2020-07-11 04:08:58 +02:00
|
|
|
ffmpeg-full
|
|
|
|
] ++ lib.optionals config.profiles.gui.enable [
|
2020-06-17 19:01:57 +02:00
|
|
|
mpv
|
|
|
|
sxiv
|
2024-04-18 12:01:54 +02:00
|
|
|
gnome3.eog
|
2022-04-24 18:37:29 +02:00
|
|
|
|
2022-06-05 15:49:19 +02:00
|
|
|
dolphin
|
|
|
|
plasma5Packages.dolphin-plugins
|
2021-12-23 05:22:49 +01:00
|
|
|
ffmpegthumbs
|
|
|
|
plasma5Packages.kdegraphics-thumbnailers
|
2022-06-05 15:49:19 +02:00
|
|
|
plasma5Packages.kio
|
|
|
|
plasma5Packages.kio-extras
|
2021-12-23 05:22:49 +01:00
|
|
|
krename
|
|
|
|
konsole # https://bugs.kde.org/show_bug.cgi?id=407990 reeee
|
|
|
|
|
2024-06-01 10:52:37 +02:00
|
|
|
gedit
|
2022-06-03 12:22:24 +02:00
|
|
|
|
|
|
|
gimp
|
|
|
|
] ++ lib.optionals (config.profiles.gui.enable && cfg.plus) [
|
|
|
|
mumble
|
|
|
|
|
2022-06-05 15:49:19 +02:00
|
|
|
# texlive.combined.scheme-full
|
|
|
|
# kile
|
2021-06-01 13:10:33 +02:00
|
|
|
libreoffice
|
2022-06-03 12:22:24 +02:00
|
|
|
thunderbird
|
|
|
|
|
2020-06-17 19:01:57 +02:00
|
|
|
kdenlive
|
|
|
|
frei0r
|
2022-06-03 12:22:24 +02:00
|
|
|
audacity
|
|
|
|
inkscape
|
|
|
|
blender
|
|
|
|
|
|
|
|
mkvtoolnix
|
2023-11-04 23:28:47 +01:00
|
|
|
] ++ lib.optionals (config.profiles.gui.enable && (config ? nixpkgs && config.nixpkgs.config.allowUnfree) ) [
|
2024-03-20 11:02:04 +01:00
|
|
|
# geogebra
|
2020-06-17 19:01:57 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
programs.firefox = {
|
2020-07-11 04:08:58 +02:00
|
|
|
enable = config.profiles.gui.enable;
|
2021-12-22 04:55:24 +01:00
|
|
|
profiles = {
|
|
|
|
daniel = {
|
|
|
|
settings = {
|
|
|
|
"browser.startup.homepage" = "https://nixos.org";
|
|
|
|
};
|
|
|
|
bookmarks = {
|
|
|
|
"NixOS Options" = {
|
2024-05-26 00:49:00 +02:00
|
|
|
keyword = "nxo";
|
2021-12-22 04:55:24 +01:00
|
|
|
url = "https://search.nixos.org/options?query=%s";
|
|
|
|
};
|
|
|
|
"NixOS Packages" = {
|
2024-05-26 00:49:00 +02:00
|
|
|
keyword = "nxp";
|
2021-12-22 04:55:24 +01:00
|
|
|
url = "https://search.nixos.org/packages?query=%s";
|
|
|
|
};
|
|
|
|
"Home-Manager Options" = {
|
|
|
|
keyword = "hm";
|
|
|
|
url = "https://rycee.gitlab.io/home-manager/options.html#opt-%s";
|
|
|
|
};
|
|
|
|
};
|
2024-05-26 00:49:00 +02:00
|
|
|
extensions = with pkgs.nur.repos.rycee.firefox-addons; [ cookies-txt no-pdf-download sponsorblock ublock-origin ];
|
2021-12-22 04:55:24 +01:00
|
|
|
};
|
|
|
|
};
|
2020-06-17 19:01:57 +02:00
|
|
|
};
|
|
|
|
|
2022-12-09 03:42:20 +01:00
|
|
|
|
2022-06-03 12:22:24 +02:00
|
|
|
programs.obs-studio.enable = (config.profiles.gui.enable && cfg.plus);
|
2020-06-17 19:01:57 +02:00
|
|
|
|
|
|
|
|
2022-12-28 03:51:09 +01:00
|
|
|
programs.tealdeer.enable = true;
|
2022-12-09 03:42:20 +01:00
|
|
|
|
2022-06-05 15:46:48 +02:00
|
|
|
programs.helix = {
|
|
|
|
enable = true;
|
2022-06-08 04:56:02 +02:00
|
|
|
package = pkgs.helix;
|
2022-06-07 13:41:14 +02:00
|
|
|
settings = let
|
|
|
|
b = command: ":insert-output " + command;
|
|
|
|
c = chars: b "printf " + chars;
|
|
|
|
in {
|
2022-06-05 15:46:48 +02:00
|
|
|
editor.line-number = "relative";
|
|
|
|
editor.mouse = false;
|
|
|
|
keys.normal = {
|
2022-06-07 13:41:14 +02:00
|
|
|
# Empty keys: Ø, æ, Æ, å, Å, *, [ ]
|
2022-06-05 15:46:48 +02:00
|
|
|
"ø" = "collapse_selection"; # For ;
|
|
|
|
"minus" = "search"; # For /
|
|
|
|
"_" = "rsearch"; # for =
|
2022-06-08 04:56:02 +02:00
|
|
|
"+" = "trim_selections"; # for _
|
2022-06-07 13:41:14 +02:00
|
|
|
"å" = {
|
|
|
|
"d" = "goto_prev_diag"; # for [d
|
|
|
|
"D" = "goto_first_diag";
|
|
|
|
"f" = "goto_prev_function";
|
|
|
|
"c" = "goto_prev_class";
|
|
|
|
"a" = "goto_prev_parameter";
|
|
|
|
"o" = "goto_prev_comment";
|
|
|
|
"p" = "goto_prev_paragraph";
|
|
|
|
"space" = "add_newline_above";
|
|
|
|
};
|
|
|
|
"¨" = {
|
|
|
|
"d" = "goto_next_diag";
|
|
|
|
"D" = "goto_last_diag";
|
|
|
|
"f" = "goto_next_function";
|
|
|
|
"c" = "goto_next_class";
|
|
|
|
"a" = "goto_next_parameter";
|
|
|
|
"o" = "goto_next_comment";
|
|
|
|
"p" = "goto_next_paragraph";
|
|
|
|
"space" = "add_newline_below";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
keys.insert = {
|
|
|
|
"S-tab" = "unindent";
|
|
|
|
# Poor man's US-Keyboard
|
2022-12-28 17:58:03 +01:00
|
|
|
"Å" = [(c "{}") "move_char_right"];
|
2022-06-07 13:41:14 +02:00
|
|
|
"º" = c "Å";
|
|
|
|
"^" = c "}";
|
|
|
|
"¤" = c "^";
|
2022-06-05 15:46:48 +02:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2022-08-02 02:46:39 +02:00
|
|
|
programs.vscode = {
|
|
|
|
enable = config.profiles.gui.enable;
|
|
|
|
package = pkgs.vscodium;
|
|
|
|
extensions = with pkgs.vscode-extensions; [
|
|
|
|
bbenoist.nix
|
2022-10-04 01:57:51 +02:00
|
|
|
|
|
|
|
matklad.rust-analyzer
|
|
|
|
vadimcn.vscode-lldb
|
|
|
|
] ++ lib.optionals config.nixpkgs.config.allowUnfree [
|
2022-08-02 02:46:39 +02:00
|
|
|
ms-vsliveshare.vsliveshare
|
|
|
|
];
|
|
|
|
userSettings = {
|
|
|
|
"editor.insertSpaces" = false;
|
|
|
|
"terminal.integrated.fontFamily" = "MesloLGS NF";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2020-06-17 19:01:57 +02:00
|
|
|
programs.git = {
|
|
|
|
enable = true;
|
|
|
|
userEmail = "daniel.olsen99@gmail.com";
|
|
|
|
userName = "Daniel Olsen";
|
2022-06-05 03:21:50 +02:00
|
|
|
aliases = {
|
|
|
|
absorb = "!${pkgs.git-absorb}/bin/git-absorb";
|
2022-06-06 22:03:28 +02:00
|
|
|
revise = "!${pkgs.git-revise}/bin/git-revise";
|
2022-06-05 03:21:50 +02:00
|
|
|
rc = "rebase --continue";
|
|
|
|
n = "!git commit --all --amend --no-edit && git rc";
|
|
|
|
};
|
2022-07-25 03:38:03 +02:00
|
|
|
ignores = [
|
2022-12-09 03:42:20 +01:00
|
|
|
".envrc"
|
2022-07-25 03:38:03 +02:00
|
|
|
".direnv"
|
2023-05-19 10:02:27 +02:00
|
|
|
".devenv"
|
2022-10-17 22:24:44 +02:00
|
|
|
".vscode"
|
2022-07-25 03:38:03 +02:00
|
|
|
];
|
2020-12-12 15:26:49 +01:00
|
|
|
extraConfig = {
|
2022-06-05 15:49:19 +02:00
|
|
|
pull.rebase = true;
|
2023-04-27 12:02:42 +02:00
|
|
|
sequence.editor = let
|
|
|
|
# girt = pkgs.unstable.git-interactive-rebase-tool.overrideAttrs (old: rec {
|
|
|
|
# src = pkgs.fetchFromGitHub {
|
|
|
|
# owner = "Dali99";
|
|
|
|
# repo = "git-interactive-rebase-tool";
|
|
|
|
# rev = "590f87d8ed16992373e214bca5994f89c69fa942";
|
|
|
|
# sha256 = "sha256-vUjqnt5ZSpzoohkzDXEqTMhMEkYzPMUZiaYWS0ZQcPQ=";
|
|
|
|
# };
|
|
|
|
# cargoDeps = old.cargoDeps.overrideAttrs (oldB: {
|
|
|
|
# name = "${oldB.name}";
|
|
|
|
# inherit src;
|
|
|
|
# outputHash = "sha256-/I465/PlOckvov9PgSCg7CN5hEKeeQCw8rPsvpKJons=";
|
|
|
|
# });
|
|
|
|
# });
|
|
|
|
girt = pkgs.git-interactive-rebase-tool;
|
|
|
|
in "${girt}/bin/interactive-rebase-tool";
|
2024-04-18 12:01:54 +02:00
|
|
|
branch.sort = "-committerdate";
|
2024-04-18 12:05:42 +02:00
|
|
|
gpg.format = "ssh";
|
|
|
|
user.signingKey = "~/.ssh/id_rsa.pub";
|
2020-12-12 15:26:49 +01:00
|
|
|
};
|
2022-04-02 04:02:44 +02:00
|
|
|
delta.enable = true;
|
2020-06-17 19:01:57 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2021-12-22 04:57:40 +01:00
|
|
|
programs.ssh = {
|
|
|
|
enable = true;
|
|
|
|
matchBlocks = {
|
|
|
|
"lilith" = {
|
2023-08-05 21:46:35 +02:00
|
|
|
hostname = "lilith.daniel";
|
2021-12-22 04:57:40 +01:00
|
|
|
user = "dandellion";
|
|
|
|
};
|
|
|
|
"desktop" = {
|
2023-08-05 21:46:35 +02:00
|
|
|
hostname = "desktop.daniel";
|
2021-12-22 04:57:40 +01:00
|
|
|
user = "dan";
|
|
|
|
};
|
2024-02-23 11:00:50 +01:00
|
|
|
"ubuntu-ai" = {
|
|
|
|
hostname = "100.64.0.2";
|
|
|
|
port = 2222;
|
|
|
|
user = "daniel";
|
|
|
|
};
|
2021-12-22 04:57:40 +01:00
|
|
|
"laptop" = {
|
2023-08-05 21:46:35 +02:00
|
|
|
hostname = "laptop.daniel";
|
2021-12-22 04:57:40 +01:00
|
|
|
user = "daniel";
|
|
|
|
};
|
|
|
|
"pvv.ntnu.no" = {
|
|
|
|
user = "danio";
|
|
|
|
};
|
|
|
|
"*.pvv.ntnu.no" = {
|
|
|
|
user = "danio";
|
|
|
|
};
|
2023-11-06 10:30:09 +01:00
|
|
|
"pascal" = {
|
|
|
|
hostname = "wiki.wackattack.eu";
|
|
|
|
port = 1337;
|
|
|
|
user = "dandellion";
|
|
|
|
};
|
|
|
|
"ireul" = {
|
|
|
|
hostname = "62.92.111.85";
|
|
|
|
port = 1337;
|
|
|
|
user = "dandellion";
|
|
|
|
};
|
2022-04-02 03:08:29 +02:00
|
|
|
"gitlab.stud.idi.ntnu.no" = {
|
|
|
|
proxyJump = "login.pvv.ntnu.no";
|
|
|
|
};
|
2021-12-22 04:57:40 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2020-06-17 19:01:57 +02:00
|
|
|
services.gpg-agent = {
|
|
|
|
enable = true;
|
|
|
|
defaultCacheTtl = 1800;
|
|
|
|
enableSshSupport = true;
|
|
|
|
};
|
|
|
|
|
2022-06-05 15:46:48 +02:00
|
|
|
home.sessionVariables = {
|
|
|
|
EDITOR = "hx";
|
2024-05-26 00:49:00 +02:00
|
|
|
GRZEGORZ_DEFAULT_API_BASE = "https://georg.pvv.ntnu.no/api";
|
2022-06-05 15:46:48 +02:00
|
|
|
};
|
2022-06-05 15:49:19 +02:00
|
|
|
|
2021-12-23 05:23:15 +01:00
|
|
|
xdg.mimeApps = {
|
|
|
|
enable = true;
|
|
|
|
defaultApplications = {
|
|
|
|
"image/png" = [ "sxiv.desktop" "gimp.desktop" ];
|
2022-06-05 03:21:50 +02:00
|
|
|
"image/jpeg" = [ "sxiv.desktop" ];
|
2022-06-05 15:46:48 +02:00
|
|
|
"text/plain" = [ "Helix.desktop" "gedit.desktop" "code.desktop" ];
|
2022-04-24 18:43:06 +02:00
|
|
|
"video/x-matroska" = [ "mpv.desktop" ];
|
2022-04-02 03:09:11 +02:00
|
|
|
};
|
|
|
|
associations.removed = {
|
|
|
|
"text/plain" = [ "writer.desktop" ];
|
2021-12-23 05:23:15 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
fonts.fontconfig.enable = config.profiles.gui.enable;
|
2020-06-17 19:01:57 +02:00
|
|
|
};
|
|
|
|
}
|