refined for my use
38
.sops.yaml
|
@ -1,46 +1,16 @@
|
|||
keys:
|
||||
# Users
|
||||
- &users:
|
||||
- &misterio 7088C7421873E0DB97FF17C2245CAB70B4C225E9
|
||||
- &gburd 6423C518273734713931CB331C4814F03CA7C161
|
||||
# Hosts
|
||||
- &hosts:
|
||||
- &atlas age1hm5lf4qk84r4wh00atn6hpts7mpdx80adq26wht2e5qh9ewvhyaszfv82d
|
||||
- &merope age1709qfrwglm75v5x8lpuhryt83k6p6c90npplzzec6a5w8ct93ejscpqpc3
|
||||
- &pleione age1j9ld6ey62hqd33xkyd2fg9362k6xhm5gavsrpsfalwpcs8smxfdqpk84a2
|
||||
- &maia age1dn7pkareh83k8el2yt4dmdfdzn7f45fuc785cnnxgzf3h4r5gqhqd4l93h
|
||||
- &alcyone age1uxvuygmvwpfjrd9d3ulg6ln8dgvaw4l2c90mw0tr72qg3n8vd9ns3dm000
|
||||
- &celaeno age1gxhy9eq38xfplay0kvkeyvsg96g0c4p6rkhajkrj8nc9dswdzqhssgvns0
|
||||
- &electra age1n06f4dcslh8xq686z2fa9ddr3yg5yzj87p727896xsm8xvusdv6qan0grl
|
||||
- &loki age1udt7tgf8pa0r278z6xwrzndg5w9jyvph8p0nycpqw3d39aal5u6skfv556
|
||||
|
||||
creation_rules:
|
||||
- path_regex: hosts/celaeno/secrets.ya?ml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *celaeno
|
||||
pgp:
|
||||
- *misterio
|
||||
- path_regex: hosts/alcyone/secrets.ya?ml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *alcyone
|
||||
pgp:
|
||||
- *misterio
|
||||
- path_regex: hosts/merope/secrets.ya?ml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *merope
|
||||
pgp:
|
||||
- *misterio
|
||||
|
||||
- path_regex: hosts/common/secrets.ya?ml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *atlas
|
||||
- *merope
|
||||
- *pleione
|
||||
- *maia
|
||||
- *alcyone
|
||||
- *celaeno
|
||||
- *electra
|
||||
- *loki
|
||||
pgp:
|
||||
- *misterio
|
||||
- *gburd
|
||||
|
|
11
NOTES
Normal file
|
@ -0,0 +1,11 @@
|
|||
* Yubikeys are great, if you use them correctly
|
||||
https://www.procustodibus.com/blog/2023/04/how-to-set-up-a-yubikey/
|
||||
* generate age public key from host's existing SSH keypair
|
||||
nix-shell -p ssh-to-age --run 'cat /etc/ssh/ssh_host_ed25519_key.pub | ssh-to-age'
|
||||
* trigger first encryption of a secrets file
|
||||
EDITOR=vi sops --config .sops.yaml --encrypt --in-place hosts/common/secrets.yaml
|
||||
* edit secrets in that file later
|
||||
|
||||
sudo nixos-rebuild switch --flake .#my-hostname
|
||||
-------
|
||||
services.pcscd.enable = true;
|
19
README.md
|
@ -4,19 +4,6 @@
|
|||
|
||||
Here's my NixOS/home-manager config files. Requires [Nix flakes](https://nixos.wiki/wiki/Flakes).
|
||||
|
||||
**Highlights**:
|
||||
|
||||
- Multiple **NixOS configurations**, including **desktop**, **laptop**, **server**
|
||||
- **Opt-in persistence** through impermanence + blank snapshotting
|
||||
- **Encrypted** single **BTRFS** partition
|
||||
- Fully **declarative** **self-hosted** stuff
|
||||
- Deployment **secrets** using **sops-nix**
|
||||
- **Mesh networked** hosts with **tailscale** and **headscale**
|
||||
- Flexible **Home Manager** Configs through **feature flags**
|
||||
- Extensively configured wayland environments (**sway** and **hyprland**) and editor (**neovim**)
|
||||
- **Declarative** **themes** and **wallpapers** with **nix-colors**
|
||||
- **Hydra CI/CD server and binary cache** that uses the **desktops as remote builders**
|
||||
|
||||
## Structure
|
||||
|
||||
- `flake.nix`: Entrypoint for hosts and home configurations. Also exposes a
|
||||
|
@ -42,10 +29,6 @@ Here's my NixOS/home-manager config files. Requires [Nix flakes](https://nixos.w
|
|||
|
||||
## About the installation
|
||||
|
||||
All my computers use a single btrfs (encrypted on all except headless systems)
|
||||
partition, with subvolumes for `/nix`, a `/persist` directory (which I opt in
|
||||
using `impermanence`), swap file, and a root subvolume (cleared on every boot).
|
||||
|
||||
Home-manager is used in a standalone way, and because of opt-in persistence is
|
||||
activated on every boot with `loginShellInit`.
|
||||
|
||||
|
@ -87,8 +70,6 @@ signing, as well as for SSH'ing around.
|
|||
|
||||
Most relevant user apps daily drivers:
|
||||
|
||||
- hyprland + swayidle + swaylock
|
||||
- waybar
|
||||
- neovim
|
||||
- fish + starship
|
||||
- kitty
|
||||
|
|
85
_flake.nix
|
@ -1,85 +0,0 @@
|
|||
{
|
||||
description = "Your new nix config";
|
||||
|
||||
inputs = {
|
||||
# Nixpkgs
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05";
|
||||
# You can access packages and modules from different nixpkgs revs
|
||||
# at the same time. Here's an working example:
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
# Also see the 'unstable-packages' overlay at 'overlays/default.nix'.
|
||||
|
||||
# Home manager
|
||||
home-manager.url = "github:nix-community/home-manager/release-23.05";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# TODO: Add any other flake you might need
|
||||
# hardware.url = "github:nixos/nixos-hardware";
|
||||
|
||||
# Shameless plug: looking for a way to nixify your themes and make
|
||||
# everything match nicely? Try nix-colors!
|
||||
# nix-colors.url = "github:misterio77/nix-colors";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, home-manager, ... }@inputs:
|
||||
let
|
||||
inherit (self) outputs;
|
||||
forAllSystems = nixpkgs.lib.genAttrs [
|
||||
"aarch64-linux"
|
||||
"i686-linux"
|
||||
"x86_64-linux"
|
||||
"aarch64-darwin"
|
||||
"x86_64-darwin"
|
||||
];
|
||||
in
|
||||
rec {
|
||||
# Your custom packages
|
||||
# Acessible through 'nix build', 'nix shell', etc
|
||||
packages = forAllSystems (system:
|
||||
let pkgs = nixpkgs.legacyPackages.${system};
|
||||
in import ./pkgs { inherit pkgs; }
|
||||
);
|
||||
# Devshell for bootstrapping
|
||||
# Acessible through 'nix develop' or 'nix-shell' (legacy)
|
||||
devShells = forAllSystems (system:
|
||||
let pkgs = nixpkgs.legacyPackages.${system};
|
||||
in import ./shell.nix { inherit pkgs; }
|
||||
);
|
||||
|
||||
# Your custom packages and modifications, exported as overlays
|
||||
overlays = import ./overlays { inherit inputs; };
|
||||
# Reusable nixos modules you might want to export
|
||||
# These are usually stuff you would upstream into nixpkgs
|
||||
nixosModules = import ./modules/nixos;
|
||||
# Reusable home-manager modules you might want to export
|
||||
# These are usually stuff you would upstream into home-manager
|
||||
homeManagerModules = import ./modules/home-manager;
|
||||
|
||||
# NixOS configuration entrypoint
|
||||
# Available through 'nixos-rebuild --flake .#your-hostname'
|
||||
nixosConfigurations = {
|
||||
# FIXME replace with your hostname
|
||||
your-hostname = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs outputs; };
|
||||
modules = [
|
||||
# > Our main nixos configuration file <
|
||||
./nixos/configuration.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# Standalone home-manager configuration entrypoint
|
||||
# Available through 'home-manager --flake .#your-username@your-hostname'
|
||||
homeConfigurations = {
|
||||
# FIXME replace with your username@hostname
|
||||
"your-username@your-hostname" = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
|
||||
extraSpecialArgs = { inherit inputs outputs; };
|
||||
modules = [
|
||||
# > Our main home-manager configuration file <
|
||||
./home-manager/home.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,63 +0,0 @@
|
|||
# This is your home-manager configuration file
|
||||
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix)
|
||||
|
||||
{ inputs, outputs, lib, config, pkgs, ... }: {
|
||||
# You can import other home-manager modules here
|
||||
imports = [
|
||||
# If you want to use modules your own flake exports (from modules/home-manager):
|
||||
# outputs.homeManagerModules.example
|
||||
|
||||
# Or modules exported from other flakes (such as nix-colors):
|
||||
# inputs.nix-colors.homeManagerModules.default
|
||||
|
||||
# You can also split up your configuration and import pieces of it here:
|
||||
# ./nvim.nix
|
||||
];
|
||||
|
||||
nixpkgs = {
|
||||
# You can add overlays here
|
||||
overlays = [
|
||||
# Add overlays your own flake exports (from overlays and pkgs dir):
|
||||
outputs.overlays.additions
|
||||
outputs.overlays.modifications
|
||||
outputs.overlays.unstable-packages
|
||||
|
||||
# You can also add overlays exported from other flakes:
|
||||
# neovim-nightly-overlay.overlays.default
|
||||
|
||||
# Or define it inline, for example:
|
||||
# (final: prev: {
|
||||
# hi = final.hello.overrideAttrs (oldAttrs: {
|
||||
# patches = [ ./change-hello-to-hi.patch ];
|
||||
# });
|
||||
# })
|
||||
];
|
||||
# Configure your nixpkgs instance
|
||||
config = {
|
||||
# Disable if you don't want unfree packages
|
||||
allowUnfree = true;
|
||||
# Workaround for https://github.com/nix-community/home-manager/issues/2942
|
||||
allowUnfreePredicate = (_: true);
|
||||
};
|
||||
};
|
||||
|
||||
# TODO: Set your username
|
||||
home = {
|
||||
username = "your-username";
|
||||
homeDirectory = "/home/your-username";
|
||||
};
|
||||
|
||||
# Add stuff for your user as you see fit:
|
||||
# programs.neovim.enable = true;
|
||||
# home.packages = with pkgs; [ steam ];
|
||||
|
||||
# Enable home-manager and git
|
||||
programs.home-manager.enable = true;
|
||||
programs.git.enable = true;
|
||||
|
||||
# Nicely reload system units when changing configs
|
||||
systemd.user.startServices = "sd-switch";
|
||||
|
||||
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
||||
home.stateVersion = "23.05";
|
||||
}
|
|
@ -1,100 +0,0 @@
|
|||
# This is your system's configuration file.
|
||||
# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix)
|
||||
|
||||
{ inputs, outputs, lib, config, pkgs, ... }: {
|
||||
# You can import other NixOS modules here
|
||||
imports = [
|
||||
# If you want to use modules your own flake exports (from modules/nixos):
|
||||
# outputs.nixosModules.example
|
||||
|
||||
# Or modules from other flakes (such as nixos-hardware):
|
||||
# inputs.hardware.nixosModules.common-cpu-amd
|
||||
# inputs.hardware.nixosModules.common-ssd
|
||||
|
||||
# You can also split up your configuration and import pieces of it here:
|
||||
# ./users.nix
|
||||
|
||||
# Import your generated (nixos-generate-config) hardware configuration
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
nixpkgs = {
|
||||
# You can add overlays here
|
||||
overlays = [
|
||||
# Add overlays your own flake exports (from overlays and pkgs dir):
|
||||
outputs.overlays.additions
|
||||
outputs.overlays.modifications
|
||||
outputs.overlays.unstable-packages
|
||||
|
||||
# You can also add overlays exported from other flakes:
|
||||
# neovim-nightly-overlay.overlays.default
|
||||
|
||||
# Or define it inline, for example:
|
||||
# (final: prev: {
|
||||
# hi = final.hello.overrideAttrs (oldAttrs: {
|
||||
# patches = [ ./change-hello-to-hi.patch ];
|
||||
# });
|
||||
# })
|
||||
];
|
||||
# Configure your nixpkgs instance
|
||||
config = {
|
||||
# Disable if you don't want unfree packages
|
||||
allowUnfree = true;
|
||||
};
|
||||
};
|
||||
|
||||
nix = {
|
||||
# This will add each flake input as a registry
|
||||
# To make nix3 commands consistent with your flake
|
||||
registry = lib.mapAttrs (_: value: { flake = value; }) inputs;
|
||||
|
||||
# This will additionally add your inputs to the system's legacy channels
|
||||
# Making legacy nix commands consistent as well, awesome!
|
||||
nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
|
||||
|
||||
settings = {
|
||||
# Enable flakes and new 'nix' command
|
||||
experimental-features = "nix-command flakes";
|
||||
# Deduplicate and optimize nix store
|
||||
auto-optimise-store = true;
|
||||
};
|
||||
};
|
||||
|
||||
# FIXME: Add the rest of your current configuration
|
||||
|
||||
# TODO: Set your hostname
|
||||
networking.hostName = "your-hostname";
|
||||
|
||||
# TODO: This is just an example, be sure to use whatever bootloader you prefer
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
|
||||
# TODO: Configure your system-wide user settings (groups, etc), add more users as needed.
|
||||
users.users = {
|
||||
# FIXME: Replace with your username
|
||||
your-username = {
|
||||
# TODO: You can set an initial password for your user.
|
||||
# If you do, you can skip setting a root password by passing '--no-root-passwd' to nixos-install.
|
||||
# Be sure to change it (using passwd) after rebooting!
|
||||
initialPassword = "correcthorsebatterystaple";
|
||||
isNormalUser = true;
|
||||
openssh.authorizedKeys.keys = [
|
||||
# TODO: Add your SSH public key(s) here, if you plan on using SSH to connect
|
||||
];
|
||||
# TODO: Be sure to add any other groups you need (such as networkmanager, audio, docker, etc)
|
||||
extraGroups = [ "wheel" ];
|
||||
};
|
||||
};
|
||||
|
||||
# This setups a SSH server. Very important if you're setting up a headless system.
|
||||
# Feel free to remove if you don't need it.
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
# Forbid root login through SSH.
|
||||
permitRootLogin = "no";
|
||||
# Use keys only. Remove if you want to SSH using password (not recommended)
|
||||
passwordAuthentication = false;
|
||||
};
|
||||
|
||||
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
||||
system.stateVersion = "23.05";
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# This is just an example, you should generate yours with nixos-generate-config and put it in here.
|
||||
{
|
||||
fileSystems."/" = {
|
||||
device = "/dev/sda1";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
# Set your system kind (needed for flakes)
|
||||
nixpkgs.hostPlatform = "x86_64-linux";
|
||||
}
|
134
flake.lock
|
@ -196,75 +196,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland": {
|
||||
"inputs": {
|
||||
"hyprland-protocols": "hyprland-protocols",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems",
|
||||
"wlroots": "wlroots",
|
||||
"xdph": "xdph"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694776019,
|
||||
"narHash": "sha256-hpkAehMA141aQyERaLlFRYSqePjS739+2eS293pJH+A=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland",
|
||||
"rev": "56adec7c1a49c079f320ba3c0c5ae3948946a9e5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-protocols": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1691753796,
|
||||
"narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprwm-contrib": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1693997747,
|
||||
"narHash": "sha256-W23nMGmDnyBgxO8O/9jcZtiSpa0taMNcRAD1das/ttw=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "contrib",
|
||||
"rev": "5b67181fced4fb06d26afcf9614b35765c576168",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "contrib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"impermanence": {
|
||||
"locked": {
|
||||
"lastModified": 1694622745,
|
||||
|
@ -420,8 +351,6 @@
|
|||
"firefox-addons": "firefox-addons",
|
||||
"hardware": "hardware",
|
||||
"home-manager": "home-manager",
|
||||
"hyprland": "hyprland",
|
||||
"hyprwm-contrib": "hyprwm-contrib",
|
||||
"impermanence": "impermanence",
|
||||
"nh": "nh",
|
||||
"nix-colors": "nix-colors",
|
||||
|
@ -453,21 +382,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1605370193,
|
||||
|
@ -482,54 +396,6 @@
|
|||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"wlroots": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"host": "gitlab.freedesktop.org",
|
||||
"lastModified": 1694302348,
|
||||
"narHash": "sha256-S9NOc88L/1jpNKJqBu2Hihvn0V1HHCK2hXE4bNBAStg=",
|
||||
"owner": "wlroots",
|
||||
"repo": "wlroots",
|
||||
"rev": "65bbbbbf0c3d6844cee3c4e294d0ba07e1f82211",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"host": "gitlab.freedesktop.org",
|
||||
"owner": "wlroots",
|
||||
"repo": "wlroots",
|
||||
"rev": "65bbbbbf0c3d6844cee3c4e294d0ba07e1f82211",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"xdph": {
|
||||
"inputs": {
|
||||
"hyprland-protocols": [
|
||||
"hyprland",
|
||||
"hyprland-protocols"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694363988,
|
||||
"narHash": "sha256-RF6LXm4J6mBF3B8VcQuABuU4g4tCPHgMYJQSoJ3DW+8=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"rev": "aca51609d4c415b30e88b96c6f49f0142cbcdae7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
|
18
flake.nix
|
@ -27,31 +27,14 @@
|
|||
inputs.nixpkgs-22_11.follows = "nixpkgs";
|
||||
inputs.nixpkgs-23_05.follows = "nixpkgs";
|
||||
};
|
||||
# nix-minecraft = {
|
||||
# url = "github:misterio77/nix-minecraft";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
# };
|
||||
firefly = {
|
||||
url = "github:timhae/firefly";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
hyprland = {
|
||||
url = "github:hyprwm/hyprland";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
hyprwm-contrib = {
|
||||
url = "github:hyprwm/contrib";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
firefox-addons = {
|
||||
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# disconic.url = "github:misterio77/disconic";
|
||||
# website.url = "github:misterio77/website";
|
||||
# paste-misterio-me.url = "github:misterio77/paste.misterio.me";
|
||||
# yrmos.url = "github:misterio77/yrmos";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, home-manager, ... }@inputs:
|
||||
|
@ -66,7 +49,6 @@
|
|||
inherit lib;
|
||||
nixosModules = import ./modules/nixos;
|
||||
homeManagerModules = import ./modules/home-manager;
|
||||
# templates = import ./templates;
|
||||
|
||||
overlays = import ./overlays { inherit inputs outputs; };
|
||||
hydraJobs = import ./hydra.nix { inherit inputs outputs; };
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, ... }: {
|
||||
{ pkgs, lib, config, ... }: {
|
||||
imports = [
|
||||
./bash.nix
|
||||
./bat.nix
|
||||
|
@ -24,13 +24,13 @@
|
|||
bc # Calculator
|
||||
bottom # System viewer
|
||||
ncdu # TUI disk usage
|
||||
eza # Better ls
|
||||
exa # Better ls
|
||||
ripgrep # Better grep
|
||||
fd # Better find
|
||||
curl # cURL
|
||||
httpie # Better curl
|
||||
diffsitter # Better diff
|
||||
jq # JSON pretty printer and manipulator
|
||||
trekscii # Cute startrek cli printer
|
||||
timer # To help with my ADHD paralysis
|
||||
|
||||
nil # Nix LSP
|
||||
|
|
|
@ -9,6 +9,6 @@
|
|||
};
|
||||
};
|
||||
home.persistence = {
|
||||
"/persist/home/misterio".directories = [ ".config/gh" ];
|
||||
"/persist/home/gburd".directories = [ ".config/gh" ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ let
|
|||
ssh = "${pkgs.openssh}/bin/ssh";
|
||||
|
||||
git-m7 = pkgs.writeShellScriptBin "git-m7" ''
|
||||
repo="$(git remote -v | grep git@m7.rs | head -1 | cut -d ':' -f2 | cut -d ' ' -f1)"
|
||||
repo="$(git remote -v | grep git@burd.me | head -1 | cut -d ':' -f2 | cut -d ' ' -f1)"
|
||||
# Add a .git suffix if it's missing
|
||||
if [[ "$repo" != *".git" ]]; then
|
||||
repo="$repo.git"
|
||||
|
@ -14,15 +14,15 @@ let
|
|||
echo "You must specify a name for the repo"
|
||||
exit 1
|
||||
fi
|
||||
${ssh} -A git@m7.rs << EOF
|
||||
${ssh} -A git@burd.me << EOF
|
||||
git init --bare "$2.git"
|
||||
git -C "$2.git" branch -m main
|
||||
EOF
|
||||
git remote add origin git@m7.rs:"$2.git"
|
||||
git remote add origin git@burd.me:"$2.git"
|
||||
elif [ "$1" == "ls" ]; then
|
||||
${ssh} -A git@m7.rs ls
|
||||
${ssh} -A git@burd.me ls
|
||||
else
|
||||
${ssh} -A git@m7.rs git -C "/srv/git/$repo" $@
|
||||
${ssh} -A git@burd.me git -C "/srv/git/$repo" $@
|
||||
fi
|
||||
'';
|
||||
in
|
||||
|
@ -37,11 +37,11 @@ in
|
|||
add-nowhitespace = "!git diff -U0 -w --no-color | git apply --cached --ignore-whitespace --unidiff-zero -";
|
||||
fast-forward = "merge --ff-only";
|
||||
};
|
||||
userName = "Gabriel Fontes";
|
||||
userEmail = "hi@m7.rs";
|
||||
userName = "Greg Burd";
|
||||
userEmail = "gburd@symas.com";
|
||||
extraConfig = {
|
||||
init.defaultBranch = "main";
|
||||
user.signing.key = "CE707A2C17FAAC97907FF8EF2E54EA7BFE630916";
|
||||
user.signing.key = "1FC1E7793410DE46";
|
||||
commit.gpgSign = true;
|
||||
gpg.program = "${config.programs.gpg.package}/bin/gpg2";
|
||||
};
|
||||
|
|
|
@ -12,10 +12,10 @@ in
|
|||
{
|
||||
home.packages = pinentry.packages;
|
||||
|
||||
services.gpg-agent = {
|
||||
services.gpg-agent = { #TODO: gnupg vs gpg-agent ?
|
||||
enable = true;
|
||||
enableSshSupport = true;
|
||||
sshKeys = [ "149F16412997785363112F3DBD713BC91D51B831" ];
|
||||
# sshKeys = [ "149F16412997785363112F3DBD713BC91D51B831" ];
|
||||
pinentryFlavor = pinentry.name;
|
||||
enableExtraSocket = true;
|
||||
};
|
||||
|
|
|
@ -15,13 +15,13 @@ in
|
|||
}];
|
||||
};
|
||||
trusted = lib.hm.dag.entryBefore [ "net" ] {
|
||||
host = "m7.rs *.m7.rs *.ts.m7.rs";
|
||||
host = "burd.me *.burd.me *.ts.burd.me";
|
||||
forwardAgent = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home.persistence = {
|
||||
"/persist/home/misterio".directories = [ ".ssh" ];
|
||||
"/persist/home/gburd".directories = [ ".ssh" ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
programs.xpo = {
|
||||
enable = true;
|
||||
defaultServer = "m7.rs";
|
||||
defaultServer = "burd.me";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -12,5 +12,6 @@
|
|||
./qt.nix
|
||||
./slack.nix
|
||||
./sublime-music.nix
|
||||
./protonmail-bridge.nix
|
||||
];
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ in {
|
|||
home.packages = with pkgs; [ discord discocss ];
|
||||
|
||||
home.persistence = {
|
||||
"/persist/home/misterio".directories = [ ".config/discord" ];
|
||||
"/persist/home/gburd".directories = [ ".config/discord" ];
|
||||
};
|
||||
|
||||
xdg.configFile."discocss/custom.css".text = ''
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
programs.browserpass.enable = true;
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
profiles.misterio = {
|
||||
profiles.gburd = {
|
||||
bookmarks = { };
|
||||
extensions = with pkgs.inputs.firefox-addons; [
|
||||
ublock-origin
|
||||
browserpass
|
||||
keybase
|
||||
tampermonkey
|
||||
proton-pass
|
||||
onetab
|
||||
];
|
||||
bookmarks = { };
|
||||
settings = {
|
||||
|
@ -18,7 +20,7 @@
|
|||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||
"browser.shell.checkDefaultBrowser" = false;
|
||||
"browser.shell.defaultBrowserCheckCount" = 1;
|
||||
"browser.startup.homepage" = "https://start.duckduckgo.com";
|
||||
"browser.startup.homepage" = "https://kagi.com";
|
||||
"browser.uiCustomization.state" = ''{"placements":{"widget-overflow-fixed-list":[],"nav-bar":["back-button","forward-button","stop-reload-button","home-button","urlbar-container","downloads-button","library-button","ublock0_raymondhill_net-browser-action","_testpilot-containers-browser-action"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["tabbrowser-tabs","new-tab-button","alltabs-button"],"PersonalToolbar":["import-button","personal-bookmarks"]},"seen":["save-to-pocket-button","developer-button","ublock0_raymondhill_net-browser-action","_testpilot-containers-browser-action"],"dirtyAreaCache":["nav-bar","PersonalToolbar","toolbar-menubar","TabsToolbar","widget-overflow-fixed-list"],"currentVersion":18,"newElementCount":4}'';
|
||||
"dom.security.https_only_mode" = true;
|
||||
"identity.fxaccounts.enabled" = false;
|
||||
|
@ -31,7 +33,7 @@
|
|||
home = {
|
||||
persistence = {
|
||||
# Not persisting is safer
|
||||
# "/persist/home/misterio".directories = [ ".mozilla/firefox" ];
|
||||
# "/persist/home/gburd".directories = [ ".mozilla/firefox" ];
|
||||
};
|
||||
};
|
||||
|
||||
|
|
36
home/gburd/features/desktop/common/gnome-wm/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
gtk3 # For gtk-launch
|
||||
xdg-utils-spawn-terminal # Patched to open terminal
|
||||
];
|
||||
|
||||
# environment.gnome.excludePackages = (with pkgs; [
|
||||
# gnome-photos
|
||||
# gnome-tour
|
||||
# ]) ++ (with pkgs.gnome; [
|
||||
# cheese # webcam tool
|
||||
# gnome-music
|
||||
# gedit # text editor
|
||||
# epiphany # web browser
|
||||
# geary # email reader
|
||||
# gnome-characters
|
||||
# tali # poker game
|
||||
# iagno # go game
|
||||
# hitori # sudoku game
|
||||
# atomix # puzzle game
|
||||
# yelp # Help view
|
||||
# gnome-contacts
|
||||
# gnome-initial-setup
|
||||
# ]);
|
||||
# programs.dconf.enable = true;
|
||||
# environment.systemPackages = with pkgs; [
|
||||
# gnome.gnome-tweaks
|
||||
# ]
|
||||
# };
|
||||
|
||||
home.sessionVariables = {
|
||||
};
|
||||
}
|
|
@ -41,6 +41,6 @@ in
|
|||
};
|
||||
|
||||
home.persistence = {
|
||||
"/persist/home/misterio".directories = [ ".config/kdeconnect" ];
|
||||
"/persist/home/gburd".directories = [ ".config/kdeconnect" ];
|
||||
};
|
||||
}
|
||||
|
|
4
home/gburd/features/desktop/common/protonmail-bridge.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = [ pkgs.protonmail-bridge ];
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{ pkgs, lib, ... }: {
|
||||
home.packages = [ pkgs.sublime-music ];
|
||||
home.persistence = {
|
||||
"/persist/home/misterio".directories = [ ".config/sublime-music" ];
|
||||
"/persist/home/gburd".directories = [ ".config/sublime-music" ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
./hyprland-vnc.nix
|
||||
./gammastep.nix
|
||||
./kitty.nix
|
||||
./mako.nix
|
||||
./qutebrowser.nix
|
||||
./swayidle.nix
|
||||
./swaylock.nix
|
||||
./waybar.nix
|
||||
./wofi.nix
|
||||
./zathura.nix
|
||||
];
|
||||
|
||||
xdg.mimeApps.enable = true;
|
||||
home.packages = with pkgs; [
|
||||
grim
|
||||
gtk3 # For gtk-launch
|
||||
imv
|
||||
mimeo
|
||||
primary-xwayland
|
||||
pulseaudio
|
||||
slurp
|
||||
waypipe
|
||||
wf-recorder
|
||||
wl-clipboard
|
||||
wl-mirror
|
||||
wl-mirror-pick
|
||||
xdg-utils-spawn-terminal # Patched to open terminal
|
||||
ydotool
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
MOZ_ENABLE_WAYLAND = 1;
|
||||
QT_QPA_PLATFORM = "wayland";
|
||||
LIBSEAT_BACKEND = "logind";
|
||||
};
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
services.gammastep = {
|
||||
enable = true;
|
||||
provider = "geoclue2";
|
||||
temperature = {
|
||||
day = 6000;
|
||||
night = 4600;
|
||||
};
|
||||
settings = {
|
||||
general.adjustment-method = "wayland";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
let
|
||||
enabledMonitors = lib.filter (m: m.enabled) config.monitors;
|
||||
# A nice VNC script for remotes running hyprland
|
||||
vncsh = pkgs.writeShellScriptBin "vnc.sh" ''
|
||||
ssh $1 bash <<'EOF'
|
||||
pgrep "wayvnc" && exit
|
||||
export HYPRLAND_INSTANCE_SIGNATURE="$(ls /tmp/hypr/ -lt | head -2 | tail -1 | rev | cut -d ' ' -f1 | rev)"
|
||||
export WAYLAND_DISPLAY="wayland-1"
|
||||
ip="$(ip addr show dev tailscale0 | grep 'inet ' | xargs | cut -d ' ' -f2 | cut -d '/' -f1)"
|
||||
xpos="$(hyprctl monitors -j | jq -r 'sort_by(.x)[-1] | .x + .width')"
|
||||
|
||||
${lib.concatLines (lib.forEach enabledMonitors (m: ''
|
||||
hyprctl output create headless
|
||||
monitor="$(hyprctl monitors -j | jq -r 'map(.name)[-1]')"
|
||||
hyprctl keyword monitor $monitor,${toString m.width}x${toString m.height}@${toString m.refreshRate},$(($xpos + ${toString m.x}))x${toString m.y},1
|
||||
screen -d -m wayvnc -k br -S /tmp/vnc-${m.workspace} -f 60 -o $monitor $ip 590${m.workspace}
|
||||
sudo iptables -I INPUT -j ACCEPT -p tcp --dport 590${m.workspace}
|
||||
''))}
|
||||
EOF
|
||||
|
||||
${lib.concatLines (lib.forEach enabledMonitors (m: ''
|
||||
vncviewer $1::590${m.workspace} &
|
||||
''))}
|
||||
|
||||
wait
|
||||
'';
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
vncsh
|
||||
wayvnc
|
||||
tigervnc
|
||||
];
|
||||
}
|
|
@ -1,66 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (config.colorscheme) colors;
|
||||
kitty-xterm = pkgs.writeShellScriptBin "xterm" ''
|
||||
${config.programs.kitty.package}/bin/kitty -1 "$@"
|
||||
'';
|
||||
in
|
||||
{
|
||||
home = {
|
||||
packages = [ kitty-xterm ];
|
||||
sessionVariables = {
|
||||
TERMINAL = "kitty -1";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
font = {
|
||||
name = config.fontProfiles.monospace.family;
|
||||
size = 12;
|
||||
};
|
||||
settings = {
|
||||
shell_integration = "no-rc"; # I prefer to do it manually
|
||||
scrollback_lines = 4000;
|
||||
scrollback_pager_history_size = 2048;
|
||||
window_padding_width = 15;
|
||||
foreground = "#${colors.base05}";
|
||||
background = "#${colors.base00}";
|
||||
selection_background = "#${colors.base05}";
|
||||
selection_foreground = "#${colors.base00}";
|
||||
url_color = "#${colors.base04}";
|
||||
cursor = "#${colors.base05}";
|
||||
active_border_color = "#${colors.base03}";
|
||||
inactive_border_color = "#${colors.base01}";
|
||||
active_tab_background = "#${colors.base00}";
|
||||
active_tab_foreground = "#${colors.base05}";
|
||||
inactive_tab_background = "#${colors.base01}";
|
||||
inactive_tab_foreground = "#${colors.base04}";
|
||||
tab_bar_background = "#${colors.base01}";
|
||||
color0 = "#${colors.base00}";
|
||||
color1 = "#${colors.base08}";
|
||||
color2 = "#${colors.base0B}";
|
||||
color3 = "#${colors.base0A}";
|
||||
color4 = "#${colors.base0D}";
|
||||
color5 = "#${colors.base0E}";
|
||||
color6 = "#${colors.base0C}";
|
||||
color7 = "#${colors.base05}";
|
||||
color8 = "#${colors.base03}";
|
||||
color9 = "#${colors.base08}";
|
||||
color10 = "#${colors.base0B}";
|
||||
color11 = "#${colors.base0A}";
|
||||
color12 = "#${colors.base0D}";
|
||||
color13 = "#${colors.base0E}";
|
||||
color14 = "#${colors.base0C}";
|
||||
color15 = "#${colors.base07}";
|
||||
color16 = "#${colors.base09}";
|
||||
color17 = "#${colors.base0F}";
|
||||
color18 = "#${colors.base01}";
|
||||
color19 = "#${colors.base02}";
|
||||
color20 = "#${colors.base04}";
|
||||
color21 = "#${colors.base06}";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
{ config, ... }:
|
||||
let inherit (config.colorscheme) colors kind;
|
||||
in {
|
||||
services.mako = {
|
||||
enable = true;
|
||||
iconPath =
|
||||
if kind == "dark" then
|
||||
"${config.gtk.iconTheme.package}/share/icons/Papirus-Dark"
|
||||
else
|
||||
"${config.gtk.iconTheme.package}/share/icons/Papirus-Light";
|
||||
font = "${config.fontProfiles.regular.family} 12";
|
||||
padding = "10,20";
|
||||
anchor = "top-center";
|
||||
width = 400;
|
||||
height = 150;
|
||||
borderSize = 2;
|
||||
defaultTimeout = 12000;
|
||||
backgroundColor = "#${colors.base00}dd";
|
||||
borderColor = "#${colors.base03}dd";
|
||||
textColor = "#${colors.base05}dd";
|
||||
layer = "overlay";
|
||||
};
|
||||
}
|
|
@ -1,177 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
let inherit (config.colorscheme) colors kind;
|
||||
in
|
||||
{
|
||||
home.persistence = {
|
||||
"/persist/home/misterio".directories = [
|
||||
".config/qutebrowser/bookmarks"
|
||||
".config/qutebrowser/greasemonkey"
|
||||
".local/share/qutebrowser"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
|
||||
xdg.mimeApps.defaultApplications = {
|
||||
"text/html" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
||||
"text/xml" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
||||
"x-scheme-handler/http" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
||||
"x-scheme-handler/https" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
||||
"x-scheme-handler/qute" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
||||
};
|
||||
|
||||
|
||||
programs.qutebrowser = {
|
||||
enable = true;
|
||||
loadAutoconfig = true;
|
||||
settings = {
|
||||
editor.command = [ "xdg-open" "{file}" ];
|
||||
tabs = {
|
||||
show = "multiple";
|
||||
position = "left";
|
||||
tree_tabs = true;
|
||||
};
|
||||
fonts = {
|
||||
default_family = config.fontProfiles.regular.family;
|
||||
default_size = "12pt";
|
||||
};
|
||||
colors = {
|
||||
webpage = {
|
||||
preferred_color_scheme = kind;
|
||||
bg = "#ffffff";
|
||||
};
|
||||
completion = {
|
||||
fg = "#${colors.base05}";
|
||||
match.fg = "#${colors.base09}";
|
||||
even.bg = "#${colors.base00}";
|
||||
odd.bg = "#${colors.base00}";
|
||||
scrollbar = {
|
||||
bg = "#${colors.base00}";
|
||||
fg = "#${colors.base05}";
|
||||
};
|
||||
category = {
|
||||
bg = "#${colors.base00}";
|
||||
fg = "#${colors.base0D}";
|
||||
border = {
|
||||
bottom = "#${colors.base00}";
|
||||
top = "#${colors.base00}";
|
||||
};
|
||||
};
|
||||
item.selected = {
|
||||
bg = "#${colors.base02}";
|
||||
fg = "#${colors.base05}";
|
||||
match.fg = "#${colors.base05}";
|
||||
border = {
|
||||
bottom = "#${colors.base02}";
|
||||
top = "#${colors.base02}";
|
||||
};
|
||||
};
|
||||
};
|
||||
contextmenu = {
|
||||
disabled = {
|
||||
bg = "#${colors.base01}";
|
||||
fg = "#${colors.base04}";
|
||||
};
|
||||
menu = {
|
||||
bg = "#${colors.base00}";
|
||||
fg = "#${colors.base05}";
|
||||
};
|
||||
selected = {
|
||||
bg = "#${colors.base02}";
|
||||
fg = "#${colors.base05}";
|
||||
};
|
||||
};
|
||||
downloads = {
|
||||
bar.bg = "#${colors.base00}";
|
||||
error.fg = "#${colors.base08}";
|
||||
start = {
|
||||
bg = "#${colors.base0D}";
|
||||
fg = "#${colors.base00}";
|
||||
};
|
||||
stop = {
|
||||
bg = "#${colors.base0C}";
|
||||
fg = "#${colors.base00}";
|
||||
};
|
||||
};
|
||||
hints = {
|
||||
bg = "#${colors.base0A}";
|
||||
fg = "#${colors.base00}";
|
||||
match.fg = "#${colors.base05}";
|
||||
};
|
||||
keyhint = {
|
||||
bg = "#${colors.base00}";
|
||||
fg = "#${colors.base05}";
|
||||
suffix.fg = "#${colors.base05}";
|
||||
};
|
||||
messages = {
|
||||
error.bg = "#${colors.base08}";
|
||||
error.border = "#${colors.base08}";
|
||||
error.fg = "#${colors.base00}";
|
||||
info.bg = "#${colors.base00}";
|
||||
info.border = "#${colors.base00}";
|
||||
info.fg = "#${colors.base05}";
|
||||
warning.bg = "#${colors.base0E}";
|
||||
warning.border = "#${colors.base0E}";
|
||||
warning.fg = "#${colors.base00}";
|
||||
};
|
||||
prompts = {
|
||||
bg = "#${colors.base00}";
|
||||
fg = "#${colors.base05}";
|
||||
border = "#${colors.base00}";
|
||||
selected.bg = "#${colors.base02}";
|
||||
};
|
||||
statusbar = {
|
||||
caret.bg = "#${colors.base00}";
|
||||
caret.fg = "#${colors.base0D}";
|
||||
caret.selection.bg = "#${colors.base00}";
|
||||
caret.selection.fg = "#${colors.base0D}";
|
||||
command.bg = "#${colors.base01}";
|
||||
command.fg = "#${colors.base04}";
|
||||
command.private.bg = "#${colors.base01}";
|
||||
command.private.fg = "#${colors.base0E}";
|
||||
insert.bg = "#${colors.base00}";
|
||||
insert.fg = "#${colors.base0C}";
|
||||
normal.bg = "#${colors.base00}";
|
||||
normal.fg = "#${colors.base05}";
|
||||
passthrough.bg = "#${colors.base00}";
|
||||
passthrough.fg = "#${colors.base0A}";
|
||||
private.bg = "#${colors.base00}";
|
||||
private.fg = "#${colors.base0E}";
|
||||
progress.bg = "#${colors.base0D}";
|
||||
url.error.fg = "#${colors.base08}";
|
||||
url.fg = "#${colors.base05}";
|
||||
url.hover.fg = "#${colors.base09}";
|
||||
url.success.http.fg = "#${colors.base0B}";
|
||||
url.success.https.fg = "#${colors.base0B}";
|
||||
url.warn.fg = "#${colors.base0E}";
|
||||
};
|
||||
tabs = {
|
||||
bar.bg = "#${colors.base00}";
|
||||
even.bg = "#${colors.base00}";
|
||||
even.fg = "#${colors.base05}";
|
||||
indicator.error = "#${colors.base08}";
|
||||
indicator.start = "#${colors.base0D}";
|
||||
indicator.stop = "#${colors.base0C}";
|
||||
odd.bg = "#${colors.base00}";
|
||||
odd.fg = "#${colors.base05}";
|
||||
pinned.even.bg = "#${colors.base0B}";
|
||||
pinned.even.fg = "#${colors.base00}";
|
||||
pinned.odd.bg = "#${colors.base0B}";
|
||||
pinned.odd.fg = "#${colors.base00}";
|
||||
pinned.selected.even.bg = "#${colors.base02}";
|
||||
pinned.selected.even.fg = "#${colors.base05}";
|
||||
pinned.selected.odd.bg = "#${colors.base02}";
|
||||
pinned.selected.odd.fg = "#${colors.base05}";
|
||||
selected.even.bg = "#${colors.base02}";
|
||||
selected.even.fg = "#${colors.base05}";
|
||||
selected.odd.bg = "#${colors.base02}";
|
||||
selected.odd.fg = "#${colors.base05}";
|
||||
};
|
||||
};
|
||||
};
|
||||
extraConfig = ''
|
||||
c.tabs.padding = {"bottom": 10, "left": 10, "right": 10, "top": 10}
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
|
||||
let
|
||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
||||
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
||||
hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
|
||||
swaymsg = "${config.wayland.windowManager.sway.package}/bin/swaymsg";
|
||||
|
||||
isLocked = "${pgrep} -x ${swaylock}";
|
||||
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 = { timeout, command, resumeCommand ? null }: [
|
||||
{ timeout = lockTime + timeout; inherit command resumeCommand; }
|
||||
{ command = "${isLocked} && ${command}"; inherit resumeCommand timeout; }
|
||||
];
|
||||
in
|
||||
{
|
||||
services.swayidle = {
|
||||
enable = true;
|
||||
systemdTarget = "graphical-session.target";
|
||||
timeouts =
|
||||
# Lock screen
|
||||
[{
|
||||
timeout = lockTime;
|
||||
command = "${swaylock} -i ${config.wallpaper} --daemonize";
|
||||
}] ++
|
||||
# Mute mic
|
||||
(afterLockTimeout {
|
||||
timeout = 10;
|
||||
command = "${pactl} set-source-mute @DEFAULT_SOURCE@ yes";
|
||||
resumeCommand = "${pactl} set-source-mute @DEFAULT_SOURCE@ no";
|
||||
}) ++
|
||||
# Turn off RGB
|
||||
(lib.optionals config.services.rgbdaemon.enable (afterLockTimeout {
|
||||
timeout = 20;
|
||||
command = "systemctl --user stop rgbdaemon";
|
||||
resumeCommand = "systemctl --user start rgbdaemon";
|
||||
})) ++
|
||||
# Turn off displays (hyprland)
|
||||
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
|
||||
timeout = 40;
|
||||
command = "${hyprctl} dispatch dpms off";
|
||||
resumeCommand = "${hyprctl} dispatch dpms on";
|
||||
})) ++
|
||||
# Turn off displays (sway)
|
||||
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
|
||||
timeout = 40;
|
||||
command = "${swaymsg} 'output * dpms off'";
|
||||
resumeCommand = "${swaymsg} 'output * dpms on'";
|
||||
}));
|
||||
};
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
let inherit (config.colorscheme) colors;
|
||||
in
|
||||
{
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
package = pkgs.swaylock-effects;
|
||||
settings = {
|
||||
effect-blur = "20x3";
|
||||
fade-in = 0.1;
|
||||
|
||||
font = config.fontProfiles.regular.family;
|
||||
font-size = 15;
|
||||
|
||||
line-uses-inside = true;
|
||||
disable-caps-lock-text = true;
|
||||
indicator-caps-lock = true;
|
||||
indicator-radius = 40;
|
||||
indicator-idle-visible = true;
|
||||
indicator-y-position = 1000;
|
||||
|
||||
ring-color = "#${colors.base02}";
|
||||
inside-wrong-color = "#${colors.base08}";
|
||||
ring-wrong-color = "#${colors.base08}";
|
||||
key-hl-color = "#${colors.base0B}";
|
||||
bs-hl-color = "#${colors.base08}";
|
||||
ring-ver-color = "#${colors.base09}";
|
||||
inside-ver-color = "#${colors.base09}";
|
||||
inside-color = "#${colors.base01}";
|
||||
text-color = "#${colors.base07}";
|
||||
text-clear-color = "#${colors.base01}";
|
||||
text-ver-color = "#${colors.base01}";
|
||||
text-wrong-color = "#${colors.base01}";
|
||||
text-caps-lock-color = "#${colors.base07}";
|
||||
inside-clear-color = "#${colors.base0C}";
|
||||
ring-clear-color = "#${colors.base0C}";
|
||||
inside-caps-lock-color = "#${colors.base09}";
|
||||
ring-caps-lock-color = "#${colors.base02}";
|
||||
separator-color = "#${colors.base02}";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,392 +0,0 @@
|
|||
{ outputs, config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
# Dependencies
|
||||
cat = "${pkgs.coreutils}/bin/cat";
|
||||
cut = "${pkgs.coreutils}/bin/cut";
|
||||
find = "${pkgs.findutils}/bin/find";
|
||||
grep = "${pkgs.gnugrep}/bin/grep";
|
||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
||||
tail = "${pkgs.coreutils}/bin/tail";
|
||||
wc = "${pkgs.coreutils}/bin/wc";
|
||||
xargs = "${pkgs.findutils}/bin/xargs";
|
||||
timeout = "${pkgs.coreutils}/bin/timeout";
|
||||
ping = "${pkgs.iputils}/bin/ping";
|
||||
|
||||
jq = "${pkgs.jq}/bin/jq";
|
||||
gamemoded = "${pkgs.gamemode}/bin/gamemoded";
|
||||
systemctl = "${pkgs.systemd}/bin/systemctl";
|
||||
journalctl = "${pkgs.systemd}/bin/journalctl";
|
||||
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
||||
playerctld = "${pkgs.playerctl}/bin/playerctld";
|
||||
pavucontrol = "${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
wofi = "${pkgs.wofi}/bin/wofi";
|
||||
|
||||
# Function to simplify making waybar outputs
|
||||
jsonOutput = name: { pre ? "", text ? "", tooltip ? "", alt ? "", class ? "", percentage ? "" }: "${pkgs.writeShellScriptBin "waybar-${name}" ''
|
||||
set -euo pipefail
|
||||
${pre}
|
||||
${jq} -cn \
|
||||
--arg text "${text}" \
|
||||
--arg tooltip "${tooltip}" \
|
||||
--arg alt "${alt}" \
|
||||
--arg class "${class}" \
|
||||
--arg percentage "${percentage}" \
|
||||
'{text:$text,tooltip:$tooltip,alt:$alt,class:$class,percentage:$percentage}'
|
||||
''}/bin/waybar-${name}";
|
||||
in
|
||||
{
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
package = pkgs.waybar.overrideAttrs (oa: {
|
||||
mesonFlags = (oa.mesonFlags or [ ]) ++ [ "-Dexperimental=true" ];
|
||||
});
|
||||
systemd.enable = true;
|
||||
settings = {
|
||||
primary = {
|
||||
mode = "dock";
|
||||
layer = "top";
|
||||
height = 40;
|
||||
margin = "6";
|
||||
position = "top";
|
||||
modules-left = [
|
||||
"custom/menu"
|
||||
] ++ (lib.optionals config.wayland.windowManager.sway.enable [
|
||||
"sway/workspaces"
|
||||
"sway/mode"
|
||||
]) ++ (lib.optionals config.wayland.windowManager.hyprland.enable [
|
||||
"hyprland/workspaces"
|
||||
"hyprland/submap"
|
||||
]) ++ [
|
||||
"custom/currentplayer"
|
||||
"custom/player"
|
||||
];
|
||||
|
||||
modules-center = [
|
||||
"pulseaudio"
|
||||
"battery"
|
||||
"clock"
|
||||
"custom/unread-mail"
|
||||
"custom/gpg-agent"
|
||||
];
|
||||
|
||||
modules-right = [
|
||||
"network"
|
||||
"custom/tailscale-ping"
|
||||
"custom/gamemode"
|
||||
# TODO: currently broken for some reason
|
||||
# "custom/gammastep"
|
||||
"tray"
|
||||
"custom/hostname"
|
||||
];
|
||||
|
||||
clock = {
|
||||
interval = 1;
|
||||
format = "{:%d/%m %H:%M:%S}";
|
||||
format-alt = "{:%Y-%m-%d %H:%M:%S %z}";
|
||||
on-click-left = "mode";
|
||||
tooltip-format = ''
|
||||
<big>{:%Y %B}</big>
|
||||
<tt><small>{calendar}</small></tt>'';
|
||||
};
|
||||
pulseaudio = {
|
||||
format = "{icon} {volume}%";
|
||||
format-muted = " 0%";
|
||||
format-icons = {
|
||||
headphone = "";
|
||||
headset = "";
|
||||
portable = "";
|
||||
default = [ "" "" "" ];
|
||||
};
|
||||
on-click = pavucontrol;
|
||||
};
|
||||
idle_inhibitor = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
activated = "";
|
||||
deactivated = "";
|
||||
};
|
||||
};
|
||||
battery = {
|
||||
bat = "BAT0";
|
||||
interval = 10;
|
||||
format-icons = [ "" "" "" "" "" "" "" "" "" "" ];
|
||||
format = "{icon} {capacity}%";
|
||||
format-charging = " {capacity}%";
|
||||
onclick = "";
|
||||
};
|
||||
"sway/window" = {
|
||||
max-length = 20;
|
||||
};
|
||||
network = {
|
||||
interval = 3;
|
||||
format-wifi = " {essid}";
|
||||
format-ethernet = " Connected";
|
||||
format-disconnected = "";
|
||||
tooltip-format = ''
|
||||
{ifname}
|
||||
{ipaddr}/{cidr}
|
||||
Up: {bandwidthUpBits}
|
||||
Down: {bandwidthDownBits}'';
|
||||
on-click = "";
|
||||
};
|
||||
"custom/tailscale-ping" = {
|
||||
interval = 10;
|
||||
return-type = "json";
|
||||
exec =
|
||||
let
|
||||
inherit (builtins) concatStringsSep attrNames;
|
||||
hosts = attrNames outputs.nixosConfigurations;
|
||||
homeMachine = "merope";
|
||||
remoteMachine = "alcyone";
|
||||
in
|
||||
jsonOutput "tailscale-ping" {
|
||||
# Build variables for each host
|
||||
pre = ''
|
||||
set -o pipefail
|
||||
${concatStringsSep "\n" (map (host: ''
|
||||
ping_${host}="$(${timeout} 2 ${ping} -c 1 -q ${host} 2>/dev/null | ${tail} -1 | ${cut} -d '/' -f5 | ${cut} -d '.' -f1)ms" || ping_${host}="Disconnected"
|
||||
'') hosts)}
|
||||
'';
|
||||
# Access a remote machine's and a home machine's ping
|
||||
text = " $ping_${remoteMachine} / $ping_${homeMachine}";
|
||||
# Show pings from all machines
|
||||
tooltip = concatStringsSep "\n" (map (host: "${host}: $ping_${host}") hosts);
|
||||
};
|
||||
format = "{}";
|
||||
on-click = "";
|
||||
};
|
||||
"custom/menu" = {
|
||||
return-type = "json";
|
||||
exec = jsonOutput "menu" {
|
||||
text = "";
|
||||
tooltip = ''$(${cat} /etc/os-release | ${grep} PRETTY_NAME | ${cut} -d '"' -f2)'';
|
||||
};
|
||||
on-click = "${wofi} -S drun -x 10 -y 10 -W 25% -H 60%";
|
||||
};
|
||||
"custom/hostname" = {
|
||||
exec = "echo $USER@$HOSTNAME";
|
||||
};
|
||||
"custom/unread-mail" = {
|
||||
interval = 5;
|
||||
return-type = "json";
|
||||
exec = jsonOutput "unread-mail" {
|
||||
pre = ''
|
||||
count=$(${find} ~/Mail/*/Inbox/new -type f | ${wc} -l)
|
||||
if ${pgrep} mbsync &>/dev/null; then
|
||||
status="syncing"
|
||||
else if [ "$count" == "0" ]; then
|
||||
status="read"
|
||||
else
|
||||
status="unread"
|
||||
fi
|
||||
fi
|
||||
'';
|
||||
text = "$count";
|
||||
alt = "$status";
|
||||
};
|
||||
format = "{icon} ({})";
|
||||
format-icons = {
|
||||
"read" = "";
|
||||
"unread" = "";
|
||||
"syncing" = "";
|
||||
};
|
||||
};
|
||||
"custom/gpg-agent" = {
|
||||
interval = 2;
|
||||
return-type = "json";
|
||||
exec =
|
||||
let gpgCmds = import ../../../cli/gpg-commands.nix { inherit pkgs; };
|
||||
in
|
||||
jsonOutput "gpg-agent" {
|
||||
pre = ''status=$(${gpgCmds.isUnlocked} && echo "unlocked" || echo "locked")'';
|
||||
alt = "$status";
|
||||
tooltip = "GPG is $status";
|
||||
};
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
"locked" = "";
|
||||
"unlocked" = "";
|
||||
};
|
||||
on-click = "";
|
||||
};
|
||||
"custom/gamemode" = {
|
||||
exec-if = "${gamemoded} --status | ${grep} 'is active' -q";
|
||||
interval = 2;
|
||||
return-type = "json";
|
||||
exec = jsonOutput "gamemode" {
|
||||
tooltip = "Gamemode is active";
|
||||
};
|
||||
format = " ";
|
||||
};
|
||||
"custom/gammastep" = {
|
||||
interval = 5;
|
||||
return-type = "json";
|
||||
exec = jsonOutput "gammastep" {
|
||||
pre = ''
|
||||
if unit_status="$(${systemctl} --user is-active gammastep)"; then
|
||||
status="$unit_status ($(${journalctl} --user -u gammastep.service -g 'Period: ' | ${tail} -1 | ${cut} -d ':' -f6 | ${xargs}))"
|
||||
else
|
||||
status="$unit_status"
|
||||
fi
|
||||
'';
|
||||
alt = "\${status:-inactive}";
|
||||
tooltip = "Gammastep is $status";
|
||||
};
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
"activating" = " ";
|
||||
"deactivating" = " ";
|
||||
"inactive" = "? ";
|
||||
"active (Night)" = " ";
|
||||
"active (Nighttime)" = " ";
|
||||
"active (Transition (Night)" = " ";
|
||||
"active (Transition (Nighttime)" = " ";
|
||||
"active (Day)" = " ";
|
||||
"active (Daytime)" = " ";
|
||||
"active (Transition (Day)" = " ";
|
||||
"active (Transition (Daytime)" = " ";
|
||||
};
|
||||
on-click = "${systemctl} --user is-active gammastep && ${systemctl} --user stop gammastep || ${systemctl} --user start gammastep";
|
||||
};
|
||||
"custom/currentplayer" = {
|
||||
interval = 2;
|
||||
return-type = "json";
|
||||
exec = jsonOutput "currentplayer" {
|
||||
pre = ''
|
||||
player="$(${playerctl} status -f "{{playerName}}" 2>/dev/null || echo "No player active" | ${cut} -d '.' -f1)"
|
||||
count="$(${playerctl} -l | ${wc} -l)"
|
||||
if ((count > 1)); then
|
||||
more=" +$((count - 1))"
|
||||
else
|
||||
more=""
|
||||
fi
|
||||
'';
|
||||
alt = "$player";
|
||||
tooltip = "$player ($count available)";
|
||||
text = "$more";
|
||||
};
|
||||
format = "{icon}{}";
|
||||
format-icons = {
|
||||
"No player active" = " ";
|
||||
"Celluloid" = " ";
|
||||
"spotify" = " ";
|
||||
"ncspot" = " ";
|
||||
"qutebrowser" = " ";
|
||||
"firefox" = " ";
|
||||
"discord" = " ";
|
||||
"sublimemusic" = " ";
|
||||
"kdeconnect" = " ";
|
||||
"chromium" = " ";
|
||||
};
|
||||
on-click = "${playerctld} shift";
|
||||
on-click-right = "${playerctld} unshift";
|
||||
};
|
||||
"custom/player" = {
|
||||
exec-if = "${playerctl} status";
|
||||
exec = ''${playerctl} metadata --format '{"text": "{{title}} - {{artist}}", "alt": "{{status}}", "tooltip": "{{title}} - {{artist}} ({{album}})"}' '';
|
||||
return-type = "json";
|
||||
interval = 2;
|
||||
max-length = 30;
|
||||
format = "{icon} {}";
|
||||
format-icons = {
|
||||
"Playing" = "";
|
||||
"Paused" = " ";
|
||||
"Stopped" = "";
|
||||
};
|
||||
on-click = "${playerctl} play-pause";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
# Cheatsheet:
|
||||
# x -> all sides
|
||||
# x y -> vertical, horizontal
|
||||
# x y z -> top, horizontal, bottom
|
||||
# w x y z -> top, right, bottom, left
|
||||
style = let inherit (config.colorscheme) colors; in /* css */ ''
|
||||
* {
|
||||
font-family: ${config.fontProfiles.regular.family}, ${config.fontProfiles.monospace.family};
|
||||
font-size: 12pt;
|
||||
padding: 0 8px;
|
||||
}
|
||||
|
||||
.modules-right {
|
||||
margin-right: -15px;
|
||||
}
|
||||
|
||||
.modules-left {
|
||||
margin-left: -15px;
|
||||
}
|
||||
|
||||
window#waybar.top {
|
||||
opacity: 0.95;
|
||||
padding: 0;
|
||||
background-color: #${colors.base00};
|
||||
border: 2px solid #${colors.base0C};
|
||||
border-radius: 10px;
|
||||
}
|
||||
window#waybar.bottom {
|
||||
opacity: 0.90;
|
||||
background-color: #${colors.base00};
|
||||
border: 2px solid #${colors.base0C};
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
color: #${colors.base05};
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
background-color: #${colors.base01};
|
||||
color: #${colors.base05};
|
||||
padding: 5px 1px;
|
||||
margin: 3px 0;
|
||||
}
|
||||
#workspaces button.hidden {
|
||||
background-color: #${colors.base00};
|
||||
color: #${colors.base04};
|
||||
}
|
||||
#workspaces button.focused,
|
||||
#workspaces button.active {
|
||||
background-color: #${colors.base0A};
|
||||
color: #${colors.base00};
|
||||
}
|
||||
|
||||
#clock {
|
||||
background-color: #${colors.base0C};
|
||||
color: #${colors.base00};
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#custom-menu {
|
||||
background-color: #${colors.base0C};
|
||||
color: #${colors.base00};
|
||||
padding-left: 15px;
|
||||
padding-right: 22px;
|
||||
margin: 0;
|
||||
border-radius: 10px;
|
||||
}
|
||||
#custom-hostname {
|
||||
background-color: #${colors.base0C};
|
||||
color: #${colors.base00};
|
||||
padding-left: 15px;
|
||||
padding-right: 18px;
|
||||
margin-right: 0;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
border-radius: 10px;
|
||||
}
|
||||
#custom-currentplayer {
|
||||
padding-right: 0;
|
||||
}
|
||||
#tray {
|
||||
color: #${colors.base05};
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (config) colorscheme;
|
||||
inherit (colorscheme) colors;
|
||||
in
|
||||
{
|
||||
programs.wezterm = {
|
||||
enable = true;
|
||||
colorSchemes = {
|
||||
"${colorscheme.slug}" = {
|
||||
foreground = "#${colors.base05}";
|
||||
background = "#${colors.base00}";
|
||||
|
||||
ansi = [
|
||||
"#${colors.base08}"
|
||||
"#${colors.base09}"
|
||||
"#${colors.base0A}"
|
||||
"#${colors.base0B}"
|
||||
"#${colors.base0C}"
|
||||
"#${colors.base0D}"
|
||||
"#${colors.base0E}"
|
||||
"#${colors.base0F}"
|
||||
];
|
||||
brights = [
|
||||
"#${colors.base00}"
|
||||
"#${colors.base01}"
|
||||
"#${colors.base02}"
|
||||
"#${colors.base03}"
|
||||
"#${colors.base04}"
|
||||
"#${colors.base05}"
|
||||
"#${colors.base06}"
|
||||
"#${colors.base07}"
|
||||
];
|
||||
cursor_fg = "#${colors.base00}";
|
||||
cursor_bg = "#${colors.base05}";
|
||||
selection_fg = "#${colors.base00}";
|
||||
selection_bg = "#${colors.base05}";
|
||||
};
|
||||
};
|
||||
extraConfig = /* lua */ ''
|
||||
return {
|
||||
font = wezterm.font("${config.fontProfiles.monospace.family}"),
|
||||
font_size = 12.0,
|
||||
color_scheme = "${colorscheme.slug}",
|
||||
hide_tab_bar_if_only_one_tab = true,
|
||||
window_close_confirmation = "NeverPrompt",
|
||||
set_environment_variables = {
|
||||
TERM = 'wezterm',
|
||||
},
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
--- a/src/wofi.c Mon Feb 22 23:53:57 2021 -0800
|
||||
+++ b/src/wofi.c Wed Aug 11 13:49:13 2021 -0300
|
||||
@@ -881,12 +881,15 @@
|
||||
}
|
||||
|
||||
void wofi_term_run(const char* cmd) {
|
||||
+ char *shell = getenv("SHELL");
|
||||
+ if (!shell) shell = "sh";
|
||||
+
|
||||
if(terminal != NULL) {
|
||||
- execlp(terminal, terminal, "-e", cmd, NULL);
|
||||
+ execlp(terminal, terminal, "-e", shell, "-c", cmd, NULL);
|
||||
}
|
||||
size_t term_count = sizeof(terminals) / sizeof(char*);
|
||||
for(size_t count = 0; count < term_count; ++count) {
|
||||
- execlp(terminals[count], terminals[count], "-e", cmd, NULL);
|
||||
+ execlp(terminals[count], terminals[count], "-e", shell, "-c", cmd, NULL);
|
||||
}
|
||||
fprintf(stderr, "No terminal emulator found please set term in config or use --term\n");
|
||||
exit(1);
|
|
@ -1,25 +0,0 @@
|
|||
{ config, lib, pkgs, ... }: {
|
||||
programs.wofi = {
|
||||
enable = true;
|
||||
package = pkgs.wofi.overrideAttrs (oa: {
|
||||
patches = (oa.patches or [ ]) ++ [
|
||||
./wofi-run-shell.patch # Fix for https://todo.sr.ht/~scoopta/wofi/174
|
||||
];
|
||||
});
|
||||
settings = {
|
||||
image_size = 48;
|
||||
columns = 3;
|
||||
allow_images = true;
|
||||
insensitive = true;
|
||||
run-always_parse_args = true;
|
||||
run-cache_file = "/dev/null";
|
||||
run-exec_search = true;
|
||||
};
|
||||
};
|
||||
|
||||
home.packages =
|
||||
let
|
||||
inherit (config.programs.password-store) package enable;
|
||||
in
|
||||
lib.optional enable (pkgs.pass-wofi.override { pass = package; });
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{ config, ... }:
|
||||
let inherit (config.colorscheme) colors;
|
||||
in {
|
||||
programs.zathura = {
|
||||
enable = true;
|
||||
options = {
|
||||
selection-clipboard = "clipboard";
|
||||
font = "${config.fontProfiles.regular.family} 12";
|
||||
recolor = true;
|
||||
default-bg = "#${colors.base00}";
|
||||
default-fg = "#${colors.base01}";
|
||||
statusbar-bg = "#${colors.base02}";
|
||||
statusbar-fg = "#${colors.base04}";
|
||||
inputbar-bg = "#${colors.base00}";
|
||||
inputbar-fg = "#${colors.base07}";
|
||||
notification-bg = "#${colors.base00}";
|
||||
notification-fg = "#${colors.base07}";
|
||||
notification-error-bg = "#${colors.base00}";
|
||||
notification-error-fg = "#${colors.base08}";
|
||||
notification-warning-bg = "#${colors.base00}";
|
||||
notification-warning-fg = "#${colors.base08}";
|
||||
highlight-color = "#${colors.base0A}";
|
||||
highlight-active-color = "#${colors.base0D}";
|
||||
completion-bg = "#${colors.base01}";
|
||||
completion-fg = "#${colors.base05}";
|
||||
completions-highlight-bg = "#${colors.base0D}";
|
||||
completions-highlight-fg = "#${colors.base07}";
|
||||
recolor-lightcolor = "#${colors.base00}";
|
||||
recolor-darkcolor = "#${colors.base06}";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,3 +1,16 @@
|
|||
{
|
||||
imports = [ ../common ];
|
||||
{ lib, config, pkgs, ... }: {
|
||||
imports = [
|
||||
../common
|
||||
../common/gnome-wm
|
||||
|
||||
./tty-init.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
firefox
|
||||
emacs
|
||||
ungoogled-chromium
|
||||
gnupg
|
||||
pinentry
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,70 +0,0 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
workspaces =
|
||||
(map toString (lib.range 0 9)) ++
|
||||
(map (n: "F${toString n}") (lib.range 1 12));
|
||||
# Map keys to hyprland directions
|
||||
directions = rec {
|
||||
left = "l"; right = "r"; up = "u"; down = "d";
|
||||
h = left; l = right; k = up; j = down;
|
||||
};
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
bindm = [
|
||||
"SUPER,mouse:272,movewindow"
|
||||
"SUPER,mouse:273,resizewindow"
|
||||
];
|
||||
|
||||
bind = [
|
||||
"SUPERSHIFT,q,killactive"
|
||||
"SUPERSHIFT,e,exit"
|
||||
|
||||
"SUPER,s,togglesplit"
|
||||
"SUPER,f,fullscreen,1"
|
||||
"SUPERSHIFT,f,fullscreen,0"
|
||||
"SUPERSHIFT,space,togglefloating"
|
||||
|
||||
"SUPER,minus,splitratio,-0.25"
|
||||
"SUPERSHIFT,minus,splitratio,-0.3333333"
|
||||
|
||||
"SUPER,equal,splitratio,0.25"
|
||||
"SUPERSHIFT,equal,splitratio,0.3333333"
|
||||
|
||||
"SUPER,g,togglegroup"
|
||||
"SUPER,t,lockactivegroup,toggle"
|
||||
"SUPER,apostrophe,changegroupactive,f"
|
||||
"SUPERSHIFT,apostrophe,changegroupactive,b"
|
||||
|
||||
"SUPER,u,togglespecialworkspace"
|
||||
"SUPERSHIFT,u,movetoworkspace,special"
|
||||
] ++
|
||||
# Change workspace
|
||||
(map (n:
|
||||
"SUPER,${n},workspace,name:${n}"
|
||||
) workspaces) ++
|
||||
# Move window to workspace
|
||||
(map (n:
|
||||
"SUPERSHIFT,${n},movetoworkspacesilent,name:${n}"
|
||||
) workspaces) ++
|
||||
# Move focus
|
||||
(lib.mapAttrsToList (key: direction:
|
||||
"SUPER,${key},movefocus,${direction}"
|
||||
) directions) ++
|
||||
# Swap windows
|
||||
(lib.mapAttrsToList (key: direction:
|
||||
"SUPERSHIFT,${key},swapwindow,${direction}"
|
||||
) directions) ++
|
||||
# Move windows
|
||||
(lib.mapAttrsToList (key: direction:
|
||||
"SUPERCONTROL,${key},movewindoworgroup,${direction}"
|
||||
) directions) ++
|
||||
# Move monitor focus
|
||||
(lib.mapAttrsToList (key: direction:
|
||||
"SUPERALT,${key},focusmonitor,${direction}"
|
||||
) directions) ++
|
||||
# Move workspace to other monitor
|
||||
(lib.mapAttrsToList (key: direction:
|
||||
"SUPERALTSHIFT,${key},movecurrentworkspacetomonitor,${direction}"
|
||||
) directions);
|
||||
};
|
||||
}
|
|
@ -1,187 +0,0 @@
|
|||
{ lib, config, pkgs, ... }: {
|
||||
imports = [
|
||||
../common
|
||||
../common/wayland-wm
|
||||
|
||||
./tty-init.nix
|
||||
./basic-binds.nix
|
||||
./systemd-fixes.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
inputs.hyprwm-contrib.grimblast
|
||||
hyprslurp
|
||||
hyprpicker
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
package = pkgs.inputs.hyprland.hyprland;
|
||||
|
||||
settings = {
|
||||
general = {
|
||||
gaps_in = 15;
|
||||
gaps_out = 20;
|
||||
border_size = 2.7;
|
||||
cursor_inactive_timeout = 4;
|
||||
"col.active_border" = "0xff${config.colorscheme.colors.base0C}";
|
||||
"col.inactive_border" = "0xff${config.colorscheme.colors.base02}";
|
||||
"col.group_border_active" = "0xff${config.colorscheme.colors.base0B}";
|
||||
"col.group_border" = "0xff${config.colorscheme.colors.base04}";
|
||||
};
|
||||
input = {
|
||||
kb_layout = "br,us";
|
||||
touchpad.disable_while_typing = false;
|
||||
};
|
||||
dwindle.split_width_multiplier = 1.35;
|
||||
misc.vfr = "on";
|
||||
|
||||
decoration = {
|
||||
active_opacity = 0.94;
|
||||
inactive_opacity = 0.84;
|
||||
fullscreen_opacity = 1.0;
|
||||
rounding = 5;
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 5;
|
||||
passes = 3;
|
||||
new_optimizations = true;
|
||||
ignore_opacity = true;
|
||||
};
|
||||
drop_shadow = true;
|
||||
shadow_range = 12;
|
||||
shadow_offset = "3 3";
|
||||
"col.shadow" = "0x44000000";
|
||||
"col.shadow_inactive" = "0x66000000";
|
||||
};
|
||||
animations = {
|
||||
enabled = true;
|
||||
bezier = [
|
||||
"easein,0.11, 0, 0.5, 0"
|
||||
"easeout,0.5, 1, 0.89, 1"
|
||||
"easeinback,0.36, 0, 0.66, -0.56"
|
||||
"easeoutback,0.34, 1.56, 0.64, 1"
|
||||
];
|
||||
|
||||
animation = [
|
||||
"windowsIn,1,3,easeoutback,slide"
|
||||
"windowsOut,1,3,easeinback,slide"
|
||||
"windowsMove,1,3,easeoutback"
|
||||
"workspaces,1,2,easeoutback,slide"
|
||||
"fadeIn,1,3,easeout"
|
||||
"fadeOut,1,3,easein"
|
||||
"fadeSwitch,1,3,easeout"
|
||||
"fadeShadow,1,3,easeout"
|
||||
"fadeDim,1,3,easeout"
|
||||
"border,1,3,easeout"
|
||||
];
|
||||
};
|
||||
|
||||
exec = [
|
||||
"${pkgs.swaybg}/bin/swaybg -i ${config.wallpaper} --mode fill"
|
||||
];
|
||||
|
||||
bind = let
|
||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
||||
playerctl = "${config.services.playerctld.package}/bin/playerctl";
|
||||
playerctld = "${config.services.playerctld.package}/bin/playerctld";
|
||||
makoctl = "${config.services.mako.package}/bin/makoctl";
|
||||
wofi = "${config.programs.wofi.package}/bin/wofi";
|
||||
pass-wofi = "${pkgs.pass-wofi.override {
|
||||
pass = config.programs.password-store.package;
|
||||
}}/bin/pass-wofi";
|
||||
|
||||
grimblast = "${pkgs.inputs.hyprwm-contrib.grimblast}/bin/grimblast";
|
||||
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
||||
tly = "${pkgs.tly}/bin/tly";
|
||||
gtk-play = "${pkgs.libcanberra-gtk3}/bin/canberra-gtk-play";
|
||||
notify-send = "${pkgs.libnotify}/bin/notify-send";
|
||||
|
||||
gtk-launch = "${pkgs.gtk3}/bin/gtk-launch";
|
||||
xdg-mime = "${pkgs.xdg-utils}/bin/xdg-mime";
|
||||
defaultApp = type: "${gtk-launch} $(${xdg-mime} query default ${type})";
|
||||
|
||||
terminal = config.home.sessionVariables.TERMINAL;
|
||||
browser = defaultApp "x-scheme-handler/https";
|
||||
editor = defaultApp "text/plain";
|
||||
in [
|
||||
# Program bindings
|
||||
"SUPER,Return,exec,${terminal}"
|
||||
"SUPER,e,exec,${editor}"
|
||||
"SUPER,v,exec,${editor}"
|
||||
"SUPER,b,exec,${browser}"
|
||||
# Brightness control (only works if the system has lightd)
|
||||
",XF86MonBrightnessUp,exec,light -A 10"
|
||||
",XF86MonBrightnessDown,exec,light -U 10"
|
||||
# Volume
|
||||
",XF86AudioRaiseVolume,exec,${pactl} set-sink-volume @DEFAULT_SINK@ +5%"
|
||||
",XF86AudioLowerVolume,exec,${pactl} set-sink-volume @DEFAULT_SINK@ -5%"
|
||||
",XF86AudioMute,exec,${pactl} set-sink-mute @DEFAULT_SINK@ toggle"
|
||||
"SHIFT,XF86AudioMute,exec,${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"
|
||||
",XF86AudioMicMute,exec,${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"
|
||||
# Screenshotting
|
||||
",Print,exec,${grimblast} --notify --freeze copy output"
|
||||
"SHIFT,Print,exec,${grimblast} --notify --freeze copy active"
|
||||
"CONTROL,Print,exec,${grimblast} --notify --freeze copy screen"
|
||||
"SUPER,Print,exec,${grimblast} --notify --freeze copy area"
|
||||
"ALT,Print,exec,${grimblast} --notify --freeze copy area"
|
||||
# Tally counter
|
||||
"SUPER,z,exec,${notify-send} -t 1000 $(${tly} time) && ${tly} add && ${gtk-play} -i dialog-information" # Add new entry
|
||||
"SUPERCONTROL,z,exec,${notify-send} -t 1000 $(${tly} time) && ${tly} undo && ${gtk-play} -i dialog-warning" # Undo last entry
|
||||
"SUPERCONTROLSHIFT,z,exec,${tly} reset && ${gtk-play} -i complete" # Reset
|
||||
"SUPERSHIFT,z,exec,${notify-send} -t 1000 $(${tly} time)" # Show current time
|
||||
] ++
|
||||
|
||||
(lib.optionals config.services.playerctld.enable [
|
||||
# Media control
|
||||
",XF86AudioNext,exec,${playerctl} next"
|
||||
",XF86AudioPrev,exec,${playerctl} previous"
|
||||
",XF86AudioPlay,exec,${playerctl} play-pause"
|
||||
",XF86AudioStop,exec,${playerctl} stop"
|
||||
"ALT,XF86AudioNext,exec,${playerctld} shift"
|
||||
"ALT,XF86AudioPrev,exec,${playerctld} unshift"
|
||||
"ALT,XF86AudioPlay,exec,systemctl --user restart playerctld"
|
||||
]) ++
|
||||
# Screen lock
|
||||
(lib.optionals config.programs.swaylock.enable [
|
||||
",XF86Launch5,exec,${swaylock} -i ${config.wallpaper}"
|
||||
",XF86Launch4,exec,${swaylock} -i ${config.wallpaper}"
|
||||
"SUPER,backspace,exec,${swaylock} -i ${config.wallpaper}"
|
||||
]) ++
|
||||
# Notification manager
|
||||
(lib.optionals config.services.mako.enable [
|
||||
"SUPER,w,exec,${makoctl} dismiss"
|
||||
]) ++
|
||||
|
||||
# Launcher
|
||||
(lib.optionals config.programs.wofi.enable [
|
||||
"SUPER,x,exec,${wofi} -S drun -x 10 -y 10 -W 25% -H 60%"
|
||||
"SUPER,d,exec,${wofi} -S run"
|
||||
] ++ (lib.optionals config.programs.password-store.enable [
|
||||
",Scroll_Lock,exec,${pass-wofi}" # fn+k
|
||||
",XF86Calculator,exec,${pass-wofi}" # fn+f12
|
||||
"SUPER,semicolon,exec,pass-wofi"
|
||||
]));
|
||||
|
||||
monitor = map (m: let
|
||||
resolution = "${toString m.width}x${toString m.height}@${toString m.refreshRate}";
|
||||
position = "${toString m.x}x${toString m.y}";
|
||||
in
|
||||
"${m.name},${if m.enabled then "${resolution},${position},1" else "disable"}"
|
||||
) (config.monitors);
|
||||
|
||||
workspace = map (m:
|
||||
"${m.name},${m.workspace}"
|
||||
) (lib.filter (m: m.enabled && m.workspace != null) config.monitors);
|
||||
|
||||
};
|
||||
# This is order sensitive, so it has to come here.
|
||||
extraConfig = ''
|
||||
# Passthrough mode (e.g. for VNC)
|
||||
bind=SUPER,P,submap,passthrough
|
||||
submap=passthrough
|
||||
bind=SUPER,P,submap,reset
|
||||
submap=reset
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.wayland.windowManager.hyprland;
|
||||
in
|
||||
{
|
||||
config = lib.mkIf (cfg.enable && cfg.systemdIntegration) {
|
||||
# Stolen from https://github.com/alebastr/sway-systemd/commit/0fdb2c4b10beb6079acd6073c5b3014bd58d3b74
|
||||
systemd.user.targets.hyprland-session-shutdown = {
|
||||
Unit = {
|
||||
Description = "Shutdown running Hyprland session";
|
||||
DefaultDependencies = "no";
|
||||
StopWhenUnneeded = "true";
|
||||
|
||||
Conflicts = [
|
||||
"graphical-session.target"
|
||||
"graphical-session-pre.target"
|
||||
"hyprland-session.target"
|
||||
];
|
||||
After = [
|
||||
"graphical-session.target"
|
||||
"graphical-session-pre.target"
|
||||
"hyprland-session.target"
|
||||
];
|
||||
};
|
||||
};
|
||||
wayland.windowManager.hyprland.settings.bind = lib.mkAfter [
|
||||
"SUPERSHIFT,e,exec,systemctl --user start hyprland-session-shutdown.target; hyprctl dispatch exit"
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,9 +1,6 @@
|
|||
{ pkgs, ... }: {
|
||||
imports = [
|
||||
./lutris.nix
|
||||
./steam.nix
|
||||
./prism-launcher.nix
|
||||
./runescape.nix
|
||||
# ./steam.nix
|
||||
];
|
||||
home.packages = with pkgs; [ gamescope ];
|
||||
}
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
{ lib, pkgs, ... }: {
|
||||
home = {
|
||||
packages = [ pkgs.factorio ];
|
||||
persistence = {
|
||||
"/persist/home/misterio" = {
|
||||
allowOther = true;
|
||||
directories = [ ".factorio" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{ pkgs, lib, ... }: {
|
||||
home.packages = [ pkgs.lutris ];
|
||||
|
||||
home.persistence = {
|
||||
"/persist/home/misterio" = {
|
||||
allowOther = true;
|
||||
directories = [
|
||||
{
|
||||
# Use symlink, as games may be IO-heavy
|
||||
directory = "Games/Lutris";
|
||||
method = "symlink";
|
||||
}
|
||||
".config/lutris"
|
||||
".local/share/lutris"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
{ pkgs, lib, ... }: {
|
||||
home.packages = [ pkgs.osu-lazer ];
|
||||
|
||||
home.persistence = {
|
||||
"/persist/home/misterio".directories = [ ".local/share/osu" ];
|
||||
};
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
{ pkgs, lib, ... }: {
|
||||
home.packages = [ pkgs.prismlauncher-qt5 ];
|
||||
|
||||
home.persistence = {
|
||||
"/persist/home/misterio".directories = [ ".local/share/PrismLauncher" ];
|
||||
};
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
# Add PULSE_LATENCY_MSEC to .desktop file
|
||||
pulse_latency = 100;
|
||||
runescape = pkgs.runescape.overrideAttrs (oa: {
|
||||
nativeBuildInputs = (oa.nativeBuildInputs or []) ++ [
|
||||
pkgs.makeWrapper
|
||||
];
|
||||
buildCommand = (oa.buildCommand or "") + ''
|
||||
wrapProgram "$out/bin/RuneScape" \
|
||||
--set PULSE_LATENCY_MSEC ${toString pulse_latency} \
|
||||
--run 'echo $PULSE_LATENCY_MSEC'
|
||||
'';
|
||||
});
|
||||
openssl = lib.head (lib.filter (p: p.pname == "openssl") runescape.fhsenv.targetPaths);
|
||||
in {
|
||||
home.packages = [
|
||||
runescape
|
||||
pkgs.hdos
|
||||
pkgs.runelite
|
||||
];
|
||||
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
openssl.name
|
||||
];
|
||||
|
||||
home.persistence = {
|
||||
"/persist/home/misterio" = {
|
||||
allowOther = true;
|
||||
directories = [
|
||||
"Jagex"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -34,7 +34,7 @@ in
|
|||
protontricks
|
||||
];
|
||||
home.persistence = {
|
||||
"/persist/home/misterio" = {
|
||||
"/persist/home/gburd" = {
|
||||
allowOther = true;
|
||||
directories = [
|
||||
".factorio"
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
{ pkgs, lib, ... }: {
|
||||
home.packages = [ pkgs.yuzu-mainline ];
|
||||
|
||||
home.persistence = {
|
||||
"/persist/home/misterio" = {
|
||||
allowOther = true;
|
||||
directories = [ "Games/Yuzu" ".config/yuzu" ".local/share/yuzu" ];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -12,6 +12,6 @@
|
|||
};
|
||||
|
||||
home.persistence = {
|
||||
"/persist/home/misterio".directories = [ ".password-store" ];
|
||||
"/persist/home/gburd".directories = [ ".password-store" ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -5,9 +5,9 @@ let
|
|||
pass = "${config.programs.password-store.package}/bin/pass";
|
||||
|
||||
common = rec {
|
||||
realName = "Gabriel Fontes";
|
||||
realName = "Greg Burd";
|
||||
gpg = {
|
||||
key = "7088 C742 1873 E0DB 97FF 17C2 245C AB70 B4C2 25E9";
|
||||
key = "D4BB42BE729AEFBD2EFEBF8822931AF7895E82DF";
|
||||
signByDefault = true;
|
||||
};
|
||||
signature = {
|
||||
|
@ -15,7 +15,7 @@ let
|
|||
text = ''
|
||||
${realName}
|
||||
|
||||
https://gsfontes.com
|
||||
https://burd.me
|
||||
PGP: ${gpg.key}
|
||||
'';
|
||||
};
|
||||
|
@ -23,7 +23,7 @@ let
|
|||
in
|
||||
{
|
||||
home.persistence = {
|
||||
"/persist/home/misterio".directories = [ "Mail" ];
|
||||
"/persist/home/gburd".directories = [ "Mail" ];
|
||||
};
|
||||
|
||||
accounts.email = {
|
||||
|
@ -31,11 +31,11 @@ in
|
|||
accounts = {
|
||||
personal = rec {
|
||||
primary = true;
|
||||
address = "hi@m7.rs";
|
||||
aliases = ["gabriel@gsfontes.com" "eu@misterio.me"];
|
||||
address = "greg@burd.me";
|
||||
aliases = ["gregburd@gmail.com"];
|
||||
passwordCommand = "${pass} ${smtp.host}/${address}";
|
||||
|
||||
imap.host = "mail.m7.rs";
|
||||
imap.host = "mail.burd.me";
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "maildir";
|
||||
|
@ -53,25 +53,16 @@ in
|
|||
};
|
||||
|
||||
msmtp.enable = true;
|
||||
smtp.host = "mail.m7.rs";
|
||||
smtp.host = "mail.burd.me";
|
||||
userName = address;
|
||||
} // common;
|
||||
|
||||
college = rec {
|
||||
address = "g.fontes@usp.br";
|
||||
passwordCommand = "${pass} ${smtp.host}/${address}";
|
||||
|
||||
msmtp.enable = true;
|
||||
smtp.host = "smtp.gmail.com";
|
||||
userName = address;
|
||||
} // common;
|
||||
|
||||
zoocha = rec {
|
||||
address = "gabriel@zoocha.com";
|
||||
symas = rec {
|
||||
address = "gburd@symas.com";
|
||||
passwordCommand = "${pass} ${smtp.host}/${address}";
|
||||
|
||||
/* TODO: add imap (conditionally)
|
||||
imap.host = "imap.gmail.com";
|
||||
imap.host = "symas.zmailcloud.com";
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "maildir";
|
||||
|
@ -87,7 +78,7 @@ in
|
|||
*/
|
||||
|
||||
msmtp.enable = true;
|
||||
smtp.host = "smtp.gmail.com";
|
||||
smtp.host = "symas.zmailcloud.com";
|
||||
userName = address;
|
||||
} // common;
|
||||
};
|
||||
|
|
|
@ -6,7 +6,7 @@ in
|
|||
home.packages = with pkgs; [ vdirsyncer ];
|
||||
|
||||
home.persistence = {
|
||||
"/persist/home/misterio".directories =
|
||||
"/persist/home/gburd".directories =
|
||||
[ "Calendars" "Contacts" ".local/share/vdirsyncer" ];
|
||||
};
|
||||
|
||||
|
@ -27,9 +27,9 @@ in
|
|||
|
||||
[storage contacts_remote]
|
||||
type = "carddav"
|
||||
url = "https://dav.m7.rs"
|
||||
username = "hi@m7.rs"
|
||||
password.fetch = ["command", "${pass}", "mail.m7.rs/hi@m7.rs"]
|
||||
url = "https://dav.burd.me"
|
||||
username = "greg@burd.me"
|
||||
password.fetch = ["command", "${pass}", "mail.burd.m/greg@burd.me"]
|
||||
|
||||
[pair calendars]
|
||||
a = "calendars_local"
|
||||
|
@ -45,9 +45,9 @@ in
|
|||
|
||||
[storage calendars_remote]
|
||||
type = "caldav"
|
||||
url = "https://dav.m7.rs"
|
||||
username = "hi@m7.rs"
|
||||
password.fetch = ["command", "${pass}", "mail.m7.rs/hi@m7.rs"]
|
||||
url = "https://dav.burd.me"
|
||||
username = "greg@burd.me"
|
||||
password.fetch = ["command", "${pass}", "mail.burd.me/greg@burd.me"]
|
||||
'';
|
||||
|
||||
systemd.user.services.vdirsyncer = {
|
||||
|
|
|
@ -35,16 +35,16 @@ in
|
|||
};
|
||||
|
||||
home = {
|
||||
username = lib.mkDefault "misterio";
|
||||
username = lib.mkDefault "gburd";
|
||||
homeDirectory = lib.mkDefault "/home/${config.home.username}";
|
||||
stateVersion = lib.mkDefault "22.05";
|
||||
stateVersion = lib.mkDefault "23.05";
|
||||
sessionPath = [ "$HOME/.local/bin" ];
|
||||
sessionVariables = {
|
||||
FLAKE = "$HOME/Documents/NixConfig";
|
||||
};
|
||||
|
||||
persistence = {
|
||||
"/persist/home/misterio" = {
|
||||
"/persist/home/gburd" = {
|
||||
directories = [
|
||||
"Documents"
|
||||
"Downloads"
|
||||
|
@ -57,19 +57,4 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
colorscheme = lib.mkDefault colorSchemes.dracula;
|
||||
wallpaper =
|
||||
let
|
||||
largest = f: xs: builtins.head (builtins.sort (a: b: a > b) (map f xs));
|
||||
largestWidth = largest (x: x.width) config.monitors;
|
||||
largestHeight = largest (x: x.height) config.monitors;
|
||||
in
|
||||
lib.mkDefault (nixWallpaperFromScheme
|
||||
{
|
||||
scheme = config.colorscheme;
|
||||
width = largestWidth;
|
||||
height = largestHeight;
|
||||
logoScale = 4;
|
||||
});
|
||||
home.file.".colorscheme".text = config.colorscheme.slug;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{
|
||||
imports = [
|
||||
./global
|
||||
./features/desktop/hyprland
|
||||
./features/desktop/gnome
|
||||
./features/desktop/wireless
|
||||
./features/productivity
|
||||
./features/pass
|
||||
|
@ -12,11 +12,11 @@
|
|||
wallpaper = outputs.wallpapers.aenami-lunar;
|
||||
colorscheme = inputs.nix-colors.colorSchemes.atelier-heath;
|
||||
|
||||
monitors = [{
|
||||
name = "eDP-1";
|
||||
width = 1920;
|
||||
height = 1080;
|
||||
workspace = "1";
|
||||
primary = true;
|
||||
}];
|
||||
# monitors = [{
|
||||
# name = "eDP-1";
|
||||
# width = 1920;
|
||||
# height = 1080;
|
||||
# workspace = "1";
|
||||
# primary = true;
|
||||
# }];
|
||||
}
|
||||
|
|
|
@ -1,246 +1,63 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Comment: 7088 C742 1873 E0DB 97FF 17C2 245C AB70 B4C2 25E9
|
||||
Comment: Gabriel Fontes <hi@m7.rs>
|
||||
Comment: Gabriel Fontes <gabriel@gsfontes.com>
|
||||
Comment: Gabriel Fontes <eu@misterio.me>
|
||||
Comment: Gabriel Fontes <g.fontes@usp.br>
|
||||
Comment: Gabriel Fontes <gabriel@gelos.club>
|
||||
Comment: Gabriel Fontes <gabriel.fontes@uget.express>
|
||||
Comment: Gabriel Fontes <gabriel@zoocha.com>
|
||||
Version: GnuPG v1
|
||||
|
||||
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
|
||||
hE153xNWk2EOBnLil7/HLhWR2huCZO1DPozhJyz7suh9FGuIj/wA0X6Z8c4J7rXg
|
||||
Hr0ZPm7YutvEFIYtrOlcTcTKmIVxBGwEQ98W9YW0WKn64z3WKJX3BHjwNBIQL8xF
|
||||
BBXnEEOhUwIfdblpLXEmU58EO2kHM7ksMUGlkNPuajj0XCnzjRUil+hPEhL3FYQS
|
||||
9xirCzvyji2yrZ1bWj0qnxeGZx4/akXN3a6m3MPOTEKOxNnPDOs497spKusU3l4F
|
||||
wWDKnhHPdYz5kdIPOfOBwipLDWFQOoWIa6/mvuWCKQ8X4Hp0meiBFsDaSGvU9OE/
|
||||
NqJj44RSnB/IWPLsDZnDYdIFhVuZYIlQ5cES3h3ACdae0oF6PqzK8x+iJTNMtdae
|
||||
AmNZyFEpues3iwLcuwZlFyO8hn9HNZsQnBDhyJPksWwqw736KJQH/OKv10X1ZHdz
|
||||
wGItcLm0LEdhYnJpZWwgRm9udGVzIDxnYWJyaWVsLmZvbnRlc0B1Z2V0LmV4cHJl
|
||||
c3M+iQHOBBMBCgA4FiEEcIjHQhhz4NuX/xfCJFyrcLTCJekFAmINnmECGwMFCwkI
|
||||
BwIGFQoJCAsCBBYCAwECHgECF4AACgkQJFyrcLTCJek47QwAgmOJJooPLzraZN3s
|
||||
RKeOHOQIo7IYZI8MOCTE26rS9lkypDVgICo/wj/pIjei1yukaRo7wNkpWE0jWtj/
|
||||
DlcwnxbSzhVAXPQ2XdPO81kZ8VKBFoT3+7eGl44UsIjHruKjcjvfoXPNtW0m+o8a
|
||||
QdFE2WYqZIPJj2N7b4Ah5NrFs7g0yfWHzSpjTekYvBMFhOXa7Jqbz0lyn8JhlwqE
|
||||
hlAHJ0hf4bMm3jG83IBfcdAcEatj+3uPRzrmj6/fxvxP9GNNN+lO16UhDbafkI7c
|
||||
jumVMeOKn5fEz4HbuGMHwnrORvdwhGOBcl7sO39A9uCjvN/wtM3EdUsQ/TWq2bB0
|
||||
6vqBU3e3oLMB2O+xsE8HLMCoMuHOkwkqMv/qUSMlnx5k4vYa1eC1LqEy9zWcr+Gc
|
||||
SGNZfMby14Gp9zsuSiGOoHhTczWa4ut48N6Gn2949lRKCoyPrGdxafXI0tpx0KB7
|
||||
OJgDJDqEmkqBlG5t7MMHNf3xHj50B0RNC1ivMtCkGBYSRnObiQHOBBMBCAA4FiEE
|
||||
cIjHQhhz4NuX/xfCJFyrcLTCJekFAmBk5coCGwMFCwkIBwIGFQoJCAsCBBYCAwEC
|
||||
HgECF4AACgkQJFyrcLTCJenTNQv/YsEXpLWLuih1IQXUDDYnzrR6e8XA+ao90PNX
|
||||
ZuRXFdjCmBQTCrsfSA0t//Tkg0G2vEq0okukmyKpDXrw3ISkEx52Wbu8gEAwuBoq
|
||||
gt0+lF/4cHwuNKUyW9Cf9By3tS9yK8GiUsKTwVyfWUeopftxbl1tTHAbw8hutNbW
|
||||
/ZpF02Mm4hRpWthgkPHnvvzfMQjsNpJYUWwlahWOG5UK508CdhMsWLXtuqDKCXfe
|
||||
Y3sq7J5G6pOv8v5FSl8+IBYMUrlyTDLCvBWqXwRFLTnvpScQf9JmHDFmreTTuups
|
||||
wdZ82sE79KgYaDnayN4xFkPV6QJwI1OcToXhFOy3OztnLYcu54DXQxydRmUP1nw+
|
||||
J55eVrpVLbKmKWEOInLTfBF3ZeInACYRt0kZdJaHnOats6vEywaFCIL2ba0iaen2
|
||||
Rrx5vp1PuiKb6SFGS5tKYGrT8WQS5oiS7mybUHBNar4uq3WamwTAAOmLf6TPad+L
|
||||
UeUQc7jGIDcbw1rutwr4/6OWzatdtCNHYWJyaWVsIEZvbnRlcyA8Z2FicmllbEBn
|
||||
ZWxvcy5jbHViPokBzgQTAQoAOBYhBHCIx0IYc+Dbl/8XwiRcq3C0wiXpBQJiDZ52
|
||||
AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJECRcq3C0wiXpsRYL/AoJI4jt
|
||||
1+KmERZkRxuvPrHfcl2odTcjxDpVhd4WLl8hlRL8d0ktg0GPSDT6T8t9Gr+mPr1R
|
||||
qNwYsYJz0B2vqBXbKXdV+3ZERN1BJSoOt22Z/G9kS+Npnfq+N+QakfnkM+TdrHMl
|
||||
ZX+9ZfbaTSyBK770FgEAb2R6lO+ZJfxDu3x+8pLw+p7T+tcBL1jdT0Bbc7F8pWt+
|
||||
tdCsQ2hi6Ytxj+itqW+b3z0uGzygPfZXpg54kJl3+lqUGhrO8I81+Cn1ZohIaIy4
|
||||
Ghce6KOXiyvObaOgdU7Nr5SWhUNXgXBtxT5h9M5rQ39B2VjXpjAJyjoSg/eYwIyB
|
||||
e9asFQyjRMTeI6OgrO4h9ggTW0g9SO4PoySKOkH60VAnGndnnb8pWRSd5QRoJaFL
|
||||
/xe8HfY62Jx2ko3AIHuJ6C18RJ4KQ8QdtBPVUckDvchN1UE1DNJURD8la6YXIG0v
|
||||
Ifg42wUz0K2o8zhrzBSxPex0nt1ynZ0wdZ5NyR0FUORcVF4e/oEO+XAUsbQlR2Fi
|
||||
cmllbCBGb250ZXMgPGdhYnJpZWxAZ3Nmb250ZXMuY29tPokBzAQTAQoANhYhBHCI
|
||||
x0IYc+Dbl/8XwiRcq3C0wiXpBQJjG3VHAhsBBAsJCAcEFQoJCAUWAgMBAAIeBQIX
|
||||
gAAKCRAkXKtwtMIl6d14C/9E6uHRJ88GgD1+fE1Ux4lQJFcUQS9IF69JQisT/u3X
|
||||
4r85mFzskBn/64QCL4U6RtUNiepK9qw2qaXqWF2MYR/G0+9VjRbozOL2BkhT5JMd
|
||||
LNAFrm5SJ1k8njbjxjvD8kV+liDHrmaWoQQkPuTwEdYdVGCXYG83bi6jIvKAVwo2
|
||||
DDneXRUWOXlN2eeR9OgmegdtQbsqQtbal3BiXQf8KeK6YQbSinCA4TgQJW48Cfzj
|
||||
aQ3NYdQ1Ocy405+zrZcJvzVOG6ns2XXTZc8z4b4yzxWEN3/6tZ7hBNU4I3INVSJn
|
||||
eIsNHnOXYTFg185TTcq1Qx2fqrK1CdatCFygm5C7LJbFomAvzQMq0hkv6Wgr2S8g
|
||||
xY27NhjWEMZmeGZP/o6hWZzgKMQn5UWBwKjC0MFOZHkRhyyJ+cUjPGmnjzRg95Gh
|
||||
ddUyxm6xAXwyN2Qg2uxCzqC1qY11RUT4xcZ+uPHzsGXBp2lSWBJ1ouhMbFmdvx+6
|
||||
l0oWOCAgKjYRmhm0mr/RuLm0I0dhYnJpZWwgRm9udGVzIDxnYWJyaWVsQHpvb2No
|
||||
YS5jb20+iQHMBBMBCgA2FiEEcIjHQhhz4NuX/xfCJFyrcLTCJekFAmRtQ78CGwEE
|
||||
CwkIBwQVCgkIBRYCAwEAAh4FAheAAAoJECRcq3C0wiXpofML/iUJHPqdEunz9rRN
|
||||
i3gpFEoVAZuQcMZ+cz1w4Ym1WX2cIexAMeab4IKeojqDnFpuqnXzxH/jQIQZUQ1q
|
||||
BMNpkAssBSpFTA34H1gSsodp2hKo7fo7PNTSzUuOvgWYDrV7utwsSHb4Vf5wh6AK
|
||||
3wNGidMb5LZp/IbivwFJ3I1YJhtDRJnz6Qo/PJs0PUzqa/Vh8AV3xNJ6TNsMvT9g
|
||||
HLHGJLAw4ekdK3fOpMj9wDtfhqfz9xLJ/IiGVN/Nr+LfMGywBDOfzMitRykLbA+q
|
||||
bL8HryPCJyqCoYGy81vAFO8J/DYpefVqwLKqr9BeSkaPnfHFrgFfGMN2mMhicfuj
|
||||
ENxS0RMtzqyH2PEg4f/2mtSdBjmV/62KzOcTy0GZNa3pmBnKY+o/m5JCyJtoAdSW
|
||||
jLq+muWNtVmlgdY71WrOt8GK2zp4HMHFYh3NHb2uLv053gfM3gcHvQ3uElIFQm8P
|
||||
HTNRkLjhyAEq4wp6Th1dmBC4cx7u0ewHJvwAllXk9KFRdJtImbkBjQRgPVSfAQwA
|
||||
onUXUejRH2KM2QW/lCZ38v5n4hGYXaZuoU+ji7XzD8BA1DctcSKVaSRFd6KybLB7
|
||||
txxBURHWRfbX+tZP5UGFRG6QT/4NkK21w4nV6iJqPpc5wZbKt7wXjBVoGIhmMcdD
|
||||
8VutO+jf9M24Us4R90jWCZTEVEzq27TT9Zq2YgpUPkRSI+sYdNDjKif82DAuwGNj
|
||||
CJDh1u6lIMmhpydYi77WNziSVmCfCjrdIqnTRbfz586tuiNNeo8vkW6FOY1BA6vv
|
||||
9PxLnrntBbWcghdjYnYMvPgrg8RDZbiumeY+Fou4Dm0aWyYHWjI3z0MQMoJ7a3sA
|
||||
gN6HS6eWO9YDehTcEPE8BOzph9KyunDVxZYyralV/iifdNa1jwFHfLalHDgQRIxQ
|
||||
6v6BERW9RzTHWjt1K19ZrgylHB3kJ5Y2woWBdXpg9a+5yewox8FZ38sbhsDbbdCp
|
||||
aDn38OK7vniDL9JDt5/Fqs2RMMb6IeerxcFKDeHMpqZ76MdaWCsvGmBBwmQwBbLJ
|
||||
ABEBAAGJAbYEKAEKAAkCnQAFgmA9VP4AIQkQJFyrcLTCJekWIQRwiMdCGHPg25f/
|
||||
F8IkXKtwtMIl6ZkTC/9Xwm5sqG+WP8jDQdvtPYGeXVasE06YT8miivSAmJpezbkU
|
||||
9vdNc0ZahcDXxxf/dJPk9yVTLsNhqzBW5P7SAAiMWKU/DA5HMWFe/zsqBj9cOJXT
|
||||
DSo1bXRSwlUsn/+aX1QSs0S/Qd7JKFUbcURXB/r2wBsQDE7vaw1aithXLQAxd5wx
|
||||
ewsjCwZVHHwDYY5OXd7JuBQp2wrw62m4r+FhnZqauBuD7BtAbFd7PxjRDkN5ZpsP
|
||||
FFFm+9ONqVPgdSwBnKueJNSG9kuW+r14vCSaIagsJBxiEAC7OcPfe4G/lidZwpf1
|
||||
aTBSf4Slwl0yCoOyCETUd7tfzBtinCrOyo3clyeea0SOBcj/kn3Bm/+qkHJBnlpZ
|
||||
qCyetEIl+K3fCn/dc+ZuoDLUn5Vc9hM7PZUlUgBkxth1v1KdGAbhOdvGhgteeKsd
|
||||
vC2KNyg3s4CSQvRBQPHwuuRQcBGQDxOYONEZHJQvhYM/a4IpamhtyQVuvQx+XtTN
|
||||
iUUYCSl12NT9738GPFKJA1UEGAEKAAkFgmA9VJ8Cmw4BwAkQJFyrcLTCJenA3aAE
|
||||
GQEKAAYFAmA9VJ8ACgkQ32a0UBnfAETJdwwAhNn97vbO9PsaC+3edALV6n3f6v/N
|
||||
cynJgkHBEkuJhg/RnnFIMYcm7FvgiuXLQTvakamENxAb4vGLtiWtY19F2ggKRZTh
|
||||
keDRBOUMLK2zUG8/TNBOoAQoK+YU0DfiCEJYSJb2BF54l7vX3XCFK0IgfhY83+QC
|
||||
E4D4/jZz28KXnnHuCM7kJPANbN97N0inDNzUGY6Lexm4F3V6MtivuXZBl3qaYGeW
|
||||
iQFLzwcwVr6t9dVe5vqWSV6xf8BqcrGqpxkYhc/KAuDDqjaGBLg2DcaLCqEzvohj
|
||||
830cKHeDhxGGPkDVPd+Aw69cnwgTsMn0OsskhKuRoFpwsAL97Cc0B1gByJrPJZrc
|
||||
THXoJ92ZAD6nxFc5U+93du5qMPewklYzvScN93sPwxl2lEx2Ovit3Nsw/wrW/ssT
|
||||
kmDamRI50sGFCS/TdCWNsPnoNO6FluNMfkglu1RJxXt6htis1OPmYBkMEZ5LXlpf
|
||||
uPTS5bLfKQBiCG6ITDNVDKm9boMV+Wvc4B5mFiEEcIjHQhhz4NuX/xfCJFyrcLTC
|
||||
JenG8wv8CmANfNzXFSkiM9TbwzK2Hc7TChn6VjTupQadZFK8lJoCIOWOeC+sE5Hj
|
||||
45zyYZwyVHZgQW+BkBOSnR8J7pAVu4Zzr2aBnYBDbQVSBLDfqFuthNH5NjmH1iWP
|
||||
yROHJWnam2iP0Y8FM6iX6TbYlKwCpDdY71KdhUCG5VETQQxOdlqlsSyFrWDEZOAL
|
||||
IO1hnCGc5Iu/FMOA8wgQCiHAQzpE/di5Ilkc7OPSj4Q7JVO7avi26V5Z0/oeQOa1
|
||||
MTP5Wp6gj5EajVN1Bmw4pdVdEZCpY9SnHXKabd2IYAwQBzPZOV3yqOuWUBaMg7fX
|
||||
K5Qyz5tlfgt/UfWD9cebldr5KysgH76VVwDy26P42XZ6GEf0WhvFT7nhYXKstaqP
|
||||
dRD+unffsD2XasGxN7Xcyg4B6pcG5VTadvstAsvf86AsRgpP9jQP11JrtjYVqQ7z
|
||||
dcQx6RZE26GTbGHzK18a7sDeWokaaQhYiRVOE3O3lkHZnU4hk6PC8086LCBoszJP
|
||||
OvKGWGB4uQGNBGA8hQQBDACkukkTMZodf1KOGMWipMpBk1dmFyI5IqY/KcGooyud
|
||||
BliGOQbIPfxVssJ12H53bEZTyWbkvCobs5K/IIZFb+SZJF4AAZ4s1YLo9MGUn7xJ
|
||||
E9YAfHzMx6VKVd+hwgVItb0srOt8hp+W0snPmIQ5eVxhFbP2+hd8MGaA+xIkK8ve
|
||||
ysH63rH95YdknAuxq41iYq5YoNmaqFTa0wzliAthYOOLW8CNnAx0mfziK1fk4RYc
|
||||
LgZwM2E+bQckLAskSgO8xqZkBsc7kXf5GYBwUhhXadoHQpac0A2Zj+OGArnx1cEi
|
||||
CkBaDlM0IQJxnLU0fXUPGdz9RGB77riKty1UExagBkBWeOarSUTE1ntNbtwQRvF7
|
||||
+Ijxe7kTxkwFGiw7BBPTqTwE+DY0UoylgjCUZL8B1hxVECqbk9GR1CapaNuPD4sM
|
||||
BjGvNewp4G/9QvX5bKhdBWQx2oiG18mN6dvlnS6YF5rxUf6uEJvtKtxZ8zvUgX9k
|
||||
8hS4EdIzhUCkvzvudy5tHgsAEQEAAYkBtgQoAQoACQKdAAWCYD1U/gAhCRAkXKtw
|
||||
tMIl6RYhBHCIx0IYc+Dbl/8XwiRcq3C0wiXpgUwL/2dYurlsOu9erhBv7C/lq5EH
|
||||
Kp8php7H2fJk/HziFD/IZE1nup+5I2TCdpqaTL8kH41poq22fVY6UvyIxiho+BTC
|
||||
NDFJsJnxvX5wiS8HX063hg45g8GLlnQ/T5U7DvIK1fVJemNQFKcL3ycyvsnM0pyc
|
||||
u3D17Tk6Fk0TVs8uqxDIM06f15dccmjMVEp2RnmQ6fUSlLR5t/fVAV/oGDi+Adzf
|
||||
2KvFa91VFnh++0tOBYNgtlHuYD4vV/pqSsELkNggoIGWS0PuICyUBWCH1DwuPFgQ
|
||||
bx58FYk5Oh7yGgrQL+m6yJAgVZyxZXx+nvTl47G5IA61aVw5VCIyP4N8ApbUD50P
|
||||
xhUtA1dJ/JWFDYOAUprKFKN2vVVTUroRAmivC5vgCRFnUp4KFzJJLkO0VI9lQhlu
|
||||
qnkW0UMjbRP680SsO8Ceo4R/qYE51BBSEfy/7GBOlNgNWUtFdj7ftBqR5UVYQVzJ
|
||||
9gCiRJVZsJMXld41o5QzVCb1ddJZMwL5S8kh8nN4HIkBtgQYAQoACQWCYDyFBAKb
|
||||
DAAhCRAkXKtwtMIl6RYhBHCIx0IYc+Dbl/8XwiRcq3C0wiXpwPMMALzZWy8WYAeM
|
||||
5nZky78146I9qW7otzGATxmDjYwdIvCIYnsIo2Y5lWoL9nHoHwGdk3aSMsp2he/b
|
||||
KH+3MIESK2sj8JKzHUW7eVdP1ModBP0Qgpm6o6rCeirTsParduE9E6VECWNZj8cL
|
||||
pf2BnRll5YZXe0RiwfCJPaCQQgv4LVo3bstMJgpUDOWNKQoWOUrPHScBYPRkHahO
|
||||
wkv6Us58/RtFcsU9ASCiy6y39XsNx1o5yb7K46mYeU7sLfKzTJncjGxhFufwRpOG
|
||||
ZwcUgvmG6xRZNTFSbJ52V8WU2K/tZNTpdFejVo76nHjEW2u74wTNl+/PxKC8ojFe
|
||||
Y9rUOffEuzlNPR+lfcr1V+BBeDOQknxB/lhP/5Pn3ZDjuYCDTYDErTU6qGlDznFD
|
||||
MXG9+d//a2YHP5bBYw9j+U13B0Q8k053DprXpH0qHcNObU7h2ZEA8z2iNgwwHlty
|
||||
tplZVUVWkrLFTOv4bWCKJalQrKjUxMrRR+M7yxI+tpEstYgOgmg0f7kBjQRgPVUg
|
||||
AQwAtrcvnG8DmFHjDQQV8VCV3wQOwwRc8DYGR5o5kLGYy5A4wVTg1oAEZVzgb6wQ
|
||||
9L4Vp60BHiOfdlqtAhR4z9OZt7IZCeX8G+Ulcl7nKDH0vJTqV+1sWPAK4Q54JPD6
|
||||
FIbhuCycsvMz8zZqiQXhiuu2GFH9QiAnGjxwWL9ntQYo42e8vZgZuF920yR8SjIe
|
||||
4CTYeskMzAzkWYZLjp3QVsLafKiSO/uoy7wBwZzO5lAzo7UqU7QWursjQKPngKDo
|
||||
YsYwBXozRZTYKbIEWTlMQjt48gUii+g9xwjOFFPTrvz5AADHk+jcNDBbr9Zpo6jj
|
||||
YnuHOc8Gi9YUH5AU4YS7SP9Km37swkQT5kWSKMAm3Kbb31BMzGbYg2Qnr+AdSKZK
|
||||
bHMyfvhYgw2QFCrJ3rr1IFEPC0JUcNMw63toWiSAXgIOVu01R7jknw6Ez8M/Icyl
|
||||
sHV7Tc8zAVNiSu8vs9iL/CM0c+Fg00f5VQI4kE/vUW7OLGc/eLdf14pfkZlckGD9
|
||||
hrVxABEBAAGJA1UEGAEKACAWIQRwiMdCGHPg25f/F8IkXKtwtMIl6QUCYg2hsQIb
|
||||
AgGpCRAkXKtwtMIl6cDdoAQZAQoABgUCYD1VIAAKCRAuVOp7/mMJFnE3DAC0HQDR
|
||||
wLQUxRv9VOfaQTiUIZW3qFB4CEh4SaZJV3UN5d1GBBnAAESffm6iN3OY7PVSG7jl
|
||||
PZ3WhUrP6K6xUcFqRfnZo3pCCeHYLA3h86jZyKwvy0fKT71FH8V9Tev1cF8B4zPZ
|
||||
RhzyKns9MFzFGKAQgoftri2VUCXTA3uPfgIX0mHjgi2G4L0Vg2vIMP0YVGZX/hSD
|
||||
yhXlSOTK26mxHmVNtVMxX9RdIZY+fRlCp142eAhPb4leuVF7EJY4ujEgLt1M7xqu
|
||||
Mrk7eBA1QX4YAQPmzrxprc5TNMLWpqE94p0jVEq5m2n55UUpUNq9rBFqEwNbS7mr
|
||||
edmNuYTuQYAMADEXgkG37nbR5L2XAOopa0omBA8egrNtrPi/xqNCgfdp7BJ5n6U7
|
||||
lArD7TfxsUfsf0Z38xUehi1361YqzQCCoShdnVC0QDHHujJ+I6c8q53V6dPbI6wX
|
||||
W3pAXOuj8UotdoSUMukZdnkJiZb0ZXMLAoOdeHUZyb8BV5/CEbS/pZiKkTiQIwv/
|
||||
SGZq0HwxX8sc3Bgz9o7QPiQ32GzJ/pmHjEH1WCvaTNB7Ub0LixgMKF5U8I8pQ3fc
|
||||
gm0KCD4k1Q59bnhMUaDMLlC5Ik2zGs1CW4rll5KQkkWD39gykvrULqXYbsI0tUHN
|
||||
lIUV4PPYna+vJbQ1Ndf3mDfkMcBajA9JZcGnTIMEkPcpaAFgJGrAiGAn+xY0Qh7h
|
||||
SFUDdCjKjZE47eUrP8uu9gOqyoS9isByw7riToeczONDvOHEACg8IwBRgl73Fai1
|
||||
HH3NhLdqdWy1GeC2jrO1TaZG2fWkTPLaAPkqkWELILCG5NU82+MPoixiKZNnwNs+
|
||||
1Wr6hZ7kdoMxSq42CjRXEAzBu5orLDGQVt/cNZoTcVuAJifAZrTfK4sSr42oDjwh
|
||||
y7/mcEr6EggOaVIJvfNYP1KLHj2ZfBvCgSBK55OXrs5vhDXg+vEvHX6ca19tYZD2
|
||||
jpd3Ei2RSflFH10JYpLIwc7vii/29dN6JU0DwkGpGMbjeL9Wcnf8wA3E0sBGp/Nj
|
||||
uQGNBGINoboBDAC4eGR6zuZ+LE+3wYlXYo6KlIu+znjR76OCN3V99C8ucDtHnvxP
|
||||
cKcVN1MZbaOoSd3s1UmHsz2t5c8GiuR/8fAdLrdJ40yRNsvYJnKtNUyGpK5VxPI/
|
||||
1TnyAxof6ZbCVVMsqXZnmKl9/X33F2IkckzdZZrcvZpkontGA7cRa2BnXVy2YHEe
|
||||
fttR8dwgqbdMHEyFNJ2rSOxNsPDUKCN7vcR4OUNi3ofxNYb9DcmuBv5IMJeAwbAM
|
||||
zDjGG+YGrWUKtgaQoQG6RqBV+8dOCTH9vIaHqcU40y6fDBs/1OrtlVtHCJbuW7jW
|
||||
Igjfppgtbn9PQsEzdvSy0u5dpUR7gmDQ1Kw5R6OrV/bWXiASMi+A+aftu0Idf4oU
|
||||
RcJeFGPMclpU0Bd3rMkNUbG+pAmCZPav/j+pNmHlaBaWljB4t9lfLPw4EoV1u3Zc
|
||||
/TZRoa/NSsB3kVjJeoYMOHacCMLNegAfxkwwCze41CbOUU33fWMajNmMZkFzO4hf
|
||||
zn96lUVr2wASBcEAEQEAAYkBtgQYAQoAIBYhBHCIx0IYc+Dbl/8XwiRcq3C0wiXp
|
||||
BQJiDaG6AhsMAAoJECRcq3C0wiXp90cL/RplDe7n2jMsb/RxyH68WBRnxY+od9Gu
|
||||
YIS3eRziJ5VSm+TULRzMuUoEu289HFLA23RXO9M4gTrb2IImLy0WuO+Bm9qZSzeE
|
||||
u/LOKnA+ilH6fvisViVGaILrYMy/0CEGjUY36AaS3IvqYdqA5dIPEErcY9iJL6KY
|
||||
tWXEKyLK5ELey90hfMZjjAM6P49WnqMQPag3qlNG6XsW65lriRO2b/IphX0H88RL
|
||||
DAZxlNI9ReRbN/qHBc1zU36j/MZ6JB+qx9Eqt8pX8hUTzUgYZiDWkk+2gMC+tFbN
|
||||
byOKVYkbKW5kP92SW0PtzKPhtQ2hA4M0wKN8/3AwE2QxFhZvb3dCIdTBt4Hfv7g1
|
||||
x1EFx005wWGgulWOdZiFP2ukwmnSxXGENHMR30e8jMdNJ1Fzq3MDjt7Ij0bYssyr
|
||||
wRmMdPbb53O2RwuVpi3kG7rUQdRI1f6fVKNsGJXdwj1yzmhPFV4M2NTM6axmurxK
|
||||
kLQkwNHDkWYyr8btwc5t3wXC/JHtx2pFarkBjQRgQEtsAQwA3IuMCYIZ0UUqkLl9
|
||||
c9sXmlEfqf5ris2nNI8NJoKVxNk/94lZTCSd1FyfrSG8kj+ns7dBlZs3ozTr1Gqz
|
||||
wJtLTnFultBI8rNk4/hwUVNfa3J1LX+L7CpPK+T1uTJ8EvA6maJz+XhG4Vtjq1+W
|
||||
bFcg0/gaq39/ad5DslmC109sAO8vdvIPBXFzmY8I02lhlrQPgcQL2yYF4VPXJf8u
|
||||
OZBeva35nN7jkJnl6SjcjpU5OoqUqznyZHB4DRRXi58YSe62MaaF58WzmxoWjap+
|
||||
4HOZrfnpPn8Bc2fI+kEihbD69Dc8ExRvNCG8osq5wvzHkTYe0kBTwBEiBD/Cytz6
|
||||
DcdpdTPjIwkF7G+KCBtqGGDEWtssfKmd56VDszGDpCRWNbiP1BBP4/z5UEszB36Z
|
||||
lrrOKNrIo36/DplTxnqFP1J1T8iDah4cgHdXdyI4t8tyzFXph7aecFXLrMAAQuyE
|
||||
VVSmWKzAlzIsnGOZ9NHIel02lwcAmNNMvAdzM5Hezn6vfGB3ABEBAAGJAbYEGAEK
|
||||
AAkFgmBAS2wCmyAAIQkQJFyrcLTCJekWIQRwiMdCGHPg25f/F8IkXKtwtMIl6djY
|
||||
C/0UjSfl7Mlc9CikXNKDFECNMDQDK9IMvU5nYlKZo4eSZiQggIpM5HP5pEMp6R4o
|
||||
Vndva1OiLbZkWXqqRw+BzZ0hqNNW1xG7ojcxRT7OO3LY3tVJUIqVyksqWHrvUdqF
|
||||
aC4zPJqjq7hC9nR9xFeKaTf3YhVNSdozmcKijv0nt19IwvV2VKYePk5z4GmBxN8z
|
||||
up9VCtQGngP0Y6GyukDgmwLd3HUKiO3mmyrdK+mGo8eHnbgGHXTrt8gy3iUwzJrV
|
||||
CROEiZMJhYSa0HYMXRdeVbwlrBqcFnyCwalqMr4niK8dliudcawMxdev0bW9cgs+
|
||||
0+bJrrI9Aut4qkfilurjK9KTU10qJ4VL6UZMXJOSPGVackSMA+xoxC/8hsEtUgJ0
|
||||
yjEo03BEPQ7+JzRXNQs4mkbTEFBcdABe/ZTLVKxhZjhXybRA9NjRKVMbWjrvCf3a
|
||||
DQPJlJuzx9n/i1AUiZo59cuhD/ND0PGXhHlVbKVc5wiJ2r6EF2/lwBHs27SdzD97
|
||||
LyE=
|
||||
=UHEm
|
||||
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
|
||||
=yrZE
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
|
|
@ -1 +1 @@
|
|||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDci4wJghnRRSqQuX1z2xeaUR+p/muKzac0jw0mgpXE2T/3iVlMJJ3UXJ+tIbySP6ezt0GVmzejNOvUarPAm0tOcW6W0Ejys2Tj+HBRU19rcnUtf4vsKk8r5PW5MnwS8DqZonP5eEbhW2OrX5ZsVyDT+Bqrf39p3kOyWYLXT2wA7y928g8FcXOZjwjTaWGWtA+BxAvbJgXhU9cl/y45kF69rfmc3uOQmeXpKNyOlTk6ipSrOfJkcHgNFFeLnxhJ7rYxpoXnxbObGhaNqn7gc5mt+ek+fwFzZ8j6QSKFsPr0NzwTFG80IbyiyrnC/MeRNh7SQFPAESIEP8LK3PoNx2l1M+MjCQXsb4oIG2oYYMRa2yx8qZ3npUOzMYOkJFY1uI/UEE/j/PlQSzMHfpmWus4o2sijfr8OmVPGeoU/UnVPyINqHhyAd1d3Iji3y3LMVemHtp5wVcuswABC7IRVVKZYrMCXMiycY5n00ch6XTaXBwCY00y8B3Mzkd7Ofq98YHc= hi@m7.rs
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGSNy/vMr2Zk9pvfjQnxiU9F8CGQJwCiXDxPecKG9/q+ Greg Burd <greg@burd.me> - 2023-01-23
|
||||
|
|
1
home/gburd/symas-ssh.pub
Normal file
|
@ -0,0 +1 @@
|
|||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDPvS6pE5Y8Yc3YnKpKinjVKyziqnb7JZJGonDKnZi3I Greg Burd <gburd@symas.com> - 2023-08-03
|
|
@ -2,7 +2,7 @@
|
|||
{
|
||||
# Enable acme for usage with nginx vhosts
|
||||
security.acme = {
|
||||
defaults.email = "eu@misterio.me";
|
||||
defaults.email = "greg+acme@burd.me";
|
||||
acceptTerms = true;
|
||||
};
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ in
|
|||
flags = [
|
||||
"--refresh"
|
||||
];
|
||||
flake = "git://m7.rs/nix-config?ref=release-${hostName}";
|
||||
flake = "git://github.com/gburd/nix-config?ref=release-${hostName}";
|
||||
};
|
||||
|
||||
# Only run if current config (self) is older than the new one.
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# This file (and the global directory) holds config that i use on all hosts
|
||||
# This file (and the global directory) holds config used on all hosts
|
||||
{ inputs, outputs, ... }: {
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
imports = [
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
./acme.nix
|
||||
|
@ -11,7 +13,7 @@
|
|||
./optin-persistence.nix
|
||||
./podman.nix
|
||||
./sops.nix
|
||||
./ssh-serve-store.nix
|
||||
# ./ssh-serve-store.nix
|
||||
./steam-hardware.nix
|
||||
./systemd-initrd.nix
|
||||
./tailscale.nix
|
||||
|
@ -35,7 +37,7 @@
|
|||
environment.enableAllTerminfo = true;
|
||||
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
networking.domain = "m7.rs";
|
||||
networking.domain = "burd.me";
|
||||
|
||||
# Increase open file limit for sudoers
|
||||
security.pam.loginLimits = [
|
||||
|
|
|
@ -1,13 +1,22 @@
|
|||
{ lib, ... }: {
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n = {
|
||||
defaultLocale = lib.mkDefault "en_US.UTF-8";
|
||||
extraLocaleSettings = {
|
||||
LC_TIME = lib.mkDefault "pt_BR.UTF-8";
|
||||
LC_ADDRESS = "en_US.UTF-8";
|
||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||
LC_MEASUREMENT = "en_US.UTF-8";
|
||||
LC_MONETARY = "en_US.UTF-8";
|
||||
LC_NAME = "en_US.UTF-8";
|
||||
LC_NUMERIC = "en_US.UTF-8";
|
||||
LC_PAPER = "en_US.UTF-8";
|
||||
LC_TELEPHONE = "en_US.UTF-8";
|
||||
LC_TIME = "en_US.UTF-8";
|
||||
};
|
||||
supportedLocales = lib.mkDefault [
|
||||
"en_US.UTF-8/UTF-8"
|
||||
"pt_BR.UTF-8/UTF-8"
|
||||
];
|
||||
};
|
||||
time.timeZone = lib.mkDefault "America/Sao_Paulo";
|
||||
time.timeZone = lib.mkDefault "America/New_York";
|
||||
}
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
{
|
||||
nix = {
|
||||
settings = {
|
||||
substituters = [
|
||||
"https://cache.m7.rs"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"cache.m7.rs:kszZ/NSwE/TjhOcPPQ16IuUiuRSisdiIwhKZCxguaWg="
|
||||
];
|
||||
# substituters = [
|
||||
# "https://cache.burd.me"
|
||||
# ];
|
||||
# trusted-public-keys = [
|
||||
# "cache.burd.me:kszZ/NSwE/TjhOcPPQ16IuUiuRSisdiIwhKZCxguaWg="
|
||||
# ];
|
||||
trusted-users = [ "root" "@wheel" ];
|
||||
auto-optimise-store = lib.mkDefault true;
|
||||
experimental-features = [ "nix-command" "flakes" "repl-flake" ];
|
||||
|
|
|
@ -4,7 +4,7 @@ let
|
|||
inherit (config.networking) hostName;
|
||||
hosts = outputs.nixosConfigurations;
|
||||
pubKey = host: ../../${host}/ssh_host_ed25519_key.pub;
|
||||
gitHost = hosts."alcyone".config.networking.hostName;
|
||||
gitHost = hosts."TODO-host-git-host-name-here".config.networking.hostName;
|
||||
|
||||
# Sops needs acess to the keys before the persist dirs are even mounted; so
|
||||
# just persisting the keys won't work, we must point at /persist
|
||||
|
@ -34,9 +34,9 @@ in
|
|||
knownHosts = builtins.mapAttrs
|
||||
(name: _: {
|
||||
publicKeyFile = pubKey name;
|
||||
extraHostNames =
|
||||
(lib.optional (name == hostName) "localhost") ++ # Alias for localhost if it's the same host
|
||||
(lib.optionals (name == gitHost) [ "m7.rs" "git.m7.rs" ]); # Alias for m7.rs and git.m7.rs if it's the git host
|
||||
# extraHostNames =
|
||||
# (lib.optional (name == hostName) "localhost") ++ # Alias for localhost if it's the same host
|
||||
# (lib.optionals (name == gitHost) [ "burd.me" "git.burd.me" ]);
|
||||
})
|
||||
hosts;
|
||||
};
|
||||
|
|
4
hosts/common/optional/cups.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
}
|
|
@ -2,6 +2,14 @@
|
|||
let hostname = config.networking.hostName;
|
||||
in {
|
||||
boot.initrd = {
|
||||
luks.devices."${hostname}".device = "/dev/disk/by-label/${hostname}_crypt";
|
||||
# Enable swap on luks
|
||||
luks.devices."luks-3b6dddfd-5390-441f-a72d-a3b2809204df".device = "/dev/disk/by-uuid/3b6dddfd-5390-441f-a72d-a3b2809204df";
|
||||
|
||||
# Setup encrypted root keyfile
|
||||
luks.devices."luks-3b6dddfd-5390-441f-a72d-a3b2809204df".keyFile = "/crypto_keyfile.bin";
|
||||
secrets = {
|
||||
"/crypto_keyfile.bin" = null;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
{
|
||||
services = {
|
||||
xserver = {
|
||||
enable = true;
|
||||
desktopManager.gnome = {
|
||||
enable = true;
|
||||
};
|
||||
displayManager.gdm = {
|
||||
enable = true;
|
||||
autoSuspend = false;
|
||||
wayland = true;
|
||||
};
|
||||
};
|
||||
geoclue2.enable = true;
|
||||
|
|
|
@ -15,12 +15,12 @@ let
|
|||
exec '${vars} ${command} -l debug; ${pkgs.sway}/bin/swaymsg exit'
|
||||
''}";
|
||||
|
||||
misterioCfg = homeCfgs.misterio;
|
||||
gburdCfg = homeCfgs.gburd;
|
||||
in
|
||||
{
|
||||
users.extraUsers.greeter.packages = [
|
||||
misterioCfg.gtk.theme.package
|
||||
misterioCfg.gtk.iconTheme.package
|
||||
gburdCfg.gtk.theme.package
|
||||
gburdCfg.gtk.iconTheme.package
|
||||
];
|
||||
|
||||
programs.regreet = {
|
||||
|
@ -28,10 +28,10 @@ in
|
|||
settings = {
|
||||
GTK = {
|
||||
icon_theme_name = "ePapirus";
|
||||
theme_name = misterioCfg.gtk.theme.name;
|
||||
theme_name = gburdCfg.gtk.theme.name;
|
||||
};
|
||||
background = {
|
||||
path = misterioCfg.wallpaper;
|
||||
path = gburdCfg.wallpaper;
|
||||
fit = "Cover";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -11,7 +11,7 @@ in
|
|||
recommendedOptimisation = true;
|
||||
clientMaxBodySize = "300m";
|
||||
|
||||
virtualHosts."${hostName}.m7.rs" = {
|
||||
virtualHosts."${hostName}.burd.me" = {
|
||||
default = true;
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
|
|
|
@ -9,11 +9,6 @@
|
|||
plymouth = {
|
||||
enable = true;
|
||||
theme = "spinner-monochrome";
|
||||
themePackages = [
|
||||
(pkgs.plymouth-spinner-monochrome.override {
|
||||
inherit (config.boot.plymouth) logo;
|
||||
})
|
||||
];
|
||||
};
|
||||
loader.timeout = 0;
|
||||
kernelParams = [
|
||||
|
|
8
hosts/common/optional/x11-keymap.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
# Configure keymap in X11
|
||||
services.xserver = {
|
||||
layout = "us";
|
||||
xkbVariant = "";
|
||||
xkbOptions = "ctrl:swapcaps";
|
||||
};
|
||||
}
|
|
@ -1,95 +1,34 @@
|
|||
misterio-password: ENC[AES256_GCM,data:bQR9UtCNRl9S/anjqwO8Ssnbx8v+sx1YMKgNeL2lvHQ0JB0vXcyQuUHnvKF0qZU3h8G/zJBJ06oDSwd0xH6wghExC3LQGkqG4uuPxj2JZTbZMgaCYawq2clo45D1p/7UYkm1d+5iHGO1Ag==,iv:SYGY0leQkFniuxiG/V4EsBPF4saSctoQ9Yke9cg5QzA=,tag:5Gzj98eaop9nfSUu0x70hQ==,type:str]
|
||||
layla-password: ENC[AES256_GCM,data:dE83+HB3RHl1g95mAtO7DjETyibWuJTgSAJBksYkUeG97bsXbP3YAgEdZ6NJ3YQ6/AAqVNqvhmL/GYt8B1E4cvBls8cL5YlNjvDRrp+15uDpQ8mRNF49xGciRfDsn2GQqkCLpZdHaEqowg==,iv:F2gOedMcFce/JFEY2RPAWEqQxSFsSGU4cmcTRU1+5R4=,tag:CzgiefLAzg0TwB6rRA0YDA==,type:str]
|
||||
wireless: ENC[AES256_GCM,data:MZiHyKHBn6M6I9OjTFKdCvssAWCXSvIpaV6YLx+EWlSgZlihLVRHx2bZcKKo/rAoXi3kAIaEbDeID75HozMLPTcks7hFrMwoYCFlmLYsNefBvqrVHNBy1RlZqe4trF6ikKdYCJcuFcQYlTStWdjrWkdHPTJv45U0RRhzgSUvINWf3Ykv6Qt7XPGH/RLVOnIq6zmcomDx7Bi7HHANRKlEpdwhAa7O8kUDA2tMFUF9w85AW2JVlBPOVibJUd87l9OtaSNc8lJSRykvS8a1mFoMaIz8P604vRCG5N1HVahXGUg7QtTGt/gg1QJ9xZouULAM5SNaI9t3cg5XUo6nj4rt4Wcsg7hR3WdCtEKLr9xq1Ytsh2hhZkIfiZ2akEi9zU92CoOBsVDJy/PBuE0aR28cq4BzgJBGOvfGemXnuYdF3em4mvOcEQ0c4eq1trVyPFnlSmwyVEgljG042oDgdaGv12Sdxykr7QY/NpU5G/yF+hUsbaKCc/Kj7rgqWHf1ZMXOjphaYEeWwbSELU7+oMqlWHUEPqrQgRtqsjdvqKCPhMdqJl3qHGEFAE4ogPinhBWL2ajLPLefTCKyP6S/Lsj0,iv:IX60RPNzvzudIv0tN+tgLwSxCjAZeyo+QuZYgONc4R0=,tag:LVa/eneBz7iSOLfcE5Rhkg==,type:str]
|
||||
gburd-password: ENC[AES256_GCM,data:ldXmHftA4POy,iv:8NLcj8hrZ9WUeqkDLctgO5G9DiK3Abwu5Rk9jbrFLhk=,tag:326N+ckbPOKi+LZsgrxusw==,type:str]
|
||||
wireless: ENC[AES256_GCM,data:I3gTVu4geDms+Q==,iv:Uxjdmx/fi6mA6xt/j1dNajR4iJqUvavY+dhMZF0+500=,tag:P712+4p3lstJwGaN9DM7PA==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age1hm5lf4qk84r4wh00atn6hpts7mpdx80adq26wht2e5qh9ewvhyaszfv82d
|
||||
- recipient: age1udt7tgf8pa0r278z6xwrzndg5w9jyvph8p0nycpqw3d39aal5u6skfv556
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyTE5PczhoNHpBWWczZHY2
|
||||
dE5aa2tTeGFxMVBhMEtKQkwyNXdjMm5uZHlNCkVRNEFrbWJVeUdLWElBc0hNOXRN
|
||||
cGlCUHYxc0MxejBIKy9JMkR1QlNtbDQKLS0tIFFhcFkwMXRhMnYrcEd2Qks3TjBC
|
||||
bnplZDBhMDlkME9CaklmM1hUK1k2TDAKtZStGRVRFvsJhNBozYwD8FTRWYNpViwT
|
||||
mK3qU6aVRU73MJrjpqmsfgrn7zKZ/pC+BGr3VQSRVb/3q1U2zEIQBQ==
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxbTFNdmdQRGxEdDFLbGJH
|
||||
bGcvYklVOWxEd3NDWHJxUENDaWhrZ29VQVU0ClFWbE5Fd1RwUWRLM2NOdXh0MXlI
|
||||
MWI1TDZjUmsySitheWdZditORml4dFkKLS0tIERWTUFyeW9VK0NSQlI2Nk92MmRa
|
||||
YmxhVWhMM1l6R28xL2NLLytBWkpvVWcK1SZNdwTA/3/wF+fzWOlwqAmQCgKJh+98
|
||||
L5sVicaj0ns+G8ZsqEPnOYklHo1o0G0GpF39LOx8bDpGAQllHRpsBQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1709qfrwglm75v5x8lpuhryt83k6p6c90npplzzec6a5w8ct93ejscpqpc3
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiVkowVnc2aG1qSHBLaDdO
|
||||
RkVuZ0JOeDRWSlE4TDl3bWJ5eVVUZ3ltWkZNCm51VWFNU0dURDhRU3JLVDBoMzcx
|
||||
aks1bC9Vblg2S2RldjcyL2FDMzRSVU0KLS0tIGt0aC9GTmVwV01BdFJrUFZmcTJJ
|
||||
WTJiTFVMV1BZOVFQdDgzTGFrZlRybVkK5sAsALcmI6LaTS8d0N3fovrqy2T5WI8l
|
||||
DFwYJ8cpNwA/b7ImLD4GWYuENk+1JAp4NgbPK5XQ/vdk590080E6Kw==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1j9ld6ey62hqd33xkyd2fg9362k6xhm5gavsrpsfalwpcs8smxfdqpk84a2
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDSS9sd1J3MnVCcUdKVWRV
|
||||
V0EyVm5LVE5zLzJkd0QwR3JaZ09jdFVhdmxzCloxdGpwUGJCRWUvcDU2ZE11SWNw
|
||||
NzBCNzhrTnNXNzEwS1luSlI3aENFb2MKLS0tIDNJMy92bkhnaEJxbUI5OGVnZ1Fa
|
||||
ZVFTa3IzeDVVT01IOXhGOE9KZVFQV2sK7LLx8yGP3iKpXtlIrvWNXCkHuqWfc6AP
|
||||
A6oZMwP6P/uMOiXCSStWhAQpEmY/JcbcyfnfWXV7LckXxL7CElJloQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1dn7pkareh83k8el2yt4dmdfdzn7f45fuc785cnnxgzf3h4r5gqhqd4l93h
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsZW1xVjJUWE1YemN4QVB5
|
||||
SVZLQ0FwcERTbTZBSmJUdkorVWFFVlZLc0NzCmZaMVB5T0VCZ1BFN1ZzR0dBSnZl
|
||||
UE96ZGl3d3g0cDNEOHF5UEhPZDU4blUKLS0tIG9uRThreDhVNHBTUmovTEJyZnRl
|
||||
cU5TMHFyMXNIUnlXcjZHNkNtRG44OFUK9cCjIF6Ip6e+/VEJMhDV5HM2it/eFOdz
|
||||
8sBVBZS6SL4xCRoFMOmnnw9PCLreCws2i34nI0uW1T22JPbh3FExTg==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1uxvuygmvwpfjrd9d3ulg6ln8dgvaw4l2c90mw0tr72qg3n8vd9ns3dm000
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzTDZBb0dZeEtGN2dFejVo
|
||||
M2JNMGZEUnc4NTlNYUp5WUdadjlEQzVncXhZCjJpS04wRnBFb2g1VE5kdHZnNEZS
|
||||
T21zQUNRc09XUGNaZWxyVWdhOE94Q0EKLS0tIFY4Y3lsWGxHWlJzNDE0cEp4ZE5M
|
||||
YlVKN1VmSzhNam1mRW5xTnVDMG9GYVkKCAx2LVbYHhrWz6qS1oe2IJoSEM+TdiAq
|
||||
hGECp0v9DwoQo8ud3nL4k5sAxa11j0iLNDVS2wGEpsISVNhnjOda0g==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1gxhy9eq38xfplay0kvkeyvsg96g0c4p6rkhajkrj8nc9dswdzqhssgvns0
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1eVFvbEI2djYxWVBMdkxy
|
||||
aEVJbUlJYU5WTmZSdGVBQW1VcHdyQlZaZWd3CjNxNTVsSWovNjVuWGs1NnlpMEsz
|
||||
eUJTVUZCbkkweWFPUEF4ZTZCRVlnckkKLS0tIFlGd2x5RTVoY0ZLdjdiM3QyNVFN
|
||||
djJEQW4wc2NnTWhPeXVsNTQ1RW92MGsKr1L803YuhsmaysQogh5I2KUHffYcMA03
|
||||
4dekr1pEEX059oHbbvp90Xs23WWiLftcNozNT1m1iI74ZCpmyMRC/g==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1n06f4dcslh8xq686z2fa9ddr3yg5yzj87p727896xsm8xvusdv6qan0grl
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTRkJ5SFJ5NkRqaE0reCtS
|
||||
cFlLa0l6VVNtM3ZTQ0hEL0Y1cTlYRUJrOGpFCmFMeGtuSkdyZEhtQkphRndxR2pZ
|
||||
c3QySDhJazZpQXB1TDdOVExUR0pFcWcKLS0tIGNqRk85WnllZlNzUWY1QTFmY3ZJ
|
||||
WGFSejNJc3dSWjZSeWN0ZktCYm1WNVkKmjKRIFTUO9VGRS+Q+zX0SFtrraEwXxSS
|
||||
8hpAMFll2qGQFi39bPqg8lUQ/t628/EZtvkRQZOwT7+xNFur28mUPA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2023-06-27T18:54:34Z"
|
||||
mac: ENC[AES256_GCM,data:AqtrQ5MHpkMm/BltLnDajgDed1WqHgZUpco3PqZ1jmeufluyVfq3J9+gjH4ougz26PSvXR4Y+qEXk5dbo6L1TJPckORlnFSr2ZZBCNuRnYPgBQo+nX6sNaNDU0pk45vXE/gKPJooBNs8emWiTb69J4HqZLtsNzQewRWEjQ2E9PM=,iv:irjTYQd8fgzxuNrhpYpbmPLivbOqTOvwEE+GGX3NqdE=,tag:1AcC871LO32FcI+meZE/cA==,type:str]
|
||||
lastmodified: "2023-09-18T19:32:57Z"
|
||||
mac: ENC[AES256_GCM,data:9feL7sfe6LOXecCCI5C+VKe6i6xMjWMSnP4i3rb2y1a3+/xB5575RPf3nZUbzUz9OwZIDUiydO9nx1vPHQPFcwz/gfdPsNbu0q7AuVxa9RhDEW3+vrBiGQDWUIXA29yU2XN4QYqwwIDq/kymBXH48CBCgj3RBfCBnOfIkvwQvu8=,iv:CIyGMjvT31ZkNj0BTs2euINxa2ihDqOD/ASpDqFo4Sk=,tag:zZQBqsGAcDc3ezrBhAqxNw==,type:str]
|
||||
pgp:
|
||||
- created_at: "2023-03-01T15:18:20Z"
|
||||
enc: |-
|
||||
- created_at: "2023-09-18T19:32:56Z"
|
||||
enc: |
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
wcDMAwa9kVfiDH1CAQv+JRTEbaBdksdzKsBwIrEbsx6av1pg0dct99LMwLljQNQu
|
||||
Vg3apXYTavC4D+gQLYk6eKcBc4ldjSQDCxqztJH3xvRVooPg0YwAFTPhD4xlOE+N
|
||||
VPElotbjWC/wKzfOe+2/6jwXILBOXPYhIiyskKx+41iPAn0TqFLzGFrx19fWUxbV
|
||||
OvQqCetlU06/X2YzRG4Xw8zB/u29a+hOygpdc5fa4MSgvFcZz2PXYESPDH33jpcH
|
||||
jvjLLnWt8RHiwmnRpF3rrAYbn8MhTrRqF0FShUnw+7IjZYMOqn5XM/d3iAZTijVj
|
||||
XW/McYtIiDLMIX9jA3iKlK/lq4jtefPKD+RkG0eSGSDzw3+Cuvqh/B7fcKwNY1P4
|
||||
jd/mHuAzC4jeT1vme1ocIezqqULA0LKjmatzG+dehQ6+mHfh+G1iuB/C6vFPG+dR
|
||||
RqHM/Kk4ctiNEoellipbHSVQLKZSHVYTlVpxyz2R7tMr619Cuj+OQWYwdWgQy3Vp
|
||||
2m8kPAWA1EOlDKiL81ul0lEBpLFkWVHKTKBXdbin2d4FYhhyT19FpqMqhmPkNgDt
|
||||
0eVoCzyokhl9JJK/BsLHMRq5QSnlen1dE/alVpbtJ4vfNgG6gWRUcNmsMOHL/jfC
|
||||
R14=
|
||||
=MjJK
|
||||
hF4DboE6HHw4Rh8SAQdAVnPfBHrVKJSxVWOUxe/Xxtklt2fd/fwU5grY7JCvH1kw
|
||||
kJC70RC7Wcgx+gkqbkPAZqfozY2ScrC7lgga8SRNCyjaunVfQjlO6ZS9d3XhLUOr
|
||||
1GgBCQIQeoBRXoQHjOht18H9f4ZdKzqJ1R+sPiU2qakjDfVkoo1mu5LRFYUOz5tc
|
||||
633XPXbvL9Yi/hec+kSkynowbnpQtq6YfN2w7HASoBb5EUTdcmzGcflqoOhRNP8X
|
||||
uJogC+lhlySzDQ==
|
||||
=uZkZ
|
||||
-----END PGP MESSAGE-----
|
||||
fp: 7088C7421873E0DB97FF17C2245CAB70B4C225E9
|
||||
fp: 6423C518273734713931CB331C4814F03CA7C161
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.7.3
|
||||
|
|
|
@ -3,19 +3,18 @@ let ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.
|
|||
in
|
||||
{
|
||||
users.mutableUsers = false;
|
||||
users.users.misterio = {
|
||||
users.users.gburd = {
|
||||
isNormalUser = true;
|
||||
shell = pkgs.fish;
|
||||
shell = pkgs.bash;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"video"
|
||||
"audio"
|
||||
"networkmanager"
|
||||
] ++ ifTheyExist [
|
||||
"minecraft"
|
||||
"network"
|
||||
"wireshark"
|
||||
"i2c"
|
||||
"mysql"
|
||||
"docker"
|
||||
"podman"
|
||||
"git"
|
||||
|
@ -23,17 +22,20 @@ in
|
|||
"deluge"
|
||||
];
|
||||
|
||||
openssh.authorizedKeys.keys = [ (builtins.readFile ../../../../home/misterio/ssh.pub) ];
|
||||
passwordFile = config.sops.secrets.misterio-password.path;
|
||||
openssh.authorizedKeys.keys = [
|
||||
(builtins.readFile ../../../../home/gburd/ssh.pub)
|
||||
(builtins.readFile ../../../../home/gburd/symas-ssh.pub)
|
||||
];
|
||||
passwordFile = config.sops.secrets.gburd-password.path;
|
||||
packages = [ pkgs.home-manager ];
|
||||
};
|
||||
|
||||
sops.secrets.misterio-password = {
|
||||
sops.secrets.gburd-password = {
|
||||
sopsFile = ../../secrets.yaml;
|
||||
neededForUsers = true;
|
||||
};
|
||||
|
||||
home-manager.users.misterio = import ../../../../home/misterio/${config.networking.hostName}.nix;
|
||||
home-manager.users.gburd = import ../../../../home/gburd/${config.networking.hostName}.nix;
|
||||
|
||||
services.geoclue2.enable = true;
|
||||
security.pam.services = { swaylock = { }; };
|
|
@ -1,26 +0,0 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{
|
||||
imports = [ ./packages.nix ];
|
||||
|
||||
users.mutableUsers = false;
|
||||
users.users.layla = {
|
||||
isNormalUser = true;
|
||||
shell = pkgs.fish;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"video"
|
||||
"audio"
|
||||
];
|
||||
passwordFile = config.sops.secrets.layla-password.path;
|
||||
};
|
||||
|
||||
sops.secrets.layla-password = {
|
||||
sopsFile = ../../secrets.yaml;
|
||||
neededForUsers = true;
|
||||
};
|
||||
|
||||
# Persist entire home
|
||||
environment.persistence = {
|
||||
"/persist".directories = [ "/home/layla" ];
|
||||
};
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
steam-with-pkgs = pkgs.steam.override {
|
||||
extraPkgs = pkgs: with pkgs; [
|
||||
xorg.libXcursor
|
||||
xorg.libXi
|
||||
xorg.libXinerama
|
||||
xorg.libXScrnSaver
|
||||
libpng
|
||||
libpulseaudio
|
||||
libvorbis
|
||||
stdenv.cc.cc.lib
|
||||
libkrb5
|
||||
keyutils
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
users.users.layla.packages = with pkgs; [
|
||||
firefox
|
||||
|
||||
steam-with-pkgs
|
||||
gamescope
|
||||
protontricks
|
||||
lutris
|
||||
prismlauncher
|
||||
];
|
||||
}
|
|
@ -7,8 +7,10 @@
|
|||
./hardware-configuration.nix
|
||||
|
||||
../common/global
|
||||
../common/users/misterio
|
||||
../common/users/gburd
|
||||
|
||||
../common/optional/cups.nix
|
||||
../common/optional/x11-keymap.nix
|
||||
../common/optional/gamemode.nix
|
||||
../common/optional/wireless.nix
|
||||
../common/optional/greetd.nix
|
||||
|
@ -21,6 +23,9 @@
|
|||
hostName = "loki";
|
||||
};
|
||||
|
||||
# Enable networking
|
||||
# networking.networkmanager.enable = true;
|
||||
|
||||
boot = {
|
||||
kernelPackages = pkgs.linuxKernel.packages.linux_zen;
|
||||
};
|
||||
|
@ -52,5 +57,5 @@
|
|||
};
|
||||
};
|
||||
|
||||
system.stateVersion = "22.05";
|
||||
system.stateVersion = "23.05";
|
||||
}
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
{
|
||||
imports = [
|
||||
../common/optional/ephemeral-btrfs.nix
|
||||
../common/optional/encrypted-root.nix
|
||||
];
|
||||
|
||||
boot = {
|
||||
initrd = {
|
||||
availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "sd_mod" ];
|
||||
kernelModules = [ "kvm-amd" ];
|
||||
availableKernelModules = [ "ahci" "xhci_pci" "nvme" "thunderbolt" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||
luks.devices."luks-fae33851-b8d8-430b-8c6a-cd18675b8252".device = "/dev/disk/by-uuid/fae33851-b8d8-430b-8c6a-cd18675b8252";
|
||||
};
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
extraModulePackages = [ ];
|
||||
loader = {
|
||||
systemd-boot = {
|
||||
enable = true;
|
||||
|
@ -18,19 +19,21 @@
|
|||
};
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-label/ESP";
|
||||
fsType = "vfat";
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/88c63d59-2b86-4336-b8c7-1a4e6da1b443";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/2EF0-3AA5";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices = [{
|
||||
device = "/swap/swapfile";
|
||||
size = 8196;
|
||||
device = "/dev/disk/by-uuid/e7cc3e9c-2acc-4bbd-bc2f-a67a08a94db7";
|
||||
}];
|
||||
|
||||
nixpkgs.hostPlatform.system = "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = true;
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
powerManagement.cpuFreqGovernor = "powersave";
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINZS9ComqcdupshNC7+FYI/acmswnUcqcV9prNh+wFO5
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICdryaTF2JNA+ZhsH1BrUCE7ehgkGCJoUyFb1DJAgZBH
|
||||
|
|
|
@ -1 +1 @@
|
|||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD+sITM0U5OOyBMcOcf8+lHckw/IPSmRyqXmoqIRH8SQmgbuhqIgrCcMd9GPRt5c6nr3uMKj9JAxGTDsvpEoZAuTIln1Dx5LxRwIAlCKMznYfLBfeuU+vDoJ9p34+CkfT3+HJYgfLd2PLC31UKFl+y5PL0keRpbpCj3ooUHECH6jSQShu+4vlc6GVMYg3cYL287i8Z1S/V39x2Pd1tvZiKWt/rkXZbFmCQkncVmzEL8+mEk/4Xig7BLugjg+C7pqvzJ7U8LNjsknp93Kl+EC2aCrIFY2qKPMwiEqAcw+sy1bAH6pn9yRGvLIvn0F/f5JuN0ZF4PiMntK1hg3Jgb/gJxI0CJnGD48nhur2h/qTNoLEV5mPl8GyY7l3on8WO48QxMRnqWW8AtBmjvKPDwCCzJxKRFqqj6p9L52i0pekPXjVJw9mDy8xkWrqiXm9+9qtsi8ZaOJ7Z8XktNGKNjUowfpKOE77qVYQAojibM1Yj1w8gPGvRfxJ9qAi77C1kPghBx6A9GyAAXbRsGXCZJCzMqNJ0N04gs9B/NbnIDNYyTnAFLAS8RZro06cYvxHogpHMNyzzax7W/K3XiAJui5Dcu3oIaGjO0zs+iLYv8y5JVLs7DHjb+zFhBnNZvdPj1fd6oLg/tDRXzrqlqSJhWg1D/5NdLV235WX9GhuXyXETH/Q==
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDB2YjDJmsiUtHkPWE/Y6tqwtVcJaa/fIY7wYViUwn7bF4+OhC3Su7bN1C8TA5fhgpZWrzZXBMh74lrSG8RkbldGPyAThaUrTxVzzYdJmOvGNldynf19zrzprNFfjHvtTUosz7VTd0yEB7Ih/+5bNs7bDP0oKKoXvGruNwN0hdrDC299ocBAjmpLDXs8vSQoveuEEv8zyHJaOq1Fs9rw7IkTxk2Lj06MLzVD4ebKblQMnJ2xbJ5OEn/f+ktu+XKHGHYSgg+3mI+TEKVrle7INuiidY5fixhYFGp+T+Etj+TM02iIKG/7E0mNS+BmbUl0iWi6uS5PJaCkgW0s8VrtT/fP1L0yd0SwgGrmQAqzeoCjlEBUbzrc8YjJgg+FU4e6YY37f2dQ+FJigdGGAukH0VDYWrlnD0flfQ0KEVNnTo6CqmX/g7BBf88y6HF1BHL4sN73WHeC9FveEHBchtgfjBYf9GT8lYQnDSEisHU6C4Saz0BD3QufLDsjuvpMB+7IzYEkQrIQppRhvDT/buidwLzyBv6F9nUvlaAF9xSANLaie7iFkf+NeTFlOgEKxTTsBb8DwPGVeqHWrIfCNUjHeVgCr1FUIxnVMzIuT3osF3r+Z1NtEhNLxIHur0x8CF74m7mv5+n+0F185VPZDQCCn+6P1Zq4MWTyc22QslZRj/d8Q==
|
|
@ -1,7 +0,0 @@
|
|||
# Add your reusable home-manager modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
||||
# These should be stuff you would like to share with others, not your personal configurations.
|
||||
|
||||
{
|
||||
# List your module files here
|
||||
# my-module = import ./my-module.nix;
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
# Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
||||
# These should be stuff you would like to share with others, not your personal configurations.
|
||||
|
||||
{
|
||||
# List your module files here
|
||||
# my-module = import ./my-module.nix;
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
# This file defines overlays
|
||||
{ inputs, ... }:
|
||||
{
|
||||
# This one brings our custom packages from the 'pkgs' directory
|
||||
additions = final: _prev: import ../pkgs { pkgs = final; };
|
||||
|
||||
# This one contains whatever you want to overlay
|
||||
# You can change versions, add patches, set compilation flags, anything really.
|
||||
# https://nixos.wiki/wiki/Overlays
|
||||
modifications = final: prev: {
|
||||
# example = prev.example.overrideAttrs (oldAttrs: rec {
|
||||
# ...
|
||||
# });
|
||||
};
|
||||
|
||||
# When applied, the unstable nixpkgs set (declared in the flake inputs) will
|
||||
# be accessible through 'pkgs.unstable'
|
||||
unstable-packages = final: _prev: {
|
||||
unstable = import inputs.nixpkgs-unstable {
|
||||
system = final.system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -56,22 +56,19 @@ in
|
|||
patches = (oldAttrs.patches or [ ]) ++ [ ./pfetch.patch ];
|
||||
});
|
||||
|
||||
# Sane default values and crash avoidance (https://github.com/k-vernooy/trekscii/pull/1)
|
||||
trekscii = addPatches prev.trekscii [ ./trekscii.patch ];
|
||||
|
||||
qutebrowser = prev.qutebrowser.overrideAttrs (oldAttrs: {
|
||||
patches = (oldAttrs.patches or [ ]) ++ [ ./qutebrowser-tree-tabs.diff ];
|
||||
});
|
||||
|
||||
scgit = prev.cgit-pink.overrideAttrs (_: {
|
||||
pname = "scgit";
|
||||
version = "0.1";
|
||||
src = final.fetchFromSourcehut {
|
||||
owner = "~misterio";
|
||||
repo = "scgit";
|
||||
rev = "2cd05c95827fb94740e876733dc6f7fe88340de2";
|
||||
sha256 = "sha256-95mRJ3ZCSkLHqehFQdwM2BY0h+YDhohwpnRiF6/lZtA=";
|
||||
};
|
||||
});
|
||||
# scgit = prev.cgit-pink.overrideAttrs (_: {
|
||||
# pname = "scgit";
|
||||
# version = "0.1";
|
||||
# src = final.fetchFromSourcehut {
|
||||
# owner = "~misterio";
|
||||
# repo = "scgit";
|
||||
# rev = "2cd05c95827fb94740e876733dc6f7fe88340de2";
|
||||
# sha256 = "sha256-95mRJ3ZCSkLHqehFQdwM2BY0h+YDhohwpnRiF6/lZtA=";
|
||||
# };
|
||||
# });
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,79 +0,0 @@
|
|||
diff --git a/README.md b/README.md
|
||||
index 103cc78..1e3b32e 100644
|
||||
--- a/README.md
|
||||
+++ b/README.md
|
||||
@@ -17,10 +17,16 @@ $ make
|
||||
```bash
|
||||
trekscii [height] [width]
|
||||
```
|
||||
+
|
||||
+`height` and `width` must be larger than `16` and `46`, respectively. If not
|
||||
+specified, they will default to half the respective terminal dimension.
|
||||
+
|
||||
e.g.
|
||||
|
||||
```bash
|
||||
-trekscii 25 85
|
||||
+trekscii 25 85 # fixed dimensions
|
||||
trekscii 35 $(tput cols) # terminal width, fixed height
|
||||
trekscii $(tput lines) $(tput cols) # full-terminal
|
||||
+trekscii $(tput lines) # full-terminal height, half-terminal width
|
||||
+trekscii # half-terminal height, half-terminal width
|
||||
```
|
||||
diff --git a/src/trekscii.cpp b/src/trekscii.cpp
|
||||
index 1b14d9a..2238ed1 100644
|
||||
--- a/src/trekscii.cpp
|
||||
+++ b/src/trekscii.cpp
|
||||
@@ -1,7 +1,9 @@
|
||||
#include <iostream>
|
||||
+#include <sys/ioctl.h>
|
||||
#include "trekscii.h"
|
||||
|
||||
-
|
||||
+#define MIN_WIDTH 46
|
||||
+#define MIN_HEIGHT 16
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
|
||||
@@ -11,12 +13,36 @@ int main(int argc, char** argv) {
|
||||
fread(&seed, 4, 1, devrnd);
|
||||
fclose(devrnd);
|
||||
srand(seed);
|
||||
-
|
||||
|
||||
- int dimY = std::stoi(argv[1]);
|
||||
- int dimX = std::stoi(argv[2]);
|
||||
+ // get window size
|
||||
+ struct winsize w;
|
||||
+ ioctl(0, TIOCGWINSZ, &w);
|
||||
+
|
||||
+ int dimY;
|
||||
+ if (argc >= 2) {
|
||||
+ dimY = std::stoi(argv[1]);
|
||||
+ if (dimY < MIN_HEIGHT) {
|
||||
+ std::cerr << "Error: height must be at least " << MIN_HEIGHT << std::endl;
|
||||
+ return 1;
|
||||
+ }
|
||||
+ } else {
|
||||
+ // default to half terminal height, with MIN_HEIGHT min
|
||||
+ dimY = std::max(w.ws_row / 2, MIN_HEIGHT);
|
||||
+ }
|
||||
+
|
||||
+ int dimX;
|
||||
+ if (argc >= 3) {
|
||||
+ dimX = std::stoi(argv[2]);
|
||||
+ if (dimX < MIN_WIDTH) {
|
||||
+ std::cerr << "Error: width must be at least " << MIN_WIDTH << std::endl;
|
||||
+ return 1;
|
||||
+ }
|
||||
+ } else {
|
||||
+ // default to half terminal width, with MIN_WIDTH min
|
||||
+ dimX = std::max(w.ws_col / 2, MIN_WIDTH);
|
||||
+ }
|
||||
|
||||
Canvas canvas = Canvas(dimX, dimY - 2);
|
||||
canvas.generate();
|
||||
canvas.print();
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
|
@ -1,6 +0,0 @@
|
|||
# Custom packages, that can be defined similarly to ones from nixpkgs
|
||||
# You can build them using 'nix build .#example' or (legacy) 'nix-build -A example'
|
||||
|
||||
{ pkgs ? (import ../nixpkgs.nix) { } }: {
|
||||
# example = pkgs.callPackage ./example { };
|
||||
}
|
|
@ -3,12 +3,8 @@
|
|||
# Packages with an actual source
|
||||
rgbdaemon = pkgs.callPackage ./rgbdaemon { };
|
||||
shellcolord = pkgs.callPackage ./shellcolord { };
|
||||
trekscii = pkgs.callPackage ./trekscii { };
|
||||
speedtestpp = pkgs.callPackage ./speedtestpp { };
|
||||
lando = pkgs.callPackage ./lando { };
|
||||
tidal-dl = pkgs.python3Packages.callPackage ./tidal-dl { };
|
||||
qt6gtk2 = pkgs.qt6Packages.callPackage ./qt6gtk2 { };
|
||||
hdos = pkgs.callPackage ./hdos { };
|
||||
|
||||
# Personal scripts
|
||||
nix-inspect = pkgs.callPackage ./nix-inspect { };
|
||||
|
@ -19,8 +15,4 @@
|
|||
lyrics = pkgs.callPackage ./lyrics { };
|
||||
xpo = pkgs.callPackage ./xpo { };
|
||||
tly = pkgs.callPackage ./tly { };
|
||||
hyprslurp = pkgs.callPackage ./hyprslurp { };
|
||||
|
||||
# My slightly customized plymouth theme, just makes the blue outline white
|
||||
plymouth-spinner-monochrome = pkgs.callPackage ./plymouth-spinner-monochrome { };
|
||||
}
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
{ lib, stdenv, fetchurl, makeWrapper, openjdk11, makeDesktopItem, copyDesktopItems }:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hdos";
|
||||
version = "411";
|
||||
|
||||
src = fetchurl {
|
||||
# TODO find out a stable URL
|
||||
url = "https://cdn.hdos.dev/launcher/latest/hdos-launcher.jar";
|
||||
hash = "sha256-00ddeR+ov6Tjrn+pscXoao4C0ek/iP9Hdlgq946pL8A=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
desktop = makeDesktopItem {
|
||||
name = "HDOS";
|
||||
type = "Application";
|
||||
exec = "hdos";
|
||||
icon = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/flathub/dev.hdos.HDOS/8e17cbecb06548fde2c023032e89ddf30befeabc/dev.hdos.HDOS.png";
|
||||
hash = "sha256-pqLNJ0g7GCPotgEPfw2ZZOqapaCRAsJxB09INp6Y6gM=";
|
||||
};
|
||||
comment = "HDOS is a client for Old School RuneScape that emulates the era of 2008-2011 RuneScape HD";
|
||||
desktopName = "HDOS";
|
||||
genericName = "Oldschool Runescape";
|
||||
categories = [ "Game" ];
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper copyDesktopItems ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
makeWrapper ${openjdk11}/bin/java $out/bin/hdos --add-flags "-jar $src"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
desktopItems = [ finalAttrs.desktop ];
|
||||
|
||||
meta = {
|
||||
description = "High Detail Old School Runescape Client";
|
||||
homepage = "https://hdos.dev";
|
||||
changelog = "https://hdos.dev/changelog";
|
||||
sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
|
||||
license = lib.licenses.unfreeRedistributable;
|
||||
platforms = openjdk11.meta.platforms;
|
||||
maintainers = [ lib.maintainers.misterio77 ];
|
||||
};
|
||||
})
|
|
@ -1,16 +0,0 @@
|
|||
{ writeShellApplication, hyprland, jq, slurp }:
|
||||
writeShellApplication {
|
||||
name = "hyprslurp";
|
||||
runtimeInputs = [ hyprland jq slurp ];
|
||||
text = ''
|
||||
hyprctl clients -j | \
|
||||
jq -r \
|
||||
--argjson workspaces "$(\
|
||||
hyprctl monitors -j | \
|
||||
jq -r 'map(.activeWorkspace.id)'\
|
||||
)" \
|
||||
'map(select([.workspace.id] | inside($workspaces)))' | \
|
||||
jq -r '.[] | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | \
|
||||
slurp "$@"
|
||||
'';
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, buildNpmPackage
|
||||
, makeWrapper
|
||||
, nodejs-16_x
|
||||
, docker-compose_1
|
||||
, docker
|
||||
}:
|
||||
let
|
||||
nodejs = nodejs-16_x;
|
||||
docker-compose = docker-compose_1;
|
||||
in
|
||||
buildNpmPackage.override { inherit nodejs; } rec {
|
||||
pname = "lando";
|
||||
version = "3.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lando";
|
||||
repo = "cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-BFqCmkAnIxeVgzeMvTXFS/mgU1z1KOe74px03qnOvhM=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-G54gtJ3wClcHrTqMDQbnaDZ2yr8D3Hv8q3Bg1UeC0Tk=";
|
||||
|
||||
makeCacheWritable = true;
|
||||
npmFlags = [ "--legacy-peer-deps" ];
|
||||
dontNpmBuild = true;
|
||||
|
||||
postPatch = ''
|
||||
cp ${./package-lock.json} package-lock.json
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A development tool for all your projects that is fast, easy, powerful and liberating.";
|
||||
homepage = "https://lando.dev";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ misterio77 ];
|
||||
platforms = platforms.linux;
|
||||
broken = true; # Not working 100%
|
||||
};
|
||||
}
|
29402
pkgs/lando/package-lock.json
generated
|
@ -1,18 +0,0 @@
|
|||
{ stdenv, logo ? null, lib, ... }: stdenv.mkDerivation {
|
||||
pname = "plymouth-spinner-monochrome";
|
||||
version = "1.0";
|
||||
src = ./src;
|
||||
|
||||
buildPhase = lib.optionalString (logo != null) ''
|
||||
cp $src . -r
|
||||
ln -s ${logo} ./share/plymouth/themes/spinner-monochrome/watermark.png
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cp -r . $out
|
||||
'';
|
||||
|
||||
meta = {
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |