This commit is contained in:
Erwin Boskma 2021-11-21 19:07:12 +01:00
parent 6382c9ea39
commit d5098220e0
Signed by: erwin
GPG key ID: 270B20D17394F7E5
24 changed files with 677 additions and 60 deletions

View file

@ -2,11 +2,11 @@
"nodes": { "nodes": {
"flake-utils": { "flake-utils": {
"locked": { "locked": {
"lastModified": 1634851050, "lastModified": 1637014545,
"narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -15,6 +15,31 @@
"type": "github" "type": "github"
} }
}, },
"ha-now-playing": {
"inputs": {
"naersk": "naersk",
"nixpkgs": [
"nixpkgs"
],
"utils": [
"flake-utils"
]
},
"locked": {
"lastModified": 1637510878,
"narHash": "sha256-7dVyPvVpj+qat8+XCmWbD7v4m3pW4ah85sV8Olzxs84=",
"ref": "main",
"rev": "3b33c60e64a7aa5b02fbbdee1182d9ad70ad8f58",
"revCount": 5,
"type": "git",
"url": "ssh://git@git.datarift.nl/erwin/ha-now-playing.git"
},
"original": {
"ref": "main",
"type": "git",
"url": "ssh://git@git.datarift.nl/erwin/ha-now-playing.git"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -22,11 +47,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1636520380, "lastModified": 1637481586,
"narHash": "sha256-gBiQ8+AQG6Dia34rqJDuqs6VFe/J1SjIhOZBeTXCKQI=", "narHash": "sha256-cvgegmCRfNFuA/vPseMcSptmlNqD2nC0lLI9BQWU46A=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "1e5c8e9bff00d0844bc3d25d1a98eab5633e600b", "rev": "1abd311eef125e7b64dff723f198d15e5aca2dd4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -35,13 +60,45 @@
"type": "github" "type": "github"
} }
}, },
"naersk": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1636968630,
"narHash": "sha256-/C8OVV8mo9M9MgQprHo4A5bM9waWMsw6PI4hb4DnGaA=",
"owner": "nmattia",
"repo": "naersk",
"rev": "55c4c0288ea3f115b5dd73af88052c4712994746",
"type": "github"
},
"original": {
"owner": "nmattia",
"ref": "master",
"repo": "naersk",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1636623366, "lastModified": 1636976544,
"narHash": "sha256-jOQMlv9qFSj0U66HB+ujZoapty0UbewmSNbX8+3ujUQ=", "narHash": "sha256-9ZmdyoRz4Qu8bP5BKR1T10YbzcB9nvCeQjOEw2cRKR0=",
"path": "/nix/store/ha4ld6wd29q1igjmhjdvkvbxpxxxxbxf-source",
"rev": "931ab058daa7e4cd539533963f95e2bb0dbd41e6",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1637155076,
"narHash": "sha256-26ZPNiuzlsnXpt55Q44+yzXvp385aNAfevzVEKbrU5Q=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c5ed8beb478a8ca035f033f659b60c89500a3034", "rev": "715f63411952c86c8f57ab9e3e3cb866a015b5f2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -51,11 +108,37 @@
"type": "github" "type": "github"
} }
}, },
"pamedia": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"utils": [
"flake-utils"
]
},
"locked": {
"lastModified": 1637438696,
"narHash": "sha256-nhr2A0tf5afMIceNkHcRVO1lSeI/Ocu9RBfOXDuvaVE=",
"ref": "main",
"rev": "e9005826c19acc110c0e613a4cdba5d95715af61",
"revCount": 5,
"type": "git",
"url": "ssh://git@git.datarift.nl/erwin/pamedia.git"
},
"original": {
"ref": "main",
"type": "git",
"url": "ssh://git@git.datarift.nl/erwin/pamedia.git"
}
},
"root": { "root": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"ha-now-playing": "ha-now-playing",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs_2",
"pamedia": "pamedia"
} }
} }
}, },

View file

@ -11,24 +11,40 @@
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
ha-now-playing = {
url = "git+ssh://git@git.datarift.nl/erwin/ha-now-playing.git?ref=main";
inputs.nixpkgs.follows = "nixpkgs";
inputs.utils.follows = "flake-utils";
};
pamedia = {
url = "git+ssh://git@git.datarift.nl/erwin/pamedia.git?ref=main";
inputs.nixpkgs.follows = "nixpkgs";
inputs.utils.follows = "flake-utils";
};
}; };
outputs = { self, ... }@inputs: outputs = { self, ha-now-playing, pamedia, ... }@inputs:
with inputs; with inputs;
let let
defSystem = systemArch: baseConfig: defSystem = system: baseConfig:
nixpkgs.lib.nixosSystem { nixpkgs.lib.nixosSystem {
system = "${systemArch}"; system = "${system}";
modules = [ modules = [
{ _module.args.inputs = inputs; } { _module.args.inputs = inputs; }
{ _module.args.self-overlay = self.overlay; } { _module.args.self-overlay = self.overlay; }
{ _module.args.pamedia-overlay = pamedia.overlay; }
{ _module.args.ha-now-playing-overlay = ha-now-playing.overlay; }
({ ... }: { ({ ... }: {
imports = builtins.attrValues self.nixosModules ++ [ imports = builtins.attrValues self.nixosModules ++ [
{ {
nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; nix.nixPath = [ "nixpkgs=${nixpkgs}" ];
nixpkgs.overlays = [ self.overlay ]; nixpkgs.overlays = [
self.overlay
ha-now-playing.overlay
pamedia.overlay
];
} }
baseConfig baseConfig
@ -44,7 +60,7 @@
in in
{ {
overlay = final: prev: (import ./overlays) final prev; overlay = import ./overlays;
# overlay = final: prev: { # overlay = final: prev: {
# unstable = import nixpkgs { # unstable = import nixpkgs {
# system = "x86_64-linux"; # system = "x86_64-linux";
@ -71,11 +87,11 @@
]; ];
}; };
# loki = defSystem "x86_64-linux" { loki = defSystem "x86_64-linux" {
# imports = [ imports = [
# (import (./machines/loki/configuration.nix) { inherit self; }) (import (./machines/loki/configuration.nix) { inherit self; })
# ]; ];
# }; };
}; };
} // } //
@ -84,7 +100,11 @@
let let
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit system; inherit system;
overlays = [ self.overlay ]; overlays = [
self.overlay
ha-now-playing.overlay
pamedia.overlay
];
config = { config = {
allowUnsupportedSystem = true; allowUnsupportedSystem = true;
allowUnfree = true; allowUnfree = true;
@ -94,12 +114,12 @@
rec { rec {
packages = flake-utils.lib.flattenTree { packages = flake-utils.lib.flattenTree {
rofi-wayland = pkgs.rofi-wayland; rofi-wayland = pkgs.rofi-wayland;
pamedia = pkgs.pamedia; # pamedia = pkgs.pamedia;
}; };
apps = { apps = {
rofi-wayland = flake-utils.lib.mkApp { drv = packages.rofi-wayland; }; rofi-wayland = flake-utils.lib.mkApp { drv = packages.rofi-wayland; };
pamedia = flake-utils.lib.mkApp { drv = packages.pamedia; }; # pamedia = flake-utils.lib.mkApp { drv = packages.pamedia; };
}; };
} }
); );

View file

@ -0,0 +1,19 @@
{ pkgs, config, lib, ... }:
with lib;
let cfg = config.eboskma.programs.bat;
in
{
options.eboskma.programs.bat = {
enable = mkEnableOption "enable bat";
};
config = mkIf (cfg.enable) {
programs.bat = {
enable = true;
config = {
theme = "Monokai Extended Bright";
pager = "less -FR";
};
};
};
}

View file

@ -11,6 +11,7 @@ let
"image.avif.enable" = true; "image.avif.enable" = true;
"privacy.webrtc.allowSilencingNotifications" = true; "privacy.webrtc.allowSilencingNotifications" = true;
"privacy.webrtc.legacyGlobalIndicator" = false; "privacy.webrtc.legacyGlobalIndicator" = false;
"browser.shell.checkDefaultBrowser" = false;
}; };
in in
{ {

View file

@ -11,7 +11,24 @@ in
config = mkIf (cfg.enable) { config = mkIf (cfg.enable) {
programs.fish = { programs.fish = {
enable = true; enable = true;
functions = {
reload = {
body = ''
history --save
set -gx dirprev $dirprev
set -gx dirnext $dirnext
set -gx dirstack $dirstack
set -g fish_greeting ""
exec fish
'';
description = "Reload Fish while keeping some context";
};
};
shellAliases = {
code = "${pkgs.vscode}/bin/code --enable-features=UseOzonePlatform --ozone-platform=wayland";
ls = "${pkgs.exa}/bin/exa -Fb";
};
# interactiveShellInit = '' # interactiveShellInit = ''
# ''; # '';
}; };
@ -19,6 +36,19 @@ in
programs.starship = { programs.starship = {
enable = true; enable = true;
enableFishIntegration = true; enableFishIntegration = true;
settings = {
aws.disabled = true;
git_branch.symbol = " ";
memory_usage.symbol = " ";
package.symbol = " ";
python.symbol = " ";
rust.symbol = " ";
time.disabled = false;
status = {
disabled = false;
format = "[$symbol $status]($style) ";
};
};
}; };
programs.fzf = { programs.fzf = {

View file

@ -0,0 +1,109 @@
{ pkgs, config, lib, ... }:
with lib;
let cfg = config.eboskma.programs.git;
in
{
options.eboskma.programs.git = {
enable = mkEnableOption "enable git";
name = mkOption {
description = "your name";
type = types.nonEmptyStr;
};
email = mkOption {
description = "your e-mail address";
type = types.nonEmptyStr;
};
signingKey = mkOption {
description = "your GPG signing key ID";
type = types.nullOr types.str;
default = null;
};
};
config = mkIf (cfg.enable) {
programs.git = {
enable = true;
userName = cfg.name;
userEmail = cfg.email;
signing = mkIf (cfg.signingKey != null) {
key = cfg.signingKey;
signByDefault = true;
};
delta = {
enable = true;
options = {
side-by-side = true;
};
};
aliases = {
ls = "ls-files";
ignored = "ls-files -o -i --exclude-standard";
st = "status -s -b";
branches = "branch -a";
tags = "tag";
stashes = "stash list";
nevermind = "!git reset --hard HEAD && git clean -d -f";
graph = "log --graph -10 --branches --remotes --tags --format=format:'%Cgreen%h %Creset %<(75,trunc)%s (%cN, %cr) %Cred%d' --date-order";
precommit = "diff --cached --diff-algorithm=minimal -w";
track = "branch -u";
stat = "status -s";
up = "pull --autostash --rebase";
cm = "commit -m";
changelog = "log --oneline --no-merges";
source = "remote get-url origin";
};
extraConfig = {
init = {
defaultBranch = "main";
};
core = {
editor = "${pkgs.neovim}/bin/nvim";
# pager = "${pkgs.bat}/bin/bat";
};
merge = {
ff = "only";
conflictstyle = "diff3";
tool = "${pkgs.meld}/bin/meld";
};
pull = {
ff = "only";
};
rebase = {
autoStash = true;
};
color = {
ui = "auto";
status = {
added = "yellow";
changed = "green";
untracked = "cyan";
};
branch = {
current = "yellow reverse";
local = "yellow";
remote = "green";
};
diff = {
meta = "yellow bold";
frag = "magenta bold";
old = "red bold";
new = "green bold";
};
};
};
};
programs.gh = {
enable = true;
settings = {
git_protocol = "ssh";
};
};
};
}

View file

@ -9,7 +9,7 @@ in
config = mkIf (cfg.enable) { config = mkIf (cfg.enable) {
home.packages = with pkgs; [ home.packages = with pkgs; [
pinentry-curses pinentry-gnome
]; ];
programs.gpg = { programs.gpg = {
@ -18,7 +18,7 @@ in
services.gpg-agent = { services.gpg-agent = {
enable = true; enable = true;
pinentryFlavor = "curses"; pinentryFlavor = "gnome3";
enableSshSupport = true; enableSshSupport = true;
defaultCacheTtlSsh = 14400; defaultCacheTtlSsh = 14400;
maxCacheTtlSsh = 14400; maxCacheTtlSsh = 14400;

View file

@ -3,7 +3,7 @@ with lib;
let let
cfg = config.eboskma.programs.sway; cfg = config.eboskma.programs.sway;
mod = "Mod4"; mod = "Mod4";
swaylockcmd = "${pkgs.swaylock}/bin/swaylock --ignore-empty-password --daemonize --show-failed-attempts --indicator-caps-lock --clock --image ~/.wallpapers/river-2560.png --fade-in 0.5 --scaling fill"; swaylockcmd = "${pkgs.swaylock-effects}/bin/swaylock --ignore-empty-password --daemonize --show-failed-attempts --indicator-caps-lock --clock --image ~/.wallpapers/river-2560.png --fade-in 0.5 --scaling fill";
in in
{ {
options.eboskma.programs.sway.enable = mkEnableOption "Enable sway"; options.eboskma.programs.sway.enable = mkEnableOption "Enable sway";
@ -152,9 +152,9 @@ in
"${mod}+Shift+Ctrl+Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy -t \"image/png\" -f"; "${mod}+Shift+Ctrl+Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy -t \"image/png\" -f";
"${mod}+Shift+Alt+Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\""; "${mod}+Shift+Alt+Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\"";
"XF86AudioRaiseVolume" = "exec ${pkgs.pamedia}/bin/pamedia up"; # "XF86AudioRaiseVolume" = "exec ${pkgs.pamedia}/bin/pamedia up";
"XF86AudioLowerVolume" = "exec ${pkgs.pamedia}/bin/pamedia down"; # "XF86AudioLowerVolume" = "exec ${pkgs.pamedia}/bin/pamedia down";
"XF86AudioMute" = "exec ${pkgs.pamedia}/bin/pamedia mute"; # "XF86AudioMute" = "exec ${pkgs.pamedia}/bin/pamedia mute";
"XF86Calculator" = "exec ${pkgs.gnome.gnome-calculator}/bin/gnome-calculator"; "XF86Calculator" = "exec ${pkgs.gnome.gnome-calculator}/bin/gnome-calculator";
}; };

View file

@ -0,0 +1,63 @@
{ pkgs, config, lib, ... }:
with lib;
let cfg = config.eboskma.programs.tmux;
in
{
options.eboskma.programs.tmux = {
enable = mkEnableOption "enable tmux";
};
config = mkIf (cfg.enable) {
programs.tmux = {
enable = true;
shortcut = "a";
terminal = "tmux-256color";
clock24 = true;
baseIndex = 1;
keyMode = "vi";
extraConfig = ''
source ${pkgs.powerline}/share/tmux/powerline.conf
setw -g automatic-rename
set -ag update-environment "SWAYSOCK"
bind-key r source ~/.tmux.conf \; display "Reloaded config."
bind-key C-a send-prefix
bind-key | split-window -h
bind-key - split-window -v
bind-key h select-pane -L
bind-key n select-pane -D
bind-key e select-pane -U
bind-key i select-pane -R
bind-key -r C-h select-window -t :-
bind-key -r C-i select-window -t :+
bind-key -r H resize-pane -L 5
bind-key -r N resize-pane -D 5
bind-key -r E resize-pane -U 5
bind-key -r I resize-pane -R 5
bind-key C-[ swap-window -t -1
bind-key C-] swap-window -t +1
bind-key -T copy-mode-vi h send-keys -X cursor-left
bind-key -T copy-mode-vi n send-keys -X cursor-down
bind-key -T copy-mode-vi e send-keys -X cursor-up
bind-key -T copy-mode-vi i send-keys -X cursor-right
set -g mouse on
bind-key -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind-key -n WheelDownPane select-pane -t= \; send-keys -M
'';
};
home.packages = with pkgs; [
powerline
];
};
}

View file

@ -11,6 +11,7 @@ in
enable = true; enable = true;
package = pkgs.vscode; package = pkgs.vscode;
extensions = with pkgs.vscode-extensions; [ extensions = with pkgs.vscode-extensions; [
arrterian.nix-env-selector
bbenoist.nix bbenoist.nix
brettm12345.nixfmt-vscode brettm12345.nixfmt-vscode
# aaronduino.nix-lsp # aaronduino.nix-lsp

View file

@ -447,9 +447,6 @@
"[markdown]": { "[markdown]": {
"editor.defaultFormatter": "esbenp.prettier-vscode" "editor.defaultFormatter": "esbenp.prettier-vscode"
}, },
"[rust]": {
"editor.defaultFormatter": "dprint.dprint"
},
"[cpp]": { "[cpp]": {
"editor.defaultFormatter": "xaver.clang-format" "editor.defaultFormatter": "xaver.clang-format"
}, },

View file

@ -18,7 +18,7 @@ in
modules-left = [ modules-left = [
"sway/workspaces" "sway/workspaces"
"sway/mode" "sway/mode"
# "custom/now_playing" "custom/now_playing"
]; ];
modules-center = [ modules-center = [
"sway/window" "sway/window"
@ -89,14 +89,14 @@ in
}; };
# TODO: package as nix thingy # TODO: package as nix thingy
# "custom/now_playing" = { "custom/now_playing" = {
# exec = "${HOME}/.config/waybar/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token <TOKEN>"; exec = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token <TOKEN>";
# format = " ♪ {}"; format = " {}";
# interval = 2; interval = 2;
# on-click = "${HOME}/.config/waybar/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token <TOKEN>"; on-click = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token <TOKEN> play-pause";
# on-scroll-down = "${HOME}/.config/waybar/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token <TOKEN>"; on-scroll-down = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token <TOKEN> volume-up";
# on-scroll-up = "${HOME}/.config/waybar/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token <TOKEN>"; on-scroll-up = "${pkgs.ha-now-playing}/bin/ha-now-playing --host home.datarift.nl --entity media_player.sonos_woonkamer --token <TOKEN> volume-down";
# }; };
"sway/window" = { "sway/window" = {
format = "{}"; format = "{}";

View file

@ -0,0 +1,53 @@
{ self, ... }:
{
imports = [ ./hardware-configuration.nix ];
eboskma = {
base = {
plymouth.enable = true;
work = false;
};
desktop = {
enable = true;
home-manager = true;
};
nix-common = {
enable = true;
};
greetd.enable = true;
fonts.enable = true;
networking = {
enable = true;
dhcpInterfaces = [ "enp4s0" ];
};
sound.enable = true;
docker.enable = true;
gnome.enable = true;
};
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
time.timeZone = "Europe/Amsterdam";
networking = {
hostName = "loki";
useDHCP = false;
};
# nix = {
# package = pkgs.nixUnstable;
# extraOptions = ''
# experimental-features = nix-command flakes
# '';
# };
services.openssh.enable = true;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "21.11"; # Did you read the comment?
}

View file

@ -0,0 +1,37 @@
# 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 + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/42065c7e-d0aa-4de8-a913-014cf59d48ac";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/4064-A1BE";
fsType = "vfat";
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/36d7ee19-f591-4c29-b7da-cafd9bf2c7f6";
fsType = "ext4";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/d93788f7-1b94-4687-8313-055d17f42b7e"; }
];
# high-resolution display
hardware.video.hidpi.enable = lib.mkDefault true;
}

View file

@ -34,5 +34,7 @@ in
enable = true; enable = true;
driSupport = true; driSupport = true;
}; };
programs.fish.enable = true;
}; };
} }

View file

@ -1,4 +1,4 @@
{ lib, pkgs, config, inputs, self-overlay, ... }: { lib, pkgs, config, inputs, self-overlay, ha-now-playing-overlay, pamedia-overlay, ... }:
with lib; with lib;
let cfg = config.eboskma.desktop; let cfg = config.eboskma.desktop;
in in
@ -25,59 +25,109 @@ in
home.username = "erwin"; home.username = "erwin";
home.homeDirectory = "/home/erwin"; home.homeDirectory = "/home/erwin";
home.sessionVariables = {
EDITOR = "${pkgs.neovim}/bin/nvim";
};
nixpkgs.config = { allowUnfree = true; }; nixpkgs.config = { allowUnfree = true; };
services.gnome-keyring.enable = true;
home.stateVersion = "21.11"; home.stateVersion = "21.11";
eboskma = { eboskma = {
programs = { programs = {
alacritty.enable = true; alacritty.enable = true;
bat.enable = true;
firefox = { firefox = {
enable = true; enable = true;
work = config.eboskma.base.work; work = config.eboskma.base.work;
}; };
fish.enable = true; fish.enable = true;
git = {
enable = true;
name = "Erwin Boskma";
email = "erwin@datarift.nl";
signingKey = "EE7ADEFE1D943C7B";
};
gpg.enable = true; gpg.enable = true;
rofi.enable = true; rofi.enable = true;
vscode.enable = true; vscode.enable = true;
sway.enable = true; sway.enable = true;
tmux.enable = true;
waybar.enable = true; waybar.enable = true;
}; };
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
(nerdfonts.override { fonts = [ "CascadiaCode" "FantasqueSansMono" "FiraCode" "Iosevka" "JetBrainsMono" "Meslo" "Noto" "SourceCodePro" ]; })
bitwarden bitwarden
fd
git
gnome.nautilus gnome.nautilus
jetbrains.clion jetbrains.clion
neovim neovim
ripgrep
signal-desktop signal-desktop
steam steam
tdesktop tdesktop
unzip unzip
wl-clipboard
]; ];
xdg = { xdg = {
enable = true; enable = true;
}; };
gtk = {
enable = true;
theme = {
name = "Arc-Dark";
package = pkgs.arc-theme;
};
iconTheme = {
name = "Paper";
package = pkgs.paper-icon-theme;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
};
imports = [ imports = [
{ {
nixpkgs.overlays = [ self-overlay ]; nixpkgs.overlays = [
self-overlay
ha-now-playing-overlay
pamedia-overlay
];
} }
../../home-manager/modules/alacritty ../../home-manager/modules/alacritty
../../home-manager/modules/bat
../../home-manager/modules/firefox ../../home-manager/modules/firefox
../../home-manager/modules/fish ../../home-manager/modules/fish
../../home-manager/modules/git
../../home-manager/modules/gpg ../../home-manager/modules/gpg
../../home-manager/modules/rofi ../../home-manager/modules/rofi
../../home-manager/modules/vscode ../../home-manager/modules/vscode
../../home-manager/modules/sway ../../home-manager/modules/sway
../../home-manager/modules/tmux
../../home-manager/modules/waybar ../../home-manager/modules/waybar
]; ];
}; };
programs = {
dconf.enable = true;
sway = {
enable = true;
wrapperFeatures = {
gtk = true;
base = true;
};
extraPackages = with pkgs; [ swaylock-effects swayidle ];
};
};
xdg = { xdg = {
mime.enable = true; mime.enable = true;
menus.enable = true; menus.enable = true;
@ -92,12 +142,13 @@ in
}; };
services = { services = {
pipewire = { dbus.packages = [ pkgs.gcr ];
enable = true; };
pulse.enable = true;
media-session.enable = true;
};
security.pam.services.swaylock = {
text = ''
auth include login
'';
}; };
}; };
} }

View file

@ -0,0 +1,25 @@
{ lib, pkgs, config, ... }:
with lib;
let cfg = config.eboskma.docker;
in
{
options.eboskma.docker = { enable = mkEnableOption "activate docker"; };
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ docker-compose ];
virtualisation.docker = {
enable = true;
autoPrune = {
enable = true;
dates = "weekly";
};
};
users.extraUsers.${config.eboskma.var.mainUser}.extraGroups =
[ "docker" ];
};
}

35
modules/fonts/default.nix Normal file
View file

@ -0,0 +1,35 @@
{ lib, pkgs, config, ... }:
with lib;
let cfg = config.eboskma.fonts;
in
{
options.eboskma.fonts = { enable = mkEnableOption "activate fonts"; };
config = mkIf cfg.enable {
fonts = {
fontDir.enable = true;
fonts = with pkgs; [
(nerdfonts.override { fonts = [ "CascadiaCode" "FantasqueSansMono" "FiraCode" "Iosevka" "JetBrainsMono" "Meslo" "Noto" "SourceCodePro" ]; })
dejavu_fonts
kochi-substitute
noto-fonts-emoji
corefonts
recursive
ttf_bitstream_vera
];
fontconfig = {
defaultFonts = {
serif = [ "Recursive Sans Casual Static Medium" ];
sansSerif = [ "Recursive Sans Linear Static Medium" ];
monospace = [ "Iosevka Nerd Font" ];
emoji = [ "Noto Color Emoji" ];
};
};
};
};
}

17
modules/gnome/default.nix Normal file
View file

@ -0,0 +1,17 @@
{ pkgs, config, lib, ... }:
with lib;
let cfg = config.eboskma.gnome;
in
{
options.eboskma.gnome.enable = mkEnableOption "activate gnome support settings";
config = mkIf (cfg.enable) {
environment.systemPackages = with pkgs; [
gnomeExtensions.appindicator
];
services.udev.packages = with pkgs; [
gnome3.gnome-settings-daemon
];
services.gnome.gnome-keyring.enable = true;
};
}

View file

@ -0,0 +1,27 @@
{ pkgs, config, lib, ... }:
with lib;
let cfg = config.eboskma.networking;
in
{
options.eboskma.networking = {
enable = mkEnableOption "activate networing settings";
dhcpInterfaces = mkOption {
description = "list of interfaces to enable DHCP on";
type = types.listOf types.nonEmptyStr;
};
};
config = mkIf (cfg.enable) {
networking = {
networkmanager.enable = true;
interfaces = listToAttrs (builtins.map
(iface: {
name = iface;
value = { useDHCP = true; };
})
cfg.dhcpInterfaces);
};
users.extraUsers.${config.eboskma.var.mainUser}.extraGroups = [ "networkmanager" ];
};
}

View file

@ -0,0 +1,23 @@
{ lib, pkgs, config, ... }:
with lib;
let cfg = config.eboskma.var;
in
{
options.eboskma.var.mainUser = lib.mkOption {
type = lib.types.str;
default = "erwin";
description = ''
The main system user
'';
};
options.eboskma.system = lib.mkOption {
type = lib.types.str;
default = "x86_64-linux";
description = ''
System type
'';
};
}

21
modules/sound/default.nix Normal file
View file

@ -0,0 +1,21 @@
{ pkgs, config, lib, ... }:
with lib;
let cfg = config.eboskma.sound;
in
{
options.eboskma.sound.enable = mkEnableOption "activate sound settings";
config = mkIf (cfg.enable) {
sound.enable = true;
services = {
pipewire = {
enable = true;
pulse.enable = true;
media-session.enable = true;
};
};
environment.systemPackages = with pkgs; [ pavucontrol ];
users.extraUsers.${config.eboskma.var.mainUser}.extraGroups = [ "audio" ];
};
}

View file

@ -1,11 +1,11 @@
final: prev: { final: prev: {
rofi-wayland = prev.pkgs.callPackage ../pkgs/rofi-wayland { }; rofi-wayland = prev.pkgs.callPackage ../pkgs/rofi-wayland { };
pamedia = prev.pkgs.callPackage ../pkgs/pamedia { # pamedia = prev.pkgs.callPackage ../pkgs/pamedia {
buildPythonPackage = prev.pkgs.python3.pkgs.buildPythonPackage; # buildPythonPackage = prev.pkgs.python3.pkgs.buildPythonPackage;
pulsectl = prev.pkgs.python39Packages.pulsectl; # pulsectl = prev.pkgs.python39Packages.pulsectl;
pygobject3 = prev.pkgs.python39Packages.pygobject3; # pygobject3 = prev.pkgs.python39Packages.pygobject3;
gobject-introspection = prev.pkgs.gobject-introspection; # gobject-introspection = prev.pkgs.gobject-introspection;
libnotify = prev.pkgs.libnotify; # libnotify = prev.pkgs.libnotify;
lib = prev.pkgs.lib; # lib = prev.pkgs.lib;
}; # };
} }

View file

@ -11,11 +11,14 @@ buildPythonPackage rec {
src = ./src; src = ./src;
buildInputs = [
gobject-introspection
libnotify
];
propagatedBuildInputs = [ propagatedBuildInputs = [
pulsectl pulsectl
pygobject3 pygobject3
gobject-introspection
libnotify
]; ];
meta = { meta = {