Compare commits
No commits in common. "df15e6b6c25cc835c343454a4a4ef44816af5a6f" and "8a7411c41887d92ceb2d8f68c2deb1f829259222" have entirely different histories.
df15e6b6c2
...
8a7411c418
1
.gitattributes
vendored
1
.gitattributes
vendored
|
@ -1,3 +1,2 @@
|
|||
secrets/*.secret filter=git-crypt diff=git-crypt
|
||||
secrets/wireguard.nix filter=git-crypt diff=git-crypt
|
||||
home/secrets/*.secret filter=git-crypt diff=git-crypt
|
||||
|
|
|
@ -3,17 +3,23 @@
|
|||
environment.systemPackages = with pkgs; [
|
||||
alacritty
|
||||
discord
|
||||
emacsPgtkGcc
|
||||
feh
|
||||
firefox
|
||||
flameshot
|
||||
pavucontrol
|
||||
slack
|
||||
spotify
|
||||
sqlite # needed for org-roam
|
||||
zathura
|
||||
];
|
||||
|
||||
fonts.fonts = with pkgs; [
|
||||
input-fonts
|
||||
emacs-all-the-icons-fonts
|
||||
];
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
programs.nm-applet.enable = true;
|
||||
|
||||
# NOTE: needed for home emacs configuration
|
||||
nixpkgs.config.input-fonts.acceptLicense = true;
|
||||
}
|
||||
|
|
|
@ -14,6 +14,10 @@
|
|||
AddKeysToAgent yes
|
||||
'';
|
||||
};
|
||||
tmux = {
|
||||
enable = true;
|
||||
baseIndex = 1;
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
|
|
|
@ -1,13 +1,11 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
# Default configuration
|
||||
./base
|
||||
./base/gui-programs.nix
|
||||
|
||||
# Module definitions
|
||||
./modules
|
||||
|
||||
# Service definitions
|
||||
./services
|
||||
|
||||
|
|
34
flake.lock
34
flake.lock
|
@ -2,11 +2,11 @@
|
|||
"nodes": {
|
||||
"emacs-overlay": {
|
||||
"locked": {
|
||||
"lastModified": 1619028898,
|
||||
"narHash": "sha256-OgKYwyxZA7zfdanc8RhfZ7OCHlAXHuzN6r4Q6Gjpzlk=",
|
||||
"lastModified": 1618653777,
|
||||
"narHash": "sha256-jSG1i83pmKwAx6QtkVjyCQT+/LvMEMEVeVDZcOFjRTg=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "e4778461070fb17602e71b01b8beaf7976e5f6ca",
|
||||
"rev": "905883cd5de24958bfd354c6e335f38f667e7ede",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -16,27 +16,6 @@
|
|||
"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": {
|
||||
"locked": {
|
||||
"lastModified": 1618149891,
|
||||
|
@ -55,11 +34,11 @@
|
|||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1619057301,
|
||||
"narHash": "sha256-1Y1nCnwGSQHM76KGIhz+8tOAGOT3wlP+dKjwoyQXCtg=",
|
||||
"lastModified": 1618072958,
|
||||
"narHash": "sha256-QDKj58ECixtb4EJMWV5D5Lb2xdCgab1Opi4zjQWbDOg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d235056d6d6dcbd2999bd55fd120d831d4df6304",
|
||||
"rev": "a73020b2a150322c9832b50baeb0296ba3b13dd7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -72,7 +51,6 @@
|
|||
"root": {
|
||||
"inputs": {
|
||||
"emacs-overlay": "emacs-overlay",
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||
}
|
||||
|
|
45
flake.nix
45
flake.nix
|
@ -1,37 +1,12 @@
|
|||
{
|
||||
description = "Nixos configuration with flakes";
|
||||
inputs = {
|
||||
nixpkgs = {
|
||||
type = "github";
|
||||
owner = "NixOS";
|
||||
repo = "nixpkgs";
|
||||
ref = "nixos-20.09";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-20.09";
|
||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
emacs-overlay.url = "github:nix-community/emacs-overlay/master";
|
||||
};
|
||||
|
||||
nixpkgs-unstable = {
|
||||
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 }: {
|
||||
outputs = { self, nixpkgs, nixpkgs-unstable, emacs-overlay }: {
|
||||
nixosConfigurations.poseidon = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
modules =
|
||||
|
@ -62,22 +37,10 @@
|
|||
[
|
||||
./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 = [
|
||||
emacs-overlay.overlay
|
||||
|
||||
(self: super: {
|
||||
packages = import ./pkgs { pkgs = super; };
|
||||
})
|
||||
|
||||
# uncomment this to build everything from scratch, fun but takes a
|
||||
# while
|
||||
#
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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"; };
|
||||
};
|
||||
}
|
|
@ -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
|
|
@ -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;
|
||||
};
|
||||
}
|
Binary file not shown.
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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 = {};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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 = {};
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
i3Theme = import ./i3.nix;
|
||||
i3BarTheme = import ./i3bar.nix;
|
||||
alacrittyTheme = import ./alacritty.nix;
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
};
|
||||
}
|
122
home/x/i3.nix
122
home/x/i3.nix
|
@ -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"; }; }
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -10,8 +10,6 @@ in
|
|||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
|
||||
./home.nix
|
||||
];
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
|
@ -40,7 +38,7 @@ in
|
|||
# List services that you want to enable:
|
||||
my.services = {
|
||||
wireguard = {
|
||||
enable = false;
|
||||
enable = true;
|
||||
iface = "wg";
|
||||
port = 51820;
|
||||
|
||||
|
@ -71,9 +69,12 @@ in
|
|||
layout = "fr";
|
||||
xkbVariant = "us";
|
||||
};
|
||||
};
|
||||
my.displayManager.sddm.enable = true;
|
||||
|
||||
emacs = {
|
||||
enable = true;
|
||||
package = pkgs.emacsPgtkGcc;
|
||||
};
|
||||
};
|
||||
|
||||
sound.enable = true;
|
||||
hardware.pulseaudio = {
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./sddm.nix
|
||||
];
|
||||
}
|
|
@ -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
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
{ pkgs }:
|
||||
{
|
||||
sddm-sugar-candy = pkgs.callPackage ./sddm-sugar-candy {};
|
||||
}
|
|
@ -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.
|
||||
|
||||
|
|
@ -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=";
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue