Compare commits
456 commits
3
.stylua.toml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
indent_type = "Spaces"
|
||||||
|
call_parentheses = "None"
|
||||||
|
collapse_simple_statement = "Always"
|
11
Makefile
|
@ -1,11 +1,18 @@
|
||||||
.PHONY: default build flathub
|
.PHONY: default build server flathub
|
||||||
|
|
||||||
HOST := $(shell hostname)
|
HOST := $(shell hostname)
|
||||||
|
|
||||||
default: build
|
default: build
|
||||||
|
|
||||||
build:
|
build:
|
||||||
nix build -j 1 --keep-going .#nixosConfigurations.$(HOST).config.system.build.toplevel
|
nix build --no-link --keep-going .#nixosConfigurations.$(HOST).config.system.build.toplevel
|
||||||
|
|
||||||
|
fonts:
|
||||||
|
nix build --no-link --max-jobs 1 .#iosevka-custom-aile .#iosevka-custom-etoile .#iosevka-custom-nerdfont
|
||||||
|
|
||||||
|
server: fonts
|
||||||
|
nixos-rebuild build --flake .#Legion
|
||||||
|
nix copy ./result --to ssh://legion && rm ./result
|
||||||
|
|
||||||
flathub:
|
flathub:
|
||||||
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||||
|
|
316
flake.lock
|
@ -5,11 +5,11 @@
|
||||||
"fromYaml": "fromYaml"
|
"fromYaml": "fromYaml"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1708890466,
|
"lastModified": 1732200724,
|
||||||
"narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=",
|
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=",
|
||||||
"owner": "SenchoPens",
|
"owner": "SenchoPens",
|
||||||
"repo": "base16.nix",
|
"repo": "base16.nix",
|
||||||
"rev": "665b3c6748534eb766c777298721cece9453fdae",
|
"rev": "153d52373b0fb2d343592871009a286ec8837aec",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -34,22 +34,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"base16-foot": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696725948,
|
|
||||||
"narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=",
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-foot",
|
|
||||||
"rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-foot",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-helix": {
|
"base16-helix": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -66,46 +50,14 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"base16-kitty": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1665001328,
|
|
||||||
"narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=",
|
|
||||||
"owner": "kdrag0n",
|
|
||||||
"repo": "base16-kitty",
|
|
||||||
"rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "kdrag0n",
|
|
||||||
"repo": "base16-kitty",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-tmux": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696725902,
|
|
||||||
"narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=",
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-tmux",
|
|
||||||
"rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-tmux",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-vim": {
|
"base16-vim": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1716150083,
|
"lastModified": 1731949548,
|
||||||
"narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=",
|
"narHash": "sha256-XIDexXM66sSh5j/x70e054BnUsviibUShW7XhbDGhYo=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-vim",
|
"repo": "base16-vim",
|
||||||
"rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d",
|
"rev": "61165b1632409bd55e530f3dbdd4477f011cadc6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -117,11 +69,11 @@
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673956053,
|
"lastModified": 1696426674,
|
||||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -138,11 +90,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710146030,
|
"lastModified": 1731533236,
|
||||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -154,11 +106,11 @@
|
||||||
"fromYaml": {
|
"fromYaml": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689549921,
|
"lastModified": 1731966426,
|
||||||
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
|
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
|
||||||
"owner": "SenchoPens",
|
"owner": "SenchoPens",
|
||||||
"repo": "fromYaml",
|
"repo": "fromYaml",
|
||||||
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
|
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -167,19 +119,72 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"git-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"stylix",
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": [
|
||||||
|
"stylix",
|
||||||
|
"git-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731363552,
|
||||||
|
"narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
|
"git-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"gnome-shell": {
|
"gnome-shell": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713702291,
|
"lastModified": 1732369855,
|
||||||
"narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=",
|
"narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=",
|
||||||
"owner": "GNOME",
|
"owner": "GNOME",
|
||||||
"repo": "gnome-shell",
|
"repo": "gnome-shell",
|
||||||
"rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934",
|
"rev": "dadd58f630eeea41d645ee225a63f719390829dc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "GNOME",
|
"owner": "GNOME",
|
||||||
"ref": "46.1",
|
"ref": "47.2",
|
||||||
"repo": "gnome-shell",
|
"repo": "gnome-shell",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
@ -191,134 +196,69 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726989464,
|
"lastModified": 1735344290,
|
||||||
"narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=",
|
"narHash": "sha256-oJDtWPH1oJT34RJK1FSWjwX4qcGOBRkcNQPD0EbSfNM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176",
|
"rev": "613691f285dad87694c2ba1c9e6298d04736292d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-24.05",
|
"ref": "release-24.11",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"iosevka-custom": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727251758,
|
|
||||||
"narHash": "sha256-lZkaXStyIYGYeOBNejKZO5zw2AijomUJCoqxQg46qmg=",
|
|
||||||
"ref": "refs/heads/main",
|
|
||||||
"rev": "4b7699f416f13439aed68e7447ef65ab9d08109a",
|
|
||||||
"revCount": 16,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-index-database": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1726975622,
|
|
||||||
"narHash": "sha256-bPDZosnom0+02ywmMZAvmj7zvsQ6mVv/5kmvSgbTkaY=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nix-index-database",
|
|
||||||
"rev": "c7515c2fdaf2e1f3f49856cef6cec95bb2138417",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nix-index-database",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726937504,
|
"lastModified": 1736061677,
|
||||||
"narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=",
|
"narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9357f4f23713673f310988025d9dc261c20e70c6",
|
"rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-24.11",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726838390,
|
"lastModified": 1735554305,
|
||||||
"narHash": "sha256-NmcVhGElxDbmEWzgXsyAjlRhUus/nEqPC5So7BOJLUM=",
|
"narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "944b2aea7f0a2d7c79f72468106bc5510cbf5101",
|
"rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-24.05",
|
"ref": "nixpkgs-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"plasma-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"home-manager": [
|
|
||||||
"home-manager"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727210241,
|
|
||||||
"narHash": "sha256-lufS6uzSbSrggNCSgubymMQWnQMh7PvQ+lRZ8qH9Uoc=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "plasma-manager",
|
|
||||||
"rev": "a02fef2ece8084aff0b41700bb57d24d73574cd1",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "plasma-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"iosevka-custom": "iosevka-custom",
|
"nixpkgs": "nixpkgs",
|
||||||
"nix-index-database": "nix-index-database",
|
"stylix": "stylix",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"treefmt-nix": "treefmt-nix"
|
||||||
"plasma-manager": "plasma-manager",
|
|
||||||
"stylix": "stylix"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stylix": {
|
"stylix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"base16": "base16",
|
"base16": "base16",
|
||||||
"base16-fish": "base16-fish",
|
"base16-fish": "base16-fish",
|
||||||
"base16-foot": "base16-foot",
|
|
||||||
"base16-helix": "base16-helix",
|
"base16-helix": "base16-helix",
|
||||||
"base16-kitty": "base16-kitty",
|
|
||||||
"base16-tmux": "base16-tmux",
|
|
||||||
"base16-vim": "base16-vim",
|
"base16-vim": "base16-vim",
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
|
"git-hooks": "git-hooks",
|
||||||
"gnome-shell": "gnome-shell",
|
"gnome-shell": "gnome-shell",
|
||||||
"home-manager": [
|
"home-manager": [
|
||||||
"home-manager"
|
"home-manager"
|
||||||
|
@ -326,18 +266,22 @@
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"systems": "systems"
|
"systems": "systems",
|
||||||
|
"tinted-foot": "tinted-foot",
|
||||||
|
"tinted-kitty": "tinted-kitty",
|
||||||
|
"tinted-tmux": "tinted-tmux"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726828291,
|
"lastModified": 1736019457,
|
||||||
"narHash": "sha256-pGRPVVm7UXf+fx2NVpH6FFSWR9AynG6eoVlagaqH9i4=",
|
"narHash": "sha256-MWe3RXEV9dov1wFZraWagVAxynPo/VceStIYfNRgqG4=",
|
||||||
"owner": "danth",
|
"owner": "danth",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "53bcceb4e46d0b3e8ae6434a7a6bcc3463092093",
|
"rev": "5204b085385c0bfaa1eb1bb0f8dc81922012128d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "danth",
|
"owner": "danth",
|
||||||
|
"ref": "release-24.11",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
@ -356,6 +300,74 @@
|
||||||
"repo": "default",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"tinted-foot": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726913040,
|
||||||
|
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-kitty": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1716423189,
|
||||||
|
"narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-tmux": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1729501581,
|
||||||
|
"narHash": "sha256-1ohEFMC23elnl39kxWnjzH1l2DFWWx4DhFNNYDTYt54=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"rev": "f0e7f7974a6441033eb0a172a0342e96722b4f14",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736154270,
|
||||||
|
"narHash": "sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "13c913f5deb3a5c08bb810efd89dc8cb24dd968b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
56
flake.nix
|
@ -7,35 +7,47 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||||
|
treefmt-nix.url = "github:numtide/treefmt-nix";
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-24.05";
|
url = "github:nix-community/home-manager/release-24.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
plasma-manager = {
|
|
||||||
url = "github:nix-community/plasma-manager";
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.follows = "nixpkgs";
|
|
||||||
home-manager.follows = "home-manager";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
stylix = {
|
stylix = {
|
||||||
url = "github:danth/stylix";
|
url = "github:danth/stylix/release-24.11";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.follows = "nixpkgs";
|
nixpkgs.follows = "nixpkgs";
|
||||||
home-manager.follows = "home-manager";
|
home-manager.follows = "home-manager";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nix-index-database = {
|
|
||||||
url = "github:nix-community/nix-index-database";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
inputs@{ nixpkgs, ... }:
|
inputs@{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
treefmt-nix,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
treefmt = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
packages.x86_64-linux =
|
||||||
|
let
|
||||||
|
fonts = pkgs.callPackage ./system/fonts.nix { };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit (fonts)
|
||||||
|
iosevka-custom
|
||||||
|
iosevka-custom-aile
|
||||||
|
iosevka-custom-etoile
|
||||||
|
iosevka-custom-nerdfont
|
||||||
|
;
|
||||||
|
};
|
||||||
|
formatter.x86_64-linux = treefmt.config.build.wrapper;
|
||||||
|
checks.x86_64-linux.formatting = treefmt.config.build.check self;
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
## Server
|
## Server
|
||||||
Legion = nixpkgs.lib.nixosSystem {
|
Legion = nixpkgs.lib.nixosSystem {
|
||||||
|
@ -64,19 +76,11 @@
|
||||||
modules = [ ./system/default.nix ];
|
modules = [ ./system/default.nix ];
|
||||||
};
|
};
|
||||||
## Work
|
## Work
|
||||||
Tone = nixpkgs.lib.nixosSystem {
|
Monarch = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
username = "elitherl";
|
username = "elitherl";
|
||||||
hostName = "Tone";
|
hostName = "Monarch";
|
||||||
};
|
|
||||||
modules = [ ./system/default.nix ];
|
|
||||||
};
|
|
||||||
Ronin = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs;
|
|
||||||
username = "elitherl";
|
|
||||||
hostName = "Ronin";
|
|
||||||
};
|
};
|
||||||
modules = [ ./system/default.nix ];
|
modules = [ ./system/default.nix ];
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,20 +1,29 @@
|
||||||
{ ... }:
|
{ lib, username, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./services/adguardhome.nix
|
||||||
./services/caddy.nix
|
./services/caddy.nix
|
||||||
./services/forgejo.nix
|
./services/forgejo.nix
|
||||||
./services/grafana.nix
|
./services/grafana.nix
|
||||||
./services/home-assistant.nix
|
./services/home-assistant.nix
|
||||||
./services/minecraft.nix
|
|
||||||
./services/nix-serve.nix
|
./services/nix-serve.nix
|
||||||
./services/satisfactory/default.nix
|
|
||||||
./services/sshd.nix
|
./services/sshd.nix
|
||||||
./services/syncthing.nix
|
./services/syncthing.nix
|
||||||
|
./services/xandikos.nix
|
||||||
|
# ./services/minecraft.nix
|
||||||
|
# ./services/satisfactory/default.nix
|
||||||
];
|
];
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
systemd-boot.enable = true;
|
systemd-boot.enable = true;
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
};
|
};
|
||||||
|
home-manager.users.${username} = {
|
||||||
|
imports = [ ./home/emacs/default.nix ];
|
||||||
|
services.emacs.enable = false;
|
||||||
|
home.stateVersion = "23.05";
|
||||||
|
};
|
||||||
|
system.stateVersion = "23.05";
|
||||||
users.mutableUsers = false;
|
users.mutableUsers = false;
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
|
networking.nameservers = lib.mkForce [ "0.0.0.0" ];
|
||||||
}
|
}
|
||||||
|
|
33
system/MRVN.nix
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{ pkgs, username, ... }:
|
||||||
|
{
|
||||||
|
# nixpkgs.config.kodi.enableAdvancedLauncher = true;
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
desktopManager.kodi = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.kodi.withPackages (
|
||||||
|
kp: with kp; [
|
||||||
|
jellyfin
|
||||||
|
youtube
|
||||||
|
netflix
|
||||||
|
]
|
||||||
|
);
|
||||||
|
};
|
||||||
|
displayManager = {
|
||||||
|
lightdm.greeter.enable = false;
|
||||||
|
autoLogin = {
|
||||||
|
enable = true;
|
||||||
|
user = username;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
networking.firewall = {
|
||||||
|
allowedTCPPorts = [ 8080 ];
|
||||||
|
allowedUDPPorts = [ 8080 ];
|
||||||
|
};
|
||||||
|
home-manager.users.${username} = {
|
||||||
|
home.stateVersion = null;
|
||||||
|
};
|
||||||
|
system.stateVersion = null;
|
||||||
|
users.mutableUsers = false;
|
||||||
|
}
|
|
@ -1,8 +1,15 @@
|
||||||
{ pkgs, username, ... }:
|
{ pkgs, username, ... }:
|
||||||
{
|
{
|
||||||
imports = [ ./laptop.nix ];
|
imports = [
|
||||||
|
./laptop.nix
|
||||||
|
./work.nix
|
||||||
|
];
|
||||||
home-manager.users.${username} = {
|
home-manager.users.${username} = {
|
||||||
imports = [ ./home/work.nix ];
|
home.stateVersion = "23.05";
|
||||||
|
wayland.windowManager.hyprland.settings.monitor = [
|
||||||
|
"eDP-1,preferred,auto,1.25"
|
||||||
|
"desc:Dell Inc. DELL P3223QE CCG8YN3,preferred,auto-left,1.5"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
boot.initrd = {
|
boot.initrd = {
|
||||||
secrets = {
|
secrets = {
|
||||||
|
@ -13,14 +20,12 @@
|
||||||
keyFile = "/crypto_keyfile.bin";
|
keyFile = "/crypto_keyfile.bin";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
system.stateVersion = "23.05";
|
||||||
environment = {
|
environment = {
|
||||||
etc."ppp/options".text = ''
|
etc."ppp/options".text = ''
|
||||||
ipcp-accept-remote
|
ipcp-accept-remote
|
||||||
'';
|
'';
|
||||||
systemPackages = with pkgs; [ openfortivpn ];
|
systemPackages = with pkgs; [ openfortivpn ];
|
||||||
};
|
};
|
||||||
services = {
|
services.hardware.bolt.enable = true;
|
||||||
samba.enable = true;
|
|
||||||
hardware.bolt.enable = true;
|
|
||||||
};
|
|
||||||
}
|
}
|
|
@ -1,4 +1,9 @@
|
||||||
{ ... }:
|
{ username, ... }:
|
||||||
{
|
{
|
||||||
imports = [ ./laptop.nix ];
|
imports = [ ./laptop.nix ];
|
||||||
|
home-manager.users.${username} = {
|
||||||
|
home.stateVersion = "23.05";
|
||||||
|
wayland.windowManager.hyprland.settings.monitor = [ "eDP-1,preferred,auto,1.25" ];
|
||||||
|
};
|
||||||
|
system.stateVersion = "23.05";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
{ pkgs, username, ... }:
|
|
||||||
{
|
|
||||||
imports = [ ./desktop.nix ];
|
|
||||||
home-manager.users.${username} = {
|
|
||||||
imports = [ ./home/work.nix ];
|
|
||||||
};
|
|
||||||
boot = {
|
|
||||||
loader.efi.efiSysMountPoint = "/boot/efi";
|
|
||||||
initrd = {
|
|
||||||
secrets = {
|
|
||||||
"/crypto_keyfile.bin" = null;
|
|
||||||
};
|
|
||||||
luks.devices."luks-47d34268-5100-4eba-b34d-220f4239c1cb" = {
|
|
||||||
device = "/dev/disk/by-uuid/47d34268-5100-4eba-b34d-220f4239c1cb";
|
|
||||||
keyFile = "/crypto_keyfile.bin";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
environment = {
|
|
||||||
etc."ppp/options".text = ''
|
|
||||||
ipcp-accept-remote
|
|
||||||
'';
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
openfortivpn
|
|
||||||
samba
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -5,26 +5,41 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [ ./desktop.nix ];
|
imports = [
|
||||||
environment.sessionVariables.MANGOHUD = 1;
|
./desktop.nix
|
||||||
|
./steam.nix
|
||||||
|
];
|
||||||
home-manager.users.${username} = {
|
home-manager.users.${username} = {
|
||||||
home.packages = with pkgs; [
|
imports = [ ./home/swww/default.nix ];
|
||||||
krita
|
home = {
|
||||||
kdenlive
|
stateVersion = "23.05";
|
||||||
|
packages = with pkgs; [
|
||||||
helvum
|
helvum
|
||||||
prusa-slicer
|
prusa-slicer
|
||||||
blender
|
blender
|
||||||
freecad
|
freecad
|
||||||
openscad
|
openscad
|
||||||
kicad-small
|
kicad-small
|
||||||
mangohud
|
|
||||||
wineWowPackages.waylandFull
|
wineWowPackages.waylandFull
|
||||||
winetricks
|
winetricks
|
||||||
lutris
|
lutris
|
||||||
cartridges
|
cartridges
|
||||||
prismlauncher
|
prismlauncher
|
||||||
|
(retroarch.override {
|
||||||
|
cores = with libretro; [
|
||||||
|
mupen64plus
|
||||||
|
dolphin
|
||||||
|
mgba
|
||||||
|
citra
|
||||||
|
pcsx2
|
||||||
|
ppsspp
|
||||||
];
|
];
|
||||||
programs.obs-studio = {
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
btop.package = pkgs.btop-rocm;
|
||||||
|
obs-studio = {
|
||||||
enable = true;
|
enable = true;
|
||||||
plugins = with pkgs.obs-studio-plugins; [
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
wlrobs
|
wlrobs
|
||||||
|
@ -33,49 +48,44 @@
|
||||||
input-overlay
|
input-overlay
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
xdg.configFile."MangoHud/MangoHud.conf".text = ''
|
};
|
||||||
preset=2
|
wayland.windowManager.hyprland.settings =
|
||||||
time
|
let
|
||||||
# text_color=FFFFFF
|
primary = "Microstep MSI G27CQ4 E2";
|
||||||
# gpu_color=2E9762
|
secondary = "Acer Technologies ED270R TJMEE0043W01";
|
||||||
# cpu_color=2E97CB
|
in
|
||||||
# vram_color=AD64C1
|
{
|
||||||
# ram_color=C26693
|
monitor = [
|
||||||
# engine_color=EB5B5B
|
"desc:${primary},2560x1440@144,1920x0,1.25,vrr,2"
|
||||||
# io_color=A491D3
|
"desc:${secondary},1920x1080@144,0x140,1.0,vrr,2"
|
||||||
# frametime_color=00FF00
|
];
|
||||||
# background_color=020202
|
workspace = [
|
||||||
# media_player_color=FFFFFF
|
"3, monitor:desc:${secondary}"
|
||||||
# wine_color=EB5B5B
|
"5, monitor:desc:${primary}"
|
||||||
# battery_color=FF9078
|
"7, monitor:desc:${primary}"
|
||||||
# network_color=E07B85
|
];
|
||||||
'';
|
};
|
||||||
};
|
};
|
||||||
boot = {
|
boot = {
|
||||||
|
kernel.sysctl = {
|
||||||
|
"vm.max_map_count" = 16777216;
|
||||||
|
"fs.file-max" = 524288;
|
||||||
|
};
|
||||||
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
||||||
extraModprobeConfig = ''
|
extraModprobeConfig = ''
|
||||||
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
hardware = {
|
hardware = {
|
||||||
amdgpu.initrd.enable = true;
|
amdgpu = {
|
||||||
opengl = {
|
initrd.enable = true;
|
||||||
|
opencl.enable = true;
|
||||||
|
};
|
||||||
|
graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
driSupport = true;
|
enable32Bit = true;
|
||||||
driSupport32Bit = true;
|
|
||||||
};
|
|
||||||
steam-hardware.enable = true;
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
gamemode.enable = true;
|
|
||||||
steam = {
|
|
||||||
enable = true;
|
|
||||||
remotePlay.openFirewall = true;
|
|
||||||
gamescopeSession.enable = true;
|
|
||||||
};
|
|
||||||
gamescope = {
|
|
||||||
enable = true;
|
|
||||||
capSysNice = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
services.hardware.openrgb.enable = true;
|
||||||
|
system.stateVersion = "23.05";
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,14 +29,14 @@
|
||||||
"flakes"
|
"flakes"
|
||||||
];
|
];
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
download-buffer-size = "2G";
|
|
||||||
substituters = [ "https://nix.xenia.me.uk" ];
|
substituters = [ "https://nix.xenia.me.uk" ];
|
||||||
trusted-public-keys = [ "nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI=" ];
|
trusted-public-keys = [ "nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI=" ];
|
||||||
};
|
};
|
||||||
|
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||||
channel.enable = true;
|
channel.enable = true;
|
||||||
gc = {
|
gc = {
|
||||||
automatic = true;
|
automatic = true;
|
||||||
options = "--delete-older-than 7d";
|
options = "--delete-older-than 3d";
|
||||||
};
|
};
|
||||||
optimise.automatic = true;
|
optimise.automatic = true;
|
||||||
registry.my-nixos = {
|
registry.my-nixos = {
|
||||||
|
@ -56,35 +56,28 @@
|
||||||
max-free = ${toString (1024 * 1024 * 1024)}
|
max-free = ${toString (1024 * 1024 * 1024)}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
nixpkgs = {
|
nixpkgs.config.allowUnfreePredicate =
|
||||||
config.allowUnfreePredicate =
|
|
||||||
pkg:
|
pkg:
|
||||||
builtins.elem (lib.getName pkg) [
|
builtins.elem (lib.getName pkg) [
|
||||||
"steam"
|
"steam"
|
||||||
|
"steam-unwrapped"
|
||||||
"steam-original"
|
"steam-original"
|
||||||
"steam-run"
|
"steam-run"
|
||||||
"steamcmd"
|
"steamcmd"
|
||||||
"nomachine-client"
|
"nomachine-client"
|
||||||
];
|
];
|
||||||
overlays = [ (final: prev: { inherit (inputs.plasma-manager.packages.${prev.system}) rc2nix; }) ];
|
system.autoUpgrade = {
|
||||||
};
|
|
||||||
system = {
|
|
||||||
stateVersion = "23.05";
|
|
||||||
autoUpgrade = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
persistent = true;
|
persistent = true;
|
||||||
allowReboot = false;
|
allowReboot = false;
|
||||||
flake = "git+${config.nix.registry.my-nixos.to.url}";
|
flake = "git+${config.nix.registry.my-nixos.to.url}";
|
||||||
dates = "02:00";
|
dates = "02:00";
|
||||||
randomizedDelaySec = "5min";
|
|
||||||
flags = [
|
flags = [
|
||||||
"--accept-flake-config"
|
|
||||||
"--option"
|
"--option"
|
||||||
"extra-binary-caches"
|
"extra-binary-caches"
|
||||||
"https://nix.xenia.me.uk"
|
"https://nix.xenia.me.uk"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
systemd.services = lib.mkIf config.system.autoUpgrade.enable {
|
systemd.services = lib.mkIf config.system.autoUpgrade.enable {
|
||||||
nixos-upgrade.serviceConfig = {
|
nixos-upgrade.serviceConfig = {
|
||||||
CPUQuota = "75%";
|
CPUQuota = "75%";
|
||||||
|
@ -98,7 +91,6 @@
|
||||||
};
|
};
|
||||||
networking = {
|
networking = {
|
||||||
inherit hostName;
|
inherit hostName;
|
||||||
networkmanager.enable = true;
|
|
||||||
firewall.enable = true;
|
firewall.enable = true;
|
||||||
nameservers = [ "9.9.9.9" ];
|
nameservers = [ "9.9.9.9" ];
|
||||||
};
|
};
|
||||||
|
@ -118,6 +110,7 @@
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
group = "users";
|
group = "users";
|
||||||
description = "Evie Litherland-Smith";
|
description = "Evie Litherland-Smith";
|
||||||
|
shell = pkgs.zsh;
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"networkmanager"
|
"networkmanager"
|
||||||
"wheel"
|
"wheel"
|
||||||
|
@ -125,6 +118,8 @@
|
||||||
"input"
|
"input"
|
||||||
"uinput"
|
"uinput"
|
||||||
"dialout"
|
"dialout"
|
||||||
|
"podman"
|
||||||
|
"gamemode"
|
||||||
];
|
];
|
||||||
initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
|
initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
|
||||||
openssh = {
|
openssh = {
|
||||||
|
@ -137,12 +132,16 @@
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
backupFileExtension = "backup";
|
backupFileExtension = "backup";
|
||||||
users.${username} = {
|
users.${username} = {
|
||||||
imports = [ ./home/default.nix ];
|
imports = [
|
||||||
|
./home/shell/default.nix
|
||||||
|
./home/scripts/default.nix
|
||||||
|
./home/gpg/default.nix
|
||||||
|
];
|
||||||
home = {
|
home = {
|
||||||
inherit username;
|
inherit username;
|
||||||
stateVersion = "23.05";
|
|
||||||
homeDirectory = "/home/${username}";
|
homeDirectory = "/home/${username}";
|
||||||
};
|
};
|
||||||
|
programs.home-manager.enable = true;
|
||||||
};
|
};
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
|
@ -162,16 +161,20 @@
|
||||||
file
|
file
|
||||||
zip
|
zip
|
||||||
unzip
|
unzip
|
||||||
|
p7zip
|
||||||
curl
|
curl
|
||||||
wget
|
wget
|
||||||
dig
|
dig
|
||||||
wireguard-tools
|
wireguard-tools
|
||||||
|
librespeed-cli
|
||||||
|
dust
|
||||||
quickemu
|
quickemu
|
||||||
distrobox
|
distrobox
|
||||||
];
|
];
|
||||||
localBinInPath = true;
|
localBinInPath = true;
|
||||||
};
|
};
|
||||||
programs = {
|
programs = {
|
||||||
|
zsh.enable = true;
|
||||||
command-not-found.enable = false;
|
command-not-found.enable = false;
|
||||||
ssh.startAgent = true;
|
ssh.startAgent = true;
|
||||||
nano = {
|
nano = {
|
||||||
|
@ -185,7 +188,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
passSecretService.enable = true;
|
|
||||||
upower.enable = true;
|
upower.enable = true;
|
||||||
power-profiles-daemon.enable = true;
|
power-profiles-daemon.enable = true;
|
||||||
system76-scheduler = {
|
system76-scheduler = {
|
||||||
|
@ -194,32 +196,54 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
virtualisation.podman.enable = true;
|
virtualisation = {
|
||||||
|
containers.enable = true;
|
||||||
|
podman = {
|
||||||
|
enable = true;
|
||||||
|
dockerCompat = true;
|
||||||
|
defaultNetwork.settings.dns_enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
location = {
|
||||||
|
latitude = 51.7;
|
||||||
|
longitude = -1.2;
|
||||||
|
provider = "manual";
|
||||||
|
};
|
||||||
time.timeZone = "Europe/London";
|
time.timeZone = "Europe/London";
|
||||||
i18n.defaultLocale = "en_GB.UTF-8";
|
i18n.defaultLocale = "en_GB.UTF-8";
|
||||||
console.useXkbConfig = true;
|
console.useXkbConfig = true;
|
||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
image = ./home/wallpapers/landscapes/tropic_island_day.jpg;
|
image = ./wallpapers/default.png;
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/one-light.yaml";
|
base16Scheme = lib.mkDefault "${pkgs.base16-schemes}/share/themes/onedark.yaml";
|
||||||
opacity.popups = 0.8;
|
polarity = config.lib.stylix.scheme.variant;
|
||||||
|
opacity = {
|
||||||
|
applications = 0.9;
|
||||||
|
desktop = 0.7;
|
||||||
|
popups = 0.5;
|
||||||
|
terminal = 0.9;
|
||||||
|
};
|
||||||
cursor = {
|
cursor = {
|
||||||
package = pkgs.volantes-cursors;
|
package = pkgs.volantes-cursors;
|
||||||
name = "volantes_cursors";
|
name = "volantes_cursors";
|
||||||
size = 32;
|
size = 32;
|
||||||
};
|
};
|
||||||
fonts = {
|
fonts =
|
||||||
|
let
|
||||||
|
fpkgs = pkgs.callPackage ./fonts.nix { };
|
||||||
|
in
|
||||||
|
{
|
||||||
serif = {
|
serif = {
|
||||||
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-etoile;
|
package = fpkgs.iosevka-custom-etoile;
|
||||||
name = inputs.iosevka-custom.outputs.names.iosevka-custom-etoile;
|
name = "Iosevka Custom Etoile";
|
||||||
};
|
};
|
||||||
sansSerif = {
|
sansSerif = {
|
||||||
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-aile;
|
package = fpkgs.iosevka-custom-aile;
|
||||||
name = inputs.iosevka-custom.outputs.names.iosevka-custom-aile;
|
name = "Iosevka Custom Aile";
|
||||||
};
|
};
|
||||||
monospace = {
|
monospace = {
|
||||||
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-nerdfont;
|
package = fpkgs.iosevka-custom-nerdfont;
|
||||||
name = inputs.iosevka-custom.outputs.names.iosevka-custom-nerdfont;
|
name = "IosevkaCustom Nerd Font Propo";
|
||||||
};
|
};
|
||||||
sizes = {
|
sizes = {
|
||||||
applications = 12;
|
applications = 12;
|
||||||
|
@ -229,27 +253,9 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
fonts = {
|
fonts.packages = with pkgs; [
|
||||||
packages =
|
liberation_ttf # Documents
|
||||||
(with config.stylix.fonts; [
|
|
||||||
serif.package
|
|
||||||
sansSerif.package
|
|
||||||
monospace.package
|
|
||||||
emoji.package
|
|
||||||
])
|
|
||||||
++ (with pkgs; [
|
|
||||||
lmodern # LaTeX
|
lmodern # LaTeX
|
||||||
font-awesome # Swappy Icons
|
|
||||||
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
||||||
]);
|
];
|
||||||
fontconfig = {
|
|
||||||
enable = true;
|
|
||||||
defaultFonts = with config.stylix.fonts; {
|
|
||||||
serif = [ serif.name ];
|
|
||||||
sansSerif = [ sansSerif.name ];
|
|
||||||
monospace = [ monospace.name ];
|
|
||||||
emoji = [ emoji.name ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,24 @@
|
||||||
{ pkgs, username, ... }:
|
|
||||||
{
|
{
|
||||||
imports = [ ./plasma.nix ];
|
config,
|
||||||
home-manager.users.${username}.imports = [ ./home/desktop.nix ];
|
pkgs,
|
||||||
|
username,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
nixpkgs.config.chromium.commandLineArgs = "--password-store='gnome-libsecret' --enable-features=UseOzonePlatform --ozone-platform=wayland";
|
nixpkgs.config.chromium.commandLineArgs = "--password-store='gnome-libsecret' --enable-features=UseOzonePlatform --ozone-platform=wayland";
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
environment = {
|
environment = {
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
NIXOS_OZONE_WL = "1";
|
NIXOS_OZONE_WL = "1";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
|
||||||
|
MPLBACKEND = "TkAgg";
|
||||||
|
GDK_BACKEND = "wayland,x11";
|
||||||
|
XDG_SESSION_TYPE = "wayland";
|
||||||
QT_QPA_PLATFORM = "wayland";
|
QT_QPA_PLATFORM = "wayland";
|
||||||
|
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
};
|
};
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
libsecret
|
libsecret
|
||||||
|
@ -15,6 +26,28 @@
|
||||||
xdg-utils
|
xdg-utils
|
||||||
hunspell
|
hunspell
|
||||||
hunspellDicts.en_GB-large
|
hunspellDicts.en_GB-large
|
||||||
|
wl-clipboard
|
||||||
|
proton-pass
|
||||||
|
hyprpicker
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
swappy
|
||||||
|
cameractrls-gtk4
|
||||||
|
czkawka
|
||||||
|
nautilus
|
||||||
|
libreoffice
|
||||||
|
evince
|
||||||
|
image-roll
|
||||||
|
imagemagick
|
||||||
|
clapper
|
||||||
|
g4music
|
||||||
|
ffmpeg
|
||||||
|
picard
|
||||||
|
webcord
|
||||||
|
signal-desktop
|
||||||
|
whatsapp-for-linux
|
||||||
|
teams-for-linux
|
||||||
|
nomachine-client
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
security = {
|
security = {
|
||||||
|
@ -31,14 +64,35 @@
|
||||||
programs = {
|
programs = {
|
||||||
dconf.enable = true;
|
dconf.enable = true;
|
||||||
noisetorch.enable = true;
|
noisetorch.enable = true;
|
||||||
kdeconnect.enable = true;
|
seahorse.enable = true;
|
||||||
|
file-roller.enable = true;
|
||||||
|
hyprland.enable = true;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
};
|
};
|
||||||
gtk.iconCache.enable = true;
|
gtk.iconCache.enable = true;
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
style = if config.lib.stylix.scheme.variant == "light" then "adwaita" else "adwaita-dark";
|
||||||
|
};
|
||||||
services = {
|
services = {
|
||||||
dbus.packages = [ pkgs.gcr ];
|
gnome.gnome-keyring.enable = true;
|
||||||
flatpak.enable = true;
|
flatpak.enable = true;
|
||||||
printing.enable = true;
|
printing.enable = true;
|
||||||
|
tumbler.enable = true;
|
||||||
|
udisks2.enable = true;
|
||||||
|
blueman.enable = config.hardware.bluetooth.enable;
|
||||||
|
gnome.sushi.enable = true;
|
||||||
|
gvfs = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.gnome.gvfs;
|
||||||
|
};
|
||||||
|
kanata = {
|
||||||
|
enable = true;
|
||||||
|
keyboards.main = {
|
||||||
|
config = builtins.readFile ./kanata.kbd;
|
||||||
|
extraDefCfg = "process-unmapped-keys yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
pipewire = {
|
pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
pulse.enable = true;
|
pulse.enable = true;
|
||||||
|
@ -47,12 +101,144 @@
|
||||||
support32Bit = true;
|
support32Bit = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings =
|
||||||
|
let
|
||||||
|
default_session.command = "Hyprland";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit default_session;
|
||||||
|
initial_session = {
|
||||||
|
inherit (default_session) command;
|
||||||
|
user = username;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
xserver = {
|
xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
xkb = {
|
xkb.layout = "gb";
|
||||||
layout = "gb";
|
};
|
||||||
variant = "";
|
};
|
||||||
options = "ctrl:nocaps";
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
config.common.default = "*"; # TODO change for xdg-desktop-portal > 1.17 changes
|
||||||
|
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||||
|
};
|
||||||
|
home-manager.users.${username} =
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
osConfig,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./home/hyprland.nix
|
||||||
|
./home/terminal/default.nix
|
||||||
|
./home/browser/firefox.nix
|
||||||
|
./home/emacs/default.nix
|
||||||
|
./home/email/default.nix
|
||||||
|
./home/calendar/default.nix
|
||||||
|
];
|
||||||
|
home.file.${config.gtk.gtk2.configLocation}.force = true;
|
||||||
|
services = {
|
||||||
|
syncthing.enable = true;
|
||||||
|
gammastep = {
|
||||||
|
inherit (osConfig.location) latitude longitude provider;
|
||||||
|
enable = true;
|
||||||
|
tray = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
||||||
|
iconTheme = {
|
||||||
|
package = (pkgs.papirus-icon-theme.override { color = "violet"; });
|
||||||
|
name = if config.lib.stylix.scheme.variant == "light" then "Papirus-Light" else "Papirus-Dark";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
stylix.targets.gtk.extraCss = with config.lib.stylix.scheme.withHashtag; ''
|
||||||
|
@define-color accent_color ${base0E-hex};
|
||||||
|
@define-color accent_bg_color ${base0E-hex};
|
||||||
|
'';
|
||||||
|
xdg = {
|
||||||
|
mime.enable = true;
|
||||||
|
mimeApps =
|
||||||
|
let
|
||||||
|
defaultApplications = import ./mimeapps.nix;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
inherit defaultApplications;
|
||||||
|
associations.added = defaultApplications;
|
||||||
|
};
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
extraConfig = {
|
||||||
|
XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
configFile = {
|
||||||
|
# Stop programs from overriding mimeapps
|
||||||
|
"mimeapps.list".force = true;
|
||||||
|
# Ensure GTK config is set
|
||||||
|
"gtk-3.0/gtk.css".force = true;
|
||||||
|
"gtk-3.0/settings.ini".force = true;
|
||||||
|
"gtk-4.0/gtk.css".force = true;
|
||||||
|
"gtk-4.0/settings.ini".force = true;
|
||||||
|
# Set Swappy config so that it saves to Screenshots directory
|
||||||
|
"swappy/config".text = ''
|
||||||
|
[Default]
|
||||||
|
save_dir=${config.xdg.userDirs.pictures}/Screenshots/
|
||||||
|
save_filename_format=swappy-%Y%m%d-%H%M%S.png
|
||||||
|
show_panel=false
|
||||||
|
line_size=5
|
||||||
|
text_size=${toString config.stylix.fonts.sizes.desktop}
|
||||||
|
text_font=${config.stylix.fonts.sansSerif.name}
|
||||||
|
paint_mode=brush
|
||||||
|
early_exit=false
|
||||||
|
fill_shape=false
|
||||||
|
'';
|
||||||
|
# WhatsApp config
|
||||||
|
"whatsapp-for-linux/settings.conf" =
|
||||||
|
let
|
||||||
|
inherit (config.lib.stylix.scheme) variant;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
force = true;
|
||||||
|
text = ''
|
||||||
|
[web]
|
||||||
|
allow-permissions=true
|
||||||
|
hw-accel=2
|
||||||
|
|
||||||
|
[general]
|
||||||
|
notification-sounds=true
|
||||||
|
close-to-tray=true
|
||||||
|
start-in-tray=true
|
||||||
|
|
||||||
|
[appearance]
|
||||||
|
prefer-dark-theme=${if variant == "dark" then "true" else "false"}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
# Teams config
|
||||||
|
"teams-for-linux/config.json" = {
|
||||||
|
force = true;
|
||||||
|
text = builtins.toJSON {
|
||||||
|
awayOnSystemIdle = true;
|
||||||
|
closeAppOnCross = false;
|
||||||
|
followSystemTheme = true;
|
||||||
|
notificationMethod = "electron";
|
||||||
|
optInTeamsV2 = true;
|
||||||
|
spellCheckerLanguages = [ "en_GB" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# Autostart some programs
|
||||||
|
"autostart/signal-desktop.desktop".source =
|
||||||
|
"${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
|
||||||
|
"autostart/com.github.eneshecan.WhatsAppForLinux.desktop".source =
|
||||||
|
"${pkgs.whatsapp-for-linux}/share/applications/com.github.eneshecan.WhatsAppForLinux.desktop";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
139
system/fonts.nix
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
findutils,
|
||||||
|
iosevka,
|
||||||
|
nerd-font-patcher,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
custom-build-plan = {
|
||||||
|
noCvSs = false;
|
||||||
|
exportGlyphNames = false;
|
||||||
|
widths.Normal = {
|
||||||
|
shape = 500;
|
||||||
|
menu = 5;
|
||||||
|
css = "normal";
|
||||||
|
};
|
||||||
|
weights = {
|
||||||
|
Regular = {
|
||||||
|
shape = 400;
|
||||||
|
menu = 400;
|
||||||
|
css = 400;
|
||||||
|
};
|
||||||
|
Bold = {
|
||||||
|
shape = 700;
|
||||||
|
menu = 700;
|
||||||
|
css = 700;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
slopes = {
|
||||||
|
Upright = {
|
||||||
|
angle = 0;
|
||||||
|
shape = "upright";
|
||||||
|
menu = "upright";
|
||||||
|
css = "normal";
|
||||||
|
};
|
||||||
|
Italic = {
|
||||||
|
angle = 9.4;
|
||||||
|
shape = "italic";
|
||||||
|
menu = "italic";
|
||||||
|
css = "italic";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
variants.design = {
|
||||||
|
capital-g = "toothless-corner-serifless-hooked";
|
||||||
|
capital-j = "serifed-both-sides";
|
||||||
|
capital-k = "curly-serifless";
|
||||||
|
capital-p = "closed-motion-serifed";
|
||||||
|
capital-q = "crossing";
|
||||||
|
capital-r = "curly-serifless";
|
||||||
|
capital-u = "tailed-serifless";
|
||||||
|
capital-z = "straight-serifless-with-horizontal-crossbar";
|
||||||
|
a = "double-storey-tailed";
|
||||||
|
d = "tailed-serifless";
|
||||||
|
e = "rounded";
|
||||||
|
f = "tailed-crossbar-at-x-height";
|
||||||
|
g = "double-storey-open";
|
||||||
|
h = "tailed-serifless";
|
||||||
|
i = "tailed-serifed";
|
||||||
|
j = "serifed";
|
||||||
|
k = "cursive-serifless";
|
||||||
|
l = "tailed-serifed";
|
||||||
|
m = "tailed-serifless";
|
||||||
|
n = "tailed-serifless";
|
||||||
|
q = "diagonal-tailed-serifless";
|
||||||
|
u = "tailed-serifless";
|
||||||
|
y = "cursive-serifless";
|
||||||
|
z = "straight-serifless-with-horizontal-crossbar";
|
||||||
|
lower-delta = "flat-top";
|
||||||
|
lower-lambda = "tailed-turn";
|
||||||
|
lower-xi = "flat-top";
|
||||||
|
lower-chi = "semi-chancery-straight-serifless";
|
||||||
|
zero = "tall-slashed";
|
||||||
|
one = "no-base";
|
||||||
|
two = "straight-neck-serifless";
|
||||||
|
three = "flat-top-serifless";
|
||||||
|
four = "semi-open-serifless";
|
||||||
|
five = "oblique-arched-serifless";
|
||||||
|
six = "open-contour";
|
||||||
|
seven = "bend-serifless-crossbar";
|
||||||
|
eight = "two-circles";
|
||||||
|
nine = "open-contour";
|
||||||
|
asterisk = "hex-low";
|
||||||
|
underscore = "high";
|
||||||
|
caret = "high";
|
||||||
|
paren = "normal";
|
||||||
|
brace = "straight";
|
||||||
|
number-sign = "slanted";
|
||||||
|
ampersand = "closed";
|
||||||
|
at = "fourfold";
|
||||||
|
percent = "dots";
|
||||||
|
question = "corner";
|
||||||
|
lig-ltgteq = "flat";
|
||||||
|
lig-neq = "more-slanted";
|
||||||
|
lig-equal-chain = "without-notch";
|
||||||
|
lig-hyphen-chain = "without-notch";
|
||||||
|
lig-double-arrow-bar = "without-notch";
|
||||||
|
lig-single-arrow-bar = "without-notch";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
rec {
|
||||||
|
iosevka-custom = iosevka.override {
|
||||||
|
set = "Custom";
|
||||||
|
privateBuildPlan = custom-build-plan // {
|
||||||
|
family = "Iosevka Custom";
|
||||||
|
spacing = "normal";
|
||||||
|
serifs = "sans";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
iosevka-custom-aile = iosevka.override {
|
||||||
|
set = "CustomAile";
|
||||||
|
privateBuildPlan = custom-build-plan // {
|
||||||
|
family = "Iosevka Custom Aile";
|
||||||
|
spacing = "quasi-proportional";
|
||||||
|
serifs = "sans";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
iosevka-custom-etoile = iosevka.override {
|
||||||
|
set = "CustomEtoile";
|
||||||
|
privateBuildPlan = custom-build-plan // {
|
||||||
|
family = "Iosevka Custom Etoile";
|
||||||
|
spacing = "quasi-proportional";
|
||||||
|
serifs = "slab";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
iosevka-custom-nerdfont = stdenv.mkDerivation {
|
||||||
|
name = "${iosevka-custom.name}-nerd-font-patched";
|
||||||
|
src = iosevka-custom;
|
||||||
|
nativeBuildInputs = [
|
||||||
|
findutils
|
||||||
|
nerd-font-patcher
|
||||||
|
];
|
||||||
|
buildPhase = ''
|
||||||
|
find \( -name \*.ttf -o -name \*.otf \) -execdir nerd-font-patcher --variable-width-glyphs --careful --complete --boxdrawing --no-progressbars {} \;
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
cp -a . $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -31,7 +31,8 @@
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-bf1eab3a-6d92-430d-a282-8dd4c9efe2c7".device = "/dev/disk/by-uuid/bf1eab3a-6d92-430d-a282-8dd4c9efe2c7";
|
boot.initrd.luks.devices."luks-bf1eab3a-6d92-430d-a282-8dd4c9efe2c7".device =
|
||||||
|
"/dev/disk/by-uuid/bf1eab3a-6d92-430d-a282-8dd4c9efe2c7";
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-uuid/85D5-B6EC";
|
device = "/dev/disk/by-uuid/85D5-B6EC";
|
|
@ -26,7 +26,8 @@
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-d1062931-ee58-4848-adf9-09452daeb6eb".device = "/dev/disk/by-uuid/d1062931-ee58-4848-adf9-09452daeb6eb";
|
boot.initrd.luks.devices."luks-d1062931-ee58-4848-adf9-09452daeb6eb".device =
|
||||||
|
"/dev/disk/by-uuid/d1062931-ee58-4848-adf9-09452daeb6eb";
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-uuid/ABE3-88E7";
|
device = "/dev/disk/by-uuid/ABE3-88E7";
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
|
||||||
"xhci_pci"
|
|
||||||
"ahci"
|
|
||||||
"usb_storage"
|
|
||||||
"usbhid"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/0c6931d0-50c3-47b0-98c8-d295ddeb2004";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-08822b9c-e9d6-424c-bc75-373f8667526d".device = "/dev/disk/by-uuid/08822b9c-e9d6-424c-bc75-373f8667526d";
|
|
||||||
|
|
||||||
fileSystems."/boot/efi" = {
|
|
||||||
device = "/dev/disk/by-uuid/6009-89FC";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ { device = "/dev/disk/by-uuid/ff9627a7-820c-4628-a040-2b665688b893"; } ];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
|
@ -29,7 +29,8 @@
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-0d50df5f-9456-4296-9156-f5b818e11552".device = "/dev/disk/by-uuid/0d50df5f-9456-4296-9156-f5b818e11552";
|
boot.initrd.luks.devices."luks-0d50df5f-9456-4296-9156-f5b818e11552".device =
|
||||||
|
"/dev/disk/by-uuid/0d50df5f-9456-4296-9156-f5b818e11552";
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-uuid/3297-A70D";
|
device = "/dev/disk/by-uuid/3297-A70D";
|
||||||
|
|
14
system/home/avizo.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
{
|
||||||
|
services.avizo = {
|
||||||
|
enable = true;
|
||||||
|
settings.default = {
|
||||||
|
image-opacity = lib.mkForce "1.0";
|
||||||
|
border-color =
|
||||||
|
let
|
||||||
|
scheme = config.lib.stylix.scheme;
|
||||||
|
in
|
||||||
|
lib.mkForce "rgba(${scheme.base0E-rgb-r}, ${scheme.base0E-rgb-g}, ${scheme.base0E-rgb-b}, 1.0)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,8 +1,8 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "WhatsApp Web",
|
"name": "Spotify",
|
||||||
"url": "https://web.whatsapp.com/",
|
"url": "https://open.spotify.com",
|
||||||
"tags": ["Social"]
|
"tags": ["Music", "Streaming"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ABRP",
|
"name": "ABRP",
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
{
|
{
|
||||||
"name": "Patreon",
|
"name": "Patreon",
|
||||||
"url": "https://www.patreon.com/home",
|
"url": "https://www.patreon.com/home",
|
||||||
"tags": []
|
"tags": ["Personal"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "NHS App",
|
"name": "NHS App",
|
||||||
|
@ -184,11 +184,6 @@
|
||||||
"url": "https://ukaea-ism.ivanticloud.com/Modules/SelfService/?NoDefaultProvider=True#home",
|
"url": "https://ukaea-ism.ivanticloud.com/Modules/SelfService/?NoDefaultProvider=True#home",
|
||||||
"tags": ["Work"]
|
"tags": ["Work"]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Marval",
|
|
||||||
"url": "https://marval.service.ukaea.uk/MSMSelfService/Index.aspx",
|
|
||||||
"tags": ["Work"]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "U4BW",
|
"name": "U4BW",
|
||||||
"url": "https://ubw.unit4cloud.com/uk_aea_prod_web/Login/Login.aspx",
|
"url": "https://ubw.unit4cloud.com/uk_aea_prod_web/Login/Login.aspx",
|
||||||
|
@ -201,7 +196,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Robin",
|
"name": "Robin",
|
||||||
"url": "https://dashboard.robinpowered.com/",
|
"url": "https://dashboard.robinpowered.com/UKAEA/",
|
||||||
"tags": ["Work", "Room Booking"]
|
"tags": ["Work", "Room Booking"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -209,26 +204,21 @@
|
||||||
"url": "https://pinboard.ukaea.uk/",
|
"url": "https://pinboard.ukaea.uk/",
|
||||||
"tags": ["Work"]
|
"tags": ["Work"]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "EUROFusion Pinboard",
|
||||||
|
"url": "https://users.euro-fusion.org/webapps/pinboard/EFDA-JET/",
|
||||||
|
"tags": ["Work"]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "OPEN-ADAS",
|
"name": "OPEN-ADAS",
|
||||||
"url": "https://open.adas.ac.uk/",
|
"url": "https://open.adas.ac.uk/",
|
||||||
"tags": ["Work"]
|
"tags": ["Work"]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Homepage",
|
|
||||||
"url": "http://w3.jet.uk",
|
|
||||||
"tags": ["Work", "JET"]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Physics Summary",
|
"name": "Physics Summary",
|
||||||
"url": "https://users.euro-fusion.org/pages/physics-summary/LatestSession.php",
|
"url": "https://users.euro-fusion.org/pages/physics-summary/LatestSession.php",
|
||||||
"tags": ["Work", "JET"]
|
"tags": ["Work", "JET"]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "JSPO Reports",
|
|
||||||
"url": "https://www.jspo.jet.uk/pages/operations/jpecreports_2023.html",
|
|
||||||
"tags": ["Work", "JET"]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "DVCM Homepage",
|
"name": "DVCM Homepage",
|
||||||
"url": "https://dvcm.jetdata.eu/",
|
"url": "https://dvcm.jetdata.eu/",
|
||||||
|
@ -270,17 +260,17 @@
|
||||||
"tags": ["Work", "JET", "Mimic"]
|
"tags": ["Work", "JET", "Mimic"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Users Page",
|
"name": "MAST-U Users Page",
|
||||||
"url": "https://users.mastu.ukaea.uk/home",
|
"url": "https://users.mastu.ukaea.uk/home",
|
||||||
"tags": ["Work", "MAST-U"]
|
"tags": ["Work", "MAST-U"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Diagnostic Handbook",
|
"name": "MAST-U Diagnostic Handbook",
|
||||||
"url": "https://intranet.ccfe.ac.uk/mastu-handbook",
|
"url": "https://intranet.ccfe.ac.uk/mastu-handbook",
|
||||||
"tags": ["Work", "MAST-U"]
|
"tags": ["Work", "MAST-U"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Data Access and Tools",
|
"name": "MAST-U Data Access and Tools",
|
||||||
"url": "https://users.mastu.ukaea.uk/data-access-and-tools",
|
"url": "https://users.mastu.ukaea.uk/data-access-and-tools",
|
||||||
"tags": ["Work", "MAST-U"]
|
"tags": ["Work", "MAST-U"]
|
||||||
},
|
},
|
||||||
|
@ -294,14 +284,9 @@
|
||||||
"url": "https://outlook.office.com/mail/ContactUs@lgbtqi.ukaea.uk/",
|
"url": "https://outlook.office.com/mail/ContactUs@lgbtqi.ukaea.uk/",
|
||||||
"tags": ["Work", "Office", "Network", "LGBTQIA+"]
|
"tags": ["Work", "Office", "Network", "LGBTQIA+"]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Teams",
|
|
||||||
"url": "https://teams.microsoft.com/v2",
|
|
||||||
"tags": ["Work", "Office"]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "OneDrive",
|
"name": "OneDrive",
|
||||||
"url": "https://ukaeauk-my.sharepoint.com/personal/evie_litherland-smith_ukaea_uk/",
|
"url": "https://ukaeauk-my.sharepoint.com/",
|
||||||
"tags": ["Work", "Office"]
|
"tags": ["Work", "Office"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -309,6 +294,11 @@
|
||||||
"url": "https://ukaeauk.sharepoint.com/sites/Plasma",
|
"url": "https://ukaeauk.sharepoint.com/sites/Plasma",
|
||||||
"tags": ["Work", "Office"]
|
"tags": ["Work", "Office"]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Spectroscopy and Imaging Sharepoint",
|
||||||
|
"url": "https://ukaeauk.sharepoint.com/sites/Plasma/Team_Areas/SitePages/Spectroscopy-and-Imaging---Team-Area.aspx",
|
||||||
|
"tags": ["Work", "Office"]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Culham Canteen Menus",
|
"name": "Culham Canteen Menus",
|
||||||
"url": "https://nucleus.ukaea.uk/Interact/Pages/Section/Default.aspx?section=10112",
|
"url": "https://nucleus.ukaea.uk/Interact/Pages/Section/Default.aspx?section=10112",
|
||||||
|
|
|
@ -46,8 +46,8 @@
|
||||||
'("crates" "https://crates.io/search?q=~a" "https://crates.io/")
|
'("crates" "https://crates.io/search?q=~a" "https://crates.io/")
|
||||||
'("py" "https://docs.python.org/3/search.html?q=~a" "https://docs.python.org/3")
|
'("py" "https://docs.python.org/3/search.html?q=~a" "https://docs.python.org/3")
|
||||||
'("pypi" "https://pypi.org/search/?q=~a" "https://pypi.org/")
|
'("pypi" "https://pypi.org/search/?q=~a" "https://pypi.org/")
|
||||||
'("nixwiki" "https://nixos.wiki/index.php?search=~a&go=Go" "https://nixos.wiki/")
|
|
||||||
'("archwiki" "https://wiki.archlinux.org/index.php?search=~a" "https://wiki.archlinux.org/")
|
'("archwiki" "https://wiki.archlinux.org/index.php?search=~a" "https://wiki.archlinux.org/")
|
||||||
|
'("nixwiki" "https://wiki.nixos.org/w/index.php?search=~a" "https://wiki.nixos.org")
|
||||||
'("github" "https://github.com/search?utf8=✓&q=~a&type=repositories" "https://github.com/")
|
'("github" "https://github.com/search?utf8=✓&q=~a&type=repositories" "https://github.com/")
|
||||||
'("flathub" "https://flathub.org/apps/search?q=~a" "https://flathub.org/")
|
'("flathub" "https://flathub.org/apps/search?q=~a" "https://flathub.org/")
|
||||||
'("doi" "https://dx.doi.org/~a" "https://dx.doi.org/")
|
'("doi" "https://dx.doi.org/~a" "https://dx.doi.org/")
|
||||||
|
@ -63,5 +63,3 @@
|
||||||
|
|
||||||
(define-configuration browser
|
(define-configuration browser
|
||||||
((restore-session-on-startup-p nil)))
|
((restore-session-on-startup-p nil)))
|
||||||
|
|
||||||
(setf (uiop/os:getenv "GTK_THEME") "Adwaita:light")
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./firefox.nix
|
|
||||||
./nyxt.nix
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,12 +1,12 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
stylix.targets.firefox.profileNames = [ "default" ];
|
config,
|
||||||
programs = {
|
lib,
|
||||||
browserpass = {
|
pkgs,
|
||||||
enable = true;
|
...
|
||||||
browsers = [ "firefox" ];
|
}:
|
||||||
};
|
{
|
||||||
firefox = {
|
stylix.targets.firefox.enable = false;
|
||||||
|
programs.firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
policies = {
|
policies = {
|
||||||
BlockAboutProfiles = true;
|
BlockAboutProfiles = true;
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
BehaviorPrivateBrowsing = "reject";
|
BehaviorPrivateBrowsing = "reject";
|
||||||
Locked = true;
|
Locked = true;
|
||||||
};
|
};
|
||||||
DefaultDownloadDirectory = "\${home}/Downloads";
|
DefaultDownloadDirectory = config.xdg.userDirs.download;
|
||||||
DisableAppUpdate = true;
|
DisableAppUpdate = true;
|
||||||
DisableFirefoxAccounts = true;
|
DisableFirefoxAccounts = true;
|
||||||
DisableFirefoxScreenshots = true;
|
DisableFirefoxScreenshots = true;
|
||||||
|
@ -29,7 +29,6 @@
|
||||||
DisplayMenuBar = "default-off";
|
DisplayMenuBar = "default-off";
|
||||||
DontCheckDefaultBrowser = true;
|
DontCheckDefaultBrowser = true;
|
||||||
EnableTrackingProtection = {
|
EnableTrackingProtection = {
|
||||||
Value = true;
|
|
||||||
Locked = true;
|
Locked = true;
|
||||||
Cryptomining = true;
|
Cryptomining = true;
|
||||||
Fingerprinting = true;
|
Fingerprinting = true;
|
||||||
|
@ -44,10 +43,10 @@
|
||||||
installation_mode = "force_installed";
|
installation_mode = "force_installed";
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
||||||
};
|
};
|
||||||
# Browserpass
|
# Proton Pass
|
||||||
"browserpass@maximbaz.com" = {
|
"78272b6fa58f4a1abaac99321d503a20@proton.me" = {
|
||||||
installation_mode = "force_installed";
|
installation_mode = "force_installed";
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/browserpass-ce/latest.xpi";
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/proton-pass/latest.xpi";
|
||||||
};
|
};
|
||||||
# SimpleLogin
|
# SimpleLogin
|
||||||
"addon@simplelogin" = {
|
"addon@simplelogin" = {
|
||||||
|
@ -109,10 +108,12 @@
|
||||||
ShowHomeButton = true;
|
ShowHomeButton = true;
|
||||||
StartDownloadsInTempDirectory = true;
|
StartDownloadsInTempDirectory = true;
|
||||||
};
|
};
|
||||||
profiles.default = {
|
profiles.user = {
|
||||||
|
isDefault = true;
|
||||||
bookmarks = builtins.fromJSON (builtins.readFile ./bookmarks.json);
|
bookmarks = builtins.fromJSON (builtins.readFile ./bookmarks.json);
|
||||||
settings = {
|
settings = {
|
||||||
"app.shield.optoutstudies.enabled" = false;
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
|
"browser.startup.homepage" = lib.mkDefault "about:home";
|
||||||
"browser.tabs.inTitlebar" = 0;
|
"browser.tabs.inTitlebar" = 0;
|
||||||
"browser.bookmarks.addedImportButton" = false;
|
"browser.bookmarks.addedImportButton" = false;
|
||||||
"browser.bookmarks.showMobileBookmarks" = false;
|
"browser.bookmarks.showMobileBookmarks" = false;
|
||||||
|
@ -132,6 +133,8 @@
|
||||||
"intl.locale.requested" = "en-gb,en";
|
"intl.locale.requested" = "en-gb,en";
|
||||||
"intl.regional_prefs.use_os_locales" = true;
|
"intl.regional_prefs.use_os_locales" = true;
|
||||||
"media.eme.enabled" = true;
|
"media.eme.enabled" = true;
|
||||||
|
"privacy.globalprivacycontrol.enabled" = true;
|
||||||
|
"privacy.donottrackheader.enabled" = true;
|
||||||
"privacy.webrtc.legacyGlobalIndicator" = false;
|
"privacy.webrtc.legacyGlobalIndicator" = false;
|
||||||
"signon.management.page.breach-alerts.enabled" = false;
|
"signon.management.page.breach-alerts.enabled" = false;
|
||||||
"signon.rememberSignons" = false;
|
"signon.rememberSignons" = false;
|
||||||
|
@ -147,6 +150,10 @@
|
||||||
title = "Arch Wiki";
|
title = "Arch Wiki";
|
||||||
url = "https://wiki.archlinux.org";
|
url = "https://wiki.archlinux.org";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
title = "Hyprland Wiki";
|
||||||
|
url = "https://wiki.hyprland.org";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
search = rec {
|
search = rec {
|
||||||
|
@ -212,5 +219,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,36 +5,47 @@
|
||||||
configFile = {
|
configFile = {
|
||||||
"nyxt/config.lisp".text =
|
"nyxt/config.lisp".text =
|
||||||
let
|
let
|
||||||
|
inherit (config.lib.stylix.scheme) variant;
|
||||||
fonts = config.stylix.fonts;
|
fonts = config.stylix.fonts;
|
||||||
scheme = config.lib.stylix.scheme;
|
scheme = config.lib.stylix.scheme.withHashtag;
|
||||||
|
accent = scheme.base0E;
|
||||||
in
|
in
|
||||||
''
|
''
|
||||||
;; Import custom configuration
|
;; Import custom configuration
|
||||||
(nyxt::load-lisp "${./config.lisp}")
|
(nyxt::load-lisp "${./config.lisp}")
|
||||||
|
;; Set theme variant from GTK_THEME if available
|
||||||
|
(setf (uiop/os:getenv "GTK_THEME") "Adwaita:${variant}")
|
||||||
;; Define custom theme
|
;; Define custom theme
|
||||||
(define-configuration browser
|
(define-configuration browser
|
||||||
((theme (make-instance 'theme:theme
|
((theme (make-instance 'theme:theme
|
||||||
:dark-p t
|
:dark-p ${if variant == "light" then "nil" else "t"}
|
||||||
:font-family "${fonts.sansSerif.name}"
|
:font-family "${fonts.sansSerif.name}"
|
||||||
:monospace-font-family "${fonts.monospace.name}"
|
:monospace-font-family "${fonts.monospace.name}"
|
||||||
:background-color "${scheme.withHashtag.base00}"
|
:text-color "${scheme.base05}"
|
||||||
:on-background-color "${scheme.withHashtag.base05}"
|
:contrast-text-color "${scheme.base01}"
|
||||||
:primary-color "${scheme.withHashtag.base02}"
|
:background-color "${scheme.base00}"
|
||||||
:on-primary-color "${scheme.withHashtag.base05}"
|
:primary-color "${scheme.base02}"
|
||||||
:secondary-color "${scheme.withHashtag.base03}"
|
:secondary-color "${scheme.base03}"
|
||||||
:on-secondary-color "${scheme.withHashtag.base05}"
|
:tertiary-color "${scheme.base04}"
|
||||||
:accent-color "${scheme.withHashtag.base0D}"
|
:quaternary-color "${scheme.base04}"
|
||||||
:on-accent-color "${scheme.withHashtag.base01}"
|
:accent-color "${scheme.base0E}"
|
||||||
:action-color "${scheme.withHashtag.cyan}"
|
:action-color "${scheme.cyan}"
|
||||||
:on-action-color "${scheme.withHashtag.base01}"
|
:success-color "${scheme.green}"
|
||||||
:success-color "${scheme.withHashtag.green}"
|
:warning-color "${scheme.yellow}"
|
||||||
:on-success-color "${scheme.withHashtag.base01}"
|
:highlight-color "${scheme.base01}"
|
||||||
:highlight-color "${scheme.withHashtag.magenta}"
|
:codeblock-color "${scheme.base01}"
|
||||||
:on-highlight-color "${scheme.withHashtag.base01}"
|
;; :on-background-color "${scheme.base05}"
|
||||||
:warning-color "${scheme.withHashtag.yellow}"
|
;; :on-primary-color "${scheme.base05}"
|
||||||
:on-warning-color "${scheme.withHashtag.base01}"
|
;; :on-secondary-color "${scheme.base05}"
|
||||||
:codeblock-color "${scheme.withHashtag.base02}"
|
;; :on-tertiary-color "${scheme.base05}"
|
||||||
:on-codeblock-color "${scheme.withHashtag.base05}"))))
|
;; :on-quaternary-color "${scheme.base05}"
|
||||||
|
;; :on-accent-color "${scheme.base01}"
|
||||||
|
;; :on-action-color "${scheme.base01}"
|
||||||
|
;; :on-success-color "${scheme.base01}"
|
||||||
|
;; :on-warning-color "${scheme.base01}"
|
||||||
|
;; :on-highlight-color "${scheme.base01}"
|
||||||
|
;; :on-codeblock-color "${scheme.base05}"
|
||||||
|
))))
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
dataFile."nyxt/bookmarks.lisp".text =
|
dataFile."nyxt/bookmarks.lisp".text =
|
||||||
|
|
44
system/home/browser/qutebrowser.nix
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.qutebrowser = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
changelog_after_upgrade = "major";
|
||||||
|
# confirm_quit = "downloads";
|
||||||
|
content = {
|
||||||
|
autoplay = false;
|
||||||
|
blocking.enabled = true;
|
||||||
|
cookies.accept = "no-unknown-3rdparty";
|
||||||
|
headers.do_not_track = true;
|
||||||
|
};
|
||||||
|
downloads.location.directory = config.xdg.userDirs.download;
|
||||||
|
new_instance_open_target = "tab";
|
||||||
|
qt.highdpi = true;
|
||||||
|
scrolling.smooth = true;
|
||||||
|
# spellcheck.languages = [ "en-GB" ];
|
||||||
|
tabs = {
|
||||||
|
last_close = "blank";
|
||||||
|
show = "multiple";
|
||||||
|
};
|
||||||
|
url.default_page = lib.mkDefault "about:blank";
|
||||||
|
window.hide_decoration = true;
|
||||||
|
};
|
||||||
|
searchEngines = {
|
||||||
|
w = "https://en.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1";
|
||||||
|
aw = "https://wiki.archlinux.org/?search={}";
|
||||||
|
nw = "https://wiki.nixos.org/index.php?search={}";
|
||||||
|
gh = "https://github.com/search?q={}";
|
||||||
|
fh = "https://flathub.org/apps/search?q={}";
|
||||||
|
py = "https://pypi.org/search/?q={}";
|
||||||
|
};
|
||||||
|
# quickmarks =
|
||||||
|
# let
|
||||||
|
# in
|
||||||
|
# { };
|
||||||
|
};
|
||||||
|
}
|
73
system/home/calendar/default.nix
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs = {
|
||||||
|
vdirsyncer.enable = true;
|
||||||
|
khal = {
|
||||||
|
enable = true;
|
||||||
|
locale = {
|
||||||
|
timeformat = "%H:%M";
|
||||||
|
dateformat = "%Y-%m-%d";
|
||||||
|
longdateformat = "%Y-%m-%d %a";
|
||||||
|
datetimeformat = "%Y-%m-%d %H:%M";
|
||||||
|
longdatetimeformat = "%Y-%m-%d %H:%M";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.vdirsyncer = {
|
||||||
|
inherit (config.programs.vdirsyncer) enable package;
|
||||||
|
frequency = "*:0/30"; # Every 30 minutes
|
||||||
|
};
|
||||||
|
accounts.calendar = {
|
||||||
|
basePath = "Calendar";
|
||||||
|
accounts = {
|
||||||
|
main =
|
||||||
|
let
|
||||||
|
url = "dav.xenia.me.uk";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
primary = true;
|
||||||
|
primaryCollection = "personal";
|
||||||
|
local = {
|
||||||
|
type = "filesystem";
|
||||||
|
fileExt = ".ics";
|
||||||
|
};
|
||||||
|
remote =
|
||||||
|
let
|
||||||
|
userName = "pixelifytica";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit userName;
|
||||||
|
url = "https://${url}";
|
||||||
|
type = "caldav";
|
||||||
|
passwordCommand = [
|
||||||
|
"${pkgs.libsecret}/bin/secret-tool"
|
||||||
|
"lookup"
|
||||||
|
"url"
|
||||||
|
"${url}"
|
||||||
|
"user"
|
||||||
|
"${userName}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
vdirsyncer = {
|
||||||
|
inherit (config.programs.vdirsyncer) enable;
|
||||||
|
auth = "basic";
|
||||||
|
collections = [
|
||||||
|
"personal"
|
||||||
|
"work"
|
||||||
|
"other"
|
||||||
|
];
|
||||||
|
metadata = [ "displayname" ];
|
||||||
|
timeRange = {
|
||||||
|
start = "datetime.now() - timedelta(days=365)";
|
||||||
|
end = "datetime.now() + timedelta(days=365)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
khal = {
|
||||||
|
inherit (config.programs.khal) enable;
|
||||||
|
type = "discover";
|
||||||
|
addresses = with config.accounts.email.accounts.proton; [ address ] ++ aliases;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,10 +0,0 @@
|
||||||
{ inputs, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
inputs.nix-index-database.hmModules.nix-index
|
|
||||||
./shell/default.nix
|
|
||||||
./services/password-store/default.nix
|
|
||||||
./scripts/default.nix
|
|
||||||
];
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
}
|
|
|
@ -1,57 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./plasma/default.nix
|
|
||||||
./emacs/default.nix
|
|
||||||
./terminal/default.nix
|
|
||||||
./browser/default.nix
|
|
||||||
./zathura/default.nix
|
|
||||||
./services/email/default.nix
|
|
||||||
];
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
webcord
|
|
||||||
signal-desktop
|
|
||||||
whatsapp-for-linux
|
|
||||||
x2goclient
|
|
||||||
];
|
|
||||||
services.syncthing.enable = true;
|
|
||||||
programs.mpv.enable = true;
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
|
||||||
iconTheme = {
|
|
||||||
package = pkgs.papirus-icon-theme;
|
|
||||||
name = "Papirus";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
style = {
|
|
||||||
name = "adwaita";
|
|
||||||
package = pkgs.adwaita-qt;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
xdg = {
|
|
||||||
mime.enable = true;
|
|
||||||
mimeApps =
|
|
||||||
let
|
|
||||||
defaultApplications = import ./mimeapps/default.nix;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
inherit defaultApplications;
|
|
||||||
associations.added = defaultApplications;
|
|
||||||
};
|
|
||||||
userDirs = {
|
|
||||||
enable = true;
|
|
||||||
createDirectories = true;
|
|
||||||
extraConfig = {
|
|
||||||
XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
configFile = {
|
|
||||||
"autostart/signal-desktop.desktop".source = "${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
|
|
||||||
"autostart/com.github.eneshecan.WhatsAppForLinux.desktop".source = "${pkgs.whatsapp-for-linux}/share/applications/com.github.eneshecan.WhatsAppForLinux.desktop";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,131 +1,41 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
imports = [ ../shell/default.nix ];
|
config,
|
||||||
stylix.targets.emacs.enable = false;
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../shell/default.nix
|
||||||
|
../shell/git.nix
|
||||||
|
../gpg/default.nix
|
||||||
|
../texlive/default.nix
|
||||||
|
../programming/default.nix
|
||||||
|
];
|
||||||
services.emacs = {
|
services.emacs = {
|
||||||
enable = true;
|
enable = lib.mkDefault true;
|
||||||
package = config.programs.emacs.finalPackage;
|
package = config.programs.emacs.finalPackage;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
client.enable = true;
|
client.enable = true;
|
||||||
socketActivation.enable = true;
|
socketActivation.enable = true;
|
||||||
startWithUserSession = false;
|
|
||||||
};
|
};
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
# Clone emacs config from https://git.xenia.me.uk/pixelifytica/emacs.git
|
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.emacs29-pgtk;
|
package = pkgs.emacs30.override {
|
||||||
extraConfig =
|
withImageMagick = true;
|
||||||
let
|
withPgtk = true;
|
||||||
fixed-font-family = "${config.stylix.fonts.monospace.name}";
|
|
||||||
variable-font-family = "${config.stylix.fonts.sansSerif.name}";
|
|
||||||
font-height = builtins.toString (
|
|
||||||
builtins.floor (builtins.mul config.stylix.fonts.sizes.applications 10)
|
|
||||||
);
|
|
||||||
custom-theme-name = "nix";
|
|
||||||
custom-theme = pkgs.writeTextFile {
|
|
||||||
name = "custom-emacs-theme";
|
|
||||||
destination = "/${custom-theme-name}-theme.el";
|
|
||||||
text = ''
|
|
||||||
(deftheme ${custom-theme-name}
|
|
||||||
"Use Nix customised fonts for main faces")
|
|
||||||
|
|
||||||
(custom-theme-set-variables
|
|
||||||
'${custom-theme-name}
|
|
||||||
'(menu-bar-mode nil))
|
|
||||||
|
|
||||||
(custom-theme-set-faces
|
|
||||||
'${custom-theme-name}
|
|
||||||
'(default ((t (:family "${fixed-font-family}" :height ${font-height}))))
|
|
||||||
'(fixed-pitch ((t (:family "${fixed-font-family}"))))
|
|
||||||
'(fixed-pitch-serif ((t (:family "${fixed-font-family}"))))
|
|
||||||
'(variable-pitch ((t (:family "${variable-font-family}")))))
|
|
||||||
|
|
||||||
(provide-theme '${custom-theme-name})
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
custom-theme-hash = builtins.hashFile "sha256" "${custom-theme}/${custom-theme-name}-theme.el";
|
extraPackages = epkgs: import ./packages.nix { inherit epkgs; };
|
||||||
in
|
|
||||||
''
|
|
||||||
(add-to-list 'custom-theme-load-path "${custom-theme}")
|
|
||||||
(add-to-list 'custom-safe-themes "${custom-theme-hash}")
|
|
||||||
(load-theme '${custom-theme-name})
|
|
||||||
'';
|
|
||||||
extraPackages =
|
|
||||||
epkgs: with epkgs; [
|
|
||||||
treesit-grammars.with-all-grammars
|
|
||||||
mu4e
|
|
||||||
emacsql-sqlite
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# Emacs requirements
|
# External requirements
|
||||||
imagemagick
|
gcc
|
||||||
languagetool
|
languagetool
|
||||||
wordnet
|
wordnet
|
||||||
|
|
||||||
# Plugin requirements
|
|
||||||
gcc
|
|
||||||
sqlite
|
|
||||||
pandoc
|
pandoc
|
||||||
ghostscript
|
ghostscript
|
||||||
|
mupdf-headless
|
||||||
poppler_utils
|
poppler_utils
|
||||||
graphviz
|
graphviz-nox
|
||||||
mp3info
|
|
||||||
|
|
||||||
# Customised LaTeX install
|
|
||||||
(texlive.combine {
|
|
||||||
inherit (texlive)
|
|
||||||
scheme-medium
|
|
||||||
dvisvgm
|
|
||||||
dvipng
|
|
||||||
wrapfig
|
|
||||||
amsmath
|
|
||||||
ulem
|
|
||||||
hyperref
|
|
||||||
capt-of
|
|
||||||
listings
|
|
||||||
;
|
|
||||||
})
|
|
||||||
|
|
||||||
# Development tools
|
|
||||||
## Code screenshots
|
|
||||||
silicon
|
|
||||||
|
|
||||||
## Python Environments
|
|
||||||
poetry
|
|
||||||
|
|
||||||
## Linters
|
|
||||||
shellcheck
|
|
||||||
yamllint
|
|
||||||
ruff
|
|
||||||
|
|
||||||
## Formatters
|
|
||||||
nixfmt-rfc-style
|
|
||||||
shfmt
|
|
||||||
stylua
|
|
||||||
nodePackages.prettier
|
|
||||||
nodePackages.prettier-plugin-toml
|
|
||||||
|
|
||||||
## Language servers
|
|
||||||
nixd
|
|
||||||
lua-language-server
|
|
||||||
|
|
||||||
## Interpreters
|
|
||||||
(python3.withPackages (
|
|
||||||
ps: with ps; [
|
|
||||||
tkinter
|
|
||||||
python-lsp-server
|
|
||||||
mypy
|
|
||||||
numpy
|
|
||||||
scipy
|
|
||||||
xarray
|
|
||||||
matplotlib
|
|
||||||
]
|
|
||||||
))
|
|
||||||
(luajit.withPackages (ps: [ (ps.callPackage ./luarocks/scilua.nix { }) ]))
|
|
||||||
];
|
];
|
||||||
xdg.configFile = {
|
|
||||||
"ruff/pyproject.toml".source = ./ruff.toml;
|
|
||||||
"pypoetry/config.toml".source = ./pypoetry.toml;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
84
system/home/emacs/font_showcase.org
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
#+TITLE: Font Showcase
|
||||||
|
#+AUTHOR: Evie Litherland-Smith
|
||||||
|
This is a showcase of various font and UI features to act as a
|
||||||
|
standard candle.
|
||||||
|
* Font emphasis
|
||||||
|
Examples of:
|
||||||
|
- *Bold text*
|
||||||
|
- /Italic text/
|
||||||
|
- _Underscored text_
|
||||||
|
- =Literal text=
|
||||||
|
- ~Code~
|
||||||
|
- +Strike-through+
|
||||||
|
* Character showcase
|
||||||
|
#+begin_example
|
||||||
|
ABC.DEF.GHI.JKL.MNO.PQRS.TUV.WXYZ abc.def.ghi.jkl.mno.pqrs.tuv.wxyz
|
||||||
|
!iIlL17|¦ ¢coO08BbDQ $5SZ2zs 96µm float il1[]={1-2/3.4,5+6=7/8%90};
|
||||||
|
1234567890 ,._-+= >< «¯-¬_» ~–÷+× {*}[]()<>`+-=$/#_%^@\&|~?'" !,.;:
|
||||||
|
E3CGQ g9q¶ uvw ſßðþ ΓΔΛαδιλμξπτχ∂ ЖЗКУЯжзклмнруфчьыя <= != == => ->
|
||||||
|
#+end_example
|
||||||
|
** Legibility test
|
||||||
|
Can I tell the difference between: 1,i,I,l,L,|
|
||||||
|
How about: 0,O,o
|
||||||
|
* Tables
|
||||||
|
| Heading 1 | Heading 2 | Plot |
|
||||||
|
|-----------+-----------+--------------|
|
||||||
|
| 1 | 1 | |
|
||||||
|
| 2 | 4 | c |
|
||||||
|
| 3 | 9 | W |
|
||||||
|
| 4 | 16 | WV |
|
||||||
|
| 5 | 25 | WWH |
|
||||||
|
| 6 | 36 | WWWW: |
|
||||||
|
| 7 | 49 | WWWWWV |
|
||||||
|
| 8 | 64 | WWWWWWWl |
|
||||||
|
| 9 | 81 | WWWWWWWWWh |
|
||||||
|
| 10 | 100 | WWWWWWWWWWWW |
|
||||||
|
#+TBLFM: $2=$1**2::$3='(orgtbl-ascii-draw $2 1 100 12)
|
||||||
|
* Source blocks
|
||||||
|
#+begin_src python
|
||||||
|
def main(*args, **kwargs) -> None:
|
||||||
|
"""
|
||||||
|
Example docstring for function
|
||||||
|
"""
|
||||||
|
return
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
#+end_src
|
||||||
|
* Example prose
|
||||||
|
#+begin_quote
|
||||||
|
AMONG the many valuable contributions of William Dwight Whitney to
|
||||||
|
linguistic science is one especially important and fundamental
|
||||||
|
principle. It may be stated in these words. In explaining the
|
||||||
|
prehistoric phenomena of language we must assume no other factors than
|
||||||
|
those which we are able to observe and estimate in the historical
|
||||||
|
period of language development. The factors that produced changes in
|
||||||
|
human speech five thousand or ten thousand years ago cannot have been
|
||||||
|
essentially different from those which are now operating to transform
|
||||||
|
living languages. On the basis of this principle we look to-day at a
|
||||||
|
much-discussed problem of Indo-European philology with views very
|
||||||
|
different from the views held by the founders of Comparative Philology
|
||||||
|
and their immediate successors. I refer to the problem, how the
|
||||||
|
Indo-European people came to assign gender to nouns, to distinguish
|
||||||
|
between masculine, feminine, and neuter. This question is of interest
|
||||||
|
to others besides philologists. What man of culture who has learned
|
||||||
|
languages such as the Greek, Latin, or French has not at times
|
||||||
|
wondered that objects which have no possible connection with the
|
||||||
|
natural gender of animals appear constantly in the language as male or
|
||||||
|
female? In German, for example, it is der fuss, but die hand; der
|
||||||
|
geist, but die seele; in Latin, hīc hortus, hīc animus, hīc amor, but
|
||||||
|
haec planta, haec anima, haec felicitas; in Greek, ὁ πλοῦτος, ὁ οἶκος,
|
||||||
|
but ἡ πενία, ἡ οἰκία.
|
||||||
|
|
||||||
|
This gender distinction pervades all the older Indo-European
|
||||||
|
languages, and must therefore be regarded as having its origin in the
|
||||||
|
time of the pro-ethnic Indo-European community. Not only is the
|
||||||
|
subject itself full of interest, but also the treatment it has
|
||||||
|
received from the philological research of our century. The various
|
||||||
|
efforts made to solve the problem may very aptly illustrate an
|
||||||
|
essential difference which exists between the theories of language
|
||||||
|
development held in the beginning and middle of this century and those
|
||||||
|
which prevail to-day, — a difference of method existing not in
|
||||||
|
comparative linguistics alone, but also in other fields of
|
||||||
|
philological and historical research that border on it.
|
||||||
|
#+end_quote
|
|
@ -1,60 +1,49 @@
|
||||||
epkgs: with epkgs; [
|
{ epkgs }:
|
||||||
# UI
|
with epkgs;
|
||||||
base16-theme
|
[
|
||||||
all-the-icons
|
# EViL Mode
|
||||||
|
evil
|
||||||
|
# UI and Appearance
|
||||||
nerd-icons
|
nerd-icons
|
||||||
nerd-icons-completion
|
|
||||||
nerd-icons-corfu
|
|
||||||
nerd-icons-dired
|
nerd-icons-dired
|
||||||
nerd-icons-ibuffer
|
nerd-icons-ibuffer
|
||||||
minions
|
nerd-icons-corfu
|
||||||
ligature
|
doom-modeline
|
||||||
which-key
|
dashboard
|
||||||
|
# Email and Calendar
|
||||||
|
khalel
|
||||||
|
mu4e
|
||||||
|
# Other (TODO sort)
|
||||||
diff-hl
|
diff-hl
|
||||||
|
|
||||||
# Completion
|
|
||||||
vertico
|
|
||||||
orderless
|
|
||||||
marginalia
|
|
||||||
cape
|
|
||||||
corfu
|
|
||||||
corfu-terminal
|
|
||||||
consult
|
|
||||||
consult-eglot
|
|
||||||
flyspell-correct
|
|
||||||
tempel
|
|
||||||
|
|
||||||
# IDE
|
|
||||||
treesit-auto
|
|
||||||
magit
|
|
||||||
forge
|
|
||||||
apheleia
|
|
||||||
envrc
|
|
||||||
rainbow-delimiters
|
|
||||||
flymake-shellcheck
|
|
||||||
flymake-yamllint
|
|
||||||
flymake-clippy
|
|
||||||
flymake-eslint
|
|
||||||
markdown-mode
|
|
||||||
pandoc-mode
|
|
||||||
python-docstring
|
|
||||||
nix-mode
|
|
||||||
lua-mode
|
|
||||||
|
|
||||||
# Org + LaTeX
|
|
||||||
org-roam
|
org-roam
|
||||||
|
org-journal
|
||||||
org-noter
|
org-noter
|
||||||
citar
|
citar
|
||||||
|
vertico
|
||||||
|
marginalia
|
||||||
|
orderless
|
||||||
|
corfu
|
||||||
|
corfu-terminal
|
||||||
|
cape
|
||||||
|
consult
|
||||||
|
consult-eglot
|
||||||
|
tempel
|
||||||
|
tempel-collection
|
||||||
|
rainbow-delimiters
|
||||||
|
envrc
|
||||||
|
treesit-grammars.with-all-grammars
|
||||||
|
treesit-auto
|
||||||
|
apheleia
|
||||||
|
flymake-shellcheck
|
||||||
|
flymake-clippy
|
||||||
|
magit
|
||||||
|
forge
|
||||||
|
nix-mode
|
||||||
|
nix-ts-mode
|
||||||
|
python-docstring
|
||||||
|
python-pytest
|
||||||
|
engrave-faces
|
||||||
auctex
|
auctex
|
||||||
htmlize
|
markdown-mode
|
||||||
|
|
||||||
# Other
|
|
||||||
password-store
|
|
||||||
emms
|
|
||||||
bbdb
|
|
||||||
ement
|
|
||||||
elfeed
|
|
||||||
elfeed-org
|
|
||||||
elfeed-tube
|
|
||||||
scad-mode
|
scad-mode
|
||||||
]
|
]
|
|
@ -1,9 +0,0 @@
|
||||||
[virtualenvs]
|
|
||||||
create = true
|
|
||||||
in-project = true
|
|
||||||
|
|
||||||
[virtualenvs.options]
|
|
||||||
always-copy = true
|
|
||||||
no-pip = true
|
|
||||||
no-setuptools = true
|
|
||||||
system-site-packages = true
|
|
|
@ -1,7 +1,6 @@
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(pkgs.writeShellScriptBin "mbsync-ensure-pass" (builtins.readFile ./mbsync-ensure-pass.sh))
|
|
||||||
(pkgs.writeShellScriptBin "davmail-setup" ''
|
(pkgs.writeShellScriptBin "davmail-setup" ''
|
||||||
systemctl --user restart davmail # Ensure config file is present
|
systemctl --user restart davmail # Ensure config file is present
|
||||||
systemctl --user stop davmail
|
systemctl --user stop davmail
|
||||||
|
@ -152,7 +151,7 @@
|
||||||
};
|
};
|
||||||
services.mbsync = {
|
services.mbsync = {
|
||||||
inherit (config.programs.mbsync) enable package;
|
inherit (config.programs.mbsync) enable package;
|
||||||
frequency = "*:0/5"; # Every 5 minutes
|
frequency = "*:0/30"; # Every 30 minutes
|
||||||
verbose = true;
|
verbose = true;
|
||||||
preExec = null;
|
preExec = null;
|
||||||
postExec = null;
|
postExec = null;
|
24
system/home/fuzzel.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
{
|
||||||
|
programs.fuzzel = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
main = {
|
||||||
|
use-bold = true;
|
||||||
|
icon-theme = config.gtk.iconTheme.name;
|
||||||
|
icons-enabled = true;
|
||||||
|
fields = "filename,name,generic,exec";
|
||||||
|
fuzzy = true;
|
||||||
|
filter-desktop = true;
|
||||||
|
terminal = "${config.programs.alacritty.package}/bin/alacritty -e";
|
||||||
|
anchor = "center";
|
||||||
|
layer = "overlay";
|
||||||
|
};
|
||||||
|
border = {
|
||||||
|
width = 2;
|
||||||
|
radius = 10;
|
||||||
|
};
|
||||||
|
colors.border = lib.mkForce "${config.lib.stylix.scheme.base0E}ff";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
8
system/home/gpg/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.gpg.enable = true;
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
pinentryPackage = lib.mkDefault pkgs.pinentry-all;
|
||||||
|
};
|
||||||
|
}
|
410
system/home/hyprland.nix
Normal file
|
@ -0,0 +1,410 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
osConfig,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./udiskie.nix
|
||||||
|
./waybar.nix
|
||||||
|
./fuzzel.nix
|
||||||
|
./mako.nix
|
||||||
|
./avizo.nix
|
||||||
|
./wlogout.nix
|
||||||
|
];
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writeShellScriptBin "protonmail-setup-bridge" ''
|
||||||
|
pkill -9 -f protonmail-bridge
|
||||||
|
PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -c
|
||||||
|
${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl dispatch exec "PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
stylix.targets.hyprlock.enable = false; # TODO maybe re-enable once I've checked what it does
|
||||||
|
services = {
|
||||||
|
kanshi.systemdTarget = "hyprland-session.target";
|
||||||
|
gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
||||||
|
hypridle = {
|
||||||
|
enable = true;
|
||||||
|
settings =
|
||||||
|
let
|
||||||
|
hyprctl = "${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl";
|
||||||
|
hyprlock = "${config.programs.hyprlock.package}/bin/hyprlock";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
general = {
|
||||||
|
after_sleep_cmd = "${hyprctl} dispatch dpms on";
|
||||||
|
ignore_dbus_inhibit = false;
|
||||||
|
lock_cmd = "${hyprlock}";
|
||||||
|
};
|
||||||
|
|
||||||
|
listener = [
|
||||||
|
{
|
||||||
|
timeout = 900;
|
||||||
|
on-timeout = "${hyprlock}";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeout = 1200;
|
||||||
|
on-timeout = "${hyprctl} dispatch dpms off";
|
||||||
|
on-resume = "${hyprctl} dispatch dpms on";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
waybar.systemd.target = "hyprland-session.target";
|
||||||
|
hyprlock =
|
||||||
|
let
|
||||||
|
scheme = config.lib.stylix.scheme;
|
||||||
|
accent = scheme.base0E;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
disable_loading_bar = false;
|
||||||
|
hide_cursor = true;
|
||||||
|
grace = 3;
|
||||||
|
ignore_empty_input = true;
|
||||||
|
};
|
||||||
|
background = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
path = "screenshot";
|
||||||
|
blur_passes = 3;
|
||||||
|
blur_size = 8;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
shape = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
size = "395, 185";
|
||||||
|
color = "0xff${scheme.base00}";
|
||||||
|
rounding = 10;
|
||||||
|
border_size = 2;
|
||||||
|
border_color = "0xff${accent}";
|
||||||
|
position = "-10, -10";
|
||||||
|
halign = "right";
|
||||||
|
valign = "top";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
label =
|
||||||
|
let
|
||||||
|
font = config.stylix.fonts.monospace.name;
|
||||||
|
in
|
||||||
|
[
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = "cmd[update:30000] echo \"$(date +\"%R\")\"";
|
||||||
|
color = "0xff${scheme.base05}";
|
||||||
|
font_size = 90;
|
||||||
|
font_family = font;
|
||||||
|
position = "-30, 0";
|
||||||
|
halign = "right";
|
||||||
|
valign = "top";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = "cmd[update:43200000] echo \"$(date +\"%F\")\"";
|
||||||
|
color = "0xff${scheme.base05}";
|
||||||
|
font_size = 25;
|
||||||
|
font_family = font;
|
||||||
|
position = "-40, -150";
|
||||||
|
halign = "right";
|
||||||
|
valign = "top";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
image = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
path = "${./pfp/personal.png}";
|
||||||
|
size = 100;
|
||||||
|
border_color = "0xff${accent}";
|
||||||
|
position = "0, 75";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
input-field = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
size = "300, 60";
|
||||||
|
outline_thickness = 2;
|
||||||
|
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
|
||||||
|
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
|
||||||
|
dots_center = true;
|
||||||
|
outer_color = "0xff${accent}";
|
||||||
|
inner_color = "0xff${scheme.base00}";
|
||||||
|
font_color = "0xff${scheme.base05}";
|
||||||
|
fade_on_empty = false;
|
||||||
|
placeholder_text = " Logged in as <span foreground=\"##${accent}\">$USER</span>";
|
||||||
|
check_color = "0xff${scheme.blue}";
|
||||||
|
fail_color = "0xff${scheme.red}";
|
||||||
|
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
|
||||||
|
hide_input = false;
|
||||||
|
position = "0, -50";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = osConfig.programs.hyprland.package;
|
||||||
|
xwayland.enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
settings = {
|
||||||
|
monitor = [ ",preferred,auto,auto" ];
|
||||||
|
exec-once = [
|
||||||
|
"systemctl --user import-environment WAYLAND_DISPLAY QT_QPA_PLATFORMTHEME"
|
||||||
|
"${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
|
||||||
|
"${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"
|
||||||
|
"PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"
|
||||||
|
"${pkgs.dex}/bin/dex -a"
|
||||||
|
];
|
||||||
|
gestures.workspace_swipe = true;
|
||||||
|
general = {
|
||||||
|
layout = "master";
|
||||||
|
gaps_in = 3;
|
||||||
|
gaps_out = 5;
|
||||||
|
"col.active_border" = lib.mkForce "rgb(${config.lib.stylix.scheme.base0E})";
|
||||||
|
};
|
||||||
|
master = {
|
||||||
|
allow_small_split = true;
|
||||||
|
special_scale_factor = 0.95;
|
||||||
|
mfact = 0.5;
|
||||||
|
new_on_top = false;
|
||||||
|
orientation = "left";
|
||||||
|
inherit_fullscreen = false;
|
||||||
|
smart_resizing = false;
|
||||||
|
drop_at_cursor = true;
|
||||||
|
};
|
||||||
|
input = {
|
||||||
|
kb_layout = osConfig.services.xserver.xkb.layout;
|
||||||
|
follow_mouse = 1;
|
||||||
|
touchpad.natural_scroll = "yes";
|
||||||
|
};
|
||||||
|
decoration = {
|
||||||
|
rounding = 10;
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 5;
|
||||||
|
passes = 3;
|
||||||
|
new_optimizations = true;
|
||||||
|
brightness = 1.0;
|
||||||
|
noise = 2.0e-2;
|
||||||
|
};
|
||||||
|
shadow = {
|
||||||
|
enabled = true;
|
||||||
|
range = 4;
|
||||||
|
render_power = 3;
|
||||||
|
ignore_window = true;
|
||||||
|
color = lib.mkForce "rgba(${config.lib.stylix.scheme.base00}0d)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
animations = {
|
||||||
|
enabled = true;
|
||||||
|
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||||
|
animation = [
|
||||||
|
"windows, 1, 7, myBezier"
|
||||||
|
"windowsOut, 1, 7, default, popin 80%"
|
||||||
|
"border, 1, 10, default"
|
||||||
|
"borderangle, 1, 8, default"
|
||||||
|
"fade, 1, 7, default"
|
||||||
|
"workspaces, 1, 6, default"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
misc = {
|
||||||
|
disable_splash_rendering = true;
|
||||||
|
disable_autoreload = true;
|
||||||
|
mouse_move_enables_dpms = true;
|
||||||
|
key_press_enables_dpms = true;
|
||||||
|
};
|
||||||
|
xwayland.force_zero_scaling = true;
|
||||||
|
layerrule =
|
||||||
|
let
|
||||||
|
blur = x: "blur, ^(${x})$";
|
||||||
|
ignorealpha = x: "ignorealpha 0.3, ^(${x})$";
|
||||||
|
layers = [
|
||||||
|
"system-menu"
|
||||||
|
"gtk-layer-shell"
|
||||||
|
"notifications"
|
||||||
|
"launcher"
|
||||||
|
"logout_dialog"
|
||||||
|
"waybar"
|
||||||
|
"avizo"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
(lib.lists.forEach layers blur) ++ (lib.lists.forEach layers ignorealpha);
|
||||||
|
windowrule = [
|
||||||
|
# Float + move system windows
|
||||||
|
# Password prompts
|
||||||
|
"float, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||||
|
"center, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||||
|
"pin, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||||
|
"dimaround, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||||
|
"stayfocused, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||||
|
# PulseAudio, Network and Bluetooth control panels
|
||||||
|
"float, pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||||
|
"size 800 600, pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||||
|
"move onscreen 50 100%-615,pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||||
|
# File browser and picker dialog
|
||||||
|
"float, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
||||||
|
"size 800 600, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
||||||
|
"center, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
||||||
|
# Matplotlib plots
|
||||||
|
"float, Matplotlib"
|
||||||
|
|
||||||
|
# Workspace rules
|
||||||
|
"workspace 2, (nyxt|firefox)" # Browser
|
||||||
|
"workspace 3, (signal|whatsapp-for-linux|WebCord|teams-for-linux|twinkle)" # Messaging
|
||||||
|
"workspace 4, (libreoffice|soffice)(.*)" # Documents
|
||||||
|
"workspace 5, (Nxplayer.bin)" # Remote Desktop
|
||||||
|
"workspace 6, (PrusaSlicer)" # 3D Printing
|
||||||
|
"workspace 7, (steam_app|steam|lutris|page.kramo.Cartridges|org.prismlauncher.PrismLauncher|explorer.exe|gw2-64.exe|rsi launcher.exe)" # Gaming
|
||||||
|
|
||||||
|
# PrismLauncher / Minecraft
|
||||||
|
"float, org.prismlauncher.PrismLauncher"
|
||||||
|
"center, org.prismlauncher.PrismLauncher"
|
||||||
|
"size 800 600, org.prismlauncher.PrismLauncher"
|
||||||
|
];
|
||||||
|
windowrulev2 = [
|
||||||
|
# Firefox PIP
|
||||||
|
"float, title:Picture-in-Picture|Library,class:firefox"
|
||||||
|
"size 750 400, title:Picture-in-Picture,class:firefox"
|
||||||
|
"size 800 800, title:Library,class:firefox"
|
||||||
|
"move onscreen 100%-775 100%-425, title:Picture-in-Picture,class:firefox"
|
||||||
|
"center, title:Library,class:firefox"
|
||||||
|
"pin, title:Picture-in-Picture,class:firefox"
|
||||||
|
|
||||||
|
# NautilusPreviewer (Sushi)
|
||||||
|
"float, class:org.gnome.NautilusPreviewer"
|
||||||
|
"center, class:org.gnome.NautilusPreviewer"
|
||||||
|
|
||||||
|
# Electron file picker dialog
|
||||||
|
"float, title:Open Files,class:electron"
|
||||||
|
"size 800 600, title:Open Files,class:electron"
|
||||||
|
"center, title:Open Files,class:electron"
|
||||||
|
|
||||||
|
# Inhibit idle when watching videos
|
||||||
|
"idleinhibit fullscreen, class:firefox|com.github.rafostar.Clapper"
|
||||||
|
|
||||||
|
# Inhibit idle when playing games
|
||||||
|
"idleinhibit always, class:(steam_app|Minecraft).*"
|
||||||
|
|
||||||
|
# LibreOffice
|
||||||
|
"suppressevent fullscreen maximize, class:(libreoffice|soffice)(.*)"
|
||||||
|
"float, title:Open,class:(libreoffice|soffice)(.*)"
|
||||||
|
|
||||||
|
# Steam
|
||||||
|
"workspace 7 silent, title:(notification)(.*),class:steam"
|
||||||
|
"float, title:Friends List,class:steam"
|
||||||
|
"size 400 600, title:Friends List,class:steam"
|
||||||
|
"center, title:Friends List,class:steam"
|
||||||
|
"float, title:Steam Settings,class:steam"
|
||||||
|
"size 800 600, title:Steam Settings,class:steam"
|
||||||
|
"center, title:Steam Settings,class:steam"
|
||||||
|
"float, title:(.*)(Controller Layout),class:steam"
|
||||||
|
"size 1200 800, title:(.*)(Controller Layout),class:steam"
|
||||||
|
"center, title:(.*)(Controller Layout),class:steam"
|
||||||
|
|
||||||
|
# NoMachine
|
||||||
|
"suppressevent fullscreen maximize, class:Nxplayer.bin"
|
||||||
|
];
|
||||||
|
bind =
|
||||||
|
let
|
||||||
|
workspace = w: [
|
||||||
|
"SUPER, ${toString w}, moveworkspacetomonitor, ${toString w} current"
|
||||||
|
"SUPER, ${toString w}, workspace, ${toString w}"
|
||||||
|
"SUPER SHIFT, ${toString w}, movetoworkspace, ${toString w}"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
lib.lists.flatten (lib.lists.forEach (lib.lists.range 1 9) workspace)
|
||||||
|
++ [
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
|
# Open Hyprland wiki at correct version number
|
||||||
|
"CTRL_SHIFT, H, exec, xdg-open \"https://wiki.hyprland.org/$(${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl version -j | ${pkgs.jq}/bin/jq $args.tag | ${pkgs.gnused}/bin/sed s/v// | ${pkgs.gnused}/bin/sed s/\\\"//g)\""
|
||||||
|
|
||||||
|
"SUPER, F1, exec, ${config.programs.hyprlock.package}/bin/hyprlock"
|
||||||
|
"SUPER, P, exec, ${config.programs.wlogout.package}/bin/wlogout"
|
||||||
|
"SUPER, Q, killactive,"
|
||||||
|
"SUPER, V, togglefloating"
|
||||||
|
# "SUPER SHIFT, V, setfloating" ## TODO setfloating exists
|
||||||
|
# in newer version of Hyprland than mine
|
||||||
|
"SUPER SHIFT, V, moveactive, exact 1% 4%"
|
||||||
|
"SUPER SHIFT, V, resizeactive, exact 800 600"
|
||||||
|
"SUPER SHIFT, V, pin"
|
||||||
|
"SUPER, M, fullscreen, 1" # Maximise window
|
||||||
|
"SUPER SHIFT, M, fullscreen, 0" # Actual fullscreen
|
||||||
|
"SUPER, Z, exec, ${config.services.mako.package}/bin/makoctl restore"
|
||||||
|
"SUPER SHIFT, Z, exec, exec ${config.services.mako.package}/bin/makoctl dismiss -a"
|
||||||
|
|
||||||
|
# Common program shortcuts
|
||||||
|
"SUPER, Space, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
|
||||||
|
"SUPER, Return, exec, ${config.programs.alacritty.package}/bin/alacritty"
|
||||||
|
"SUPER SHIFT, Return, exec, ${config.programs.emacs.finalPackage}/bin/emacsclient -c"
|
||||||
|
"SUPER, W, exec, ${pkgs.nyxt}/bin/nyxt --no-socket"
|
||||||
|
"SUPER, F, exec, ${pkgs.nautilus}/bin/nautilus"
|
||||||
|
|
||||||
|
# Misc useful binds
|
||||||
|
",Print,exec,${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -"
|
||||||
|
# ",XF86Calculator,exec,pkill rofi || ${config.programs.rofi.finalPackage}/bin/rofi -show calc"
|
||||||
|
|
||||||
|
# Movement binds
|
||||||
|
"SUPER, H, movefocus, l"
|
||||||
|
"SUPER, L, movefocus, r"
|
||||||
|
"SUPER, K, movefocus, u"
|
||||||
|
"SUPER, J, movefocus, d"
|
||||||
|
"SUPER SHIFT, H, movewindow, l"
|
||||||
|
"SUPER SHIFT, L, movewindow, r"
|
||||||
|
"SUPER SHIFT, K, movewindow, u"
|
||||||
|
"SUPER SHIFT, J, movewindow, d"
|
||||||
|
|
||||||
|
# Special workspaces
|
||||||
|
"SUPER, comma, workspace, m-1"
|
||||||
|
"SUPER SHIFT, comma, movetoworkspace, r-1"
|
||||||
|
"SUPER, period, workspace, m+1"
|
||||||
|
"SUPER SHIFT, period, movetoworkspace, r+1"
|
||||||
|
"SUPER, N, workspace, empty"
|
||||||
|
"SUPER SHIFT, N, movetoworkspace, empty"
|
||||||
|
"SUPER, minus, togglespecialworkspace"
|
||||||
|
"SUPER SHIFT, minus, movetoworkspace, special"
|
||||||
|
"SUPER, bracketright, focusmonitor, +1"
|
||||||
|
"SUPER SHIFT, bracketright, movecurrentworkspacetomonitor, +1"
|
||||||
|
"SUPER, bracketleft, focusmonitor, -1"
|
||||||
|
"SUPER SHIFT, bracketleft, movecurrentworkspacetomonitor, -1"
|
||||||
|
"SUPER, O, focusurgentorlast"
|
||||||
|
];
|
||||||
|
bindl = [
|
||||||
|
# Sound
|
||||||
|
",XF86AudioMute,exec,${config.services.avizo.package}/bin/volumectl %"
|
||||||
|
",XF86AudioMicMute,exec,${config.services.avizo.package}/bin/volumectl -m %"
|
||||||
|
|
||||||
|
# Playback
|
||||||
|
",XF86AudioPlay,exec,${pkgs.playerctl}/bin/playerctl play-pause"
|
||||||
|
",XF86AudioStop,exec,${pkgs.playerctl}/bin/playerctl play-pause"
|
||||||
|
",XF86AudioPrev,exec,${pkgs.playerctl}/bin/playerctl previous"
|
||||||
|
",XF86AudioNext,exec,${pkgs.playerctl}/bin/playerctl next"
|
||||||
|
];
|
||||||
|
bindle = [
|
||||||
|
# Sound
|
||||||
|
",XF86AudioRaiseVolume,exec,${config.services.avizo.package}/bin/volumectl -u + 5"
|
||||||
|
",XF86AudioLowerVolume,exec,${config.services.avizo.package}/bin/volumectl -u - 5"
|
||||||
|
|
||||||
|
# Brightness
|
||||||
|
",XF86MonBrightnessUp,exec,${config.services.avizo.package}/bin/lightctl + 5"
|
||||||
|
",XF86MonBrightnessDown,exec,${config.services.avizo.package}/bin/lightctl - 5"
|
||||||
|
];
|
||||||
|
bindm = [
|
||||||
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
"SUPER, mouse:272, movewindow"
|
||||||
|
"SUPER, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
Before Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 89 KiB |
|
@ -1,13 +0,0 @@
|
||||||
lib: string:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
chars =
|
|
||||||
let
|
|
||||||
lc = strings.splitString "" string;
|
|
||||||
in
|
|
||||||
(lists.sublist 1 (lists.length lc - 2) lc);
|
|
||||||
in
|
|
||||||
(strings.concatStringsSep "" (
|
|
||||||
(lists.singleton (strings.toUpper (lists.elemAt chars 0)))
|
|
||||||
++ (lists.sublist 1 (lists.length chars) chars)
|
|
||||||
))
|
|
18
system/home/mako.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
{
|
||||||
|
services.mako = {
|
||||||
|
enable = true;
|
||||||
|
anchor = "top-right";
|
||||||
|
width = 600;
|
||||||
|
height = 600;
|
||||||
|
layer = "top";
|
||||||
|
markup = true;
|
||||||
|
maxVisible = 10;
|
||||||
|
icons = true;
|
||||||
|
iconPath = with config.gtk.iconTheme; "${package}/share/icons/${name}";
|
||||||
|
borderRadius = 10;
|
||||||
|
borderSize = 2;
|
||||||
|
borderColor = lib.mkForce config.lib.stylix.scheme.withHashtag.base0E;
|
||||||
|
defaultTimeout = (builtins.mul 5 1000); # 5s timeout
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,10 +2,10 @@
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(pkgs.writeShellScriptBin "ukaea-vpn-connect" ''
|
(pkgs.writeShellScriptBin "ukaea-vpn-connect" ''
|
||||||
sudo ${pkgs.openfortivpn}/bin/openfortivpn -c ${./ukaea-vpn.conf} -p $(${pkgs.pass}/bin/pass show work/microsoftonline.com | head -n1)
|
sudo ${pkgs.openfortivpn}/bin/openfortivpn --config=${./ukaea-vpn.conf}
|
||||||
'')
|
'')
|
||||||
(pkgs.writeShellScriptBin "jetdata-vpn-connect" ''
|
(pkgs.writeShellScriptBin "jetdata-vpn-connect" ''
|
||||||
sudo ${pkgs.openfortivpn}/bin/openfortivpn -c ${./jetdata-vpn.conf} -p $(${pkgs.pass}/bin/pass show work/microsoftonline.com | head -n1)
|
sudo ${pkgs.openfortivpn}/bin/openfortivpn --config=${./jetdata-vpn.conf}
|
||||||
'')
|
'')
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
18
system/home/password-store/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../gpg/default.nix
|
||||||
|
../shell/git.nix
|
||||||
|
];
|
||||||
|
programs = {
|
||||||
|
gpg.enable = true;
|
||||||
|
password-store = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.pass-nodmenu.withExtensions (exts: with exts; [ pass-update ]);
|
||||||
|
settings = {
|
||||||
|
PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.password-store";
|
||||||
|
PASSWORD_STORE_ENABLE_EXTENSIONS = "true";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 178 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
@ -1,376 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
stylix.targets.kde.enable = false;
|
|
||||||
imports = [ inputs.plasma-manager.homeManagerModules.plasma-manager ];
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
protonmail-bridge-gui
|
|
||||||
libreoffice-qt-fresh
|
|
||||||
rc2nix
|
|
||||||
wl-clipboard
|
|
||||||
];
|
|
||||||
services.gpg-agent.pinentryPackage = pkgs.pinentry-qt;
|
|
||||||
programs.plasma = {
|
|
||||||
enable = true;
|
|
||||||
overrideConfig = true;
|
|
||||||
|
|
||||||
workspace = {
|
|
||||||
# theme = "default";
|
|
||||||
# colorScheme = "Breeze";
|
|
||||||
iconTheme = config.gtk.iconTheme.name;
|
|
||||||
# windowDecorations = {
|
|
||||||
# library = "org.kde.breeze";
|
|
||||||
# theme = "Breeze";
|
|
||||||
# };
|
|
||||||
cursor = {
|
|
||||||
inherit (config.home.pointerCursor) size;
|
|
||||||
theme = config.home.pointerCursor.name;
|
|
||||||
};
|
|
||||||
wallpaper = config.stylix.image;
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts =
|
|
||||||
let
|
|
||||||
general = {
|
|
||||||
family = config.stylix.fonts.sansSerif.name;
|
|
||||||
pointSize = 12;
|
|
||||||
};
|
|
||||||
small = {
|
|
||||||
inherit (general) family;
|
|
||||||
pointSize = general.pointSize - 2;
|
|
||||||
};
|
|
||||||
fixedWidth = {
|
|
||||||
family = config.stylix.fonts.monospace.name;
|
|
||||||
pointSize = 12;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit general small fixedWidth;
|
|
||||||
menu = general;
|
|
||||||
toolbar = general;
|
|
||||||
windowTitle = small;
|
|
||||||
};
|
|
||||||
|
|
||||||
hotkeys.commands = {
|
|
||||||
"launch-alacritty" = {
|
|
||||||
name = "Launch Alacritty terminal emulator";
|
|
||||||
key = "Ctrl+Alt+T";
|
|
||||||
command = "alacritty";
|
|
||||||
};
|
|
||||||
"launch-emacs" = {
|
|
||||||
name = "Launch Emacs Client Window";
|
|
||||||
key = "Meta+Alt+X";
|
|
||||||
command = "emacsclient -c";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
panels = [
|
|
||||||
{
|
|
||||||
height = 24;
|
|
||||||
lengthMode = "fill";
|
|
||||||
location = "top";
|
|
||||||
alignment = "center";
|
|
||||||
hiding = "normalpanel";
|
|
||||||
floating = true;
|
|
||||||
widgets = [
|
|
||||||
"org.kde.plasma.appmenu"
|
|
||||||
"org.kde.plasma.panelspacer"
|
|
||||||
{
|
|
||||||
name = "org.kde.plasma.pager";
|
|
||||||
config.General = {
|
|
||||||
showWindowIcons = "true";
|
|
||||||
showOnlyCurrentScreen = "false";
|
|
||||||
wrapPage = "true";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
"org.kde.plasma.panelspacer"
|
|
||||||
"org.kde.plasma.marginsseparator"
|
|
||||||
"org.kde.plasma.keyboardindicator"
|
|
||||||
"org.kde.plasma.cameraindicator"
|
|
||||||
{
|
|
||||||
systemTray = {
|
|
||||||
icons = {
|
|
||||||
spacing = "small";
|
|
||||||
scaleToFit = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
digitalClock = {
|
|
||||||
date = {
|
|
||||||
enable = true;
|
|
||||||
format = "isoDate";
|
|
||||||
position = "besideTime";
|
|
||||||
};
|
|
||||||
time = {
|
|
||||||
format = "24h";
|
|
||||||
showSeconds = "onlyInTooltip";
|
|
||||||
};
|
|
||||||
calendar.showWeekNumbers = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "org.kde.plasma.userswitcher";
|
|
||||||
config.General = {
|
|
||||||
showFace = "true";
|
|
||||||
showName = "false";
|
|
||||||
showFullName = "true";
|
|
||||||
showTechnicalInfo = "true";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
height = 48;
|
|
||||||
lengthMode = "fit";
|
|
||||||
location = "bottom";
|
|
||||||
alignment = "center";
|
|
||||||
hiding = "dodgewindows";
|
|
||||||
floating = true;
|
|
||||||
screen = "all";
|
|
||||||
widgets = [
|
|
||||||
{
|
|
||||||
name = "org.kde.plasma.kickoff";
|
|
||||||
config.General = {
|
|
||||||
icon = "nix-snowflake";
|
|
||||||
primaryActions = "0";
|
|
||||||
favoritesDisplay = "0";
|
|
||||||
applicationsDisplay = "1";
|
|
||||||
pin = "false";
|
|
||||||
showActionButtonCaptions = "true";
|
|
||||||
compactMode = "false";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
"org.kde.plasma.marginsseparator"
|
|
||||||
{
|
|
||||||
name = "org.kde.plasma.icontasks";
|
|
||||||
config.General = {
|
|
||||||
maxStripes = "1";
|
|
||||||
showToolTips = "true";
|
|
||||||
launchers = [
|
|
||||||
"preferred://filemanager"
|
|
||||||
"preferred://browser"
|
|
||||||
"applications:emacs.desktop"
|
|
||||||
"applications:writer.desktop"
|
|
||||||
"applications:calc.desktop"
|
|
||||||
"applications:impress.desktop"
|
|
||||||
"applications:org.kde.elisa.desktop"
|
|
||||||
"applications:Alacritty.desktop"
|
|
||||||
"applications:systemsettings.desktop"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
shortcuts = {
|
|
||||||
ksmserver = {
|
|
||||||
"Lock Session" = [
|
|
||||||
"Screensaver"
|
|
||||||
"Meta+Alt+L"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
kwin = {
|
|
||||||
"Walk Through Windows of Current Application" = "Alt+`";
|
|
||||||
"Walk Through Windows of Current Application (Reverse)" = "Alt+¬";
|
|
||||||
"ToggleMouseClick" = "Meta+*";
|
|
||||||
"Expose" = "Meta+,";
|
|
||||||
"Switch Window Down" = "Meta+J";
|
|
||||||
"Switch Window Left" = "Meta+H";
|
|
||||||
"Switch Window Right" = "Meta+L";
|
|
||||||
"Switch Window Up" = "Meta+K";
|
|
||||||
"Invert" = "Meta+Ctrl+I";
|
|
||||||
"InvertWindow" = "Meta+Ctrl+U";
|
|
||||||
"Invert Screen Colors" = [ ];
|
|
||||||
};
|
|
||||||
"services/org.kde.konsole.desktop"."_launch" = [ ];
|
|
||||||
"services/org.kde.krunner.desktop"."_launch" = [
|
|
||||||
"Meta+Space"
|
|
||||||
"Search"
|
|
||||||
"Alt+F2"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
kwin = {
|
|
||||||
virtualDesktops = {
|
|
||||||
rows = 1;
|
|
||||||
number = 4;
|
|
||||||
};
|
|
||||||
effects = {
|
|
||||||
translucency.enable = true;
|
|
||||||
blur.enable = true;
|
|
||||||
cube.enable = true;
|
|
||||||
dimAdminMode.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
powerdevil =
|
|
||||||
let
|
|
||||||
powerButtonAction = "turnOffScreen";
|
|
||||||
whenSleepingEnter = "standbyThenHibernate";
|
|
||||||
whenLaptopLidClosed = "sleep";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
AC = {
|
|
||||||
inherit powerButtonAction whenSleepingEnter whenLaptopLidClosed;
|
|
||||||
autoSuspend = {
|
|
||||||
action = "sleep";
|
|
||||||
idleTimeout = 7200;
|
|
||||||
};
|
|
||||||
dimDisplay = {
|
|
||||||
enable = true;
|
|
||||||
# idleTimeOut = 300;
|
|
||||||
};
|
|
||||||
turnOffDisplay = {
|
|
||||||
idleTimeout = 1800;
|
|
||||||
idleTimeoutWhenLocked = 120;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
battery = {
|
|
||||||
inherit powerButtonAction whenSleepingEnter whenLaptopLidClosed;
|
|
||||||
autoSuspend = {
|
|
||||||
action = "sleep";
|
|
||||||
idleTimeout = 900;
|
|
||||||
};
|
|
||||||
dimDisplay = {
|
|
||||||
enable = true;
|
|
||||||
# idleTimeOut = 120;
|
|
||||||
};
|
|
||||||
turnOffDisplay = {
|
|
||||||
idleTimeout = 300;
|
|
||||||
idleTimeoutWhenLocked = 60;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
lowBattery = {
|
|
||||||
inherit powerButtonAction whenSleepingEnter whenLaptopLidClosed;
|
|
||||||
autoSuspend = {
|
|
||||||
action = "hibernate";
|
|
||||||
idleTimeout = 300;
|
|
||||||
};
|
|
||||||
dimDisplay = {
|
|
||||||
enable = true;
|
|
||||||
# idleTimeOut = 60;
|
|
||||||
};
|
|
||||||
turnOffDisplay = {
|
|
||||||
idleTimeout = 120;
|
|
||||||
idleTimeoutWhenLocked = "immediately";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
configFile = {
|
|
||||||
baloofilerc."Basic Settings"."Indexing-Enabled" = false;
|
|
||||||
kwalletrc."org.freedesktop.secrets" = {
|
|
||||||
Enabled = false;
|
|
||||||
apiEnabled = false;
|
|
||||||
};
|
|
||||||
kcminputrc.Keyboard.NumLock = 1;
|
|
||||||
plasmanotifyrc = {
|
|
||||||
Notifications = {
|
|
||||||
NormalAlwaysOnTop = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
krunnerrc = {
|
|
||||||
General = {
|
|
||||||
ActivateWhenTypingOnDesktop = false;
|
|
||||||
FreeFloating = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
kscreenlockerrc = {
|
|
||||||
Daemon.Timeout = 15;
|
|
||||||
Greeter.WallpaperPlugin = "org.kde.potd";
|
|
||||||
};
|
|
||||||
klipperrc = {
|
|
||||||
General = {
|
|
||||||
SyncClipboards = true;
|
|
||||||
MaxClipItems = 5;
|
|
||||||
IgnoreImages = false;
|
|
||||||
KeepClipboardContents = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
kdeglobals = {
|
|
||||||
General =
|
|
||||||
let
|
|
||||||
AccentColor =
|
|
||||||
let
|
|
||||||
r = config.lib.stylix.scheme."base0D-rgb-r";
|
|
||||||
g = config.lib.stylix.scheme."base0D-rgb-g";
|
|
||||||
b = config.lib.stylix.scheme."base0D-rgb-b";
|
|
||||||
in
|
|
||||||
"${r}, ${g}, ${b}";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit AccentColor;
|
|
||||||
LastUsedCustomAccentColor = AccentColor;
|
|
||||||
TerminalApplication = "alacritty";
|
|
||||||
TerminalService = "Alacritty.desktop";
|
|
||||||
};
|
|
||||||
WM = {
|
|
||||||
# TODO convert to base16 colours at some point
|
|
||||||
activeBackground = "227,229,231";
|
|
||||||
activeBlend = "227,229,231";
|
|
||||||
activeForeground = "35,38,41";
|
|
||||||
inactiveBackground = "239,240,241";
|
|
||||||
inactiveBlend = "239,240,241";
|
|
||||||
inactiveForeground = "112,125,138";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
breezerc = {
|
|
||||||
Common = {
|
|
||||||
OutlineClassButton = true;
|
|
||||||
OutlineCloseButtone = true;
|
|
||||||
ShadowSize = "ShadowVeryLarge";
|
|
||||||
ShadowStrength = "128";
|
|
||||||
};
|
|
||||||
Style = {
|
|
||||||
MenuOpacity = "100";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
dolphinrc = {
|
|
||||||
ContentDisplay = {
|
|
||||||
UsePermissionsFormat = "CombinedFormat";
|
|
||||||
};
|
|
||||||
General = {
|
|
||||||
BrowseThroughArchives = true;
|
|
||||||
OpenNewTabAfterLastTab = true;
|
|
||||||
RememberOpenedTabs = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
kwinrc = {
|
|
||||||
Plugins = {
|
|
||||||
frozenappEnabled = false;
|
|
||||||
mouseclickEnabled = true;
|
|
||||||
shakecursorEnabled = false;
|
|
||||||
invertEnabled = true;
|
|
||||||
};
|
|
||||||
Windows = {
|
|
||||||
FocusPolicy = "FocusFollowsMouse";
|
|
||||||
RollOverDesktops = true;
|
|
||||||
};
|
|
||||||
NightColor = {
|
|
||||||
Active = true;
|
|
||||||
Mode = "Location";
|
|
||||||
LatitudeFixed = "51.7";
|
|
||||||
LongitudeFixed = "-1.2";
|
|
||||||
};
|
|
||||||
"Effect-translucency" = {
|
|
||||||
Inactive = 100;
|
|
||||||
MoveResize = 100;
|
|
||||||
Dialogs = 100;
|
|
||||||
ComboboxPopups = 100;
|
|
||||||
Menus = 100;
|
|
||||||
};
|
|
||||||
"org.kde.kdecoration2" = {
|
|
||||||
BorderSize = "None";
|
|
||||||
BorderSizeAuto = "false";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
xdg.configFile."autostart/proton-bridge-gui.desktop".source = "${pkgs.protonmail-bridge-gui}/share/applications/proton-bridge-gui.desktop";
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
# sudo pacman -S git frameworkintegration gcc-libs glibc kcmutils kcolorscheme kconfig kcoreaddons kdecoration kguiaddons ki18n kiconthemes kirigami kwidgetsaddons kwindowsystem qt6-base qt6-declarative qt6-svg xdg-utils extra-cmake-modules kcmutils5 frameworkintegration5 kconfigwidgets5 kiconthemes5 kirigami2 kwindowsystem5
|
|
||||||
{ mkDerivation, fetchFromGithub }:
|
|
||||||
let
|
|
||||||
pname = "klassy";
|
|
||||||
version = "6.1.breeze6.0.3";
|
|
||||||
in
|
|
||||||
mkDerivation {
|
|
||||||
inherit pname version;
|
|
||||||
src = fetchFromGithub {
|
|
||||||
owner = "paulmcauley";
|
|
||||||
repo = pname;
|
|
||||||
rev = version;
|
|
||||||
hash = "";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,42 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [ pkgs.yakuake ];
|
|
||||||
programs.konsole = {
|
|
||||||
enable = true;
|
|
||||||
defaultProfile = "One-Light";
|
|
||||||
customColorSchemes.onelight = ./onelight.colorscheme;
|
|
||||||
profiles.onelight = {
|
|
||||||
name = "One-Light";
|
|
||||||
colorScheme = "onelight";
|
|
||||||
command = "${config.programs.zsh.package}/bin/zsh";
|
|
||||||
font = {
|
|
||||||
inherit (config.stylix.fonts.monospace) name;
|
|
||||||
size = config.stylix.fonts.sizes.terminal;
|
|
||||||
};
|
|
||||||
extraConfig = {
|
|
||||||
"Interaction Options" = {
|
|
||||||
TextEditorCmd = 6;
|
|
||||||
TextEditorCmdCustom = "emacsclient -c +LINE:COLUMN PATH";
|
|
||||||
UnderlineFilesEnabled = true;
|
|
||||||
OpenLinksByDirectClickEnabled = true;
|
|
||||||
};
|
|
||||||
"Terminal Features" = {
|
|
||||||
BlinkingCursorEnabled = true;
|
|
||||||
VerticalLine = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraConfig = {
|
|
||||||
MainWindow = {
|
|
||||||
MenuBar = "Disabled";
|
|
||||||
};
|
|
||||||
TabBar = {
|
|
||||||
ExpandTabWidth = true;
|
|
||||||
NewTabButton = true;
|
|
||||||
};
|
|
||||||
ThumbnailsSettings = {
|
|
||||||
ThumbnailAlt = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.libsForQt5.krohnkite.overrideAttrs (
|
|
||||||
final: prev:
|
|
||||||
let
|
|
||||||
version = "0.9.7";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit version;
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "anametologin";
|
|
||||||
repo = "krohnkite";
|
|
||||||
rev = version;
|
|
||||||
hash = "sha256-8A3zW5tK8jK9fSxYx28b8uXGsvxEoUYybU0GaMD2LNw=";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
))
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,100 +0,0 @@
|
||||||
[Background]
|
|
||||||
Color=250,250,250
|
|
||||||
|
|
||||||
[BackgroundFaint]
|
|
||||||
Color=250,250,250
|
|
||||||
|
|
||||||
[BackgroundIntense]
|
|
||||||
Color=250,250,250
|
|
||||||
|
|
||||||
[Color0]
|
|
||||||
Color=250,250,250
|
|
||||||
|
|
||||||
[Color0Faint]
|
|
||||||
Color=160,161,167
|
|
||||||
|
|
||||||
[Color0Intense]
|
|
||||||
Color=160,161,167
|
|
||||||
|
|
||||||
[Color1]
|
|
||||||
Color=202,18,67
|
|
||||||
|
|
||||||
[Color1Faint]
|
|
||||||
Color=202,18,67
|
|
||||||
|
|
||||||
[Color1Intense]
|
|
||||||
Color=202,18,67
|
|
||||||
|
|
||||||
[Color2]
|
|
||||||
Color=80,161,79
|
|
||||||
|
|
||||||
[Color2Faint]
|
|
||||||
Color=80,161,79
|
|
||||||
|
|
||||||
[Color2Intense]
|
|
||||||
Color=80,161,79
|
|
||||||
|
|
||||||
[Color3]
|
|
||||||
Color=215,95,0
|
|
||||||
|
|
||||||
[Color3Faint]
|
|
||||||
Color=215,95,0
|
|
||||||
|
|
||||||
[Color3Intense]
|
|
||||||
Color=215,95,0
|
|
||||||
|
|
||||||
[Color4]
|
|
||||||
Color=64,120,242
|
|
||||||
|
|
||||||
[Color4Faint]
|
|
||||||
Color=64,120,242
|
|
||||||
|
|
||||||
[Color4Intense]
|
|
||||||
Color=64,120,242
|
|
||||||
|
|
||||||
[Color5]
|
|
||||||
Color=166,38,164
|
|
||||||
|
|
||||||
[Color5Faint]
|
|
||||||
Color=166,38,164
|
|
||||||
|
|
||||||
[Color5Intense]
|
|
||||||
Color=166,38,164
|
|
||||||
|
|
||||||
[Color6]
|
|
||||||
Color=1,132,188
|
|
||||||
|
|
||||||
[Color6Faint]
|
|
||||||
Color=1,132,188
|
|
||||||
|
|
||||||
[Color6Intense]
|
|
||||||
Color=1,132,188
|
|
||||||
|
|
||||||
[Color7]
|
|
||||||
Color=56,58,66
|
|
||||||
|
|
||||||
[Color7Faint]
|
|
||||||
Color=9,10,11
|
|
||||||
|
|
||||||
[Color7Intense]
|
|
||||||
Color=9,10,11
|
|
||||||
|
|
||||||
[Foreground]
|
|
||||||
Color=56,58,66
|
|
||||||
|
|
||||||
[ForegroundFaint]
|
|
||||||
Color=56,58,66
|
|
||||||
|
|
||||||
[ForegroundIntense]
|
|
||||||
Color=56,58,66
|
|
||||||
|
|
||||||
[General]
|
|
||||||
Anchor=0.5,0.5
|
|
||||||
Blur=true
|
|
||||||
ColorRandomization=false
|
|
||||||
Description=One Light
|
|
||||||
FillStyle=Tile
|
|
||||||
Opacity=1.0
|
|
||||||
Wallpaper=
|
|
||||||
WallpaperFlipType=NoFlip
|
|
||||||
WallpaperOpacity=1
|
|
43
system/home/programming/default.nix
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages =
|
||||||
|
let
|
||||||
|
pythonEnv = (
|
||||||
|
pkgs.python312.withPackages (
|
||||||
|
ps: with ps; [
|
||||||
|
flake8
|
||||||
|
isort
|
||||||
|
numpy
|
||||||
|
scipy
|
||||||
|
xarray
|
||||||
|
netcdf4
|
||||||
|
matplotlib
|
||||||
|
]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
luaEnv = (pkgs.luajit.withPackages (ps: [ (ps.callPackage ./luarocks/scilua.nix { }) ]));
|
||||||
|
in
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
## Language Environments
|
||||||
|
pythonEnv
|
||||||
|
luaEnv
|
||||||
|
|
||||||
|
## Linters
|
||||||
|
shellcheck
|
||||||
|
ruff
|
||||||
|
|
||||||
|
## Formatters
|
||||||
|
nixfmt-rfc-style
|
||||||
|
shfmt
|
||||||
|
stylua
|
||||||
|
nodePackages.prettier
|
||||||
|
|
||||||
|
## Language servers
|
||||||
|
nixd
|
||||||
|
pyright
|
||||||
|
lua-language-server
|
||||||
|
rust-analyzer
|
||||||
|
];
|
||||||
|
xdg.configFile."ruff/pyproject.toml".source = ./ruff.toml;
|
||||||
|
}
|
32
system/home/programming/pyshell.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> { },
|
||||||
|
python3 ? pkgs.python3,
|
||||||
|
extraPackages ? with pkgs; [ uv ],
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
ldlibs = lib.makeLibraryPath (
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
stdenv.cc.cc
|
||||||
|
glibc
|
||||||
|
zlib
|
||||||
|
zstd
|
||||||
|
]
|
||||||
|
);
|
||||||
|
pythonWrapped = pkgs.symlinkJoin {
|
||||||
|
name = "python";
|
||||||
|
paths = [ python3 ];
|
||||||
|
buildInputs = [ pkgs.makeWrapper ];
|
||||||
|
postBuild = ''
|
||||||
|
for file in $out/bin/*; do wrapProgram "$file" --prefix LD_LIBRARY_PATH : "${ldlibs}"; done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
pkgs.mkShellNoCC {
|
||||||
|
packages = [ pythonWrapped ] ++ extraPackages;
|
||||||
|
shellHook = ''
|
||||||
|
[ ! -d .venv ] && ${pythonWrapped}/bin/python3 -m venv .venv
|
||||||
|
[ -f .venv/bin/activate ] && source .venv/bin/activate
|
||||||
|
'';
|
||||||
|
}
|
|
@ -1,10 +1,12 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(pkgs.writeShellScriptBin "esync" (builtins.readFile ./shell/esync.sh))
|
(pkgs.writeShellScriptBin "sync-git" (builtins.readFile ./shell/sync-git.sh))
|
||||||
(pkgs.writeShellScriptBin "gsync" (builtins.readFile ./shell/gsync.sh))
|
(pkgs.writeShellScriptBin "ensure-pass" (builtins.readFile ./shell/ensure-pass.sh))
|
||||||
(pkgs.writeShellScriptBin "clean-config" (builtins.readFile ./shell/clean-config.sh))
|
(pkgs.writeShellScriptBin "clean-config" (builtins.readFile ./shell/clean-config.sh))
|
||||||
(pkgs.writeShellScriptBin "rsync-local-config" (builtins.readFile ./shell/rsync-local-config.sh))
|
(pkgs.writeShellScriptBin "rsync-local-config" (builtins.readFile ./shell/rsync-local-config.sh))
|
||||||
(pkgs.writeShellScriptBin "xdg-query-program" (builtins.readFile ./shell/xdg-query-program.sh))
|
(pkgs.writeShellScriptBin "xdg-query-program" (builtins.readFile ./shell/xdg-query-program.sh))
|
||||||
|
(pkgs.writeShellScriptBin "animate-wallpaper" (builtins.readFile ./shell/animate-wallpaper.sh))
|
||||||
|
(pkgs.writeShellScriptBin "mount-onedrive" (builtins.readFile ./shell/mount-onedrive.sh))
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
#!/usr/bin/env nix-shell
|
|
||||||
--[[
|
|
||||||
#!nix-shell -i lua -p git git-sync
|
|
||||||
]]
|
|
||||||
local config_home
|
|
||||||
if os.getenv("XDG_CONFIG_HOME") then
|
|
||||||
config_home = os.getenv("XDG_CONFIG_HOME")
|
|
||||||
else
|
|
||||||
config_home = "~/.config/"
|
|
||||||
end
|
|
||||||
|
|
||||||
local sync_mapping = {
|
|
||||||
["~/.password-store"] = "https://git.xenia.me.uk/pixelifytica/pass.git",
|
|
||||||
["~/.elfeed"] = "https://git.xenia.me.uk/pixelifytica/elfeed.git",
|
|
||||||
["~/Documents/Org"] = "https://git.xenia.me.uk/pixelifytica/org.git",
|
|
||||||
["~/Documents/References"] = "https://git.xenia.me.uk/pixelifytica/references.git",
|
|
||||||
}
|
|
||||||
|
|
||||||
local pull_mapping = {
|
|
||||||
["/etc/nixos"] = "https://git.xenia.me.uk/pixelifytica/nixos.git",
|
|
||||||
[config_home .. "/emacs"] = "https://git.xenia.me.uk/pixelifytica/emacs.git",
|
|
||||||
}
|
|
||||||
|
|
||||||
local function git_sync(directory, url)
|
|
||||||
print("--- sync: " .. directory .. " ---")
|
|
||||||
end
|
|
||||||
|
|
||||||
local function git_pull(directory, url, ff_only)
|
|
||||||
print("--- pull: " .. directory .. " ---")
|
|
||||||
end
|
|
||||||
|
|
||||||
for directory, url in pairs(sync_mapping) do
|
|
||||||
git_sync(directory, url)
|
|
||||||
end
|
|
||||||
|
|
||||||
for directory, url in pairs(pull_mapping) do
|
|
||||||
git_pull(directory, url, true)
|
|
||||||
end
|
|
|
@ -1,68 +0,0 @@
|
||||||
#!/usr/bin/env nix-shell
|
|
||||||
#!nix-shell -i python3 -p git git-sync
|
|
||||||
|
|
||||||
import os
|
|
||||||
import queue
|
|
||||||
import subprocess
|
|
||||||
from pathlib import Path
|
|
||||||
from typing import Dict
|
|
||||||
|
|
||||||
HOME = Path("~").expanduser().resolve()
|
|
||||||
|
|
||||||
SYNC_MAPPING: Dict[Path, str] = {
|
|
||||||
Path(
|
|
||||||
"~/.password-store"
|
|
||||||
).expanduser(): "https://git.xenia.me.uk/pixelifytica/pass.git",
|
|
||||||
Path("~/.elfeed").expanduser(): "https://git.xenia.me.uk/pixelifytica/elfeed.git",
|
|
||||||
Path(
|
|
||||||
"~/Documents/Org"
|
|
||||||
).expanduser(): "https://git.xenia.me.uk/pixelifytica/org.git",
|
|
||||||
Path(
|
|
||||||
"~/Documents/References"
|
|
||||||
).expanduser(): "https://git.xenia.me.uk/pixelifytica/references.git",
|
|
||||||
}
|
|
||||||
|
|
||||||
PULL_MAPPINGS: Dict[Path, str] = {
|
|
||||||
Path("/etc/nixos"): "https://git.xenia.me.uk/pixelifytica/nixos.git",
|
|
||||||
Path(os.getenv("XDG_CONFIG_HOME", "~/.config")).expanduser()
|
|
||||||
/ "emacs": "https://git.xenia.me.uk/pixelifytica/emacs.git",
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def git_set_url(directory: Path, url: str) -> None:
|
|
||||||
"""Set url for directory"""
|
|
||||||
comp = subprocess.run(f"git remote set-url origin {url}".split(), cwd=directory)
|
|
||||||
if comp.returncode != 0:
|
|
||||||
raise UserWarning(f"{comp.returncode} from {' '.join(comp.args)}")
|
|
||||||
subprocess.run("git remote -v".split(), cwd=directory)
|
|
||||||
|
|
||||||
|
|
||||||
def git_sync(directory: Path, url: str) -> subprocess.CompletedProcess:
|
|
||||||
"""Sync status of repository"""
|
|
||||||
print(f"--- sync: ${directory} ---")
|
|
||||||
if not directory.exists():
|
|
||||||
return subprocess.run("exit 1".split()) # TODO
|
|
||||||
git_set_url(directory, url)
|
|
||||||
return subprocess.run("git-sync -ns".split(), cwd=directory)
|
|
||||||
|
|
||||||
|
|
||||||
def git_pull(
|
|
||||||
directory: Path, url: str, ff_only: bool = True
|
|
||||||
) -> subprocess.CompletedProcess:
|
|
||||||
"""Pull updates for directory from url"""
|
|
||||||
print(f"--- pull: {directory} ---")
|
|
||||||
if not directory.exists():
|
|
||||||
return subprocess.run("exit 1".split()) # TODO
|
|
||||||
git_set_url(directory, url)
|
|
||||||
return subprocess.run("git pull --ff-only".split(), cwd=directory)
|
|
||||||
|
|
||||||
|
|
||||||
def main(*args, **kwargs) -> None:
|
|
||||||
for directory, url in SYNC_MAPPING.items():
|
|
||||||
print(git_sync(directory, url))
|
|
||||||
for directory, url in PULL_MAPPINGS.items():
|
|
||||||
print(git_pull(directory, url))
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
10
system/home/scripts/shell/animate-wallpaper.sh
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
WALLPAPER_FILE="$HOME/.wallpaper.gif"
|
||||||
|
|
||||||
|
if [ ! -f "$WALLPAPER_FILE" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
systemctl --user start swww-daemon.service &&
|
||||||
|
sleep 5 &&
|
||||||
|
swww img "$WALLPAPER_FILE" &&
|
||||||
|
systemctl --user stop hyprpaper.service
|
|
@ -1,2 +1,2 @@
|
||||||
shopt -s extglob
|
shopt -s extglob
|
||||||
rm -rf ~/.config/!(emacs|kdeconnect|protonmail|Signal|teams-for-linux|WebCord|whatsapp-for-linux)
|
rm -rf ~/.config/!(dconf|protonmail|Signal|whatsapp-for-linux)
|
||||||
|
|
26
system/home/scripts/shell/ensure-pass.sh
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# Email
|
||||||
|
EMAIL="e.litherlandsmith@proton.me"
|
||||||
|
secret-tool lookup email "$EMAIL" >/dev/null || (
|
||||||
|
echo "Insert pass from protonmail-bridge"
|
||||||
|
secret-tool store --label="Proton Mail mbsync" email "$EMAIL"
|
||||||
|
)
|
||||||
|
|
||||||
|
EMAIL="e.litherlandsmith@icloud.com"
|
||||||
|
secret-tool lookup clear "$EMAIL"
|
||||||
|
pass show identity/apple.com/mbsync | head -n1 | secret-tool store --label="iCloud mbsync" email "$EMAIL"
|
||||||
|
|
||||||
|
EMAIL="evie.litherland-smith@ukaea.uk"
|
||||||
|
secret-tool clear email "$EMAIL"
|
||||||
|
pass show work/microsoftonline.com | head -n1 | secret-tool store --label="Outlook mbsync" email "$EMAIL"
|
||||||
|
|
||||||
|
# Calendar
|
||||||
|
URL="dav.xenia.me.uk"
|
||||||
|
USER="pixelifytica"
|
||||||
|
secret-tool clear url "$URL" user "$USER"
|
||||||
|
pass show "server/xenia.me.uk/$URL" | head -n1 | secret-tool store --label="Personal calendar vdirsyncer" url "$URL" user "$USER"
|
||||||
|
|
||||||
|
# GitHub API token
|
||||||
|
HOST="api.github.com"
|
||||||
|
USER="pixelifytica^forge"
|
||||||
|
secret-tool clear host "$HOST" user "$USER"
|
||||||
|
pass show "api/$HOST" | head -n1 | secret-tool store --label="Forge GitHub Token" host "$HOST" user "$USER"
|
|
@ -1,14 +0,0 @@
|
||||||
# Clone ~/.config/emacs/ if it doesn't exist
|
|
||||||
EMACS_DIR="${XDG_CONFIG_DIR:=$HOME/.config}/emacs/"
|
|
||||||
if [ ! -d "$EMACS_DIR" ]; then
|
|
||||||
git clone "https://git.xenia.me.uk/pixelifytica/emacs.git" "$EMACS_DIR"
|
|
||||||
fi
|
|
||||||
(
|
|
||||||
cd "$EMACS_DIR" || exit 1
|
|
||||||
# Pull changes by fast-forwarding only
|
|
||||||
git pull --ff --ff-only
|
|
||||||
# Update submodules for local packages
|
|
||||||
git submodule update --init --recursive
|
|
||||||
# Install and update extensions
|
|
||||||
make install
|
|
||||||
)
|
|
|
@ -1,31 +0,0 @@
|
||||||
# Sync common directories, setting url to ensure it's up-to-date first
|
|
||||||
SYNC_DIRS=(
|
|
||||||
"$HOME/.password-store/"
|
|
||||||
"$HOME/Documents/org/"
|
|
||||||
"$HOME/Documents/library/"
|
|
||||||
)
|
|
||||||
SYNC_URLS=(
|
|
||||||
"https://git.xenia.me.uk/pixelifytica/pass.git"
|
|
||||||
"https://git.xenia.me.uk/pixelifytica/org.git"
|
|
||||||
"https://git.xenia.me.uk/pixelifytica/library.git"
|
|
||||||
)
|
|
||||||
|
|
||||||
for i in "${!SYNC_DIRS[@]}"; do
|
|
||||||
DIRECTORY="${SYNC_DIRS[$i]}"
|
|
||||||
URL="${SYNC_URLS[$i]}"
|
|
||||||
echo "--- sync: $DIRECTORY ---"
|
|
||||||
if [ ! -d "$DIRECTORY" ]; then
|
|
||||||
git clone "$URL" "$DIRECTORY"
|
|
||||||
fi
|
|
||||||
(
|
|
||||||
cd "$DIRECTORY" || exit
|
|
||||||
git remote set-url origin "$URL"
|
|
||||||
if [ "$(git branch --show-current)" = "main" ]; then
|
|
||||||
git branch --set-upstream-to=origin/main main
|
|
||||||
fi
|
|
||||||
git pull --ff --ff-only
|
|
||||||
git submodule update --remote --recursive
|
|
||||||
git-sync -ns
|
|
||||||
git status --porcelain
|
|
||||||
)
|
|
||||||
done
|
|
|
@ -1,4 +0,0 @@
|
||||||
battery_level=$(acpi -b | grep -P -o '[0-9]+(?=%)')
|
|
||||||
if [ "$battery_level" -le 20 ]; then
|
|
||||||
notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
|
|
||||||
fi
|
|
3
system/home/scripts/shell/mount-onedrive.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
ONEDRIVE="$HOME/OneDrive"
|
||||||
|
[ -d "$ONEDRIVE" ] || mkdir -p "$ONEDRIVE"
|
||||||
|
[ -z "$(ls -A "$ONEDRIVE")" ] && rclone --vfs-cache-mode writes mount --daemon OneDrive: "$ONEDRIVE"
|
12
system/home/scripts/shell/rsync-local-config.sh
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
||||||
HOSTS=("$@")
|
HOSTS=("$@")
|
||||||
# Config files
|
# Config files
|
||||||
for TARGET in ".inputrc" ".config/bat/" ".config/zellij" ".config/starship.toml"; do
|
for TARGET in ".inputrc" ".config/starship.toml"; do
|
||||||
SOURCE="$HOME/$TARGET"
|
SOURCE="$HOME/$TARGET"
|
||||||
echo "--- $SOURCE ---"
|
echo "--- $SOURCE ---"
|
||||||
TMP_TARGET=/tmp/rsync-local-config
|
TMP_TARGET=/tmp/rsync-local-config
|
||||||
|
@ -21,13 +21,3 @@ for TARGET in ".inputrc" ".config/bat/" ".config/zellij" ".config/starship.toml"
|
||||||
rm -rf $TMP_SOURCE
|
rm -rf $TMP_SOURCE
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Fonts
|
|
||||||
IOSEVKA_FLAKE_URL="git+https://git.xenia.me.uk/pixelifytica/iosevka.git?ref=main"
|
|
||||||
IOSEVKA_CUSTOM_NERDFONT=$(nix path-info "$IOSEVKA_FLAKE_URL#packages.x86_64-linux.iosevka-custom-nerdfont")
|
|
||||||
IOSEVKA_CUSTOM_AILE=$(nix path-info "$IOSEVKA_FLAKE_URL#packages.x86_64-linux.iosevka-custom-aile")
|
|
||||||
echo "--- Fonts ---"
|
|
||||||
for HOST in "${HOSTS[@]}"; do
|
|
||||||
rsync -avzL --delete --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$IOSEVKA_CUSTOM_NERDFONT/share/fonts/truetype/" "$HOST:.fonts/IosevkaCustomNerdFont"
|
|
||||||
rsync -avzL --delete --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$IOSEVKA_CUSTOM_AILE/share/fonts/truetype/" "$HOST:.fonts/IosevkaCustomAile"
|
|
||||||
done
|
|
||||||
|
|
47
system/home/scripts/shell/sync-git.sh
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
# Sync common directories, setting url to ensure it's up-to-date first
|
||||||
|
SYNC_DIRS=(
|
||||||
|
"$HOME/.password-store/"
|
||||||
|
"$HOME/Documents/org/"
|
||||||
|
"$HOME/Documents/library/"
|
||||||
|
"$HOME/Documents/notebooks/"
|
||||||
|
)
|
||||||
|
SYNC_URLS=(
|
||||||
|
"https://git.xenia.me.uk/pixelifytica/pass.git"
|
||||||
|
"https://git.xenia.me.uk/pixelifytica/org.git"
|
||||||
|
"https://git.xenia.me.uk/pixelifytica/library.git"
|
||||||
|
"git@git.ccfe.ac.uk:elitherl/notebooks.git"
|
||||||
|
)
|
||||||
|
|
||||||
|
for i in "${!SYNC_DIRS[@]}"; do
|
||||||
|
DIRECTORY="${SYNC_DIRS[$i]}"
|
||||||
|
URL="${SYNC_URLS[$i]}"
|
||||||
|
echo "--- sync: $DIRECTORY ---"
|
||||||
|
if [ ! -d "$DIRECTORY" ]; then
|
||||||
|
git clone "$URL" "$DIRECTORY"
|
||||||
|
fi
|
||||||
|
(
|
||||||
|
cd "$DIRECTORY" || exit
|
||||||
|
git remote set-url origin "$URL"
|
||||||
|
if [ "$(git branch --show-current)" = "main" ]; then
|
||||||
|
git branch --set-upstream-to=origin/main main
|
||||||
|
fi
|
||||||
|
git pull --ff --ff-only
|
||||||
|
git submodule update --remote --recursive
|
||||||
|
git-sync -ns
|
||||||
|
git status --porcelain
|
||||||
|
)
|
||||||
|
done
|
||||||
|
|
||||||
|
# Clone ~/.config/emacs/ if it doesn't exist, pull otherwise
|
||||||
|
EMACS_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/emacs"
|
||||||
|
EMACS_URL="https://git.xenia.me.uk/pixelifytica/emacs.git"
|
||||||
|
if [ -d "$EMACS_DIR" ]; then
|
||||||
|
git -C "$EMACS_DIR" remote set-url origin "$EMACS_URL"
|
||||||
|
git -C "$EMACS_DIR" pull --ff --ff-only
|
||||||
|
else
|
||||||
|
git clone "$EMACS_URL" "$EMACS_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Cleanup legacy Emacs config file/directory
|
||||||
|
[ -f "$HOME/.emacs" ] && rm "$HOME/.emacs"
|
||||||
|
[ -d "$HOME/.emacs.d" ] && rm -r "$HOME/.emacs.d"
|
4
system/home/scripts/shell/xdg-query-program.sh
Executable file → Normal file
|
@ -1,3 +1,3 @@
|
||||||
FILETYPE=$(xdg-mime query filetype $@)
|
FILETYPE=$(xdg-mime query filetype "$@")
|
||||||
DEFAULT=$(xdg-mime query default $FILETYPE)
|
DEFAULT=$(xdg-mime query default "$FILETYPE")
|
||||||
echo "$FILETYPE -> $DEFAULT"
|
echo "$FILETYPE -> $DEFAULT"
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
EMAIL_ADDRESSES=(
|
|
||||||
e.litherlandsmith@proton.me
|
|
||||||
e.litherlandsmith@icloud.com
|
|
||||||
evie.litherland-smith@ukaea.uk
|
|
||||||
)
|
|
||||||
LABELS=("Proton" "iCloud" "Outlook")
|
|
||||||
|
|
||||||
for i in "${!EMAIL_ADDRESSES[@]}"; do
|
|
||||||
ADDRESS="${EMAIL_ADDRESSES[$i]}"
|
|
||||||
LABEL="${LABELS[$i]}"
|
|
||||||
secret-tool lookup email "$ADDRESS" >/dev/null || (
|
|
||||||
echo "Setup $LABEL"
|
|
||||||
secret-tool store --label="$LABEL mail mbsync" email "$ADDRESS"
|
|
||||||
)
|
|
||||||
done
|
|
|
@ -1,41 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
xdg.configFile."pass-git-helper/git-pass-mapping.ini".source = ./git-pass-mapping.ini;
|
|
||||||
programs = {
|
|
||||||
gpg.enable = true;
|
|
||||||
password-store = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.pass-nodmenu.withExtensions (
|
|
||||||
exts: with exts; [
|
|
||||||
pass-update
|
|
||||||
pass-import
|
|
||||||
]
|
|
||||||
); # pass-audit
|
|
||||||
settings = {
|
|
||||||
PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.password-store";
|
|
||||||
PASSWORD_STORE_ENABLE_EXTENSIONS = "true";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
gpg-agent = rec {
|
|
||||||
enable = true;
|
|
||||||
maxCacheTtl = 86400;
|
|
||||||
defaultCacheTtl = maxCacheTtl;
|
|
||||||
defaultCacheTtlSsh = maxCacheTtl;
|
|
||||||
pinentryPackage = lib.mkDefault pkgs.pinentry-all;
|
|
||||||
extraConfig = ''
|
|
||||||
no-allow-external-cache
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
git-sync.repositories.password-store = {
|
|
||||||
path = "${config.home.homeDirectory}/.password-store";
|
|
||||||
uri = "git+https://git.xenia.me.uk/xenia/pass.git";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
[DEFAULT]
|
|
||||||
username_extractor=regex_search
|
|
||||||
regex_username=^login: (.*)$
|
|
||||||
|
|
||||||
[*]
|
|
||||||
target=git/${host}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
{
|
|
||||||
programs.cava = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
color = with config.lib.stylix.colors.withHashtag; {
|
|
||||||
gradient = 1;
|
|
||||||
gradient_count = 6;
|
|
||||||
gradient_color_1 = "'${red}'";
|
|
||||||
gradient_color_2 = "'${yellow}'";
|
|
||||||
gradient_color_3 = "'${green}'";
|
|
||||||
gradient_color_4 = "'${cyan}'";
|
|
||||||
gradient_color_5 = "'${blue}'";
|
|
||||||
gradient_color_6 = "'${magenta}'";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -9,100 +9,18 @@
|
||||||
./git.nix
|
./git.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./starship.nix
|
./starship.nix
|
||||||
|
./extras.nix
|
||||||
];
|
];
|
||||||
home = {
|
home.shellAliases = {
|
||||||
packages = with pkgs; [
|
sync-all = "sync-git; vdirsyncer sync; mbsync -a";
|
||||||
rclone
|
sync-and-shutdown = "sync-all && shutdown now";
|
||||||
git-sync
|
|
||||||
du-dust
|
|
||||||
];
|
|
||||||
shellAliases = {
|
|
||||||
update = "sudo nixos-rebuild switch";
|
|
||||||
protonup = "sudo wg-quick up protonvpn && sudo wg";
|
protonup = "sudo wg-quick up protonvpn && sudo wg";
|
||||||
protondown = "sudo wg-quick down protonvpn";
|
protondown = "sudo wg-quick down protonvpn";
|
||||||
};
|
};
|
||||||
};
|
|
||||||
programs = {
|
programs = {
|
||||||
|
# Shells
|
||||||
bash.enable = true;
|
bash.enable = true;
|
||||||
carapace.enable = true;
|
nushell.enable = true;
|
||||||
fastfetch.enable = true;
|
|
||||||
fd.enable = true;
|
|
||||||
jq.enable = true;
|
|
||||||
nix-index.enable = true;
|
|
||||||
ripgrep.enable = true;
|
|
||||||
bat = {
|
|
||||||
enable = true;
|
|
||||||
config.style = "plain,numbers,changes";
|
|
||||||
};
|
|
||||||
bottom = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
flags = {
|
|
||||||
group_processes = true;
|
|
||||||
temperature_type = "celsius";
|
|
||||||
battery = true;
|
|
||||||
enable_gpu = true;
|
|
||||||
enable_cache_memory = true;
|
|
||||||
};
|
|
||||||
colors =
|
|
||||||
let
|
|
||||||
rainbow = with config.lib.stylix.scheme.withHashtag; [
|
|
||||||
red
|
|
||||||
yellow
|
|
||||||
green
|
|
||||||
cyan
|
|
||||||
blue
|
|
||||||
magenta
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
cpu_core_colors = rainbow;
|
|
||||||
gpu_core_colors = rainbow;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
eza = {
|
|
||||||
enable = true;
|
|
||||||
git = true;
|
|
||||||
icons = true;
|
|
||||||
extraOptions = [ "--octal-permissions" ];
|
|
||||||
};
|
|
||||||
fzf = {
|
|
||||||
enable = true;
|
|
||||||
defaultCommand = "${pkgs.fd}/bin/fd --type f";
|
|
||||||
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
|
||||||
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
|
|
||||||
};
|
|
||||||
readline = {
|
|
||||||
enable = true;
|
|
||||||
variables = {
|
|
||||||
bell-style = "visible";
|
|
||||||
blink-matching-paren = "On";
|
|
||||||
colored-completion-prefix = "On";
|
|
||||||
colored-stats = "On";
|
|
||||||
completion-ignore-case = "On";
|
|
||||||
completion-map-case = "On";
|
|
||||||
editing-mode = "emacs";
|
|
||||||
expand-tilde = "On";
|
|
||||||
horizontal-scroll-mode = "On";
|
|
||||||
mark-directories = "On";
|
|
||||||
mark-symlinked-directories = "On";
|
|
||||||
visible-stats = "On";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
zellij = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
default_mode = "locked";
|
|
||||||
mouse_mode = true;
|
|
||||||
copy_command = lib.mkIf config.wayland.windowManager.sway.enable "wl-copy";
|
|
||||||
copy_on_select = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
zsh = {
|
zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableCompletion = true;
|
enableCompletion = true;
|
||||||
|
@ -134,5 +52,81 @@
|
||||||
source ${./transient.zsh}
|
source ${./transient.zsh}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
# CLI programs and utilities
|
||||||
|
btop.enable = true;
|
||||||
|
carapace.enable = true;
|
||||||
|
fd.enable = true;
|
||||||
|
jq.enable = true;
|
||||||
|
ripgrep.enable = true;
|
||||||
|
bat = {
|
||||||
|
enable = true;
|
||||||
|
config.style = "plain,numbers,changes";
|
||||||
|
};
|
||||||
|
cava = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
color = with config.lib.stylix.colors.withHashtag; {
|
||||||
|
gradient = 1;
|
||||||
|
gradient_count = 6;
|
||||||
|
gradient_color_1 = "'${red}'";
|
||||||
|
gradient_color_2 = "'${yellow}'";
|
||||||
|
gradient_color_3 = "'${green}'";
|
||||||
|
gradient_color_4 = "'${cyan}'";
|
||||||
|
gradient_color_5 = "'${blue}'";
|
||||||
|
gradient_color_6 = "'${magenta}'";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
eza = {
|
||||||
|
enable = true;
|
||||||
|
git = true;
|
||||||
|
icons = "auto";
|
||||||
|
extraOptions = [
|
||||||
|
"--header"
|
||||||
|
"--time-style=iso"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
fzf = {
|
||||||
|
enable = true;
|
||||||
|
defaultCommand = "${pkgs.fd}/bin/fd --type f";
|
||||||
|
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
||||||
|
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
|
||||||
|
colors = {
|
||||||
|
bg = lib.mkForce "-1";
|
||||||
|
"bg+" = lib.mkForce "-1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hyfetch = {
|
||||||
|
enable = true;
|
||||||
|
settings = rec {
|
||||||
|
preset = if light_dark == "dark" then "transgender" else "rainbow";
|
||||||
|
mode = "rgb";
|
||||||
|
light_dark = config.lib.stylix.scheme.variant;
|
||||||
|
lightness = 0.4;
|
||||||
|
color_align = {
|
||||||
|
mode = "horizontal";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
readline = {
|
||||||
|
enable = true;
|
||||||
|
variables = {
|
||||||
|
bell-style = "visible";
|
||||||
|
blink-matching-paren = "On";
|
||||||
|
colored-completion-prefix = "On";
|
||||||
|
colored-stats = "On";
|
||||||
|
completion-ignore-case = "On";
|
||||||
|
completion-map-case = "On";
|
||||||
|
editing-mode = "emacs";
|
||||||
|
expand-tilde = "On";
|
||||||
|
mark-directories = "On";
|
||||||
|
mark-symlinked-directories = "On";
|
||||||
|
visible-stats = "On";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
8
system/home/shell/extras.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
asciiquarium-transparent
|
||||||
|
pipes
|
||||||
|
cbonsai
|
||||||
|
];
|
||||||
|
}
|
|
@ -5,7 +5,7 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
services.git-sync.enable = false; # Can't find pass for some reason...
|
home.packages = [ pkgs.git-sync ];
|
||||||
programs.git =
|
programs.git =
|
||||||
let
|
let
|
||||||
package = pkgs.git.override {
|
package = pkgs.git.override {
|
||||||
|
@ -32,17 +32,8 @@
|
||||||
"*.gpg filter=gpg diff=gpg"
|
"*.gpg filter=gpg diff=gpg"
|
||||||
"*.asc filter=gpg diff=gpg"
|
"*.asc filter=gpg diff=gpg"
|
||||||
];
|
];
|
||||||
extraConfig =
|
extraConfig = {
|
||||||
let
|
github.user = "pixelifytica";
|
||||||
user = "pixelifytica";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
github = {
|
|
||||||
inherit user;
|
|
||||||
};
|
|
||||||
gitea = {
|
|
||||||
inherit user;
|
|
||||||
};
|
|
||||||
pull.rebase = false;
|
pull.rebase = false;
|
||||||
init.defaultBranch = "main";
|
init.defaultBranch = "main";
|
||||||
merge.conflictstyle = "diff3";
|
merge.conflictstyle = "diff3";
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
rclone
|
||||||
|
sshfs
|
||||||
(writeShellScriptBin "ssh-keygen-defaults" ''ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)"'')
|
(writeShellScriptBin "ssh-keygen-defaults" ''ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)"'')
|
||||||
];
|
];
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
|
@ -9,7 +11,7 @@
|
||||||
forwardAgent = true;
|
forwardAgent = true;
|
||||||
compression = true;
|
compression = true;
|
||||||
serverAliveInterval = 15;
|
serverAliveInterval = 15;
|
||||||
serverAliveCountMax = 3;
|
serverAliveCountMax = 5;
|
||||||
controlMaster = "auto";
|
controlMaster = "auto";
|
||||||
controlPersist = "10s";
|
controlPersist = "10s";
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
@ -36,7 +38,7 @@
|
||||||
};
|
};
|
||||||
"heimdall" = {
|
"heimdall" = {
|
||||||
user = "elitherl";
|
user = "elitherl";
|
||||||
hostname = "10.40.4.115"; # heimdall115.jetdata.eu
|
hostname = "heimdall003.jet.uk";
|
||||||
compression = true;
|
compression = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -142,9 +142,8 @@
|
||||||
shell = {
|
shell = {
|
||||||
disabled = false;
|
disabled = false;
|
||||||
format = "using [$indicator]($style) ";
|
format = "using [$indicator]($style) ";
|
||||||
|
nu_indicator = "ν";
|
||||||
bash_indicator = "";
|
bash_indicator = "";
|
||||||
zsh_indicator = " ";
|
|
||||||
fish_indicator = " ";
|
|
||||||
powershell_indicator = "";
|
powershell_indicator = "";
|
||||||
cmd_indicator = "";
|
cmd_indicator = "";
|
||||||
unknown_indicator = "";
|
unknown_indicator = "";
|
||||||
|
|
0
system/home/shell/transient.zsh
Executable file → Normal file
|
@ -1,257 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [ ./waybar/default.nix ];
|
|
||||||
stylix.targets.swaylock.useImage = false; # Using swaylock-effects instead
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
libreoffice-fresh
|
|
||||||
ffmpeg
|
|
||||||
grim
|
|
||||||
slurp
|
|
||||||
swappy
|
|
||||||
wl-clipboard
|
|
||||||
swayimg
|
|
||||||
swaybg
|
|
||||||
(writeShellScriptBin "swaylockfx" ''
|
|
||||||
${swaylock-effects}/bin/swaylock --screenshots --clock --indicator --effect-blur 7x5 --effect-vignette 0.5:0.5
|
|
||||||
'')
|
|
||||||
(writeShellScriptBin "protonmail-setup-bridge" ''
|
|
||||||
pkill -9 -f protonmail-bridge
|
|
||||||
${protonmail-bridge}/bin/protonmail-bridge -c
|
|
||||||
swaymsg exec "${protonmail-bridge}/bin/protonmail-bridge -n"
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
programs = {
|
|
||||||
waybar.systemd.target = "sway-session.target";
|
|
||||||
fuzzel = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
main = {
|
|
||||||
icon-theme = config.gtk.iconTheme.name;
|
|
||||||
icons-enabled = true;
|
|
||||||
fields = "filename,name,generic,categories";
|
|
||||||
fuzzy = true;
|
|
||||||
filter-desktop = true;
|
|
||||||
terminal = "${config.programs.alacritty.package}/bin/alacritty -e";
|
|
||||||
lines = 24;
|
|
||||||
width = 80;
|
|
||||||
tabs = 4;
|
|
||||||
layer = "overlay";
|
|
||||||
};
|
|
||||||
border = {
|
|
||||||
width = 1;
|
|
||||||
radius = 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
swaylock = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.swaylock-effects;
|
|
||||||
};
|
|
||||||
wlogout = {
|
|
||||||
enable = true;
|
|
||||||
layout = [
|
|
||||||
{
|
|
||||||
label = "reboot";
|
|
||||||
action = "systemctl reboot";
|
|
||||||
text = "Reboot";
|
|
||||||
keybind = "r";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "shutdown";
|
|
||||||
action = "systemctl poweroff";
|
|
||||||
text = "Shutdown";
|
|
||||||
keybind = "s";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "logout";
|
|
||||||
action = "swaymsg exit";
|
|
||||||
text = "Logout";
|
|
||||||
keybind = "l";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
kanshi.systemdTarget = "sway-session.target";
|
|
||||||
gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
|
||||||
avizo = {
|
|
||||||
enable = true;
|
|
||||||
settings.default.image-opacity = lib.mkForce "1.0";
|
|
||||||
};
|
|
||||||
kdeconnect = {
|
|
||||||
enable = true;
|
|
||||||
indicator = true;
|
|
||||||
};
|
|
||||||
mako = {
|
|
||||||
enable = true;
|
|
||||||
anchor = "top-right";
|
|
||||||
width = 600;
|
|
||||||
height = 600;
|
|
||||||
layer = "top";
|
|
||||||
markup = true;
|
|
||||||
maxVisible = 10;
|
|
||||||
icons = true;
|
|
||||||
iconPath = with config.gtk.iconTheme; "${package}/share/icons/${name}";
|
|
||||||
borderRadius = 5;
|
|
||||||
borderSize = 1;
|
|
||||||
defaultTimeout = 0;
|
|
||||||
};
|
|
||||||
swayidle = {
|
|
||||||
enable = true;
|
|
||||||
timeouts = [
|
|
||||||
{
|
|
||||||
timeout = 60 * 15; # 15 minutes
|
|
||||||
command = "swaylockfx";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
udiskie = {
|
|
||||||
enable = true;
|
|
||||||
notify = true;
|
|
||||||
automount = true;
|
|
||||||
tray = "never";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
wayland.windowManager.sway = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.swayfx.overrideAttrs (old: {
|
|
||||||
passthru.providedSessions = [ "sway" ];
|
|
||||||
});
|
|
||||||
swaynag.enable = true;
|
|
||||||
systemd.enable = true;
|
|
||||||
xwayland = true;
|
|
||||||
checkConfig = false;
|
|
||||||
config = {
|
|
||||||
input = {
|
|
||||||
"*" = {
|
|
||||||
xkb_layout = "gb";
|
|
||||||
xkb_options = "ctrl:nocaps";
|
|
||||||
};
|
|
||||||
"type:touchpad" = {
|
|
||||||
tap = "enabled";
|
|
||||||
natural_scroll = "enabled";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
seat = {
|
|
||||||
"seat0" = {
|
|
||||||
xcursor_theme = "${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
modifier = "Mod4";
|
|
||||||
terminal = "${config.programs.alacritty.package}/bin/alacritty";
|
|
||||||
menu = "${config.programs.fuzzel.package}/bin/fuzzel";
|
|
||||||
workspaceAutoBackAndForth = true;
|
|
||||||
bars = [ ];
|
|
||||||
gaps = {
|
|
||||||
inner = 5;
|
|
||||||
outer = 0;
|
|
||||||
};
|
|
||||||
startup = [
|
|
||||||
{ command = "${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"; }
|
|
||||||
{ command = "${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"; }
|
|
||||||
{ command = "${pkgs.dex}/bin/dex -a"; }
|
|
||||||
{ command = "${config.services.mako.package}/bin/mako"; }
|
|
||||||
];
|
|
||||||
window = {
|
|
||||||
border = 1;
|
|
||||||
titlebar = false;
|
|
||||||
commands = [
|
|
||||||
{
|
|
||||||
criteria.window_role = "(?:pop-up|bubble|dialog)";
|
|
||||||
command = "floating enable";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
criteria.app_id = "(?:org\.kde\.polkit-kde-authentication-agent-1|Pinentry|pavucontrol|\.blueman-manager-wrapped|nm-connection-editor)";
|
|
||||||
command = "floating enable";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
criteria.class = "(?:[Mm]atplotlib|.*\.py|Idl)";
|
|
||||||
command = "floating enable";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
# Catch-all for file dialog windows
|
|
||||||
criteria.title = "(?:Open|Save) (?:File|Folder|As)";
|
|
||||||
command = "floating enable, resize set width 1030 height 710";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
# Inhibit idle when watching vidoes
|
|
||||||
criteria.app_id = "(?:firefox|mpv)";
|
|
||||||
command = "inhibit_idle fullscreen";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
# Window rules for game sessions.
|
|
||||||
# Note: controllers don't reset idle timer
|
|
||||||
criteria.class = "(?:steam_app|Minecraft).*";
|
|
||||||
command = "floating enable, fullscreen enable, inhibit_idle focus";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
floating.border = 1;
|
|
||||||
keybindings =
|
|
||||||
let
|
|
||||||
modifier = config.wayland.windowManager.sway.config.modifier;
|
|
||||||
in
|
|
||||||
lib.mkOptionDefault {
|
|
||||||
# Movement
|
|
||||||
"${modifier}+comma" = "workspace prev";
|
|
||||||
"${modifier}+period" = "workspace next";
|
|
||||||
"${modifier}+shift+comma" = "move workspace prev";
|
|
||||||
"${modifier}+shift+period" = "move workspace next";
|
|
||||||
"${modifier}+bracketleft" = "move workspace to output left";
|
|
||||||
"${modifier}+bracketright" = "move workspace to output right";
|
|
||||||
|
|
||||||
# Function keys
|
|
||||||
## Screenshot
|
|
||||||
"Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -";
|
|
||||||
|
|
||||||
## Sound
|
|
||||||
"XF86AudioMute" = "exec ${config.services.avizo.package}/bin/volumectl %";
|
|
||||||
"XF86AudioMicMute" = "exec ${config.services.avizo.package}/bin/volumectl -m %";
|
|
||||||
"XF86AudioRaiseVolume" = "exec ${config.services.avizo.package}/bin/volumectl -u + 5";
|
|
||||||
"XF86AudioLowerVolume" = "exec ${config.services.avizo.package}/bin/volumectl -u - 5";
|
|
||||||
|
|
||||||
## Playback
|
|
||||||
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
|
||||||
"XF86AudioStop" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
|
||||||
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
|
||||||
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
|
||||||
|
|
||||||
## Brightness
|
|
||||||
"XF86MonBrightnessUp" = "exec ${config.services.avizo.package}/bin/lightctl + 5";
|
|
||||||
"XF86MonBrightnessDown" = "exec ${config.services.avizo.package}/bin/lightctl - 5";
|
|
||||||
|
|
||||||
# System utilities
|
|
||||||
"Mod4+Mod1+l" = "exec swaylockfx";
|
|
||||||
"${modifier}+z" = "exec ${config.services.mako.package}/bin/makoctl restore";
|
|
||||||
"${modifier}+Shift+z" = "exec ${config.services.mako.package}/bin/makoctl dismiss -a";
|
|
||||||
"${modifier}+Shift+p" = "exec ${config.programs.wlogout.package}/bin/wlogout";
|
|
||||||
"${modifier}+Shift+Return" = "exec ${config.programs.emacs.finalPackage}/bin/emacsclient -c";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
bindgesture swipe:right workspace prev
|
|
||||||
bindgesture swipe:left workspace next
|
|
||||||
corner_radius 5
|
|
||||||
blur enable
|
|
||||||
blur_xray disable
|
|
||||||
blur_passes 3
|
|
||||||
blur_radius 5
|
|
||||||
shadows enable
|
|
||||||
shadow_blur_radius 5
|
|
||||||
layer_effects "system-menu" blur enable; blur_ignore_transparent enable; shadows enable
|
|
||||||
layer_effects "gtk-layer-shell" blur enable; blur_ignore_transparent enable; shadows enable
|
|
||||||
layer_effects "notifications" blur enable; blur_ignore_transparent enable; shadows enable
|
|
||||||
layer_effects "launcher" blur enable; blur_ignore_transparent enable; shadows enable
|
|
||||||
layer_effects "logout_dialog" blur enable; blur_ignore_transparent enable; shadows enable
|
|
||||||
layer_effects "waybar" blur enable; blur_ignore_transparent enable; shadows enable
|
|
||||||
layer_effects "avizo" blur enable; blur_ignore_transparent enable; shadows enable
|
|
||||||
titlebar_separator enable
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
xdg.configFile."swappy/config".source = ./swappy.conf;
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
[Default]
|
|
||||||
save_dir=$HOME/Pictures/Screenshots/
|
|
||||||
save_filename_format=swappy-%Y%m%d-%H%M%S.png
|
|
||||||
show_panel=false
|
|
||||||
line_size=5
|
|
||||||
text_size=20
|
|
||||||
text_font=sans-serif
|
|
||||||
paint_mode=brush
|
|
||||||
early_exit=false
|
|
||||||
fill_shape=false
|
|
|
@ -1,390 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
stylix.targets.waybar.enable = false;
|
|
||||||
systemd.user.targets.tray.Unit = {
|
|
||||||
Description = "Home Manager System Tray";
|
|
||||||
Requires = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
systemd.enable = true;
|
|
||||||
settings.main = {
|
|
||||||
name = "main";
|
|
||||||
layer = "top";
|
|
||||||
position = "top";
|
|
||||||
# Layout
|
|
||||||
"modules-left" = [
|
|
||||||
"sway/window"
|
|
||||||
"mpris"
|
|
||||||
];
|
|
||||||
"modules-center" = [ "sway/workspaces" ];
|
|
||||||
"modules-right" = [
|
|
||||||
"custom/notification"
|
|
||||||
"pulseaudio"
|
|
||||||
"network"
|
|
||||||
"bluetooth"
|
|
||||||
"clock#calendar"
|
|
||||||
"clock"
|
|
||||||
"backlight"
|
|
||||||
"battery"
|
|
||||||
"custom/weather"
|
|
||||||
"tray"
|
|
||||||
];
|
|
||||||
# Module config
|
|
||||||
"sway/workspaces" = {
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
"1" = " ";
|
|
||||||
"2" = " ";
|
|
||||||
"3" = " ";
|
|
||||||
"4" = " ";
|
|
||||||
"5" = " ";
|
|
||||||
"6" = " ";
|
|
||||||
default = " ";
|
|
||||||
urgent = " ";
|
|
||||||
};
|
|
||||||
all-outputs = false;
|
|
||||||
persistent-workspaces = {
|
|
||||||
"1" = [ ];
|
|
||||||
"2" = [ ];
|
|
||||||
"3" = [ ];
|
|
||||||
"4" = [ ];
|
|
||||||
"5" = [ ];
|
|
||||||
"6" = [ ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"sway/window" = {
|
|
||||||
"format" = "{title}";
|
|
||||||
"max-length" = 50;
|
|
||||||
"rewrite" = {
|
|
||||||
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
|
|
||||||
"(alacritty.*)" = " $1";
|
|
||||||
"(.*) - mpv" = " $1";
|
|
||||||
"swayimg: (.*)" = " $1";
|
|
||||||
"swappy" = " swappy";
|
|
||||||
"(btm)" = " Resource Usage [$1]";
|
|
||||||
"(cava)" = " Music Visualiser [$1]";
|
|
||||||
"(.*) - Thunar" = " $1";
|
|
||||||
"Mozilla Firefox" = " $1";
|
|
||||||
"(.*) — Mozilla Firefox" = " $1";
|
|
||||||
"Nyxt - (.*)" = " $1";
|
|
||||||
"(.*) - Chromium" = " $1";
|
|
||||||
"(Signal.*)" = " $1";
|
|
||||||
"((?:.*)WebCord.*)" = " $1";
|
|
||||||
"(Cartridges.*)" = " $1";
|
|
||||||
"([Ss]team.*)" = " $1";
|
|
||||||
"(Prism Launcher.*)" = " Minecraft ($1)";
|
|
||||||
"(.*)(?: *)PrusaSlicer-(.*)" = " $1 PrusaSlicer ($2)";
|
|
||||||
"(.*)(?: *)PrusaSlicer G-code Viewer-(.*)" = " $1 G-code Viewer ($2)";
|
|
||||||
"FreeCAD (.*)" = " FreeCAD $1";
|
|
||||||
"(.*) - Blender.* " = " $1";
|
|
||||||
"(X2Go Client)" = " $1";
|
|
||||||
"(NoMachine|Nxplayer.bin) (.*)" = " $1 $2";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
mpris = {
|
|
||||||
"format" = "{player_icon} {artist} - {title} {status_icon}";
|
|
||||||
"tooltip-format" = "{player_icon} ({player}) {dynamic}";
|
|
||||||
"title-len" = 64;
|
|
||||||
"interval" = 1;
|
|
||||||
"dynamic-order" = [
|
|
||||||
"album"
|
|
||||||
"artist"
|
|
||||||
"title"
|
|
||||||
"position"
|
|
||||||
"length"
|
|
||||||
];
|
|
||||||
"player-icons" = {
|
|
||||||
"default" = " ";
|
|
||||||
"emms" = " ";
|
|
||||||
"firefox" = " ";
|
|
||||||
"mpv" = " ";
|
|
||||||
};
|
|
||||||
"status-icons" = {
|
|
||||||
"playing" = "";
|
|
||||||
"paused" = "";
|
|
||||||
"stopped" = "";
|
|
||||||
};
|
|
||||||
"ignored-players" = [ ];
|
|
||||||
};
|
|
||||||
pulseaudio = {
|
|
||||||
scroll-step = 5;
|
|
||||||
format = "{format_source}{icon}{volume}%";
|
|
||||||
format-muted = "{format_source} ";
|
|
||||||
format-source = " ";
|
|
||||||
format-source-muted = " ";
|
|
||||||
format-icons = {
|
|
||||||
car = " ";
|
|
||||||
default = [
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
];
|
|
||||||
hands-free = " ";
|
|
||||||
headset = " ";
|
|
||||||
phone = " ";
|
|
||||||
portable = " ";
|
|
||||||
headphone = " ";
|
|
||||||
};
|
|
||||||
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
|
||||||
on-click-right = "${pkgs.pamixer}/bin/pamixer -t";
|
|
||||||
on-scroll-up = "${pkgs.pamixer}/bin/pamixer -i 5";
|
|
||||||
on-scroll-down = "${pkgs.pamixer}/bin/pamixer -d 5";
|
|
||||||
};
|
|
||||||
disk = {
|
|
||||||
format = " {percentage_used}%";
|
|
||||||
path = config.home.homeDirectory;
|
|
||||||
};
|
|
||||||
cpu = {
|
|
||||||
format = " {usage}%";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
memory = {
|
|
||||||
format = " {}%";
|
|
||||||
};
|
|
||||||
temperature = {
|
|
||||||
critical-threshold = 80;
|
|
||||||
format = "{icon} {temperatureC}°C";
|
|
||||||
format-icons = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
network = {
|
|
||||||
format-icons = [
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
];
|
|
||||||
format-wifi = "{icon}";
|
|
||||||
format-ethernet = " ";
|
|
||||||
format-linked = " ";
|
|
||||||
format-disconnected = " ";
|
|
||||||
tooltip-format = "{essid} ({signalStrength}%)";
|
|
||||||
on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
|
||||||
};
|
|
||||||
bluetooth = {
|
|
||||||
format = "";
|
|
||||||
format-disabled = "";
|
|
||||||
format-off = "";
|
|
||||||
format-on = "";
|
|
||||||
format-connected = "";
|
|
||||||
tooltip-format = "{status} | {device_alias}";
|
|
||||||
on-click = "${pkgs.blueman}/bin/blueman-manager";
|
|
||||||
};
|
|
||||||
"clock#calendar" = {
|
|
||||||
format = " {:%Y-%m-%d}";
|
|
||||||
tooltip-format = "<tt>{calendar}</tt>";
|
|
||||||
calendar = {
|
|
||||||
mode = "month";
|
|
||||||
mode-mon-col = 3;
|
|
||||||
weeks-pos = "left";
|
|
||||||
on-scroll = 1;
|
|
||||||
format =
|
|
||||||
let
|
|
||||||
scheme = config.lib.stylix.scheme.withHashtag;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
months = "<span color='${scheme.red}'><b>{}</b></span>";
|
|
||||||
weeks = "<span color='${scheme.cyan}'><b>W{}</b></span>";
|
|
||||||
weekdays = "<span color='${scheme.orange}'><b>{}</b></span>";
|
|
||||||
days = "<span color='${scheme.base05}'><b>{}</b></span>";
|
|
||||||
today = "<span color='${scheme.base0D}'><b><i>{}</i></b></span>";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
actions = {
|
|
||||||
on-scroll-up = "shift_up";
|
|
||||||
on-scroll-down = "shift_down";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
clock.format = " {:%R}";
|
|
||||||
backlight = {
|
|
||||||
format = "{icon}";
|
|
||||||
tooltip-format = "{percent}%";
|
|
||||||
format-icons = [
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
];
|
|
||||||
};
|
|
||||||
battery = {
|
|
||||||
states = {
|
|
||||||
warning = 20;
|
|
||||||
critical = 10;
|
|
||||||
};
|
|
||||||
format = "{icon}";
|
|
||||||
format-time = "{H}:{m}";
|
|
||||||
format-charging = " ({time})";
|
|
||||||
format-plugged = " ";
|
|
||||||
format-warning = "{icon}{capacity}%";
|
|
||||||
format-critical = "{icon}{capacity}% ({time})";
|
|
||||||
tooltip-format = "{capacity}% | {power}W | {time}";
|
|
||||||
format-icons = [
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"custom/notification" =
|
|
||||||
let
|
|
||||||
makoctl = "${config.services.mako.package}/bin/makoctl";
|
|
||||||
jq = "${pkgs.jq}/bin/jq";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
exec = "( ${makoctl} list | ${jq} -e '.data[] | length > 0' >/dev/null && echo ' ' ) || echo ' ' ";
|
|
||||||
format = "{}";
|
|
||||||
on-click = "${makoctl} dismiss -a";
|
|
||||||
interval = 3;
|
|
||||||
};
|
|
||||||
"custom/weather" =
|
|
||||||
let
|
|
||||||
date-format = "%Y-%m-%d";
|
|
||||||
custom-indicator = "{ICON}{temp_C}({FeelsLikeC})";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
format = "{}°";
|
|
||||||
tooltip = true;
|
|
||||||
interval = 900; # Every 15 minutes
|
|
||||||
exec = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"'';
|
|
||||||
return-type = "json";
|
|
||||||
};
|
|
||||||
tray = {
|
|
||||||
icon-size = 20;
|
|
||||||
show-passive-items = true;
|
|
||||||
spacing = 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
style =
|
|
||||||
let
|
|
||||||
scheme = config.lib.stylix.scheme.withHashtag;
|
|
||||||
alpha = "0.8";
|
|
||||||
in
|
|
||||||
''
|
|
||||||
* {
|
|
||||||
all: unset;
|
|
||||||
font-family: ${config.stylix.fonts.monospace.name};
|
|
||||||
font-size: ${toString config.stylix.fonts.sizes.popups}px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window {
|
|
||||||
background: transparent;
|
|
||||||
box-shadow: none;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
window > box {
|
|
||||||
color: ${scheme.base05};
|
|
||||||
background: ${scheme.base00};
|
|
||||||
margin: 5px 5px 0px;
|
|
||||||
padding: 0px;
|
|
||||||
border-top: 1px solid ${scheme.base04};
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip {
|
|
||||||
background: alpha(${scheme.base00}, ${alpha});
|
|
||||||
border: 1px solid ${scheme.base0D};
|
|
||||||
border-radius: 5px;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip label {
|
|
||||||
color: ${scheme.base05};
|
|
||||||
border: none;
|
|
||||||
padding: 5px;
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces,
|
|
||||||
#window,
|
|
||||||
#mpris,
|
|
||||||
#pulseaudio,
|
|
||||||
#network,
|
|
||||||
#bluetooth,
|
|
||||||
#backlight,
|
|
||||||
#battery,
|
|
||||||
#clock,
|
|
||||||
#custom-notification,
|
|
||||||
#custom-weather,
|
|
||||||
#tray {
|
|
||||||
margin: 0px;
|
|
||||||
padding: 1px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces,
|
|
||||||
#window,
|
|
||||||
#tray,
|
|
||||||
#backlight,
|
|
||||||
#battery,
|
|
||||||
#custom-weather {
|
|
||||||
color: ${scheme.base05};
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
background: transparent;
|
|
||||||
color: ${scheme.base05};
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px 5px;
|
|
||||||
}
|
|
||||||
#workspaces button.persistent {
|
|
||||||
color: ${scheme.base03};
|
|
||||||
}
|
|
||||||
#workspaces button.focused {
|
|
||||||
color: ${scheme.base0D};
|
|
||||||
}
|
|
||||||
#workspaces button.urgent {
|
|
||||||
color: ${scheme.base09};
|
|
||||||
}
|
|
||||||
|
|
||||||
#mpris {
|
|
||||||
color: ${scheme.base04};
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-notification {
|
|
||||||
color: ${scheme.base08};
|
|
||||||
}
|
|
||||||
#pulseaudio {
|
|
||||||
color: ${scheme.base09};
|
|
||||||
}
|
|
||||||
#network {
|
|
||||||
color: ${scheme.base0A};
|
|
||||||
}
|
|
||||||
#bluetooth {
|
|
||||||
color: ${scheme.base0B};
|
|
||||||
}
|
|
||||||
#clock.calendar {
|
|
||||||
color: ${scheme.base0C};
|
|
||||||
}
|
|
||||||
#clock {
|
|
||||||
color: ${scheme.base0D};
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.warning {
|
|
||||||
color: ${scheme.base09};
|
|
||||||
}
|
|
||||||
#battery.critical {
|
|
||||||
color: ${scheme.base08};
|
|
||||||
}
|
|
||||||
#battery.charging,
|
|
||||||
#battery.plugged {
|
|
||||||
color: ${scheme.base0B};
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
12
system/home/swww/default.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [ swww ];
|
||||||
|
systemd.user.services.swww-daemon = {
|
||||||
|
Unit = {
|
||||||
|
Description = "SWWW Daemon";
|
||||||
|
Wants = [ "graphical-session.target" ];
|
||||||
|
After = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
Service.ExecStart = "${pkgs.swww}/bin/swww-daemon";
|
||||||
|
};
|
||||||
|
}
|
45
system/home/swww/dynamic-wallpaper.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
swwwMorning = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_morning.jpg}";
|
||||||
|
swwwDay = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_day.jpg}";
|
||||||
|
swwwEvening = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_evening.jpg}";
|
||||||
|
swwwNight = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_night.jpg}";
|
||||||
|
dynamicWallpaper = pkgs.writeShellScriptBin "dynamic-wallpaper" ''
|
||||||
|
swww query || exit 1 # Check SWWW daemon is actually running
|
||||||
|
case $(date +%H) in
|
||||||
|
06 | 07 | 08) # Morning
|
||||||
|
${swwwMorning}
|
||||||
|
;;
|
||||||
|
09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17) # Day
|
||||||
|
${swwwDay}
|
||||||
|
;;
|
||||||
|
18 | 19 | 20) # Evening
|
||||||
|
${swwwEvening}
|
||||||
|
;;
|
||||||
|
21 | 22 | 23 | 00 | 01 | 02 | 03 | 04 | 05) # Night
|
||||||
|
${swwwNight}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [ ./default.nix ];
|
||||||
|
systemd.user = {
|
||||||
|
services.dynamic-wallpaper = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Change wallpaper based on time of day";
|
||||||
|
Wants = [ "swww-daemon.service" ];
|
||||||
|
After = [ "swww-daemon.service" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${dynamicWallpaper}/bin/dynamic-wallpaper";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
timers.dynamic-wallpaper.Timer = {
|
||||||
|
OnCalendar = "*:0";
|
||||||
|
Unit = "dynamic-wallpaper.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,9 +1,8 @@
|
||||||
{ config, ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
programs.alacritty = {
|
programs.alacritty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
shell = "${config.programs.zsh.package}/bin/zsh";
|
|
||||||
window = {
|
window = {
|
||||||
dynamic_title = true;
|
dynamic_title = true;
|
||||||
padding = {
|
padding = {
|
||||||
|
@ -11,7 +10,7 @@
|
||||||
y = 5;
|
y = 5;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
live_config_reload = true;
|
general.live_config_reload = true;
|
||||||
selection.save_to_clipboard = true;
|
selection.save_to_clipboard = true;
|
||||||
mouse.hide_when_typing = true;
|
mouse.hide_when_typing = true;
|
||||||
};
|
};
|
||||||
|
|
9
system/home/texlive/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
(texlive.combine {
|
||||||
|
inherit (texlive) scheme-full;
|
||||||
|
latex-beamer-ukaea.pkgs = [ (callPackage ./latex-beamer-ukaea/default.nix { }) ];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
18
system/home/texlive/latex-beamer-ukaea/README.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# UKAEA Beamer Style
|
||||||
|
|
||||||
|
This provides a Beamer theme for the default UKAEA branding. Subbrands
|
||||||
|
(CCFE, RACE, etc.) are not current available, but would not be
|
||||||
|
difficult to add.
|
||||||
|
|
||||||
|
For best results, it is recommended that you install the non-free
|
||||||
|
Latex fonts, as described here:
|
||||||
|
<https://www.tug.org/fonts/getnonfreefonts/>. However you will still
|
||||||
|
get perfectly acceptable results without them.
|
||||||
|
|
||||||
|
The file `ukaea-example.tex` is provided as a starting point for your
|
||||||
|
presentations. Simply rename and modify it as needed. You must either
|
||||||
|
keep your presentation TeX file in the same directory as the `.sty`
|
||||||
|
and image files or install those files on your system. If you wish to
|
||||||
|
do the latter, [follow these
|
||||||
|
instructions](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages#Installing_a_package)
|
||||||
|
starting from step 3.
|
|
@ -0,0 +1,50 @@
|
||||||
|
\usepackage{xcolor}
|
||||||
|
|
||||||
|
\mode<presentation>
|
||||||
|
|
||||||
|
\definecolor{UkaeaCoreBlue}{RGB}{0,48,86}
|
||||||
|
\definecolor{UkaeaCoreWhite}{RGB}{255,255,255}
|
||||||
|
\definecolor{UkaeaCoreBlack}{RGB}{0,0,0}
|
||||||
|
\definecolor{UkaeaCoreGrey1}{RGB}{88,89,91}
|
||||||
|
\definecolor{UkaeaCoreGrey2}{RGB}{128,130,133}
|
||||||
|
\definecolor{UkaeaCoreGrey3}{RGB}{167,169,172}
|
||||||
|
\definecolor{UkaeaCoreGrey4}{RGB}{209,211,212}
|
||||||
|
\definecolor{UkaeaSecondaryYellow}{RGB}{246,212,77}
|
||||||
|
\definecolor{UkaeaSecondaryGreen}{RGB}{0,111,69}
|
||||||
|
\definecolor{UkaeaSecondaryBlue}{RGB}{0,130,202}
|
||||||
|
\definecolor{UkaeaSecondaryRed}{RGB}{201,37,44}
|
||||||
|
\definecolor{UkaeaSecondaryText}{RGB}{144,145,179}
|
||||||
|
\definecolor{CcfeOrange}{RGB}{248,151,29}
|
||||||
|
\definecolor{OasRed}{RGB}{230,62,48}
|
||||||
|
\definecolor{RaceSilver}{RGB}{191,196,217}
|
||||||
|
\definecolor{MrcGreen}{RGB}{5,206,124}
|
||||||
|
|
||||||
|
\setbeamercolor{headline}{bg=UkaeaCoreBlue}
|
||||||
|
\setbeamercolor{title page}{bg=UkaeaCoreBlue}
|
||||||
|
|
||||||
|
\setbeamercolor{title}{fg=UkaeaCoreWhite, bg=UkaeaCoreBlue}
|
||||||
|
\setbeamercolor{subtitle}{fg=UkaeaCoreWhite}
|
||||||
|
|
||||||
|
\setbeamercolor{author}{fg=UkaeaSecondaryText}
|
||||||
|
\setbeamercolor{date}{fg=UkaeaSecondaryText}
|
||||||
|
\setbeamercolor{institute}{fg=UkaeaSecondaryText}
|
||||||
|
|
||||||
|
\setbeamercolor{normal text}{fg=UkaeaCoreBlue}
|
||||||
|
|
||||||
|
\setbeamercolor{structure}{fg=UkaeaCoreBlue}
|
||||||
|
\setbeamercolor{frametitle}{fg=UkaeaCoreBlue}
|
||||||
|
\setbeamercolor{framesubtitle}{fg=UkaeaCoreBlue}
|
||||||
|
\setbeamercolor{alerted text}{fg=UkaeaSecondaryRed}
|
||||||
|
|
||||||
|
\setbeamercolor{block title}{fg=UkaeaCoreWhite, bg=UkaeaCoreBlue}
|
||||||
|
\setbeamercolor{block body}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaCoreBlue!10}
|
||||||
|
|
||||||
|
\setbeamercolor{block title example}{fg=UkaeaCoreWhite, bg=UkaeaSecondaryBlue}
|
||||||
|
\setbeamercolor{block body example}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaSecondaryBlue!10}
|
||||||
|
|
||||||
|
\setbeamercolor{block title alert}{fg=UkaeaCoreWhite, bg=UkaeaSecondaryRed}
|
||||||
|
\setbeamercolor{block body alert}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaSecondaryRed!10}
|
||||||
|
|
||||||
|
\setbeamercolor{pagenumber}{fg=UkaeaCoreGrey3}
|
||||||
|
|
||||||
|
\mode<all>
|
|
@ -0,0 +1,24 @@
|
||||||
|
% to use non-standard font
|
||||||
|
\usepackage{iftex}
|
||||||
|
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\IfFileExists{uarial.sty}{
|
||||||
|
\usepackage{newtxsf, uarial, textcomp}
|
||||||
|
\usepackage[italic]{mathastext}
|
||||||
|
}{
|
||||||
|
\usepackage[scaled]{helvet}
|
||||||
|
}
|
||||||
|
\renewcommand\familydefault{\sfdefault}
|
||||||
|
\usepackage[scaled]{beramono}
|
||||||
|
|
||||||
|
\setbeamerfont{title}{family=\fontfamily{ugq}, size=\LARGE}
|
||||||
|
\setbeamerfont{subtitle}{family=\sffamily, series=\mdseries, size=\large}
|
||||||
|
|
||||||
|
\setbeamerfont{institute}{family=\fontfamily{ugq}, size=\Large}
|
||||||
|
\setbeamerfont{author}{family=\sffamily, series=\bfseries, size=\footnotesize}
|
||||||
|
\setbeamerfont{date}{family=\sffamily, series=\bfseries, size=\footnotesize}
|
||||||
|
|
||||||
|
\setbeamerfont{frametitle}{family=\fontfamily{ugq}, size=\LARGE}
|
||||||
|
\setbeamerfont{framesubtitle}{family=\sffamily, series=\mdseries, size=\Large}
|
||||||
|
|
||||||
|
\setbeamerfont{normal text}{family=\sffamily, series=\mdseries, size=\Large}
|
|
@ -0,0 +1,24 @@
|
||||||
|
\mode<presentation>
|
||||||
|
|
||||||
|
\defbeamertemplate{itemize item}{circ}%
|
||||||
|
{\small\raise.2ex\hbox{$\bullet$}}
|
||||||
|
|
||||||
|
\defbeamertemplate{itemize subitem}{circ}%
|
||||||
|
{\small\raise.1ex\hbox{$\circ$}}
|
||||||
|
|
||||||
|
\defbeamertemplate{itemize subsubitem}{circ}%
|
||||||
|
{\scriptsize\raise.1ex\hbox{$\bullet$}}
|
||||||
|
|
||||||
|
\setbeamertemplate{items}[circ]
|
||||||
|
|
||||||
|
\setbeamertemplate{frametitle}
|
||||||
|
{
|
||||||
|
\nointerlineskip%
|
||||||
|
\vspace{4mm}\hspace{-8mm}
|
||||||
|
\begin{beamercolorbox}[wd=0.8\paperwidth]{frametitle}
|
||||||
|
\usebeamerfont{frametitle}{\insertframetitle}\par
|
||||||
|
\usebeamerfont{framesubtitle}{\usebeamercolor{framesubtitle}\insertframesubtitle}
|
||||||
|
\end{beamercolorbox}
|
||||||
|
}
|
||||||
|
|
||||||
|
\mode<all>
|
|
@ -0,0 +1,96 @@
|
||||||
|
\usepackage{tikz}
|
||||||
|
|
||||||
|
\mode<presentation>
|
||||||
|
|
||||||
|
\DeclareOptionBeamer{logo}{\def\beamer@ukaea@logo{#1}}
|
||||||
|
\ExecuteOptionsBeamer{logo=ukaea_logo.png}
|
||||||
|
\DeclareOptionBeamer{extratitletext}{\def\beamer@ukaea@extratitletext{#1}}
|
||||||
|
\ExecuteOptionsBeamer{extratitletext=}
|
||||||
|
\ProcessOptionsBeamer
|
||||||
|
|
||||||
|
\newcommand{\ukaeatriangle}[1] {
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\useasboundingbox (0,0) rectangle(\the\paperwidth,0.2\paperwidth);
|
||||||
|
\node (t1) at (\paperwidth, 0.2\paperwidth) {};
|
||||||
|
\node (t2) at (0.8\paperwidth, 0.2\paperwidth) {};
|
||||||
|
\node (t3) at (\paperwidth, 0.) {};
|
||||||
|
\fill[fill=#1] (t1.center)--(t2.center)--(t3.center);
|
||||||
|
\if \beamer@ukaea@logo\@empty
|
||||||
|
\else
|
||||||
|
\node (logo) at (0.9415\paperwidth, 0.1415\paperwidth) {
|
||||||
|
\includegraphics[height=0.073\paperwidth]{\beamer@ukaea@logo}
|
||||||
|
};
|
||||||
|
\fi
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\setbeamertemplate{title page}
|
||||||
|
{%
|
||||||
|
\newdimen\title@graphic@height
|
||||||
|
\begin{minipage}[t]{\paperwidth}
|
||||||
|
\hspace*{-1cm}\inserttitlegraphic{}
|
||||||
|
\end{minipage}
|
||||||
|
|
||||||
|
\settoheight{\title@graphic@height}{\inserttitlegraphic{}}
|
||||||
|
\vspace*{-\title@graphic@height minus 0.004\paperheight}
|
||||||
|
\hspace*{-1cm}%
|
||||||
|
\begin{minipage}{\paperwidth}
|
||||||
|
\usebeamercolor[bg]{headline}
|
||||||
|
\ukaeatriangle{bg}\par
|
||||||
|
\end{minipage}
|
||||||
|
|
||||||
|
\vspace*{-2.59cm}
|
||||||
|
\hspace*{-1.085cm}
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
|
||||||
|
|
||||||
|
\node (q1) at (0,0.54\paperheight) {};
|
||||||
|
\node (q2) at (\the\paperwidth,0.32\paperheight) {};
|
||||||
|
\node (q3) at (0,0) {};
|
||||||
|
\node (q4) at (\the\paperwidth,0) {};
|
||||||
|
\fill[fill=bg] (q1.center)--(q2.center)--(q4.center)--(q3.center);
|
||||||
|
\node[anchor=north west,text width=0.8\paperwidth] (titletext) at (0.4,0.42\paperheight) {
|
||||||
|
\usebeamerfont{institute}{\usebeamercolor[fg]{institute}\insertinstitute}\par
|
||||||
|
\smallskip
|
||||||
|
\usebeamerfont{title}{\usebeamercolor[fg]{title}\inserttitle}\par
|
||||||
|
\usebeamerfont{subtitle}{\usebeamercolor[fg]{subtitle}\insertsubtitle}\par
|
||||||
|
|
||||||
|
\bigskip
|
||||||
|
% \begin{minipage}{0.6\textwidth}
|
||||||
|
\usebeamercolor[fg]{date}{\usebeamerfont{date}\insertdate}\par
|
||||||
|
\usebeamercolor[fg]{author}{\usebeamerfont{author}\insertauthor}\par
|
||||||
|
% \end{minipage}
|
||||||
|
};
|
||||||
|
\node[anchor=south east,text width=0.45\paperwidth] (extratext) at
|
||||||
|
(1.28\paperwidth, 0.15) {
|
||||||
|
\usebeamercolor[fg]{title}
|
||||||
|
\usebeamerfont{main text}
|
||||||
|
\beamer@ukaea@extratitletext
|
||||||
|
};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\addtocounter{framenumber}{-1}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\setbeamertemplate{headline}
|
||||||
|
{%\vspace{-0.07cm}\hspace{0.795\paperwidth}
|
||||||
|
\ukaeatriangle{bg}
|
||||||
|
\vspace{-0.2\paperwidth}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\setbeamertemplate{footline}
|
||||||
|
{
|
||||||
|
\leavevmode
|
||||||
|
\hbox{
|
||||||
|
\begin{beamercolorbox}[wd=1.0cm,ht=1.5cm,dp=0.3cm,right, rightskip=0.1cm]{pagenumber}%
|
||||||
|
\textbf{\large{\usebeamercolor[fg]{pagenumber}\insertframenumber{}}}
|
||||||
|
\end{beamercolorbox}
|
||||||
|
\usebeamercolor[fg]{normal text}{\textbf{\Large |} \raisebox{0.5ex}{\insertshorttitle}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\mode<all>
|
||||||
|
\endinput
|
24
system/home/texlive/latex-beamer-ukaea/beamerthemeukaea.sty
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
\mode<presentation>
|
||||||
|
|
||||||
|
% Requirement
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
\RequirePackage{xcolor}
|
||||||
|
|
||||||
|
% Options
|
||||||
|
\DeclareOptionBeamer{logo}{\PassOptionsToPackage{logo=#1}{beamerouterthemeukaea}}
|
||||||
|
\DeclareOptionBeamer{sponsors}{\PassOptionsToPackage{sponsors=#1}{beamerouterthemeukaea}}
|
||||||
|
\ProcessOptionsBeamer
|
||||||
|
|
||||||
|
% Settings
|
||||||
|
\useinnertheme{ukaea}
|
||||||
|
\useoutertheme{ukaea}
|
||||||
|
\usecolortheme{ukaea}
|
||||||
|
\usefonttheme{ukaea}
|
||||||
|
|
||||||
|
\setbeamertemplate{navigation symbols}{}
|
||||||
|
\setbeamertemplate{blocks}[default]
|
||||||
|
%\setbeamertemplate{blocks}[rounded][shadow=true]
|
||||||
|
|
||||||
|
\titlegraphic{\includegraphics[width=\paperwidth]{ukaea-jet.jpg}}
|
||||||
|
|
||||||
|
\mode<all>
|
11
system/home/texlive/latex-beamer-ukaea/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{ stdenvNoCC }:
|
||||||
|
stdenvNoCC.mkDerivation {
|
||||||
|
pname = "latex-beamer-ukaea";
|
||||||
|
version = "0.1";
|
||||||
|
src = ./.;
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/tex/latex
|
||||||
|
cp -r $src/* $out/tex/latex
|
||||||
|
'';
|
||||||
|
tlType = "run";
|
||||||
|
}
|
BIN
system/home/texlive/latex-beamer-ukaea/ukaea-jet.jpg
Normal file
After Width: | Height: | Size: 244 KiB |