Compare commits

91 Commits

Author SHA1 Message Date
b57e5eb080 Update flake.lock 2025-04-28 2025-07-05 00:30:42 +00:00
a583779e73 Update flake.lock 2025-04-27 2025-07-05 00:30:42 +00:00
70b99a7b6b Update flake.lock 2025-04-26 2025-07-05 00:30:42 +00:00
4cbc594c24 Update flake.lock 2025-04-25 2025-07-05 00:30:42 +00:00
910d8bbaec Update flake.lock 2025-04-24 2025-07-05 00:30:42 +00:00
d9b4e05070 Update flake.lock 2025-04-23 2025-07-05 00:30:42 +00:00
7a1c6b95f1 Update flake.lock 2025-04-22 2025-07-05 00:30:42 +00:00
cb3b6bcf27 Update flake.lock 2025-04-21 2025-07-05 00:30:42 +00:00
d555564526 Update flake.lock 2025-04-20 2025-07-05 00:30:42 +00:00
7f66e6ab6a Update flake.lock 2025-04-19 2025-07-05 00:30:42 +00:00
9b94b3fbfd Update flake.lock 2025-04-18 2025-07-05 00:30:42 +00:00
9394144ac8 Update flake.lock 2025-04-17 2025-07-05 00:30:42 +00:00
03331f8d56 Update flake.lock 2025-04-16 2025-07-05 00:30:42 +00:00
be7cb3c4ff Update flake.lock 2025-04-15 2025-07-05 00:30:42 +00:00
81b297338a Update flake.lock 2025-04-14 2025-07-05 00:30:42 +00:00
478edca189 Update flake.lock 2025-04-13 2025-07-05 00:30:42 +00:00
d4a2769dea Update flake.lock 2025-04-12 2025-07-05 00:30:42 +00:00
3a049cafd7 Update flake.lock 2025-04-11 2025-07-05 00:30:42 +00:00
743dfa7279 Update flake.lock 2025-04-10 2025-07-05 00:30:42 +00:00
a826fc1cfb Update flake.lock 2025-04-09 2025-07-05 00:30:42 +00:00
af591c6dc9 Update flake.lock 2025-04-08 2025-07-05 00:30:42 +00:00
0aa21054e5 Update flake.lock 2025-04-07 2025-07-05 00:30:42 +00:00
4f91021047 Update flake.lock 2025-04-06 2025-07-05 00:30:42 +00:00
98f437fb11 Update flake.lock 2025-04-05 2025-07-05 00:30:42 +00:00
1741ea5d80 Update flake.lock 2025-04-04 2025-07-05 00:30:42 +00:00
194b9c114d Update flake.lock 2025-04-03 2025-07-05 00:30:42 +00:00
da3aa8fd0c Update flake.lock 2025-04-02 2025-07-05 00:30:42 +00:00
f22746f65b Update flake.lock 2025-04-01 2025-07-05 00:30:42 +00:00
400177ed26 Update flake.lock 2025-03-31 2025-07-05 00:30:42 +00:00
010e2302be Update flake.lock 2025-03-30 2025-07-05 00:30:42 +00:00
58e2d2fe48 Update flake.lock 2025-03-29 2025-07-05 00:30:42 +00:00
58a8c00b7a Update flake.lock 2025-03-28 2025-07-05 00:30:42 +00:00
e7babd43eb Update flake.lock 2025-03-27 2025-07-05 00:30:42 +00:00
cf7fc689ab Update flake.lock 2025-03-26 2025-07-05 00:30:42 +00:00
66f505d656 Update flake.lock 2025-03-25 2025-07-05 00:30:42 +00:00
5a0e072eb4 Update flake.lock 2025-03-24 2025-07-05 00:30:42 +00:00
6cf2d6dbc6 Update flake.lock 2025-03-23 2025-07-05 00:30:42 +00:00
7f4c41429e update flake
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-07-04 14:44:51 +02:00
6d21fe4262 format code 2025-07-04 14:44:31 +02:00
c081f95aaf open-messaging: adapt to new telegram program name 2025-07-04 14:44:01 +02:00
452a34c7e8 Neovim: add clangd 2025-07-04 14:43:51 +02:00
15c4616b91 Fix emacs not having TERMINAL env var 2025-07-04 14:43:45 +02:00
07274a0364 Update alacritty config, use as default 2025-07-04 14:41:58 +02:00
3bb8db1349 Fix builder using itself as remote subsituter 2025-07-04 14:40:58 +02:00
65a3dcdc08 Use ghostty as primary terminal
Some checks failed
Update Nix Flake / update-flake (push) Failing after 16s
2025-06-30 08:37:24 +02:00
9fe40bfd13 package rtklib 2025-05-26 21:51:07 +02:00
07943d4f95 format file
Some checks failed
Update Nix Flake / update-flake (push) Failing after 12s
2025-05-23 09:59:30 +02:00
815a79ff41 kardorf: fix seahorse and plasma6 config conflict 2025-05-23 09:58:59 +02:00
32ddceba8f kardorf: use i3 instead of hyprland 2025-05-23 09:58:38 +02:00
55ba4125d6 add latex packages to fix org mode exporting
Some checks failed
Update Nix Flake / update-flake (push) Failing after 11s
2025-05-21 23:01:09 +02:00
b9274f546f update flake 2025-05-21 23:01:03 +02:00
fd246d7daf Add hydra-auto-upgrade module, still wip
Some checks failed
Update Nix Flake / update-flake (push) Failing after 16s
2025-05-16 13:13:47 +02:00
edae0d2bb0 Delete i3 scripts also available in my nix pkgs 2025-05-16 12:56:22 +02:00
1cb23dd0a4 Add todo 2025-05-16 12:53:20 +02:00
ab1052193a rename deprecated options 2025-05-16 12:12:22 +02:00
6dadb2008c kardorf: enable ssh access 2025-05-16 12:11:45 +02:00
18f9cc3fa8 Add user julian to dialout for serial port access 2025-05-16 08:27:45 +02:00
9295ad7010 add kardorf ssh key to common secrets.yaml 2025-05-16 08:27:45 +02:00
e3cf2379ab yazi: update config to new version 2025-05-16 08:27:45 +02:00
f6c3f676b2 update flake 2025-05-16 08:27:45 +02:00
d57017382a v3ms: add /snap/bin to path
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-05-09 11:41:21 +02:00
1d7690eab4 Fix mako settings
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-05-06 07:50:35 +02:00
67d68a9946 Fix waybar not visible on second monitor after toggling mirroring twice
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-05-05 15:10:07 +02:00
9af362b5c8 hyprland: quick and dirty screen mirroring 2025-05-05 14:56:22 +02:00
a0ae09452f hyprland: install hyprpicker 2025-05-05 08:24:26 +02:00
711859e660 hyprland: fix cursor theme not applied 2025-05-05 08:24:09 +02:00
1c1e496425 use NH_FLAKE instead of FLAKE for nh 2025-05-05 07:11:28 +02:00
97229a521f Add discord to open-messaging 2025-05-05 07:11:02 +02:00
7d8190210b Mako: disable usage of deprecated config value
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-05-04 20:42:53 +02:00
a1dfeff98b topgrade: disable "update flake" step 2025-05-04 20:29:11 +02:00
9e512c2863 Update flake 2025-05-04 20:29:06 +02:00
136653b0fa Use hashed password for julian 2025-05-04 13:52:36 +02:00
75fb0f54ec Delete unused hyprland nixos config 2025-05-04 13:52:27 +02:00
a3282f3eb3 Configure kardorf host config 2025-05-04 13:52:13 +02:00
843dfb986d Fix type of monitor.workspaces 2025-05-04 13:51:54 +02:00
3eba0fe092 Make nvidia on kardorf work 2025-05-04 13:51:44 +02:00
fdc8b03d9b Add user wolfi 2025-05-04 13:51:22 +02:00
d86321cfe6 Add monitor configuration to aspi and kardorf homes 2025-05-04 13:51:00 +02:00
881c930fdb Fix wrong architectures used for v3ms and kardorf 2025-05-04 13:50:36 +02:00
dc3f9fe681 Add kardorf ssh key to sops 2025-05-04 13:50:23 +02:00
d73ff17327 Delete deprecated .dotter files 2025-05-04 13:49:24 +02:00
67468ba6fa Fix kardorf using aspi config 2025-05-01 22:09:02 +02:00
6d2a7f50df workflow: add git fetch before rebasing
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-04-30 13:15:25 +02:00
3cf8f19fcc Disable autostart for wireguard comu
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-04-29 21:44:54 +02:00
d335f6c892 builder: fix config
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-04-28 22:44:33 +02:00
8d94428f77 Fix lsp warnings for clean code 2025-04-28 22:27:16 +02:00
903776dca6 Clean up aspi and home hm config 2025-04-28 22:24:30 +02:00
b6dc568215 Rename desktop feature to gtk 2025-04-28 22:24:21 +02:00
130c341816 Remove wallpaper directory 2025-04-28 22:23:42 +02:00
8d0430ae52 Delete unused config file for shells 2025-04-28 22:19:00 +02:00
68da077c72 Format code with alejandra 2025-04-28 22:17:11 +02:00
146 changed files with 1821 additions and 1103 deletions

View File

@ -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"

View File

@ -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"

View File

@ -1,4 +0,0 @@
[i3.variables]
monitor-primary = "HDMI-1"
monitor-secondary = "eDP-1"
screenlayout-script = "~/.screenlayout/laptop-at-home.sh"

View File

@ -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"

View File

@ -1,2 +0,0 @@
includes = [".dotter/kardorf.toml"]
packages = ["i3", "emacs", "alacritty", "zsh", "starship", "nix"]

View File

@ -1,2 +0,0 @@
includes = [".dotter/laptop.toml"]
packages = []

View File

@ -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

View File

@ -3,6 +3,8 @@ keys:
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
- &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:

845
flake.lock generated

File diff suppressed because it is too large Load Diff

225
flake.nix
View File

@ -28,10 +28,6 @@
};
# Various flakes
alacritty-theme = {
url = "github:alacritty/alacritty-theme";
flake = false;
};
yazi-flavors = {
url = "github:yazi-rs/flavors";
flake = false;
@ -56,20 +52,18 @@
};
};
outputs =
{
self,
nixpkgs,
home-manager,
systems,
...
}@inputs:
let
inherit (self) outputs;
lib = nixpkgs.lib // home-manager.lib;
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
pkgsFor = lib.genAttrs (import systems) (
system:
outputs = {
self,
nixpkgs,
home-manager,
systems,
...
} @ inputs: let
inherit (self) outputs;
lib = nixpkgs.lib // home-manager.lib;
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
pkgsFor = lib.genAttrs (import systems) (
system:
import nixpkgs {
inherit system;
config.allowUnfree = true;
@ -78,111 +72,116 @@
];
warn-dirty = false;
}
);
in
{
inherit lib;
);
in {
inherit lib;
nixosModules = import ./modules/nixos;
homeManagerModules = import ./modules/home-manager;
nixosModules = import ./modules/nixos;
homeManagerModules = import ./modules/home-manager;
overlays = import ./overlays { inherit inputs outputs; };
# hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
overlays = import ./overlays {inherit inputs outputs;};
# hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; });
devShells = forEachSystem (pkgs: import ./shell.nix { inherit pkgs; });
formatter = forEachSystem (pkgs: pkgs.alejandra);
packages = forEachSystem (pkgs: import ./pkgs {inherit pkgs;});
devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
formatter = forEachSystem (pkgs: pkgs.alejandra);
nixosConfigurations = {
# Main laptop
aspi = lib.nixosSystem {
modules = [ ./hosts/aspi ];
specialArgs = {
inherit inputs outputs;
};
};
# Piano raspberry pi
pianonix = lib.nixosSystem {
modules = [ ./hosts/pianonix ];
specialArgs = {
inherit inputs outputs;
};
};
kardorf = lib.nixosSystem {
modules = [ ./hosts/pianonix ];
specialArgs = {
inherit inputs outputs;
};
nixosConfigurations = {
# Main laptop
aspi = lib.nixosSystem {
modules = [./hosts/aspi];
specialArgs = {
inherit inputs outputs;
};
};
# Standalone HM
homeConfigurations = {
# Main laptop
"julian@aspi" = lib.homeManagerConfiguration {
modules = [
./homes/julian/aspi.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Media server (RPi)
"julian@pianonix" = lib.homeManagerConfiguration {
modules = [
./homes/julian/pianonix.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@kardorf" = lib.homeManagerConfiguration {
modules = [
./homes/julian/kardorf.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@v3ms" = lib.homeManagerConfiguration {
modules = [
./homes/julian/v3ms
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
# Piano raspberry pi
pianonix = lib.nixosSystem {
modules = [./hosts/pianonix];
specialArgs = {
inherit inputs outputs;
};
};
# deploy-rs node configuration
deploy.nodes = {
pianonix = {
hostname = "pianonix.local";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
};
kardorf = lib.nixosSystem {
modules = [./hosts/kardorf];
specialArgs = {
inherit inputs outputs;
};
builder = {
hostname = "builder.julian-mutter.de";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
remoteBuild = true;
};
};
builder = lib.nixosSystem {
modules = [./hosts/builder];
specialArgs = {
inherit inputs outputs;
};
};
};
# Standalone HM
homeConfigurations = {
# Main laptop
"julian@aspi" = lib.homeManagerConfiguration {
modules = [
./homes/julian/aspi.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Media server (RPi)
"julian@pianonix" = lib.homeManagerConfiguration {
modules = [
./homes/julian/pianonix.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@kardorf" = lib.homeManagerConfiguration {
modules = [
./homes/julian/kardorf.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@v3ms" = lib.homeManagerConfiguration {
modules = [
./homes/julian/v3ms
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
};
# deploy-rs node configuration
deploy.nodes = {
pianonix = {
hostname = "pianonix.local";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
};
};
builder = {
hostname = "builder.julian-mutter.de";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
remoteBuild = true;
};
};
};
};
}

View File

@ -1,30 +1,56 @@
{
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/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"
];
}
];
}

View File

@ -1,3 +0,0 @@
import = [
"~/.config/alacritty/theme/themes/smoooooth.toml"
]

View File

@ -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";

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 823 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1024 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 607 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 719 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 861 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 595 KiB

View File

@ -4,24 +4,19 @@
config,
...
}:
with lib;
let
with lib; let
doomRepoUrl = "https://github.com/doomemacs/doomemacs";
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
in
{
home.sessionPath = [ "/home/julian/.config/emacs/bin" ];
in {
home.sessionPath = ["/home/julian/.config/emacs/bin"];
home.packages =
with pkgs;
home.packages = with pkgs;
[
binutils # native-comp needs 'as', provided by this
## Doom dependencies
git
(ripgrep.override { withPCRE2 = true; })
(ripgrep.override {withPCRE2 = true;})
## Optional dependencies
fd # faster projectile indexing
@ -30,12 +25,13 @@ in
## Module dependencies
(aspellWithDicts (
ds: with ds; [
en
en-computers
en-science
de
]
ds:
with ds; [
en
en-computers
en-science
de
]
))
hunspell
@ -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
@ -64,7 +62,7 @@ in
]
++ lib.optional config.is-nixos emacs;
home.activation.installDoomEmacs = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
home.activation.installDoomEmacs = lib.hm.dag.entryAfter ["writeBoundary"] ''
if [ ! -d "/home/julian/.config/emacs" ]; then
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs"
fi

View File

@ -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;

View File

@ -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

View File

@ -9,6 +9,5 @@
settings = {
general.adjustment-method = "wayland";
};
};
}

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

View File

@ -3,13 +3,11 @@
pkgs,
inputs,
...
}:
let
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) gtkThemeFromScheme;
in
{
}: let
inherit (inputs.nix-colors.lib-contrib {inherit pkgs;}) gtkThemeFromScheme;
in {
# Do not make conditional, just toggle things on and off
imports = [ inputs.nix-colors.homeManagerModules.default ]; # TODO: what does this do
imports = [inputs.nix-colors.homeManagerModules.default]; # TODO: what does this do
# home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark";
gtk = {
@ -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];
}

View File

@ -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
@ -30,7 +28,7 @@ in
];
xdg.portal = {
extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
extraPortals = [pkgs.xdg-desktop-portal-wlr];
config.hyprland = {
default = [
"wlr"
@ -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,14 @@ 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 = ["firefox"];
# Look and Feel
general = {
@ -198,6 +213,7 @@ in
exec = [
"hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
"correct-workspace-locations"
];
misc = {
@ -233,23 +249,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"
# 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"
];
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 +281,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 +289,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,"
@ -356,26 +368,26 @@ in
"$mod CTRL, 0, movetoworkspacesilent, 10"
]
++
# Screen lock
(
let
swaylock = lib.getExe config.programs.swaylock.package;
in
# Screen lock
(
let
swaylock = lib.getExe config.programs.swaylock.package;
in
lib.optionals config.programs.swaylock.enable [
"$mod,TAB,exec,${swaylock} --daemonize"
]
)
)
++
# Notification manager
(
let
makoctl = lib.getExe' config.services.mako.package "makoctl";
in
# Notification manager
(
let
makoctl = lib.getExe' config.services.mako.package "makoctl";
in
lib.optionals config.services.mako.enable [
"$mod,w,exec,${makoctl} dismiss"
"$mod SHIFT,W,exec,${makoctl} restore"
]
);
);
# plugin = {
# hyprbars = {

View File

@ -4,8 +4,7 @@
lib,
outputs,
...
}:
let
}: let
getHostname = x: lib.last (lib.splitString "@" x);
# remoteColorschemes = lib.mapAttrs' (n: v: {
# name = getHostname n;
@ -19,18 +18,17 @@ let
# Make sure it's using the same hyprland package as we are
hyprland = config.wayland.windowManager.hyprland.package;
}).overrideAttrs
(old: {
# Yeet the initialization notification (I hate it)
postPatch =
(old.postPatch or "")
+ ''
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
'';
});
in
{
(old: {
# Yeet the initialization notification (I hate it)
postPatch =
(old.postPatch or "")
+ ''
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
'';
});
in {
wayland.windowManager.hyprland = {
plugins = [ hyprbars ];
plugins = [hyprbars];
settings = {
"plugin:hyprbars" = {
bar_height = 25;
@ -40,25 +38,23 @@ in
# bar_text_size = config.fontProfiles.regular.size;
bar_part_of_window = true;
bar_precedence_over_border = true;
hyprbars-button =
let
closeAction = "hyprctl dispatch killactive";
hyprbars-button = let
closeAction = "hyprctl dispatch killactive";
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
moveToSpecial = "hyprctl dispatch movetoworkspacesilent special";
moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')";
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
moveToSpecial = "hyprctl dispatch movetoworkspacesilent special";
moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')";
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
maximizeAction = "hyprctl dispatch fullscreen 1";
in
[
# Red close button
# "${rgb config.colorscheme.colors.red},12,,${closeAction}"
# # Yellow "minimize" (send to special workspace) button
# "${rgb config.colorscheme.colors.yellow},12,,${minimizeAction}"
# # Green "maximize" (fullscreen) button
# "${rgb config.colorscheme.colors.green},12,,${maximizeAction}"
];
maximizeAction = "hyprctl dispatch fullscreen 1";
in [
# Red close button
# "${rgb config.colorscheme.colors.red},12,,${closeAction}"
# # Yellow "minimize" (send to special workspace) button
# "${rgb config.colorscheme.colors.yellow},12,,${minimizeAction}"
# # Green "maximize" (fullscreen) button
# "${rgb config.colorscheme.colors.green},12,,${maximizeAction}"
];
};
# windowrulev2 =

View File

@ -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 = {

View File

@ -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
{
home.packages = with pkgs; [ libnotify ];
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}
# '';
};
};
}

View File

@ -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,24 +14,21 @@ 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,
command,
resumeCommand ? null,
}:
[
{
timeout = lockTime + timeout;
inherit command resumeCommand;
}
{
command = "${isLocked} && ${command}";
inherit resumeCommand timeout;
}
];
in
{
timeout = lockTime + timeout;
inherit command resumeCommand;
}
{
command = "${isLocked} && ${command}";
inherit resumeCommand timeout;
}
];
in {
services.swayidle = {
enable = true;
systemdTarget = "graphical-session.target";
@ -45,18 +41,18 @@ in
}
]
++
# Turn off displays (hyprland)
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
timeout = 300;
command = "${hyprctl} dispatch dpms off";
resumeCommand = "${hyprctl} dispatch dpms on";
}))
# Turn off displays (hyprland)
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
timeout = 300;
command = "${hyprctl} dispatch dpms off";
resumeCommand = "${hyprctl} dispatch dpms on";
}))
++
# Turn off displays (sway)
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
timeout = 300;
command = "${swaymsg} 'output * dpms off'";
resumeCommand = "${swaymsg} 'output * dpms on'";
}));
# Turn off displays (sway)
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
timeout = 300;
command = "${swaymsg} 'output * dpms off'";
resumeCommand = "${swaymsg} 'output * dpms on'";
}));
};
}

View File

@ -2,11 +2,9 @@
config,
pkgs,
...
}:
let
}: let
inherit (config.colorscheme) colors;
in
{
in {
programs.swaylock = {
enable = true;
settings = {

View 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

View File

@ -5,11 +5,9 @@
lib,
inputs,
...
}:
let
}: let
palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
in
{
in {
programs.waybar = {
enable = true;
systemd.enable = true;

View File

@ -3,9 +3,8 @@
lib,
config,
...
}:
{
home.packages = [ pkgs.waypipe ];
}: {
home.packages = [pkgs.waypipe];
systemd.user.services = {
waypipe-client = {
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
@ -14,7 +13,7 @@
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/client.sock client";
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/client.sock";
};
Install.WantedBy = [ "graphical-session.target" ];
Install.WantedBy = ["graphical-session.target"];
};
waypipe-server = {
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
@ -24,7 +23,7 @@
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/server.sock --title-prefix '[%H] ' --login-shell --display wayland-waypipe server -- ${lib.getExe' pkgs.coreutils "sleep"} infinity";
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/server.sock %t/wayland-waypipe";
};
Install.WantedBy = [ "default.target" ];
Install.WantedBy = ["default.target"];
};
};
}

View File

@ -5,14 +5,13 @@
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
{
home.packages = with pkgs; [ wlogout ];
in {
home.packages = with pkgs; [wlogout];
# xdg.configFile."wlogout/style.css".text = ''
# * {

View File

@ -5,14 +5,13 @@
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
{
home.packages = with pkgs; [ wofi ];
in {
home.packages = with pkgs; [wofi];
xdg.configFile."wofi/config".source = ./config;
xdg.configFile."wofi/style.css".text = ''

View File

@ -1,8 +1,6 @@
{ config, ... }:
let
{config, ...}: let
inherit (config.colorscheme) colors;
in
{
in {
programs.zathura = {
enable = true;
options = {

View File

@ -3,9 +3,8 @@
pkgs,
config,
...
}:
{
imports = [ ../rofi ];
}: {
imports = [../rofi];
services.dunst.enable = true;
@ -32,11 +31,13 @@
package = pkgs.i3-gaps;
};
xsession.importedVariables = [ ];
xsession.importedVariables = [];
# 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 = {
@ -48,5 +49,5 @@
".config/i3status-rust/config.toml".source = ./i3status-rust/config.toml;
};
home.sessionPath = [ "/home/julian/.config/i3/scripts" ];
home.sessionPath = ["/home/julian/.config/i3/scripts"];
}

View 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

View File

@ -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

View File

@ -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

View File

@ -3,9 +3,7 @@
pkgs,
config,
...
}:
{
}: {
programs.kitty = {
enable = true;
shellIntegration.enableFishIntegration = true;

View File

@ -3,11 +3,8 @@
pkgs,
inputs,
...
}:
{
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
}: {
imports = [inputs.nixvim.homeManagerModules.nixvim];
home.sessionVariables = {
EDITOR = "nvim";
@ -39,7 +36,6 @@
opts = {
number = false;
relativenumber = false;
};
clipboard.register = "unnamedplus"; # Use system clipboard
@ -93,9 +89,9 @@
conform-nvim = {
enable = true;
settings.formatters_by_ft = with pkgs; {
lua = [ "stylua" ];
python = [ "black" ];
nix = [ "nixfmt" ];
lua = ["stylua"];
python = ["black"];
nix = ["nixfmt"];
};
# extraOptions = {
# default_format_opts.lsp_format = "fallback";
@ -107,9 +103,9 @@
enable = true;
autoEnableSources = true;
settings.sources = [
{ name = "nvim_lsp"; }
{ name = "path"; }
{ name = "buffer"; }
{name = "nvim_lsp";}
{name = "path";}
{name = "buffer";}
];
settings.mapping = {
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
@ -155,10 +151,9 @@
pyright.enable = true;
dockerls.enable = true;
lua_ls.enable = true;
clangd.enable = true;
};
};
};
};
}

View File

@ -1,12 +1,6 @@
{
lib,
pkgs,
...
}:
{
{pkgs, ...}: {
home.sessionVariables = {
FLAKE = "/home/julian/.dotfiles";
NH_FLAKE = "/home/julian/.dotfiles";
};
home.shellAliases = {
@ -14,5 +8,5 @@
"hs" = "nh home switch";
};
home.packages = with pkgs; [ nh ];
home.packages = with pkgs; [nh];
}

View File

@ -2,13 +2,11 @@
lib,
pkgs,
...
}:
{
}: {
# this would need you to config rofi using home-manager
# programs.rofi = { enable = true; };
home.packages = with pkgs; [ rofi ];
home.packages = with pkgs; [rofi];
home.file = {
".config/rofi/config.rasi".source = ./config.rasi;

View File

@ -1,9 +1,4 @@
{
pkgs,
...
}:
{
{pkgs, ...}: {
home.packages = with pkgs; [
bat
du-dust # Like du tree but better

View File

@ -1,10 +1,6 @@
{
lib,
pkgs,
...
}:
{pkgs, ...}: {
imports = [../../gtk];
{
services.blueman-applet.enable = true;
services.nextcloud-client.enable = true;
services.nextcloud-client.startInBackground = true;
@ -17,7 +13,7 @@
enable = true;
extensions = [
# Tampermonkey
{ id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; }
{id = "dhdgffkkebhmkfjojejmpbldmpobfkfo";}
];
};
@ -38,7 +34,7 @@
# geogebra
cheese
handbrake
kitty # Terminal
# kitty # Terminal, already available as feature
libnotify
libreoffice
mate.engrampa

View File

@ -1,10 +1,4 @@
{
pkgs,
...
}:
{
{pkgs, ...}: {
home.packages = with pkgs; [
watchexec # Run command when any file in current dir changes
android-tools # adb
@ -29,11 +23,16 @@
julia-bin
(texlive.combine {
# for rendering latex in inkscape
inherit (texlive)
inherit
(texlive)
scheme-medium
standalone
amsmath
preview
# needed for org mode export
wrapfig
capt-of
biblatex
;
})
matlab # Using nix-matlab overlay defined in flake
@ -63,6 +62,7 @@
## My scripts
frajul.deploy-to-pianopi
frajul.rtklib
(pkgs.writeShellScriptBin "matlab-rsp" ''
matlab -desktop -sd "/home/julian/git/uwa-channel-model" -softwareopengl

View File

@ -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 = [

View File

@ -3,9 +3,7 @@
pkgs,
config,
...
}:
{
}: {
programs.wezterm = {
enable = true;
extraConfig = ''

View File

@ -2,8 +2,7 @@
pkgs,
inputs,
...
}:
{
}: {
programs.zoxide.enable = true;
programs.zoxide.enableFishIntegration = true;
@ -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;
};
@ -36,29 +35,29 @@
manager.prepend_keymap = [
# Override defaults
{
on = [ "e" ];
on = ["e"];
run = ''shell --orphan --confirm "pcmanfm &"'';
desc = "Open gui file manager";
}
{
on = [ "<C-o>" ];
on = ["<C-o>"];
run = ''shell "$SHELL" --block --confirm'';
desc = "Open shell here";
}
{
on = [ "<C-n>" ];
on = ["<C-n>"];
run = ''shell 'dragon -x -i -T "$1"' --confirm'';
desc = "Dragndrop via dragon";
}
{
on = [ "<Enter>" ];
on = ["<Enter>"];
run = "plugin --sync smart-enter";
desc = "Enter the child directory, or open the file";
}
];
input.prepend_keymap = [
{
on = [ "<Esc>" ];
on = ["<Esc>"];
run = "close";
desc = "Cancel input";
}

View File

@ -2,13 +2,12 @@
lib,
pkgs,
...
}:
{
}: {
home.file = {
".config/starship.toml".source = ./starship.toml;
};
home.packages = with pkgs; [ starship ];
home.packages = with pkgs; [starship];
programs.starship = {
enable = true;
@ -28,14 +27,14 @@
enable = true;
plugins = [
# list of plugins: https://github.com/unixorn/awesome-zsh-plugins
{ name = "agkozak/zsh-z"; }
{name = "agkozak/zsh-z";}
{
name = "zsh-users/zsh-completions";
}
# make it behave like fish
{ name = "zsh-users/zsh-autosuggestions"; }
{ name = "zsh-users/zsh-history-substring-search"; }
{name = "zsh-users/zsh-autosuggestions";}
{name = "zsh-users/zsh-history-substring-search";}
{
name = "zsh-users/zsh-syntax-highlighting";
} # must be last sourced plugin

View File

@ -1,17 +1,16 @@
{
inputs,
lib,
pkgs,
config,
outputs,
...
}:
{
imports = [
../features/fonts
# ../features/cli
# ../features/helix
] ++ (builtins.attrValues outputs.homeManagerModules);
}: {
imports =
[
../features/fonts
../features/nix-helper
]
++ (builtins.attrValues outputs.homeManagerModules);
nix = {
package = lib.mkDefault pkgs.nix;
@ -39,7 +38,7 @@
homeDirectory = lib.mkDefault "/home/${config.home.username}";
stateVersion = lib.mkDefault "23.11";
sessionPath = [ "$HOME/.local/bin" ];
sessionPath = ["$HOME/.local/bin"];
};
# TODO: colorscheme
@ -51,5 +50,4 @@
# home.file = {
# ".colorscheme.json".text = builtins.toJSON config.colorscheme;
# };
}

View File

@ -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;
@ -40,6 +42,7 @@ let
"inode/directory" = pcmanfm;
};
in
lib.mapAttrs (mimeType: package: [
"${package}/share/applications/${package.pname}.desktop"
]) package-names
lib.mapAttrs (mimeType: package: [
"${package}/share/applications/${package.pname}.desktop"
])
package-names

View File

@ -1,9 +1,5 @@
# Only apply this to home-manager standalone
{
outputs,
...
}:
{
{outputs, ...}: {
# Apply overlays
nixpkgs = {
overlays = builtins.attrValues outputs.overlays;
@ -43,6 +39,5 @@
];
# nix.settings. # warn-dirty = false; # TODO: do I want this
};
}

View File

@ -6,22 +6,51 @@
./features/direnv
./features/topgrade
./features/neovim
./features/kitty
./features/ghostty
./features/wezterm
./features/yazi
./features/emacs
# ./features/hyprland
./features/i3
./features/nix-helper
./features/desktop
./features/suites/cli
./features/suites/desktop
./features/suites/development
];
hostName = "kardorf";
is-nixos = true;
terminal = "kitty";
terminal = "ghostty";
# --------- ---------
# | 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"
];
}
];
}

View File

@ -1,8 +1,4 @@
{
pkgs,
...
}:
{
{pkgs, ...}: {
imports = [
./global
@ -11,8 +7,7 @@
./features/neovim
./features/wezterm
./features/yazi
./features/nix-helper
./features/desktop
./features/gtk
];
hostName = "pianonix";
@ -34,8 +29,7 @@
# 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/sheet-organizer/config.toml".text = ''
working_directory = "/home/julian/Klavier"
'';

View File

@ -2,8 +2,7 @@
lib,
pkgs,
...
}:
{
}: {
imports = [
../global
@ -20,10 +19,12 @@
is-nixos = false;
# terminal = "kitty";
home.sessionPath = ["/snap/bin"];
home.packages =
lib.lists.concatMap (packages-list-file: import packages-list-file { inherit pkgs; })
[
./fonts.nix
./packages.nix
];
lib.lists.concatMap (packages-list-file: import packages-list-file {inherit pkgs;})
[
./fonts.nix
./packages.nix
];
}

View File

@ -1,7 +1,5 @@
{ pkgs, ... }:
with pkgs;
[
{pkgs, ...}:
with pkgs; [
nerd-fonts.fira-code
font-awesome
dejavu_fonts

View File

@ -1,7 +1,5 @@
{ pkgs, ... }:
with pkgs;
[
{pkgs, ...}:
with pkgs; [
# Rust setup
rustc
rustfmt

View File

@ -4,6 +4,7 @@
../common/global
../common/users/julian
../common/optional/binarycaches.nix
../common/optional/remote-builder.nix
../common/optional/boot-efi.nix
@ -46,5 +47,4 @@
# Enable touchpad support
services.libinput.enable = true;
}

View File

@ -2,9 +2,7 @@
config,
lib,
...
}:
{
}: {
boot.initrd.availableKernelModules = [
"vmd"
"xhci_pci"
@ -14,11 +12,11 @@
"usbhid"
"sd_mod"
];
boot.initrd.kernelModules = [ "dm-snapshot" ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
boot.blacklistedKernelModules = [ "pcspkr" ]; # Disables "beep"
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
boot.initrd.kernelModules = ["dm-snapshot"];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
boot.blacklistedKernelModules = ["pcspkr"]; # Disables "beep"
boot.binfmt.emulatedSystems = ["aarch64-linux"];
boot.initrd.luks.devices = {
root = {
@ -62,7 +60,7 @@
};
swapDevices = [
{ device = "/dev/disk/by-uuid/26140b4a-0579-406d-a484-35aa31b32e80"; }
{device = "/dev/disk/by-uuid/26140b4a-0579-406d-a484-35aa31b32e80";}
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking

View File

@ -1,45 +1,15 @@
# sudo nixos-rebuild switch --flake .#builder --target-host root@192.168.3.118
# or
# deploy .#builder
{ config, pkgs, ... }:
{
{config, ...}: {
imports = [
./hardware-configuration.nix
../common/global
];
# 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";
modules = {
keymap.enable = true;
locales.enable = true;
sops.enable = true;
};
system.stateVersion = "23.11";
users.users.nix = {
isNormalUser = true;
@ -60,17 +30,21 @@
substituters = [
"https://nix-community.cachix.org"
"https://cache.nixos.org/"
"https://hyprland.cachix.org"
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
];
trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ];
trusted-users = [ "nix" ];
trusted-users = ["nix"];
max-jobs = "auto";
cores = 0;
};
# optimize store by hardlinking store files
nix.optimise.automatic = true;
nix.optimise.dates = [ "03:15" ];
nix.optimise.dates = ["03:15"];
# nix.gc.automatic = true;
# nix.gc.dates = "daily";
@ -85,17 +59,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
@ -209,8 +172,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 +187,7 @@
url = "https://gitlab.julian-mutter.de";
name = "builder";
tokenFile = config.sops.secrets."gitea_token".path;
labels = [ ]; # use default labels
labels = []; # use default labels
};
virtualisation.docker.enable = true;
@ -239,7 +201,7 @@
sops.secrets."gitea_token" = {
owner = config.users.users.nix.name;
sopsFile = ../../../secrets/secrets-builder.yaml;
sopsFile = ./secrets.yaml;
};
# =========== Binary Cache ==========
@ -249,7 +211,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;
@ -257,7 +219,7 @@
settings = {
listen = "[::]:8080";
jwt = { };
jwt = {};
# Data chunking
#
@ -283,8 +245,4 @@
};
};
};
# ======================== DO NOT CHANGE THIS ========================
system.stateVersion = "23.11";
# ======================== DO NOT CHANGE THIS ========================
}

View File

@ -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"
@ -21,8 +8,8 @@
"sr_mod"
];
# boot.initrd.kernelModules = [ "amdgpu" ]; # GPU support
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
boot.kernelModules = [];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/f088fe8e-bf3d-4a89-98bd-ead9852d381f";
@ -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"];
}

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

View File

@ -1,11 +1,9 @@
# Common config for all hosts
{
inputs,
outputs,
...
}:
{
}: {
imports =
[
./fish.nix # fish for admin
@ -34,5 +32,4 @@
home-manager.extraSpecialArgs = {
inherit inputs outputs;
};
}

View File

@ -2,14 +2,13 @@
lib,
outputs,
...
}:
{
}: {
# 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;
@ -27,26 +26,6 @@
];
# 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";
@ -61,5 +40,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;
}

View File

@ -1,6 +1,4 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
# Packages needed as root
environment.systemPackages = with pkgs; [
vim

View File

@ -2,14 +2,12 @@
inputs,
config,
...
}:
let
}: let
isEd25519 = k: k.type == "ed25519";
getKeyPath = k: k.path;
keys = builtins.filter isEd25519 config.services.openssh.hostKeys;
in
{
imports = [ inputs.sops-nix.nixosModules.sops ];
in {
imports = [inputs.sops-nix.nixosModules.sops];
sops.age = {
sshKeyPaths = map getKeyPath keys;
@ -17,8 +15,7 @@ in
# TODO: remove? only rely on ssh or pgp keys (e.g. ubikey like misterio is using!!!)
keyFile = "/home/julian/.config/sops/age/keys.txt";
# Generate key if none of the above worked. With this, building will still work, just without secrets
generateKey = true;
generateKey = false; # TODO: building should not work without secrets!?
};
sops.defaultSopsFile = ../secrets.yaml;

View File

@ -1,17 +1,22 @@
{ pkgs, ... }:
{
pkgs,
lib,
...
}: {
# Make programs like nextcloud client access saved passwords
programs.seahorse.enable = true;
services.gnome.gnome-keyring.enable = true;
programs.seahorse.enable = true;
programs.ssh.askPassword = lib.mkForce "${pkgs.seahorse}/libexec/seahorse/ssh-askpass"; # Solve conflicting definition in seahorse and plasma6
# Make authentication work for e.g. gparted
security.polkit.enable = true;
systemd = {
user.services.polkit-gnome-authentication-agent-1 = {
description = "polkit-gnome-authentication-agent-1";
wantedBy = [ "graphical-session.target" ];
wants = [ "graphical-session.target" ];
after = [ "graphical-session.target" ];
wantedBy = ["graphical-session.target"];
wants = ["graphical-session.target"];
after = ["graphical-session.target"];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";

View File

@ -0,0 +1,25 @@
{
lib,
outputs,
...
}: {
# 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
};
}

View File

@ -1,10 +1,6 @@
{
pkgs,
...
}:
{
{pkgs, ...}: {
services.flatpak.enable = true;
xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
xdg.portal.config.common.default = "*"; # Use first portal implementation found
}

Some files were not shown because too many files have changed in this diff Show More