add code formatter and reformat

This commit is contained in:
Tim Schubert 2022-08-04 21:05:37 +02:00
parent a055f4fa40
commit 8cd6ed1502
Signed by: dadada
GPG key ID: EEB8D1CE62C4DFEA
69 changed files with 1016 additions and 797 deletions

View file

@ -30,5 +30,5 @@
}; };
}; };
outputs = { ... } @ args: import ./outputs.nix args; outputs = {...} @ args: import ./outputs.nix args;
} }

View file

@ -1,31 +1,29 @@
{ self
, nixpkgs
, home-manager
}@inputs:
let
hmConfiguration =
{ homeDirectory ? "/home/dadada"
, extraModules ? [ ]
, system ? "x86_64-linux"
, username ? "dadada"
, stateVersion
}:
(home-manager.lib.homeManagerConfiguration {
configuration = { ... }: {
imports = (nixpkgs.lib.attrValues self.hmModules) ++ extraModules;
nixpkgs = {
config = import ./nixpkgs-config.nix {
pkgs = nixpkgs;
};
};
manual.manpages.enable = false;
};
inherit system homeDirectory username stateVersion;
});
in
{ {
self,
nixpkgs,
home-manager,
} @ inputs: let
hmConfiguration = {
homeDirectory ? "/home/dadada",
extraModules ? [],
system ? "x86_64-linux",
username ? "dadada",
stateVersion,
}: (home-manager.lib.homeManagerConfiguration {
configuration = {...}: {
imports = (nixpkgs.lib.attrValues self.hmModules) ++ extraModules;
nixpkgs = {
config = import ./nixpkgs-config.nix {
pkgs = nixpkgs;
};
};
manual.manpages.enable = false;
};
inherit system homeDirectory username stateVersion;
});
in {
home = hmConfiguration { home = hmConfiguration {
extraModules = [ ./home ]; extraModules = [./home];
stateVersion = "20.09"; stateVersion = "20.09";
}; };
} }

View file

@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
useFeatures = [ useFeatures = [
"alacritty" "alacritty"
#"emacs" #"emacs"
@ -14,8 +18,7 @@ let
"xdg" "xdg"
"zsh" "zsh"
]; ];
in in {
{
programs.git = { programs.git = {
signing = { signing = {
key = "D68C84695C087E0F733A28D0EEB8D1CE62C4DFEA"; key = "D68C84695C087E0F733A28D0EEB8D1CE62C4DFEA";
@ -27,25 +30,27 @@ in
programs.gpg.settings.default-key = "99658A3EB5CD7C13"; programs.gpg.settings.default-key = "99658A3EB5CD7C13";
dadada.home = lib.attrsets.genAttrs useFeatures (useFeatures: { enable = true; }) // { dadada.home =
session = { lib.attrsets.genAttrs useFeatures (useFeatures: {enable = true;})
enable = true; // {
sessionVars = { session = {
EDITOR = "vim"; enable = true;
PAGER = "less"; sessionVars = {
MAILDIR = "\$HOME/.var/mail"; EDITOR = "vim";
MBLAZE = "\$HOME/.config/mblaze"; PAGER = "less";
NOTMUCH_CONFIG = "\$HOME/.config/notmuch/config"; MAILDIR = "\$HOME/.var/mail";
MBLAZE = "\$HOME/.config/mblaze";
NOTMUCH_CONFIG = "\$HOME/.config/notmuch/config";
};
}; };
}; };
};
# Languagetool server for web extension # Languagetool server for web extension
systemd.user.services."languagetool-http-server" = { systemd.user.services."languagetool-http-server" = {
Unit = { Unit = {
Description = "Languagetool HTTP server"; Description = "Languagetool HTTP server";
PartOf = [ "graphical-session-pre.target" ]; PartOf = ["graphical-session-pre.target"];
After = [ "graphical-session.target" ]; After = ["graphical-session.target"];
}; };
Service = { Service = {
@ -54,11 +59,11 @@ in
Restart = "always"; Restart = "always";
}; };
Install = { WantedBy = [ "graphical-session.target" ]; }; Install = {WantedBy = ["graphical-session.target"];};
}; };
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.
programs.home-manager.enable = true; programs.home-manager.enable = true;
home.packages = import ./pkgs.nix { pkgs = pkgs; }; home.packages = import ./pkgs.nix {pkgs = pkgs;};
} }

View file

@ -1,4 +1,4 @@
{ pkgs }: {pkgs}:
with pkgs; [ with pkgs; [
anki anki
aqbanking aqbanking

View file

@ -1,9 +1,12 @@
{ pkgs, lib, config, ... }:
with lib;
let
cfg = config.dadada.home.alacritty;
in
{ {
pkgs,
lib,
config,
...
}:
with lib; let
cfg = config.dadada.home.alacritty;
in {
options.dadada.home.alacritty = { options.dadada.home.alacritty = {
enable = mkEnableOption "Enable alacritty config"; enable = mkEnableOption "Enable alacritty config";
}; };
@ -78,12 +81,30 @@ in
}; };
indexed_colors = [ indexed_colors = [
{ index = 16; color = "0xffa500"; } {
{ index = 17; color = "0xb03060"; } index = 16;
{ index = 18; color = "0x282828"; } color = "0xffa500";
{ index = 19; color = "0x444155"; } }
{ index = 20; color = "0xb8b8b8"; } {
{ index = 21; color = "0xe8e8e8"; } index = 17;
color = "0xb03060";
}
{
index = 18;
color = "0x282828";
}
{
index = 19;
color = "0x444155";
}
{
index = 20;
color = "0xb8b8b8";
}
{
index = 21;
color = "0xe8e8e8";
}
]; ];
}; };
}; };

View file

@ -1,6 +1,9 @@
{ config, lib, ... }:
with lib;
{ {
config,
lib,
...
}:
with lib; {
options.dadada.home.colors = mkOption { options.dadada.home.colors = mkOption {
type = types.attrs; type = types.attrs;
description = "Color scheme"; description = "Color scheme";

View file

@ -1,9 +1,12 @@
{ self, nix-doom-emacs, ... }@inputs:
{ {
self,
nix-doom-emacs,
...
} @ inputs: {
alacritty = import ./alacritty; alacritty = import ./alacritty;
colors = import ./colors.nix; colors = import ./colors.nix;
direnv = import ./direnv.nix; direnv = import ./direnv.nix;
emacs = import ./emacs { inherit nix-doom-emacs; }; emacs = import ./emacs {inherit nix-doom-emacs;};
fish = import ./fish.nix; fish = import ./fish.nix;
git = import ./git.nix; git = import ./git.nix;
gpg = import ./gpg.nix; gpg = import ./gpg.nix;

View file

@ -1,9 +1,12 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.dadada.home.direnv;
in
{ {
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.home.direnv;
in {
options.dadada.home.direnv = { options.dadada.home.direnv = {
enable = mkEnableOption "Enable direnv config"; enable = mkEnableOption "Enable direnv config";
}; };

View file

@ -1,11 +1,13 @@
{ nix-doom-emacs, ... }: {nix-doom-emacs, ...}: {
{ config, pkgs, lib, ... }: config,
with lib; pkgs,
let lib,
...
}:
with lib; let
cfg = config.dadada.home.emacs; cfg = config.dadada.home.emacs;
in in {
{ imports = [nix-doom-emacs.hmModule];
imports = [ nix-doom-emacs.hmModule ];
options.dadada.home.emacs = { options.dadada.home.emacs = {
enable = mkEnableOption "Enable dadada emacs config"; enable = mkEnableOption "Enable dadada emacs config";
}; };
@ -13,58 +15,57 @@ in
programs.doom-emacs = { programs.doom-emacs = {
enable = true; enable = true;
doomPrivateDir = ./doom.d; doomPrivateDir = ./doom.d;
emacsPackagesOverlay = self: super: with pkgs; { emacsPackagesOverlay = self: super:
tsc = super.tsc.overrideAttrs (old: with pkgs; {
let tsc = super.tsc.overrideAttrs (old: let
libtsc_dyn = rustPlatform.buildRustPackage rec { libtsc_dyn = rustPlatform.buildRustPackage rec {
pname = "emacs-tree-sitter"; pname = "emacs-tree-sitter";
version = "0.15.1"; version = "0.15.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ubolonton"; owner = "ubolonton";
repo = "emacs-tree-sitter"; repo = "emacs-tree-sitter";
rev = version; rev = version;
sha256 = "sha256-WgkGtmw63+kRLTRiSEO4bFF2IguH5g4odCujyazkwJc="; sha256 = "sha256-WgkGtmw63+kRLTRiSEO4bFF2IguH5g4odCujyazkwJc=";
};
preBuild = ''
export BINDGEN_EXTRA_CLANG_ARGS="$(< ${stdenv.cc}/nix-support/libc-crt1-cflags) \
$(< ${stdenv.cc}/nix-support/libc-cflags) \
$(< ${stdenv.cc}/nix-support/cc-cflags) \
$(< ${stdenv.cc}/nix-support/libcxx-cxxflags) \
${lib.optionalString stdenv.cc.isClang "-idirafter ${stdenv.cc.cc}/lib/clang/${lib.getVersion stdenv.cc.cc}/include"} \
${lib.optionalString stdenv.cc.isGNU
"-isystem ${stdenv.cc.cc}/lib/gcc/${stdenv.hostPlatform.config}/${lib.getVersion stdenv.cc.cc}/include/"} \
${lib.optionalString stdenv.cc.isGNU
"-isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc} -isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc}/${stdenv.hostPlatform.config}"} \
$NIX_CFLAGS_COMPILE"
'';
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
cargoHash = "sha256-HB5tFR1slY2D6jb2mt4KrGrGBUUVrxiBjmVycO+qfYY=";
}; };
in {
inherit (libtsc_dyn) src;
preBuild = '' preBuild = ''
export BINDGEN_EXTRA_CLANG_ARGS="$(< ${stdenv.cc}/nix-support/libc-crt1-cflags) \ ext=${stdenv.hostPlatform.extensions.sharedLibrary}
$(< ${stdenv.cc}/nix-support/libc-cflags) \ dest=$out/share/emacs/site-lisp/elpa/tsc-${old.version}
$(< ${stdenv.cc}/nix-support/cc-cflags) \ install -D ${libtsc_dyn}/lib/libtsc_dyn$ext $dest/tsc-dyn$ext
$(< ${stdenv.cc}/nix-support/libcxx-cxxflags) \ echo -n "0.15.1" > $dest/DYN-VERSION
${lib.optionalString stdenv.cc.isClang "-idirafter ${stdenv.cc.cc}/lib/clang/${lib.getVersion stdenv.cc.cc}/include"} \
${lib.optionalString stdenv.cc.isGNU
"-isystem ${stdenv.cc.cc}/lib/gcc/${stdenv.hostPlatform.config}/${lib.getVersion stdenv.cc.cc}/include/"} \
${lib.optionalString stdenv.cc.isGNU
"-isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc} -isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc}/${stdenv.hostPlatform.config}"} \
$NIX_CFLAGS_COMPILE"
''; '';
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib"; });
cargoHash = "sha256-HB5tFR1slY2D6jb2mt4KrGrGBUUVrxiBjmVycO+qfYY="; tree-sitter-langs = super.tree-sitter-langs.overrideAttrs (old: {
}; postInstall = ''
in dest=$out/share/emacs/site-lisp/elpa/tree-sitter-langs-${old.version}
{ echo -n "0.10.2" > $dest/BUNDLE-VERSION
inherit (libtsc_dyn) src; ${lib.concatStringsSep "\n"
preBuild = '' (lib.mapAttrsToList (name: src: "name=${name}; ln -s ${src}/parser $dest/bin/\${name#tree-sitter-}.so") pkgs.tree-sitter.builtGrammars)};
ext=${stdenv.hostPlatform.extensions.sharedLibrary} '';
dest=$out/share/emacs/site-lisp/elpa/tsc-${old.version} });
install -D ${libtsc_dyn}/lib/libtsc_dyn$ext $dest/tsc-dyn$ext };
echo -n "0.15.1" > $dest/DYN-VERSION
'';
});
tree-sitter-langs = super.tree-sitter-langs.overrideAttrs (old: {
postInstall = ''
dest=$out/share/emacs/site-lisp/elpa/tree-sitter-langs-${old.version}
echo -n "0.10.2" > $dest/BUNDLE-VERSION
${lib.concatStringsSep "\n"
(lib.mapAttrsToList (name: src: "name=${name}; ln -s ${src}/parser $dest/bin/\${name#tree-sitter-}.so") pkgs.tree-sitter.builtGrammars)};
'';
});
};
}; };
home.file.".tree-sitter".source = (pkgs.runCommand "grammars" {} '' home.file.".tree-sitter".source = pkgs.runCommand "grammars" {} ''
mkdir -p $out/bin mkdir -p $out/bin
echo -n "0.10.2" > $out/BUNDLE-VERSION echo -n "0.10.2" > $out/BUNDLE-VERSION
${lib.concatStringsSep "\n" ${lib.concatStringsSep "\n"
(lib.mapAttrsToList (name: src: "name=${name}; ln -s ${src}/parser $out/bin/\${name#tree-sitter-}.so") pkgs.tree-sitter.builtGrammars)}; (lib.mapAttrsToList (name: src: "name=${name}; ln -s ${src}/parser $out/bin/\${name#tree-sitter-}.so") pkgs.tree-sitter.builtGrammars)};
''); '';
}; };
} }

View file

@ -1,9 +1,12 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.dadada.home.fish;
in
{ {
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.home.fish;
in {
options.dadada.home.fish = { options.dadada.home.fish = {
enable = mkEnableOption "Enable fish config"; enable = mkEnableOption "Enable fish config";
}; };
@ -11,15 +14,17 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.fish = { programs.fish = {
enable = true; enable = true;
plugins = with pkgs; [{ plugins = with pkgs; [
name = "fzf"; {
src = pkgs.fetchFromGitHub { name = "fzf";
owner = "jethrokuan"; src = pkgs.fetchFromGitHub {
repo = "fzf"; owner = "jethrokuan";
rev = "c3defd4a922e97120503b45e26efa775bc672b50"; repo = "fzf";
sha256 = "1k5b0nva0mbqc9830qhbcwxsi8d9b2p4ws1fq0bw9nkf2ripyp4p"; rev = "c3defd4a922e97120503b45e26efa775bc672b50";
}; sha256 = "1k5b0nva0mbqc9830qhbcwxsi8d9b2p4ws1fq0bw9nkf2ripyp4p";
}]; };
}
];
interactiveShellInit = '' interactiveShellInit = ''
# fish git prompt # fish git prompt
set __fish_git_prompt_show_informative_status 'yes' set __fish_git_prompt_show_informative_status 'yes'
@ -75,6 +80,6 @@ in
}; };
}; };
home.packages = [ pkgs.exa ]; home.packages = [pkgs.exa];
}; };
} }

View file

@ -1,9 +1,12 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.dadada.home.git;
in
{ {
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.dadada.home.git;
in {
options.dadada.home.git = { options.dadada.home.git = {
enable = mkEnableOption "Enable git config"; enable = mkEnableOption "Enable git config";
}; };
@ -16,7 +19,7 @@ in
tab-in-indent = true; tab-in-indent = true;
tabwidth = 4; tabwidth = 4;
}; };
alias = { }; alias = {};
pager = "delta"; pager = "delta";
}; };
column.ui = "never"; column.ui = "never";

View file

@ -1,9 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.dadada.home.gpg;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.dadada.home.gpg;
in {
options.dadada.home.gpg = { options.dadada.home.gpg = {
enable = mkEnableOption "Enable GnuPG config"; enable = mkEnableOption "Enable GnuPG config";
}; };
@ -29,7 +31,7 @@ in
}; };
programs.git.extraConfig = { programs.git.extraConfig = {
commit = { gpgSign = true; }; commit = {gpgSign = true;};
}; };
}; };
} }

View file

@ -1,9 +1,12 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.dadada.home.gtk;
in
{ {
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.dadada.home.gtk;
in {
options.dadada.home.gtk = { options.dadada.home.gtk = {
enable = mkEnableOption "Enable GTK config"; enable = mkEnableOption "Enable GTK config";
}; };

View file

@ -1,16 +1,18 @@
{ config, lib, ... }:
with lib;
let
cfg = config.dadada.home.keyring;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.dadada.home.keyring;
in {
options.dadada.home.keyring = { options.dadada.home.keyring = {
enable = mkEnableOption "Enable keyring config"; enable = mkEnableOption "Enable keyring config";
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.gnome-keyring = { services.gnome-keyring = {
enable = false; enable = false;
components = [ "pkcs11" "secrets" ]; components = ["pkcs11" "secrets"];
}; };
}; };
} }

View file

@ -1,9 +1,12 @@
{ pkgs, lib, config, ... }:
with lib;
let
cfg = config.dadada.home.kitty;
in
{ {
pkgs,
lib,
config,
...
}:
with lib; let
cfg = config.dadada.home.kitty;
in {
options.dadada.home.kitty = { options.dadada.home.kitty = {
enable = mkEnableOption "Enable kitty config"; enable = mkEnableOption "Enable kitty config";
}; };
@ -12,6 +15,6 @@ in
enable = true; enable = true;
extraConfig = builtins.readFile ./config; extraConfig = builtins.readFile ./config;
}; };
home.packages = [ pkgs.source-code-pro ]; home.packages = [pkgs.source-code-pro];
}; };
} }

View file

@ -1,9 +1,13 @@
{ config, lib, pkgs, colors, ... }:
with lib;
let
cfg = config.dadada.home.mako;
in
{ {
config,
lib,
pkgs,
colors,
...
}:
with lib; let
cfg = config.dadada.home.mako;
in {
options.dadada.home.mako = { options.dadada.home.mako = {
enable = mkEnableOption "Enable mako config"; enable = mkEnableOption "Enable mako config";
}; };

View file

@ -1,15 +1,17 @@
{ config, lib, ... }:
with lib;
let
cfg = config.dadada.home.session;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.dadada.home.session;
in {
options.dadada.home.session = { options.dadada.home.session = {
enable = mkEnableOption "Enable session variable management"; enable = mkEnableOption "Enable session variable management";
sessionVars = mkOption { sessionVars = mkOption {
description = "Session variables"; description = "Session variables";
type = types.attrs; type = types.attrs;
default = { }; default = {};
example = '' example = ''
EDITOR = "vim"; EDITOR = "vim";
PAGER = "less"; PAGER = "less";

View file

@ -1,9 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.dadada.home.ssh;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.dadada.home.ssh;
in {
options.dadada.home.ssh = { options.dadada.home.ssh = {
enable = mkEnableOption "Enable SSH config"; enable = mkEnableOption "Enable SSH config";
}; };

View file

@ -1,9 +1,13 @@
{ config, pkgs, lib, colors, ... }:
with lib;
let
cfg = config.dadada.home.sway;
in
{ {
config,
pkgs,
lib,
colors,
...
}:
with lib; let
cfg = config.dadada.home.sway;
in {
options.dadada.home.sway = { options.dadada.home.sway = {
enable = mkEnableOption "Enable Sway config"; enable = mkEnableOption "Enable Sway config";
}; };
@ -26,7 +30,7 @@ in
wayland.windowManager.sway = { wayland.windowManager.sway = {
enable = true; enable = true;
config = null; config = null;
extraConfig = (builtins.readFile ./config); extraConfig = builtins.readFile ./config;
extraSessionCommands = '' extraSessionCommands = ''
export SDL_VIDEODRIVER=wayland export SDL_VIDEODRIVER=wayland
# needs qt5.qtwayland in systemPackages # needs qt5.qtwayland in systemPackages

View file

@ -1,9 +1,12 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.dadada.home.syncthing;
in
{ {
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.home.syncthing;
in {
options.dadada.home.syncthing = { options.dadada.home.syncthing = {
enable = mkEnableOption "Enable Syncthing config"; enable = mkEnableOption "Enable Syncthing config";
}; };

View file

@ -1,14 +1,13 @@
{ config
, lib
, pkgs
, colors ? ../../lib/colors.nix
, ...
}:
with lib;
let
cfg = config.dadada.home.termite;
in
{ {
config,
lib,
pkgs,
colors ? ../../lib/colors.nix,
...
}:
with lib; let
cfg = config.dadada.home.termite;
in {
options.dadada.home.termite = { options.dadada.home.termite = {
enable = mkEnableOption "Enable termite config"; enable = mkEnableOption "Enable termite config";
}; };

View file

@ -1,9 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.dadada.home.tmux;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.dadada.home.tmux;
in {
options.dadada.home.tmux = { options.dadada.home.tmux = {
enable = mkEnableOption "Enable tmux config"; enable = mkEnableOption "Enable tmux config";
}; };

View file

@ -1,10 +1,13 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.dadada.home.vim;
vimPlugins = pkgs.callPackage ../../../pkgs/vimPlugins { };
in
{ {
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.home.vim;
vimPlugins = pkgs.callPackage ../../../pkgs/vimPlugins {};
in {
options.dadada.home.vim = { options.dadada.home.vim = {
enable = mkEnableOption "Enable VIM config"; enable = mkEnableOption "Enable VIM config";
}; };

View file

@ -1,6 +1,10 @@
{ config, pkgs, lib, ... }: {
with lib; config,
let pkgs,
lib,
...
}:
with lib; let
apps = { apps = {
"x-scheme-handler/mailto" = "userapp-Thunderbird-PB7NI0.desktop"; "x-scheme-handler/mailto" = "userapp-Thunderbird-PB7NI0.desktop";
"message/rfc822" = "userapp-Thunderbird-PB7NI0.desktop"; "message/rfc822" = "userapp-Thunderbird-PB7NI0.desktop";
@ -19,8 +23,7 @@ let
"application/pdf" = "org.pwmt.zathura.desktop"; "application/pdf" = "org.pwmt.zathura.desktop";
}; };
cfg = config.dadada.home.xdg; cfg = config.dadada.home.xdg;
in in {
{
options.dadada.home.xdg = { options.dadada.home.xdg = {
enable = mkEnableOption "Enable XDG config"; enable = mkEnableOption "Enable XDG config";
}; };

View file

@ -1,9 +1,12 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.dadada.home.zsh;
in
{ {
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.home.zsh;
in {
options.dadada.home.zsh = { options.dadada.home.zsh = {
enable = mkEnableOption "Enable ZSH config"; enable = mkEnableOption "Enable ZSH config";
}; };

View file

@ -1,7 +1,6 @@
{ pkgs }: {pkgs}: {
{
allowUnfree = true; allowUnfree = true;
allowUnfreePredicate = (pkg: true); allowUnfreePredicate = pkg: true;
allowBroken = false; allowBroken = false;
android_sdk.accept_license = true; android_sdk.accept_license = true;
} }

View file

@ -1,5 +1,4 @@
{ pkgs }: {pkgs}:
with pkgs.lib; { with pkgs.lib; {
# TODO # TODO
} }

View file

@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }:
{ {
config,
pkgs,
lib,
...
}: {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
]; ];
@ -44,10 +48,10 @@
networking.bridges = { networking.bridges = {
"br-lan" = { "br-lan" = {
interfaces = [ "lan" ]; interfaces = ["lan"];
}; };
"br-backup" = { "br-backup" = {
interfaces = [ "backup" ]; interfaces = ["backup"];
}; };
}; };

View file

@ -1,24 +1,28 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ {
imports = config,
[ (modulesPath + "/installer/scan/not-detected.nix") lib,
pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "ehci_pci" "usb_storage" "sd_mod" "sdhci_pci" ]; boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "ehci_pci" "usb_storage" "sd_mod" "sdhci_pci"];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/sda1"; device = "/dev/sda1";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=root" ]; options = ["subvol=root"];
}; };
swapDevices = [ ]; swapDevices = [];
# The global useDHCP flag is deprecated, therefore explicitly set to false here. # The global useDHCP flag is deprecated, therefore explicitly set to false here.
# Per-interface useDHCP will be mandatory in the future, so this generated config # Per-interface useDHCP will be mandatory in the future, so this generated config

View file

@ -1,84 +1,97 @@
{ self {
, admins self,
, nixpkgs admins,
, nixosSystem nixpkgs,
, home-manager nixosSystem,
, homePage home-manager,
, nixos-hardware homePage,
, nvd nixos-hardware,
, scripts nvd,
, recipemd scripts,
}: recipemd,
let }: let
adapterModule = system: { adapterModule = system: {
nixpkgs.config.allowUnfreePredicate = (pkg: true); nixpkgs.config.allowUnfreePredicate = pkg: true;
nixpkgs.overlays = (nixpkgs.lib.attrValues self.overlays) ++ [ nixpkgs.overlays =
(final: prev: { homePage = homePage.defaultPackage.${system}; }) (nixpkgs.lib.attrValues self.overlays)
(final: prev: { s = scripts; }) ++ [
(final: prev: { n = nvd; }) (final: prev: {homePage = homePage.defaultPackage.${system};})
(final: prev: { recipemd = recipemd.defaultPackage.${system}; }) (final: prev: {s = scripts;})
]; (final: prev: {n = nvd;})
(final: prev: {recipemd = recipemd.defaultPackage.${system};})
];
}; };
lib = nixpkgs.lib; lib = nixpkgs.lib;
adminConfig = users: { adminConfig = users: {
dadada.admin.users = lib.getAttrs users admins; dadada.admin.users = lib.getAttrs users admins;
}; };
in in {
{
gorgon = nixosSystem rec { gorgon = nixosSystem rec {
system = "x86_64-linux"; system = "x86_64-linux";
modules = (nixpkgs.lib.attrValues self.nixosModules) ++ [ modules =
(adapterModule system) (nixpkgs.lib.attrValues self.nixosModules)
nixos-hardware.nixosModules.lenovo-thinkpad-t14s-amd-gen1 ++ [
home-manager.nixosModules.home-manager (adapterModule system)
{ nixos-hardware.nixosModules.lenovo-thinkpad-t14s-amd-gen1
home-manager.useGlobalPkgs = true; home-manager.nixosModules.home-manager
home-manager.useUserPackages = true; {
home-manager.sharedModules = (nixpkgs.lib.attrValues self.hmModules) ++ [ home-manager.useGlobalPkgs = true;
{ manual.manpages.enable = false;} home-manager.useUserPackages = true;
]; home-manager.sharedModules =
home-manager.users.dadada = import ../home/home; (nixpkgs.lib.attrValues self.hmModules)
} ++ [
./modules/profiles/laptop.nix {manual.manpages.enable = false;}
./gorgon/configuration.nix ];
]; home-manager.users.dadada = import ../home/home;
}
./modules/profiles/laptop.nix
./gorgon/configuration.nix
];
}; };
ifrit = nixosSystem rec { ifrit = nixosSystem rec {
system = "x86_64-linux"; system = "x86_64-linux";
modules = (nixpkgs.lib.attrValues self.nixosModules) ++ [ modules =
(adminConfig [ "dadada" ]) (nixpkgs.lib.attrValues self.nixosModules)
(adapterModule system) ++ [
./modules/profiles/server.nix (adminConfig ["dadada"])
./ifrit/configuration.nix (adapterModule system)
]; ./modules/profiles/server.nix
./ifrit/configuration.nix
];
}; };
surgat = nixosSystem rec { surgat = nixosSystem rec {
system = "x86_64-linux"; system = "x86_64-linux";
modules = (nixpkgs.lib.attrValues self.nixosModules) ++ [ modules =
(adminConfig [ "dadada" ]) (nixpkgs.lib.attrValues self.nixosModules)
(adapterModule system) ++ [
./modules/profiles/server.nix (adminConfig ["dadada"])
./surgat/configuration.nix (adapterModule system)
]; ./modules/profiles/server.nix
./surgat/configuration.nix
];
}; };
pruflas = nixosSystem rec { pruflas = nixosSystem rec {
system = "x86_64-linux"; system = "x86_64-linux";
modules = (nixpkgs.lib.attrValues self.nixosModules) ++ [ modules =
(adminConfig [ "dadada" ]) (nixpkgs.lib.attrValues self.nixosModules)
(adapterModule system) ++ [
./modules/profiles/laptop.nix (adminConfig ["dadada"])
./pruflas/configuration.nix (adapterModule system)
]; ./modules/profiles/laptop.nix
./pruflas/configuration.nix
];
}; };
agares = nixosSystem rec { agares = nixosSystem rec {
system = "x86_64-linux"; system = "x86_64-linux";
modules = (nixpkgs.lib.attrValues self.nixosModules) ++ [ modules =
(adminConfig [ "dadada" ]) (nixpkgs.lib.attrValues self.nixosModules)
(adapterModule system) ++ [
./modules/profiles/server.nix (adminConfig ["dadada"])
./agares/configuration.nix (adapterModule system)
]; ./modules/profiles/server.nix
./agares/configuration.nix
];
}; };
} }

View file

@ -1,6 +1,11 @@
{ config, pkgs, lib, ... }: {
let config,
signHook = pkgs.writeShellScript "/etc/nix/sign-cache.sh" pkgs,
lib,
...
}: let
signHook =
pkgs.writeShellScript "/etc/nix/sign-cache.sh"
'' ''
set -eu set -eu
set -f # disable globbing set -f # disable globbing
@ -9,20 +14,19 @@ let
echo "Signing paths" $OUT_PATHS echo "Signing paths" $OUT_PATHS
nix store sign --key-file /etc/nix/key.private $OUT_PATHS nix store sign --key-file /etc/nix/key.private $OUT_PATHS
''; '';
in in {
{
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
]; ];
nix.extraOptions = '' nix.extraOptions = ''
experimental-features = nix-command flakes experimental-features = nix-command flakes
# Prevent garbage collection for nix shell and direnv # Prevent garbage collection for nix shell and direnv
keep-outputs = true keep-outputs = true
keep-derivations = true keep-derivations = true
''; '';
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = ["kvm-amd"];
networking.hostName = "gorgon"; networking.hostName = "gorgon";
@ -39,9 +43,9 @@ in
networking = { networking = {
enableBsShare = true; enableBsShare = true;
localResolver = { localResolver = {
enable= true; enable = true;
uwu= true; uwu = true;
s0= true; s0 = true;
}; };
vpnExtension = "3"; vpnExtension = "3";
}; };
@ -99,23 +103,23 @@ in
users.users = { users.users = {
dadada = { dadada = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "libvirtd" "adbusers" "kvm" "video" "scanner" "lp" "docker" ]; extraGroups = ["wheel" "networkmanager" "libvirtd" "adbusers" "kvm" "video" "scanner" "lp" "docker"];
shell = "/run/current-system/sw/bin/zsh"; shell = "/run/current-system/sw/bin/zsh";
}; };
}; };
networking.hosts = { networking.hosts = {
"10.1.2.9" = [ "fgprinter.fginfo.tu-bs.de" ]; "10.1.2.9" = ["fgprinter.fginfo.tu-bs.de"];
"127.0.0.2" = [ "kanboard.dadada.li" ]; "127.0.0.2" = ["kanboard.dadada.li"];
}; };
networking.wireguard.interfaces.uwupn = { networking.wireguard.interfaces.uwupn = {
ips = [ "10.11.0.24/32" "fc00:1337:dead:beef::10.11.0.24/128" ]; ips = ["10.11.0.24/32" "fc00:1337:dead:beef::10.11.0.24/128"];
privateKeyFile = "/var/lib/wireguard/uwu"; privateKeyFile = "/var/lib/wireguard/uwu";
peers = [ peers = [
{ {
publicKey = "tuoiOWqgHz/lrgTcLjX+xIhvxh9jDH6gmDw2ZMvX5T8="; publicKey = "tuoiOWqgHz/lrgTcLjX+xIhvxh9jDH6gmDw2ZMvX5T8=";
allowedIPs = [ "10.11.0.0/22" "fc00:1337:dead:beef::10.11.0.0/118" "192.168.178.0/23" ]; allowedIPs = ["10.11.0.0/22" "fc00:1337:dead:beef::10.11.0.0/118" "192.168.178.0/23"];
endpoint = "53c70r.de:51820"; endpoint = "53c70r.de:51820";
persistentKeepalive = 25; persistentKeepalive = 25;
} }

View file

@ -1,42 +1,45 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ {
imports = config,
[ lib,
(modulesPath + "/installer/scan/not-detected.nix") pkgs,
]; modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "ehci_pci" "xhci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; boot.initrd.availableKernelModules = ["nvme" "ehci_pci" "xhci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"];
boot.initrd.kernelModules = [ "dm-snapshot" ]; boot.initrd.kernelModules = ["dm-snapshot"];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/2478e089-e5d6-480c-8530-4ea46988f9f7"; device = "/dev/disk/by-uuid/2478e089-e5d6-480c-8530-4ea46988f9f7";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/5B90-D460"; device = "/dev/disk/by-uuid/5B90-D460";
fsType = "vfat"; fsType = "vfat";
}; };
fileSystems."/home" = fileSystems."/home" = {
{ device = "/dev/disk/by-uuid/a617625e-9325-4612-a086-954fb4b99ee0"; device = "/dev/disk/by-uuid/a617625e-9325-4612-a086-954fb4b99ee0";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/nix" = fileSystems."/nix" = {
{ device = "/dev/disk/by-uuid/1f6ab0fb-ef4d-45b1-a731-ad0e7a440eef"; device = "/dev/disk/by-uuid/1f6ab0fb-ef4d-45b1-a731-ad0e7a440eef";
fsType = "ext4"; fsType = "ext4";
}; };
swapDevices = swapDevices = [
[ { device = "/dev/disk/by-uuid/92310a00-7f69-4775-85cb-38e1790f71db"; } {device = "/dev/disk/by-uuid/92310a00-7f69-4775-85cb-38e1790f71db";}
]; ];
nix.settings.max-jobs = lib.mkDefault 16; nix.settings.max-jobs = lib.mkDefault 16;
} }

View file

@ -1,13 +1,16 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
hostAliases = [ hostAliases = [
"ifrit.dadada.li" "ifrit.dadada.li"
"media.dadada.li" "media.dadada.li"
"backup0.dadada.li" "backup0.dadada.li"
]; ];
backups = "/mnt/storage/backup"; backups = "/mnt/storage/backup";
in in {
{
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
]; ];
@ -23,50 +26,50 @@ in
services.borgbackup.repos = { services.borgbackup.repos = {
"metis" = { "metis" = {
allowSubRepos = false; allowSubRepos = false;
authorizedKeysAppendOnly = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDnc1gCi8lbhlLmPKvaExtCxVaAni8RrOuHUQO6wTbzR root@metis" ]; authorizedKeysAppendOnly = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDnc1gCi8lbhlLmPKvaExtCxVaAni8RrOuHUQO6wTbzR root@metis"];
authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis" ]; authorizedKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis"];
path = "${backups}/metis"; path = "${backups}/metis";
quota = "1T"; quota = "1T";
}; };
"gorgon" = { "gorgon" = {
allowSubRepos = false; allowSubRepos = false;
authorizedKeysAppendOnly = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP6p9b2D7y2W+9BGee2yk2xsCRewNNaE6oS3CqlW61ti root@gorgon" ]; authorizedKeysAppendOnly = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP6p9b2D7y2W+9BGee2yk2xsCRewNNaE6oS3CqlW61ti root@gorgon"];
authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis" ]; authorizedKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis"];
path = "${backups}/gorgon"; path = "${backups}/gorgon";
quota = "1T"; quota = "1T";
}; };
"surgat" = { "surgat" = {
allowSubRepos = false; allowSubRepos = false;
authorizedKeysAppendOnly = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINGhatanrNG+M6jAkU7Yi44mJmTreJkqyZ6Z+qiEgV7O root@surgat" ]; authorizedKeysAppendOnly = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINGhatanrNG+M6jAkU7Yi44mJmTreJkqyZ6Z+qiEgV7O root@surgat"];
authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis" ]; authorizedKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis"];
path = "${backups}/surgat"; path = "${backups}/surgat";
quota = "50G"; quota = "50G";
}; };
"pruflas" = { "pruflas" = {
allowSubRepos = false; allowSubRepos = false;
authorizedKeysAppendOnly = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBk7f9DSnXCOIUsxFsjCKG23vHShV4TSzzPJunPOwa1I root@pruflas" ]; authorizedKeysAppendOnly = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBk7f9DSnXCOIUsxFsjCKG23vHShV4TSzzPJunPOwa1I root@pruflas"];
authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis" ]; authorizedKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis"];
path = "${backups}/pruflas"; path = "${backups}/pruflas";
quota = "50G"; quota = "50G";
}; };
"wohnzimmerpi" = { "wohnzimmerpi" = {
allowSubRepos = false; allowSubRepos = false;
authorizedKeysAppendOnly = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK6uZ8mPQJWOL984gZKKPyxp7VLcxk42TpTh5iPP6N6k root@wohnzimmerpi" ]; authorizedKeysAppendOnly = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK6uZ8mPQJWOL984gZKKPyxp7VLcxk42TpTh5iPP6N6k root@wohnzimmerpi"];
authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis" ]; authorizedKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis"];
path = "${backups}/wohnzimmerpi"; path = "${backups}/wohnzimmerpi";
quota = "50G"; quota = "50G";
}; };
"fginfo" = { "fginfo" = {
allowSubRepos = false; allowSubRepos = false;
authorizedKeysAppendOnly = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxsyJeZVlVix0FPE8S/Gx0DVutS1ZNESVdYvHBwo36wGlYpSsQoSy/2HSwbpxs88MOGw1QNboxvvpBxCWxZ5HyjxuO5SwYgtmpjPXvmqfVqNXXnLChhSnKgk9b+HesQJCbHyrF9ZAJXEFCOGhOL3YTgd6lTX3lQUXgh/LEDlrPrigUMDNPecPWxpPskP6Vvpe9u+duhL+ihyxXaV+CoPk8nkWrov5jCGPiM48pugbwAfqARyZDgFpmWwL7Xg2UKgVZ1ttHZCWwH+htgioVZMYpdkQW1aq6LLGwN34Hj2VKXzmJN5frh6vQoZr2AFGHNKyJwAMpqnoY//QwuREpZTrh root@fginfo.ibr.cs.tu-bs.de" ]; authorizedKeysAppendOnly = ["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxsyJeZVlVix0FPE8S/Gx0DVutS1ZNESVdYvHBwo36wGlYpSsQoSy/2HSwbpxs88MOGw1QNboxvvpBxCWxZ5HyjxuO5SwYgtmpjPXvmqfVqNXXnLChhSnKgk9b+HesQJCbHyrF9ZAJXEFCOGhOL3YTgd6lTX3lQUXgh/LEDlrPrigUMDNPecPWxpPskP6Vvpe9u+duhL+ihyxXaV+CoPk8nkWrov5jCGPiM48pugbwAfqARyZDgFpmWwL7Xg2UKgVZ1ttHZCWwH+htgioVZMYpdkQW1aq6LLGwN34Hj2VKXzmJN5frh6vQoZr2AFGHNKyJwAMpqnoY//QwuREpZTrh root@fginfo.ibr.cs.tu-bs.de"];
authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis" ]; authorizedKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis"];
path = "${backups}/fginfo"; path = "${backups}/fginfo";
quota = "10G"; quota = "10G";
}; };
"fginfo-git" = { "fginfo-git" = {
allowSubRepos = false; allowSubRepos = false;
authorizedKeysAppendOnly = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmI6cUv3j0T9ofFB286sDwXwwczqi41cp4MZyGH3VWQnqBPNjICqAdY3CLhgvGBCxSe6ZgKQ+5YLsGSSlU1uhrJXW2UiVKuIPd0kjMF/9e8hmNoTTh0pdk9THfz9LLAdI1vPin1EeVReuDXlZkCI7DFYuTO9yiyZ1uLZUfT1KBRoqiqyypZhut7zT3UaDs2L+Y5hho6WiTdm7INuz6HEB7qYXzrmx93hlcuLZA7fDfyMO9F4APZFUqefcUIEyDI2b+Q/8Q2/rliT2PoC69XLVlj7HyVhfgKsOnopwBDNF3rRcJ6zz4WICPM18i4ZCmfoDTL/cFr5c41Lan1X7wS5wR root@fginfo-git" ]; authorizedKeysAppendOnly = ["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmI6cUv3j0T9ofFB286sDwXwwczqi41cp4MZyGH3VWQnqBPNjICqAdY3CLhgvGBCxSe6ZgKQ+5YLsGSSlU1uhrJXW2UiVKuIPd0kjMF/9e8hmNoTTh0pdk9THfz9LLAdI1vPin1EeVReuDXlZkCI7DFYuTO9yiyZ1uLZUfT1KBRoqiqyypZhut7zT3UaDs2L+Y5hho6WiTdm7INuz6HEB7qYXzrmx93hlcuLZA7fDfyMO9F4APZFUqefcUIEyDI2b+Q/8Q2/rliT2PoC69XLVlj7HyVhfgKsOnopwBDNF3rRcJ6zz4WICPM18i4ZCmfoDTL/cFr5c41Lan1X7wS5wR root@fginfo-git"];
authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis" ]; authorizedKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJyTgdVPPxQeL5KZo9frZQlDIv2QkelJw3gNGoGtUMfw tim@metis"];
path = "${backups}/fginfo-git"; path = "${backups}/fginfo-git";
quota = "10G"; quota = "10G";
}; };
@ -98,7 +101,7 @@ in
device = "/dev/disk/by-uuid/a34e36fc-d7dd-4ceb-93c4-48f9c2727cb7"; device = "/dev/disk/by-uuid/a34e36fc-d7dd-4ceb-93c4-48f9c2727cb7";
mountPoint = "/mnt/storage"; mountPoint = "/mnt/storage";
neededForBoot = false; neededForBoot = false;
options = [ "nofail" ]; options = ["nofail"];
}; };
networking.firewall = { networking.firewall = {
@ -113,7 +116,7 @@ in
isNormalUser = true; isNormalUser = true;
}; };
environment.systemPackages = [ pkgs.curl ]; environment.systemPackages = [pkgs.curl];
system.stateVersion = "20.03"; system.stateVersion = "20.03";
} }

View file

@ -1,26 +1,30 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ {
imports = config,
[ (modulesPath + "/profiles/qemu-guest.nix" ) lib,
]; pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "ehci_pci" "sd_mod" "sr_mod" ]; boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "ehci_pci" "sd_mod" "sr_mod"];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ ]; boot.kernelModules = [];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/0b4f5f01-5849-4f05-9822-b648abbc2485"; device = "/dev/disk/by-uuid/0b4f5f01-5849-4f05-9822-b648abbc2485";
fsType = "ext4"; fsType = "ext4";
}; };
swapDevices = swapDevices = [
[ { device = "/dev/disk/by-uuid/53b5715e-2724-4800-9cfc-f892115681b6"; } {device = "/dev/disk/by-uuid/53b5715e-2724-4800-9cfc-f892115681b6";}
]; ];
nix.settings.max-jobs = lib.mkDefault 2; nix.settings.max-jobs = lib.mkDefault 2;
} }

View file

@ -1,9 +1,12 @@
{ config, pkgs, lib, ... }: {
config,
with lib; pkgs,
let lib,
...
}:
with lib; let
cfg = config.dadada.admin; cfg = config.dadada.admin;
extraGroups = [ "wheel" "libvirtd" ]; extraGroups = ["wheel" "libvirtd"];
shells = { shells = {
"bash" = pkgs.bashInteractive; "bash" = pkgs.bashInteractive;
@ -13,11 +16,15 @@ let
shellNames = builtins.attrNames shells; shellNames = builtins.attrNames shells;
adminOpts = { name, config, ... }: { adminOpts = {
name,
config,
...
}: {
options = { options = {
keys = mkOption { keys = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = [ ]; default = [];
apply = x: assert (builtins.length x > 0 || abort "Please specify at least one key to be able to log in"); x; apply = x: assert (builtins.length x > 0 || abort "Please specify at least one key to be able to log in"); x;
description = '' description = ''
The keys that should be able to access the account. The keys that should be able to access the account.
@ -35,15 +42,14 @@ let
}; };
}; };
}; };
in in {
{
options = { options = {
dadada.admin = { dadada.admin = {
enable = mkEnableOption "Enable admin access"; enable = mkEnableOption "Enable admin access";
users = mkOption { users = mkOption {
type = with types; attrsOf (submodule adminOpts); type = with types; attrsOf (submodule adminOpts);
default = { }; default = {};
description = '' description = ''
Admin users with root access machine. Admin users with root access machine.
''; '';
@ -68,14 +74,14 @@ in
security.sudo.wheelNeedsPassword = false; security.sudo.wheelNeedsPassword = false;
services.openssh.openFirewall = true; services.openssh.openFirewall = true;
users.users = mapAttrs users.users =
(user: keys: ( mapAttrs
{ (user: keys: {
shell = shells."${keys.shell}"; shell = shells."${keys.shell}";
extraGroups = extraGroups; extraGroups = extraGroups;
isNormalUser = true; isNormalUser = true;
openssh.authorizedKeys.keys = keys.keys; openssh.authorizedKeys.keys = keys.keys;
})) })
cfg.users; cfg.users;
nix.trustedUsers = builtins.attrNames cfg.users; nix.trustedUsers = builtins.attrNames cfg.users;
@ -90,7 +96,7 @@ in
services.tor.relay.onionServices = { services.tor.relay.onionServices = {
"rat" = mkIf cfg.rat.enable { "rat" = mkIf cfg.rat.enable {
name = "rat"; name = "rat";
map = [{ port = 22; }]; map = [{port = 22;}];
}; };
}; };
}; };

View file

@ -1,6 +1,10 @@
{ config, pkgs, lib, ... }: {
with lib; config,
let pkgs,
lib,
...
}:
with lib; let
backupExcludes = [ backupExcludes = [
"/backup" "/backup"
"/dev" "/dev"
@ -20,87 +24,87 @@ let
"/var/tmp" "/var/tmp"
]; ];
cfg = config.dadada.backupClient; cfg = config.dadada.backupClient;
in in {
{ options = {
options = { dadada.backupClient = {
dadada.backupClient = { gs = {
gs = { enable = mkEnableOption "Enable backup to GS location";
enable = mkEnableOption "Enable backup to GS location"; passphrasePath = mkOption {
passphrasePath = mkOption { type = with types; nullOr str;
type = with types; nullOr str; description = ''
description = '' The path to the passphrase file.
The path to the passphrase file. '';
''; default = "/var/lib/borgbackup/gs/passphrase";
default = "/var/lib/borgbackup/gs/passphrase";
};
}; };
bs = { };
enable = mkEnableOption "Enable backup to BS location"; bs = {
passphrasePath = mkOption { enable = mkEnableOption "Enable backup to BS location";
type = types.str; passphrasePath = mkOption {
description = '' type = types.str;
The path to the passphrase file. description = ''
''; The path to the passphrase file.
default = "/var/lib/borgbackup/bs/passphrase"; '';
}; default = "/var/lib/borgbackup/bs/passphrase";
sshIdentityFile = mkOption { };
type = types.str; sshIdentityFile = mkOption {
description = '' type = types.str;
Path to the SSH key that is used to transmit the backup. description = ''
''; Path to the SSH key that is used to transmit the backup.
default = "/var/lib/borgbackup/bs/id_ed25519"; '';
}; default = "/var/lib/borgbackup/bs/id_ed25519";
}; };
}; };
}; };
};
config = mkIf cfg.gs.enable { config = mkIf cfg.gs.enable {
fileSystems = mkIf cfg.gs { fileSystems = mkIf cfg.gs {
"/backup" = { "/backup" = {
device = "/dev/disk/by-uuid/0fdab735-cc3e-493a-b4ec-cbf6a77d48d5"; device = "/dev/disk/by-uuid/0fdab735-cc3e-493a-b4ec-cbf6a77d48d5";
fsType = "ext4"; fsType = "ext4";
options = [ "x-systemd.automount" "noauto" "x-systemd.idle-timeout=600" ]; options = ["x-systemd.automount" "noauto" "x-systemd.idle-timeout=600"];
}; };
}; };
services.borgbackup.jobs.gs = { services.borgbackup.jobs.gs =
paths = "/"; {
exclude = backupExcludes; paths = "/";
repo = "/backup/${config.networking.hostName}"; exclude = backupExcludes;
doInit = false; repo = "/backup/${config.networking.hostName}";
encryption = { doInit = false;
mode = "repokey"; encryption = {
passCommand = "cat ${cfg.gs.passphrasePath}"; mode = "repokey";
passCommand = "cat ${cfg.gs.passphrasePath}";
};
compression = "auto,lz4";
prune.keep = {
within = "1d"; # Keep all archives from the last day
daily = 7;
weekly = 2;
monthly = -1; # Keep at least one archive for each month
yearly = -1; # Keep at least one archive for each year
};
startAt = "monthly";
}
// mkIf cfg.bs.enable {
services.borgbackup.jobs.bs = {
paths = "/";
exclude = backupExcludes;
repo = "borg@backup0.dadada.li:/mnt/storage/backup/${config.networking.hostName}";
doInit = false;
environment = {
BORG_RSH = "ssh -i ${cfg.bs.sshIdentityFile} -o 'StrictHostKeyChecking accept-new' -o 'TCPKeepAlive=yes'";
};
encryption = {
mode = "repokey";
passCommand = "cat ${cfg.bs.passphrasePath}";
};
compression = "auto,lz4";
startAt = "daily";
environment = {
BORG_RELOCATED_REPO_ACCESS_IS_OK = "yes";
};
};
}; };
compression = "auto,lz4";
prune.keep = {
within = "1d"; # Keep all archives from the last day
daily = 7;
weekly = 2;
monthly = -1; # Keep at least one archive for each month
yearly = -1; # Keep at least one archive for each year
};
startAt = "monthly";
} // mkIf cfg.bs.enable {
services.borgbackup.jobs.bs = {
paths = "/";
exclude = backupExcludes;
repo = "borg@backup0.dadada.li:/mnt/storage/backup/${config.networking.hostName}";
doInit = false;
environment = {
BORG_RSH = "ssh -i ${cfg.bs.sshIdentityFile} -o 'StrictHostKeyChecking accept-new' -o 'TCPKeepAlive=yes'";
};
encryption = {
mode = "repokey";
passCommand = "cat ${cfg.bs.passphrasePath}";
};
compression = "auto,lz4";
startAt = "daily";
environment = {
BORG_RELOCATED_REPO_ACCESS_IS_OK = "yes";
};
};
};
}; };
} }

View file

@ -1,40 +1,46 @@
{ config, pkgs, lib, ... }: {
with lib; config,
let pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.ddns; cfg = config.dadada.ddns;
ddnsConfig = hostNames: { ddnsConfig = hostNames: {
systemd.timers = listToAttrs (forEach hostNames (hostname: nameValuePair "ddns-${hostname}" systemd.timers = listToAttrs (forEach hostNames (hostname:
{ nameValuePair "ddns-${hostname}"
wantedBy = [ "timers.target" ]; {
partOf = [ "ddns-${hostname}.service" ]; wantedBy = ["timers.target"];
timerConfig.OnCalendar = "hourly"; partOf = ["ddns-${hostname}.service"];
})); timerConfig.OnCalendar = "hourly";
}));
systemd.services = listToAttrs (forEach hostNames (hostname: nameValuePair "ddns-${hostname}" systemd.services = listToAttrs (forEach hostNames (hostname:
{ nameValuePair "ddns-${hostname}"
serviceConfig.Type = "oneshot"; {
script = '' serviceConfig.Type = "oneshot";
function url() { script = ''
echo "https://svc.joker.com/nic/update?username=$1&password=$2&hostname=$3" function url() {
} echo "https://svc.joker.com/nic/update?username=$1&password=$2&hostname=$3"
}
IFS=':' IFS=':'
read -r user password < /var/lib/ddns/credentials read -r user password < /var/lib/ddns/credentials
unset IFS unset IFS
curl_url=$(url "$user" "$password" ${hostname}) curl_url=$(url "$user" "$password" ${hostname})
${pkgs.curl}/bin/curl -4 "$curl_url" ${pkgs.curl}/bin/curl -4 "$curl_url"
${pkgs.curl}/bin/curl -6 "$curl_url" ${pkgs.curl}/bin/curl -6 "$curl_url"
''; '';
})); }));
}; };
in { in {
options = { options = {
dadada.ddns.domains = mkOption { dadada.ddns.domains = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
description = '' description = ''
Enables DDNS for these domains. Enables DDNS for these domains.
''; '';
example = '' example = ''
[ "example.com" ] [ "example.com" ]

View file

@ -1,5 +1,4 @@
{ ... }@inputs: {...} @ inputs: {
{
admin = import ./admin.nix; admin = import ./admin.nix;
backup = import ./backup.nix; backup = import ./backup.nix;
ddns = import ./ddns.nix; ddns = import ./ddns.nix;

View file

@ -1,8 +1,11 @@
{ config, pkgs, lib, ... }:
let
cfg = config.dadada.element;
in
{ {
config,
pkgs,
lib,
...
}: let
cfg = config.dadada.element;
in {
options.dadada.element = { options.dadada.element = {
enable = lib.mkEnableOption "Enable element webapp"; enable = lib.mkEnableOption "Enable element webapp";
}; };

View file

@ -1,10 +1,13 @@
{ config, pkgs, lib, ... }: {
with lib; config,
let pkgs,
lib,
...
}:
with lib; let
luks = config.dadada.luks; luks = config.dadada.luks;
fido2 = config.dadada.fido2; fido2 = config.dadada.fido2;
in in {
{
options = { options = {
dadada.luks = { dadada.luks = {
uuid = mkOption { uuid = mkOption {
@ -52,5 +55,4 @@ in
cue = true; cue = true;
}; };
}; };
} }

View file

@ -1,12 +1,14 @@
{ config, lib, ... }: {
with lib; config,
let lib,
...
}:
with lib; let
cfg = config.dadada.fileShare; cfg = config.dadada.fileShare;
sharePath = "/mnt/storage/share"; sharePath = "/mnt/storage/share";
ipv6 = "fd42:dead:beef::/48"; ipv6 = "fd42:dead:beef::/48";
ipv4 = "192.168.42.0/24"; ipv4 = "192.168.42.0/24";
in in {
{
options.dadada.fileShare = { options.dadada.fileShare = {
enable = mkEnableOption "Enable file share server"; enable = mkEnableOption "Enable file share server";
}; };

View file

@ -1,9 +1,12 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
redisSocket = "127.0.0.1:6379"; redisSocket = "127.0.0.1:6379";
cfg = config.dadada.gitea; cfg = config.dadada.gitea;
in in {
{
options.dadada.gitea = { options.dadada.gitea = {
enable = lib.mkEnableOption "Enable gitea"; enable = lib.mkEnableOption "Enable gitea";
}; };

View file

@ -1,9 +1,12 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.dadada.headphones;
in
{ {
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.headphones;
in {
options = { options = {
dadada.headphones = { dadada.headphones = {
enable = mkEnableOption "Enable bluetooth headphones with more audio codecs."; enable = mkEnableOption "Enable bluetooth headphones with more audio codecs.";
@ -14,7 +17,7 @@ in
bluetooth.enable = true; bluetooth.enable = true;
pulseaudio = { pulseaudio = {
enable = true; enable = true;
extraModules = [ pkgs.pulseaudio-modules-bt ]; extraModules = [pkgs.pulseaudio-modules-bt];
extraConfig = '' extraConfig = ''
set-source-volume 1 10000 set-source-volume 1 10000
''; '';

View file

@ -1,18 +1,22 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
cfg = config.dadada.homePage; cfg = config.dadada.homePage;
in in
with lib; { with lib; {
options.dadada.homePage = { options.dadada.homePage = {
enable = mkEnableOption "Enable home page"; enable = mkEnableOption "Enable home page";
};
config = mkIf cfg.enable {
services.nginx.enable = true;
services.nginx.virtualHosts."dadada.li" = {
enableACME = true;
forceSSL = true;
root = "${pkgs.homePage}";
}; };
}; config = mkIf cfg.enable {
} services.nginx.enable = true;
services.nginx.virtualHosts."dadada.li" = {
enableACME = true;
forceSSL = true;
root = "${pkgs.homePage}";
};
};
}

View file

@ -1,6 +1,10 @@
# Source https://github.com/NixOS/nixpkgs/issues/113384 # Source https://github.com/NixOS/nixpkgs/issues/113384
{ config, lib, pkgs, ... }: {
let config,
lib,
pkgs,
...
}: let
cfg = config.dadada.kanboard; cfg = config.dadada.kanboard;
in { in {
options = { options = {
@ -32,27 +36,30 @@ in {
name = "kanboard-configured"; name = "kanboard-configured";
paths = [ paths = [
(pkgs.runCommand "kanboard-over" {meta.priority = 0;} '' (pkgs.runCommand "kanboard-over" {meta.priority = 0;} ''
mkdir -p $out mkdir -p $out
for f in index.php jsonrpc.php ; do for f in index.php jsonrpc.php ; do
echo "<?php require('$out/config.php');" > $out/$f echo "<?php require('$out/config.php');" > $out/$f
tail -n+2 ${pkgs.kanboard}/share/kanboard/$f \ tail -n+2 ${pkgs.kanboard}/share/kanboard/$f \
| sed 's^__DIR__^"${pkgs.kanboard}/share/kanboard"^' >> $out/$f | sed 's^__DIR__^"${pkgs.kanboard}/share/kanboard"^' >> $out/$f
done done
ln -s /var/lib/kanboard $out/data ln -s /var/lib/kanboard $out/data
ln -s ${./kanboard-config.php} $out/config.php ln -s ${./kanboard-config.php} $out/config.php
'') '')
{ outPath = "${pkgs.kanboard}/share/kanboard"; meta.priority = 10; } {
]; outPath = "${pkgs.kanboard}/share/kanboard";
}; meta.priority = 10;
locations = { }
"/".index = "index.php"; ];
"~ \\.php$" = { };
tryFiles = "$uri =404"; locations = {
extraConfig = '' "/".index = "index.php";
fastcgi_pass unix:${config.services.phpfpm.pools.kanboard.socket}; "~ \\.php$" = {
''; tryFiles = "$uri =404";
}; extraConfig = ''
fastcgi_pass unix:${config.services.phpfpm.pools.kanboard.socket};
'';
}; };
};
}; };
}; };
}; };

View file

@ -1,10 +1,13 @@
{ config, pkgs, lib, ... }: {
with lib; config,
let pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.networking; cfg = config.dadada.networking;
vpnPubKey = "x/y6I59buVzv9Lfzl+b17mGWbzxU+3Ke9mQNa1DLsDI="; vpnPubKey = "x/y6I59buVzv9Lfzl+b17mGWbzxU+3Ke9mQNa1DLsDI=";
in in {
{
options = { options = {
dadada.networking = { dadada.networking = {
localResolver = { localResolver = {
@ -15,7 +18,7 @@ in
wanInterfaces = mkOption { wanInterfaces = mkOption {
type = with types; listOf str; type = with types; listOf str;
description = "WAN network interfaces"; description = "WAN network interfaces";
default = [ ]; default = [];
}; };
vpnExtension = mkOption { vpnExtension = mkOption {
type = with types; nullOr str; type = with types; nullOr str;
@ -83,20 +86,22 @@ in
"149.112.112.112@853#dns.quad9.net" "149.112.112.112@853#dns.quad9.net"
]; ];
} }
(mkIf cfg.localResolver.uwu { (
name = "uwu."; mkIf cfg.localResolver.uwu {
forward-addr = [ name = "uwu.";
"fc00:1337:dead:beef::10.11.0.1" forward-addr = [
"10.11.0.1" "fc00:1337:dead:beef::10.11.0.1"
]; "10.11.0.1"
} ];
}
) )
(mkIf cfg.localResolver.s0 { (
name = "s0."; mkIf cfg.localResolver.s0 {
forward-addr = [ name = "s0.";
"192.168.178.1" forward-addr = [
]; "192.168.178.1"
} ];
}
) )
{ {
name = "dyn.dadada.li."; name = "dyn.dadada.li.";
@ -110,13 +115,14 @@ in
networking.useDHCP = false; networking.useDHCP = false;
networking.interfaces = listToAttrs (forEach cfg.wanInterfaces (i: nameValuePair i { networking.interfaces = listToAttrs (forEach cfg.wanInterfaces (i:
useDHCP = true; nameValuePair i {
})); useDHCP = true;
}));
networking.wireguard.interfaces = mkIf (cfg.vpnExtension != null) { networking.wireguard.interfaces = mkIf (cfg.vpnExtension != null) {
dadada = { dadada = {
ips = [ "fd42:9c3b:f96d:201::${cfg.vpnExtension}/64" ]; ips = ["fd42:9c3b:f96d:201::${cfg.vpnExtension}/64"];
listenPort = 51234; listenPort = 51234;
privateKeyFile = "/var/lib/wireguard/privkey"; privateKeyFile = "/var/lib/wireguard/privkey";
@ -124,7 +130,7 @@ in
peers = [ peers = [
{ {
publicKey = vpnPubKey; publicKey = vpnPubKey;
allowedIPs = [ "fd42:9c3b:f96d::/48" ]; allowedIPs = ["fd42:9c3b:f96d::/48"];
endpoint = "vpn.dadada.li:51234"; endpoint = "vpn.dadada.li:51234";
persistentKeepalive = 25; persistentKeepalive = 25;
} }
@ -134,8 +140,8 @@ in
# https://lists.zx2c4.com/pipermail/wireguard/2017-November/002028.html # https://lists.zx2c4.com/pipermail/wireguard/2017-November/002028.html
systemd.timers.wg-reresolve-dns = mkIf (cfg.vpnExtension != null) { systemd.timers.wg-reresolve-dns = mkIf (cfg.vpnExtension != null) {
wantedBy = [ "timers.target" ]; wantedBy = ["timers.target"];
partOf = [ "wg-reresolve-dns.service" ]; partOf = ["wg-reresolve-dns.service"];
timerConfig.OnCalendar = "hourly"; timerConfig.OnCalendar = "hourly";
}; };
systemd.services.wg-reresolve-dns = mkIf (cfg.vpnExtension != null) { systemd.services.wg-reresolve-dns = mkIf (cfg.vpnExtension != null) {

View file

@ -1,9 +1,14 @@
{ self {
, home-manager self,
, nixpkgs home-manager,
, ... nixpkgs,
...
}: {
config,
pkgs,
lib,
...
}: }:
{ config, pkgs, lib, ... }:
# Global settings for nix daemon # Global settings for nix daemon
{ {
nix.nixPath = [ nix.nixPath = [

View file

@ -1,6 +1,10 @@
{ config, pkgs, lib, ... }:
with lib;
{ {
config,
pkgs,
lib,
...
}:
with lib; {
networking.domain = mkDefault "dadada.li"; networking.domain = mkDefault "dadada.li";
services.fwupd.enable = mkDefault true; services.fwupd.enable = mkDefault true;
@ -25,7 +29,7 @@ with lib;
vteIntegration = true; vteIntegration = true;
syntaxHighlighting = { syntaxHighlighting = {
enable = true; enable = true;
highlighters = [ "main" "brackets" "pattern" "root" "line" ]; highlighters = ["main" "brackets" "pattern" "root" "line"];
}; };
}; };

View file

@ -1,6 +1,10 @@
{ config, pkgs, lib, ... }:
with lib;
{ {
config,
pkgs,
lib,
...
}:
with lib; {
networking.domain = mkDefault "dadada.li"; networking.domain = mkDefault "dadada.li";
networking.tempAddresses = "disabled"; networking.tempAddresses = "disabled";

View file

@ -1,10 +1,12 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.dadada.share;
in
{ {
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.share;
in {
options.dadada.share = { options.dadada.share = {
enable = mkEnableOption "Enable file share"; enable = mkEnableOption "Enable file share";
}; };

View file

@ -1,9 +1,12 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.dadada.steam;
in
{ {
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.steam;
in {
options = { options = {
dadada.steam = { dadada.steam = {
enable = mkEnableOption "Enable Steam config"; enable = mkEnableOption "Enable Steam config";
@ -15,7 +18,7 @@ in
hardware.opengl = { hardware.opengl = {
enable = true; enable = true;
driSupport32Bit = true; driSupport32Bit = true;
extraPackages32 = with pkgs.pkgsi686Linux; [ libva ]; extraPackages32 = with pkgs.pkgsi686Linux; [libva];
}; };
hardware.pulseaudio.support32Bit = true; hardware.pulseaudio.support32Bit = true;

View file

@ -1,10 +1,12 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.dadada.autoUpgrade;
in
{ {
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.autoUpgrade;
in {
options.dadada.autoUpgrade = { options.dadada.autoUpgrade = {
enable = mkEnableOption "Enable automatic upgrades"; enable = mkEnableOption "Enable automatic upgrades";
}; };

View file

@ -1,9 +1,12 @@
{ config, pkgs, lib, ... }: {
config,
with lib; pkgs,
let lib,
...
}:
with lib; let
cfg = config.dadada.vpnServer; cfg = config.dadada.vpnServer;
wgPeer = { name, ... }: { wgPeer = {name, ...}: {
options = { options = {
name = mkOption { name = mkOption {
internal = true; internal = true;
@ -21,14 +24,13 @@ let
}; };
}; };
}; };
in in {
{
options.dadada.vpnServer = { options.dadada.vpnServer = {
enable = mkEnableOption "Enable wireguard gateway"; enable = mkEnableOption "Enable wireguard gateway";
peers = mkOption { peers = mkOption {
description = "Set of extensions and public keys of peers"; description = "Set of extensions and public keys of peers";
type = with types; attrsOf (submodule wgPeer); type = with types; attrsOf (submodule wgPeer);
default = { }; default = {};
}; };
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -37,14 +39,14 @@ in
interfaces."wg0" = { interfaces."wg0" = {
allowedIPsAsRoutes = true; allowedIPsAsRoutes = true;
privateKeyFile = "/var/lib/wireguard/wg0-key"; privateKeyFile = "/var/lib/wireguard/wg0-key";
ips = [ "fd42:9c3b:f96d:0201::0/64" ]; ips = ["fd42:9c3b:f96d:0201::0/64"];
listenPort = 51234; listenPort = 51234;
peers = map peers =
(peer: ( map
{ (peer: {
allowedIPs = [ "fd42:9c3b:f96d:0201::${peer.id}/128" ]; allowedIPs = ["fd42:9c3b:f96d:0201::${peer.id}/128"];
publicKey = peer.key; publicKey = peer.key;
})) })
(attrValues cfg.peers); (attrValues cfg.peers);
postSetup = '' postSetup = ''
wg set wg0 fwmark 51234 wg set wg0 fwmark 51234

View file

@ -1,10 +1,12 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.dadada.weechat;
in
{ {
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.dadada.weechat;
in {
options.dadada.weechat = { options.dadada.weechat = {
enable = mkEnableOption "Enable weechat relay"; enable = mkEnableOption "Enable weechat relay";
}; };

View file

@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }:
{ {
config,
pkgs,
lib,
...
}: {
programs.zsh = { programs.zsh = {
enable = true; enable = true;
autosuggestions.enable = true; autosuggestions.enable = true;
@ -8,7 +12,7 @@
vteIntegration = true; vteIntegration = true;
syntaxHighlighting = { syntaxHighlighting = {
enable = true; enable = true;
highlighters = [ "main" "brackets" "pattern" "root" "line" ]; highlighters = ["main" "brackets" "pattern" "root" "line"];
}; };
}; };
} }

View file

@ -1,7 +1,11 @@
{ config, pkgs, lib, ... }:
with lib;
{ {
imports = [ ./hardware-configuration.nix ]; config,
pkgs,
lib,
...
}:
with lib; {
imports = [./hardware-configuration.nix];
networking.hostName = "pruflas"; networking.hostName = "pruflas";
@ -12,7 +16,7 @@ with lib;
package = pkgs.hydra-unstable; package = pkgs.hydra-unstable;
hydraURL = "https://hydra.dadada.li"; hydraURL = "https://hydra.dadada.li";
notificationSender = "hydra@localhost"; notificationSender = "hydra@localhost";
buildMachinesFiles = [ ]; buildMachinesFiles = [];
useSubstitutes = true; useSubstitutes = true;
listenHost = "hydra.dadada.li"; listenHost = "hydra.dadada.li";
port = 3000; port = 3000;
@ -22,7 +26,7 @@ with lib;
{ {
hostName = "localhost"; hostName = "localhost";
system = "x86_64-linux"; system = "x86_64-linux";
supportedFeatures = [ "kvm" "nixos-test" "big-parallel" "benchmark" ]; supportedFeatures = ["kvm" "nixos-test" "big-parallel" "benchmark"];
maxJobs = 8; maxJobs = 8;
} }
]; ];
@ -61,7 +65,7 @@ with lib;
]; ];
}; };
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = ["kvm-intel"];
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
@ -91,12 +95,12 @@ with lib;
hardware.pulseaudio.enable = false; hardware.pulseaudio.enable = false;
environment.systemPackages = [ pkgs.spotify pkgs.mpv ]; environment.systemPackages = [pkgs.spotify pkgs.mpv];
users.users."media" = { users.users."media" = {
isNormalUser = true; isNormalUser = true;
description = "Media playback user"; description = "Media playback user";
extraGroups = [ "users" "video" ]; extraGroups = ["users" "video"];
}; };
networking.domain = "dadada.li"; networking.domain = "dadada.li";

View file

@ -1,34 +1,38 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ {
imports = config,
[ (modulesPath + "/installer/scan/not-detected.nix") lib,
]; pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "sd_mod" "sr_mod" "sdhci_pci" ]; boot.initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "usb_storage" "sd_mod" "sr_mod" "sdhci_pci"];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/6d7ea470-1909-4e84-82a6-d5d5e9eecf78"; device = "/dev/disk/by-uuid/6d7ea470-1909-4e84-82a6-d5d5e9eecf78";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/nix" = fileSystems."/nix" = {
{ device = "/dev/disk/by-uuid/337f04a7-4fe9-49a2-8a58-07dd4bc85168"; device = "/dev/disk/by-uuid/337f04a7-4fe9-49a2-8a58-07dd4bc85168";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/0494-CB52"; device = "/dev/disk/by-uuid/0494-CB52";
fsType = "vfat"; fsType = "vfat";
}; };
swapDevices = [ ]; swapDevices = [];
powerManagement.cpuFreqGovernor = lib.mkDefault "performance"; powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
} }

View file

@ -1,8 +1,11 @@
{ config, pkgs, lib, ... }:
let
hostName = "surgat";
in
{ {
config,
pkgs,
lib,
...
}: let
hostName = "surgat";
in {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
]; ];
@ -72,10 +75,12 @@ in
boot.loader.grub.version = 2; boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/sda"; boot.loader.grub.device = "/dev/sda";
networking.interfaces."ens3".ipv6.addresses = [{ networking.interfaces."ens3".ipv6.addresses = [
address = "2a01:4f8:c17:1d70::"; {
prefixLength = 64; address = "2a01:4f8:c17:1d70::";
}]; prefixLength = 64;
}
];
networking.defaultGateway6 = { networking.defaultGateway6 = {
address = "fe80::1"; address = "fe80::1";
@ -98,7 +103,7 @@ in
]; ];
networking.wireguard.interfaces."hydra" = { networking.wireguard.interfaces."hydra" = {
ips = [ "10.3.3.1/24" ]; ips = ["10.3.3.1/24"];
listenPort = 51235; listenPort = 51235;
privateKeyFile = "/var/lib/wireguard/hydra"; privateKeyFile = "/var/lib/wireguard/hydra";
@ -106,7 +111,7 @@ in
peers = [ peers = [
{ {
publicKey = "CTKwL6+SJIqKXr1DIHejMDgjoxlWPaT78Pz3+JqcNlw="; publicKey = "CTKwL6+SJIqKXr1DIHejMDgjoxlWPaT78Pz3+JqcNlw=";
allowedIPs = [ "10.3.3.3/32" ]; allowedIPs = ["10.3.3.3/32"];
persistentKeepalive = 25; persistentKeepalive = 25;
} }
]; ];

View file

@ -1,30 +1,33 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ {
imports = config,
[ (modulesPath + "/profiles/qemu-guest.nix") lib,
]; pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ata_piix" "virtio_pci" "xhci_pci" "sd_mod" "sr_mod" ]; boot.initrd.availableKernelModules = ["ata_piix" "virtio_pci" "xhci_pci" "sd_mod" "sr_mod"];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ ]; boot.kernelModules = [];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/bd0b4d2d-37e5-444b-82ba-d7629114bf11"; device = "/dev/disk/by-uuid/bd0b4d2d-37e5-444b-82ba-d7629114bf11";
fsType = "ext4"; fsType = "ext4";
}; };
boot.initrd.luks.devices."surgat".device = "/dev/disk/by-uuid/5aa2b4d3-5711-451c-bd35-7c33b5019093"; boot.initrd.luks.devices."surgat".device = "/dev/disk/by-uuid/5aa2b4d3-5711-451c-bd35-7c33b5019093";
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/472bc34f-3803-44ee-ad2a-f0080c0a44d3"; device = "/dev/disk/by-uuid/472bc34f-3803-44ee-ad2a-f0080c0a44d3";
fsType = "ext2"; fsType = "ext2";
}; };
swapDevices = [ ];
swapDevices = [];
} }

View file

@ -1,57 +1,62 @@
# Adapted from Mic92/dotfiles # Adapted from Mic92/dotfiles
{ self {
, flake-utils self,
, homePage flake-utils,
, nixpkgs homePage,
, home-manager nixpkgs,
, nix-doom-emacs home-manager,
, nixos-hardware nix-doom-emacs,
, nvd nixos-hardware,
, scripts nvd,
, recipemd scripts,
, ... recipemd,
}@inputs: ...
(flake-utils.lib.eachDefaultSystem (system: } @ inputs:
let (flake-utils.lib.eachDefaultSystem (system: let
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
selfPkgs = self.packages.${system}; selfPkgs = self.packages.${system};
in formatter = self.formatter.${system};
{ in {
apps.nixos-switch = { apps.nixos-switch = {
type = "app"; type = "app";
program = toString (pkgs.writeScript "deploy" '' program = toString (pkgs.writeScript "deploy" ''
#!${pkgs.runtimeShell} #!${pkgs.runtimeShell}
flake=$(nix flake metadata --json ${./.} | jq -r .url) flake=$(nix flake metadata --json ${./.} | jq -r .url)
nixos-rebuild switch --flake ".#$1" --use-remote-sudo nixos-rebuild switch --flake ".#$1" --use-remote-sudo
''); '');
}; };
apps.deploy = { apps.deploy = {
type = "app"; type = "app";
program = toString (pkgs.writeScript "deploy" '' program = toString (pkgs.writeScript "deploy" ''
#!${pkgs.runtimeShell} #!${pkgs.runtimeShell}
domain='dadada.li' domain='dadada.li'
flake=$(nix flake metadata --json ${./.} | jq -r .url) flake=$(nix flake metadata --json ${./.} | jq -r .url)
nixos-rebuild switch --upgrade --flake "''${flake}#$1" --target-host "''${1}.$domain" --build-host localhost --use-remote-sudo nixos-rebuild switch --upgrade --flake "''${flake}#$1" --target-host "''${1}.$domain" --build-host localhost --use-remote-sudo
''); '');
}; };
apps.hm-switch = { apps.hm-switch = {
type = "app"; type = "app";
program = toString (pkgs.writeScript "hm-switch" '' program = toString (pkgs.writeScript "hm-switch" ''
#!${pkgs.runtimeShell} #!${pkgs.runtimeShell}
set -eu -o pipefail -x set -eu -o pipefail -x
tmpdir=$(mktemp -d) tmpdir=$(mktemp -d)
export PATH=${pkgs.lib.makeBinPath [ pkgs.coreutils pkgs.nixFlakes pkgs.jq ]} export PATH=${pkgs.lib.makeBinPath [pkgs.coreutils pkgs.nixFlakes pkgs.jq]}
trap "rm -rf $tmpdir" EXIT trap "rm -rf $tmpdir" EXIT
declare -A profiles=(["gorgon"]="home") declare -A profiles=(["gorgon"]="home")
profile=''${profiles[$HOSTNAME]:-common} profile=''${profiles[$HOSTNAME]:-common}
flake=$(nix flake metadata --json ${./.} | jq -r .url) flake=$(nix flake metadata --json ${./.} | jq -r .url)
nix build --out-link "$tmpdir/result" "$flake#hmConfigurations.''${profile}.activationPackage" "$@" nix build --out-link "$tmpdir/result" "$flake#hmConfigurations.''${profile}.activationPackage" "$@"
link=$(realpath $tmpdir/result) link=$(realpath $tmpdir/result)
$link/activate $link/activate
''); '');
}; };
devShell = pkgs.callPackage ./shell.nix { }; devShell = pkgs.callPackage ./shell.nix {};
})) // { formatter = nixpkgs.legacyPackages."${system}".alejandra;
checks = {
format = pkgs.runCommand "check-format" {buildInputs = [formatter];} "${formatter}/bin/alejandra -c ${./.} && touch $out";
};
}))
// {
hmConfigurations = import ./home/configurations.nix { hmConfigurations = import ./home/configurations.nix {
inherit self nixpkgs home-manager; inherit self nixpkgs home-manager;
}; };
@ -63,12 +68,16 @@
}; };
nixosModules = import ./nixos/modules inputs; nixosModules = import ./nixos/modules inputs;
overlays = import ./overlays; overlays = import ./overlays;
hydraJobs = ( hydraJobs =
nixpkgs.lib.mapAttrs' (
nixpkgs.lib.mapAttrs'
(name: config: nixpkgs.lib.nameValuePair name config.config.system.build.toplevel) (name: config: nixpkgs.lib.nameValuePair name config.config.system.build.toplevel)
self.nixosConfigurations self.nixosConfigurations
) // (nixpkgs.lib.mapAttrs' )
(name: config: nixpkgs.lib.nameValuePair name config.activation-script) // (
self.hmConfigurations nixpkgs.lib.mapAttrs'
) // (let tests = import ./tests; in flake-utils.lib.eachDefaultSystem tests); (name: config: nixpkgs.lib.nameValuePair name config.activation-script)
self.hmConfigurations
)
// (let tests = import ./tests; in flake-utils.lib.eachDefaultSystem tests);
} }

View file

@ -1,7 +1,6 @@
let let
python3Packages = import ./python3-packages.nix; python3Packages = import ./python3-packages.nix;
in in {
{
kanboard = final: prev: { kanboard = final: prev: {
kanboard = prev.kanboard.overrideAttrs (oldAttrs: { kanboard = prev.kanboard.overrideAttrs (oldAttrs: {
src = prev.fetchFromGitHub { src = prev.fetchFromGitHub {

View file

@ -1,6 +1,7 @@
self: super: self: super: {
{ python3Packages =
python3Packages = super.python3Packages // super.recurseIntoAttrs ( super.python3Packages
super.python3Packages.callPackage ../pkgs/python-pkgs { } // super.recurseIntoAttrs (
); super.python3Packages.callPackage ../pkgs/python-pkgs {}
);
} }

View file

@ -1,26 +1,28 @@
self: super: self: super: {
{
# Based on https://gist.github.com/clefru/9ed1186bf0b76d27e0ad20cbd9966b87 # Based on https://gist.github.com/clefru/9ed1186bf0b76d27e0ad20cbd9966b87
tubslatex = super.lib.overrideDerivation tubslatex =
super.lib.overrideDerivation
(super.texlive.combine { (super.texlive.combine {
inherit (super.texlive) scheme-full; inherit (super.texlive) scheme-full;
tubslatex.pkgs = [ (super.callPackage ../pkgs/tubslatex { }) ]; tubslatex.pkgs = [(super.callPackage ../pkgs/tubslatex {})];
}) })
(oldAttrs: { (oldAttrs: {
postBuild = '' postBuild =
# Save the udpmap.cfg because texlive.combine removes it. ''
cat $out/share/texmf/web2c/updmap.cfg > $out/share/texmf/web2c/updmap.cfg.1 # Save the udpmap.cfg because texlive.combine removes it.
'' + oldAttrs.postBuild + '' cat $out/share/texmf/web2c/updmap.cfg > $out/share/texmf/web2c/updmap.cfg.1
# Move updmap.cfg into its original place and rerun mktexlsr, so that kpsewhich finds it ''
rm $out/share/texmf/web2c/updmap.cfg || true + oldAttrs.postBuild
cat $out/share/texmf/web2c/updmap.cfg.1 > $out/share/texmf/web2c/updmap.cfg + ''
rm $out/share/texmf/web2c/updmap.cfg.1 # Move updmap.cfg into its original place and rerun mktexlsr, so that kpsewhich finds it
perl `type -P mktexlsr.pl` $out/share/texmf rm $out/share/texmf/web2c/updmap.cfg || true
yes | perl `type -P updmap.pl` --sys --syncwithtrees --force || true cat $out/share/texmf/web2c/updmap.cfg.1 > $out/share/texmf/web2c/updmap.cfg
perl `type -P updmap.pl` --sys --enable Map=NexusProSerif.map --enable Map=NexusProSans.map rm $out/share/texmf/web2c/updmap.cfg.1
# Regenerate .map files. perl `type -P mktexlsr.pl` $out/share/texmf
perl `type -P updmap.pl` --sys yes | perl `type -P updmap.pl` --sys --syncwithtrees --force || true
''; perl `type -P updmap.pl` --sys --enable Map=NexusProSerif.map --enable Map=NexusProSans.map
# Regenerate .map files.
perl `type -P updmap.pl` --sys
'';
}); });
} }

View file

@ -1,3 +1,2 @@
{ callPackage }: {callPackage}: {
{
} }

View file

@ -1,9 +1,14 @@
{ pkgs, stdenv, lib }: {
pkgs,
(import stdenv,
lib,
}: (import
(pkgs.fetchgit { (pkgs.fetchgit {
url = "https://git.dadada.li/dadada/scripts.git"; url = "https://git.dadada.li/dadada/scripts.git";
sha256 = "sha256-Kdwb34XXLOl4AaiVmOZ3nlu/KdENMqvH+UwISv8Pyiw="; sha256 = "sha256-Kdwb34XXLOl4AaiVmOZ3nlu/KdENMqvH+UwISv8Pyiw=";
rev = "065ff0f0ee9e44234678f0fefbba7961ea42518c"; rev = "065ff0f0ee9e44234678f0fefbba7961ea42518c";
}) })
{ stdenv = stdenv; lib = lib; }) {
stdenv = stdenv;
lib = lib;
})

View file

@ -1,9 +1,13 @@
{ stdenv, fetchzip, unzip }: {
stdenv,
fetchzip,
unzip,
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
src = ./tubslatex_1.3.2.tds.zip; src = ./tubslatex_1.3.2.tds.zip;
sourceRoot = "."; sourceRoot = ".";
nativeBuildInputs = [ unzip ]; nativeBuildInputs = [unzip];
buildInputs = [ unzip ]; buildInputs = [unzip];
installPhase = '' installPhase = ''
mkdir -p $out mkdir -p $out
cp -r * $out/ cp -r * $out/

View file

@ -1,6 +1,10 @@
{ pkgs, lib, fetchFromGitHub, ... }:
with lib;
{ {
pkgs,
lib,
fetchFromGitHub,
...
}:
with lib; {
filetype = pkgs.vimUtils.buildVimPluginFrom2Nix { filetype = pkgs.vimUtils.buildVimPluginFrom2Nix {
pname = "dadadaVimFiletype"; pname = "dadadaVimFiletype";
version = "0.2"; version = "0.2";

View file

@ -1,6 +1,4 @@
{ mkShell {mkShell}:
}:
mkShell { mkShell {
buildInputs = [ buildInputs = [
]; ];

View file

@ -1,3 +1,2 @@
system: system: {
{
} }