Compare commits

..

No commits in common. "df15e6b6c25cc835c343454a4a4ef44816af5a6f" and "8a7411c41887d92ceb2d8f68c2deb1f829259222" have entirely different histories.

37 changed files with 29 additions and 1094 deletions

1
.gitattributes vendored
View file

@ -1,3 +1,2 @@
secrets/*.secret filter=git-crypt diff=git-crypt secrets/*.secret filter=git-crypt diff=git-crypt
secrets/wireguard.nix filter=git-crypt diff=git-crypt secrets/wireguard.nix filter=git-crypt diff=git-crypt
home/secrets/*.secret filter=git-crypt diff=git-crypt

View file

@ -3,17 +3,23 @@
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
alacritty alacritty
discord discord
emacsPgtkGcc
feh feh
firefox firefox
flameshot
pavucontrol pavucontrol
slack slack
spotify spotify
sqlite # needed for org-roam
zathura zathura
]; ];
fonts.fonts = with pkgs; [
input-fonts
emacs-all-the-icons-fonts
];
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
programs.nm-applet.enable = true; programs.nm-applet.enable = true;
# NOTE: needed for home emacs configuration
nixpkgs.config.input-fonts.acceptLicense = true; nixpkgs.config.input-fonts.acceptLicense = true;
} }

View file

@ -14,6 +14,10 @@
AddKeysToAgent yes AddKeysToAgent yes
''; '';
}; };
tmux = {
enable = true;
baseIndex = 1;
};
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [

View file

@ -1,13 +1,11 @@
{ ... }: { ... }:
{ {
imports = [ imports = [
# Default configuration # Default configuration
./base ./base
./base/gui-programs.nix ./base/gui-programs.nix
# Module definitions
./modules
# Service definitions # Service definitions
./services ./services

View file

@ -2,11 +2,11 @@
"nodes": { "nodes": {
"emacs-overlay": { "emacs-overlay": {
"locked": { "locked": {
"lastModified": 1619028898, "lastModified": 1618653777,
"narHash": "sha256-OgKYwyxZA7zfdanc8RhfZ7OCHlAXHuzN6r4Q6Gjpzlk=", "narHash": "sha256-jSG1i83pmKwAx6QtkVjyCQT+/LvMEMEVeVDZcOFjRTg=",
"owner": "nix-community", "owner": "nix-community",
"repo": "emacs-overlay", "repo": "emacs-overlay",
"rev": "e4778461070fb17602e71b01b8beaf7976e5f6ca", "rev": "905883cd5de24958bfd354c6e335f38f667e7ede",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -16,27 +16,6 @@
"type": "github" "type": "github"
} }
}, },
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1618962339,
"narHash": "sha256-Ecud4mXuA96NTCDUWGp5GVVNarZFWZL3YUZ0I8mQKIs=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "db00b39a9abec04245486a01b236b8d9734c9ad0",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1618149891, "lastModified": 1618149891,
@ -55,11 +34,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1619057301, "lastModified": 1618072958,
"narHash": "sha256-1Y1nCnwGSQHM76KGIhz+8tOAGOT3wlP+dKjwoyQXCtg=", "narHash": "sha256-QDKj58ECixtb4EJMWV5D5Lb2xdCgab1Opi4zjQWbDOg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "d235056d6d6dcbd2999bd55fd120d831d4df6304", "rev": "a73020b2a150322c9832b50baeb0296ba3b13dd7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -72,7 +51,6 @@
"root": { "root": {
"inputs": { "inputs": {
"emacs-overlay": "emacs-overlay", "emacs-overlay": "emacs-overlay",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable" "nixpkgs-unstable": "nixpkgs-unstable"
} }

View file

@ -1,37 +1,12 @@
{ {
description = "Nixos configuration with flakes"; description = "Nixos configuration with flakes";
inputs = { inputs = {
nixpkgs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-20.09";
type = "github"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
owner = "NixOS"; emacs-overlay.url = "github:nix-community/emacs-overlay/master";
repo = "nixpkgs";
ref = "nixos-20.09";
}; };
nixpkgs-unstable = { outputs = { self, nixpkgs, nixpkgs-unstable, emacs-overlay }: {
type = "github";
owner = "NixOS";
repo = "nixpkgs";
ref = "nixos-unstable";
};
emacs-overlay = {
type = "github";
owner = "nix-community";
repo = "emacs-overlay";
ref = "master";
};
home-manager = {
type = "github";
owner = "nix-community";
repo = "home-manager";
ref = "master";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
};
outputs = { self, nixpkgs, nixpkgs-unstable, emacs-overlay, home-manager }: {
nixosConfigurations.poseidon = nixpkgs.lib.nixosSystem rec { nixosConfigurations.poseidon = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux"; system = "x86_64-linux";
modules = modules =
@ -62,22 +37,10 @@
[ [
./boreal.nix ./boreal.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.alarsyo = import ./home;
home-manager.verbose = true;
}
{ {
nixpkgs.overlays = [ nixpkgs.overlays = [
emacs-overlay.overlay emacs-overlay.overlay
(self: super: {
packages = import ./pkgs { pkgs = super; };
})
# uncomment this to build everything from scratch, fun but takes a # uncomment this to build everything from scratch, fun but takes a
# while # while
# #

View file

@ -1,39 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.my.home.alacritty;
alacrittyTheme = config.my.theme.alacrittyTheme;
in
{
options.my.home.alacritty.enable = lib.mkEnableOption "Alacritty terminal";
config = lib.mkIf cfg.enable {
programs.alacritty = {
enable = true;
settings = {
window = {
padding = {
x = 8;
y = 8;
};
};
font = {
normal = {
family = "Iosevka Fixed";
style = "Medium";
};
size = 10.0;
};
colors = alacrittyTheme;
};
};
home.packages = with pkgs; [
iosevka-bin
];
# make sure font is discoverable
fonts.fontconfig.enable = true;
};
}

View file

@ -1,18 +0,0 @@
{ ... }:
{
imports = [
./alacritty.nix
./emacs.nix
./fish
./flameshot.nix
./secrets
./starship.nix
./themes
./tmux.nix
./x
];
home.stateVersion = "20.09";
home.username = "alarsyo";
}

View file

@ -1,29 +0,0 @@
{ config, lib, pkgs, ... }:
{
options.my.home.emacs = with lib; {
enable = mkEnableOption "Emacs daemon configuration";
};
config = lib.mkIf config.my.home.emacs.enable {
home.packages = with pkgs; [
sqlite # needed by org-roam
# fonts used by my config
emacs-all-the-icons-fonts
iosevka-bin
];
# make sure above fonts are discoverable
fonts.fontconfig.enable = true;
services.emacs = {
enable = true;
# generate emacsclient desktop file
client.enable = true;
};
programs.emacs = {
enable = true;
package = pkgs.emacsPgtkGcc;
};
};
}

View file

@ -1,15 +0,0 @@
{ config, lib, ... }:
let
cfg = config.my.home.fish;
in
{
options.my.home.fish.enable = lib.mkEnableOption "Fish shell";
config = lib.mkIf cfg.enable {
programs.fish = {
enable = true;
};
xdg.configFile."fish/functions" = { source = ./. + "/functions"; };
};
}

View file

@ -1,7 +0,0 @@
function nfl
set -l flags "--commit-lock-file"
for flake in $argv
set -a flags "--update-input" "$flake"
end
nix flake lock $flags
end

View file

@ -1,13 +0,0 @@
{ config, lib, ... }:
let
cfg = config.my.home.flameshot;
in
{
options.my.home.flameshot = with lib; {
enable = mkEnableOption "flameshot autolaunch";
};
config.services.flameshot = lib.mkIf cfg.enable {
enable = true;
};
}

View file

@ -1,13 +0,0 @@
{ lib, ... }:
with lib;
{
options.my.secrets = mkOption {
type = types.attrs;
};
config.my.secrets = {
# I'm not sure hiding this is very important, but it *seems* like a bad idea
# to expose this
bluetooth-mouse-mac-address = fileContents ./bluetooth-mouse-mac-address.secret;
};
}

View file

@ -1,17 +0,0 @@
{ config, lib, ... }:
let
cfg = config.my.home.starship;
in
{
options.my.home.starship.enable = lib.mkEnableOption "Starship.rs prompt";
config = lib.mkIf cfg.enable {
programs.starship = {
enable = true;
enableFishIntegration = true;
settings = {
add_newline = false;
};
};
};
}

View file

@ -1,89 +0,0 @@
{ lib }:
with lib;
let
mkColorOption = import ./color.nix { inherit lib; };
primaryColorModule = types.submodule {
options = {
background = mkColorOption {};
foreground = mkColorOption {};
};
};
cursorColorModule = types.submodule {
options = {
text = mkColorOption {};
cursor = mkColorOption {};
};
};
rainbowColorModule = types.submodule {
options = {
black = mkColorOption {};
red = mkColorOption {};
green = mkColorOption {};
yellow = mkColorOption {};
blue = mkColorOption {};
magenta = mkColorOption {};
cyan = mkColorOption {};
white = mkColorOption {};
};
};
in
types.submodule {
options = {
primary = mkOption {
type = primaryColorModule;
default = {
foreground = "#c5c8c6";
background = "#1d1f21";
};
};
cursor = mkOption {
type = cursorColorModule;
default = {
text = "#1d1f21";
cursor = "#c5c8c6";
};
};
normal = mkOption {
type = rainbowColorModule;
default = {
black = "#1d1f21";
red = "#cc6666";
green = "#b5bd68";
yellow = "#f0c674";
blue = "#81a2be";
magenta = "#b294bb";
cyan = "#8abeb7";
white = "#c5c8c6";
};
};
bright = mkOption {
type = rainbowColorModule;
default = {
black = "#666666";
red = "#d54e53";
green = "#b9ca4a";
yellow = "#e7c547";
blue = "#7aa6da";
magenta = "#c397d8";
cyan = "#70c0b1";
white = "#eaeaea";
};
};
dim = mkOption {
type = rainbowColorModule;
default = {
black = "#131415";
red = "#864343";
green = "#777c44";
yellow = "#9e824c";
blue = "#556a7d";
magenta = "#75617b";
cyan = "#5b7d78";
white = "#828482";
};
};
};
}

View file

@ -1,9 +0,0 @@
{ lib }:
let
mkColorOption = with lib; {default ? "#000000", description ? "" }: mkOption {
inherit description default;
example = "#abcdef";
type = types.strMatching "#[0-9a-f]{6}";
};
in
mkColorOption

View file

@ -1,34 +0,0 @@
{ config, lib, ... }:
with lib;
let
themeType = types.submodule {
options = {
alacrittyTheme = mkOption {
type = import ./alacritty.nix { inherit lib; };
default = {};
};
i3Theme = mkOption {
type = import ./i3.nix { inherit lib; };
default = {};
};
i3BarTheme = mkOption {
type = import ./i3bar.nix { inherit lib; };
default = {};
};
};
};
in
{
options.my.theme = mkOption {
type = themeType;
default = {};
};
options.my.themes = mkOption {
type = with types; attrsOf themeType;
};
config.my.themes = {
solarizedLight = import ./solarizedLight;
};
}

View file

@ -1,185 +0,0 @@
{ lib }:
with lib;
let
mkColorOption = import ./color.nix { inherit lib; };
barColorSetModule = types.submodule {
options = {
border = mkColorOption {};
background = mkColorOption {};
text = mkColorOption {};
};
};
colorSetModule = types.submodule {
options = {
border = mkColorOption {};
childBorder = mkColorOption {};
background = mkColorOption {};
text = mkColorOption {};
indicator = mkColorOption {};
};
};
in
types.submodule {
options = {
bar = mkOption {
type = types.submodule {
options = {
background = mkColorOption {
default = "#000000";
description = "Background color of the bar.";
};
statusline = mkColorOption {
default = "#ffffff";
description = "Text color to be used for the statusline.";
};
separator = mkColorOption {
default = "#666666";
description = "Text color to be used for the separator.";
};
focusedWorkspace = mkOption {
type = barColorSetModule;
default = {
border = "#4c7899";
background = "#285577";
text = "#ffffff";
};
description = ''
Border, background and text color for a workspace button when the workspace has focus.
'';
};
activeWorkspace = mkOption {
type = barColorSetModule;
default = {
border = "#333333";
background = "#5f676a";
text = "#ffffff";
};
description = ''
Border, background and text color for a workspace button when the workspace is active.
'';
};
inactiveWorkspace = mkOption {
type = barColorSetModule;
default = {
border = "#333333";
background = "#222222";
text = "#888888";
};
description = ''
Border, background and text color for a workspace button when the workspace does not
have focus and is not active.
'';
};
urgentWorkspace = mkOption {
type = barColorSetModule;
default = {
border = "#2f343a";
background = "#900000";
text = "#ffffff";
};
description = ''
Border, background and text color for a workspace button when the workspace contains
a window with the urgency hint set.
'';
};
bindingMode = mkOption {
type = barColorSetModule;
default = {
border = "#2f343a";
background = "#900000";
text = "#ffffff";
};
description =
"Border, background and text color for the binding mode indicator";
};
};
};
default = {};
};
background = mkOption {
type = types.str;
default = "#ffffff";
description = ''
Background color of the window. Only applications which do not cover
the whole area expose the color.
'';
};
focused = mkOption {
type = colorSetModule;
default = {
border = "#4c7899";
background = "#285577";
text = "#ffffff";
indicator = "#2e9ef4";
childBorder = "#285577";
};
description = "A window which currently has the focus.";
};
focusedInactive = mkOption {
type = colorSetModule;
default = {
border = "#333333";
background = "#5f676a";
text = "#ffffff";
indicator = "#484e50";
childBorder = "#5f676a";
};
description = ''
A window which is the focused one of its container,
but it does not have the focus at the moment.
'';
};
unfocused = mkOption {
type = colorSetModule;
default = {
border = "#333333";
background = "#222222";
text = "#888888";
indicator = "#292d2e";
childBorder = "#222222";
};
description = "A window which is not focused.";
};
urgent = mkOption {
type = colorSetModule;
default = {
border = "#2f343a";
background = "#900000";
text = "#ffffff";
indicator = "#900000";
childBorder = "#900000";
};
description = "A window which has its urgency hint activated.";
};
placeholder = mkOption {
type = colorSetModule;
default = {
border = "#000000";
background = "#0c0c0c";
text = "#ffffff";
indicator = "#000000";
childBorder = "#0c0c0c";
};
description = ''
Background and text color are used to draw placeholder window
contents (when restoring layouts). Border and indicator are ignored.
'';
};
};
}

View file

@ -1,24 +0,0 @@
{ lib }:
with lib;
let
mkColorOption = import ./color.nix { inherit lib; };
in
types.submodule {
options = {
theme = mkOption {
type = types.submodule {
options = {
name = mkOption {
type = types.str;
default = "plain";
};
overrides = mkOption {
type = types.attrsOf types.str;
default = {};
};
};
};
default = {};
};
};
}

View file

@ -1,39 +0,0 @@
let
colors = import ./colors.nix;
in
with colors;
{
primary = {
background = base3;
foreground = base00;
};
cursor = {
text = base3;
cursor = base00;
};
normal = {
black = base02;
red = red;
green = green;
yellow = yellow;
blue = blue;
magenta = magenta;
cyan = cyan;
white = base2;
};
bright = {
black = base03;
red = orange;
green = base01;
yellow = base00;
blue = base0;
magenta = violet;
cyan = base1;
white = base3;
};
dim = {};
}

View file

@ -1,18 +0,0 @@
{
base03 = "#002b36"; # brblack
base02 = "#073642"; # black
base01 = "#586e75"; # brgreen
base00 = "#657b83"; # bryellow
base0 = "#839496"; # brblue
base1 = "#93a1a1"; # brcyan
base2 = "#eee8d5"; # white
base3 = "#fdf6e3"; # brwhite
yellow = "#b58900"; # yellow
orange = "#cb4b16"; # brred
red = "#dc322f"; # red
magenta = "#d33682"; # magenta
violet = "#6c71c4"; # brmagenta
blue = "#268bd2"; # blue
cyan = "#2aa198"; # cyan
green = "#859900"; # green
}

View file

@ -1,5 +0,0 @@
{
i3Theme = import ./i3.nix;
i3BarTheme = import ./i3bar.nix;
alacrittyTheme = import ./alacritty.nix;
}

View file

@ -1,64 +0,0 @@
let
colors = import ./colors.nix;
in
with colors;
{
bar = {
background = base3;
statusline = yellow;
separator = red;
focusedWorkspace = {
border = blue;
background = blue;
text = base3; # base2 ?
};
inactiveWorkspace = {
border = base2;
background = base2;
text = base00;
};
activeWorkspace = {
border = blue;
background = base2;
text = yellow;
};
urgentWorkspace = {
border = red;
background = red;
text = base3;
};
};
focused = {
border = blue;
background = blue;
text = base3;
indicator = magenta;
childBorder = blue;
};
focusedInactive = {
border = base2;
background = base2;
text = base00;
indicator = magenta;
childBorder = base2;
};
unfocused = {
border = base2;
background = base2;
text = base00;
indicator = magenta;
childBorder = base2;
};
urgent = {
border = orange;
background = orange;
text = base3;
indicator = magenta;
childBorder = orange;
};
}

View file

@ -1,21 +0,0 @@
let
colors = import ./colors.nix;
in
with colors;
{
theme = {
name = "solarized-light";
overrides = {
idle_bg = base2;
idle_fg = base00;
info_bg = blue;
info_fg = base3;
good_bg = green;
good_fg = base3;
warning_bg = yellow;
warning_fg = base3;
critical_bg = red;
critical_fg = base3;
};
};
}

View file

@ -1,15 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.my.home.tmux;
in
{
options.my.home.tmux = with lib; {
enable = mkEnableOption "tmux dotfiles";
};
config.programs.tmux = lib.mkIf cfg.enable {
enable = true;
baseIndex = 1;
terminal = "screen-256color";
};
}

View file

@ -1,17 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.my.home.x.cursor;
in
{
options.my.home.x.cursor.enable = lib.mkEnableOption "X cursor";
config = lib.mkIf cfg.enable {
xsession.pointerCursor = {
package = pkgs.capitaine-cursors;
name = "capitaine-cursors";
# available sizes for capitaine-cursors are:
# 24, 30, 36, 48, 60, 72
size = 30;
};
};
}

View file

@ -1,12 +0,0 @@
{ config, lib, pkgs, ... }:
{
imports = [
./cursor.nix
./i3.nix
./i3bar.nix
];
options.my.home.x = with lib; {
enable = mkEnableOption "X server configuration";
};
}

View file

@ -1,122 +0,0 @@
{ config, lib, pkgs, ... }:
let
isEnabled = config.my.home.x.enable;
myTerminal =
# FIXME: fix when terminal is setup in home
# if config.my.home.terminal.program != null
if true
then "alacritty"
else "i3-sensible-terminal";
alt = "Mod1"; # `Alt` key
modifier = "Mod4"; # `Super` key
logoutMode = "[L]ogout, [S]uspend, [P]oweroff, [R]eboot";
i3Theme = config.my.theme.i3Theme;
in
{
config = lib.mkIf isEnabled {
my.home = {
flameshot.enable = true;
};
home.packages = with pkgs; [
betterlockscreen
];
xsession.windowManager.i3 = {
enable = true;
config = {
inherit modifier;
bars =
let
barConfigPath =
config.xdg.configFile."i3status-rust/config-top.toml".target;
in
[
{
statusCommand = "i3status-rs ${barConfigPath}";
position = "top";
fonts = [ "DejaVuSansMono" "FontAwesome5Free 9" ];
colors = i3Theme.bar;
}
];
colors = {
inherit (i3Theme)
focused
focusedInactive
unfocused
urgent
;
};
focus = {
followMouse = true;
mouseWarping = true;
};
workspaceAutoBackAndForth = true;
fonts = [
"DejaVu Sans Mono 8"
];
keybindings = lib.mkOptionDefault {
"${modifier}+Shift+e" = ''mode "${logoutMode}"'';
"${modifier}+i" = "exec emacsclient -c";
# Volume handling
"XF86AudioRaiseVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%";
"XF86AudioLowerVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%";
"XF86AudioMute" = "exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle";
"XF86AudioMicMute" = "exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle";
"${modifier}+l" = "exec --no-startup-id betterlockscreen --lock";
};
modes =
let
makeModeBindings = attrs: attrs // {
"Escape" = "mode default";
"Return" = "mode default";
};
in
lib.mkOptionDefault {
"${logoutMode}" = makeModeBindings {
"l" = "exec --no-startup-id i3-msg exit, mode default";
"s" = "exec --no-startup-id betterlockscreen --suspend, mode default";
"p" = "exec --no-startup-id systemctl poweroff, mode default";
"r" = "exec --no-startup-id systemctl reboot, mode default";
};
};
startup = [
# FIXME: make it conditional on "nvidia" being part of video drivers
{
command = "nvidia-settings -a '[gpu:0]/GPUPowerMizerMode=1'";
notification = false;
}
];
terminal = myTerminal;
assigns = {
"10" = [
{ class = "Slack"; }
{ class = "discord"; }
];
};
window.commands = [
{ command = "border pixel 2"; criteria = { class = "Alacritty"; }; }
];
};
};
};
}

View file

@ -1,91 +0,0 @@
{ config, lib, pkgs, ... }:
let
isEnabled = config.my.home.x.enable;
i3BarTheme = config.my.theme.i3BarTheme;
in
{
config = lib.mkIf isEnabled {
home.packages = with pkgs; [
iw # Used by `net` block
lm_sensors # Used by `temperature` block
font-awesome
];
programs.i3status-rust = {
enable = true;
bars = {
top = {
icons = "awesome5";
theme = i3BarTheme.theme.name;
settings = i3BarTheme;
blocks = [
{
block = "disk_space";
path = "/";
alias = "/";
info_type = "available";
unit = "GB";
interval = 60;
warning = 20.0;
alert = 10.0;
}
# TODO: update to new format when i3status-rust updates to v0.20:
# https://github.com/greshake/i3status-rust/blob/4d55b1d94ee09cbdefd805841fb54a2a4a0663a4/doc/blocks.md#available-format-keys-11
{
block = "memory";
display_type = "memory";
format_mem = "{Mug}/{MTg}GB";
warning_mem = 70.0;
critical_mem = 90.0;
# don't show swap
clickable = false;
}
{
block = "cpu";
interval = 1;
format = "{barchart}";
}
{
block = "temperature";
collapsed = false;
interval = 10;
format = "{max}°";
# FIXME: specific to my AMD Ryzen CPU. Make this depend on
# hostname or something else
chip = "k10temp-pci-*";
inputs = [ "Tccd1" ];
}
{
block = "networkmanager";
primary_only = true;
}
{
block = "bluetooth";
mac = config.my.secrets.bluetooth-mouse-mac-address;
hide_disconnected = true;
# TODO: use format when i3status-rust updates to v0.20
# format = "{percentage}";
}
{
block = "sound";
driver = "pulseaudio";
}
# {
# block = "notify";
# }
{
block = "time";
interval = 5;
format = "%a %d/%m %T";
locale = "fr_FR";
timezone = "Europe/Paris";
}
];
};
};
};
};
}

View file

@ -10,8 +10,6 @@ in
imports = imports =
[ # Include the results of the hardware scan. [ # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
./home.nix
]; ];
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
@ -40,7 +38,7 @@ in
# List services that you want to enable: # List services that you want to enable:
my.services = { my.services = {
wireguard = { wireguard = {
enable = false; enable = true;
iface = "wg"; iface = "wg";
port = 51820; port = 51820;
@ -71,9 +69,12 @@ in
layout = "fr"; layout = "fr";
xkbVariant = "us"; xkbVariant = "us";
}; };
};
my.displayManager.sddm.enable = true;
emacs = {
enable = true;
package = pkgs.emacsPgtkGcc;
};
};
sound.enable = true; sound.enable = true;
hardware.pulseaudio = { hardware.pulseaudio = {

View file

@ -1,15 +0,0 @@
{ config, ... }:
{
home-manager.users.alarsyo = {
# Keyboard settings & i3 settings
my.home.x.enable = true;
my.home.x.cursor.enable = true;
my.home.alacritty.enable = true;
my.home.emacs.enable = true;
my.home.tmux.enable = true;
my.home.starship.enable = false;
my.home.fish.enable = true;
my.theme = config.home-manager.users.alarsyo.my.themes.solarizedLight;
};
}

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
./sddm.nix
];
}

View file

@ -1,23 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.my.displayManager.sddm;
in
{
options.my.displayManager.sddm.enable = lib.mkEnableOption "SDDM setup";
config = lib.mkIf cfg.enable {
services.xserver.displayManager.sddm = {
enable = true;
theme = "sugar-candy";
};
environment.systemPackages = with pkgs; [
packages.sddm-sugar-candy
# dependencies for sugar-candy theme
libsForQt5.qt5.qtgraphicaleffects
libsForQt5.qt5.qtquickcontrols2
libsForQt5.qt5.qtsvg
];
};
}

View file

@ -1,4 +0,0 @@
{ pkgs }:
{
sddm-sugar-candy = pkgs.callPackage ./sddm-sugar-candy {};
}

View file

@ -1,51 +0,0 @@
diff --git a/theme.conf b/theme.conf
index f39fb68..8f3256d 100644
--- a/theme.conf
+++ b/theme.conf
@@ -1,6 +1,6 @@
[General]
-Background="Backgrounds/Mountain.jpg"
+Background="Backgrounds/Colorful Dune.jpg"
## Path relative to the theme root directory. Most standard image file formats are allowed including support for transparency. (e.g. background.jpeg/illustration.GIF/Foto.png/undraw.svgz)
DimBackgroundImage="0.0"
@@ -9,8 +9,8 @@ DimBackgroundImage="0.0"
ScaleImageCropped="true"
## Whether the image should be cropped when scaled proportionally. Setting this to false will fit the whole image instead, possibly leaving white space. This can be exploited beautifully with illustrations (try it with "undraw.svg" included in the theme).
-ScreenWidth="1440"
-ScreenHeight="900"
+ScreenWidth="1920"
+ScreenHeight="1080"
## Adjust to your resolution to help SDDM speed up on calculations
@@ -44,7 +44,7 @@ MainColor="white"
## Used for all elements when not focused/hovered etc. Usually the best effect is achieved by having this be either white or a very dark grey like #444 (not black for smoother antialias)
## Colors can be HEX or Qt names (e.g. red/salmon/blanchedalmond). See https://doc.qt.io/qt-5/qml-color.html
-AccentColor="#fb884f"
+AccentColor="#268bd2"
## Used for elements in focus/hover/pressed. Should be contrasting to the background and the MainColor to achieve the best effect.
BackgroundColor="#444"
@@ -84,7 +84,7 @@ ForceLastUser="true"
ForcePasswordFocus="true"
## Give automatic focus to the password field. Together with ForceLastUser this makes for the fastest login experience.
-ForceHideCompletePassword="false"
+ForceHideCompletePassword="true"
## If you don't like to see any character at all not even while being entered set this to true.
ForceHideVirtualKeyboardButton="false"
@@ -96,7 +96,8 @@ ForceHideSystemButtons="false"
AllowEmptyPassword="false"
## Enable login for users without a password. This is discouraged. Makes the login button always enabled.
-AllowBadUsernames="false"
+## set to true to not capitalize my username
+AllowBadUsernames="true"
## Do not change this! Uppercase letters are generally not allowed in usernames. This option is only for systems that differ from this standard! Also shows username as is instead of capitalized.

View file

@ -1,19 +0,0 @@
{ stdenv, fetchFromGitLab }:
stdenv.mkDerivation rec {
pname = "sddm-sugar-candy";
# latest master commit, no recent tags :(
version = "2b72ef6c6f720fe0ffde5ea5c7c48152e02f6c4f";
dontBuild = true;
installPhase = ''
mkdir -p $out/share/sddm/themes
cp -aR . $out/share/sddm/themes/sugar-candy
'';
patches = [ ./custom-conf.patch ];
src = fetchFromGitLab {
domain = "framagit.org";
owner = "MarianArlt";
repo = "sddm-sugar-candy";
rev = version;
sha256 = "sha256-XggFVsEXLYklrfy1ElkIp9fkTw4wvXbyVkaVCZq4ZLU=";
};
}