pull/73/head
Vivian 2022-08-23 22:31:19 +02:00
parent 12c415edf7
commit 09f38ef5bf
9 changed files with 364 additions and 13 deletions

1
.envrc Normal file
View File

@ -0,0 +1 @@
use flake

1
.gitignore vendored
View File

@ -1 +1,2 @@
result
.direnv

View File

@ -314,16 +314,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1661119194,
"narHash": "sha256-PDcdGfv/HIx1i23fiYnpmD1dV1HSzoPbl/utRRnFygg=",
"owner": "nixos",
"lastModified": 1661208473,
"narHash": "sha256-EcoSSCrhc/qkoACcbB1Q2zi1jiFvb93kb4SS1AbviFw=",
"owner": "NULLx76",
"repo": "nixpkgs",
"rev": "5cccf8e32927aef22b074a4cc7520e024ca6a14a",
"rev": "a73f576bc51a194b6cf77580f84b60c610e0bbbe",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable-small",
"owner": "NULLx76",
"ref": "direnv-vscode-extension",
"repo": "nixpkgs",
"type": "github"
}

View File

@ -6,7 +6,7 @@
# * https://git.voidcorp.nl/j00lz/nixos-configs/src/branch/main/flake.nix
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable-small";
nixpkgs.url = "github:NULLx76/nixpkgs/direnv-vscode-extension";
colmena.url = "github:zhaofengli/colmena";
colmena.inputs.nixpkgs.follows = "nixpkgs";
@ -49,7 +49,12 @@
# Script to apply local colmena deployments
apply-local = pkgs.writeScriptBin "apply-local" ''
#!${pkgs.stdenv.shell}
"${colmena.packages.x86_64-linux.colmena}"/bin/colmena apply-local --sudo --node "$(cat /proc/sys/kernel/hostname).$(cat /proc/sys/kernel/domainname)"
"${colmena.packages.x86_64-linux.colmena}"/bin/colmena apply-local --sudo
'';
dump-dconf = pkgs.writeScriptBin "dump-dconf" ''
#!${pkgs.stdenv.shell}
dconf dump / | dconf2nix > nixos/hosts/thalassa/null/dconf.nix
'';
in
{
@ -79,9 +84,10 @@
devShells.${system}.default = pkgs.mkShell {
VAULT_ADDR = "http://vault.olympus:8200/";
# This only support bash so just execute zsh in bash as a workaround :/
shellHook = "zsh; exit $?";
# shellHook = "zsh; exit $?";
buildInputs = with pkgs; [
apply-local
dump-dconf
colmena.packages.x86_64-linux.colmena
fluxcd
k9s

View File

@ -17,6 +17,7 @@
# Nix Settings
nix = {
package = pkgs.nixUnstable;
registry.nixpkgs.flake = inputs.nixpkgs;
settings = {
auto-optimise-store = true;
trusted-users = [ "root" "victor" ];

View File

@ -26,6 +26,7 @@ in
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.systemd-boot.configurationLimit = 6;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.efi.efiSysMountPoint = "/boot/efi";
boot.kernelPackages = pkgs.linuxPackages_latest;
@ -35,6 +36,16 @@ in
networking.interfaces.wlp0s20f3.useDHCP = true;
fileSystems."/".options = [ "compress=zstd" ];
# Filesystem dedup
services.beesd.filesystems = {
root = {
spec = "LABEL=nixos";
hashTableSizeMB = 256;
verbosity = "crit";
extraOptions = [ "--loadavg-target" "2.0" ];
};
};
# Select internationalisation properties.
i18n.defaultLocale = "en_GB.utf8";
@ -100,12 +111,13 @@ in
};
environment.systemPackages = with pkgs; [
gnome.gnome-tweaks
pciutils
nvidia-offload
vim
wireguard-tools
gnome.gnome-tweaks
gnome.dconf-editor
gnomeExtensions.appindicator
gnomeExtensions.wireguard-indicator
];
@ -133,6 +145,11 @@ in
'';
};
nix.extraOptions = ''
keep-outputs = true
keep-derivations = true
'';
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave

View File

@ -0,0 +1,267 @@
# Generated via dconf2nix: https://github.com/gvolpe/dconf2nix
{ lib, ... }:
with lib.hm.gvariant;
{
dconf.settings = {
"apps/seahorse/listing" = {
keyrings-selected = [ "secret-service:///org/freedesktop/secrets/collection/login" ];
};
"apps/seahorse/windows/key-manager" = {
height = 476;
width = 600;
};
"ca/desrt/dconf-editor" = {
saved-pathbar-path = "/org/gnome/settings-daemon/plugins/media-keys/custom0/binding";
saved-view = "/org/gnome/settings-daemon/plugins/media-keys/custom0/binding";
window-height = 500;
window-is-maximized = false;
window-width = 540;
};
"com/uploadedlobster/peek" = {
persist-window-geometry = mkTuple [ 953 214 ];
recording-output-format = "webm";
recording-start-delay = 1;
};
"es/atareao/wireguard-indicator" = {
darktheme = false;
nmcli = true;
services = [ "service1|wg-quick@wg0.service" "service2|wg-quick@wg1.service" ];
sudo = false;
};
"org/gnome/Totem" = {
active-plugins = [ "vimeo" "variable-rate" "skipto" "screenshot" "screensaver" "save-file" "rotation" "recent" "movie-properties" "open-directory" "mpris" "autoload-subtitles" "apple-trailers" ];
subtitle-encoding = "UTF-8";
};
"org/gnome/calendar" = {
active-view = "month";
window-maximized = true;
window-size = mkTuple [ 768 600 ];
};
"org/gnome/control-center" = {
last-panel = "keyboard";
window-state = mkTuple [ 980 640 ];
};
"org/gnome/desktop/app-folders" = {
folder-children = [ "Utilities" "YaST" ];
};
"org/gnome/desktop/app-folders/folders/Utilities" = {
apps = [ "gnome-abrt.desktop" "gnome-system-log.desktop" "nm-connection-editor.desktop" "org.gnome.baobab.desktop" "org.gnome.Connections.desktop" "org.gnome.DejaDup.desktop" "org.gnome.Dictionary.desktop" "org.gnome.DiskUtility.desktop" "org.gnome.eog.desktop" "org.gnome.Evince.desktop" "org.gnome.FileRoller.desktop" "org.gnome.fonts.desktop" "org.gnome.seahorse.Application.desktop" "org.gnome.tweaks.desktop" "org.gnome.Usage.desktop" "vinagre.desktop" ];
categories = [ "X-GNOME-Utilities" ];
name = "X-GNOME-Utilities.directory";
translate = true;
};
"org/gnome/desktop/app-folders/folders/YaST" = {
categories = [ "X-SuSE-YaST" ];
name = "suse-yast.directory";
translate = true;
};
"org/gnome/desktop/input-sources" = {
sources = [ (mkTuple [ "xkb" "us+altgr-intl" ]) ];
xkb-options = [ "terminate:ctrl_alt_bksp" "caps:swapescape" ];
};
"org/gnome/desktop/interface" = {
color-scheme = "default";
font-antialiasing = "grayscale";
font-hinting = "slight";
gtk-theme = "Arc-Darker";
show-battery-percentage = true;
};
"org/gnome/desktop/notifications" = {
application-children = [ "gnome-power-panel" "code" "org-gnome-console" "codium" "discord" "org-gnome-totem" "com-uploadedlobster-peek" ];
};
"org/gnome/desktop/notifications/application/code" = {
application-id = "code.desktop";
};
"org/gnome/desktop/notifications/application/codium" = {
application-id = "codium.desktop";
};
"org/gnome/desktop/notifications/application/com-uploadedlobster-peek" = {
application-id = "com.uploadedlobster.peek.desktop";
};
"org/gnome/desktop/notifications/application/discord" = {
application-id = "discord.desktop";
};
"org/gnome/desktop/notifications/application/gnome-power-panel" = {
application-id = "gnome-power-panel.desktop";
};
"org/gnome/desktop/notifications/application/org-gnome-console" = {
application-id = "org.gnome.Console.desktop";
};
"org/gnome/desktop/notifications/application/org-gnome-totem" = {
application-id = "org.gnome.Totem.desktop";
};
"org/gnome/desktop/peripherals/touchpad" = {
tap-to-click = true;
two-finger-scrolling-enabled = true;
};
"org/gnome/desktop/search-providers" = {
sort-order = [ "org.gnome.Contacts.desktop" "org.gnome.Documents.desktop" "org.gnome.Nautilus.desktop" ];
};
"org/gnome/desktop/session" = {
idle-delay = mkUint32 300;
};
"org/gnome/desktop/sound" = {
event-sounds = true;
theme-name = "__custom";
};
"org/gnome/desktop/wm/keybindings" = {
move-to-workspace-1 = [ "<Shift><Super>exclam" ];
move-to-workspace-2 = [ "<Shift><Super>at" ];
move-to-workspace-3 = [ "<Shift><Super>numbersign" ];
move-to-workspace-4 = [ "<Shift><Super>dollar" ];
switch-to-workspace-1 = [ "<Super>1" ];
switch-to-workspace-2 = [ "<Super>2" ];
switch-to-workspace-3 = [ "<Super>3" ];
switch-to-workspace-4 = [ "<Super>4" ];
switch-to-workspace-5 = [ "<Super>5" ];
switch-to-workspace-6 = [ "<Super>6" ];
switch-to-workspace-7 = [ "<Super>7" ];
switch-to-workspace-8 = [ "<Super>8" ];
switch-to-workspace-9 = [ "<Super>9" ];
};
"org/gnome/desktop/wm/preferences" = {
focus-mode = "sloppy";
num-workspaces = 9;
};
"org/gnome/epiphany" = {
ask-for-default = false;
};
"org/gnome/epiphany/state" = {
is-maximized = false;
window-position = mkTuple [ (-1) (-1) ];
window-size = mkTuple [ 1024 768 ];
};
"org/gnome/evolution-data-server" = {
migrated = true;
network-monitor-gio-name = "";
};
"org/gnome/file-roller/dialogs/extract" = {
recreate-folders = true;
skip-newer = false;
};
"org/gnome/file-roller/listing" = {
show-path = false;
};
"org/gnome/mutter" = {
attach-modal-dialogs = true;
dynamic-workspaces = false;
edge-tiling = true;
focus-change-on-pointer-rest = true;
workspaces-only-on-primary = false;
};
"org/gnome/nautilus/preferences" = {
default-folder-viewer = "icon-view";
search-filter-time-type = "last_modified";
};
"org/gnome/nautilus/window-state" = {
initial-size = mkTuple [ 890 550 ];
maximized = false;
};
"org/gnome/nm-applet/eap/97297cfa-75d0-4653-84a7-67940e6e828a" = {
ignore-ca-cert = true;
ignore-phase2-ca-cert = false;
};
"org/gnome/settings-daemon/plugins/media-keys" = {
custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom0/" ];
};
"org/gnome/settings-daemon/plugins/media-keys/custom0" = {
binding = "<Super>Return";
command = "kgx";
name = "Open Terminal";
};
"org/gnome/settings-daemon/plugins/power" = {
power-button-action = "suspend";
};
"org/gnome/shell" = {
disabled-extensions = [ "window-list@gnome-shell-extensions.gcampax.github.com" ];
enabled-extensions = [ "wireguard-indicator@atareao.es" "appindicatorsupport@rgcjonas.gmail.com" ];
favorite-apps = [ "firefox.desktop" "org.gnome.Nautilus.desktop" "org.gnome.Console.desktop" ];
had-bluetooth-devices-setup = true;
welcome-dialog-last-shown-version = "42.4";
};
"org/gnome/shell/app-switcher" = {
current-workspace-only = true;
};
"org/gnome/shell/keybindings" = {
switch-to-application-1 = [];
switch-to-application-2 = [];
switch-to-application-3 = [];
switch-to-application-4 = [];
};
"org/gnome/shell/world-clocks" = {
locations = "@av []";
};
"org/gnome/tweaks" = {
show-extensions-notice = false;
};
"org/gtk/settings/file-chooser" = {
date-format = "regular";
location-mode = "path-bar";
show-hidden = false;
show-size-column = true;
show-type-column = true;
sidebar-width = 157;
sort-column = "name";
sort-directories-first = false;
sort-order = "ascending";
type-format = "category";
window-position = mkTuple [ 0 32 ];
window-size = mkTuple [ 1203 902 ];
};
"system/locale" = {
region = "en_DK.UTF-8";
};
"system/proxy" = {
mode = "none";
};
};
}

View File

@ -1,8 +1,12 @@
{ config, pkgs, ... }: {
{ config, pkgs, lib, ... }: {
home.username = "victor";
home.homeDirectory = "/home/victor";
home.stateVersion = "22.05";
imports = [
./dconf.nix
];
home.packages = with pkgs; [
discord
rnix-lsp
@ -18,6 +22,8 @@
rust-analyzer
steam-run
texlive.combined.scheme-full
retroarchFull
peek
];
programs.git = {
@ -44,11 +50,20 @@
package = pkgs.vscode;
extensions = with pkgs.vscode-extensions; [
matklad.rust-analyzer
mkhl.direnv
jnoortheen.nix-ide
james-yu.latex-workshop
valentjn.vscode-ltex
];
};
programs.direnv = {
enable = true;
nix-direnv = {
enable = true;
};
};
programs.zsh.enable = true;
gtk = {
enable = true;
@ -59,4 +74,45 @@
};
services.syncthing.enable = true;
# dconf.settings =
# let
# inherit (builtins) length head tail listToAttrs genList;
# range = a: b: if a < b then [ a ] ++ range (a + 1) b else [ ];
# globalPath = "org/gnome/settings-daemon/plugins/media-keys";
# path = "${globalPath}/custom-keybindings";
# mkPath = id: "${globalPath}/custom${toString id}";
# isEmpty = list: length list == 0;
# mkSettings = settings:
# let
# checkSettings = { name, command, binding }@this: this;
# aux = i: list:
# if isEmpty list then [ ] else
# let
# hd = head list;
# tl = tail list;
# name = mkPath i;
# in
# aux (i + 1) tl ++ [{
# name = mkPath i;
# value = checkSettings hd;
# }];
# settingsList = (aux 0 settings);
# in
# listToAttrs (settingsList ++ [
# {
# name = globalPath;
# value = {
# custom-keybindings = genList (i: "/${mkPath i}/") (length settingsList);
# };
# }
# ]);
# in
# mkSettings [
# {
# name = "Open Terminal";
# command = "kgx";
# binding = "<Super>Return";
# }
# ];
}

View File

@ -31,8 +31,10 @@ rec {
};
};
mkColmenaHost = { ip ? null, hostname, tags, realm, type ? "lxc", ... }@host: {
"${hostname}.${realm}" = {
mkColmenaHost = { ip ? null, hostname, tags, realm, type ? "lxc", ... }@host: let
name = if realm == "thalassa" then hostname else "${hostname}.${realm}";
in{
"${name}" = {
imports = resolve_imports host;
networking = {
hostName = hostname;