Compare commits
167 Commits
7d17c52192
...
flake-upda
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9d601e574 | ||
|
|
7dca7c15ff | ||
|
|
e53144fb5d | ||
|
|
8416942602 | ||
|
|
0c83332bd6 | ||
|
|
d03d05242c | ||
|
|
79d4a2ba40 | ||
|
|
74dc373016 | ||
|
|
35ddbd4da4 | ||
|
|
683eec8608 | ||
|
|
d87b25d05d | ||
|
|
545ee874d6 | ||
|
|
3536264b14 | ||
|
|
6a568ae565 | ||
|
|
15e284bf9e | ||
|
|
98c4806b4b | ||
|
|
f9d1edfbf9 | ||
|
|
7272df733f | ||
|
|
35979ddc96 | ||
|
|
f864679da6 | ||
|
|
87a7910dfc | ||
|
|
22903c92cf | ||
|
|
03efc68a7f | ||
|
|
98a91544f4 | ||
|
|
32eda11d42 | ||
|
|
7989c032ab | ||
|
|
4746f44a15 | ||
|
|
9f8668d646 | ||
|
|
4ddf3c4522 | ||
|
|
40f10a98b4 | ||
|
|
3fb91bfff8 | ||
|
|
91538ed268 | ||
|
|
58285beed1 | ||
|
|
a999b8bb78 | ||
|
|
c331f6b776 | ||
|
|
536906d529 | ||
|
|
3548df93a6 | ||
| fec13e08b9 | |||
| a540ca622d | |||
| 7fb0bcdac0 | |||
| b7726fce94 | |||
| 30c987bd9b | |||
| 539e9a0b8e | |||
| 1e4593ea17 | |||
| ec8a71de95 | |||
| 0c39388b21 | |||
| ebb043b589 | |||
| fcfc9f6450 | |||
| fe3cd057cd | |||
| b9cdb9299e | |||
| 8b6ba76848 | |||
| 2e79bd9e00 | |||
| cfdc9f7001 | |||
| a12b50edfa | |||
| 194d4bcec0 | |||
| 5badb000be | |||
| 08b3f2c194 | |||
| 5f9a110464 | |||
| bcd041484d | |||
| fd3b9f20f0 | |||
| bc160af26a | |||
| a34abd0f05 | |||
| 2fd1f5ee53 | |||
| 88547dc82c | |||
| ccf38c2da2 | |||
| b1107ae904 | |||
| 48f53b3884 | |||
| 9bcca96597 | |||
| 78e219a6cb | |||
| 8b958d6a56 | |||
| 1a1aa20690 | |||
| 54952923f3 | |||
| ca20fa6c35 | |||
| c1b2b51d13 | |||
| 28f78bb67e | |||
| 114647aa96 | |||
| 64ae389f27 | |||
| fd39dbfcd4 | |||
| b13cca7173 | |||
| 7807091b83 | |||
| d3026afb97 | |||
| 152daf1230 | |||
| ffda398f8d | |||
| 3e179960de | |||
| 93e655ed27 | |||
| 710c1dedb8 | |||
| 28ec5c73d4 | |||
| fc7285bd5c | |||
| 11ee156b29 | |||
| 2dba549787 | |||
| d28c7d870c | |||
| 8bf17e74ef | |||
| 08cf457aa3 | |||
| 448002ebf4 | |||
| 9735d3f0c0 | |||
| 8f1b0ade4d | |||
| db05024dc6 | |||
| 21053dac8c | |||
| 1ab0bf54fa | |||
| 5070d4dbfc | |||
| 12466b4426 | |||
| 23155d57b7 | |||
| a9e30bd84b | |||
| e62f6e9dce | |||
| c543bc13ea | |||
| b4d1681b99 | |||
| 6c32ffbe94 | |||
| 6787243414 | |||
| d350807e8c | |||
| f872c8db0c | |||
| 8c53c66c4d | |||
| 0f07029660 | |||
| 8010d771a1 | |||
| 7f4c41429e | |||
| 6d21fe4262 | |||
| c081f95aaf | |||
| 452a34c7e8 | |||
| 15c4616b91 | |||
| 07274a0364 | |||
| 3bb8db1349 | |||
| 65a3dcdc08 | |||
| 9fe40bfd13 | |||
| 07943d4f95 | |||
| 815a79ff41 | |||
| 32ddceba8f | |||
| 55ba4125d6 | |||
| b9274f546f | |||
| fd246d7daf | |||
| edae0d2bb0 | |||
| 1cb23dd0a4 | |||
| ab1052193a | |||
| 6dadb2008c | |||
| 18f9cc3fa8 | |||
| 9295ad7010 | |||
| e3cf2379ab | |||
| f6c3f676b2 | |||
| d57017382a | |||
| 1d7690eab4 | |||
| 67d68a9946 | |||
| 9af362b5c8 | |||
| a0ae09452f | |||
| 711859e660 | |||
| 1c1e496425 | |||
| 97229a521f | |||
| 7d8190210b | |||
| a1dfeff98b | |||
| 9e512c2863 | |||
| 136653b0fa | |||
| 75fb0f54ec | |||
| a3282f3eb3 | |||
| 843dfb986d | |||
| 3eba0fe092 | |||
| fdc8b03d9b | |||
| d86321cfe6 | |||
| 881c930fdb | |||
| dc3f9fe681 | |||
| d73ff17327 | |||
| 67468ba6fa | |||
| 6d2a7f50df | |||
| 3cf8f19fcc | |||
| d335f6c892 | |||
| 8d94428f77 | |||
| 903776dca6 | |||
| b6dc568215 | |||
| 130c341816 | |||
| 8d0430ae52 | |||
| 68da077c72 |
@@ -1,61 +0,0 @@
|
||||
[helpers]
|
||||
|
||||
[default]
|
||||
depends = []
|
||||
|
||||
[manjaro.files]
|
||||
manjaro = "~"
|
||||
|
||||
[mc.files]
|
||||
mc = "~/.config/mc"
|
||||
|
||||
[vim.files]
|
||||
# type symbolic prevents interpreting '{{' as template
|
||||
"vim/.vimrc" = { target = "~/.vimrc", type = "symbolic" }
|
||||
|
||||
[nvim.files]
|
||||
"vim/init.vim" = { target = "~/.config/nvim/init.vim", type = "symbolic" }
|
||||
|
||||
[i3.files]
|
||||
"i3/i3" = "~/.config/i3"
|
||||
"i3/i3blocks" = { target = "~/.config/i3blocks", type = "symbolic" }
|
||||
"i3/rofi" = "~/.config/rofi"
|
||||
"i3/i3-scrot.conf" = "~/.config/i3-scrot.conf"
|
||||
"i3/i3status-rust" = "~/.config/i3status-rust"
|
||||
"i3/.profile" = "~/.profile"
|
||||
|
||||
[i3.variables]
|
||||
monitor-primary = "not-specified"
|
||||
monitor-secondary = "not-specified"
|
||||
screenlayout-script = "echo screenlayout-script not specified"
|
||||
bar-font-size = 15
|
||||
tray-output = "tray_output primary"
|
||||
|
||||
[emacs.files]
|
||||
"emacs/doom" = "~/.config/doom"
|
||||
# "emacs/spacemacs/.spacemacs" = "~/.spacemacs"
|
||||
# "emacs/chemacs/.emacs-profiles.el" = "~/.emacs-profiles.el"
|
||||
|
||||
[alacritty.files]
|
||||
alacritty = "~/.config/alacritty"
|
||||
|
||||
[starship.files]
|
||||
starship = "~/.config/"
|
||||
|
||||
[zsh.files]
|
||||
"zsh/.zshrc" = "~/.zshrc"
|
||||
"zsh/custom-plugins" = "~/.oh-my-zsh/custom"
|
||||
|
||||
[polybar.files]
|
||||
polybar = "~/.config/polybar"
|
||||
|
||||
[leftwm.files]
|
||||
leftwm = "~/.config/leftwm"
|
||||
|
||||
[xmonad.files]
|
||||
xmonad = "~/.xmonad"
|
||||
|
||||
[nix.files]
|
||||
"direnvrc" = "~/.config/direnv/direnvrc"
|
||||
"nix/configuration.nix" = "/etc/nixos/configuration.nix"
|
||||
"nix/flake.nix" = "/etc/nixos/flake.nix"
|
||||
@@ -1,6 +0,0 @@
|
||||
[i3.variables]
|
||||
monitor-primary = "DVI-D-0"
|
||||
monitor-secondary = "DVI-D-1"
|
||||
screenlayout-script = "~/.screenlayout/2desktop-dvi.sh"
|
||||
bar-font-size = 15
|
||||
tray-output = "tray_output DVI-D-1"
|
||||
@@ -1,4 +0,0 @@
|
||||
[i3.variables]
|
||||
monitor-primary = "HDMI-1"
|
||||
monitor-secondary = "eDP-1"
|
||||
screenlayout-script = "~/.screenlayout/laptop-at-home.sh"
|
||||
@@ -1,5 +0,0 @@
|
||||
[i3.variables]
|
||||
monitor-primary = "HDMI-1"
|
||||
monitor-secondary = "eDP-1"
|
||||
tray-output = "tray_output eDP-1"
|
||||
screenlayout-script = "$scripts/display-layoutpicker"
|
||||
@@ -1,2 +0,0 @@
|
||||
includes = [".dotter/kardorf.toml"]
|
||||
packages = ["i3", "emacs", "alacritty", "zsh", "starship", "nix"]
|
||||
@@ -1,2 +0,0 @@
|
||||
includes = [".dotter/laptop.toml"]
|
||||
packages = []
|
||||
@@ -25,6 +25,7 @@ jobs:
|
||||
- name: Rebase from master branch
|
||||
shell: bash
|
||||
run: |
|
||||
git fetch origin master
|
||||
commits_ahead=$(git rev-list --count HEAD..origin/master)
|
||||
echo "Commits ahead: $commits_ahead"
|
||||
git log --oneline -5
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
keys:
|
||||
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
||||
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
||||
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
|
||||
- &pianonix-ssh age1tguyu2yd5xv8rgjjl50cq6dq5rr7umqgv098dgre4u9wyj30ea7sexw62c
|
||||
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
||||
- &kardorf-ssh age15lxw97z03q40xrdscnxqqugh5ky5aqrerg2t2rphkcqm6rnllurq8v98q5
|
||||
|
||||
creation_rules:
|
||||
- path_regex: hosts/common/secrets.yaml$
|
||||
key_groups:
|
||||
@@ -10,6 +12,7 @@ creation_rules:
|
||||
- *primary
|
||||
- *aspi-ssh
|
||||
- *pianonix-ssh
|
||||
- *kardorf-ssh
|
||||
|
||||
- path_regex: hosts/builder/secrets.yaml$
|
||||
key_groups:
|
||||
@@ -17,7 +20,7 @@ creation_rules:
|
||||
- *primary
|
||||
- *builder-ssh
|
||||
|
||||
- path_regex: hosts/pianonix/secrets.yaml$
|
||||
- path_regex: hosts/pianonix/secrets*
|
||||
key_groups:
|
||||
- age:
|
||||
- *primary
|
||||
|
||||
@@ -24,7 +24,7 @@ sops edit secrets/secrets.yaml
|
||||
** Authorize new device
|
||||
- Generate public key from ssh -> Private age key generation not needed
|
||||
#+begin_src sh
|
||||
ssh-to-age < /etc/ssh/ssh_host_ed25519_key
|
||||
ssh-to-age < /etc/ssh/ssh_host_ed25519_key.pub
|
||||
#+end_src
|
||||
- Add age public key to file:.sops.yaml
|
||||
- Update keys
|
||||
|
||||
904
flake.lock
generated
50
flake.nix
@@ -2,16 +2,21 @@
|
||||
description = "Home Manager configuration of julian";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
||||
systems.url = "github:nix-systems/default-linux";
|
||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
||||
impermanence.url = "github:nix-community/impermanence";
|
||||
nix-colors.url = "github:misterio77/nix-colors";
|
||||
deploy-rs.url = "github:serokell/deploy-rs";
|
||||
|
||||
nixos-generators = {
|
||||
url = "github:nix-community/nixos-generators";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
url = "github:nix-community/home-manager/release-25.11";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
sops-nix = {
|
||||
@@ -28,16 +33,12 @@
|
||||
};
|
||||
|
||||
# Various flakes
|
||||
alacritty-theme = {
|
||||
url = "github:alacritty/alacritty-theme";
|
||||
flake = false;
|
||||
};
|
||||
yazi-flavors = {
|
||||
url = "github:yazi-rs/flavors";
|
||||
flake = false;
|
||||
};
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
url = "github:nix-community/nixvim/nixos-25.11";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nix-matlab = {
|
||||
@@ -56,15 +57,13 @@
|
||||
};
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
home-manager,
|
||||
systems,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
} @ inputs: let
|
||||
inherit (self) outputs;
|
||||
lib = nixpkgs.lib // home-manager.lib;
|
||||
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
|
||||
@@ -79,8 +78,7 @@
|
||||
warn-dirty = false;
|
||||
}
|
||||
);
|
||||
in
|
||||
{
|
||||
in {
|
||||
inherit lib;
|
||||
|
||||
nixosModules = import ./modules/nixos;
|
||||
@@ -91,7 +89,7 @@
|
||||
|
||||
packages = forEachSystem (pkgs: import ./pkgs {inherit pkgs;});
|
||||
devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
|
||||
formatter = forEachSystem (pkgs: pkgs.alejandra);
|
||||
formatter = forEachSystem (pkgs: pkgs.alejandra); # nix fmt *
|
||||
|
||||
nixosConfigurations = {
|
||||
# Main laptop
|
||||
@@ -109,7 +107,13 @@
|
||||
};
|
||||
};
|
||||
kardorf = lib.nixosSystem {
|
||||
modules = [ ./hosts/pianonix ];
|
||||
modules = [./hosts/kardorf];
|
||||
specialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
};
|
||||
builder = lib.nixosSystem {
|
||||
modules = [./hosts/builder];
|
||||
specialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
@@ -145,7 +149,7 @@
|
||||
./homes/julian/kardorf.nix
|
||||
./homes/julian/hm-standalone-config.nix
|
||||
];
|
||||
pkgs = pkgsFor.aarch64-linux;
|
||||
pkgs = pkgsFor.x86_64-linux;
|
||||
extraSpecialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
@@ -155,7 +159,7 @@
|
||||
./homes/julian/v3ms
|
||||
./homes/julian/hm-standalone-config.nix
|
||||
];
|
||||
pkgs = pkgsFor.aarch64-linux;
|
||||
pkgs = pkgsFor.x86_64-linux;
|
||||
extraSpecialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
@@ -184,5 +188,15 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# substitutes: nixos-generate --flake .#pianonix -f sd-aarch64 --system aarch64-linux
|
||||
pianonix-image = inputs.nixos-generators.nixosGenerate {
|
||||
system = "aarch64-linux";
|
||||
format = "sd-aarch64";
|
||||
modules = [./hosts/pianonix];
|
||||
specialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,30 +1,58 @@
|
||||
{
|
||||
imports = [
|
||||
./global
|
||||
|
||||
./features/fish
|
||||
./features/direnv
|
||||
./features/topgrade
|
||||
./features/neovim
|
||||
./features/kitty
|
||||
./features/ghostty
|
||||
./features/wezterm
|
||||
./features/alacritty
|
||||
./features/yazi
|
||||
./features/emacs
|
||||
# ./features/i3
|
||||
./features/tmux
|
||||
./features/qt-distrobox
|
||||
|
||||
./features/hyprland
|
||||
|
||||
./features/nix-helper
|
||||
./features/desktop
|
||||
|
||||
./features/suites/cli
|
||||
./features/suites/desktop
|
||||
./features/suites/development
|
||||
|
||||
];
|
||||
|
||||
hostName = "aspi";
|
||||
is-nixos = true;
|
||||
terminal = "kitty";
|
||||
terminal = "alacritty";
|
||||
|
||||
# ------- ----------
|
||||
# | eDP-1 | | HDMI-A-1 |
|
||||
# ------- ----------
|
||||
monitors = [
|
||||
{
|
||||
name = "HDMI-A-1";
|
||||
# width = 1680;
|
||||
# height = 1050;
|
||||
workspaces = [
|
||||
"1"
|
||||
"2"
|
||||
"3"
|
||||
"4"
|
||||
"5"
|
||||
];
|
||||
primary = true;
|
||||
}
|
||||
{
|
||||
name = "eDP-1";
|
||||
# width = 1680;
|
||||
# height = 1050;
|
||||
workspaces = [
|
||||
"6"
|
||||
"7"
|
||||
"8"
|
||||
"9"
|
||||
"10"
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
import = [
|
||||
"~/.config/alacritty/theme/themes/smoooooth.toml"
|
||||
]
|
||||
@@ -1,17 +1,12 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [ alacritty ];
|
||||
|
||||
home.file = {
|
||||
".config/alacritty/theme".source = "${inputs.alacritty-theme}";
|
||||
".config/alacritty/alacritty.toml".source = ./alacritty.toml;
|
||||
}: {
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
settings = {};
|
||||
theme = "smoooooth";
|
||||
};
|
||||
|
||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "alacritty") "alacritty";
|
||||
|
||||
|
Before Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 177 KiB |
|
Before Width: | Height: | Size: 823 KiB |
|
Before Width: | Height: | Size: 759 KiB |
|
Before Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 1024 KiB |
|
Before Width: | Height: | Size: 2.8 MiB |
|
Before Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 499 KiB |
|
Before Width: | Height: | Size: 607 KiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 719 KiB |
|
Before Width: | Height: | Size: 464 KiB |
|
Before Width: | Height: | Size: 831 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 354 KiB |
|
Before Width: | Height: | Size: 861 KiB |
|
Before Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 267 KiB |
|
Before Width: | Height: | Size: 239 KiB |
|
Before Width: | Height: | Size: 299 KiB |
|
Before Width: | Height: | Size: 10 MiB |
|
Before Width: | Height: | Size: 2.7 MiB |
|
Before Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 4.0 MiB |
|
Before Width: | Height: | Size: 261 KiB |
|
Before Width: | Height: | Size: 269 KiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 216 KiB |
|
Before Width: | Height: | Size: 342 KiB |
|
Before Width: | Height: | Size: 412 KiB |
|
Before Width: | Height: | Size: 595 KiB |
@@ -4,18 +4,13 @@
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
with lib; let
|
||||
doomRepoUrl = "https://github.com/doomemacs/doomemacs";
|
||||
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
|
||||
in
|
||||
{
|
||||
in {
|
||||
home.sessionPath = ["/home/julian/.config/emacs/bin"];
|
||||
|
||||
home.packages =
|
||||
with pkgs;
|
||||
home.packages = with pkgs;
|
||||
[
|
||||
binutils # native-comp needs 'as', provided by this
|
||||
|
||||
@@ -30,7 +25,8 @@ in
|
||||
|
||||
## Module dependencies
|
||||
(aspellWithDicts (
|
||||
ds: with ds; [
|
||||
ds:
|
||||
with ds; [
|
||||
en
|
||||
en-computers
|
||||
en-science
|
||||
@@ -46,6 +42,8 @@ in
|
||||
|
||||
# Code formatters for use with doom emacs
|
||||
nixfmt-rfc-style # nix
|
||||
alejandra # nix
|
||||
|
||||
nixd # nix lsp
|
||||
dockfmt # docker
|
||||
google-java-format # java
|
||||
@@ -54,6 +52,14 @@ in
|
||||
shfmt
|
||||
pyright
|
||||
clang-tools # c++ lsp etc
|
||||
ccls # alternative c++ lsp
|
||||
cmake
|
||||
bear
|
||||
cmake-language-server
|
||||
|
||||
# qt6.full # qt tools and libs including lsp
|
||||
tinymist # typst lsp
|
||||
|
||||
ltex-ls # latex languagetool
|
||||
|
||||
graphviz
|
||||
|
||||
@@ -3,10 +3,7 @@
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
with lib; {
|
||||
home.file = {
|
||||
".config/starship.toml".source = ./starship.toml;
|
||||
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;
|
||||
@@ -50,6 +47,10 @@ with lib;
|
||||
end
|
||||
nix shell $args
|
||||
'';
|
||||
fish_user_key_bindings = ''
|
||||
bind ctrl-space 'zi; commandline -f repaint'
|
||||
bind -M insert ctrl-space 'zi; commandline -f repaint'
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4,10 +4,7 @@
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
with lib; {
|
||||
fonts.fontconfig.enable = true; # required to autoload fonts from packages
|
||||
home.packages = with pkgs; [
|
||||
nerd-fonts.fira-code
|
||||
@@ -15,7 +12,7 @@ with lib;
|
||||
dejavu_fonts
|
||||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
noto-fonts-emoji
|
||||
noto-fonts-color-emoji
|
||||
liberation_ttf
|
||||
fira-code
|
||||
fira-code-symbols
|
||||
|
||||
@@ -9,6 +9,5 @@
|
||||
settings = {
|
||||
general.adjustment-method = "wayland";
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
16
homes/julian/features/ghostty/default.nix
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
programs.ghostty = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
settings = {
|
||||
theme = "catppuccin-mocha";
|
||||
font-size = 12;
|
||||
};
|
||||
};
|
||||
|
||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "ghostty") "ghostty";
|
||||
}
|
||||
@@ -3,11 +3,9 @@
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
}: let
|
||||
inherit (inputs.nix-colors.lib-contrib {inherit pkgs;}) gtkThemeFromScheme;
|
||||
in
|
||||
{
|
||||
in {
|
||||
# Do not make conditional, just toggle things on and off
|
||||
imports = [inputs.nix-colors.homeManagerModules.default]; # TODO: what does this do
|
||||
|
||||
@@ -26,9 +24,10 @@ in
|
||||
};
|
||||
cursorTheme = {
|
||||
package = pkgs.apple-cursor;
|
||||
name = "macOS-BigSur";
|
||||
name = "macOS";
|
||||
size = 24;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
||||
}
|
||||
@@ -4,14 +4,12 @@
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
}: let
|
||||
inherit
|
||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
in {
|
||||
imports = [
|
||||
# inputs.hyprland.homeManagerModules.default
|
||||
./waybar
|
||||
@@ -26,7 +24,7 @@ in
|
||||
./zathura.nix
|
||||
./waypipe.nix
|
||||
|
||||
./hyprbars.nix
|
||||
# ./hyprbars.nix
|
||||
];
|
||||
|
||||
xdg.portal = {
|
||||
@@ -42,15 +40,29 @@ in
|
||||
programs.imv.enable = true; # TODO: what is that
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# hyprpicker # TODO
|
||||
# hyprcursor # TODO
|
||||
hyprpicker
|
||||
brightnessctl
|
||||
# grimblast
|
||||
frajul.hyprshot-gui
|
||||
frajul.wl-ocr
|
||||
|
||||
wf-recorder
|
||||
wl-clipboard
|
||||
|
||||
(pkgs.writeShellScriptBin "toggle-screen-mirroring" (
|
||||
builtins.readFile ./toggle-screen-mirroring.sh
|
||||
))
|
||||
|
||||
(pkgs.writeShellScriptBin "correct-workspace-locations" (
|
||||
lib.concatStringsSep "\n" (
|
||||
builtins.concatLists (
|
||||
map (
|
||||
monitor:
|
||||
map (ws: "hyprctl dispatch moveworkspacetomonitor ${ws} ${monitor.name}") monitor.workspaces
|
||||
)
|
||||
config.monitors
|
||||
)
|
||||
)
|
||||
))
|
||||
];
|
||||
|
||||
services.cliphist = {
|
||||
@@ -143,11 +155,17 @@ in
|
||||
settings = {
|
||||
"$mod" = "SUPER";
|
||||
|
||||
# Environment variables programs like emacs have access to
|
||||
env = "TERMINAL,${config.terminal}";
|
||||
|
||||
# Monitors
|
||||
monitor = ",preferred,auto,auto";
|
||||
monitor = ",preferred,auto,1";
|
||||
|
||||
# Autostart
|
||||
exec-once = [ "firefox" ];
|
||||
exec-once = [
|
||||
(lib.getExe pkgs.firefox)
|
||||
(lib.getExe pkgs.waybar)
|
||||
];
|
||||
|
||||
# Look and Feel
|
||||
general = {
|
||||
@@ -198,6 +216,7 @@ in
|
||||
|
||||
exec = [
|
||||
"hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
|
||||
"correct-workspace-locations"
|
||||
];
|
||||
|
||||
misc = {
|
||||
@@ -209,6 +228,10 @@ in
|
||||
vfr = true; # power saving
|
||||
};
|
||||
|
||||
cursor = {
|
||||
no_hardware_cursors = 1; # disable hardware cursors to fix tearing on kardorf
|
||||
};
|
||||
|
||||
render = {
|
||||
# we do, in fact, want direct scanout
|
||||
direct_scanout = true;
|
||||
@@ -225,7 +248,9 @@ in
|
||||
windowrulev2 = [
|
||||
"suppressevent maximize, class:.*"
|
||||
"workspace 1, class:firefox"
|
||||
"workspace 8, class:Zotero"
|
||||
"workspace 9, class:nheko"
|
||||
"workspace 9, class:discord"
|
||||
"workspace 9, class:org.telegram.desktop"
|
||||
"workspace 10, class:thunderbird"
|
||||
"float, class:qalculate-gtk"
|
||||
@@ -233,23 +258,17 @@ in
|
||||
];
|
||||
|
||||
# Workspace rules
|
||||
workspace = [
|
||||
"1, monitor:HDMI-A-1"
|
||||
"2, monitor:HDMI-A-1"
|
||||
"3, monitor:HDMI-A-1"
|
||||
"4, monitor:HDMI-A-1"
|
||||
"5, monitor:HDMI-A-1"
|
||||
"6, monitor:eDP-1"
|
||||
"7, monitor:eDP-1"
|
||||
"8, monitor:eDP-1"
|
||||
"9, monitor:eDP-1"
|
||||
"10, monitor:eDP-1"
|
||||
|
||||
workspace =
|
||||
[
|
||||
# smart gaps (none when only one window in workspace)
|
||||
"w[t1], gapsin:0, gapsout:0, border:1"
|
||||
"w[tg1], gapsin:0, gapsout:0, border:1"
|
||||
"f[1], gapsin:0, gapsout:0, border:1"
|
||||
];
|
||||
]
|
||||
# builds like "1, e-DP1" "2, HDMI-1" etc.
|
||||
++ builtins.concatLists (
|
||||
map (monitor: map (ws: "${ws}, monitor:${monitor.name}") monitor.workspaces) config.monitors
|
||||
);
|
||||
|
||||
# Mouse binds
|
||||
bindm = [
|
||||
@@ -271,7 +290,7 @@ in
|
||||
# opening applications
|
||||
"$mod, D, exec, wofi --show drun,run"
|
||||
"$mod, E, exec, pcmanfm"
|
||||
"$mod, Return, exec, kitty"
|
||||
"$mod, Return, exec, ${config.terminal}"
|
||||
"$mod, B, exec, firefox"
|
||||
"$mod, C, exec, qalculate-gtk"
|
||||
|
||||
@@ -279,7 +298,9 @@ in
|
||||
"$mod SHIFT, E, exec, wlogout -p layer-shell"
|
||||
"$mod, Escape, exec, wlogout -p layer-shell"
|
||||
"$mod SHIFT, R, exec, hyprctl reload"
|
||||
"$mod, Print, exec, hyprshot-gui"
|
||||
", Print, exec, hyprshot-gui"
|
||||
"$mod, P, exec, toggle-screen-mirroring; correct-workspace-locations"
|
||||
|
||||
# "$mod SHIFT, E, exec, pkill Hyprland"
|
||||
# "$mod, G, togglegroup,"
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
lib,
|
||||
outputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
}: let
|
||||
getHostname = x: lib.last (lib.splitString "@" x);
|
||||
# remoteColorschemes = lib.mapAttrs' (n: v: {
|
||||
# name = getHostname n;
|
||||
@@ -27,8 +26,7 @@ let
|
||||
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
|
||||
'';
|
||||
});
|
||||
in
|
||||
{
|
||||
in {
|
||||
wayland.windowManager.hyprland = {
|
||||
plugins = [hyprbars];
|
||||
settings = {
|
||||
@@ -40,8 +38,7 @@ in
|
||||
# bar_text_size = config.fontProfiles.regular.size;
|
||||
bar_part_of_window = true;
|
||||
bar_precedence_over_border = true;
|
||||
hyprbars-button =
|
||||
let
|
||||
hyprbars-button = let
|
||||
closeAction = "hyprctl dispatch killactive";
|
||||
|
||||
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
|
||||
@@ -50,8 +47,7 @@ in
|
||||
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
|
||||
|
||||
maximizeAction = "hyprctl dispatch fullscreen 1";
|
||||
in
|
||||
[
|
||||
in [
|
||||
# Red close button
|
||||
# "${rgb config.colorscheme.colors.red},12,,${closeAction}"
|
||||
# # Yellow "minimize" (send to special workspace) button
|
||||
|
||||
@@ -5,13 +5,12 @@
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
}: let
|
||||
inherit
|
||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
in {
|
||||
programs.hyprlock.enable = true;
|
||||
programs.hyprlock.settings = {
|
||||
general = {
|
||||
|
||||
@@ -5,25 +5,26 @@
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
}: let
|
||||
inherit
|
||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
in {
|
||||
home.packages = with pkgs; [libnotify];
|
||||
|
||||
services.mako = {
|
||||
enable = true;
|
||||
defaultTimeout = 5000; # milliseconds, can be overwritten by notification sender
|
||||
# backgroundColor = "#${palette.base00}"; TODO fix
|
||||
# textColor = "#${palette.base05}";
|
||||
# borderColor = "#${palette.base0D}";
|
||||
# progressColor = "over #${palette.base02}";
|
||||
# extraConfig = ''
|
||||
# [urgency=high]
|
||||
# border-color=#${palette.base09}
|
||||
settings = {
|
||||
defaultTimeout = "5000"; # milliseconds, can be overwritten by notification sender
|
||||
backgroundColor = "#${palette.base00}";
|
||||
textColor = "#${palette.base05}";
|
||||
borderColor = "#${palette.base0D}";
|
||||
progressColor = "over #${palette.base02}";
|
||||
extraConfig = ''
|
||||
[urgency=high]
|
||||
border-color=#${palette.base09}
|
||||
# '';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
}: let
|
||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
||||
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
||||
@@ -15,13 +14,11 @@ let
|
||||
lockTime = 4 * 60; # TODO: configurable desktop (10 min)/laptop (4 min)
|
||||
|
||||
# Makes two timeouts: one for when the screen is not locked (lockTime+timeout) and one for when it is.
|
||||
afterLockTimeout =
|
||||
{
|
||||
afterLockTimeout = {
|
||||
timeout,
|
||||
command,
|
||||
resumeCommand ? null,
|
||||
}:
|
||||
[
|
||||
}: [
|
||||
{
|
||||
timeout = lockTime + timeout;
|
||||
inherit command resumeCommand;
|
||||
@@ -31,8 +28,7 @@ let
|
||||
inherit resumeCommand timeout;
|
||||
}
|
||||
];
|
||||
in
|
||||
{
|
||||
in {
|
||||
services.swayidle = {
|
||||
enable = true;
|
||||
systemdTarget = "graphical-session.target";
|
||||
|
||||
@@ -2,11 +2,9 @@
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
}: let
|
||||
inherit (config.colorscheme) colors;
|
||||
in
|
||||
{
|
||||
in {
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
||||
67
homes/julian/features/hyprland/toggle-screen-mirroring.sh
Normal file
@@ -0,0 +1,67 @@
|
||||
#! /usr/bin/env sh
|
||||
|
||||
# A hyprland script for a laptop-external-monitor setup, toggling between which is in use
|
||||
|
||||
# Launch at startup to make hyprland disable the internal monitor if an external monitor is detected and enabled
|
||||
# Additionally it's called with a keybind to switch between a laptop monitor and an external display
|
||||
# Ideally the conditional monitor behaviour was instead done directly in hyprland.conf, but I'm not sure whether that's possible
|
||||
#
|
||||
# Relevant info:
|
||||
# - hyprctl monitors: identifies currently enabled monitors
|
||||
# - hyprctl monitors all: identifies ALL connected monitors - including those not in use
|
||||
#
|
||||
# Suggested use:
|
||||
# Add this line somewhere after the regular monitor configuration in hyprland.conf:
|
||||
# exec = /path/to/hyprland-monitors-toggle.sh
|
||||
# Add a keybind to run this script on demand:
|
||||
# bind =,SomeKeyHere, exec, /path/to/hyprland-monitors-toggle.sh
|
||||
|
||||
#move_all_workspaces_to_monitor() {
|
||||
# TARGET_MONITOR="$1"
|
||||
|
||||
# hyprctl workspaces | grep ^workspace | cut --delimiter ' ' --fields 3 | xargs -I '{}' hyprctl dispatch moveworkspacetomonitor '{}' "$TARGET_MONITOR"
|
||||
|
||||
# # Previous approach
|
||||
# #hyprctl swapactiveworkspaces $EXTERNAL_MONITOR $INTERNAL_MONITOR
|
||||
#}
|
||||
|
||||
# TODO: Detect these instead of hardcoding them
|
||||
INTERNAL_MONITOR="eDP-1"
|
||||
EXTERNAL_MONITOR="HDMI-A-1"
|
||||
|
||||
# NUM_MONITORS=$(hyprctl monitors all | grep --count Monitor)
|
||||
# NUM_MONITORS_ACTIVE=$(hyprctl monitors | grep --count Monitor)
|
||||
|
||||
# Make sure all
|
||||
# if [ "$NUM_MONITORS_ACTIVE" -eq 1 ]; then
|
||||
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
||||
# exit
|
||||
# fi
|
||||
|
||||
MIRROR_SETTING=$(hyprctl monitors all -j | jq -r '.[] | select(.name == "HDMI-A-1") | .mirrorOf')
|
||||
|
||||
# # For dynamically toggling which monitor is active later via a keybind
|
||||
# if [ "$NUM_MONITORS" -gt 1 ]; then # Handling multiple monitors
|
||||
# if hyprctl monitors | cut --delimiter ' ' --fields 2 | grep --quiet ^$EXTERNAL_MONITOR; then
|
||||
# hyprctl keyword monitor $INTERNAL_MONITOR,preferred,0x0,1
|
||||
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
||||
# hyprctl keyword monitor "$EXTERNAL_MONITOR, disable"
|
||||
# else
|
||||
# hyprctl keyword monitor $EXTERNAL_MONITOR,preferred,0x0,1
|
||||
# move_all_workspaces_to_monitor $EXTERNAL_MONITOR
|
||||
# hyprctl keyword monitor "$INTERNAL_MONITOR, disable"
|
||||
# fi
|
||||
# else # If the external monitor is disconnected without running this script first, it might become the case that no monitor is on - therefore turn on the laptop monitor!
|
||||
# hyprctl keyword monitor $INTERNAL_MONITOR,preferred,0x0,1
|
||||
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
||||
# fi
|
||||
|
||||
echo setting:
|
||||
echo $MIRROR_SETTING
|
||||
if [ "$MIRROR_SETTING" = "none" ]; then
|
||||
echo "mirroring..."
|
||||
hyprctl keyword monitor "$EXTERNAL_MONITOR, preferred, auto, 1, mirror, $INTERNAL_MONITOR"
|
||||
else
|
||||
hyprctl keyword monitor "$EXTERNAL_MONITOR, disable" # shortly disable monitor so waybar recognizes the new monitor again # TODO: find better solution
|
||||
hyprctl keyword monitor "$EXTERNAL_MONITOR, preferred, auto, 1"
|
||||
fi
|
||||
@@ -12,7 +12,14 @@
|
||||
|
||||
"modules-center": [],
|
||||
|
||||
"modules-right": ["idle_inhibitor", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"],
|
||||
"modules-right": ["idle_inhibitor", "custom/nixos-update", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"],
|
||||
|
||||
"custom/nixos-update": {
|
||||
"exec": "frajul-auto-upgrade-status",
|
||||
"return-type": "json",
|
||||
"interval": 2,
|
||||
"on-click-right": "frajul-auto-upgrade-toggle"
|
||||
},
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"on-scroll-up": "hyprctl dispatch workspace m+1",
|
||||
@@ -35,6 +42,7 @@
|
||||
},
|
||||
|
||||
"idle_inhibitor": {
|
||||
"start-activated": true,
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
|
||||
@@ -5,14 +5,12 @@
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
}: let
|
||||
palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
|
||||
in
|
||||
{
|
||||
in {
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
# systemd.enable = true;
|
||||
settings.mainBar = builtins.fromJSON (builtins.readFile ./config.json);
|
||||
};
|
||||
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
home.packages = [pkgs.waypipe];
|
||||
systemd.user.services = {
|
||||
waypipe-client = {
|
||||
|
||||
@@ -5,13 +5,12 @@
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
}: let
|
||||
inherit
|
||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
in {
|
||||
home.packages = with pkgs; [wlogout];
|
||||
|
||||
# xdg.configFile."wlogout/style.css".text = ''
|
||||
|
||||
@@ -5,13 +5,12 @@
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
}: let
|
||||
inherit
|
||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
in {
|
||||
home.packages = with pkgs; [wofi];
|
||||
|
||||
xdg.configFile."wofi/config".source = ./config;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
{config, ...}: let
|
||||
inherit (config.colorscheme) colors;
|
||||
in
|
||||
{
|
||||
in {
|
||||
programs.zathura = {
|
||||
enable = true;
|
||||
options = {
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
imports = [../rofi];
|
||||
|
||||
services.dunst.enable = true;
|
||||
@@ -36,7 +35,9 @@
|
||||
|
||||
# Overwrite default home-manager config file
|
||||
xdg.configFile."i3/config".source = lib.mkForce (
|
||||
if config.hostName == "kardorf" then ./i3/config-kardorf else ./i3/config
|
||||
if config.hostName == "kardorf"
|
||||
then ./i3/config-kardorf
|
||||
else ./i3/config
|
||||
);
|
||||
|
||||
home.file = {
|
||||
|
||||
@@ -142,8 +142,8 @@ bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
|
||||
|
||||
# Monitor config
|
||||
set $monitor_left "DVI-D-0"
|
||||
set $monitor_right "DVI-D-1"
|
||||
set $monitor_left "DVI-D-1"
|
||||
set $monitor_right "DVI-D-2"
|
||||
|
||||
workspace $ws1 output $monitor_left
|
||||
workspace $ws2 output $monitor_left
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
start_if_not_running()
|
||||
{
|
||||
program=$1
|
||||
pidof -sq $program
|
||||
if [ "$?" -eq "1" ]; then
|
||||
start_program $1
|
||||
else
|
||||
echo "$program is already running"
|
||||
fi
|
||||
}
|
||||
|
||||
start_program()
|
||||
{
|
||||
program=$1
|
||||
echo "Starting $program..."
|
||||
$program & > /dev/null
|
||||
}
|
||||
|
||||
i3-msg 'workspace 9; append_layout ~/.config/i3/workspace-messaging.json'
|
||||
start_program nheko
|
||||
sleep 0.1
|
||||
start_program telegram-desktop
|
||||
sleep 0.1
|
||||
start_program thunderbird
|
||||
sleep 0.1
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
HDMI_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink"
|
||||
LAPTOP_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink"
|
||||
|
||||
HDMI_ICON=$(pactl info | grep -q $HDMI_SINK && echo "checkbox")
|
||||
LAPTOP_ICON=$(pactl info | grep -q $LAPTOP_SINK && echo "checkbox")
|
||||
|
||||
HDMI_VOLUME=$(pactl get-sink-volume $HDMI_SINK | head -n 1 | awk '{print $5}')
|
||||
LAPTOP_VOLUME=$(pactl get-sink-volume $LAPTOP_SINK | head -n 1 | awk '{print $5}')
|
||||
|
||||
read -r -d '' CONF <<EOF
|
||||
Open Pavucontrol,pavucontrol,pavucontrol
|
||||
|
||||
^sep()
|
||||
HDMI - $HDMI_VOLUME,pactl set-default-sink $HDMI_SINK,$HDMI_ICON
|
||||
Laptop - $LAPTOP_VOLUME,pactl set-default-sink $LAPTOP_SINK,$LAPTOP_ICON
|
||||
EOF
|
||||
|
||||
echo "$CONF" | jgmenu --simple
|
||||
@@ -3,9 +3,7 @@
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
}: {
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
shellIntegration.enableFishIntegration = true;
|
||||
|
||||
@@ -4,10 +4,8 @@
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
|
||||
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
|
||||
imports = [ inputs.nixvim.homeModules.nixvim ];
|
||||
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
@@ -39,7 +37,8 @@
|
||||
opts = {
|
||||
number = false;
|
||||
relativenumber = false;
|
||||
|
||||
ignorecase = true;
|
||||
smartcase = true;
|
||||
};
|
||||
clipboard.register = "unnamedplus"; # Use system clipboard
|
||||
|
||||
@@ -53,7 +52,7 @@
|
||||
key = "<leader><space>";
|
||||
}
|
||||
{
|
||||
action = "<cmd>Telescope file_browser<cr>";
|
||||
action = "<cmd>Telescope file_browser path=%:p:h<cr>";
|
||||
key = "<leader>.";
|
||||
}
|
||||
{
|
||||
@@ -80,6 +79,7 @@
|
||||
neogit.enable = true; # like magit
|
||||
trouble.enable = true;
|
||||
web-devicons.enable = true;
|
||||
orgmode.enable = true; # org-mode support
|
||||
|
||||
# Shows file trees
|
||||
oil = {
|
||||
@@ -144,21 +144,23 @@
|
||||
};
|
||||
|
||||
lsp = {
|
||||
enable = true;
|
||||
enable = true; # includes lsp-config, default settings for the lsps
|
||||
servers = {
|
||||
rust_analyzer = {
|
||||
enable = true;
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
};
|
||||
nixd.enable = true;
|
||||
pyright.enable = true;
|
||||
dockerls.enable = true;
|
||||
lua_ls.enable = true;
|
||||
nixd.enable = true; # nix
|
||||
pyright.enable = true; # python
|
||||
dockerls.enable = true; # docker
|
||||
lua_ls.enable = true; # lua
|
||||
clangd.enable = true; # c, c++
|
||||
dartls.enable = true; # dart, flutter
|
||||
digestif.enable = true; # latex
|
||||
tinymist.enable = true; # typst
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.sessionVariables = {
|
||||
FLAKE = "/home/julian/.dotfiles";
|
||||
NH_FLAKE = "/home/julian/.dotfiles";
|
||||
};
|
||||
|
||||
home.shellAliases = {
|
||||
|
||||
22
homes/julian/features/qt-distrobox/default.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
programs.distrobox = {
|
||||
enable = true;
|
||||
containers."qt-distrobox" = {
|
||||
image = "debian:12.2";
|
||||
exported_apps = "qtcreator";
|
||||
enableSystemdUnit = false; # fails in creating and does not recreate. Do distrobox-assemble create --replace --file ~/.config/distrobox/containers.ini instead
|
||||
additional_packages = [
|
||||
"qtcreator"
|
||||
"qt6-base-dev"
|
||||
"qt6-wayland"
|
||||
"qt6-tools-dev-tools"
|
||||
"qt6-tools-dev"
|
||||
"qt6-serialbus-dev"
|
||||
"qt6-websockets-dev"
|
||||
"libgl1-mesa-dev"
|
||||
"build-essential"
|
||||
"cmake"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -2,9 +2,7 @@
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
}: {
|
||||
# this would need you to config rofi using home-manager
|
||||
# programs.rofi = { enable = true; };
|
||||
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
bat
|
||||
du-dust # Like du tree but better
|
||||
dust # Like du tree but better
|
||||
fd # better find
|
||||
fdupes # find and delete duplicate files
|
||||
ffmpeg
|
||||
@@ -29,7 +24,7 @@
|
||||
p7zip # unzip 7zip archives
|
||||
parted
|
||||
pciutils # lspci
|
||||
poppler_utils # Pdf utils including pdfimages
|
||||
poppler-utils # Pdf utils including pdfimages
|
||||
libqalculate # Nice tui calculator (qalc)
|
||||
ripgrep # better grep
|
||||
rnr # renaming tool
|
||||
@@ -45,6 +40,7 @@
|
||||
wireguard-tools # wg-quick
|
||||
xorg.xkill
|
||||
zip
|
||||
dig
|
||||
|
||||
## My scripts
|
||||
frajul.edit-config
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{pkgs, ...}: {
|
||||
imports = [../../gtk];
|
||||
|
||||
{
|
||||
services.blueman-applet.enable = true;
|
||||
services.nextcloud-client.enable = true;
|
||||
services.nextcloud-client.startInBackground = true;
|
||||
@@ -26,19 +22,21 @@
|
||||
calibre # ebook manager and viewer
|
||||
# digikam
|
||||
discord
|
||||
discord-ptb # in case discord updates take their time
|
||||
# dvdisaster
|
||||
# element-desktop
|
||||
# rocketchat-desktop
|
||||
thunderbird
|
||||
tdesktop # telegram
|
||||
telegram-desktop # telegram
|
||||
# schildichat-desktop # not updated regularly
|
||||
nheko
|
||||
evince # Simple pdf reader, good for focusing on document content
|
||||
firefox
|
||||
vivaldi
|
||||
# geogebra
|
||||
cheese
|
||||
handbrake
|
||||
kitty # Terminal
|
||||
# kitty # Terminal, already available as feature
|
||||
libnotify
|
||||
libreoffice
|
||||
mate.engrampa
|
||||
@@ -50,10 +48,10 @@
|
||||
qpdfview
|
||||
# qutebrowser
|
||||
# realvnc-vnc-viewer
|
||||
rpi-imager # make isos
|
||||
# rpi-imager # make isos
|
||||
# rustdesk
|
||||
tor-browser
|
||||
unstable.path-of-building # Path of Building
|
||||
rusty-path-of-building # Path of Building for poe1 and poe2
|
||||
# frajul.pob-dev-version # Path of Building
|
||||
vlc
|
||||
wineWowPackages.stable # 32-bit and 64-bit wine
|
||||
@@ -65,8 +63,12 @@
|
||||
zotero # Manage papers and other sources
|
||||
pdfpc # Present slides in pdf form
|
||||
|
||||
networkmanager-openvpn
|
||||
keepassxc
|
||||
|
||||
## My scripts
|
||||
frajul.open-messaging
|
||||
frajul.xwacomcalibrate
|
||||
frajul.pob2-frajul
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
watchexec # Run command when any file in current dir changes
|
||||
android-tools # adb
|
||||
@@ -15,7 +9,7 @@
|
||||
clippy
|
||||
cntr # nix debugger
|
||||
conda
|
||||
micromamba # a better, faster conda
|
||||
# micromamba # a better, faster conda
|
||||
devcontainer # development container
|
||||
devenv # devbox alternative
|
||||
dbeaver-bin
|
||||
@@ -27,15 +21,21 @@
|
||||
unstable.zed-editor
|
||||
jdk
|
||||
julia-bin
|
||||
(texlive.combine {
|
||||
# for rendering latex in inkscape
|
||||
inherit (texlive)
|
||||
scheme-medium
|
||||
standalone
|
||||
amsmath
|
||||
preview
|
||||
;
|
||||
})
|
||||
# (texlive.combine {
|
||||
# # for rendering latex in inkscape
|
||||
# inherit
|
||||
# (texlive)
|
||||
# scheme-medium
|
||||
# standalone
|
||||
# amsmath
|
||||
# preview
|
||||
# # needed for org mode export
|
||||
# wrapfig
|
||||
# capt-of
|
||||
# biblatex
|
||||
# ;
|
||||
# })
|
||||
vagrant
|
||||
matlab # Using nix-matlab overlay defined in flake
|
||||
maven
|
||||
nodejs
|
||||
@@ -63,6 +63,7 @@
|
||||
|
||||
## My scripts
|
||||
frajul.deploy-to-pianopi
|
||||
frajul.rtklib
|
||||
|
||||
(pkgs.writeShellScriptBin "matlab-rsp" ''
|
||||
matlab -desktop -sd "/home/julian/git/uwa-channel-model" -softwareopengl
|
||||
|
||||
10
homes/julian/features/tmux/default.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
clock24 = true;
|
||||
keyMode = "vi";
|
||||
customPaneNavigationAndResize = true; # use hjkl
|
||||
mouse = true;
|
||||
prefix = "C-Space"; # use instead of C-b
|
||||
};
|
||||
}
|
||||
@@ -7,8 +7,7 @@
|
||||
misc.assume_yes = true;
|
||||
misc.no_retry = true;
|
||||
|
||||
pre_commands."Update flake" =
|
||||
"git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
|
||||
# pre_commands."Update flake" = "git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
|
||||
|
||||
linux.nix_arguments = "--flake /home/julian/.dotfiles";
|
||||
linux.home_manager_arguments = [
|
||||
|
||||
@@ -3,9 +3,7 @@
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
}: {
|
||||
programs.wezterm = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
|
||||
@@ -2,16 +2,15 @@
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
programs.zoxide.enable = true;
|
||||
programs.zoxide.enableFishIntegration = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
exiftool
|
||||
unar # extract archives
|
||||
xdragon # dragndrop
|
||||
poppler_utils # pdf preview
|
||||
dragon-drop # dragndrop
|
||||
poppler-utils # pdf preview
|
||||
fd
|
||||
ripgrep
|
||||
fzf
|
||||
@@ -27,7 +26,7 @@
|
||||
programs.yazi.enable = true;
|
||||
programs.yazi.enableFishIntegration = true;
|
||||
programs.yazi.settings.manager = {
|
||||
sort_by = "modified";
|
||||
sort_by = "mtime";
|
||||
sort_reverse = true;
|
||||
show_hidden = true;
|
||||
};
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
home.file = {
|
||||
".config/starship.toml".source = ./starship.toml;
|
||||
};
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
{
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
outputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
}: {
|
||||
imports =
|
||||
[
|
||||
../features/fonts
|
||||
# ../features/cli
|
||||
# ../features/helix
|
||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
||||
../features/nix-helper
|
||||
]
|
||||
++ (builtins.attrValues outputs.homeManagerModules);
|
||||
|
||||
nix = {
|
||||
package = lib.mkDefault pkgs.nix;
|
||||
@@ -21,7 +20,7 @@
|
||||
"flakes"
|
||||
"ca-derivations"
|
||||
];
|
||||
# warn-dirty = false; # TODO: do I want it? also for systems
|
||||
warn-dirty = false; # TODO: do I want it? also for systems
|
||||
};
|
||||
};
|
||||
|
||||
@@ -51,5 +50,4 @@
|
||||
# home.file = {
|
||||
# ".colorscheme.json".text = builtins.toJSON config.colorscheme;
|
||||
# };
|
||||
|
||||
}
|
||||
|
||||
@@ -6,9 +6,11 @@
|
||||
# inherit pkgs;
|
||||
# inherit lib;
|
||||
# };
|
||||
|
||||
{ lib, pkgs, ... }:
|
||||
let
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
package-names = with pkgs; {
|
||||
"x-scheme-handler/tg" = telegram-desktop;
|
||||
"x-scheme-handler/mailto" = thunderbird;
|
||||
@@ -42,4 +44,5 @@ let
|
||||
in
|
||||
lib.mapAttrs (mimeType: package: [
|
||||
"${package}/share/applications/${package.pname}.desktop"
|
||||
]) package-names
|
||||
])
|
||||
package-names
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
# Only apply this to home-manager standalone
|
||||
{
|
||||
outputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
{outputs, ...}: {
|
||||
# Apply overlays
|
||||
nixpkgs = {
|
||||
overlays = builtins.attrValues outputs.overlays;
|
||||
@@ -23,12 +19,13 @@
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.nixos.org/"
|
||||
"https://hyprland.cachix.org"
|
||||
"http://binarycache.julian-mutter.de"
|
||||
"https://devenv.cachix.org"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
|
||||
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
||||
];
|
||||
|
||||
trusted-users = [
|
||||
@@ -43,6 +40,8 @@
|
||||
];
|
||||
|
||||
# nix.settings. # warn-dirty = false; # TODO: do I want this
|
||||
|
||||
#
|
||||
# Ensure we can still build when missing-server is not accessible
|
||||
fallback = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -6,22 +6,54 @@
|
||||
./features/direnv
|
||||
./features/topgrade
|
||||
./features/neovim
|
||||
./features/kitty
|
||||
./features/ghostty
|
||||
./features/wezterm
|
||||
./features/alacritty
|
||||
./features/yazi
|
||||
./features/emacs
|
||||
./features/i3
|
||||
./features/nix-helper
|
||||
./features/desktop
|
||||
|
||||
./features/tmux
|
||||
./features/qt-distrobox
|
||||
./features/hyprland
|
||||
# ./features/i3
|
||||
|
||||
./features/suites/cli
|
||||
./features/suites/desktop
|
||||
./features/suites/development
|
||||
|
||||
];
|
||||
|
||||
hostName = "kardorf";
|
||||
is-nixos = true;
|
||||
terminal = "kitty";
|
||||
terminal = "alacritty";
|
||||
|
||||
# --------- ---------
|
||||
# | DVI-D-1 | | DVI-D-2 |
|
||||
# --------- ---------
|
||||
monitors = [
|
||||
{
|
||||
name = "DVI-D-1";
|
||||
width = 1680;
|
||||
height = 1050;
|
||||
workspaces = [
|
||||
"1"
|
||||
"2"
|
||||
"3"
|
||||
"4"
|
||||
"5"
|
||||
];
|
||||
primary = true;
|
||||
}
|
||||
{
|
||||
name = "DVI-D-2";
|
||||
width = 1680;
|
||||
height = 1050;
|
||||
workspaces = [
|
||||
"6"
|
||||
"7"
|
||||
"8"
|
||||
"9"
|
||||
"10"
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
imports = [
|
||||
./global
|
||||
|
||||
@@ -11,16 +7,15 @@
|
||||
./features/neovim
|
||||
./features/wezterm
|
||||
./features/yazi
|
||||
./features/nix-helper
|
||||
./features/desktop
|
||||
./features/gtk
|
||||
];
|
||||
|
||||
hostName = "pianonix";
|
||||
is-nixos = true;
|
||||
terminal = "wezterm";
|
||||
|
||||
services.syncthing.tray.enable = true;
|
||||
services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
|
||||
# services.syncthing.tray.enable = true;
|
||||
# services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
|
||||
|
||||
home.packages = with pkgs; [
|
||||
music-reader
|
||||
@@ -32,10 +27,34 @@
|
||||
onboard
|
||||
];
|
||||
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
|
||||
profiles.default = {
|
||||
isDefault = true;
|
||||
|
||||
settings = {
|
||||
"browser.startup.homepage" = "https://sheets.julian-mutter.de";
|
||||
"browser.startup.page" = 1; # 0=blank, 1=home page, 3=restore previous session
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.chromium = {
|
||||
enable = true;
|
||||
|
||||
# commandLineArgs = [
|
||||
# "--homepage=https://sheets.julian-mutter.de"
|
||||
# "--no-first-run"
|
||||
# ];
|
||||
};
|
||||
|
||||
# Autostart link
|
||||
home.file = {
|
||||
".config/autostart/sheet-organizer.desktop".source =
|
||||
"${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop";
|
||||
# ".config/autostart/sheet-organizer.desktop".source = "${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop";
|
||||
".config/autostart/firefox.desktop".source = "${pkgs.firefox}/share/applications/firefox.desktop";
|
||||
".config/autostart/onboard.desktop".source = "${pkgs.onboard}/share/applications/onboard.desktop";
|
||||
# ".config/autostart/chromium.desktop".source = "${pkgs.chromium}/share/applications/chromium.desktop";
|
||||
".config/sheet-organizer/config.toml".text = ''
|
||||
working_directory = "/home/julian/Klavier"
|
||||
'';
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
imports = [
|
||||
../global
|
||||
|
||||
@@ -14,12 +13,15 @@
|
||||
../features/yazi
|
||||
../features/emacs
|
||||
../features/nix-helper
|
||||
../features/qt-distrobox
|
||||
];
|
||||
|
||||
hostName = "aspi";
|
||||
is-nixos = false;
|
||||
# terminal = "kitty";
|
||||
|
||||
home.sessionPath = ["/snap/bin"];
|
||||
|
||||
home.packages =
|
||||
lib.lists.concatMap (packages-list-file: import packages-list-file {inherit pkgs;})
|
||||
[
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
{pkgs, ...}:
|
||||
|
||||
with pkgs;
|
||||
[
|
||||
with pkgs; [
|
||||
nerd-fonts.fira-code
|
||||
font-awesome
|
||||
dejavu_fonts
|
||||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
noto-fonts-emoji
|
||||
noto-fonts-color-emoji
|
||||
liberation_ttf
|
||||
fira-code
|
||||
fira-code-symbols
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
{pkgs, ...}:
|
||||
|
||||
with pkgs;
|
||||
[
|
||||
with pkgs; [
|
||||
# Rust setup
|
||||
rustc
|
||||
rustfmt
|
||||
@@ -33,7 +31,7 @@ with pkgs;
|
||||
ffmpeg
|
||||
julia-bin
|
||||
|
||||
poppler_utils # Pdf utils including pdfimages
|
||||
poppler-utils # Pdf utils including pdfimages
|
||||
sage
|
||||
|
||||
pkg-config # Often needed to build something
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
|
||||
../common/global
|
||||
../common/users/julian
|
||||
../common/users/yukari
|
||||
../common/users/pob
|
||||
../common/optional/binarycaches.nix
|
||||
|
||||
../common/optional/remote-builder.nix
|
||||
../common/optional/boot-efi.nix
|
||||
@@ -26,12 +29,21 @@
|
||||
networking.hostName = "aspi";
|
||||
system.stateVersion = "24.05";
|
||||
|
||||
# networking.firewall.checkReversePath = false; # Makes wg interface with all ips work
|
||||
|
||||
modules = {
|
||||
syncthing = {
|
||||
enable = true;
|
||||
overrideSettings = false;
|
||||
};
|
||||
frajulAutoUpgrade = {
|
||||
enable = true;
|
||||
flakePath = "/home/julian/.dotfiles";
|
||||
};
|
||||
};
|
||||
|
||||
programs.hyprland.enable = true;
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
|
||||
services.blueman.enable = true;
|
||||
services.upower.enable = true;
|
||||
@@ -39,12 +51,11 @@
|
||||
programs.steam.enable = true;
|
||||
|
||||
# TODO: not working
|
||||
services.logind.lidSwitch = "lock";
|
||||
services.logind.lidSwitchDocked = "lock";
|
||||
# services.logind.lidSwitch = "lock";
|
||||
# services.logind.lidSwitchDocked = "lock";
|
||||
|
||||
programs.kdeconnect.enable = true;
|
||||
|
||||
# Enable touchpad support
|
||||
services.libinput.enable = true;
|
||||
|
||||
}
|
||||
|
||||
@@ -2,9 +2,7 @@
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
}: {
|
||||
boot.initrd.availableKernelModules = [
|
||||
"vmd"
|
||||
"xhci_pci"
|
||||
|
||||
@@ -1,52 +1,39 @@
|
||||
# sudo nixos-rebuild switch --flake .#builder --target-host root@192.168.3.118
|
||||
# or
|
||||
# deploy .#builder
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
|
||||
../common/global
|
||||
../common/global/fish.nix # fish for admin
|
||||
../common/global/locale.nix
|
||||
../common/global/nix.nix
|
||||
../common/global/sops.nix
|
||||
../common/global/root.nix
|
||||
];
|
||||
|
||||
# hardware.graphics = {
|
||||
# enable = true;
|
||||
# extraPackages = with pkgs; [
|
||||
# rocmPackages.clr.icd
|
||||
# linuxPackages.amdgpu-pro
|
||||
# ];
|
||||
# };
|
||||
|
||||
# boot.kernelParams = [
|
||||
# "radeon.si_support=0"
|
||||
# "radeon.cik_support=1"
|
||||
# "amdgpu.si_support=0"
|
||||
# "amdgpu.cik_support=1"
|
||||
# ];
|
||||
# boot.extraModulePackages = with config.boot.kernelPackages; [ amdgpu-pro ];
|
||||
# boot.blacklistedKernelModules = [ "radeon" ];
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
|
||||
# Emulated systems used as alternative to cross-compiling
|
||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||
|
||||
networking.hostName = "builder";
|
||||
system.stateVersion = "23.11";
|
||||
|
||||
modules = {
|
||||
keymap.enable = true;
|
||||
locales.enable = true;
|
||||
sops.enable = true;
|
||||
};
|
||||
networking.networkmanager.enable = true;
|
||||
networking.nameservers = [
|
||||
"192.168.3.252"
|
||||
"172.30.20.10"
|
||||
"1.1.1.1"
|
||||
];
|
||||
|
||||
users.mutableUsers = false;
|
||||
users.users.nix = {
|
||||
isNormalUser = true;
|
||||
description = "Nix";
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"docker"
|
||||
];
|
||||
};
|
||||
|
||||
@@ -60,14 +47,33 @@
|
||||
substituters = [
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.nixos.org/"
|
||||
"https://hyprland.cachix.org"
|
||||
"https://devenv.cachix.org"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
||||
];
|
||||
trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ];
|
||||
|
||||
trusted-users = ["nix"];
|
||||
max-jobs = "auto";
|
||||
cores = 0;
|
||||
|
||||
# Ensure we can still build when missing-server is not accessible
|
||||
fallback = true;
|
||||
};
|
||||
|
||||
# system.autoUpgrade = {
|
||||
# enable = true;
|
||||
# flake = "git+https://gitlab.julian-mutter.de/julian/dotfiles";
|
||||
# flags = [
|
||||
# "--recreate-lock-file" # update lock file
|
||||
# ];
|
||||
# dates = "02:13";
|
||||
# };
|
||||
|
||||
# optimize store by hardlinking store files
|
||||
nix.optimise.automatic = true;
|
||||
nix.optimise.dates = ["03:15"];
|
||||
@@ -85,17 +91,6 @@
|
||||
max-free = ${toString (100 * 1024 * 1024 * 1024)}
|
||||
'';
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim
|
||||
htop
|
||||
mc
|
||||
|
||||
# # AMD GPU tools
|
||||
# pciutils
|
||||
# nvtopPackages.amd
|
||||
# linuxPackages.amdgpu-pro
|
||||
];
|
||||
|
||||
nix.nrBuildUsers = 64;
|
||||
|
||||
# prevent memory to get filled
|
||||
@@ -124,9 +119,28 @@
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
# require public key authentication for better security
|
||||
settings.PasswordAuthentication = true;
|
||||
settings.PasswordAuthentication = false;
|
||||
settings.KbdInteractiveAuthentication = false;
|
||||
settings.PermitRootLogin = "yes";
|
||||
# Add older algorithms for jenkins ssh-agents-plugin to be compatible
|
||||
settings.Macs = [
|
||||
"hmac-sha2-512-etm@openssh.com"
|
||||
"hmac-sha2-256-etm@openssh.com"
|
||||
"umac-128-etm@openssh.com"
|
||||
"hmac-sha2-512"
|
||||
"hmac-sha2-256"
|
||||
"umac-128@openssh.com"
|
||||
];
|
||||
settings.KexAlgorithms = [
|
||||
"diffie-hellman-group-exchange-sha1"
|
||||
"diffie-hellman-group14-sha1"
|
||||
"mlkem768x25519-sha256"
|
||||
"sntrup761x25519-sha512"
|
||||
"sntrup761x25519-sha512@openssh.com"
|
||||
"curve25519-sha256"
|
||||
"curve25519-sha256@libssh.org"
|
||||
"diffie-hellman-group-exchange-sha256"
|
||||
];
|
||||
};
|
||||
users.users."root".openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H julian@aspi"
|
||||
@@ -209,8 +223,7 @@
|
||||
};
|
||||
|
||||
virtualHosts."binarycache.julian-mutter.de" = {
|
||||
locations."/".proxyPass =
|
||||
"http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
|
||||
locations."/".proxyPass = "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
|
||||
};
|
||||
|
||||
clientMaxBodySize = "2G";
|
||||
@@ -225,7 +238,16 @@
|
||||
url = "https://gitlab.julian-mutter.de";
|
||||
name = "builder";
|
||||
tokenFile = config.sops.secrets."gitea_token".path;
|
||||
labels = [ ]; # use default labels
|
||||
labels = [
|
||||
# provide a debian base with nodejs for actions
|
||||
"debian-latest:docker://node:18-bullseye"
|
||||
# fake the ubuntu name, because node provides no ubuntu builds
|
||||
"ubuntu-latest:docker://node:18-bullseye"
|
||||
# devenv
|
||||
"devenv:docker://ghcr.io/cachix/devenv/devenv:latest"
|
||||
# provide native execution on the host
|
||||
"nixos:host"
|
||||
];
|
||||
};
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
@@ -239,7 +261,7 @@
|
||||
|
||||
sops.secrets."gitea_token" = {
|
||||
owner = config.users.users.nix.name;
|
||||
sopsFile = ../../../secrets/secrets-builder.yaml;
|
||||
sopsFile = ./secrets.yaml;
|
||||
};
|
||||
|
||||
# =========== Binary Cache ==========
|
||||
@@ -249,7 +271,7 @@
|
||||
};
|
||||
|
||||
# =========== Binary Cache with attic ==========
|
||||
sops.secrets."attic_token".sopsFile = ../../../secrets/secrets-builder.yaml;
|
||||
sops.secrets."attic_token".sopsFile = ./secrets.yaml;
|
||||
|
||||
services.atticd = {
|
||||
enable = true;
|
||||
@@ -284,7 +306,40 @@
|
||||
};
|
||||
};
|
||||
|
||||
# ======================== DO NOT CHANGE THIS ========================
|
||||
system.stateVersion = "23.11";
|
||||
# ======================== DO NOT CHANGE THIS ========================
|
||||
services.gitlab-runner.enable = true;
|
||||
# runner for everything else
|
||||
#
|
||||
sops.secrets."gitlab_runner_token".sopsFile = ./secrets.yaml;
|
||||
services.gitlab-runner.services.default = {
|
||||
# File should contain at least these two variables:
|
||||
authenticationTokenConfigFile = config.sops.secrets."gitlab_runner_token".path;
|
||||
dockerImage = "alpine:latest";
|
||||
dockerVolumes = [
|
||||
"/var/run/docker.sock:/var/run/docker.sock"
|
||||
];
|
||||
};
|
||||
|
||||
### Jenkins node
|
||||
users.users.jenkins = {
|
||||
createHome = true;
|
||||
home = "/var/lib/jenkins";
|
||||
group = "jenkins";
|
||||
isNormalUser = true;
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ36sQhVz3kUEi8754G7r3rboihhG4iqFK/UvQm6SING jenkins@home"
|
||||
];
|
||||
packages = with pkgs; [
|
||||
git
|
||||
devenv
|
||||
];
|
||||
extraGroups = [
|
||||
"docker"
|
||||
];
|
||||
};
|
||||
|
||||
users.groups.jenkins = {};
|
||||
programs.java = {
|
||||
enable = true;
|
||||
package = pkgs.jdk21; # Same as jenkins version on home
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,17 +1,4 @@
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
|
||||
|
||||
{lib, ...}: {
|
||||
boot.initrd.availableKernelModules = [
|
||||
"ata_piix"
|
||||
"uhci_hcd"
|
||||
@@ -37,4 +24,27 @@
|
||||
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
|
||||
# hardware.graphics = {
|
||||
# enable = true;
|
||||
# extraPackages = with pkgs; [
|
||||
# rocmPackages.clr.icd
|
||||
# linuxPackages.amdgpu-pro
|
||||
# ];
|
||||
# };
|
||||
|
||||
# boot.kernelParams = [
|
||||
# "radeon.si_support=0"
|
||||
# "radeon.cik_support=1"
|
||||
# "amdgpu.si_support=0"
|
||||
# "amdgpu.cik_support=1"
|
||||
# ];
|
||||
# boot.extraModulePackages = with config.boot.kernelPackages; [ amdgpu-pro ];
|
||||
# boot.blacklistedKernelModules = [ "radeon" ];
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
|
||||
# Emulated systems used as alternative to cross-compiling
|
||||
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
||||
}
|
||||
|
||||
16
hosts/common/global/auto-upgrade.nix
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
inputs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
system.hydraAutoUpgrade = {
|
||||
# Only enable if not dirty
|
||||
enable = inputs.self ? rev;
|
||||
dates = "*:0/10"; # Every 10 minutes
|
||||
instance = "http://hydra.julian-mutter.de";
|
||||
project = "dotfiles";
|
||||
jobset = "main";
|
||||
job = "hosts.${config.networking.hostName}";
|
||||
oldFlakeRef = "self";
|
||||
};
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
# Common config for all hosts
|
||||
|
||||
{
|
||||
inputs,
|
||||
outputs,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
imports =
|
||||
[
|
||||
./fish.nix # fish for admin
|
||||
@@ -24,15 +24,27 @@
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
# Networking
|
||||
networking.networkmanager.enable = true;
|
||||
networking.networkmanager = {
|
||||
enable = true;
|
||||
plugins = with pkgs; [
|
||||
networkmanager-openconnect
|
||||
];
|
||||
};
|
||||
services.resolved.enable = true;
|
||||
# MDNS Taken by avahi
|
||||
services.resolved.extraConfig = ''
|
||||
MulticastDNS=false
|
||||
'';
|
||||
|
||||
programs.dconf.enable = true;
|
||||
networking.nameservers = lib.mkDefault [
|
||||
"1.1.1.1"
|
||||
"8.8.8.8"
|
||||
];
|
||||
|
||||
# HM
|
||||
home-manager.useGlobalPkgs = true;
|
||||
# HM module
|
||||
home-manager.useGlobalPkgs = true; # hm module uses the pkgs of the nixos config
|
||||
home-manager.backupFileExtension = "hm-backup"; # backup conflicting files. So hm activation never fails
|
||||
home-manager.extraSpecialArgs = {
|
||||
inherit inputs outputs;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
# Apply overlays
|
||||
nixpkgs = {
|
||||
# TODO: apply this to hm and nixos without duplicate code
|
||||
overlays = builtins.attrValues outputs.overlays;
|
||||
config = {
|
||||
nvidia.acceptLicense = true;
|
||||
allowUnfree = true;
|
||||
allowUnfreePredicate = _: true; # TODO: what is this
|
||||
warn-dirty = false;
|
||||
@@ -19,7 +19,9 @@
|
||||
};
|
||||
};
|
||||
|
||||
nix.settings.auto-optimise-store = lib.mkDefault true;
|
||||
# optimize at every build, slows down builds
|
||||
# better to do optimise.automatic for regular optimising
|
||||
# nix.settings.auto-optimise-store = lib.mkDefault true;
|
||||
nix.settings.experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
@@ -27,31 +29,14 @@
|
||||
];
|
||||
# warn-dirty = false;
|
||||
|
||||
# Setup binary caches
|
||||
nix.settings = {
|
||||
substituters = [
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.nixos.org/"
|
||||
"https://hyprland.cachix.org"
|
||||
"http://binarycache.julian-mutter.de"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
|
||||
];
|
||||
|
||||
trusted-users = [
|
||||
"root"
|
||||
"@wheel"
|
||||
]; # needed for devenv to add custom caches
|
||||
};
|
||||
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
# Keep the last 3 generations
|
||||
options = "--delete-older-than +3";
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
nix.optimise = {
|
||||
automatic = true;
|
||||
dates = [ "weekly" ]; # Optional; allows customizing optimisation schedule
|
||||
};
|
||||
|
||||
programs.nix-ld.enable = true;
|
||||
@@ -61,5 +46,4 @@
|
||||
# Add each flake input as a registry and nix_path
|
||||
# registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
|
||||
# nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
|
||||
|
||||
}
|
||||
|
||||